From 4f1fc93cebc1ac4f2cb54319dd87d4f63780d488 Mon Sep 17 00:00:00 2001 From: Araozu Date: Thu, 7 Sep 2023 20:18:35 -0500 Subject: [PATCH] Remove doc from compiler --- compiler/CHANGELOG.md => CHANGELOG.md | 0 compiler/Cargo.lock => Cargo.lock | 0 compiler/Cargo.toml => Cargo.toml | 0 compiler/LICENSE.md => LICENSE.md | 0 compiler/.gitignore | 3 - doc-generator/.gitignore | 2 - doc-generator/Cargo.lock | 507 ---- doc-generator/Cargo.toml | 13 - doc-generator/README.md | 86 - .../en/docs/latest/basics/function-calls.md | 17 - .../docs/latest/basics/indentation-rules.md | 3 - .../en/docs/latest/basics/operators.md | 80 - .../en/docs/latest/basics/simple-datatypes.md | 35 - .../markdown/en/docs/latest/basics/tuples.md | 61 - .../latest/basics/variables-and-constants.md | 109 - .../en/docs/latest/classes/definition.md | 15 - .../en/docs/latest/flow-control/arrays.md | 49 - .../docs/latest/flow-control/conditionals.md | 33 - .../en/docs/latest/flow-control/loops.md | 25 - .../en/docs/latest/functions/definition.md | 89 - .../en/docs/latest/functions/lambdas.md | 67 - .../en/docs/latest/functions/parameters.md | 101 - .../markdown/en/docs/latest/index.md | 396 --- .../markdown/en/docs/latest/index.yaml | 60 - .../markdown/en/docs/latest/modules/import.md | 34 - .../en/docs/latest/objects/definition.md | 34 - .../markdown/en/stdlib/latest/index.md | 1 - .../markdown/en/stdlib/latest/index.yaml | 10 - .../en/stdlib/latest/prelude/Console.md | 26 - .../en/stdlib/latest/prelude/String.md | 421 --- doc-generator/src/generator/code.rs | 88 - doc-generator/src/generator/emphasis.rs | 17 - doc-generator/src/generator/heading.rs | 38 - .../src/generator/highlighter/mod.rs | 94 - doc-generator/src/generator/inline_code.rs | 26 - doc-generator/src/generator/list.rs | 47 - doc-generator/src/generator/mod.rs | 59 - doc-generator/src/generator/paragraph.rs | 21 - doc-generator/src/generator/root.rs | 25 - doc-generator/src/generator/strong.rs | 17 - doc-generator/src/generator/text.rs | 13 - doc-generator/src/main.rs | 33 - doc-generator/src/pages/md_compiler.rs | 67 - doc-generator/src/pages/mod.rs | 174 -- doc-generator/src/processor.rs | 100 - doc-generator/src/sidebar/mod.rs | 90 - doc-generator/src/utils.rs | 66 - doc-generator/static/.gitignore | 3 - doc-generator/static/favicon-16x16.png | Bin 1366 -> 0 bytes doc-generator/static/favicon-32x32.png | Bin 1784 -> 0 bytes doc-generator/static/favicon.ico | Bin 15086 -> 0 bytes doc-generator/static/index.html | 107 - doc-generator/static/logo.svg | 8 - doc-generator/static/misti_logo.png | Bin 45455 -> 0 bytes doc-generator/static/package.json | 20 - doc-generator/static/pnpm-lock.yaml | 2271 ----------------- doc-generator/static/styles/global.css | 308 --- doc-generator/static/styles/xcode-colors.css | 263 -- doc-generator/static/svg/kinky.svg | 1 - doc-generator/static/svg/logo_black.svg | 72 - doc-generator/static/svg/logo_color.svg | 75 - doc-generator/static/svg/rusty.svg | 10 - doc-generator/static/tailwind.config.js | 50 - doc-generator/static/tailwind/input.css | 3 - doc-generator/static/template.html | 121 - {compiler/src => src}/ast_types.rs | 0 {compiler/src => src}/codegen/binding.rs | 0 {compiler/src => src}/codegen/expression.rs | 0 {compiler/src => src}/codegen/mod.rs | 0 {compiler/src => src}/codegen/module_ast.rs | 0 .../src => src}/error_handling/lex_error.rs | 0 {compiler/src => src}/error_handling/mod.rs | 0 .../error_handling/syntax_error.rs | 0 {compiler/src => src}/file/mod.rs | 0 {compiler/src => src}/lexic/mod.rs | 0 .../src => src}/lexic/scanner/identifier.rs | 0 {compiler/src => src}/lexic/scanner/mod.rs | 0 .../src => src}/lexic/scanner/new_comment.rs | 0 .../src => src}/lexic/scanner/new_line.rs | 0 {compiler/src => src}/lexic/scanner/number.rs | 0 .../src => src}/lexic/scanner/operator.rs | 0 {compiler/src => src}/lexic/scanner/string.rs | 0 {compiler/src => src}/lexic/utils.rs | 0 {compiler/src => src}/lib.rs | 0 {compiler/src => src}/main.rs | 0 {compiler/src => src}/repl/mod.rs | 0 {compiler/src => src}/semantic/datatype.rs | 0 {compiler/src => src}/semantic/guidance.md | 0 {compiler/src => src}/semantic/mod.rs | 0 {compiler/src => src}/semantic/type_check.rs | 0 {compiler/src => src}/symbol_table.rs | 0 {compiler/src => src}/syntax/binding.rs | 0 {compiler/src => src}/syntax/expression.rs | 0 {compiler/src => src}/syntax/grammar.md | 0 {compiler/src => src}/syntax/mod.rs | 0 {compiler/src => src}/token.rs | 0 {compiler/src => src}/utils/mod.rs | 0 97 files changed, 6564 deletions(-) rename compiler/CHANGELOG.md => CHANGELOG.md (100%) rename compiler/Cargo.lock => Cargo.lock (100%) rename compiler/Cargo.toml => Cargo.toml (100%) rename compiler/LICENSE.md => LICENSE.md (100%) delete mode 100644 compiler/.gitignore delete mode 100644 doc-generator/.gitignore delete mode 100644 doc-generator/Cargo.lock delete mode 100644 doc-generator/Cargo.toml delete mode 100644 doc-generator/README.md delete mode 100755 doc-generator/markdown/en/docs/latest/basics/function-calls.md delete mode 100644 doc-generator/markdown/en/docs/latest/basics/indentation-rules.md delete mode 100644 doc-generator/markdown/en/docs/latest/basics/operators.md delete mode 100755 doc-generator/markdown/en/docs/latest/basics/simple-datatypes.md delete mode 100644 doc-generator/markdown/en/docs/latest/basics/tuples.md delete mode 100755 doc-generator/markdown/en/docs/latest/basics/variables-and-constants.md delete mode 100644 doc-generator/markdown/en/docs/latest/classes/definition.md delete mode 100644 doc-generator/markdown/en/docs/latest/flow-control/arrays.md delete mode 100644 doc-generator/markdown/en/docs/latest/flow-control/conditionals.md delete mode 100644 doc-generator/markdown/en/docs/latest/flow-control/loops.md delete mode 100644 doc-generator/markdown/en/docs/latest/functions/definition.md delete mode 100644 doc-generator/markdown/en/docs/latest/functions/lambdas.md delete mode 100644 doc-generator/markdown/en/docs/latest/functions/parameters.md delete mode 100755 doc-generator/markdown/en/docs/latest/index.md delete mode 100644 doc-generator/markdown/en/docs/latest/index.yaml delete mode 100644 doc-generator/markdown/en/docs/latest/modules/import.md delete mode 100644 doc-generator/markdown/en/docs/latest/objects/definition.md delete mode 100644 doc-generator/markdown/en/stdlib/latest/index.md delete mode 100644 doc-generator/markdown/en/stdlib/latest/index.yaml delete mode 100644 doc-generator/markdown/en/stdlib/latest/prelude/Console.md delete mode 100644 doc-generator/markdown/en/stdlib/latest/prelude/String.md delete mode 100644 doc-generator/src/generator/code.rs delete mode 100644 doc-generator/src/generator/emphasis.rs delete mode 100644 doc-generator/src/generator/heading.rs delete mode 100644 doc-generator/src/generator/highlighter/mod.rs delete mode 100644 doc-generator/src/generator/inline_code.rs delete mode 100644 doc-generator/src/generator/list.rs delete mode 100644 doc-generator/src/generator/mod.rs delete mode 100644 doc-generator/src/generator/paragraph.rs delete mode 100644 doc-generator/src/generator/root.rs delete mode 100644 doc-generator/src/generator/strong.rs delete mode 100644 doc-generator/src/generator/text.rs delete mode 100644 doc-generator/src/main.rs delete mode 100644 doc-generator/src/pages/md_compiler.rs delete mode 100644 doc-generator/src/pages/mod.rs delete mode 100644 doc-generator/src/processor.rs delete mode 100644 doc-generator/src/sidebar/mod.rs delete mode 100644 doc-generator/src/utils.rs delete mode 100644 doc-generator/static/.gitignore delete mode 100644 doc-generator/static/favicon-16x16.png delete mode 100644 doc-generator/static/favicon-32x32.png delete mode 100644 doc-generator/static/favicon.ico delete mode 100644 doc-generator/static/index.html delete mode 100644 doc-generator/static/logo.svg delete mode 100644 doc-generator/static/misti_logo.png delete mode 100644 doc-generator/static/package.json delete mode 100644 doc-generator/static/pnpm-lock.yaml delete mode 100644 doc-generator/static/styles/global.css delete mode 100644 doc-generator/static/styles/xcode-colors.css delete mode 100644 doc-generator/static/svg/kinky.svg delete mode 100644 doc-generator/static/svg/logo_black.svg delete mode 100644 doc-generator/static/svg/logo_color.svg delete mode 100644 doc-generator/static/svg/rusty.svg delete mode 100644 doc-generator/static/tailwind.config.js delete mode 100644 doc-generator/static/tailwind/input.css delete mode 100644 doc-generator/static/template.html rename {compiler/src => src}/ast_types.rs (100%) rename {compiler/src => src}/codegen/binding.rs (100%) rename {compiler/src => src}/codegen/expression.rs (100%) rename {compiler/src => src}/codegen/mod.rs (100%) rename {compiler/src => src}/codegen/module_ast.rs (100%) rename {compiler/src => src}/error_handling/lex_error.rs (100%) rename {compiler/src => src}/error_handling/mod.rs (100%) rename {compiler/src => src}/error_handling/syntax_error.rs (100%) rename {compiler/src => src}/file/mod.rs (100%) rename {compiler/src => src}/lexic/mod.rs (100%) rename {compiler/src => src}/lexic/scanner/identifier.rs (100%) rename {compiler/src => src}/lexic/scanner/mod.rs (100%) rename {compiler/src => src}/lexic/scanner/new_comment.rs (100%) rename {compiler/src => src}/lexic/scanner/new_line.rs (100%) rename {compiler/src => src}/lexic/scanner/number.rs (100%) rename {compiler/src => src}/lexic/scanner/operator.rs (100%) rename {compiler/src => src}/lexic/scanner/string.rs (100%) rename {compiler/src => src}/lexic/utils.rs (100%) rename {compiler/src => src}/lib.rs (100%) rename {compiler/src => src}/main.rs (100%) rename {compiler/src => src}/repl/mod.rs (100%) rename {compiler/src => src}/semantic/datatype.rs (100%) rename {compiler/src => src}/semantic/guidance.md (100%) rename {compiler/src => src}/semantic/mod.rs (100%) rename {compiler/src => src}/semantic/type_check.rs (100%) rename {compiler/src => src}/symbol_table.rs (100%) rename {compiler/src => src}/syntax/binding.rs (100%) rename {compiler/src => src}/syntax/expression.rs (100%) rename {compiler/src => src}/syntax/grammar.md (100%) rename {compiler/src => src}/syntax/mod.rs (100%) rename {compiler/src => src}/token.rs (100%) rename {compiler/src => src}/utils/mod.rs (100%) diff --git a/compiler/CHANGELOG.md b/CHANGELOG.md similarity index 100% rename from compiler/CHANGELOG.md rename to CHANGELOG.md diff --git a/compiler/Cargo.lock b/Cargo.lock similarity index 100% rename from compiler/Cargo.lock rename to Cargo.lock diff --git a/compiler/Cargo.toml b/Cargo.toml similarity index 100% rename from compiler/Cargo.toml rename to Cargo.toml diff --git a/compiler/LICENSE.md b/LICENSE.md similarity index 100% rename from compiler/LICENSE.md rename to LICENSE.md diff --git a/compiler/.gitignore b/compiler/.gitignore deleted file mode 100644 index d6155df..0000000 --- a/compiler/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/target -.vscode -*.profraw \ No newline at end of file diff --git a/doc-generator/.gitignore b/doc-generator/.gitignore deleted file mode 100644 index cb0f694..0000000 --- a/doc-generator/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -static/en/** diff --git a/doc-generator/Cargo.lock b/doc-generator/Cargo.lock deleted file mode 100644 index f93bfc7..0000000 --- a/doc-generator/Cargo.lock +++ /dev/null @@ -1,507 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "anstream" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-wincon", - "concolor-override", - "concolor-query", - "is-terminal", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" - -[[package]] -name = "anstyle-parse" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-wincon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" -dependencies = [ - "anstyle", - "windows-sys", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "clap" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6efb5f0a41b5ef5b50c5da28c07609c20091df0c1fc33d418fa2a7e693c2b624" -dependencies = [ - "clap_builder", - "clap_derive", - "once_cell", -] - -[[package]] -name = "clap_builder" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671fcaa5debda4b9a84aa7fde49c907c8986c0e6ab927e04217c9cb74e7c8bc9" -dependencies = [ - "anstream", - "anstyle", - "bitflags", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" - -[[package]] -name = "colored" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" -dependencies = [ - "atty", - "lazy_static", - "winapi", -] - -[[package]] -name = "concolor-override" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f" - -[[package]] -name = "concolor-query" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "doc-generator" -version = "0.1.0" -dependencies = [ - "clap", - "markdown", - "misti", - "toml", - "yaml-rust", -] - -[[package]] -name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys", -] - -[[package]] -name = "is-terminal" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" -dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - -[[package]] -name = "markdown" -version = "1.0.0-alpha.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de49c677e95e00eaa74c42a0b07ea55e1e0b1ebca5b2cbc7657f288cd714eb" -dependencies = [ - "unicode-id", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "misti" -version = "0.0.5" -dependencies = [ - "clap", - "colored", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "proc-macro2" -version = "1.0.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rustix" -version = "0.36.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "serde" -version = "1.0.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" - -[[package]] -name = "serde_spanned" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" -dependencies = [ - "serde", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "toml" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "unicode-id" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" - -[[package]] -name = "unicode-ident" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" - -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "winnow" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" -dependencies = [ - "memchr", -] - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] diff --git a/doc-generator/Cargo.toml b/doc-generator/Cargo.toml deleted file mode 100644 index eba76cf..0000000 --- a/doc-generator/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "doc-generator" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -misti = { path = "../compiler"} -clap = { version = "4.2.0", features = ["derive"] } -markdown = "1.0.0-alpha.7" -toml = "0.7.3" -yaml-rust = "0.4.5" diff --git a/doc-generator/README.md b/doc-generator/README.md deleted file mode 100644 index 7cfe443..0000000 --- a/doc-generator/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# Doc-generator - -Here is the documentation of the language in markdown, and a program to -generate static HTML files from them. - -## `src` folder - -Rust code to generate HTML files from MD files. - -The binary is called like: - -```sh -generator --input /path/to/markdown/folder/ --output /path/to/static/folder/ -``` - -## `markdown` folder - -Contains the Markdown. All files inside are expected to be UTF-8 encoded -markdown, and have the `.md` file extension. - -### Indexing - -`doc-generator` will not search for `.md` files. Instead, it will search for -`.toml` files, which index all the markdown files. This is used to generate -the file hierarchy and previous/next links in the documentation. - -This file must be named `index.toml`, must be the only TOML file in its folder, -and must follow the following schema: - -```toml -# Tipically index -entry-point = "file-without-extension" - -[folder-1] -section-name = "Display name for the folder" -# Markdown files, without the .md extension -children = [ - "file1", - "file2", -] -``` - -### Markdown extensions - -The markdown follows the CommonMark specification, but certain code blocks -contain custom behaviour: - -#### `meta` - -A code block with language `meta` contains text in TOML format that indicates -metadata for the current page. - -````toml -```meta -title: "Title of the page" -description: "Description of the page" -``` -```` - -- title: Used to create the title of the page with the format `{title} - Misti` -- description: The description of the page, placed in a `` element in the `` - - - -## `static` folder - -Contains CSS, JS, and HTML templates. Here the MD files are written to -after being converted. - -There must be a `template.html` file inside this folder. This file will be used to generate the HTML from MD files. - -Inside `template.html` there must be a string `{{markdown}}`: - -```html - - {{markdown}} - -``` - -This string, `{{markdown}}`, will be replaced with the HTML generated -from Markdown - -## `dist` folder - -Coming soon, this folder will contain all HTML, CSS & JS minified after -running a script. diff --git a/doc-generator/markdown/en/docs/latest/basics/function-calls.md b/doc-generator/markdown/en/docs/latest/basics/function-calls.md deleted file mode 100755 index cf1a0ae..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/function-calls.md +++ /dev/null @@ -1,17 +0,0 @@ -# Function calls - -A function is called with parenthesis. - -```misti -// No parameters: place opening and closing paren -debugState() - -// 1 parameter -val result = fibonacci(20) - -// 2 or more parameters: separate the parameters with commas -val remainder = substract(50, 30) -val total = add(60, -30, 90) -``` - - diff --git a/doc-generator/markdown/en/docs/latest/basics/indentation-rules.md b/doc-generator/markdown/en/docs/latest/basics/indentation-rules.md deleted file mode 100644 index 5038d20..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/indentation-rules.md +++ /dev/null @@ -1,3 +0,0 @@ -# Indentation rules - -TBD diff --git a/doc-generator/markdown/en/docs/latest/basics/operators.md b/doc-generator/markdown/en/docs/latest/basics/operators.md deleted file mode 100644 index 519a6c2..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/operators.md +++ /dev/null @@ -1,80 +0,0 @@ -# Operators - -Misti has similar operators to JS. - -```md-warning -Misti will enforce type checking in operators at compile time. -

-However, due to how JS works, automatic type casting may still occur if you combine the Misti output with JS. -

-``` - -## Basic operators - -```misti -4 + 2 -4 - 2 -4 * 2 -4 / 2 -4 % 2 -4 ** 2 -``` - -## Asignment operators - -```misti -i += 1 -i -= 1 -i *= 2 -i /= 2 -i %= 2 -i **= 2 -``` - -## Bitwise operators - -Not considered at the moment. - - -## Comparison - -```misti -1 == 2 -1 != 2 -1 > 2 -1 < 2 -1 >= 2 -1 <= 2 -``` - -```md-warning -In Misti there's only double equals `==`. -
-
-x == y will ALWAYS compile to x === y -``` - -## Logical operators - -```misti -true && false -true || false - -!true -``` - -```md-warning -Multiple `!` are invalid, since there is no automatic type casting. -
-
-!! would be considered a different operator. -``` - -```md-warning -There is no short-circuit like so something like: -
-
-true && "value" will throw an error at compile time. -``` - - diff --git a/doc-generator/markdown/en/docs/latest/basics/simple-datatypes.md b/doc-generator/markdown/en/docs/latest/basics/simple-datatypes.md deleted file mode 100755 index 8be0c8a..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/simple-datatypes.md +++ /dev/null @@ -1,35 +0,0 @@ -# Simple datatypes - -The following are the primitive datatypes. They have literal representations. - -## Num - -Equivalent to a number in JS. - -```misti -val f0 = 322 -val f1 = 10.304 -val f2 = -34.343223 -val f3 = 0.234234e+2 -val f4 = 1e+4 -``` - -A floating point number __must__ have a digit before and after the dot. - -```misti -val valid1 = 0.45 -val valid2 = 13.0 - -// Will not be considered as floating point numbers -val invalid1 = .45 // Will be interpreted as the operator `.` and the integer 45 -val invalid2 = 13. // Will be interpreted as the integer 13 and the operator `.` -``` - -## Bool - -True and false - -``` -true -false -``` diff --git a/doc-generator/markdown/en/docs/latest/basics/tuples.md b/doc-generator/markdown/en/docs/latest/basics/tuples.md deleted file mode 100644 index ea65eef..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/tuples.md +++ /dev/null @@ -1,61 +0,0 @@ -# Tuples - -Tuples contain a fixed number of values of any datatype. They are denoted with -a hash and parenthesis. - -```misti -val person = #("John", "Doe", 25) -val result = #(true, 200) -``` - -## Signature - -```misti -// A tuple of Str, Str and Int -#(Str, Str, Int) - -// An array of tuples. These tuples have a Str, Int and Bool -Array[#(Str, Int, Bool)] - -// A function that takes a Str and Int, and return a tuple of Str and Int -(Str, Int) -> #(Str, Int) - -// A function that takes a tuple of Str and Int, and returns a Bool -(#(Str, Int)) -> Bool -``` - -## Destructuring - -In variable declaration - -```misti -val data = #("String", 322, true) - -val #(string, number, boolean) = data -val #(string, _, _) = data -``` - -In function parameters - -```misti -// Without parameter destructuring -fun destructure(#(Str, Int) data) { - val #(name, age) = data - // Computations with name, age -} - - -// With parameter destructuring -fun destructure(#(Str name, Int age)) { - // Computations with name, age - // Note that now there is no way to refer to the whole tuple -} - - -// Parameter destructuring with tuple preservation -fun destructure(#(Str name, Int age) data) { - // Computations with name, age - // The tuple `data` can still be referred to -} -``` - diff --git a/doc-generator/markdown/en/docs/latest/basics/variables-and-constants.md b/doc-generator/markdown/en/docs/latest/basics/variables-and-constants.md deleted file mode 100755 index 7b638ab..0000000 --- a/doc-generator/markdown/en/docs/latest/basics/variables-and-constants.md +++ /dev/null @@ -1,109 +0,0 @@ -# Variables and Constants - -Misti uses `var` for variables and `val` for constant reference variables. - -Variables and constants must always be initialized. - -```misti -// A variable, its value can be modified -var accumulator = 0 -accumulator += 1 -``` - -```misti -// A "constant", its value cannot be modified -val name = "Bob" - -// Illegal, will raise an error in compile time -name = "Mike" -``` - -```md-info -If a constant's value is a primitive value, it cannot be changed. -
-However, if it is a reference value, its inner attributes can still -be changed, but not the reference itself. -``` - -## Identifiers - -Identifiers start with a lower case letter or underscore, -and then can contain letters, numbers and underscores. -They can not start with a dollar sign. - -```misti -variable -_variable - -var1 -v4r -``` - -If an identifier starts with an upper case letter, it is considered to be -a Datatype. - -```misti -Str -Num -Bool -Array -Map - -CustomDatatype -``` - -## Type inference - -Variable declarations have type inference. - -```misti -val anInteger = 40 -val aFloat = 10.20e+4 -var aBoolean = true -``` - -The datatype can be optionally specified by placing it before `var` or `val`. - -```misti -Int val anInteger = 40 -Float val aFloat = 10.20e+4 -Bool var aBoolean = true -``` - -However, if the variable is a constant created with `val`, -this keyword is optional. - -So, the following are equivalent. - -```misti -Str val name = "Juan" -// is equivalent to -Str name = "Juan" -``` - -It is not possible to omit `var`. So the following will not mean the same. - -```misti -Str var age = 20 -// is not equivalent to -Str age = 20 - -// the previous statement is equivalent to: -// Str val age = 20 -``` - -The second statement will declare a constant, not a variable. - - -## Assign a block to a variable - -Assigning a block to a variable will execute the block, -and the last expression will be the value of the variable. - -```misti -val roi = - val income = someIncomeCalculation() - val investment = 25000 - income / investment // This will be the value of `roi` -``` - diff --git a/doc-generator/markdown/en/docs/latest/classes/definition.md b/doc-generator/markdown/en/docs/latest/classes/definition.md deleted file mode 100644 index 73953ae..0000000 --- a/doc-generator/markdown/en/docs/latest/classes/definition.md +++ /dev/null @@ -1,15 +0,0 @@ -# Classes - -```misti -class Token(Str value, Int lineNumber, Int position) - -val token1 = Token("if", 0, 0) -val token2 = Token(value: "else", lineNumber: 1, position: 4) -``` - -```misti -class FunToken(Int lineNumber, Int position) - -> Token("fun", lineNumber, position) - -val funToken1 = FunToken(3, 0) -``` diff --git a/doc-generator/markdown/en/docs/latest/flow-control/arrays.md b/doc-generator/markdown/en/docs/latest/flow-control/arrays.md deleted file mode 100644 index 2540af2..0000000 --- a/doc-generator/markdown/en/docs/latest/flow-control/arrays.md +++ /dev/null @@ -1,49 +0,0 @@ -# Arrays - -Arrays in Misti don't have special syntax for declaration. -They are created the following way instead: - -```misti -// Array[Int] -val numbers = Array(10, 20, 30) -// Array[Str] -val names = Array("Pablo", "Kim", "Mike") -``` - -Accessing or mutating the array use a similar syntax to other languages. - -```misti -// Access. Note the dot -val secondNumber = numbers.[1] - -// Mutation. Note the dot -names.[2] = "Josh" -``` - -```md-warning -Place a dot between the array and square brackets to access or mutate an array. -
-
-If you don't place a dot, it will be interpreted as a generic parameter. -``` - -## Importance of placing a dot - -If there is no dot between the array and square brackets, then it is parsed -as a generic parameter. - -```misti -// Access or mutation -variable.[index] -val n = numbers.[0] -numbers.[1] = 20 - -// Generic parameter -arrayOf[Datatype] -arrayOf[Str] -arrayOf[Bool] -``` - - - - diff --git a/doc-generator/markdown/en/docs/latest/flow-control/conditionals.md b/doc-generator/markdown/en/docs/latest/flow-control/conditionals.md deleted file mode 100644 index 4042b50..0000000 --- a/doc-generator/markdown/en/docs/latest/flow-control/conditionals.md +++ /dev/null @@ -1,33 +0,0 @@ -# Conditionals - -Conditionals in Misti surround the condition with keywords, -and the body of each condition is defined with indentation. - -```Misti -if condition do - // code... -else if anotherCondition do - // code... -else - // more code... -``` - -Conditionals are expressions, they evaluate to the last expression -in each branch. - -```misti -val result = if condition do value1 else value2 -``` - -## Early return - -If you need to return early based on a condition, -you can use `ret` instead of `do` in a confition. The last expression of -the block will be returned - -```misti -if condition ret - // code... - computedValue // this will be returned -``` - diff --git a/doc-generator/markdown/en/docs/latest/flow-control/loops.md b/doc-generator/markdown/en/docs/latest/flow-control/loops.md deleted file mode 100644 index 6b87b81..0000000 --- a/doc-generator/markdown/en/docs/latest/flow-control/loops.md +++ /dev/null @@ -1,25 +0,0 @@ -# Loops - -Loops are indentation-sensitive. - -## For each - -```misti -// Loop through an object -for key in object do - print(key) - - -// Loop through an array -for value of array do - print(value) -``` - -## While - -```misti -while condition do - print("loop") -``` - - diff --git a/doc-generator/markdown/en/docs/latest/functions/definition.md b/doc-generator/markdown/en/docs/latest/functions/definition.md deleted file mode 100644 index 9a30882..0000000 --- a/doc-generator/markdown/en/docs/latest/functions/definition.md +++ /dev/null @@ -1,89 +0,0 @@ -# Function definition - -Functions are defined with `fun` followed by the name of the function, -the parameters, the return type, `=` and an expression. - -## Function with no parameters - -To declare a function with no parameters include `()`, and call it with `()`. - -```misti -fun getName() = - // code... - -val name = getName() -``` - -## Function that returns void/nothing - -In Misti we return `Unit` instead of `void`, `null`, `undefined` or others. - -So a function that doesn't return anything, would return `Unit`. - -```misti -// This function just prints Hello and returns -fun printHello() -> Unit = - print("Hello") -``` - -This type, `Unit`, is treated like `void`, so it is ignored. - -If a function doesn't return anything, `Unit` can be omitted. - -```misti -// This first declaration -fun doSomething() -> Unit = - something() - - -// is equivalent to this one -fun doSomething() = - something() -``` - -## Function with return - -First, the return type must be defined in the declaration. - -Let's say that a function `getLuckyNumber` returns a Float, then it -would be declared like this: - -```misti -fun getLuckyNumber() -> Float = - // Body of the function -``` - -And finally, the return value is the last expression in the function. -The following function will return 7. - -```misti -fun getLuckyNumber() -> Float = - // This '7' is the last expression, so it will be returned - 7 - - -val number = getLuckyNumber() // number = 7 -``` - -## Return multiple values - -We can use a tuple if we need to return multiple values. - -```misti -fun getPerson() -> #(Str, Int) = - // Logic... - #("Kim", 33) - - -fun tupleContains(#(Str, Int) data, Str key) -> #(Bool, Int) = - val #(currentKey, value) = data - if currentKey == key do - #(true, value) - else - #(false, 0) - - -tupleContains(#("Test", 200), "Test") -``` - - diff --git a/doc-generator/markdown/en/docs/latest/functions/lambdas.md b/doc-generator/markdown/en/docs/latest/functions/lambdas.md deleted file mode 100644 index 4300533..0000000 --- a/doc-generator/markdown/en/docs/latest/functions/lambdas.md +++ /dev/null @@ -1,67 +0,0 @@ -# Anonymous functions/Lambdas - -```md-info -Subject to change -``` - -An anonymous consists of the `fn` keyword, parameters and body. - -```misti -fn (x, y) { - // Body - x + y -} -``` - -The following types are optional, if we can be able to infer them: - -- The types of the parameters -- The return type - -If used, they would look like this: - -```misti -fn (Int x, Int y) -> Int { - // Body - x + y -} -``` - -## Lambdas - -If an anonymous function doesn't have parameters, the `fn` keyword may be omitted. -This is called a lambda. - -```misti -{ doSomething() } - -// The above lambda is equivalent to: -fn () { - doSomething() -} -``` - -## Inferred arguments - -If the arguments of the lambda don't need names, the following -syntax can be used. - -```misti -{ $1 + $2 } -``` - -Inside a short lambda you can use `$1`, `$2`, `$3`, etc. to refer to the -parameters of the lambda. - -So the following are the same: - -```misti -{ $1 + $2 } - -// The same as: -fn (x, y) { - x + y -} -``` - - diff --git a/doc-generator/markdown/en/docs/latest/functions/parameters.md b/doc-generator/markdown/en/docs/latest/functions/parameters.md deleted file mode 100644 index 98cc4bd..0000000 --- a/doc-generator/markdown/en/docs/latest/functions/parameters.md +++ /dev/null @@ -1,101 +0,0 @@ -# Function parameters - -## Function with 1 parameter - -Place the parameter's datatype after the function's name, then the name of the parameter. - -For example, a function that takes a `Str` as parameter is defined as follows: - -```misti -fun sayHello(Str name) = - // Body of the function -``` - -Then the parameter `name` can be used. - -```misti -fun sayHello(Str name) = - print("Hello {name}") -``` - -## Function with 2 or more parameters - -The parameters are separated with commas: - -```misti -// 2 parameters: x and y, both Int -fun add(Int x, Int y) -> Int = - x + y -``` - -```misti -// 3 parameters -fun substring(Str input, Int start, Int end) -> Str = - // Logic... -``` - -And so on. - -## Generic parameters - -Generic parameters consist of an uppercase letter enclosed in square brackets. -They are placed after the function name, but before the parameters list. - -```misti -fun getItemAt[T](Array[T] arr, Int pos) -> T = - // Function body -``` - -When calling the function, the generic parameter is placed in the same position. - -```misti -val thirdName = getItemAt[String](names, 2) -``` - -If the generic parameter can be inferred, it's not necessary to put it. - -```misti -// Will be a String, inferred -val thirdName = getItemAt(names, 2) -``` - -## Named parameters - -When calling a function you can link the name of an argument to its value. -In the following function, `substring` has 3 parameters: `string`, `start` and `end`. - -```misti -fun substring(Str string, Int start, Int end) = - // Body of the function -``` - -Then, when calling the function, you can specify each parameter and their values. - -```misti -// Without named parameters -substring("Hello, world!", 7, 12) - -// With named parameters -substring(string: "Hello, world!", start: 7, end: 12) - -substring( - string: "Hello, world!", - start: 7, - end: 12, -) -``` - -This will return `"world"`. - -You can do computations with named parameters as well. - -```misti -substring(string: "Hello, world!", start: 12 - 5, end: 48 / 4) - -substring( - string: "Hello, world!", - start: 12 - 5, - end: 48 / 4, -) -``` - diff --git a/doc-generator/markdown/en/docs/latest/index.md b/doc-generator/markdown/en/docs/latest/index.md deleted file mode 100755 index 2980217..0000000 --- a/doc-generator/markdown/en/docs/latest/index.md +++ /dev/null @@ -1,396 +0,0 @@ -# Welcome - -Misti is _yet another_ toy language to replace JavaScript. - -__Misti is indentation based.__ - -It's objectives are: - -- Reduce compilation times using Rust. - -- Improve code quality by making the language more expressive. -- Make the language easy to understand by using a consistent syntax (at the expense of familiarity). -- Integrate with existing TypeScript definitions by importing and exporting `.d.ts` files. -- Serve as a side project. - -The purpose of the language is to address many of the limitations of JS. -To serve that end, __many concepts from JS may be completely omitted -or replaced with different syntax/semantics__. - -Such things will be noted in the documentation where neccesary. - -## Syntax summary - -## Variables and constants - -```misti -// -// Variables and constants -// -var aVariable = 20 -val aConstant = 30 -aVariable = 40 -// | semi colons not required - - -// Specify the datatype of a constant -Num aConstant = 30 // <- `val` is optional - -// Specify the datatype of a variable -Num var aVariable = 20 // <- `var` required - -// You can assign the result of many operations to a variable -val roi = do { - val income = someIncomeCalculation() - val investment = 25000 - income / investment // This will be the value of `roi` -} -``` - -## Basic datatypes - -```misti -// -// Basic datatypes -// -Num number = 40.12345 -Bool boolean = true -Str string = "John Doe" -``` - -## Conditionals - -```misti -// -// Conditionals -// -if name == "John Doe" { - val message = "Hello John" - console.log(message) -} else if name == "Mark" { - console.log("Hi Mark!") -} else { - console.log("Hello there") -} - - -// You can use conditionals as expressions -val response = if risk < 0.2 { "Go ahead" } else { "Don't" } - -// There is no ternary conditional -``` - -## Arrays - -```misti -// -// Arrays -// -val dates = Array(1990, 1995, 2014, 2015, 2017) -// | There isn't special syntax for array declaration -// so you can't do `[1990, 1995, ...]` - -val firstDate = dates.[0] -// | Notice the dot for access - -dates.[4] = 2018 -// | Dot for mutation - -// Array signature -Array[Num] dates = Array(1990, 1995, 2014, 2015, 2017) -// | Square brackets are used for generics -// instead of angle brackes. -``` - -## Tuples - -```misti -// -// Tuples -// -val person = #("John", 30, true) - -// Destructuring -var #(name, age, isMarried) = person - -// Tuple signature -#(Str, Num, Bool) signature = #("John", 30, true) -``` - -## Loops - -```misti -// -// Loops -// -for #(key, value) in object { - console.log("key: {key}, value: {value}") -} - -for value of array { - console.log("value: {value}") -} - - -while condition { - print("while") -} -``` - -## Functions - -```misti -// -// Functions -// -console.log("Enclose the parameters in parens") - -add(10, 20) - -// Named parameters -substring(input: "Hello, world!", start: 7, end: 12) - -// Funtion declaration -fun add(Num x, Num y) -> Num { - x + y -} - -// Function with default value -fun calculate(Num price, Num discount = 0.0) { - val total = price * (1.0 - discount) - console.log("Your total is {total}$") -} - -calculate(100, 0.25) // "Your total is 75$" -calculate(100) // "Your total is 100$" -``` - -## Objects - -```misti -// -// Objects -// - -type Person = #{ - Str name, - Num age, -} - -val john = Person #{ - name: "John", - age: 21, -} - -// An object with arbitrary keys/values -val randomObject = #{ - key1: "Any value" - key2: 322, - key3: true, - key4: #{ - key5: "zzz", - }, - key6: Person #{ - name: "Sarah", - age: 20, - }, -} -``` - -## Classes - -```misti -// -// Classes -// - -// Declare a simple class -class Shape - - -// Classes can not be extended by default. -// To allow inheritance, use @open -@open -class Shape = - // By default methods can not be overrided. - // To allow it, use @open - @open - fun printName() = - print("Generic Shape") - - -val shape = Shape() -// | There's no `new` keyword, just call the class - -shape.printName() // "Generic Shape" - - -@open -class Rectangle(Num height, Num length) -> Shape() = -// | Constructor parameters - - // Properties are always private - val vertexCount = 4 - - // Methods are private by default - fun perimeter() -> Num = - (height + length) * 2 - - - // To make a method public add @pub - @pub - fun area() -> Num = - height * length - - - // Method override - @override - fun printName() = - print("A rectangle") - - -val rectangle = Rectangle(10, 20) -rectangle.area() // 200 -rectangle.printName() // "A rectangle" - - -class Square(Num length) -> Rectangle(length, length) = -// | Inheritance - - @override - fun printName() = - console.log("A square") - - - fun printInfo() = - // Use $ to refer to methods/properties of the parent class - console.log("A square with perimeter = {$perimeter()} and area = {$area()}") -``` - -## Null safety - -```misti -// -// Null safety -// - -// Operations that may fail return an Option value -fun divide(Int numerator, Int denominator) -> Option[Num] = - if denominator == 0 do - None // Equivalent to `null` - else - Some(numerator / denominator) - - -val possibleResult = divide(10, 5) - -if val Some(result) = possibleResult do - print("The result of the division is {result}") -else - print("Division by zero") - - -// `Type?` is syntax sugar for Option[Type] -Num? roi = divide(income, investment) -``` - -## Error handling - -```misti -// -// Error handling -// - -// A recoverable error -fun testVersionNumber(Str version) -> Result[Int, Str] = - if version == "10" do - Ok(10) - else if version == "11" do - Ok(11) - else - Err("Invalid version") - - -// Legacy try-catch (may change) -try problematicExpression() with -| Error(e) -> - // do something - // must return an expression - 10 -``` - -## Pattern matching - -```misti -// -// Pattern matching -// - -match age with -| 10 -> - // executes when age == 10 -| 11 | 12 | 13 -> - // when age == 11, 12 or 13 -| _ -> - // when none of the conditions match - - -Str? result = someOperation() -match result with -| Some(value) -> - // value is a Str - // do operations with v -| None -> - // Handle empty return - - -Result[Num, Str] result = someOtherOperation() -match result with -| Ok(number) -> - // number is Num -| Err(reason) -> - // reason is Str - - -Result[Num, Str] result = someOtherOperation() -match result with -| Ok(number) if number > 18 -> - // This matches if number > 18 -| Ok(number) -> - // This matches if number <= 18 -| Err(reason) -> - // reason is Str -``` - -## JSX - -```misti -use Solid.{createSignal} -use Search -use Person -use Registers -use NewRegister - -pub fun 'Certs() { - val #(person, setPerson) = createSignal[Person?](None) - val #(lastUpdate, setLastUpdate) = createSignal(0) - -
-

- Registrar certificado -

- - - -
-} - -``` - - - diff --git a/doc-generator/markdown/en/docs/latest/index.yaml b/doc-generator/markdown/en/docs/latest/index.yaml deleted file mode 100644 index 63a06f4..0000000 --- a/doc-generator/markdown/en/docs/latest/index.yaml +++ /dev/null @@ -1,60 +0,0 @@ -path: "" -name: "" -has_index: true -children: -- path: index - name: Index - -- path: basics - name: Basics - children: - - path: variables-and-constants - name: Variables and constants - - path: simple-datatypes - name: Simple datatypes - - path: function-calls - name: Function calls - - path: operators - name: Operators - - path: tuples - name: Tuples - - path: indentation-rules - name: Indentation rules - -- path: flow-control - name: Flow control - children: - - path: conditionals - name: Conditionals - - path: arrays - name: Arrays - - path: loops - name: Loops - -- path: functions - name: Functions - children: - - path: definition - name: Definition - - path: lambdas - name: Lambdas - - path: parameters - name: Parameters - -- path: objects - name: Objects - children: - - path: definition - name: Definition - -- path: classes - name: Classes - children: - - path: definition - name: Definition - -- path: modules - name: Modules - children: - - path: import - name: Import diff --git a/doc-generator/markdown/en/docs/latest/modules/import.md b/doc-generator/markdown/en/docs/latest/modules/import.md deleted file mode 100644 index 1f4fba2..0000000 --- a/doc-generator/markdown/en/docs/latest/modules/import.md +++ /dev/null @@ -1,34 +0,0 @@ -# Modules - -```md-info -Subject to change -``` - -## Idea 1: Copy ES2015 modules - -```misti -import React, {useState} from "react" -import "./utils/math" -``` - -## Idea 2: Python-like ES2015 modules - -```misti -from "react" import React, {useState} -import "./utils/math" -``` - -## Idea 3: F#-like modules - -```misti -use React -use Math -``` - -## Idea 4: Java-like modules - -```misti -use React -use utils.Math -``` - diff --git a/doc-generator/markdown/en/docs/latest/objects/definition.md b/doc-generator/markdown/en/docs/latest/objects/definition.md deleted file mode 100644 index d187b4f..0000000 --- a/doc-generator/markdown/en/docs/latest/objects/definition.md +++ /dev/null @@ -1,34 +0,0 @@ -# Definition - -Objects are defined with the syntax `#{}` - -Objects should have a definition that specifies which fields it accepts. - -```misti -type Position = #{ - Num latitude, - Num longitude, -} - -val position = Position #{ - latitude: -93.0838749, - longitude: 80.2847561, -} - -// Destructure -val Position #{latitude: lat, longitude: long} = position - -``` - -## Arbitrary keys and values - - -```misti -val object2 = #{ - key1: "sample", - key2: "text", - key3: 322, -} - -object2.key1 -``` diff --git a/doc-generator/markdown/en/stdlib/latest/index.md b/doc-generator/markdown/en/stdlib/latest/index.md deleted file mode 100644 index feaadf0..0000000 --- a/doc-generator/markdown/en/stdlib/latest/index.md +++ /dev/null @@ -1 +0,0 @@ -# Stdlib index diff --git a/doc-generator/markdown/en/stdlib/latest/index.yaml b/doc-generator/markdown/en/stdlib/latest/index.yaml deleted file mode 100644 index 432e95b..0000000 --- a/doc-generator/markdown/en/stdlib/latest/index.yaml +++ /dev/null @@ -1,10 +0,0 @@ -path: "" -name: "" -children: -- path: prelude - name: Prelude - children: - - path: String - name: String - - path: Console - name: Console diff --git a/doc-generator/markdown/en/stdlib/latest/prelude/Console.md b/doc-generator/markdown/en/stdlib/latest/prelude/Console.md deleted file mode 100644 index 6de7020..0000000 --- a/doc-generator/markdown/en/stdlib/latest/prelude/Console.md +++ /dev/null @@ -1,26 +0,0 @@ -# Console - -## Overview - -The console module contains functions useful for debugging. - -## Functions - -### `fun log(Any ...objects)` - -Outputs a message to the console of the system, with a new line. - -When called without parameters, it prints just the new line. - -``` -Console.log() // Prints: `\n` -``` - -When called with one or more parameters, it first converts those -parameters to strings, joins them with white space, then prints them. - -``` -Console.log("message") // Prints: `message\n` - -Console.log("message", "value") // Prints: `message value\n` -``` diff --git a/doc-generator/markdown/en/stdlib/latest/prelude/String.md b/doc-generator/markdown/en/stdlib/latest/prelude/String.md deleted file mode 100644 index e0383f1..0000000 --- a/doc-generator/markdown/en/stdlib/latest/prelude/String.md +++ /dev/null @@ -1,421 +0,0 @@ -# String - -A collection of UTF-16 characters. - ---- - -## Overview - -Strings are a primitive datatype that contain a series of UTF-16 encoded characters. - -To create a string use double quotes: - -```misti -val greeting = "Hello there!" - -// With type annotation -Str greeting = "Hello there!" -``` - -```md-warning -Misti doesn't allow string creation with single quotes ''. -``` - -Strings can be concatenated with the plus `+` operator: - -```misti -val name = "John" -val greeting = "Hello" - -val fullGreeting = greeting + " " + name + "!" -// fullGreeting = "Hello John!" -``` - -In the future, the language will support string concatenation and multi-line strings. - -## String comparison - -To check if two strings are the same use the equal-to `==` operator. - -```misti -"Hello" == "Hello" //: true -"Hello" == "hello" //: false -``` - -To check if two strings are different use the not-equal-to `!=` operator. - -```misti -"abc" != "123" //: true -"xyz" != "xyz" //: false -``` - -
- -Comparing strings with `<`, `<=`, `>` & `>=` will compare each character of the string, -based on the UTF-16 value. - -```misti -"a" < "b" //: true -"a" < "A" //: false - -"aab" > "aac" //: false -"aab" < "aac" //: true -``` - -## Automatic String conversion - -Misti __does not__ automatically convert other datatypes to String. - -```misti -val sentence = "My age is: " + 20 // This will throw an error -// ^ -// Cannot concatenate a String and a Number. -``` - -To do so use the method `.toStr()` to explicitly convert to String. - -```misti -val sentence = "My age is: " + 20.toStr() // ok -``` - -In the future, string interpolation will coerce datatypes into strings. - - -## Escape characters - -Misti supports the following escape characters: - -- `\"` - -- `\\` -- `\n` -- `\r` -- `\t` -- `\b` - ---- - -## API - -Prelude's `Str` contains methods and functions created for their usage within Misti. - -To access the underlying JavaScript methods, use the `js.String` module. - - -### Constructor - -```misti -class String[T](T value) -where T -> Printable -``` - -Creates a string from `value`, by calling its `toStr` method. - -#### Parameters - -- `T value`: Any value that implements `Printable`, and therefore has a `toStr` method. - -#### Examples - -```misti -val age = String(20) //: "20" -val condition = String(false) //: "false" -val numbers = Array(1, 2, 3) |> String //: "1,2,3" -``` - - -## Properties - -### length - -```misti -Num length -``` - -Returns the number of UTF-16 code units in the string. - -#### Example - -```misti -val name = "John" -name.length //: 4 -``` - -
- ---- - -## Methods - -### charAt - -```misti -fun charAt(Num position) -> Str? -``` - -Returns the UTF-16 code unit located at `position`. - -
- -#### Parameters - -- `Num position`: An integer between `0` and the string's `length - 1`. - -#### Return - -- `Str?`: The character at `position`, or `None` if it's invalid - -#### Description - -In a string with `length` characters, this method returns the character (UTF-16 code point) -located at `position`, if it is true that `0 <= position < length`. - -If `position` is out of range, this method will return `None`. - -#### Examples - -```misti -val name = "John Doe" - -name.charAt(0) //: Some("J") -name.charAt(1) //: Some("o") -name.charAt(7) //: Some("e") - -name.charAt(-1) //: None -name.charAt(8) //: None -``` - -If you are sure that the position is valid, you can use the `!!` operator to get -the value directly, instead of a `Maybe`. - -```misti -val greeting = "Hello!" - -name.charAt(4)!! //: "o" -``` - -
- - -### charCodeAt - -```misti -fun charCodeAt(Num position) -> Num? -``` - -Returns an integer between `0` and `65535` representing the UTF-16 -code unit at `position`. - - -
- -#### Parameters - -- `Num position`: A number between `0` and the string's `length - 1` - -#### Return - -- `Num?`: The code unit at `position` if it's valid, or `None` if it's invalid. - -#### Description - -Description - -#### Examples - -```misti -val letters = "ABC" - -letters.charCodeAt(0) //: Some(65) -letters.charCodeAt(1) //: Some(66) -``` - -
- - -### codePointAt - - -### concat - -```misti -fun concat[any T](T... values) -> Str -where T -> Printable -``` - -Concatenates the calling string and `values`, and returns the result -as a new `Str` - -
- -#### Type parameters - -- `any T`: Any datatype that implements `Printable` - -#### Parameters - -- `T... values`: Zero or more values of type `T` - -#### Return - -- `Str`: A new string with the values concatenated - -#### Description - -`concat` concatenates the callee, and any arguments passed to it in -a new string. The callee is not modified. - -If the arguments don't have type `Str`, they are converted with their -`toStr` method. - -#### Examples - -```misti -val greeting = "Hello " - -greeting.concat("world", "!") //: "Hello world!" -greeting.concat(123) //: "Hello 123" -greeting.concat(3, 2, 2) //: "Hello 322" -``` - -
- - -### endsWith - - - -### includes - -```misti -fun includes(Str searchString, Num pos = 0) -> Bool -``` - -Returns whether the current string contains `searchString`, -searching from position `pos` - -
- -#### Parameters - -- `Str searchString`: The string to search for -- `Num pos = 0`: The position from where to start searching. - -#### Return - -`Bool`: `true` if searchString is found, `false` otherwise - -#### Additional - -If `searchString` is the empty string `""` this method returns `true`. - -If `pos` is negative, the search starts from the first character. - -#### Examples - -```misti -val loremIpsum = "Lorem ipsum dolor sit amet" - -loremIpsum.includes("ipsum") //: true -loremIpsum.includes("ipsum", 10) //: false -loremIpsum.includes("ipsum", -5) //: true -``` - - - -
- - - -### indexOf - -```misti -fun indexOf(Str searchValue, Num position = 0) -> Num -``` - -### lastIndexOf - -fun lastIndexOf(Str searchValue, Num position = Infinity) -> Num - -### match - -```misti -fun match(RegExp pattern) -> RegExpResult -``` - - -### matchAll - -```misti -fun matchAll(RegExp pattern) -> Iterator[RegExpResult] -``` - - -### normalize - -```misti -fun normalize(Str form = "NFC") -> String -``` - - -### padEnd - -```misti -fun padEnd(Num targetLength, Str padValue = " ") -> String -``` - - -### padStart - -```misti -fun padStart(Num targetLength, Str padValue = " ") -> String -``` - -### repeat - -```misti -fun repeat(Num count) -> String -``` - -### replace - -```misti -fun replaceAll([RegExp | Str] pattern, Str replacement) -> String -``` - - -### replaceAll - -```misti -fun replaceAll([RegExp | Str] pattern, Str replacement) -> String -``` - - -### search - -```misti -fun search([RegExp | Str] pattern) -> Num -``` - - -### slice - -```misti -fun slice(Num start, Num? end) -> String -``` - - -### split - -```misti -fun split(Str separator, Num? limit) -> Array -``` - - - - - - - - - diff --git a/doc-generator/src/generator/code.rs b/doc-generator/src/generator/code.rs deleted file mode 100644 index de2e8bf..0000000 --- a/doc-generator/src/generator/code.rs +++ /dev/null @@ -1,88 +0,0 @@ -use markdown::mdast::Code; - -use super::highlighter::highlight; - -use super::Printable; - -impl Printable for Code { - fn to_html(&self) -> String { - let code = highlight(&self.value); - - if let Some(lang) = &self.lang { - if lang == "nav" { - return generate_nav_html(&self.value); - } - - format!("
{}
", lang, code) - } else { - format!("
{}
", code) - } - } - - fn get_text(&self) -> String { - panic!("Code cannot return its raw text") - } -} - -fn generate_nav_html(data: &String) -> String { - use toml::{Table, Value}; - - let table = data.parse::().unwrap(); - - let previous = match table.get("previous") { - Some(Value::Table(t)) => match (t.get("href"), t.get("title")) { - (Some(Value::String(href)), Some(Value::String(title))) => { - format!( - " - - Previous -
- {} -
- ", - href, title - ) - } - _ => panic!("TOML error: `previous` doesn't have a href and title string."), - }, - Some(_) => panic!("TOML error: `previous` is not a table."), - _ => String::from("
"), - }; - - let next = match table.get("next") { - Some(Value::Table(t)) => match (t.get("href"), t.get("title")) { - (Some(Value::String(href)), Some(Value::String(title))) => { - format!( - " - - Next -
- {} -
- ", - href, title - ) - } - _ => panic!("TOML error: `next` doesn't have a href and title string."), - }, - Some(_) => panic!("TOML error: `next` is not a table."), - _ => String::from("
"), - }; - - format!( - "
{}{}
", - previous, next - ) -} diff --git a/doc-generator/src/generator/emphasis.rs b/doc-generator/src/generator/emphasis.rs deleted file mode 100644 index 53c4e9f..0000000 --- a/doc-generator/src/generator/emphasis.rs +++ /dev/null @@ -1,17 +0,0 @@ -use markdown::mdast::Emphasis; - -use crate::utils; - -use super::Printable; - -impl Printable for Emphasis { - fn to_html(&self) -> String { - let html = utils::collect_children_html(&self.children); - - format!("{}", html) - } - - fn get_text(&self) -> String { - utils::collect_children_text(&self.children) - } -} diff --git a/doc-generator/src/generator/heading.rs b/doc-generator/src/generator/heading.rs deleted file mode 100644 index 44e7409..0000000 --- a/doc-generator/src/generator/heading.rs +++ /dev/null @@ -1,38 +0,0 @@ -use markdown::mdast::Heading; - -use crate::utils; - -use super::Printable; - -impl Printable for Heading { - fn to_html(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(node.to_html()) - } - - let text: String = result.into_iter().collect(); - - if self.depth < 4 { - let html_fragment_text = utils::to_html_fragment(&self.get_text()); - - format!( - "{}", - self.depth, html_fragment_text, html_fragment_text, text, self.depth - ) - } else { - format!("{}", self.depth, text, self.depth) - } - } - - fn get_text(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(node.get_text()) - } - - result.join("-") - } -} diff --git a/doc-generator/src/generator/highlighter/mod.rs b/doc-generator/src/generator/highlighter/mod.rs deleted file mode 100644 index ce20b77..0000000 --- a/doc-generator/src/generator/highlighter/mod.rs +++ /dev/null @@ -1,94 +0,0 @@ -use misti::TokenType; - -#[macro_export] -macro_rules! replace { - ($classes:literal, $token:ident, $offset:ident, $output:ident) => {{ - let start_pos = $token.position; - let end_pos = $token.get_end_position(); - - let range = (start_pos + $offset)..(end_pos + $offset); - let html = format!("{}", $classes, $token.value); - - $offset += 28 + $classes.len(); - - $output.replace_range(range, html.as_str()); - }}; -} - -pub fn highlight(input: &String) -> String { - // The tokens come in order - let tokens = misti::tokenize(&input); - - if tokens.is_err() { - // eprintln!("Found a lexical error processing code.\n{:?}", tokens); - return input.clone(); - } - - let mut output = input.clone(); - // Offset to the position of the tokens in the string, to allow - // several tokens to be highlighted - let mut offset = 0; - - for token in tokens.unwrap() { - match &token.token_type { - TokenType::Datatype => replace!("class-name", token, offset, output), - TokenType::Number => replace!("number", token, offset, output), - TokenType::Identifier if token.value == "true" || token.value == "false" => { - replace!("keyword", token, offset, output) - } - TokenType::String => replace!("string", token, offset, output), - TokenType::Comment => replace!("comment", token, offset, output), - TokenType::VAL | TokenType::VAR => replace!("keyword", token, offset, output), - _ => {} - } - } - - output -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn should_return_simple_string() { - assert_eq!("sample", highlight(&String::from("sample"))) - } - - #[test] - fn should_highlight_datatype() { - assert_eq!( - "Num", - highlight(&String::from("Num")) - ) - } - - #[test] - fn should_highlight_number() { - assert_eq!( - "322", - highlight(&String::from("322")) - ) - } - - #[test] - fn should_highlight_string() { - assert_eq!( - "\"Hello\"", - highlight(&String::from("\"Hello\"")) - ) - } - - #[test] - fn should_highlight_multiple_tokens() { - assert_eq!( - "Str x = 322", - highlight(&String::from("Str x = 322")) - ); - - assert_eq!( - "Str x = \"hello\" 322", - highlight(&String::from("Str x = \"hello\" 322")) - ); - } -} diff --git a/doc-generator/src/generator/inline_code.rs b/doc-generator/src/generator/inline_code.rs deleted file mode 100644 index a9988fb..0000000 --- a/doc-generator/src/generator/inline_code.rs +++ /dev/null @@ -1,26 +0,0 @@ -use markdown::mdast::InlineCode; - -use super::highlighter::highlight; -use super::Printable; - -impl Printable for InlineCode { - fn to_html(&self) -> String { - /* - let tokens = misti::tokenize(&self.value); - println!("INLINE CODE ==== tokens ====\n\n{:?}\n\n==== code ====\n\n{}\n\n", tokens, self.value); - - let s = self.value - .replace("<", "<") - .replace(">", ">"); - */ - - format!( - "{}", - highlight(&self.value) - ) - } - - fn get_text(&self) -> String { - self.value.clone() - } -} diff --git a/doc-generator/src/generator/list.rs b/doc-generator/src/generator/list.rs deleted file mode 100644 index 0a1a161..0000000 --- a/doc-generator/src/generator/list.rs +++ /dev/null @@ -1,47 +0,0 @@ -use markdown::mdast::{List, ListItem, Node}; - -use crate::utils; - -use super::Printable; - -impl Printable for List { - fn to_html(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(format!("
  • {}
  • ", node.to_html())) - } - - let str: String = result.into_iter().collect(); - - if self.ordered { - format!("
      {}
    ", str) - } else { - format!("
      {}
    ", str) - } - } - - fn get_text(&self) -> String { - panic!("List cannot return it's raw text") - } -} - -impl Printable for ListItem { - fn to_html(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - let s = match node { - Node::Paragraph(p) => utils::collect_children_html(&p.children), - _ => panic!("A thing other than Paragraph inside ListItem (?)"), - }; - result.push(format!("{}", s)) - } - - result.into_iter().collect() - } - - fn get_text(&self) -> String { - panic!("ListItem cannot return it's raw text") - } -} diff --git a/doc-generator/src/generator/mod.rs b/doc-generator/src/generator/mod.rs deleted file mode 100644 index 032d2c7..0000000 --- a/doc-generator/src/generator/mod.rs +++ /dev/null @@ -1,59 +0,0 @@ -use markdown::mdast::Node; - -mod code; -mod emphasis; -mod heading; -mod inline_code; -mod list; -mod paragraph; -mod root; -mod strong; -mod text; - -mod highlighter; - -pub trait Printable { - fn to_html(&self) -> String; - fn get_text(&self) -> String; -} - -impl Printable for Node { - fn to_html(&self) -> String { - match self { - Node::Root(root) => root.to_html(), - Node::Heading(heading) => heading.to_html(), - Node::Text(text) => text.to_html(), - Node::Paragraph(p) => p.to_html(), - Node::ThematicBreak(_) => String::from("
    "), - Node::InlineCode(i) => i.to_html(), - Node::Code(c) => c.to_html(), - Node::Html(h) => h.value.clone(), - Node::Strong(s) => s.to_html(), - Node::Emphasis(e) => e.to_html(), - Node::List(l) => l.to_html(), - Node::ListItem(l) => l.to_html(), - _ => format!( - "
    Not implemented
    {:?}
    ", - self - ), - } - } - - fn get_text(&self) -> String { - match self { - Node::Root(root) => root.get_text(), - Node::Heading(heading) => heading.get_text(), - Node::Text(text) => text.get_text(), - Node::Paragraph(p) => p.get_text(), - Node::ThematicBreak(_) => panic!("
    cannot return its raw text"), - Node::InlineCode(i) => i.get_text(), - Node::Code(c) => c.get_text(), - Node::Html(_) => panic!("Html cannot return its raw text"), - Node::Strong(s) => s.get_text(), - Node::Emphasis(e) => e.get_text(), - Node::List(l) => l.get_text(), - Node::ListItem(l) => l.get_text(), - _ => String::from(""), - } - } -} diff --git a/doc-generator/src/generator/paragraph.rs b/doc-generator/src/generator/paragraph.rs deleted file mode 100644 index fce798f..0000000 --- a/doc-generator/src/generator/paragraph.rs +++ /dev/null @@ -1,21 +0,0 @@ -use markdown::mdast::Paragraph; - -use super::Printable; - -impl Printable for Paragraph { - fn to_html(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(node.to_html()) - } - - let text: String = result.into_iter().collect(); - - format!("

    {}

    ", text) - } - - fn get_text(&self) -> String { - panic!("Paragraph cannot return its raw text") - } -} diff --git a/doc-generator/src/generator/root.rs b/doc-generator/src/generator/root.rs deleted file mode 100644 index e378b2a..0000000 --- a/doc-generator/src/generator/root.rs +++ /dev/null @@ -1,25 +0,0 @@ -use markdown::mdast; - -use super::Printable; - -impl Printable for mdast::Root { - fn to_html(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(node.to_html()) - } - - result.into_iter().collect() - } - - fn get_text(&self) -> String { - let mut result = Vec::::new(); - - for node in &self.children { - result.push(node.get_text()) - } - - result.join("-") - } -} diff --git a/doc-generator/src/generator/strong.rs b/doc-generator/src/generator/strong.rs deleted file mode 100644 index 287b8a1..0000000 --- a/doc-generator/src/generator/strong.rs +++ /dev/null @@ -1,17 +0,0 @@ -use markdown::mdast::Strong; - -use crate::utils; - -use super::Printable; - -impl Printable for Strong { - fn to_html(&self) -> String { - let text = utils::collect_children_html(&self.children); - - format!("{}", text) - } - - fn get_text(&self) -> String { - utils::collect_children_text(&self.children) - } -} diff --git a/doc-generator/src/generator/text.rs b/doc-generator/src/generator/text.rs deleted file mode 100644 index 424a499..0000000 --- a/doc-generator/src/generator/text.rs +++ /dev/null @@ -1,13 +0,0 @@ -use markdown::mdast::Text; - -use super::Printable; - -impl Printable for Text { - fn to_html(&self) -> String { - self.value.clone() - } - - fn get_text(&self) -> String { - self.value.clone() - } -} diff --git a/doc-generator/src/main.rs b/doc-generator/src/main.rs deleted file mode 100644 index ee4b183..0000000 --- a/doc-generator/src/main.rs +++ /dev/null @@ -1,33 +0,0 @@ -use clap::Parser; -use std::path::Path; - -mod generator; -mod pages; -mod processor; -mod sidebar; -mod utils; - -#[derive(Parser, Debug)] -#[command(author, version, about, long_about = None)] -struct Args { - /// Input folder - #[arg(short, long)] - input: String, - /// Output folder - #[arg(short, long)] - output: String, -} - -fn main() { - let args = Args::parse(); - - let input_folder = Path::new(&args.input); - let output_folder = Path::new(&args.output); - - if input_folder.is_dir() && output_folder.is_dir() { - processor::search_config_file(&input_folder, input_folder, output_folder); - // process_folder(&input_folder, input_folder, output_folder); - } else { - eprint!("Input folder is not a valid path to a folder") - } -} diff --git a/doc-generator/src/pages/md_compiler.rs b/doc-generator/src/pages/md_compiler.rs deleted file mode 100644 index 5f1d4d6..0000000 --- a/doc-generator/src/pages/md_compiler.rs +++ /dev/null @@ -1,67 +0,0 @@ -use std::{ - fs::{self, File}, - io::Write, - path::{Path, PathBuf}, -}; - -use crate::{generator::Printable, sidebar::SidebarGenerator}; - -/// ## Parameters -/// -/// - `file`: Path to the MD file to compile -/// - `input_folder`: Path to the input folder passed as parameter of the program -/// - `output_folder`: Path to the output folder passed as parameter of the program -/// - `file_tree_html`: HTML code of the file tree to be inserted into the generated HTML -pub fn compile(file: &PathBuf, input_folder: &Path, output_folder: &Path, file_tree_html: &String) { - // /home/fernando/misti/docs/markdown - let input_folder = input_folder.canonicalize().unwrap(); - - // /home/fernando/misti/docs/markdown/en/docs/latest/index.md - let input_file = file - .canonicalize() - .expect(format!("Expected file {:?} to exist", file).as_str()); - - // /home/fernando/misti/docs/static - let output_folder = output_folder.canonicalize().unwrap(); - - // en/docs/latests/index.md - let relative_input_file = input_file.strip_prefix(input_folder).unwrap(); - - let mut output_file = output_folder.clone(); - output_file.push(relative_input_file); - output_file.set_extension("html"); - - // - // Read MD from disk - // - let file_content_bytes = fs::read(&input_file).unwrap(); - let markdown_text = String::from_utf8(file_content_bytes).unwrap(); - - // - // Compile MD - // - let md_ast = markdown::to_mdast(&markdown_text, &markdown::ParseOptions::gfm()).unwrap(); - let html_text = md_ast.to_html(); - let sidebar_html = md_ast.generate_sidebar(); - - // Read template.html - let mut template_path = output_folder.clone(); - template_path.push("template.html"); - - let template_contents = fs::read(template_path).unwrap(); - let template_contents = String::from_utf8(template_contents).unwrap(); - - // Insert the markdown, sidebar and file tree into the template - let final_output = template_contents - .replace("{{markdown}}", &html_text) - .replace("{{sidebar}}", &sidebar_html) - .replace("{{pages}}", &file_tree_html); - - // - // Write to disk - // - File::create(&output_file) - .expect(format!("MD: Output file should be valid {:?}", &output_file).as_str()) - .write_all(final_output.as_bytes()) - .unwrap(); -} diff --git a/doc-generator/src/pages/mod.rs b/doc-generator/src/pages/mod.rs deleted file mode 100644 index b8a6a77..0000000 --- a/doc-generator/src/pages/mod.rs +++ /dev/null @@ -1,174 +0,0 @@ -use std::path::Path; - -use yaml_rust::Yaml; - -use crate::utils; - -mod md_compiler; - -pub enum Node<'a> { - File(File<'a>), - Folder(Folder<'a>), -} - -pub struct File<'a> { - /// Name of the file - path: &'a String, - /// Display name of the file - name: &'a String, -} - -pub struct Folder<'a> { - /// Name of the folder - path: &'a String, - /// Display name of the folder - name: &'a String, - /// If true, then there MUST be a `File {path: "index"}` in the `children` field - has_index: bool, - /// Sub files or folders - children: Box>>, -} - -/// Creates a `YAML::String` from a `&str` -macro_rules! y_str { - ($str:literal) => { - &Yaml::String(String::from($str)) - }; -} - -pub fn parse_yaml(values: &Yaml) -> Node { - let Yaml::Hash(table) = values - else {panic!("YAML: input MUST be an object")}; - - // Node path - let Yaml::String(path) = table.get(y_str!("path")).expect("YAML: Node MUST have a `path` key") - else { panic!("YAML: `path` MUST be a String") }; - - let Yaml::String(name) = table.get(y_str!("name")).expect("YAML: Node MUST have a `name` key") - else { panic!("YAML: `name` MUST be a String") }; - - let input_data = ( - table.get(y_str!("has_index")), - table.get(y_str!("children")), - ); - - match input_data { - (None, None) => Node::File(File { path, name }), - (has_index, Some(children)) => { - let has_index = match has_index { - Some(Yaml::Boolean(v)) => *v, - Some(_) => panic!("YAML: if key `has_index` exists, it MUST be a Boolean"), - None => false, - }; - - let Yaml::Array(children) = children - else {panic!("YAML: `children` MUST be an Array")}; - - let children_nodes: Vec = children - .into_iter() - .map(|values| parse_yaml(values)) - .collect(); - - Node::Folder(Folder { - path, - name, - has_index, - children: Box::new(children_nodes), - }) - } - _ => { - panic!("YAML: A Node is missing a `name` or `children` key") - } - } -} - -pub fn generate_pages_html(file_tree: &Node, current_path: &Path) -> String { - match file_tree { - Node::File(file) => { - if file.path == "index" { - format!( - "
  • - Index -
  • ", - current_path.to_str().unwrap() - ) - } else if file.path == "" { - String::from("") - } else { - format!( - "
  • - {} -
  • ", - current_path.to_str().unwrap(), - file.path, - file.name - ) - } - } - Node::Folder(folder) => { - let mut new_path = current_path.to_path_buf(); - new_path.push(folder.path); - - let sub_nodes_html: Vec = folder - .children - .iter() - .map(|n| generate_pages_html(n, &new_path)) - .collect(); - - // This is true for the root of the YAML file - if folder.path == "" { - format!("
      {}
    ", sub_nodes_html.join("")) - } else { - format!( - "
  • -
    {}
    -
      {}
    -
  • ", - folder.name, - sub_nodes_html.join("") - ) - } - } - } -} - -pub fn compile_md_to_html( - file_tree: &Node, - current_path: &Path, - input_folder: &Path, - output_folder: &Path, - file_tree_html: &String, -) { - match file_tree { - Node::File(file) if file.path != "" => { - let mut file_path = current_path.canonicalize().unwrap(); - file_path.push(format!("{}.md", file.path)); - - md_compiler::compile(&file_path, input_folder, output_folder, file_tree_html); - } - Node::File(_) => { - panic!("YAML: A file cannot have an empty `path` key") - } - Node::Folder(folder) if folder.path != "" => { - let mut new_path = current_path.canonicalize().unwrap(); - new_path.push(folder.path); - utils::ensure_folder_exists(&new_path, input_folder, output_folder) - .expect("SHOULD be able to create folder"); - - for node in folder.children.iter() { - compile_md_to_html(node, &new_path, input_folder, output_folder, file_tree_html); - } - } - Node::Folder(folder) => { - for node in folder.children.iter() { - compile_md_to_html( - node, - ¤t_path, - input_folder, - output_folder, - file_tree_html, - ); - } - } - } -} diff --git a/doc-generator/src/processor.rs b/doc-generator/src/processor.rs deleted file mode 100644 index 20d9785..0000000 --- a/doc-generator/src/processor.rs +++ /dev/null @@ -1,100 +0,0 @@ -use crate::pages::{compile_md_to_html, generate_pages_html, parse_yaml}; -use crate::utils; -use std::{ - fs, - path::Path, -}; -use yaml_rust::YamlLoader; - -enum EntryFound { - YamlFile, - OtherFile, - None, -} - -// Traverses the current path searching for a YAML file -pub fn search_config_file(current_path: &Path, input_folder: &Path, output_folder: &Path) { - // Iterate over all the files searching for a YAML file - let result = current_path - .read_dir() - .unwrap() - .fold(&EntryFound::None, |acc, next| { - let p = next.unwrap().path(); - let is_file = p.is_file(); - let ext = p.extension(); - - match (acc, is_file, ext) { - (EntryFound::YamlFile, true, Some(x)) if x == "yaml" => { - panic!("FOUND A SECOND YAML FILE!!!") - } - (EntryFound::YamlFile, _, _) => acc, - (EntryFound::OtherFile, true, Some(x)) if x == "yaml" => &EntryFound::YamlFile, - (EntryFound::None, true, Some(x)) if x == "yaml" => &EntryFound::YamlFile, - (EntryFound::None, true, Some(_)) => &EntryFound::OtherFile, - _ => acc, - } - }); - - match result { - // If a file other than a YAML file is found, panic - EntryFound::OtherFile => panic!( - "Found an orphan file without a YAML parent at {:?}", - current_path - ), - // Process the YAML file - EntryFound::YamlFile => process_yaml(current_path, input_folder, output_folder), - // No files found, recursively read children folders - EntryFound::None => { - for entry in current_path.read_dir().unwrap() { - // Should always succeed, and countain a folder - let x = entry.unwrap(); - let path = x.path(); - - utils::ensure_folder_exists(&path, input_folder, output_folder).unwrap(); - search_config_file(&path, input_folder, output_folder); - } - } - }; -} - -fn process_yaml(current_path: &Path, input_folder: &Path, output_folder: &Path) { - // - // Read YAML file - // - let mut yaml_path = current_path.canonicalize().unwrap(); - yaml_path.push("index.yaml"); - - let yaml_bytes = fs::read(yaml_path).expect("File index.yaml MUST exist"); - let yaml = String::from_utf8(yaml_bytes).expect("YAML index file MUST be valid UTF-8"); - - let yaml_docs = - YamlLoader::load_from_str(yaml.as_str()).expect("YAML file MUST contain valid YAML"); - let yaml = &yaml_docs[0]; - - // - // Parse YAML - // - let file_tree = parse_yaml(&yaml); - - // - // Generate File Tree HTML - // - let tree_html = { - let input_folder = input_folder.canonicalize().unwrap(); - let yaml_folder_temp = current_path.canonicalize().unwrap(); - let web_absolute_path = yaml_folder_temp.strip_prefix(input_folder).unwrap(); - - generate_pages_html(&file_tree, web_absolute_path) - }; - - // - // Compile MD to HTML - // - compile_md_to_html( - &file_tree, - current_path, - input_folder, - output_folder, - &tree_html, - ); -} diff --git a/doc-generator/src/sidebar/mod.rs b/doc-generator/src/sidebar/mod.rs deleted file mode 100644 index 3f2b447..0000000 --- a/doc-generator/src/sidebar/mod.rs +++ /dev/null @@ -1,90 +0,0 @@ -use markdown::mdast::{Heading, Node}; - -use crate::{generator::Printable, utils}; - -pub trait SidebarGenerator { - fn generate_sidebar(&self) -> String; -} - -impl SidebarGenerator for Node { - fn generate_sidebar(&self) -> String { - match self { - Node::Root(root) => { - let children_nodes = root - .children - .clone() - .into_iter() - .filter_map(|x| match x { - Node::Heading(h) if h.depth <= 3 => Some(h), - _ => None, - }) - .collect(); - - // A top level topic that contains other topics - let topic = extract_topics(&children_nodes, 0, 1); - - match topic { - Some((t, _)) => { - let html: String = t.children.iter().map(|x| x.get_html()).collect(); - format!("
      {}
    ", html) - } - None => String::from("D:"), - } - } - _ => panic!("??"), - } - } -} - -#[derive(Debug)] -struct Topic { - text: String, - children: Box>, -} - -impl Topic { - pub fn get_html(&self) -> String { - let extra = if self.children.len() > 0 { - let children_html: String = self.children.iter().map(|x| x.get_html()).collect(); - - format!("
      {}
    ", children_html) - } else { - String::from("") - }; - - let html_fragment_link = utils::to_html_fragment(&self.text); - format!( - "
  • {}{}
  • ", - html_fragment_link, self.text, extra - ) - } -} - -// Return the next heading and all its children -// current_level: the depth of the heading to match -fn extract_topics<'a>( - headings: &'a Vec, - current_pos: usize, - current_level: u8, -) -> Option<(Topic, usize)> { - match headings.get(current_pos) { - Some(h) if h.depth == current_level => { - let mut new_vec = Vec::new(); - let mut next_pos = current_pos + 1; - - while let Some((topic, next)) = extract_topics(headings, next_pos, current_level + 1) { - new_vec.push(topic); - next_pos = next; - } - - let title = h.get_text(); - let topic = Topic { - text: title, - children: Box::new(new_vec), - }; - - Some((topic, next_pos)) - } - _ => None, - } -} diff --git a/doc-generator/src/utils.rs b/doc-generator/src/utils.rs deleted file mode 100644 index ac2720e..0000000 --- a/doc-generator/src/utils.rs +++ /dev/null @@ -1,66 +0,0 @@ -use std::{fs, path::Path}; - -use markdown::mdast::Node; - -use crate::generator::Printable; - -pub fn to_html_fragment(text: &String) -> String { - text.clone().replace(" ", "-") -} - -pub fn collect_children_html(vec: &Vec) -> String { - let mut result = Vec::::new(); - - for node in vec { - result.push(node.to_html()) - } - - result.into_iter().collect() -} - -pub fn collect_children_text(vec: &Vec) -> String { - let mut result = Vec::::new(); - - for node in vec { - result.push(node.get_text()) - } - - result.join("-") -} - -pub fn ensure_folder_exists( - folder: &Path, - input_folder: &Path, - output_folder: &Path, -) -> Result<(), String> { - // /home/fernando/misti/docs/markdown - let input_folder = input_folder.canonicalize().unwrap(); - - // /home/fernando/misti/docs/static - let output_folder = output_folder.canonicalize().unwrap(); - - // /home/fernando/misti/docs/markdown/en/ - let full_input_folder = folder.canonicalize().unwrap(); - - let relative_new_folder = full_input_folder.strip_prefix(input_folder).unwrap(); - - let mut full_output_folder = output_folder.clone(); - full_output_folder.push(relative_new_folder); - - // println!("Ensuring that folder exists:\n{:?}", full_output_folder); - - // If this is a "top-level" folder, remove all its contents, if it exists - if full_output_folder.is_dir() { - // println!("| Removing..."); - let _ = fs::remove_dir_all(&full_output_folder); - } - - // Create folder - match fs::create_dir(&full_output_folder) { - Ok(_) => { - // println!("| done\n\n"); - Ok(()) - } - Err(_) => Err(format!("Error creating folder {:?}", full_output_folder)), - } -} diff --git a/doc-generator/static/.gitignore b/doc-generator/static/.gitignore deleted file mode 100644 index e364790..0000000 --- a/doc-generator/static/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -tailwind/output.css - diff --git a/doc-generator/static/favicon-16x16.png b/doc-generator/static/favicon-16x16.png deleted file mode 100644 index 50d7694a2fbe4a3f97585cf19399283d9760dfa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl481pinodYtHlYs&gODFF2b_$d@ zR$u2bu`PgCke5%4mn%@9H`TejWrkx|cieiZAB8)^IWu{qq?+1REM33w|AK1^wkmLR zDJ)vMcfIP9Z*rnNCyFh<|NS`U^PWB5cRuKOvbE{yyf&weImezI`nUARrv0Bq&E;yo zJo3t#W+>e2ma%)^yTTP!;z4_F-Tz%)d1=?u#>L(hLB?k`ZSZkU*_)$rPwd_GqLW)b zOf0xCg|T)0)OlGSx*z2<+l$Qpctgh`)W80l`0~1q(~P+fEk4xfv~Q8=^T7B=SG&8p zgVK1V9 z^R?KYmATS($Bm{&cjZjA*OR=r8BcE9Zv4X2;l6IkdXr6A^NN2leB}MPx!3f3&jKu>y>1o;7zCbKL%Q-rDc1smbZa~OM5UB28? zQNH$OG3(L;=R1$)-BPuE=pG#@ekq@0`9{tKJS`{1SPC9Fa;sf$(3tcrEADB={Zj!? zCQC?e72VbkG?X#P+ug-Wj%VvJAcwQSBeIx*fj<$18CTdZ&jbpxmw5WRvOj0x=2zrv z&A;CS6q@Ym;us=vIXOW=-oVIkv%#SoYjWQ7^vKMKDPYW#i?eg9^JjGH;80$?V8Vuu z6*G3Q2!}WXc}2NRi}#CjoG7@+!86h|G$zJ3)>(K>d!To;d-(Kt|M?dWT;R|+kdc#= zb?n57)N>~?5;Iv%j@~+Utxt5-^?L^|&Nz7T=23|(`+$wBrJMI!D=XjGdMs;B#=GaA z4}1`2;4tL5)#rbm59mDA64!{5l*E!$tK_0oAjM#0U}UUoV4`bi7-DE@Wo&F^XrgUk zU}a!nA7q|^q9HdwB{QuOw+27{{wqKYY9JecrGr&+enDkXW_m^mgI~S^oTH;qTAZqo zR+O5WQ@MQB2T+j7!gQph7AF^F7L;V>=P?uqxjQK&m1gFY=w{|UZasMvs89~3FgG!; zG%Yc?q_ilt2vw!Ogr_u6r8rz=eoAT%s*% p-?(z($eANDN7zp{cr5VJV|XPlSn|oqbSlsa22WQ%mvv4FO#lg1C*lAA diff --git a/doc-generator/static/favicon-32x32.png b/doc-generator/static/favicon-32x32.png deleted file mode 100644 index cd0524907aa020c0bf50ca171ad816202110d5e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V9d*Ob`Ho)PG(@xm{>Y-ueVd6 z#IgE1mx*lwyn?)ZV!T{|0==ou-7Pa5!@A?vOZ_O^8P1u>8zt4$wqoh}h5r{^Td-Au zqf24Y+P&*lpL~-O?Kx3w`Tg(5IiL6J`M&c(&y%f9Pv^BcZOl3L?9jiZM>g&MENU)S z^W~9O)-*%mUbl?h``#6!;4k`q2F-r`cX)_QxAK7NP$2-^7>KZJcJzeQ5EaMyGv?OrHnFKf2o8 z%^k#^%AY8h+-Fc16cVBAKXbyBMJeC*=dXD;d%237?>)9qpTd-ro#q-@uDf0Z883SM z>B-7fcm6-iOjSE3eRpr-i;8V;zbC%9(|W5fw_g5s*;|$v|ANSzpWc%$Us?XbT35G# zW1p|Z{;bTEwmWV#HM%Qjs=c1%z0G)X<96d0o(}hQOV*og%9>aFi{T^hPgnB|^$f~I z_qYFIUL>D>@BVVTO`vE<_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dwwy1o;IsFevG>vZ)H3eH{?nv$1<&;QGb_;p6e`SX50o~?gBT224z>$k=D(1YFgb{-dGobcYU;YW1Z@7e-) z-N!2xuilZ?dNQ;3(@&N~>T5W;XYKI$Rx?{{#!=f_NnaL*PJVHdYgKaPOaFa;B3~VL zihr9`9k=dcr>CgOyR2SqTcArAlf2zs>OJ-sJ_T|(3p^r=85sBzL6~uc{qjtpAbW|Y zuPgg=7H)n;zSjKvO+Y<~o-U3d7N?&Eg$Ex>5IEDdKx0v$&c<$$Ktb2!gIwR@0tDW~ z9=!MZUm0_s@`RpzyPf*?&C9FHt6c^DX*cM^nwh+*a^@2%lPKz~ywGvlTy)07A0m@n z0}K_!HXoU!FlE|AR;iXxTwYTH0z!SSU2zIsxNcs~2Bu!KTQ3V%aU=<=?wZvoHvLLg zNGHP`wQZFd*=I7-+i#yfw~nXj&e?hQ?0)@XXR~Zc+~syD_<;O_jBhtA)NR(xJaWY( z-DQdDjHh#ij1ByMeQIoVt(rDrm4o<$Ph0{qQ+F&YX$qL}TGMnv{{_QIGaO5ji@ggE z+&Y)bTqpGAP0{=8Gij^m)O56+gZ@pX6_x(is2knG1uKIp|$Dgj%YIEETf#I)O;u=wsl30>zm0Xkxq!^40 zjEr>+OmqzmLkvx=jE$`fO|%URtPBk7gUmBfH00)|WTsW(*5JqAe+8&P4P*nb{I*KY zFQ_caOwTA`@XJ?#b959+i&GWSic(W^Dwogt089W3vM?Pfsl~}fnFS@8`FRY*LGDfp zNu`-NCAyh;k6TY31uB$-Da=jGD@{vGE-5WaEkaf4FX1T-R4EQunV*uHgR1201hrP6 zlJKgKh?1bha)pAT{ItxRRE3htf>Z^d?ZBF+V$S1FJRF5#8XBkkPoMF88pOb?%&nKq zEvzi;Jz0cVSiz;iJc1ICAEQ%n|m}4IT@;^cY@=3zmFxGMx&vg2B_( K&t;ucLK6VP;shE1 diff --git a/doc-generator/static/favicon.ico b/doc-generator/static/favicon.ico deleted file mode 100644 index 9254f2f5d3465100ad9c86f80184ca536f87ca73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI232anF7{><-mP-q$2q@X2+>wA1Awr>`5Mq=gMxzLVH-r$6Xkv^?QBXvK8Z}W6 zIlMJ$Vj?P%K%pTOMNm-;sHFu2FQkBAfpwq1|8{3HeY|#$c2{C{liz-GeDlpW^WK{` z?|aXfW+u-J7+{cv=B*ya3^K+P7RK`JjH#fk9a8nvn;Y{O3cb;xiMbI}9{qK%6}kW1 z4CH1YHv|9W3~XAE*BPe$mp-J^H$Jz7YvBtB!+kIaTBc(!n{Dv1D=dV=;5qCg{SI6T zr)JZqWc$Lep->L4-~RM|>X*U*XqK$)OzYvxSf~KkU!6M}ePySjyQ=Lo0-*Pn064-4{v@@8-$yaj)Q+fH^y2er#Y8GZGJ%|0KtkRP0=KXh8dt)Oeb z9m6*A+WKbnM;`_7p097614C2k7=5j!+kJM*$ahJ_PO7@tzYBEj*}40T^w?DGNS}72 zz<(U(Q+7%^_7b(hZXfs&tnWujYdmSM<+QyX4uZ9*`6x={i|Wy90jEL2@k$4t0^5(I z&ZD-;^i`h@?d8Ms;M&zS-r#ZJ22=$>KqCFekVJtRFGbUj&}b)*B&Gk4tSrm_8?)0g^u8MO8d0j;gp51qqNK{# z$@tM29r~E-^eMkS1C7J_sC%eFfYBdmt?gA#z0SK!K+h#LPWhXpTiAA)lJuctu*2!s z`fcSbf8XfN_USJrzr-m!PI{8RT_*DMqw_-d7wfMpHP7+6xBXMr6Mk~qXq|Dd3$0rr ztDk8}U!y@jxV|gB5CZR;ls_7vZ`;30U0$aBw)W}kOz=Nr9HOk==N#%T0C$gLeV5E? zEQh_v6_?dTtqQu7;!Fj{8gU zS&wzlXEA6klrM^DjC6esN~6;eshb@6hqUVV`8>_Xl#G@+zGCLfzaf8<;MD#YoD8e+zjMqAU6ZK z8OY7R|91ww=+BsxWH_c@ZA?fFD~-vQEHx%i@?qvnlE_?XiRVR#MpYMkUYMubaLDs& zij9dBAWKlAVYP>xhZ)H^k&-IOvT*TQ$*P)AnJcTS3+5?bU6~)1H8;&GP`+m5oLZSz z7M0=r(vZr-`IS)_v9bVHD38RXS5Onpd!d+I6RypB;S%XZf0>gC6coY;h<~TWw_Lej zZU!_1JR9VLVyk-Q$?7v2{dEV$KJ|?JHOvRa*yHi%OdKWIhs(i@t=ebRO3ELAjv4A( zahWObE2z&S@II^r#g|m3XJ^Ib6*q3OxsWZG3j09)$cGuw23o_Fup0E-tNOh#5t_sY z?2HE+!{0@Eg5Ngz4xqTt?_hmw@ZDT8#|c}CQE!Xc)VS)kNuB0N-*D(1gM3iCe#!I` zq(fWH?K>b_iizG5q~|X~@8+1k+AW9pyC_#z<#0L#9w*8*7M*9ZqquUiahy}p)%B@% ziY1@$-ik8Ct6qflaKg7El*zAEARF7EhwFQyH2OMjI#<;GU1(+7kk)y-2qK_*eGgP8 zzDZu^v>p3{wr#SKwmKIUfb1WH_#BYF9gc$Pgx+;bwzf$tp85)?PU}i9TbGKYT|cmM z@HT11<+{OlAlrH$Bl}8kgmYvc*%x+$$`?Xf>pSf<2hV`)?1zysJC@g&CxPbTc&zN9 zSpSLxs?A}D&s!>Ex4N`f981@&?5zVk-W8^e9W(~%!KA3ON<(#c~-$KVZ+UA<@NhrafK6X7e^ z0iVMJNH{|2fc8<^$2|wV;aS)NGoZme9rf~8_sZ!I?N1V9b0>_n10mfK+Bo^1LT z_Ih=`y&x~$H{kvWf1))6*(6+K;W}9<-?!~#(?&af5gyS*>9ijwEp-dI@$-n z4yB-d$$XFx>){Sa_`HG6D9|%m1$2k=VJpa&SE0_h1ANe)XbWgR5Pkka$_L&1Z}aQ> z^XO<#qdn8bwvO~*(794%%TkfF%Y&{ExIan7*2$*pMPsIluNqSvHfHH@WA-01X3sQZ Vj&P<__c!L~)36ks9g3^g - - - - - - - - - - Misti - - - - - - - - - - - -
    -
    - - - - - - - - - - -

    Misti

    -
    - -

    - Docs -

    - -

    - Stdlib -

    - -
    - -
    -
    -

    - Typed. -
    - Expressive. -
    - Consistent. -
    - Friendly. -

    - -

    - Misti is yet another programming language that compiles to JavaScript. -

    - - - - -
    -
    - - - - diff --git a/doc-generator/static/logo.svg b/doc-generator/static/logo.svg deleted file mode 100644 index 086e5ce..0000000 --- a/doc-generator/static/logo.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/doc-generator/static/misti_logo.png b/doc-generator/static/misti_logo.png deleted file mode 100644 index af99aa209f36d41f8913e6cfc867eef0784c5489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45455 zcmeEuWmJ@1_xCUkN+=GEfG~)3DpFDdNJ%51ARW>nDK(4;BCUiV2uOE#j!KAvbf96$pXgIoim|YS@^YLm=#L-QPAT%V^THqx>Jd4c53udX0qY8j&VE!csQu zRf4o`m{AGskxQK(q0KdY+Lyt(StXyaX~St%2!c>VdQnpe%fbNzW%xH&(ZlndiMF- zJ`0_p?4>2pRbHwhYtdxSK25bb^1QQh`>k_tEM8DaT#D^>*qnW!6h+d`D7T1?I_iKr z$G43=8^pVTH249)f1x!(=85KoC-ISa&9xI zPG8nhak1!pBg}3qSHG$ykiPb3AuoRtyJ%y{+DV!|JQ*||>40LK@YsMo zRd;@3f2{m&U@&J{jEBdWpjlO<#nvWIqIUEpT7lVyb?u#UwLlEIMqpV9Im6>taz%|DjojzBh78Qak)?5;&t_PIOBv^;<&RSURkd{U?(dN<{py`y%BC2 zY}$3T{ccyn4xM@8XRPb0K}yQfsrZbK=!odZpJwBdQ=OjO
    %lHI13rKg8}sTKB# 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 cT*v)~ze-Ko`Bv-J3= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@zeit/schemas/2.29.0: - resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} - dev: true - - /accepts/1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - - /acorn-node/1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv/8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: true - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-regex/6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true - - /anymatch/2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /apache-crypt/1.2.6: - resolution: {integrity: sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==} - engines: {node: '>=8'} - dependencies: - unix-crypt-td-js: 1.1.4 - dev: true - - /apache-md5/1.1.8: - resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} - engines: {node: '>=8'} - dev: true - - /arch/2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: true - - /arg/5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - - /arr-diff/4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-flatten/1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-union/3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: true - - /array-unique/0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: true - - /assign-symbols/1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: true - - /async-each/1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - dev: true - - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /base/0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - - /basic-auth/2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /batch/0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - dev: true - - /bcryptjs/2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - dev: true - - /binary-extensions/1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - dev: true - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bindings/1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - requiresBuild: true - dependencies: - file-uri-to-path: 1.0.0 - dev: true - optional: true - - /boxen/7.0.0: - resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} - engines: {node: '>=14.16'} - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.0.1 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - dev: true - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /bytes/3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: true - - /cache-base/1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: true - - /camelcase-css/2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - - /camelcase/7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: true - - /chalk-template/0.4.0: - resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} - engines: {node: '>=12'} - dependencies: - chalk: 4.1.2 - dev: true - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk/5.0.1: - resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - - /chokidar/2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: true - - /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /class-utils/0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: true - - /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: true - - /clipboardy/3.0.0: - resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - arch: 2.2.0 - execa: 5.1.1 - is-wsl: 2.2.0 - dev: true - - /cliui/8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /collection-visit/1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colors/1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - dev: true - - /component-emitter/1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true - - /compressible/2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /compression/1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /concurrently/7.6.0: - resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} - engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} - hasBin: true - dependencies: - chalk: 4.1.2 - date-fns: 2.29.3 - lodash: 4.17.21 - rxjs: 7.8.0 - shell-quote: 1.8.0 - spawn-command: 0.0.2-1 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.1 - dev: true - - /connect/3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /content-disposition/0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} - dev: true - - /copy-descriptor/0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: true - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /cors/2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: true - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /cssesc/3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /date-fns/2.29.3: - resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} - engines: {node: '>=0.11'} - dev: true - - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /decode-uri-component/0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: true - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /define-property/0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: true - - /define-property/1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: true - - /define-property/2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: true - - /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: true - - /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: true - - /depd/2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /destroy/1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - - /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.8 - dev: true - - /didyoumean/1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true - - /dlv/1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true - - /duplexer/0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: true - - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /ee-first/1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /encodeurl/1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-html/1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - - /etag/1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - - /event-stream/3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - dev: true - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /expand-brackets/2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow/3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true - - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob/3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-url-parser/1.1.3: - resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} - dependencies: - punycode: 1.4.1 - dev: true - - /fastq/1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /faye-websocket/0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - dependencies: - websocket-driver: 0.7.4 - dev: true - - /file-uri-to-path/1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - requiresBuild: true - dev: true - optional: true - - /fill-range/4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /finalhandler/1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /for-in/1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: true - - /fragment-cache/0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true - - /fresh/0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /from/0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - dev: true - - /fsevents/1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.17.0 - dev: true - optional: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /get-value/2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: true - - /glob-parent/3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /graceful-fs/4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-value/0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value/1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values/0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: true - - /has-values/1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /http-auth/3.1.3: - resolution: {integrity: sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==} - engines: {node: '>=4.6.1'} - dependencies: - apache-crypt: 1.2.6 - apache-md5: 1.1.8 - bcryptjs: 2.4.3 - uuid: 3.4.0 - dev: true - - /http-errors/1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - dev: true - - /http-errors/2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - - /http-parser-js/0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - dev: true - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /inherits/2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: true - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /is-accessor-descriptor/0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-accessor-descriptor/1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-binary-path/1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - dependencies: - binary-extensions: 1.13.1 - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - - /is-data-descriptor/0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-data-descriptor/1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-descriptor/0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor/1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable/1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-glob/3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number/3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-port-reachable/4.0.0: - resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl/1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isobject/2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject/3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /kind-of/3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /lilconfig/2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - - /live-server/1.2.2: - resolution: {integrity: sha512-t28HXLjITRGoMSrCOv4eZ88viHaBVIjKjdI5PO92Vxlu+twbk6aE0t7dVIaz6ZWkjPilYFV6OSdMYl9ybN2B4w==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - chokidar: 2.1.8 - colors: 1.4.0 - connect: 3.7.0 - cors: 2.8.5 - event-stream: 3.3.4 - faye-websocket: 0.11.4 - http-auth: 3.1.3 - morgan: 1.10.0 - object-assign: 4.1.1 - opn: 6.0.0 - proxy-middleware: 0.15.0 - send: 0.18.0 - serve-index: 1.9.1 - transitivePeerDependencies: - - supports-color - dev: true - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /map-cache/0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-stream/0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - dev: true - - /map-visit/1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: true - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mime-db/1.33.0: - resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} - engines: {node: '>= 0.6'} - dev: true - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types/2.1.18: - resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.33.0 - dev: true - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mime/1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimist/1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /mixin-deep/1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - - /morgan/1.10.0: - resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} - engines: {node: '>= 0.8.0'} - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.3.0 - on-headers: 1.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /nan/2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} - requiresBuild: true - dev: true - optional: true - - /nanoid/3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - - /normalize-path/2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true - - /object-copy/0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - - /object-hash/3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: true - - /object-visit/1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /object.pick/1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /on-finished/2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /on-finished/2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /on-headers/1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: true - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /opn/6.0.0: - resolution: {integrity: sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==} - engines: {node: '>=8'} - deprecated: The package has been renamed to `open` - dependencies: - is-wsl: 1.1.0 - dev: true - - /parseurl/1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - - /pascalcase/0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: true - - /path-dirname/1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-is-inside/1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /path-to-regexp/2.2.1: - resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} - dev: true - - /pause-stream/0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - dependencies: - through: 2.3.8 - dev: true - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /posix-character-classes/0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: true - - /postcss-import/14.1.0_postcss@8.4.21: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - dev: true - - /postcss-js/4.0.1_postcss@8.4.21: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.21 - dev: true - - /postcss-load-config/3.1.4_postcss@8.4.21: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.21 - yaml: 1.10.2 - dev: true - - /postcss-nested/6.0.0_postcss@8.4.21: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 - dev: true - - /postcss-selector-parser/6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true - - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - - /proxy-middleware/0.15.0: - resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} - engines: {node: '>=0.8.0'} - dev: true - - /punycode/1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true - - /punycode/2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - - /range-parser/1.2.0: - resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} - engines: {node: '>= 0.6'} - dev: true - - /range-parser/1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: true - - /read-cache/1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: true - - /readable-stream/2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /readdirp/2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10 - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - dev: true - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /regex-not/1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true - - /registry-auth-token/3.3.2: - resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - dev: true - - /registry-url/3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - dependencies: - rc: 1.2.8 - dev: true - - /remove-trailing-separator/1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: true - - /repeat-element/1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string/1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: true - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /resolve-url/0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /ret/0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: true - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /rxjs/7.8.0: - resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} - dependencies: - tslib: 2.5.0 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safe-regex/1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: true - - /send/0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /serve-handler/6.1.5: - resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} - dependencies: - bytes: 3.0.0 - content-disposition: 0.5.2 - fast-url-parser: 1.1.3 - mime-types: 2.1.18 - minimatch: 3.1.2 - path-is-inside: 1.0.2 - path-to-regexp: 2.2.1 - range-parser: 1.2.0 - dev: true - - /serve-index/1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /serve/14.2.0: - resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} - engines: {node: '>= 14'} - hasBin: true - dependencies: - '@zeit/schemas': 2.29.0 - ajv: 8.11.0 - arg: 5.0.2 - boxen: 7.0.0 - chalk: 5.0.1 - chalk-template: 0.4.0 - clipboardy: 3.0.0 - compression: 1.7.4 - is-port-reachable: 4.0.0 - serve-handler: 6.1.5 - update-check: 1.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /set-value/2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - - /setprototypeof/1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: true - - /setprototypeof/1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shell-quote/1.8.0: - resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} - dev: true - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /snapdragon-node/2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util/3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true - - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: true - - /source-map/0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - - /spawn-command/0.0.2-1: - resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} - dev: true - - /split-string/3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - - /split/0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - dependencies: - through: 2.3.8 - dev: true - - /static-extend/0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true - - /statuses/1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: true - - /statuses/2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - - /stream-combiner/0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - dependencies: - duplexer: 0.1.2 - dev: true - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: true - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-ansi/7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /tailwindcss/3.2.7: - resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - arg: 5.0.2 - chokidar: 3.5.3 - color-name: 1.1.4 - detective: 5.2.1 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.12 - glob-parent: 6.0.2 - is-glob: 4.0.3 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.1_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 - postcss-selector-parser: 6.0.11 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 - transitivePeerDependencies: - - ts-node - dev: true - - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /to-object-path/0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /to-regex-range/2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /to-regex/3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - - /toidentifier/1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - - /tree-kill/1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /tslib/2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: true - - /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: true - - /union-value/1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - - /unix-crypt-td-js/1.1.4: - resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} - dev: true - - /unpipe/1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - - /unset-value/1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - - /upath/1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - dev: true - - /update-check/1.5.4: - resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} - dependencies: - registry-auth-token: 3.3.2 - registry-url: 3.1.0 - dev: true - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true - - /urix/0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /use/3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - - /utils-merge/1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true - - /vary/1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - - /websocket-driver/0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - dev: true - - /websocket-extensions/0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - dev: true - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /widest-line/4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - dev: true - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi/8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - dev: true - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - - /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs/17.7.1: - resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true diff --git a/doc-generator/static/styles/global.css b/doc-generator/static/styles/global.css deleted file mode 100644 index 55091aa..0000000 --- a/doc-generator/static/styles/global.css +++ /dev/null @@ -1,308 +0,0 @@ -:root { - --js-color: #FFE70B; - --dark-color: #0f0f0f; - --light-color: white; - --error-color: #ff3b3b; - --error-text-color: #410002; - --error-bg-color: #ffdad6; - - --c1: #e7b711; - --c2: #038dce; - --c3: #ffaed7; - --c4: #f44336; - --c5: #39b487; - --c3-transparent: #772957; /* rgba(252, 168, 209, 0.35); */ - - --bg-color: var(--dark-color); - --color: #dedede; - --code-bg-color: #151515; - --code-color: #bababa; - --border-color: #72787e; - - /* C1 Material Colors */ - --c1-primary: #f1c01f; - - /* C2 Material Colors */ - --c2-primary: #90ccff; - --c2-on-primary: #003351; - --c2-primary-container: #004b72; - --c2-on-primary-container: #cce5ff; - --c2-surface-variant: #41474d; - --c2-on-surface-variant: #c1c7ce; - - /* C3 Material Colors */ - --c3-primary: #ffaed7; - --c3-on-primary: #5b113f; - --c3-primary-container: #782957; - --c3-on-primary-container: #ffd8e9; - - /* C4 Material Colors */ - --c4-primary: #ffb4a8; - - - /* C5 Material Colors */ - --c5-primary: #66dcac; - --c5-on-primary: #003825; - --c5-primary-container: #005137; - --c5-on-primary-container: #83f9c7; -} - -@media (prefers-color-scheme: light) { - :root { - --c2: #038dce; - - --bg-color: #fffdfc; - --color: #202020; - --code-bg-color: #fdf6e3; - --code-color: #073642; - --border-color: rgba(64, 64, 64, 0.25); - - --c3-transparent: #ffd8ea; - - /* C1 Material Colors */ - --c1-primary: #765b00; - - /* C2 Material Colors */ - --c2-primary: #006397; - --c2-on-primary: #ffffff; - --c2-primary-container: #cce5ff; - --c2-on-primary-container: #001e31; - --c2-surface-variant: #dde3ea; - --c2-on-surface-variant: #41474d; - - /* C3 Material Colors */ - --c3-primary: #954170; - --c3-on-primary: #ffffff; - --c3-primary-container: #ffd8e9; - --c3-on-primary-container: #3c0027; - - /* C4 Material Colors */ - --c4-primary: #bc1714; - - /* C5 Material Colors */ - --c5-primary: #006c4b; - --c5-on-primary: #ffffff; - --c5-primary-container: #83f9c7; - --c5-on-primary-container: #002114; - - } - -} - -html { - font-size: 18px; -} - -.padded { - padding-left: 2rem; - border-left: solid 1px var(--border-color); -} - -@media screen and (max-width: 800px) { - html { - font-size: 18px; - } -} - -body { - font-family: Inter, sans-serif; - background-color: var(--bg-color); - color: var(--color); -} - -svg.railroad-diagram { - background-color: rgba(0,0,0,0) !important; -} - -svg.railroad-diagram path { - stroke: var(--c1) !important; -} - -svg.railroad-diagram rect { - stroke: var(--c2) !important; - fill: var(--c2) !important; -} - -svg.railroad-diagram g.non-terminal rect { - stroke: var(--c4) !important; - fill: var(--c4) !important; -} - -svg.railroad-diagram text { - font-family: Inter, sans-serif !important; - font-weight: normal !important; - fill: white; -} - -g.terminal text { - font-family: Iosevka, sans-serif !important; -} - -.railroad-code { - text-align: center; - padding: 1rem; -} - -.railroad-code svg { - transform: scale(1.5); -} - -pre { - border: solid 1px rgba(150, 150, 150, 0.5); -} - -code, pre { - font-family: "SF Mono", Iosevka, "Source Code Pro", monospace !important; - font-variant-ligatures: discretionary-ligatures; -} - -.marked pre { - font-size: 0.85rem; -} - -.marked p { - line-height: 1.5rem; - text-align: justify; - margin: 1rem 0; -} - -.marked h1 { - font-weight: 900; - margin-top: 3rem; - margin-bottom: 2rem; - font-size: 2.25rem; -} - -.marked h2 { - font-size: 2rem; - font-weight: bold; - margin-top: 3rem; - margin-bottom: 1.5rem; -} - - -.marked h3 { - font-size: 1.75rem; - font-weight: 500; - margin-top: 2.5rem; - margin-bottom: 1.25rem; - text-decoration: underline; - - /* - position: sticky; - top: 0; - background-color: var(--bg-color); - */ -} - -.marked h4 { - font-size: 1.25rem; - font-weight: 300; - margin-top: 2rem; - margin-bottom: 1rem; -} - -.marked table { - text-align: center; - border-collapse: collapse; -} - -.marked table, th, td { - border: solid 1px rgba(150, 150, 150, 1); -} - -.marked table td, th { - padding: 0.25rem 0.5rem; -} - -.md-modifier { - border-radius: 0.75rem; - padding: 1rem; - margin: 2rem 0; -} - -.md-modifier > div { - padding-bottom: 1rem; - font-weight: 500; -} - -.md-info { - border: solid 2px var(--js-color); -} - -.md-info > div { - color: var(--js-color); -} - -@media (prefers-color-scheme: light) { - .md-info { - background-color: var(--js-color); - } - - .md-info > div { - color: var(--dark-color); - font-weight: 600; - } -} - - -.md-warning { - border: solid 3px var(--c4); -} - -.md-warning > div { - color: var(--c4); -} - -@media (prefers-color-scheme: light) { - .md-warning { - background-color: var(--error-bg-color); - color: var(--error-text-color); - } - - .md-warning > div { - color: var(--c4); - font-weight: 600; - } -} - - -.md-implemented { - border: solid 3px var(--c2-primary); -} - -.md-implemented > div { - color: var(--c2-primary); -} - - -@media screen and (max-width: 800px) { - .marked p { - line-height: 1.25rem; - } - - .marked h1 { - margin-top: 1rem; - margin-bottom: 0.75rem; - } - - pre[class*="language-"].line-numbers { - font-size: 0.8rem; - } - - .railroad-code svg { - display: none; - transform: scale(1); - } -} - -/* Used by headers generated at src/generator/heading.rs */ -.heading-linked :hover::after{ - color: var(--c2-primary); - content: "#"; - display: inline-block; - font-size: 0.7em; - line-height: 1; - margin-left: 4px; - text-decoration: none; -} diff --git a/doc-generator/static/styles/xcode-colors.css b/doc-generator/static/styles/xcode-colors.css deleted file mode 100644 index 37c6ca0..0000000 --- a/doc-generator/static/styles/xcode-colors.css +++ /dev/null @@ -1,263 +0,0 @@ -/* colors from: https://raw.githubusercontent.com/WhiteVermouth/XcodeTheme/master/assets/color-palette.png */ -:root { - --code-theme-color: #dedede; - --code-theme-bg-color: #1f1f24; - --code-theme-bg-color_selection: #515b70; - --code-theme-color_selection: inherit; - - --code-theme-comment: #6c7986; - - /* number */ - --code-theme-c1: #d0bf69; - /* keyword */ - --code-theme-c2: #fc5fa3; - /* ? */ - --code-theme-c3: #39adb5; - /* string */ - --code-theme-c4: #fc6a5d; - /* declaration */ - --code-theme-c5: #5dd8ff; - /* proyect function */ - --code-theme-c6: #67b7a4; /*#e53935;*/ - - --code-theme-punctuation: #dedede; -} - -@media (prefers-color-scheme: light) { - :root { - --code-theme-color: #3a3a3a; - --code-theme-bg-color: #ffffff; - --code-theme-bg-color_selection: #a4cdff; - --code-theme-color_selection: inherit; - - --code-theme-comment: #5d6c79; - - /* number */ - --code-theme-c1: #1c00cf; - /* keyword */ - --code-theme-c2: #9b2393; - --code-theme-c3: #39adb5; - /* string */ - --code-theme-c4: #c41a16; - /* declaration */ - --code-theme-c5: #0f68a0; - --code-theme-c6: #326d74; /*#e53935;*/ - - --code-theme-punctuation: #202020; - } -} - -code[class*="language-"], -pre[class*="language-"] { - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - color: var(--code-theme-color); - background: var(--code-theme-bg-color); - font-size: 0.8em; - line-height: 1.5em; - border-radius: 0.3em; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -code[class*="language-"]::-moz-selection, -pre[class*="language-"]::-moz-selection, -code[class*="language-"] ::-moz-selection, -pre[class*="language-"] ::-moz-selection { - background: var(--code-theme-bg-color_selection); - color: var(--code-theme-color_selection); -} - -code[class*="language-"]::selection, -pre[class*="language-"]::selection, -code[class*="language-"] ::selection, -pre[class*="language-"] ::selection { - background: var(--code-theme-bg-color_selection); - color: var(--code-theme-color_selection); -} - -:not(pre) > code[class*="language-"] { - white-space: normal; - border-radius: 0.2em; - padding: 0.1em; -} - -:not(pre) > code { - /* border: solid 1px var(--border-color); */ - background-color: var(--code-theme-bg-color); - padding: 0 0.25rem; - border-radius: 5px; -} - -pre[class*="language-"] { - overflow: auto; - position: relative; - margin: 0.5em 0; - padding: 0.75em 0.75em; -} - -.language-css > code, -.language-sass > code, -.language-scss > code { - color: var(--code-theme-c1); -} - -[class*="language-"] .namespace { - opacity: 0.7; -} - -.token.atrule { - color: var(--code-theme-c2); -} - -.token.attr-name { - color: var(--code-theme-c3); -} - -.token.attr-value { - color: var(--code-theme-c4); -} - -.token.attribute { - color: var(--code-theme-c4); -} - -.token.boolean { - color: var(--code-theme-c2); -} - -.token.builtin { - color: var(--code-theme-c3); -} - -.token.cdata { - color: var(--code-theme-c3); -} - -.token.char { - color: var(--code-theme-c3); -} - -.token.class { - color: var(--code-theme-c3); -} - -.token.class-name { - color: var(--code-theme-c5); -} - -.token.comment { - color: var(--code-theme-comment); -} - -.token.constant { - color: var(--code-theme-c2); -} - -.token.deleted { - color: var(--code-theme-c6); -} - -.token.doctype { - color: var(--code-theme-comment); -} - -.token.entity { - color: var(--code-theme-c6); -} - -.token.function { - color: var(--code-theme-c2); -} - -.token.hexcode { - color: var(--code-theme-c1); -} - -.token.id { - color: var(--code-theme-c2); - font-weight: bold; -} - -.token.important { - color: var(--code-theme-c2); - font-weight: bold; -} - -.token.inserted { - color: var(--code-theme-c3); -} - -.token.keyword { - color: var(--code-theme-c2); -} - -.token.number { - color: var(--code-theme-c1); -} - -.token.operator { - color: var(--code-theme-punctuation); -} - -.token.prolog { - color: var(--code-theme-comment); -} - -.token.property { - color: var(--code-theme-c3); -} - -.token.pseudo-class { - color: var(--code-theme-c4); -} - -.token.pseudo-element { - color: var(--code-theme-c4); -} - -.token.punctuation { - color: var(--code-theme-punctuation); -} - -.token.regex { - color: var(--code-theme-c5); -} - -.token.selector { - color: var(--code-theme-c6); -} - -.token.string { - color: var(--code-theme-c4); -} - -.token.symbol { - color: var(--code-theme-c2); -} - -.token.tag { - color: var(--code-theme-c6); -} - -.token.unit { - color: var(--code-theme-c1); -} - -.token.url { - color: var(--code-theme-c6); -} - -.token.variable { - color: var(--code-theme-c6); -} diff --git a/doc-generator/static/svg/kinky.svg b/doc-generator/static/svg/kinky.svg deleted file mode 100644 index 2a9e4ac..0000000 --- a/doc-generator/static/svg/kinky.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc-generator/static/svg/logo_black.svg b/doc-generator/static/svg/logo_black.svg deleted file mode 100644 index a74fd2a..0000000 --- a/doc-generator/static/svg/logo_black.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/doc-generator/static/svg/logo_color.svg b/doc-generator/static/svg/logo_color.svg deleted file mode 100644 index a812f7a..0000000 --- a/doc-generator/static/svg/logo_color.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/doc-generator/static/svg/rusty.svg b/doc-generator/static/svg/rusty.svg deleted file mode 100644 index e7ce555..0000000 --- a/doc-generator/static/svg/rusty.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/doc-generator/static/tailwind.config.js b/doc-generator/static/tailwind.config.js deleted file mode 100644 index 92e3213..0000000 --- a/doc-generator/static/tailwind.config.js +++ /dev/null @@ -1,50 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./**/*.html"], - theme: { - colors: { - transparent: 'transparent', - current: 'currentColor', - white: "#ffffff", - - "js-color": "var(--js-color)", - "dark-color": "var(--dark-color)", - "light-color": "var(--light-color)", - "error-color": "var(--error-color)", - "error-text-color": "var(--error-text-color)", - "error-bg-color": "var(--error-bg-color)", - "c1": "var(--c1)", - "c2": "var(--c2)", - "c3": "var(--c3)", - "c4": "var(--c4)", - "c5": "var(--c5)", - "c3-transparent": "var(--c3-transparent)", - "main-color": "var(--color)", - "code-bg-color": "var(--code-bg-color)", - "code-color": "var(--code-color)", - "border-color": "var(--border-color)", - - "c1-primary": "var(--c1-primary)", - - "c2-primary": "var(--c2-primary)", - "c2-on-primary": "var(--c2-on-primary)", - "c2-primary-container": "var(--c2-primary-container)", - "c2-on-primary-container": "var(--c2-on-primary-container)", - "c2-surface-variant": "var(--c2-surface-variant)", - "c2-on-surface-variant": "var(--c2-on-surface-variant)", - - "c3-primary": "var(--c3-primary)", - "c3-on-primary": "var(--c3-on-primary)", - "c3-primary-container": "var(--c3-primary-container)", - "c3-on-primary-container": "var(--c3-on-primary-container)", - "c4-primary": "var(--c4-primary)", - "c5-primary": "var(--c5-primary)", - "c5-on-primary": "var(--c5-on-primary)", - "c5-primary-container": "var(--c5-primary-container)", - "c5-on-primary-container": "var(--c5-on-primary-container)", - "bg-color": "var(--bg-color)", - }, - extend: {}, - }, - plugins: [], -} diff --git a/doc-generator/static/tailwind/input.css b/doc-generator/static/tailwind/input.css deleted file mode 100644 index bd6213e..0000000 --- a/doc-generator/static/tailwind/input.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file diff --git a/doc-generator/static/template.html b/doc-generator/static/template.html deleted file mode 100644 index d03930a..0000000 --- a/doc-generator/static/template.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - Misti - - - - - - - - - - - -
    -
    - - - - - - - - - - -

    Misti

    -
    - -

    - Docs -

    - -

    - Stdlib -

    - -
    - - - -
    - -
    - {{markdown}} -
    -
    - - - - - - diff --git a/compiler/src/ast_types.rs b/src/ast_types.rs similarity index 100% rename from compiler/src/ast_types.rs rename to src/ast_types.rs diff --git a/compiler/src/codegen/binding.rs b/src/codegen/binding.rs similarity index 100% rename from compiler/src/codegen/binding.rs rename to src/codegen/binding.rs diff --git a/compiler/src/codegen/expression.rs b/src/codegen/expression.rs similarity index 100% rename from compiler/src/codegen/expression.rs rename to src/codegen/expression.rs diff --git a/compiler/src/codegen/mod.rs b/src/codegen/mod.rs similarity index 100% rename from compiler/src/codegen/mod.rs rename to src/codegen/mod.rs diff --git a/compiler/src/codegen/module_ast.rs b/src/codegen/module_ast.rs similarity index 100% rename from compiler/src/codegen/module_ast.rs rename to src/codegen/module_ast.rs diff --git a/compiler/src/error_handling/lex_error.rs b/src/error_handling/lex_error.rs similarity index 100% rename from compiler/src/error_handling/lex_error.rs rename to src/error_handling/lex_error.rs diff --git a/compiler/src/error_handling/mod.rs b/src/error_handling/mod.rs similarity index 100% rename from compiler/src/error_handling/mod.rs rename to src/error_handling/mod.rs diff --git a/compiler/src/error_handling/syntax_error.rs b/src/error_handling/syntax_error.rs similarity index 100% rename from compiler/src/error_handling/syntax_error.rs rename to src/error_handling/syntax_error.rs diff --git a/compiler/src/file/mod.rs b/src/file/mod.rs similarity index 100% rename from compiler/src/file/mod.rs rename to src/file/mod.rs diff --git a/compiler/src/lexic/mod.rs b/src/lexic/mod.rs similarity index 100% rename from compiler/src/lexic/mod.rs rename to src/lexic/mod.rs diff --git a/compiler/src/lexic/scanner/identifier.rs b/src/lexic/scanner/identifier.rs similarity index 100% rename from compiler/src/lexic/scanner/identifier.rs rename to src/lexic/scanner/identifier.rs diff --git a/compiler/src/lexic/scanner/mod.rs b/src/lexic/scanner/mod.rs similarity index 100% rename from compiler/src/lexic/scanner/mod.rs rename to src/lexic/scanner/mod.rs diff --git a/compiler/src/lexic/scanner/new_comment.rs b/src/lexic/scanner/new_comment.rs similarity index 100% rename from compiler/src/lexic/scanner/new_comment.rs rename to src/lexic/scanner/new_comment.rs diff --git a/compiler/src/lexic/scanner/new_line.rs b/src/lexic/scanner/new_line.rs similarity index 100% rename from compiler/src/lexic/scanner/new_line.rs rename to src/lexic/scanner/new_line.rs diff --git a/compiler/src/lexic/scanner/number.rs b/src/lexic/scanner/number.rs similarity index 100% rename from compiler/src/lexic/scanner/number.rs rename to src/lexic/scanner/number.rs diff --git a/compiler/src/lexic/scanner/operator.rs b/src/lexic/scanner/operator.rs similarity index 100% rename from compiler/src/lexic/scanner/operator.rs rename to src/lexic/scanner/operator.rs diff --git a/compiler/src/lexic/scanner/string.rs b/src/lexic/scanner/string.rs similarity index 100% rename from compiler/src/lexic/scanner/string.rs rename to src/lexic/scanner/string.rs diff --git a/compiler/src/lexic/utils.rs b/src/lexic/utils.rs similarity index 100% rename from compiler/src/lexic/utils.rs rename to src/lexic/utils.rs diff --git a/compiler/src/lib.rs b/src/lib.rs similarity index 100% rename from compiler/src/lib.rs rename to src/lib.rs diff --git a/compiler/src/main.rs b/src/main.rs similarity index 100% rename from compiler/src/main.rs rename to src/main.rs diff --git a/compiler/src/repl/mod.rs b/src/repl/mod.rs similarity index 100% rename from compiler/src/repl/mod.rs rename to src/repl/mod.rs diff --git a/compiler/src/semantic/datatype.rs b/src/semantic/datatype.rs similarity index 100% rename from compiler/src/semantic/datatype.rs rename to src/semantic/datatype.rs diff --git a/compiler/src/semantic/guidance.md b/src/semantic/guidance.md similarity index 100% rename from compiler/src/semantic/guidance.md rename to src/semantic/guidance.md diff --git a/compiler/src/semantic/mod.rs b/src/semantic/mod.rs similarity index 100% rename from compiler/src/semantic/mod.rs rename to src/semantic/mod.rs diff --git a/compiler/src/semantic/type_check.rs b/src/semantic/type_check.rs similarity index 100% rename from compiler/src/semantic/type_check.rs rename to src/semantic/type_check.rs diff --git a/compiler/src/symbol_table.rs b/src/symbol_table.rs similarity index 100% rename from compiler/src/symbol_table.rs rename to src/symbol_table.rs diff --git a/compiler/src/syntax/binding.rs b/src/syntax/binding.rs similarity index 100% rename from compiler/src/syntax/binding.rs rename to src/syntax/binding.rs diff --git a/compiler/src/syntax/expression.rs b/src/syntax/expression.rs similarity index 100% rename from compiler/src/syntax/expression.rs rename to src/syntax/expression.rs diff --git a/compiler/src/syntax/grammar.md b/src/syntax/grammar.md similarity index 100% rename from compiler/src/syntax/grammar.md rename to src/syntax/grammar.md diff --git a/compiler/src/syntax/mod.rs b/src/syntax/mod.rs similarity index 100% rename from compiler/src/syntax/mod.rs rename to src/syntax/mod.rs diff --git a/compiler/src/token.rs b/src/token.rs similarity index 100% rename from compiler/src/token.rs rename to src/token.rs diff --git a/compiler/src/utils/mod.rs b/src/utils/mod.rs similarity index 100% rename from compiler/src/utils/mod.rs rename to src/utils/mod.rs