diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml index 695b4ccf..040f82ab 100644 --- a/.github/workflows/style.yaml +++ b/.github/workflows/style.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest container: node:21.5.0-alpine3.19 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: npm ci - run: npm run formatting @@ -21,15 +21,22 @@ jobs: runs-on: ubuntu-latest container: node:21.5.0-alpine3.19 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: npm ci - run: npm run spelling + audit: + runs-on: ubuntu-latest + container: node:21.5.0-alpine3.19 + steps: + - uses: actions/checkout@v4 + - run: npm ci + - run: npm --workspaces audit --audit-level high + clippy: runs-on: ubuntu-latest - container: rust:1.73.0-alpine3.18 + container: rust:1.73.0 steps: - - uses: actions/checkout@v3 - - run: apk add musl-dev + - uses: actions/checkout@v4 - run: rustup component add clippy - run: cargo clippy --all-targets diff --git a/.github/workflows/test-rs.yaml b/.github/workflows/test-cargo.yaml similarity index 63% rename from .github/workflows/test-rs.yaml rename to .github/workflows/test-cargo.yaml index dd65464e..1f57460a 100644 --- a/.github/workflows/test-rs.yaml +++ b/.github/workflows/test-cargo.yaml @@ -7,13 +7,12 @@ on: - "*" - .github/** - fixtures/** - - packages/rs/** + - packages/cargo/** jobs: unit: runs-on: ubuntu-latest - container: rust:1.73.0-alpine3.18 + container: rust:1.73.0 steps: - - uses: actions/checkout@v3 - - run: apk add build-base + - uses: actions/checkout@v4 - run: cargo test --workspace --all-targets diff --git a/.github/workflows/test-npm.yaml b/.github/workflows/test-npm.yaml new file mode 100644 index 00000000..0ba04857 --- /dev/null +++ b/.github/workflows/test-npm.yaml @@ -0,0 +1,21 @@ +on: + pull_request: {} + push: + branches: + - "*" + paths: + - "*" + - .github/** + - fixtures/** + - packages/npm/** + +jobs: + unit: + runs-on: ubuntu-latest + container: node:21.5.0-alpine3.19 + steps: + - uses: actions/checkout@v4 + - run: npm ci + - run: npm --workspaces run build + - run: npm --workspaces test + - run: ./packages/npm/jns42-generator/test-fixtures diff --git a/.github/workflows/test-ts.yaml b/.github/workflows/test-ts.yaml deleted file mode 100644 index b26182d0..00000000 --- a/.github/workflows/test-ts.yaml +++ /dev/null @@ -1,29 +0,0 @@ -on: - pull_request: {} - push: - branches: - - "*" - paths: - - "*" - - .github/** - - fixtures/** - - packages/ts/** - -jobs: - unit: - runs-on: ubuntu-latest - container: node:21.5.0-alpine3.19 - steps: - - uses: actions/checkout@v3 - - run: npm ci - - run: npm --workspaces run build - - run: npm --workspaces test - - run: ./packages/ts/jns42-generator/test-fixtures - - audit: - runs-on: ubuntu-latest - container: node:21.5.0-alpine3.19 - steps: - - uses: actions/checkout@v3 - - run: npm ci - - run: npm --workspaces audit --audit-level high diff --git a/.vscode/settings.json b/.vscode/settings.json index 06ebe3a8..0ec0a7e7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,11 @@ }, "editor.rulers": [100], "editor.defaultFormatter": "esbenp.prettier-vscode", - "rust-analyzer.check.command": "clippy" + "rust-analyzer.check.command": "clippy", + "[rust]": { + "editor.defaultFormatter": "rust-lang.rust-analyzer" + }, + "[toml]": { + "editor.defaultFormatter": "tamasfe.even-better-toml" + } } diff --git a/Cargo.lock b/Cargo.lock index 038e6615..ad88ae0e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,185 +3,1098 @@ version = 3 [[package]] -name = "anstream" -version = "0.6.4" +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", + "gimli", ] [[package]] -name = "anstyle" -version = "1.0.4" +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "bumpalo" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "906f7fe1da4185b7a282b2bc90172a496f9def1aca4545fe7526810741591e14" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351f9ad9688141ed83dfd8f5fb998a06225ef444b48ff4dc43de6d409b7fd10b" +dependencies = [ + "bitflags 1.3.2", + "clap_lex", + "is-terminal", + "strsim", + "termcolor", +] + +[[package]] +name = "clap_derive" +version = "4.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d7dc0031c3a59a04fc2ba395c8e2dd463cba1859275f065d225f6122221b45" +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 = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "h2" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.11", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 1.0.0", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[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.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.11", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.0.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +dependencies = [ + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.24", + "http 0.2.11", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.2", + "http 1.0.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.28", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "hyper 1.1.0", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jns42-generator" +version = "0.0.0" +dependencies = [ + "clap", + "futures-util", + "http-body-util", + "hyper 1.1.0", + "hyper-util", + "reqwest", + "serde", + "serde_json", + "serde_yaml", + "tokio", + "url", + "urlencoding", +] + +[[package]] +name = "js-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +dependencies = [ + "wasm-bindgen", +] + +[[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.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "reqwest" +version = "0.11.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.24", + "http 0.2.11", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustix" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] [[package]] -name = "anstyle-parse" -version = "0.2.2" +name = "rustls-pemfile" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "utf8parse", + "base64", ] [[package]] -name = "anstyle-query" -version = "1.0.0" +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "schannel" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "anstyle-wincon" -version = "3.0.1" +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "anstyle", - "windows-sys", + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] -name = "clap" -version = "4.4.8" +name = "security-framework-sys" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ - "clap_builder", - "clap_derive", + "core-foundation-sys", + "libc", ] [[package]] -name = "clap_builder" -version = "4.4.8" +name = "serde" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", + "serde_derive", ] [[package]] -name = "clap_derive" -version = "4.4.7" +name = "serde_derive" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ - "heck", "proc-macro2", "quote", "syn", ] [[package]] -name = "clap_lex" -version = "0.6.0" +name = "serde_json" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +dependencies = [ + "itoa", + "ryu", + "serde", +] [[package]] -name = "colorchoice" -version = "1.0.0" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] [[package]] -name = "form_urlencoded" -version = "1.2.0" +name = "serde_yaml" +version = "0.9.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" dependencies = [ - "percent-encoding", + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] -name = "heck" -version = "0.4.1" +name = "signal-hook-registry" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] [[package]] -name = "idna" -version = "0.4.0" +name = "slab" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "autocfg", ] [[package]] -name = "itoa" -version = "1.0.9" +name = "smallvec" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] -name = "jns42_generator" -version = "0.0.0" +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ - "clap", - "serde", - "serde_json", - "url", - "urlencoding", + "libc", + "windows-sys 0.48.0", ] [[package]] -name = "percent-encoding" -version = "2.3.0" +name = "strsim" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] -name = "proc-macro2" -version = "1.0.69" +name = "syn" +version = "2.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" dependencies = [ + "proc-macro2", + "quote", "unicode-ident", ] [[package]] -name = "quote" -version = "1.0.33" +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ - "proc-macro2", + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", ] [[package]] -name = "ryu" -version = "1.0.15" +name = "system-configuration-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] -name = "serde" -version = "1.0.192" +name = "tempfile" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" dependencies = [ - "serde_derive", + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", ] [[package]] -name = "serde_derive" -version = "1.0.192" +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", @@ -189,53 +1102,88 @@ dependencies = [ ] [[package]] -name = "serde_json" -version = "1.0.108" +name = "tokio-native-tls" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ - "itoa", - "ryu", - "serde", + "native-tls", + "tokio", ] [[package]] -name = "strsim" -version = "0.10.0" +name = "tokio-util" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] [[package]] -name = "syn" -version = "2.0.39" +name = "tower" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tower-layer" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "tinyvec_macros", + "log", + "pin-project-lite", + "tracing-core", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "tracing-core" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -252,11 +1200,17 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unsafe-libyaml" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" + [[package]] name = "url" -version = "2.4.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", "idna", @@ -270,10 +1224,145 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] -name = "utf8parse" -version = "0.2.1" +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[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-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" @@ -281,7 +1370,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -290,13 +1388,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 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", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -305,38 +1418,90 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] diff --git a/Cargo.toml b/Cargo.toml index 0aa19c92..fd4b4961 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,3 @@ [workspace] resolver = "2" -members = ["packages/rs/jns42-generator"] +members = ["packages/cargo/*"] diff --git a/JsonSchema42.code-workspace b/JsonSchema42.code-workspace index a54daf89..42021ff1 100644 --- a/JsonSchema42.code-workspace +++ b/JsonSchema42.code-workspace @@ -9,8 +9,12 @@ "path": "packages/oas/schema-intermediate", }, { - "name": "ts/jns42-generator", - "path": "packages/ts/jns42-generator", + "name": "npm/jns42-generator", + "path": "packages/npm/jns42-generator", + }, + { + "name": "cargo/jns42-generator", + "path": "packages/cargo/jns42-generator", }, ], "settings": { @@ -24,28 +28,22 @@ "typescript.tsdk": "./node_modules/typescript/lib", "npm.packageManager": "npm", "rust-analyzer.check.command": "clippy", - }, - "tasks": { - "version": "2.0.0", - "tasks": [ - { - "type": "process", - "label": "build", - "command": "npm", - "args": ["run", "build"], - "problemMatcher": ["$tsc"], - "group": { - "kind": "build", - "isDefault": true, - }, - }, - ], + "[rust]": { + "editor.defaultFormatter": "rust-lang.rust-analyzer", + }, + "[toml]": { + "editor.defaultFormatter": "tamasfe.even-better-toml", + }, }, "extensions": { "recommendations": [ "ryanluker.vscode-coverage-gutters", "esbenp.prettier-vscode", "streetsidesoftware.code-spell-checker", + "rust-lang.rust-analyzer", + "vadimcn.vscode-lldb", + "editorconfig.editorconfig", + "tamasfe.even-better-toml", ], "unwantedRecommendations": [], }, diff --git a/Makefile b/Makefile index ea312783..5d2b6be4 100644 --- a/Makefile +++ b/Makefile @@ -2,14 +2,15 @@ SHELL:=$(PREFIX)/bin/sh NPM_VERSION:=$(shell npx jns42-generator --version) build: \ - generated/ts/schema-intermediate \ - generated/ts/schema-draft-04 \ - generated/ts/schema-draft-2020-12 \ - generated/ts/schema-oas-v3-1 \ - generated/ts/swagger-v2 \ - generated/ts/oas-v3-0 \ - generated/ts/oas-v3-1 \ - + generated/npm/schema-intermediate \ + generated/npm/schema-draft-04 \ + generated/npm/schema-draft-2020-12 \ + generated/npm/schema-oas-v3-1 \ + generated/npm/swagger-v2 \ + generated/npm/oas-v3-0 \ + generated/npm/oas-v3-1 \ + + # Link the generated code, but don't save those links to the package lock npm install --no-package-lock rebuild: \ @@ -17,15 +18,15 @@ rebuild: \ clean: \ - rm --recursive --force generated/ts/schema-intermediate - rm --recursive --force generated/ts/schema-draft-04 - rm --recursive --force generated/ts/schema-draft-2020-12 - rm --recursive --force generated/ts/schema-oas-v3-1 \ - rm --recursive --force generated/ts/swagger-v2 \ - rm --recursive --force generated/ts/oas-v3-0 \ - rm --recursive --force generated/ts/oas-v3-1 \ + rm --recursive --force generated/npm/schema-intermediate + rm --recursive --force generated/npm/schema-draft-04 + rm --recursive --force generated/npm/schema-draft-2020-12 + rm --recursive --force generated/npm/schema-oas-v3-1 \ + rm --recursive --force generated/npm/swagger-v2 \ + rm --recursive --force generated/npm/oas-v3-0 \ + rm --recursive --force generated/npm/oas-v3-1 \ -generated/ts/schema-intermediate: packages/oas/schema-intermediate/src/schema.yaml +generated/npm/schema-intermediate: packages/oas/schema-intermediate/src/schema.yaml mkdir --parents $(@D) npx jns42-generator package file://${PWD}/$< \ @@ -33,7 +34,7 @@ generated/ts/schema-intermediate: packages/oas/schema-intermediate/src/schema.ya --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ -generated/ts/schema-draft-04: +generated/npm/schema-draft-04: mkdir --parents $(@D) npx jns42-generator package http://json-schema.org/draft-04/schema\# \ @@ -41,7 +42,7 @@ generated/ts/schema-draft-04: --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ -generated/ts/schema-draft-2020-12: +generated/npm/schema-draft-2020-12: mkdir --parents $(@D) npx jns42-generator package https://json-schema.org/draft/2020-12/schema \ @@ -49,7 +50,7 @@ generated/ts/schema-draft-2020-12: --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ -generated/ts/schema-oas-v3-1: +generated/npm/schema-oas-v3-1: mkdir --parents $(@D) npx jns42-generator package https://spec.openapis.org/oas/3.1/dialect/base \ @@ -57,8 +58,7 @@ generated/ts/schema-oas-v3-1: --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ - -generated/ts/swagger-v2: +generated/npm/swagger-v2: mkdir --parents $(@D) npx jns42-generator package http://swagger.io/v2/schema.json\# \ @@ -66,7 +66,7 @@ generated/ts/swagger-v2: --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ -generated/ts/oas-v3-0: +generated/npm/oas-v3-0: mkdir --parents $(@D) npx jns42-generator package https://spec.openapis.org/oas/3.0/schema/2021-09-28 \ @@ -74,7 +74,7 @@ generated/ts/oas-v3-0: --package-name @jns42/$(notdir $(basename $@)) \ --package-version ${NPM_VERSION} \ -generated/ts/oas-v3-1: +generated/npm/oas-v3-1: mkdir --parents $(@D) npx jns42-generator package https://spec.openapis.org/oas/3.1/schema/2022-10-07 \ diff --git a/cspell.config.yaml b/cspell.config.yaml new file mode 100644 index 00000000..14bda44f --- /dev/null +++ b/cspell.config.yaml @@ -0,0 +1,26 @@ +version: "0.2" +words: + - automagically + - Bulthuis + - camelcase + - clippy + - Deque + - endregion + - esbenp + - lcov + - luvdasun + - notdir + - presolved + - reqwest + - ryanluker + - serde + - structs + - tamasfe + - unalias + - urlencoding + - vadimcn +useGitignore: true +files: + - "**" +enableFiletypes: + - "*" diff --git a/cspell.json b/cspell.json deleted file mode 100644 index 0e486914..00000000 --- a/cspell.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": "0.2", - "words": [ - "Bulthuis", - "camelcase", - "clippy", - "endregion", - "esbenp", - "lcov", - "luvdasun", - "notdir", - "presolved", - "ryanluker", - "serde", - "structs", - "unalias", - "urlencoding" - ], - "useGitignore": true, - "files": ["**"], - "enableFiletypes": ["*"] -} diff --git a/fixtures/miscellaneous/people.jsonl b/fixtures/miscellaneous/people.jsonl new file mode 100644 index 00000000..7c77d128 --- /dev/null +++ b/fixtures/miscellaneous/people.jsonl @@ -0,0 +1,3 @@ +{"name": "John", "age": 30} +{"name": "Alice", "age": 25} +{"name": "Bob", "age": 35} diff --git a/fixtures/miscellaneous/people.yaml b/fixtures/miscellaneous/people.yaml new file mode 100644 index 00000000..0a900fad --- /dev/null +++ b/fixtures/miscellaneous/people.yaml @@ -0,0 +1,7 @@ +--- +{ "name": "John", "age": 30 } +--- +{ "name": "Alice", "age": 25 } +--- +name: Bob +age: 35 diff --git a/package-lock.json b/package-lock.json index f288829e..d6771c96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,8 +5,8 @@ "packages": { "": { "workspaces": [ - "packages/ts/*", - "generated/ts/*" + "packages/npm/*", + "generated/npm/*" ], "devDependencies": { "cspell": "^8.3.2", @@ -16,15 +16,13 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/cspell-bundled-dicts": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.3.2.tgz", - "integrity": "sha512-3ubOgz1/MDixJbq//0rQ2omB3cSdhVJDviERZeiREGz4HOq84aaK1Fqbw5SjNZHvhpoq+AYXm6kJbIAH8YhKgg==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/dict-ada": "^4.0.2", "@cspell/dict-aws": "^4.0.1", @@ -81,9 +79,8 @@ }, "node_modules/@cspell/cspell-json-reporter": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.3.2.tgz", - "integrity": "sha512-gHSz4jXMJPcxx+lOGfXhHuoyenAWQ8PVA/atHFrWYKo1LzKTbpkEkrsDnlX8QNJubc3EMH63Uy+lOIaFDVyHiQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-types": "8.3.2" }, @@ -93,18 +90,16 @@ }, "node_modules/@cspell/cspell-pipe": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.3.2.tgz", - "integrity": "sha512-GZmDwvQGOjQi3IjD4k9xXeVTDANczksOsgVKb3v2QZk9mR4Qj8c6Uarjd4AgSiIhu/wBliJfzr5rWFJu4X2VfQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.3.2.tgz", - "integrity": "sha512-w2Tmb95bzdEz9L4W5qvsP5raZbyEzKL7N2ksU/+yh8NEJcTuExmAl/nMnb3aIk7m2b+kPHnMOcJuwfUMLmyv4A==", "dev": true, + "license": "MIT", "dependencies": { "global-directory": "^4.0.1" }, @@ -114,324 +109,272 @@ }, "node_modules/@cspell/cspell-service-bus": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.3.2.tgz", - "integrity": "sha512-skTHNyVi74//W/O+f4IauDhm6twA9S2whkylonsIzPxEl4Pn3y2ZEMXNki/MWUwZfDIzKKSxlcREH61g7zCvhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-types": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.3.2.tgz", - "integrity": "sha512-qS/gWd9ItOrN6ZX5pwC9lJjnBoyiAyhxYq0GUXuV892LQvwrBmECGk6KhsA1lPW7JJS7o57YTAS1jmXnmXMEpg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@cspell/dict-ada": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz", - "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-aws": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.1.tgz", - "integrity": "sha512-NXO+kTPQGqaaJKa4kO92NAXoqS+i99dQzf3/L1BxxWVSBS3/k1f3uhmqIh7Crb/n22W793lOm0D9x952BFga3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-bash": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.3.tgz", - "integrity": "sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-companies": { "version": "3.0.31", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.31.tgz", - "integrity": "sha512-hKVpV/lcGKP4/DpEPS8P4osPvFH/YVLJaDn9cBIOH6/HSmL5LbFgJNKpMGaYRbhm2FEX56MKE3yn/MNeNYuesQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-cpp": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.3.tgz", - "integrity": "sha512-sqnriXRAInZH9W75C+APBh6dtben9filPqVbIsiRMUXGg+s02ekz0z6LbS7kXeJ5mD2qXoMLBrv13qH2eIwutQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-cryptocurrencies": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz", - "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-csharp": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz", - "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-css": { "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.12.tgz", - "integrity": "sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-dart": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz", - "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-data-science": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz", - "integrity": "sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-django": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz", - "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-docker": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz", - "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-dotnet": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz", - "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-elixir": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz", - "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-en_us": { "version": "4.3.15", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.15.tgz", - "integrity": "sha512-h1kwvU2w/e4ngXAbesU3z3GnK9kAUJVGRUcQJiBHGg4cY7+hsAD506JezoBD+kus2+cuYVkoeSKdi0FyqS7xyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-en-common-misspellings": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.0.tgz", - "integrity": "sha512-NOg8dlv37/YqLkCfBs5OXeJm/Wcfb/CzeOmOZJ2ZXRuxwsNuolb4TREUce0yAXRqMhawahY5TSDRJJBgKjBOdw==", - "dev": true + "dev": true, + "license": "CC BY-SA 4.0" }, "node_modules/@cspell/dict-en-gb": { "version": "1.1.33", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", - "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.3.tgz", - "integrity": "sha512-J9UP+qwwBLfOQ8Qg9tAsKtSY/WWmjj21uj6zXTI9hRLD1eG1uUOLcfVovAmtmVqUWziPSKMr87F6SXI3xmJXgw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-fonts": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz", - "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-fsharp": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz", - "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-fullstack": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz", - "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-gaming-terms": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz", - "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-git": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz", - "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-golang": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.5.tgz", - "integrity": "sha512-w4mEqGz4/wV+BBljLxduFNkMrd3rstBNDXmoX5kD4UTzIb4Sy0QybWCtg2iVT+R0KWiRRA56QKOvBsgXiddksA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-haskell": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz", - "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-html": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.5.tgz", - "integrity": "sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-html-symbol-entities": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz", - "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-java": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.6.tgz", - "integrity": "sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-k8s": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz", - "integrity": "sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-latex": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz", - "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-lorem-ipsum": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz", - "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-lua": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz", - "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-makefile": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz", - "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-node": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz", - "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-npm": { "version": "5.0.15", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.15.tgz", - "integrity": "sha512-sX0X5YWNW54F4baW7b5JJB6705OCBIZtUqjOghlJNORS5No7QY1IX1zc5FxNNu4gsaCZITAmfMi4ityXEsEThA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-php": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.5.tgz", - "integrity": "sha512-9r8ao7Z/mH9Z8pSB7yLtyvcCJWw+/MnQpj7xGVYzIV7V2ZWDRjXZAMgteHMJ37m8oYz64q5d4tiipD300QSetQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-powershell": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.3.tgz", - "integrity": "sha512-lEdzrcyau6mgzu1ie98GjOEegwVHvoaWtzQnm1ie4DyZgMr+N6D0Iyj1lzvtmt0snvsDFa5F2bsYzf3IMKcpcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-public-licenses": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz", - "integrity": "sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-python": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.11.tgz", - "integrity": "sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/dict-data-science": "^1.0.11" } }, "node_modules/@cspell/dict-r": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz", - "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-ruby": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.2.tgz", - "integrity": "sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-rust": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.2.tgz", - "integrity": "sha512-RhziKDrklzOntxAbY3AvNR58wnFGIo3YS8+dNeLY36GFuWOvXDHFStYw5Pod4f/VXbO/+1tXtywCC4zWfB2p1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-scala": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz", - "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { "version": "3.3.17", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.17.tgz", - "integrity": "sha512-IspxnhSbriGNME+jE/vveC0lK/0K/a0JSLa6ANvE+W1SuBwYPJqAChWjTgvWWYWC1ZEmnXdwfaNzB6fJNkc85w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-sql": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.3.tgz", - "integrity": "sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-svelte": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz", - "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-swift": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz", - "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-typescript": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.2.tgz", - "integrity": "sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dict-vue": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz", - "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspell/dynamic-import": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.3.2.tgz", - "integrity": "sha512-4t0xM5luA3yQhar2xWvYK4wQSDB2r0u8XkpzzJqd57MnJXd7uIAxI0awGUrDXukadRaCo0tDIlMUBemH48SNVg==", "dev": true, + "license": "MIT", "dependencies": { "import-meta-resolve": "^4.0.0" }, @@ -441,18 +384,16 @@ }, "node_modules/@cspell/strong-weak-map": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.3.2.tgz", - "integrity": "sha512-Mte/2000ap278kRYOUhiGWI7MNr1+A7WSWJmlcdP4CAH5SO20sZI3/cyZLjJJEyapdhK5vaP1L5J9sUcVDHd3A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -467,89 +408,71 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jns42/oas-v3-0": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/oas-v3-0/-/oas-v3-0-0.13.6.tgz", - "integrity": "sha512-2FiyRF3mAj40Jmw7QkXpVS4Yr868087Y5jKhSuHXuVy4NmxmWxG52dR6ZbSaMacKgZc+d2ibmBVpm2zAG8IEsw==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jns42/oas-v3-1": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/oas-v3-1/-/oas-v3-1-0.13.6.tgz", - "integrity": "sha512-ygncXn8Qc2hUOoyuQaLW2t6RQTyHXN99eojsWEy9VoZ0kndv//NVh9MRifSwyVYAUvHPKbzDonULUN/3a3OARg==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jns42/schema-draft-04": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/schema-draft-04/-/schema-draft-04-0.13.6.tgz", - "integrity": "sha512-uO6mfD5vDl3JdvFWKw/y98w8x66wInGeFsBv/XIoQVOMyRi98Cn1emWCfdNbrofIS1s19Bv4WMgSLTjw9tn9zw==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jns42/schema-draft-2020-12": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/schema-draft-2020-12/-/schema-draft-2020-12-0.13.6.tgz", - "integrity": "sha512-lj7fO9jT1vdhtfy5wSsvLYJzHNUkb+Hu2nXp+6CkWKi2ZLLLF05tUIjbqKG2vMkdIxJc/BDdXCNsLh0i5PJNHQ==", - "dependencies": { - "@types/node": "^20.11.13" - } - }, - "node_modules/@jns42/schema-intermediate": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/schema-intermediate/-/schema-intermediate-0.13.6.tgz", - "integrity": "sha512-781FtDaAnHXVI/Iw3we0wzvPJDo8vPgui8w8hgL/iO3JfcdXz9V7Ov6WorEzJ6Zw1Boi8Yna7JF8NKh6P5HQzw==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jns42/schema-oas-v3-1": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/schema-oas-v3-1/-/schema-oas-v3-1-0.13.6.tgz", - "integrity": "sha512-jeNq06Wq0Kd0B7jQINbs49qNNRJzv/wnw59ymI8DXV7MXAbvhRbnmjjP/b9kyL/drEYqA0Me1B/qMkEaVc1Eog==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jns42/swagger-v2": { "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@jns42/swagger-v2/-/swagger-v2-0.13.6.tgz", - "integrity": "sha512-mVGN4DQbnpGrjuyfUqKYhSYHEGvYfnTb6APCSsyzoH+k1o82SykDiLA2DtGtbmdndJjBAxyFZudameTonOSgfA==", + "license": "ISC", "dependencies": { "@types/node": "^20.11.13" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -557,9 +480,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -570,18 +492,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -592,9 +512,8 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -602,42 +521,36 @@ }, "node_modules/@tsconfig/node20": { "version": "20.1.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.2.tgz", - "integrity": "sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "20.11.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz", - "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/yargs": { "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "license": "MIT" }, "node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -647,9 +560,8 @@ }, "node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -659,30 +571,26 @@ }, "node_modules/array-timsort": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -692,9 +600,8 @@ }, "node_modules/c8": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", - "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", "dev": true, + "license": "ISC", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", @@ -717,17 +624,15 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -737,9 +642,8 @@ }, "node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -749,9 +653,8 @@ }, "node_modules/chalk-template": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz", - "integrity": "sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.2.0" }, @@ -764,9 +667,8 @@ }, "node_modules/clear-module": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", - "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^2.0.0", "resolve-from": "^5.0.0" @@ -780,8 +682,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -793,16 +694,14 @@ }, "node_modules/cliui/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -815,13 +714,11 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -833,8 +730,7 @@ }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -844,8 +740,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -860,8 +755,7 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -871,23 +765,20 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/commander": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" } }, "node_modules/comment-json": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", - "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", "dev": true, + "license": "MIT", "dependencies": { "array-timsort": "^1.0.3", "core-util-is": "^1.0.3", @@ -901,15 +792,13 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/configstore": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", @@ -926,21 +815,18 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -952,9 +838,8 @@ }, "node_modules/crypto-random-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -967,9 +852,8 @@ }, "node_modules/cspell": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.3.2.tgz", - "integrity": "sha512-V8Ub3RO/a5lwSsltW/ib3Z3G/sczKtSpBBN1JChzbSCfEgaY2mJY8JW0BpkSV+Ug6uJitpXNOOaxa3Xr489i7g==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-json-reporter": "8.3.2", "@cspell/cspell-pipe": "8.3.2", @@ -1003,9 +887,8 @@ }, "node_modules/cspell-config-lib": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.3.2.tgz", - "integrity": "sha512-Wc98XhBNLwDxnxCzMtgRJALI9a69cu3C5Gf1rGjNTKSFo9JYiQmju0Ur3z25Pkx9Sa86f+2IjvNCf33rUDSoBQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-types": "8.3.2", "comment-json": "^4.2.3", @@ -1017,9 +900,8 @@ }, "node_modules/cspell-dictionary": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.3.2.tgz", - "integrity": "sha512-xyK95hO2BMPFxIo8zBwGml8035qOxSBdga1BMhwW/p2wDrQP8S4Cdm/54//tCDmKn6uRkFQvyOfWGaX2l8WMEg==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "8.3.2", "@cspell/cspell-types": "8.3.2", @@ -1033,9 +915,8 @@ }, "node_modules/cspell-gitignore": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.3.2.tgz", - "integrity": "sha512-3Qc9P5BVvl/cg//s2s+zIMGKcoH5v7oOtRgwn4UQry8yiyo19h0tiTKkSR574FMhF5NtcShTnwIwPSIXVBPFHA==", "dev": true, + "license": "MIT", "dependencies": { "cspell-glob": "8.3.2", "find-up-simple": "^1.0.0" @@ -1049,9 +930,8 @@ }, "node_modules/cspell-glob": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.3.2.tgz", - "integrity": "sha512-KtIFxE+3l5dGEofND4/CdZffXP8XN1+XGQKxJ96lIzWsc01mkotfhxTkla6mgvfH039t7BsY/SWv0460KyGslQ==", "dev": true, + "license": "MIT", "dependencies": { "micromatch": "^4.0.5" }, @@ -1061,9 +941,8 @@ }, "node_modules/cspell-grammar": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.3.2.tgz", - "integrity": "sha512-tYCkOmRzJe1a6/R+8QGSwG7TwTgznLPqsHtepKzLmnS4YX54VXjKRI9zMARxXDzUVfyCSVdW5MyiY/0WTNoy+A==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "8.3.2", "@cspell/cspell-types": "8.3.2" @@ -1077,9 +956,8 @@ }, "node_modules/cspell-io": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.3.2.tgz", - "integrity": "sha512-WYpKsyBCQP0SY4gXnhW5fPuxcYchKYKG1PIXVV3ezFU4muSgW6GuLNbGuSfwv/8YNXRgFSN0e3hYH0rdBK2Aow==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-service-bus": "8.3.2" }, @@ -1089,9 +967,8 @@ }, "node_modules/cspell-lib": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.3.2.tgz", - "integrity": "sha512-wTvdaev/TyGB/ln6CVD1QbVs2D7/+QiajQ67S7yj1suLHM6YcNQQb/5sPAM8VPtj0E7PgwgPXf3bq18OtPvnFg==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-bundled-dicts": "8.3.2", "@cspell/cspell-pipe": "8.3.2", @@ -1121,9 +998,8 @@ }, "node_modules/cspell-trie-lib": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.3.2.tgz", - "integrity": "sha512-8qh2FqzkLMwzlTlvO/5Z+89fhi30rrfekocpight/BmqKbE2XFJQD7wS2ml24e7q/rdHJLXVpJbY/V5mByucCA==", "dev": true, + "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "8.3.2", "@cspell/cspell-types": "8.3.2", @@ -1135,9 +1011,8 @@ }, "node_modules/dot-prop": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -1150,20 +1025,17 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -1173,17 +1045,15 @@ }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1194,18 +1064,16 @@ }, "node_modules/fast-equals": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1219,24 +1087,21 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", - "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/file-entry-cache": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -1246,9 +1111,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1258,9 +1122,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1274,9 +1137,8 @@ }, "node_modules/find-up-simple": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1286,9 +1148,8 @@ }, "node_modules/flat-cache": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.0.tgz", - "integrity": "sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4", @@ -1300,15 +1161,13 @@ }, "node_modules/flatted": { "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/foreground-child": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -1322,32 +1181,28 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/gensequence": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-6.0.0.tgz", - "integrity": "sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-stdin": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1357,9 +1212,8 @@ }, "node_modules/glob": { "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -1379,9 +1233,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1391,9 +1244,8 @@ }, "node_modules/global-directory": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", "dependencies": { "ini": "4.1.1" }, @@ -1406,32 +1258,28 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-own-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -1439,15 +1287,13 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1461,9 +1307,8 @@ }, "node_modules/import-fresh/node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -1473,18 +1318,16 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-meta-resolve": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1492,18 +1335,16 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1511,40 +1352,35 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1554,48 +1390,42 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -1607,9 +1437,8 @@ }, "node_modules/istanbul-reports": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -1620,9 +1449,8 @@ }, "node_modules/jackspeak": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -1637,29 +1465,26 @@ } }, "node_modules/jns42-generator": { - "resolved": "packages/ts/jns42-generator", + "resolved": "packages/npm/jns42-generator", "link": true }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1672,18 +1497,16 @@ }, "node_modules/lru-cache": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -1696,18 +1519,16 @@ }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -1718,14 +1539,12 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "license": "ISC" }, "node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1738,27 +1557,24 @@ }, "node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -1771,9 +1587,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -1786,9 +1601,8 @@ }, "node_modules/parent-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", - "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.1.0" }, @@ -1798,36 +1612,32 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-scurry": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -1841,9 +1651,8 @@ }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1853,9 +1662,8 @@ }, "node_modules/prettier": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", - "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -1868,8 +1676,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -1884,39 +1690,36 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -1924,9 +1727,8 @@ }, "node_modules/rimraf": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.3.7" }, @@ -1942,8 +1744,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -1959,15 +1759,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1980,9 +1780,8 @@ }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1992,9 +1791,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2004,18 +1802,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -2025,9 +1821,8 @@ }, "node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2043,9 +1838,8 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2057,24 +1851,21 @@ }, "node_modules/string-width-cjs/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2084,9 +1875,8 @@ }, "node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2100,9 +1890,8 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2112,18 +1901,16 @@ }, "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2133,9 +1920,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -2147,9 +1933,8 @@ }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2157,9 +1942,8 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2177,9 +1961,8 @@ }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2189,9 +1972,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2201,14 +1983,12 @@ }, "node_modules/tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "license": "0BSD" }, "node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2218,18 +1998,16 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2240,14 +2018,12 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "license": "MIT" }, "node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -2260,9 +2036,8 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -2274,21 +2049,18 @@ }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", - "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2301,9 +2073,8 @@ }, "node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2319,9 +2090,8 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2336,18 +2106,16 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2360,15 +2128,13 @@ }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2380,9 +2146,8 @@ }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2392,15 +2157,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -2410,15 +2173,13 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/xdg-basedir": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2428,30 +2189,26 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "license": "ISC", "engines": { "node": ">= 14" } }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -2467,29 +2224,25 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yargs/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2501,8 +2254,7 @@ }, "node_modules/yargs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2512,9 +2264,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2522,7 +2273,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/ts/jns42-generator": { + "packages/npm/jns42-generator": { "version": "0.13.6", "license": "ISC", "dependencies": { @@ -2552,10 +2303,17 @@ "typescript": "^5.3.3" } }, - "packages/ts/jns42-generator/node_modules/type-fest": { + "packages/npm/jns42-generator/node_modules/@jns42/schema-intermediate": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/@jns42/schema-intermediate/-/schema-intermediate-0.13.6.tgz", + "integrity": "sha512-781FtDaAnHXVI/Iw3we0wzvPJDo8vPgui8w8hgL/iO3JfcdXz9V7Ov6WorEzJ6Zw1Boi8Yna7JF8NKh6P5HQzw==", + "dependencies": { + "@types/node": "^20.11.13" + } + }, + "packages/npm/jns42-generator/node_modules/type-fest": { "version": "4.10.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", - "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, diff --git a/package.json b/package.json index 99c8b047..6152ce63 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,12 @@ "private": true, "packageManager": "npm@10.3.0", "workspaces": [ - "packages/ts/*", - "generated/ts/*" + "packages/npm/*", + "generated/npm/*" ], "scripts": { "spelling": "cspell", - "formatting": "prettier --check *", - "build": "tsc --build" + "formatting": "prettier --check *" }, "devDependencies": { "cspell": "^8.3.2", diff --git a/packages/cargo/jns42-generator/.vscode/launch.json b/packages/cargo/jns42-generator/.vscode/launch.json new file mode 100644 index 00000000..a1e5bd3d --- /dev/null +++ b/packages/cargo/jns42-generator/.vscode/launch.json @@ -0,0 +1,41 @@ +{ + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests", + "cargo": { + "args": ["test", "--no-run", "--lib", "--package=jns42-generator", "--all-targets"], + "filter": { + "name": "jns42-generator", + "kind": "lib" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "package file", + "cargo": { + "args": ["build", "--bin=jns42_generator", "--package=jns42-generator"], + "filter": { + "name": "jns42_generator", + "kind": "bin" + } + }, + "args": [ + "package", + "file://${file}", + "--package-directory", + ".package/file/${fileBasenameNoExtension}", + "--package-name", + "${fileBasenameNoExtension}", + "--package-version", + "0.0.0" + ], + "cwd": "${workspaceFolder}" + } + ] +} diff --git a/packages/rs/jns42-generator/.vscode/tasks.json b/packages/cargo/jns42-generator/.vscode/tasks.json similarity index 100% rename from packages/rs/jns42-generator/.vscode/tasks.json rename to packages/cargo/jns42-generator/.vscode/tasks.json diff --git a/packages/cargo/jns42-generator/Cargo.toml b/packages/cargo/jns42-generator/Cargo.toml new file mode 100644 index 00000000..61ce1afe --- /dev/null +++ b/packages/cargo/jns42-generator/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "jns42-generator" +version = "0.0.0" +edition = "2021" +description = "Generate structs and validators from json schema" +license = "ISC" +authors = ["Elmer Bulthuis"] +homepage = "https://www.JsonSchema42.org" +keywords = ["json", "schema", "generator"] +repository = "git@github.com:LuvDaSun/jns42-generator-ts" + +[badges] +maintenance = { status = "actively-developed" } + +[dependencies] +clap = { version = "~4.1.14", features = ["derive"] } +futures-util = "~0.3.30" +http-body-util = "~0.1.0" +hyper = { version = "~1.1.0", features = ["full"] } +hyper-util = { version = "~0.1.3", features = ["full"] } +reqwest = { version = "~0.11.24", features = ["stream"] } +serde = "~1.0.158" +serde_json = "~1.0.94" +serde_yaml = "~0.9.31" +tokio = { version = "~1.36.0", features = ["full"] } +url = "~2.3.1" +urlencoding = "~2.1.2" + +[lib] +path = "src/lib.rs" + +[[bin]] +name = "jns42_generator" +path = "src/main.rs" diff --git a/packages/rs/jns42-generator/README.md b/packages/cargo/jns42-generator/README.md similarity index 100% rename from packages/rs/jns42-generator/README.md rename to packages/cargo/jns42-generator/README.md diff --git a/packages/cargo/jns42-generator/src/documents/document.rs b/packages/cargo/jns42-generator/src/documents/document.rs new file mode 100644 index 00000000..8df928c0 --- /dev/null +++ b/packages/cargo/jns42-generator/src/documents/document.rs @@ -0,0 +1,8 @@ +use url::Url; + +pub trait Document { + fn get_document_uri(&self) -> &Url; + fn get_node_urls(&self) -> Box>; + + fn get_intermediate_node_entries(&self) -> Box>; +} diff --git a/packages/cargo/jns42-generator/src/documents/document_context.rs b/packages/cargo/jns42-generator/src/documents/document_context.rs new file mode 100644 index 00000000..2414b38f --- /dev/null +++ b/packages/cargo/jns42-generator/src/documents/document_context.rs @@ -0,0 +1,213 @@ +use crate::{ + documents::document, + models, + utils::{read_json_node::read_json_node, schema::discover_schema_uri, yaml::load_yaml}, +}; +use std::{ + collections::{HashMap, HashSet}, + rc::Rc, +}; +use url::Url; + +use super::{document::Document, meta::MetaSchemaId, schema_document::SchemaDocument}; + +type DocumentFactory = dyn Fn() -> Rc; + +pub struct DocumentContext { + /** + * document factories by schema identifier + */ + factories: HashMap>, + + /** + * all documents, indexed by document id + */ + documents: HashMap>, + + /** + * maps node urls to their documents + */ + node_documents: HashMap, + + /** + * all loaded nodes + */ + node_cache: HashMap, + + /** + * keep track of what we have been loading (so we only load it once) + */ + loaded: HashSet, +} + +impl DocumentContext { + pub fn new() -> Self { + Self { + factories: Default::default(), + documents: Default::default(), + node_documents: Default::default(), + node_cache: Default::default(), + loaded: Default::default(), + } + } + + pub fn register_factory(&mut self, schema: &MetaSchemaId, factory: Box) { + /* + * don't check if the factory is already registered here so we can + * override factories + */ + self.factories.insert(schema.clone(), factory); + } + + pub fn get_intermediate_data(&self) -> models::intermediate::IntermediateSchema { + models::intermediate::IntermediateSchema { + schemas: self.get_intermediate_schema_entries().cloned().collect(), + } + } + + pub fn get_intermediate_schema_entries( + &self, + ) -> Box + '_> { + Box::new( + self.documents + .iter() + .flat_map(|(_id, document)| document.get_intermediate_node_entries()), + ) + } + + pub fn get_document(&self, document_url: &Url) -> Rc { + let document = self.documents.get(document_url).unwrap().clone(); + + document + } + + pub fn get_document_for_node(&self, node_url: &Url) -> Rc { + let document_url = self.node_documents.get(node_url).unwrap(); + + self.get_document(document_url) + } + + pub async fn load_from_url( + &mut self, + retrieval_url: &Url, + given_url: &Url, + antecedent_url: Option<&Url>, + default_schema_uri: &MetaSchemaId, + ) { + let document_node = self.node_cache.get(retrieval_url); + + if document_node.is_none() { + // TODO remove unwrap + let document_node = load_yaml(retrieval_url).await.unwrap(); + + self.fill_node_cache(retrieval_url, document_node.unwrap()); + } + + self.load_from_cache(retrieval_url, given_url, antecedent_url, default_schema_uri); + } + + pub async fn load_from_document( + &mut self, + retrieval_url: &Url, + given_url: &Url, + antecedent_url: Option<&Url>, + document_node: serde_json::Value, + default_schema_uri: &MetaSchemaId, + ) { + if !self.node_cache.contains_key(retrieval_url) { + self.fill_node_cache(retrieval_url, document_node) + } + + self.load_from_cache(retrieval_url, given_url, antecedent_url, default_schema_uri) + .await; + } + + fn fill_node_cache(&mut self, retrieval_url: &Url, document_node: serde_json::Value) { + for (pointer, node) in read_json_node("".into(), document_node) { + let node_url = retrieval_url.join(&format!("#{}", pointer)).unwrap(); + assert!(self.node_cache.insert(node_url, node).is_none()) + } + } + + async fn load_from_cache( + &mut self, + retrieval_url: &Url, + given_url: &Url, + antecedent_url: Option<&Url>, + default_schema_uri: &MetaSchemaId, + ) { + if !self.loaded.insert(retrieval_url.clone()) { + return; + } + + let node = self.node_cache.get(retrieval_url).unwrap(); + + let schema_uri = discover_schema_uri(&node).unwrap_or_else(|| default_schema_uri.clone()); + let factory = self.factories.get(&schema_uri).unwrap(); + + let document = factory(); + let document_uri = document.get_document_uri(); + let document_uri_string = document_uri.as_str(); + + assert!(self + .documents + .insert(document_uri.clone(), document.clone()) + .is_none()); + + for node_url in document.get_node_urls() { + let document_node_url_previous = self.node_documents.get(node_url); + + if let Some(document_node_url_previous) = document_node_url_previous { + let document_node_url_previous_string = document_node_url_previous.as_str(); + + if document_node_url_previous_string.starts_with(document_uri_string) { + continue; + } + + if document_uri_string.starts_with(document_node_url_previous_string) { + assert!(self + .node_documents + .insert(node_url.clone(), document_uri.clone()) + .is_some()); + continue; + } + + unreachable!("duplicate node"); + } + assert!(self + .node_documents + .insert(node_url.clone(), document_uri.clone()) + .is_none()); + } + + todo!() + } + + async fn load_from_schema_document( + &mut self, + retrieval_url: &Url, + document: impl SchemaDocument, + default_schema_uri: &MetaSchemaId, + ) { + for embedded_document in document.get_embedded_documents(retrieval_url) { + self.load_from_document( + &embedded_document.retrieval_url, + &embedded_document.given_url, + Some(document.get_document_uri()), + embedded_document.node.clone(), + default_schema_uri, + ) + .await; + } + + for referenced_document in document.get_referenced_documents(retrieval_url) { + self.load_from_url( + &referenced_document.retrieval_url, + &referenced_document.given_url, + Some(document.get_document_uri()), + default_schema_uri, + ) + .await; + } + } +} diff --git a/packages/rs/jns42-generator/src/schemas/draft_04/loader.rs b/packages/cargo/jns42-generator/src/documents/draft_04/loader.rs similarity index 96% rename from packages/rs/jns42-generator/src/schemas/draft_04/loader.rs rename to packages/cargo/jns42-generator/src/documents/draft_04/loader.rs index 32c1037b..17b0248d 100644 --- a/packages/rs/jns42-generator/src/schemas/draft_04/loader.rs +++ b/packages/cargo/jns42-generator/src/documents/draft_04/loader.rs @@ -1,6 +1,6 @@ use super::meta::META_SCHEMA_ID; use super::selectors::Selectors; -use crate::schemas::loader::Loader; +use crate::documents::loader::Loader; use crate::utils::value_rc::ValueRc; use std::collections::HashMap; use std::rc::Rc; diff --git a/packages/rs/jns42-generator/src/schemas/draft_04/meta.rs b/packages/cargo/jns42-generator/src/documents/draft_04/meta.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_04/meta.rs rename to packages/cargo/jns42-generator/src/documents/draft_04/meta.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_04/mod.rs b/packages/cargo/jns42-generator/src/documents/draft_04/mod.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_04/mod.rs rename to packages/cargo/jns42-generator/src/documents/draft_04/mod.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_04/selectors.rs b/packages/cargo/jns42-generator/src/documents/draft_04/selectors.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_04/selectors.rs rename to packages/cargo/jns42-generator/src/documents/draft_04/selectors.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_06/loader.rs b/packages/cargo/jns42-generator/src/documents/draft_06/loader.rs similarity index 96% rename from packages/rs/jns42-generator/src/schemas/draft_06/loader.rs rename to packages/cargo/jns42-generator/src/documents/draft_06/loader.rs index 32c1037b..17b0248d 100644 --- a/packages/rs/jns42-generator/src/schemas/draft_06/loader.rs +++ b/packages/cargo/jns42-generator/src/documents/draft_06/loader.rs @@ -1,6 +1,6 @@ use super::meta::META_SCHEMA_ID; use super::selectors::Selectors; -use crate::schemas::loader::Loader; +use crate::documents::loader::Loader; use crate::utils::value_rc::ValueRc; use std::collections::HashMap; use std::rc::Rc; diff --git a/packages/rs/jns42-generator/src/schemas/draft_06/meta.rs b/packages/cargo/jns42-generator/src/documents/draft_06/meta.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_06/meta.rs rename to packages/cargo/jns42-generator/src/documents/draft_06/meta.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_06/mod.rs b/packages/cargo/jns42-generator/src/documents/draft_06/mod.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_06/mod.rs rename to packages/cargo/jns42-generator/src/documents/draft_06/mod.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_06/selectors.rs b/packages/cargo/jns42-generator/src/documents/draft_06/selectors.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_06/selectors.rs rename to packages/cargo/jns42-generator/src/documents/draft_06/selectors.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_07/loader.rs b/packages/cargo/jns42-generator/src/documents/draft_07/loader.rs similarity index 96% rename from packages/rs/jns42-generator/src/schemas/draft_07/loader.rs rename to packages/cargo/jns42-generator/src/documents/draft_07/loader.rs index 32c1037b..17b0248d 100644 --- a/packages/rs/jns42-generator/src/schemas/draft_07/loader.rs +++ b/packages/cargo/jns42-generator/src/documents/draft_07/loader.rs @@ -1,6 +1,6 @@ use super::meta::META_SCHEMA_ID; use super::selectors::Selectors; -use crate::schemas::loader::Loader; +use crate::documents::loader::Loader; use crate::utils::value_rc::ValueRc; use std::collections::HashMap; use std::rc::Rc; diff --git a/packages/rs/jns42-generator/src/schemas/draft_07/meta.rs b/packages/cargo/jns42-generator/src/documents/draft_07/meta.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_07/meta.rs rename to packages/cargo/jns42-generator/src/documents/draft_07/meta.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_07/mod.rs b/packages/cargo/jns42-generator/src/documents/draft_07/mod.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_07/mod.rs rename to packages/cargo/jns42-generator/src/documents/draft_07/mod.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_07/selectors.rs b/packages/cargo/jns42-generator/src/documents/draft_07/selectors.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_07/selectors.rs rename to packages/cargo/jns42-generator/src/documents/draft_07/selectors.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2019_09/loader.rs b/packages/cargo/jns42-generator/src/documents/draft_2019_09/loader.rs similarity index 96% rename from packages/rs/jns42-generator/src/schemas/draft_2019_09/loader.rs rename to packages/cargo/jns42-generator/src/documents/draft_2019_09/loader.rs index 32c1037b..17b0248d 100644 --- a/packages/rs/jns42-generator/src/schemas/draft_2019_09/loader.rs +++ b/packages/cargo/jns42-generator/src/documents/draft_2019_09/loader.rs @@ -1,6 +1,6 @@ use super::meta::META_SCHEMA_ID; use super::selectors::Selectors; -use crate::schemas::loader::Loader; +use crate::documents::loader::Loader; use crate::utils::value_rc::ValueRc; use std::collections::HashMap; use std::rc::Rc; diff --git a/packages/rs/jns42-generator/src/schemas/draft_2019_09/meta.rs b/packages/cargo/jns42-generator/src/documents/draft_2019_09/meta.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2019_09/meta.rs rename to packages/cargo/jns42-generator/src/documents/draft_2019_09/meta.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2019_09/mod.rs b/packages/cargo/jns42-generator/src/documents/draft_2019_09/mod.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2019_09/mod.rs rename to packages/cargo/jns42-generator/src/documents/draft_2019_09/mod.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2019_09/selectors.rs b/packages/cargo/jns42-generator/src/documents/draft_2019_09/selectors.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2019_09/selectors.rs rename to packages/cargo/jns42-generator/src/documents/draft_2019_09/selectors.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2020_12/loader.rs b/packages/cargo/jns42-generator/src/documents/draft_2020_12/loader.rs similarity index 98% rename from packages/rs/jns42-generator/src/schemas/draft_2020_12/loader.rs rename to packages/cargo/jns42-generator/src/documents/draft_2020_12/loader.rs index dd5d9067..59c334b2 100644 --- a/packages/rs/jns42-generator/src/schemas/draft_2020_12/loader.rs +++ b/packages/cargo/jns42-generator/src/documents/draft_2020_12/loader.rs @@ -1,6 +1,6 @@ use super::meta::META_SCHEMA_ID; use super::selectors::Selectors; -use crate::schemas::loader::Loader; +use crate::documents::loader::Loader; use crate::utils::value_rc::ValueRc; use std::collections::HashMap; use std::rc::Rc; diff --git a/packages/rs/jns42-generator/src/schemas/draft_2020_12/meta.rs b/packages/cargo/jns42-generator/src/documents/draft_2020_12/meta.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2020_12/meta.rs rename to packages/cargo/jns42-generator/src/documents/draft_2020_12/meta.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2020_12/mod.rs b/packages/cargo/jns42-generator/src/documents/draft_2020_12/mod.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2020_12/mod.rs rename to packages/cargo/jns42-generator/src/documents/draft_2020_12/mod.rs diff --git a/packages/rs/jns42-generator/src/schemas/draft_2020_12/selectors.rs b/packages/cargo/jns42-generator/src/documents/draft_2020_12/selectors.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/draft_2020_12/selectors.rs rename to packages/cargo/jns42-generator/src/documents/draft_2020_12/selectors.rs diff --git a/packages/rs/jns42-generator/src/schemas/loader.rs b/packages/cargo/jns42-generator/src/documents/loader.rs similarity index 100% rename from packages/rs/jns42-generator/src/schemas/loader.rs rename to packages/cargo/jns42-generator/src/documents/loader.rs diff --git a/packages/cargo/jns42-generator/src/documents/meta.rs b/packages/cargo/jns42-generator/src/documents/meta.rs new file mode 100644 index 00000000..c88c3114 --- /dev/null +++ b/packages/cargo/jns42-generator/src/documents/meta.rs @@ -0,0 +1,55 @@ +use crate::documents; +use clap::ValueEnum; +use std::fmt::Display; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, ValueEnum)] +pub enum MetaSchemaId { + Unknown, + + #[clap(name = documents::draft_2020_12::meta::META_SCHEMA_ID)] + Draft202012, + + #[clap(name = documents::draft_2019_09::meta::META_SCHEMA_ID)] + Draft201909, + + #[clap(name = documents::draft_07::meta::META_SCHEMA_ID)] + Draft07, + + #[clap(name = documents::draft_06::meta::META_SCHEMA_ID)] + Draft06, + + #[clap(name = documents::draft_04::meta::META_SCHEMA_ID)] + Draft04, +} + +impl Display for MetaSchemaId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.into()) + } +} + +impl From<&MetaSchemaId> for &'static str { + fn from(value: &MetaSchemaId) -> Self { + match value { + MetaSchemaId::Draft202012 => documents::draft_2020_12::meta::META_SCHEMA_ID, + MetaSchemaId::Draft201909 => documents::draft_2019_09::meta::META_SCHEMA_ID, + MetaSchemaId::Draft07 => documents::draft_07::meta::META_SCHEMA_ID, + MetaSchemaId::Draft06 => documents::draft_06::meta::META_SCHEMA_ID, + MetaSchemaId::Draft04 => documents::draft_04::meta::META_SCHEMA_ID, + MetaSchemaId::Unknown => "", + } + } +} + +impl From<&str> for MetaSchemaId { + fn from(value: &str) -> Self { + match value { + documents::draft_2020_12::meta::META_SCHEMA_ID => MetaSchemaId::Draft202012, + documents::draft_2019_09::meta::META_SCHEMA_ID => MetaSchemaId::Draft201909, + documents::draft_07::meta::META_SCHEMA_ID => MetaSchemaId::Draft07, + documents::draft_06::meta::META_SCHEMA_ID => MetaSchemaId::Draft06, + documents::draft_04::meta::META_SCHEMA_ID => MetaSchemaId::Draft04, + _ => MetaSchemaId::Unknown, + } + } +} diff --git a/packages/rs/jns42-generator/src/schemas/mod.rs b/packages/cargo/jns42-generator/src/documents/mod.rs similarity index 65% rename from packages/rs/jns42-generator/src/schemas/mod.rs rename to packages/cargo/jns42-generator/src/documents/mod.rs index 8692850d..e956b858 100644 --- a/packages/rs/jns42-generator/src/schemas/mod.rs +++ b/packages/cargo/jns42-generator/src/documents/mod.rs @@ -5,5 +5,8 @@ pub mod draft_2019_09; pub mod draft_2020_12; pub mod loader; -pub mod manager; pub mod meta; + +pub mod document; +pub mod document_context; +pub mod schema_document; diff --git a/packages/cargo/jns42-generator/src/documents/schema_document.rs b/packages/cargo/jns42-generator/src/documents/schema_document.rs new file mode 100644 index 00000000..4043e778 --- /dev/null +++ b/packages/cargo/jns42-generator/src/documents/schema_document.rs @@ -0,0 +1,29 @@ +use super::document::Document; +use serde_json::Value; +use url::Url; + +pub struct EmbeddedDocument<'a> { + pub retrieval_url: Url, + pub given_url: Url, + pub node: &'a Value, +} + +pub struct ReferencedDocument { + pub retrieval_url: Url, + pub given_url: Url, +} + +pub trait SchemaDocument +where + Self: Document, +{ + fn get_referenced_documents( + &self, + retrieval_url: &Url, + ) -> Box>; + + fn get_embedded_documents( + &self, + retrieval_url: &Url, + ) -> Box>; +} diff --git a/packages/rs/jns42-generator/src/lib.rs b/packages/cargo/jns42-generator/src/lib.rs similarity index 100% rename from packages/rs/jns42-generator/src/lib.rs rename to packages/cargo/jns42-generator/src/lib.rs diff --git a/packages/cargo/jns42-generator/src/main.rs b/packages/cargo/jns42-generator/src/main.rs new file mode 100644 index 00000000..6792fa7b --- /dev/null +++ b/packages/cargo/jns42-generator/src/main.rs @@ -0,0 +1,16 @@ +mod documents; +mod models; +mod programs; +mod utils; + +use clap::Parser; +use programs::{run_program, ProgramOptions}; +use std::error::Error; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let options = ProgramOptions::parse(); + run_program(options).await?; + + Ok(()) +} diff --git a/packages/cargo/jns42-generator/src/models/intermediate.rs b/packages/cargo/jns42-generator/src/models/intermediate.rs new file mode 100644 index 00000000..9ab3a23d --- /dev/null +++ b/packages/cargo/jns42-generator/src/models/intermediate.rs @@ -0,0 +1,3 @@ +pub struct IntermediateSchema { + pub schemas: Vec, +} diff --git a/packages/cargo/jns42-generator/src/models/mod.rs b/packages/cargo/jns42-generator/src/models/mod.rs new file mode 100644 index 00000000..51da2667 --- /dev/null +++ b/packages/cargo/jns42-generator/src/models/mod.rs @@ -0,0 +1 @@ +pub mod intermediate; diff --git a/packages/rs/jns42-generator/src/programs/mod.rs b/packages/cargo/jns42-generator/src/programs/mod.rs similarity index 76% rename from packages/rs/jns42-generator/src/programs/mod.rs rename to packages/cargo/jns42-generator/src/programs/mod.rs index a3c03247..221fcf5c 100644 --- a/packages/rs/jns42-generator/src/programs/mod.rs +++ b/packages/cargo/jns42-generator/src/programs/mod.rs @@ -1,5 +1,7 @@ mod package; +use std::error::Error; + use clap::{Parser, Subcommand}; #[derive(Parser, Debug)] @@ -14,8 +16,8 @@ pub enum ProgramCommands { Package(package::CommandOptions), } -pub fn run_program(options: ProgramOptions) -> Result<(), &'static str> { +pub async fn run_program(options: ProgramOptions) -> Result<(), Box> { match options.command { - ProgramCommands::Package(options) => package::run_command(options), + ProgramCommands::Package(options) => package::run_command(options).await, } } diff --git a/packages/rs/jns42-generator/src/programs/package.rs b/packages/cargo/jns42-generator/src/programs/package.rs similarity index 63% rename from packages/rs/jns42-generator/src/programs/package.rs rename to packages/cargo/jns42-generator/src/programs/package.rs index 36f63805..da1e4767 100644 --- a/packages/rs/jns42-generator/src/programs/package.rs +++ b/packages/cargo/jns42-generator/src/programs/package.rs @@ -1,5 +1,7 @@ -use crate::schemas::manager::Manager; -use crate::schemas::meta::MetaSchemaId; +use std::error::Error; + +use crate::documents::document_context::DocumentContext; +use crate::documents::meta::MetaSchemaId; use clap::Parser; use url::Url; @@ -26,16 +28,18 @@ pub struct CommandOptions { pub unique_name_seed: usize, } -pub fn run_command(options: CommandOptions) -> Result<(), &'static str> { +pub async fn run_command(options: CommandOptions) -> Result<(), Box> { let CommandOptions { schema_url, default_meta_schema_url, .. } = options; - let mut manager = Manager::new(); + let mut context = DocumentContext::new(); - manager.load_from_url(&schema_url, &schema_url, default_meta_schema_url)?; + context + .load_from_url(&schema_url, &schema_url, None, &default_meta_schema_url) + .await; Ok(()) } diff --git a/packages/cargo/jns42-generator/src/utils/json_deserializer.rs b/packages/cargo/jns42-generator/src/utils/json_deserializer.rs new file mode 100644 index 00000000..e22476f9 --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/json_deserializer.rs @@ -0,0 +1,185 @@ +use futures_util::stream::StreamExt; +use futures_util::Stream; +use serde::de::DeserializeOwned; +use serde_json::Deserializer; +use std::collections::VecDeque; +use std::error::Error; +use std::pin::Pin; +use std::task::{Context, Poll}; + +pub struct JsonDeserializer +where + T: DeserializeOwned, + S: Stream>>, + I: Into>, +{ + inner: S, + buffer: Vec, + queue: VecDeque, + at_end: bool, +} + +impl JsonDeserializer +where + T: DeserializeOwned, + S: Stream>>, + I: Into>, +{ + pub fn new(inner: S) -> Self { + Self { + inner, + buffer: Vec::new(), + queue: VecDeque::new(), + at_end: false, + } + } +} + +impl Stream for JsonDeserializer +where + Self: Unpin, + T: DeserializeOwned, + S: Stream>> + Unpin, + I: Into>, +{ + type Item = Result>; + + fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let self_mut = self.get_mut(); + + let inner = &mut self_mut.inner; + let buffer = &mut self_mut.buffer; + let queue = &mut self_mut.queue; + + // if the queue would have some items then we don't need to fill it! + if queue.is_empty() && !self_mut.at_end { + // if the queue is empty then we need more data! so let's read + loop { + let next_future = inner.poll_next_unpin(cx); + match next_future { + Poll::Ready(Some(Ok(chunk))) => { + // append read data to buffer + let mut chunk = chunk.into(); + buffer.append(&mut chunk); + } + Poll::Ready(Some(Err(error))) => { + // Emit error and end stream + queue.clear(); + self_mut.at_end = true; + return Poll::Ready(Some(Err(error))); + } + Poll::Ready(None) => { + // done! + self_mut.at_end = true; + break; + } + Poll::Pending => { + // all is read, for now... + break; + } + } + } + + let deserializer = Deserializer::from_slice(buffer); + let mut deserializer = deserializer.into_iter(); + for item in deserializer.by_ref() { + match item { + // we found some valid json + Ok(item) => { + // push it to the queue + queue.push_front(item); + } + Err(error) => match error.classify() { + // in this case this means we need more data, not really an error + serde_json::error::Category::Eof => { + break; + } + _ => { + // Emit error and end stream + queue.clear(); + self_mut.at_end = true; + return Poll::Ready(Some(Err(Box::new(error)))); + } + }, + } + } + + // cut off bytes in the buffer that are successfully parsed + let offset = deserializer.byte_offset(); + let _: Vec<_> = buffer.drain(0..offset).collect(); + } + + if let Some(item) = queue.pop_back() { + // emit whatever is in the queue + Poll::Ready(Some(Ok(item))) + } else if self_mut.at_end { + // if nothing in the queue, and we are at the end + Poll::Ready(None) + } else { + // no items in queue and not at the end, i guess we should come back later + Poll::Pending + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::utils::read_stream::ReadStream; + use futures_util::TryStreamExt; + use std::path::PathBuf; + use tokio::fs::File; + use url::Url; + + #[tokio::test] + async fn test_1() -> Result<(), Box> { + let url = Url::parse("https://api.chucknorris.io/jokes/random").unwrap(); + let response = reqwest::get(url).await?.error_for_status()?; + + let body = response + .bytes_stream() + .map_err(|error| Box::new(error) as Box); + + let mut deserializer = JsonDeserializer::::new(body); + + let mut count = 0; + + while let Some(item) = deserializer.next().await { + item?; + + count += 1; + } + + assert_eq!(count, 1); + + Ok(()) + } + + #[tokio::test] + async fn test_2() -> Result<(), Box> { + let path = PathBuf::new(); + let path = path.join(".."); + let path = path.join(".."); + let path = path.join(".."); + let path = path.join("fixtures"); + let path = path.join("miscellaneous"); + let path = path.join("people.jsonl"); + + let file = File::open(path).await?; + let file = ReadStream::new(file).map_err(|error| Box::new(error) as Box); + + let mut deserializer = JsonDeserializer::::new(file); + + let mut count = 0; + + while let Some(item) = deserializer.next().await { + item?; + + count += 1; + } + + assert_eq!(count, 3); + + Ok(()) + } +} diff --git a/packages/rs/jns42-generator/src/utils/json_pointer.rs b/packages/cargo/jns42-generator/src/utils/json_pointer.rs similarity index 100% rename from packages/rs/jns42-generator/src/utils/json_pointer.rs rename to packages/cargo/jns42-generator/src/utils/json_pointer.rs diff --git a/packages/cargo/jns42-generator/src/utils/mod.rs b/packages/cargo/jns42-generator/src/utils/mod.rs new file mode 100644 index 00000000..1d7d538b --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/mod.rs @@ -0,0 +1,9 @@ +pub mod json_deserializer; +pub mod json_pointer; +pub mod read_json_node; +pub mod read_stream; +pub mod read_url; +pub mod schema; +pub mod value_rc; +pub mod yaml; +pub mod yaml_deserializer; diff --git a/packages/cargo/jns42-generator/src/utils/read_json_node.rs b/packages/cargo/jns42-generator/src/utils/read_json_node.rs new file mode 100644 index 00000000..a9fda868 --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/read_json_node.rs @@ -0,0 +1,46 @@ +use super::value_rc::ValueRc; +use serde_json::Value; +use std::iter::once; +use std::{borrow::Borrow, rc::Rc}; + +pub fn read_json_node(prefix: String, node: Value) -> Vec<(String, Value)> { + match &node { + Value::Array(array_value) => once((prefix.clone(), node.clone())) + .chain( + array_value + .iter() + .enumerate() + .flat_map(|(index, element_value)| { + read_json_node(format!("{}/{}", prefix, index), element_value.clone()) + }), + ) + .collect(), + Value::Object(object_value) => once((prefix.clone(), node.clone())) + .chain(object_value.iter().flat_map(|(name, element_value)| { + read_json_node(format!("{}/{}", prefix, name), element_value.clone()) + })) + .collect(), + _ => once((prefix, node)).collect(), + } +} + +pub fn read_json_node_rc(prefix: String, node: Rc) -> Vec<(String, Rc)> { + match node.borrow() { + ValueRc::Array(array_value) => once((prefix.clone(), node.clone())) + .chain( + array_value + .iter() + .enumerate() + .flat_map(|(index, element_value)| { + read_json_node_rc(format!("{}/{}", prefix, index), element_value.clone()) + }), + ) + .collect(), + ValueRc::Object(object_value) => once((prefix.clone(), node.clone())) + .chain(object_value.iter().flat_map(|(name, element_value)| { + read_json_node_rc(format!("{}/{}", prefix, name), element_value.clone()) + })) + .collect(), + _ => once((prefix, node)).collect(), + } +} diff --git a/packages/cargo/jns42-generator/src/utils/read_stream.rs b/packages/cargo/jns42-generator/src/utils/read_stream.rs new file mode 100644 index 00000000..0b9eee05 --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/read_stream.rs @@ -0,0 +1,85 @@ +use futures_util::{FutureExt, Stream}; +use std::{ + pin::Pin, + task::{Context, Poll}, +}; +use tokio::io::{AsyncRead, AsyncReadExt}; + +// small buffer! for testing purpose +const BUFFER_SIZE: usize = 16; + +pub struct ReadStream +where + R: AsyncRead, +{ + reader: R, + at_end: bool, +} + +impl ReadStream +where + R: AsyncRead + Unpin, +{ + pub fn new(reader: R) -> Self { + Self { + reader, + at_end: false, + } + } +} + +impl Stream for ReadStream +where + Self: Unpin, + R: AsyncRead + Unpin, +{ + type Item = std::io::Result>; + + fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let self_mut = self.get_mut(); + + let reader = &mut self_mut.reader; + let mut chunk = [0; BUFFER_SIZE]; + + // this is where we store data for this poll event + let mut buffer = Vec::new(); + + // loop only of we are not at the end + while !self_mut.at_end { + let mut read_future = Box::pin(reader.read(&mut chunk)); + match read_future.poll_unpin(cx) { + // no data read, we assume that the reader is at it's end + Poll::Ready(Ok(0)) => { + self_mut.at_end = true; + break; + } + // read some data + Poll::Ready(Ok(count)) => { + buffer.extend_from_slice(&chunk[..count]); + } + // something is wrong! + Poll::Ready(Err(error)) => { + return Poll::Ready(Some(Err(error))); + } + // nothing to read, come back later! + Poll::Pending => { + if buffer.is_empty() { + // if there is nothing in the result buffer then come back later + return Poll::Pending; + } else { + // if there is something in the buffer then exit the loop and let the code that follows emit the buffer + break; + } + } + } + } + + if self_mut.at_end && buffer.is_empty() { + // we are done! + Poll::Ready(None) + } else { + // emit whatever we just read + Poll::Ready(Some(Ok(buffer))) + } + } +} diff --git a/packages/cargo/jns42-generator/src/utils/read_url.rs b/packages/cargo/jns42-generator/src/utils/read_url.rs new file mode 100644 index 00000000..8a8caff5 --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/read_url.rs @@ -0,0 +1,52 @@ +use super::read_stream::ReadStream; +use futures_util::{Stream, StreamExt, TryStreamExt}; +use std::{error::Error, fmt::Display}; +use tokio::fs::File; +use url::Url; + +pub type ReadUrlItem = Result, Box>; + +pub async fn read_url( + url: &Url, +) -> Result + Unpin>, Box> { + let scheme = url.scheme(); + match scheme { + "file" => { + let file = File::open(url.to_file_path().unwrap()).await?; + let stream = ReadStream::new(file); + let stream = stream.map(|item| item.map_err(|error| Box::new(error) as Box)); + + Ok(Box::new(stream)) + } + "http" | "https" => { + let response = reqwest::get(url.as_str()).await?.error_for_status()?; + let stream = response.bytes_stream(); + let stream = stream.map(|item| { + item.map(|value| value.into()) + .map_err(|error| Box::new(error) as Box) + }); + + Ok(Box::new(stream)) + } + _ => Err(Box::new(SchemeNotSupportedError::new(scheme.into()))), + } +} + +#[derive(Debug)] +pub struct SchemeNotSupportedError { + scheme: String, +} + +impl SchemeNotSupportedError { + pub fn new(scheme: String) -> Self { + Self { scheme } + } +} + +impl Display for SchemeNotSupportedError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Scheme {} not supported", self.scheme) + } +} + +impl Error for SchemeNotSupportedError {} diff --git a/packages/cargo/jns42-generator/src/utils/schema.rs b/packages/cargo/jns42-generator/src/utils/schema.rs new file mode 100644 index 00000000..1a0b387e --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/schema.rs @@ -0,0 +1,14 @@ +use serde_json::Value; +use url::Url; + +use crate::documents::meta::MetaSchemaId; + +pub fn discover_schema_uri(node: &Value) -> Option { + match node { + Value::Object(object_value) => match object_value.get("$schema") { + Some(Value::String(string_value)) => Some(string_value.as_str().into()), + _ => None, + }, + _ => None, + } +} diff --git a/packages/rs/jns42-generator/src/utils/value_rc.rs b/packages/cargo/jns42-generator/src/utils/value_rc.rs similarity index 100% rename from packages/rs/jns42-generator/src/utils/value_rc.rs rename to packages/cargo/jns42-generator/src/utils/value_rc.rs diff --git a/packages/cargo/jns42-generator/src/utils/yaml.rs b/packages/cargo/jns42-generator/src/utils/yaml.rs new file mode 100644 index 00000000..57da646e --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/yaml.rs @@ -0,0 +1,33 @@ +use crate::utils::yaml_deserializer::YamlDeserializer; +use futures_util::StreamExt; +use url::Url; + +use super::read_url::read_url; + +pub async fn load_yaml(url: &Url) -> Result, Box> { + let stream = read_url(url).await?; + + let mut deserializer = YamlDeserializer::new(stream); + if let Some(item) = deserializer.next().await { + let item = item?; + + Ok(Some(item)) + } else { + Ok(None) + } +} + +mod test { + + #[tokio::test] + async fn test_fetch() { + use super::*; + + let url = "https://spec.openapis.org/oas/3.1/dialect/base" + .parse() + .unwrap(); + let response = load_yaml(&url).await.unwrap(); + + assert!(response.is_some()) + } +} diff --git a/packages/cargo/jns42-generator/src/utils/yaml_deserializer.rs b/packages/cargo/jns42-generator/src/utils/yaml_deserializer.rs new file mode 100644 index 00000000..9e13fa9a --- /dev/null +++ b/packages/cargo/jns42-generator/src/utils/yaml_deserializer.rs @@ -0,0 +1,237 @@ +use futures_util::stream::StreamExt; +use futures_util::Stream; +use serde::de::DeserializeOwned; +use serde_yaml::Deserializer; +use std::collections::VecDeque; +use std::error::Error; +use std::pin::Pin; +use std::task::{Context, Poll}; + +const DOCUMENT_DELIMITER: [u8; 3] = [45, 45, 45]; // --- +const NEWLINE_DELIMITER: u8 = 10; // \n +const NEWLINE_DELIMITER_PREFIX: u8 = 13; // \r + +pub struct YamlDeserializer +where + T: DeserializeOwned, + S: Stream>>, + I: Into>, +{ + // source stream + inner: S, + // buffer with read data + buffer: Vec, + // queue of deserialized items to emit + queue: VecDeque, + // this is where the next document starts + document_offset: usize, + // buffer is processed until here + buffer_offset: usize, + // source stream is at it end + at_end: bool, +} + +impl YamlDeserializer +where + T: DeserializeOwned, + S: Stream>>, + I: Into>, +{ + pub fn new(inner: S) -> Self { + Self { + inner, + buffer: Vec::new(), + queue: VecDeque::new(), + document_offset: 0, + buffer_offset: 0, + at_end: false, + } + } +} + +impl Stream for YamlDeserializer +where + Self: Unpin, + T: DeserializeOwned, + S: Stream>> + Unpin, + I: Into>, +{ + type Item = Result>; + + fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let self_mut = self.get_mut(); + + let inner = &mut self_mut.inner; + let buffer = &mut self_mut.buffer; + let queue = &mut self_mut.queue; + + // if the queue would have some items then we don't need to fill it! + if queue.is_empty() && !self_mut.at_end { + // if the queue is empty then we need more data! so let's read + loop { + let next_future = inner.poll_next_unpin(cx); + match next_future { + Poll::Ready(Some(Ok(chunk))) => { + // append read data to buffer + let mut chunk = chunk.into(); + buffer.append(&mut chunk); + } + Poll::Ready(Some(Err(error))) => { + // Emit error and end stream + queue.clear(); + self_mut.at_end = true; + return Poll::Ready(Some(Err(error))); + } + Poll::Ready(None) => { + // done! + self_mut.at_end = true; + break; + } + Poll::Pending => { + // all is read, for now... + break; + } + } + } + + // figure out the length of a found document (0 means no document) + let mut document_length = 0; + + // split lines + let lines = buffer[self_mut.buffer_offset..].split(|value| *value == NEWLINE_DELIMITER); // split by \n + + // lets find the document delimiter line + + let mut next_buffer_offset = self_mut.buffer_offset; + for line in lines { + // the buffer_offset state is always one line behind + self_mut.buffer_offset = next_buffer_offset; + + let mut line = line; + if let Some(last) = line.last() { + if *last == NEWLINE_DELIMITER_PREFIX { + line = &line[..line.len() - 1]; + next_buffer_offset += line.len() + 2; + } else { + next_buffer_offset += line.len() + 1; + } + } else { + // line is empty, we only advance the newline character + next_buffer_offset += 1; + } + + if line == DOCUMENT_DELIMITER { + // hurray we found a document + document_length = self_mut.buffer_offset - self_mut.document_offset; + self_mut.buffer_offset = next_buffer_offset; + break; + } + } + + if document_length == 0 && self_mut.at_end { + // not found a document, but we are at the end! + self_mut.buffer_offset = buffer.len(); + document_length = buffer.len() - self_mut.document_offset; + } + + if document_length > 0 { + // we have a document \o/ + let document_buffer: Vec<_> = buffer + .drain(0..(self_mut.document_offset + document_length)) + .skip(self_mut.document_offset) + .collect(); + self_mut.buffer_offset = 0; + self_mut.document_offset = 0; + + let deserializer = Deserializer::from_slice(&document_buffer); + let item = T::deserialize(deserializer); + + match item { + Ok(item) => { + // push it to the queue + queue.push_front(item); + } + Err(error) => { + // Emit error and end stream + queue.clear(); + self_mut.at_end = true; + return Poll::Ready(Some(Err(Box::new(error)))); + } + } + } + } + + if let Some(item) = queue.pop_back() { + // emit whatever is in the queue + Poll::Ready(Some(Ok(item))) + } else if self_mut.at_end { + // if nothing in the queue, and we are at the end + Poll::Ready(None) + } else { + // no items in queue and not at the end, i guess we should come back later + Poll::Pending + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::utils::read_stream::ReadStream; + use futures_util::TryStreamExt; + use std::path::PathBuf; + use tokio::fs::File; + use url::Url; + + #[tokio::test] + async fn test_1() -> Result<(), Box> { + let url = Url::parse("https://api.chucknorris.io/jokes/random").unwrap(); + let response = reqwest::get(url).await?.error_for_status()?; + + let body = response + .bytes_stream() + .map_err(|error| Box::new(error) as Box); + + let mut deserializer = YamlDeserializer::::new(body); + + let mut count = 0; + + while let Some(item) = deserializer.next().await { + item?; + + count += 1; + } + + assert_eq!(count, 1); + + Ok(()) + } + + #[tokio::test] + async fn test_2() -> Result<(), Box> { + let path = PathBuf::new(); + let path = path.join(".."); + let path = path.join(".."); + let path = path.join(".."); + let path = path.join("fixtures"); + let path = path.join("miscellaneous"); + let path = path.join("people.yaml"); + + let file = File::open(path).await?; + let file = ReadStream::new(file).map_err(|error| Box::new(error) as Box); + + let mut deserializer = YamlDeserializer::::new(file); + + let mut count = 0; + + while let Some(item) = deserializer.next().await { + item?; + + count += 1; + } + + assert_eq!(count, 3); + + Ok(()) + } +} diff --git a/packages/ts/jns42-generator/.npmrc b/packages/npm/jns42-generator/.npmrc similarity index 100% rename from packages/ts/jns42-generator/.npmrc rename to packages/npm/jns42-generator/.npmrc diff --git a/packages/ts/jns42-generator/.vscode/launch.json b/packages/npm/jns42-generator/.vscode/launch.json similarity index 100% rename from packages/ts/jns42-generator/.vscode/launch.json rename to packages/npm/jns42-generator/.vscode/launch.json diff --git a/packages/ts/jns42-generator/.vscode/tasks.json b/packages/npm/jns42-generator/.vscode/tasks.json similarity index 100% rename from packages/ts/jns42-generator/.vscode/tasks.json rename to packages/npm/jns42-generator/.vscode/tasks.json diff --git a/packages/ts/jns42-generator/README.md b/packages/npm/jns42-generator/README.md similarity index 100% rename from packages/ts/jns42-generator/README.md rename to packages/npm/jns42-generator/README.md diff --git a/packages/ts/jns42-generator/bin/jns42-generator b/packages/npm/jns42-generator/bin/jns42-generator similarity index 100% rename from packages/ts/jns42-generator/bin/jns42-generator rename to packages/npm/jns42-generator/bin/jns42-generator diff --git a/packages/ts/jns42-generator/package.json b/packages/npm/jns42-generator/package.json similarity index 100% rename from packages/ts/jns42-generator/package.json rename to packages/npm/jns42-generator/package.json diff --git a/packages/ts/jns42-generator/src/documents/document-base.ts b/packages/npm/jns42-generator/src/documents/document-base.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/document-base.ts rename to packages/npm/jns42-generator/src/documents/document-base.ts diff --git a/packages/ts/jns42-generator/src/documents/document-context.ts b/packages/npm/jns42-generator/src/documents/document-context.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/document-context.ts rename to packages/npm/jns42-generator/src/documents/document-context.ts diff --git a/packages/ts/jns42-generator/src/documents/index.ts b/packages/npm/jns42-generator/src/documents/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/index.ts rename to packages/npm/jns42-generator/src/documents/index.ts diff --git a/packages/ts/jns42-generator/src/documents/oas-v3-0/document.ts b/packages/npm/jns42-generator/src/documents/oas-v3-0/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/oas-v3-0/document.ts rename to packages/npm/jns42-generator/src/documents/oas-v3-0/document.ts diff --git a/packages/ts/jns42-generator/src/documents/oas-v3-0/index.ts b/packages/npm/jns42-generator/src/documents/oas-v3-0/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/oas-v3-0/index.ts rename to packages/npm/jns42-generator/src/documents/oas-v3-0/index.ts diff --git a/packages/ts/jns42-generator/src/documents/oas-v3-0/meta.ts b/packages/npm/jns42-generator/src/documents/oas-v3-0/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/oas-v3-0/meta.ts rename to packages/npm/jns42-generator/src/documents/oas-v3-0/meta.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-document-base.ts b/packages/npm/jns42-generator/src/documents/schema-document-base.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-document-base.ts rename to packages/npm/jns42-generator/src/documents/schema-document-base.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-04/document.ts b/packages/npm/jns42-generator/src/documents/schema-draft-04/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-04/document.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-04/document.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-04/index.ts b/packages/npm/jns42-generator/src/documents/schema-draft-04/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-04/index.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-04/index.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-04/meta.ts b/packages/npm/jns42-generator/src/documents/schema-draft-04/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-04/meta.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-04/meta.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-2020-12/document.ts b/packages/npm/jns42-generator/src/documents/schema-draft-2020-12/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-2020-12/document.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-2020-12/document.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-2020-12/index.ts b/packages/npm/jns42-generator/src/documents/schema-draft-2020-12/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-2020-12/index.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-2020-12/index.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-draft-2020-12/meta.ts b/packages/npm/jns42-generator/src/documents/schema-draft-2020-12/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-draft-2020-12/meta.ts rename to packages/npm/jns42-generator/src/documents/schema-draft-2020-12/meta.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-intermediate/document.ts b/packages/npm/jns42-generator/src/documents/schema-intermediate/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-intermediate/document.ts rename to packages/npm/jns42-generator/src/documents/schema-intermediate/document.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-intermediate/index.ts b/packages/npm/jns42-generator/src/documents/schema-intermediate/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-intermediate/index.ts rename to packages/npm/jns42-generator/src/documents/schema-intermediate/index.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-intermediate/meta.ts b/packages/npm/jns42-generator/src/documents/schema-intermediate/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-intermediate/meta.ts rename to packages/npm/jns42-generator/src/documents/schema-intermediate/meta.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-oas-v3-1/document.ts b/packages/npm/jns42-generator/src/documents/schema-oas-v3-1/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-oas-v3-1/document.ts rename to packages/npm/jns42-generator/src/documents/schema-oas-v3-1/document.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-oas-v3-1/index.ts b/packages/npm/jns42-generator/src/documents/schema-oas-v3-1/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-oas-v3-1/index.ts rename to packages/npm/jns42-generator/src/documents/schema-oas-v3-1/index.ts diff --git a/packages/ts/jns42-generator/src/documents/schema-oas-v3-1/meta.ts b/packages/npm/jns42-generator/src/documents/schema-oas-v3-1/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/schema-oas-v3-1/meta.ts rename to packages/npm/jns42-generator/src/documents/schema-oas-v3-1/meta.ts diff --git a/packages/ts/jns42-generator/src/documents/swagger-v2/document.ts b/packages/npm/jns42-generator/src/documents/swagger-v2/document.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/swagger-v2/document.ts rename to packages/npm/jns42-generator/src/documents/swagger-v2/document.ts diff --git a/packages/ts/jns42-generator/src/documents/swagger-v2/index.ts b/packages/npm/jns42-generator/src/documents/swagger-v2/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/swagger-v2/index.ts rename to packages/npm/jns42-generator/src/documents/swagger-v2/index.ts diff --git a/packages/ts/jns42-generator/src/documents/swagger-v2/meta.ts b/packages/npm/jns42-generator/src/documents/swagger-v2/meta.ts similarity index 100% rename from packages/ts/jns42-generator/src/documents/swagger-v2/meta.ts rename to packages/npm/jns42-generator/src/documents/swagger-v2/meta.ts diff --git a/packages/ts/jns42-generator/src/generators/examples-test-ts.ts b/packages/npm/jns42-generator/src/generators/examples-test-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/examples-test-ts.ts rename to packages/npm/jns42-generator/src/generators/examples-test-ts.ts diff --git a/packages/ts/jns42-generator/src/generators/index.ts b/packages/npm/jns42-generator/src/generators/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/index.ts rename to packages/npm/jns42-generator/src/generators/index.ts diff --git a/packages/ts/jns42-generator/src/generators/main-ts.ts b/packages/npm/jns42-generator/src/generators/main-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/main-ts.ts rename to packages/npm/jns42-generator/src/generators/main-ts.ts diff --git a/packages/ts/jns42-generator/src/generators/mocks-test-ts.ts b/packages/npm/jns42-generator/src/generators/mocks-test-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/mocks-test-ts.ts rename to packages/npm/jns42-generator/src/generators/mocks-test-ts.ts diff --git a/packages/ts/jns42-generator/src/generators/mocks-ts.ts b/packages/npm/jns42-generator/src/generators/mocks-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/mocks-ts.ts rename to packages/npm/jns42-generator/src/generators/mocks-ts.ts diff --git a/packages/npm/jns42-generator/src/generators/package-json.ts b/packages/npm/jns42-generator/src/generators/package-json.ts new file mode 100644 index 00000000..57266412 --- /dev/null +++ b/packages/npm/jns42-generator/src/generators/package-json.ts @@ -0,0 +1,45 @@ +import { PackageJson } from "type-fest"; +import { packageInfo } from "../utils/index.js"; + +export function generatePackageJsonData(name: string, version: string) { + const content: PackageJson = { + name, + version, + sideEffects: false, + type: "module", + main: "./out-commonjs/main.js", + module: "./out/main.js", + types: "./out/main.d.ts", + exports: { + ".": { + require: "./out-commonjs/main.js", + import: "./out/main.js", + types: "./out/main.d.ts", + }, + }, + files: ["./out/**", "./out-commonjs/**"], + scripts: { + prepack: `tsc ; tsc --outDir out-commonjs --declaration false --module commonjs --moduleResolution Node10 ; echo '{"type":"commonjs"}' > out-commonjs/package.json`, + pretest: `tsc ; tsc --outDir out-commonjs --declaration false --module commonjs --moduleResolution Node10 ; echo '{"type":"commonjs"}' > out-commonjs/package.json`, + build: `tsc ; tsc --outDir out-commonjs --declaration false --module commonjs --moduleResolution Node10 ; echo '{"type":"commonjs"}' > out-commonjs/package.json`, + clean: "rm -rf out out-*", + test: "node --test ./out/**/*.test.js", + }, + author: "", + license: "ISC", + dependencies: withDependencies(["@types/node"]), + devDependencies: withDependencies(["typescript", "@tsconfig/node20"]), + }; + + return content; +} + +function withDependencies(names: string[]) { + return names.reduce( + (o, name) => + Object.assign(o, { + [name]: packageInfo.dependencies?.[name] ?? packageInfo.devDependencies?.[name], + }), + {}, + ); +} diff --git a/packages/ts/jns42-generator/src/generators/package.ts b/packages/npm/jns42-generator/src/generators/package.ts similarity index 93% rename from packages/ts/jns42-generator/src/generators/package.ts rename to packages/npm/jns42-generator/src/generators/package.ts index 0fa90991..c5627268 100644 --- a/packages/ts/jns42-generator/src/generators/package.ts +++ b/packages/npm/jns42-generator/src/generators/package.ts @@ -7,9 +7,9 @@ import { generateExamplesTestTsCode } from "./examples-test-ts.js"; import { generateMainTsCode } from "./main-ts.js"; import { generateMocksTestTsCode } from "./mocks-test-ts.js"; import { generateMocksTsCode } from "./mocks-ts.js"; -import { getPackageJsonData } from "./package-json.js"; +import { generatePackageJsonData } from "./package-json.js"; import { generateParsersTsCode } from "./parsers-ts.js"; -import { getTsconfigJsonData } from "./tsconfig-json.js"; +import { generateTsconfigJsonData } from "./tsconfig-json.js"; import { generateTypesTsCode } from "./types-ts.js"; import { generateValidatorsTsCode } from "./validators-ts.js"; @@ -30,7 +30,7 @@ export function generatePackage( fs.mkdirSync(path.join(packageDirectoryPath, "src"), { recursive: true }); { - const content = getPackageJsonData(packageName, packageVersion); + const content = generatePackageJsonData(packageName, packageVersion); const filePath = path.join(packageDirectoryPath, "package.json"); fs.writeFileSync(filePath, JSON.stringify(content, undefined, 2)); } @@ -48,7 +48,7 @@ export function generatePackage( } { - const content = getTsconfigJsonData(); + const content = generateTsconfigJsonData(); const filePath = path.join(packageDirectoryPath, "tsconfig.json"); fs.writeFileSync(filePath, JSON.stringify(content, undefined, 2)); } diff --git a/packages/ts/jns42-generator/src/generators/parsers-ts.ts b/packages/npm/jns42-generator/src/generators/parsers-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/parsers-ts.ts rename to packages/npm/jns42-generator/src/generators/parsers-ts.ts diff --git a/packages/ts/jns42-generator/src/generators/tsconfig-json.ts b/packages/npm/jns42-generator/src/generators/tsconfig-json.ts similarity index 65% rename from packages/ts/jns42-generator/src/generators/tsconfig-json.ts rename to packages/npm/jns42-generator/src/generators/tsconfig-json.ts index ca079811..67a6fcfa 100644 --- a/packages/ts/jns42-generator/src/generators/tsconfig-json.ts +++ b/packages/npm/jns42-generator/src/generators/tsconfig-json.ts @@ -1,4 +1,4 @@ -export function getTsconfigJsonData() { +export function generateTsconfigJsonData() { const content = { extends: "@tsconfig/node20", compilerOptions: { @@ -6,10 +6,9 @@ export function getTsconfigJsonData() { rootDir: "./src", sourceMap: true, declaration: true, - composite: true, - lib: ["ES2023"], + lib: ["es2023"], }, - include: ["src"], + include: ["./src"], }; return content; diff --git a/packages/ts/jns42-generator/src/generators/types-ts.ts b/packages/npm/jns42-generator/src/generators/types-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/types-ts.ts rename to packages/npm/jns42-generator/src/generators/types-ts.ts diff --git a/packages/ts/jns42-generator/src/generators/validators-ts.ts b/packages/npm/jns42-generator/src/generators/validators-ts.ts similarity index 100% rename from packages/ts/jns42-generator/src/generators/validators-ts.ts rename to packages/npm/jns42-generator/src/generators/validators-ts.ts diff --git a/packages/ts/jns42-generator/src/main.ts b/packages/npm/jns42-generator/src/main.ts similarity index 100% rename from packages/ts/jns42-generator/src/main.ts rename to packages/npm/jns42-generator/src/main.ts diff --git a/packages/ts/jns42-generator/src/models/index.ts b/packages/npm/jns42-generator/src/models/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/models/index.ts rename to packages/npm/jns42-generator/src/models/index.ts diff --git a/packages/ts/jns42-generator/src/models/specification.ts b/packages/npm/jns42-generator/src/models/specification.ts similarity index 100% rename from packages/ts/jns42-generator/src/models/specification.ts rename to packages/npm/jns42-generator/src/models/specification.ts diff --git a/packages/ts/jns42-generator/src/program.ts b/packages/npm/jns42-generator/src/program.ts similarity index 100% rename from packages/ts/jns42-generator/src/program.ts rename to packages/npm/jns42-generator/src/program.ts diff --git a/packages/ts/jns42-generator/src/programs/index.ts b/packages/npm/jns42-generator/src/programs/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/programs/index.ts rename to packages/npm/jns42-generator/src/programs/index.ts diff --git a/packages/ts/jns42-generator/src/programs/intermediate.ts b/packages/npm/jns42-generator/src/programs/intermediate.ts similarity index 100% rename from packages/ts/jns42-generator/src/programs/intermediate.ts rename to packages/npm/jns42-generator/src/programs/intermediate.ts diff --git a/packages/ts/jns42-generator/src/programs/package.ts b/packages/npm/jns42-generator/src/programs/package.ts similarity index 100% rename from packages/ts/jns42-generator/src/programs/package.ts rename to packages/npm/jns42-generator/src/programs/package.ts diff --git a/packages/ts/jns42-generator/src/programs/test.ts b/packages/npm/jns42-generator/src/programs/test.ts similarity index 100% rename from packages/ts/jns42-generator/src/programs/test.ts rename to packages/npm/jns42-generator/src/programs/test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/alias.test.ts b/packages/npm/jns42-generator/src/schema-transforms/alias.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/alias.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/alias.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/alias.ts b/packages/npm/jns42-generator/src/schema-transforms/alias.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/alias.ts rename to packages/npm/jns42-generator/src/schema-transforms/alias.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/explode.test.ts b/packages/npm/jns42-generator/src/schema-transforms/explode.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/explode.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/explode.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/explode.ts b/packages/npm/jns42-generator/src/schema-transforms/explode.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/explode.ts rename to packages/npm/jns42-generator/src/schema-transforms/explode.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/flatten.test.ts b/packages/npm/jns42-generator/src/schema-transforms/flatten.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/flatten.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/flatten.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/flatten.ts b/packages/npm/jns42-generator/src/schema-transforms/flatten.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/flatten.ts rename to packages/npm/jns42-generator/src/schema-transforms/flatten.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/flip-all-of-one-of.test.ts b/packages/npm/jns42-generator/src/schema-transforms/flip-all-of-one-of.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/flip-all-of-one-of.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/flip-all-of-one-of.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/flip-all-of-one-of.ts b/packages/npm/jns42-generator/src/schema-transforms/flip-all-of-one-of.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/flip-all-of-one-of.ts rename to packages/npm/jns42-generator/src/schema-transforms/flip-all-of-one-of.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/flush-parent.ts b/packages/npm/jns42-generator/src/schema-transforms/flush-parent.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/flush-parent.ts rename to packages/npm/jns42-generator/src/schema-transforms/flush-parent.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/index.ts b/packages/npm/jns42-generator/src/schema-transforms/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/index.ts rename to packages/npm/jns42-generator/src/schema-transforms/index.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/mockable.ts b/packages/npm/jns42-generator/src/schema-transforms/mockable.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/mockable.ts rename to packages/npm/jns42-generator/src/schema-transforms/mockable.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-all-of.test.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-all-of.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-all-of.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-all-of.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-all-of.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-all-of.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-all-of.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-all-of.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-any-of-choose.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-any-of-choose.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-any-of-choose.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-any-of-choose.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-any-of.test.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-any-of.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-any-of.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-any-of.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-any-of.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-any-of.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-any-of.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-any-of.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-if-then-else.test.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-if-then-else.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-if-then-else.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-if-then-else.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-if-then-else.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-if-then-else.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-if-then-else.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-if-then-else.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-one-of.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-one-of.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-one-of.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-one-of.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/resolve-parent.ts b/packages/npm/jns42-generator/src/schema-transforms/resolve-parent.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/resolve-parent.ts rename to packages/npm/jns42-generator/src/schema-transforms/resolve-parent.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/single-type.test.ts b/packages/npm/jns42-generator/src/schema-transforms/single-type.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/single-type.test.ts rename to packages/npm/jns42-generator/src/schema-transforms/single-type.test.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/single-type.ts b/packages/npm/jns42-generator/src/schema-transforms/single-type.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/single-type.ts rename to packages/npm/jns42-generator/src/schema-transforms/single-type.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/unalias.ts b/packages/npm/jns42-generator/src/schema-transforms/unalias.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/unalias.ts rename to packages/npm/jns42-generator/src/schema-transforms/unalias.ts diff --git a/packages/ts/jns42-generator/src/schema-transforms/unique.ts b/packages/npm/jns42-generator/src/schema-transforms/unique.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema-transforms/unique.ts rename to packages/npm/jns42-generator/src/schema-transforms/unique.ts diff --git a/packages/ts/jns42-generator/src/schema/arena.ts b/packages/npm/jns42-generator/src/schema/arena.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema/arena.ts rename to packages/npm/jns42-generator/src/schema/arena.ts diff --git a/packages/ts/jns42-generator/src/schema/index.ts b/packages/npm/jns42-generator/src/schema/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema/index.ts rename to packages/npm/jns42-generator/src/schema/index.ts diff --git a/packages/ts/jns42-generator/src/schema/merge.ts b/packages/npm/jns42-generator/src/schema/merge.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema/merge.ts rename to packages/npm/jns42-generator/src/schema/merge.ts diff --git a/packages/ts/jns42-generator/src/schema/model.ts b/packages/npm/jns42-generator/src/schema/model.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema/model.ts rename to packages/npm/jns42-generator/src/schema/model.ts diff --git a/packages/ts/jns42-generator/src/schema/selectors.ts b/packages/npm/jns42-generator/src/schema/selectors.ts similarity index 100% rename from packages/ts/jns42-generator/src/schema/selectors.ts rename to packages/npm/jns42-generator/src/schema/selectors.ts diff --git a/packages/ts/jns42-generator/src/utils/arena.ts b/packages/npm/jns42-generator/src/utils/arena.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/arena.ts rename to packages/npm/jns42-generator/src/utils/arena.ts diff --git a/packages/ts/jns42-generator/src/utils/banner.ts b/packages/npm/jns42-generator/src/utils/banner.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/banner.ts rename to packages/npm/jns42-generator/src/utils/banner.ts diff --git a/packages/ts/jns42-generator/src/utils/calculate-hash.test.ts b/packages/npm/jns42-generator/src/utils/calculate-hash.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/calculate-hash.test.ts rename to packages/npm/jns42-generator/src/utils/calculate-hash.test.ts diff --git a/packages/ts/jns42-generator/src/utils/calculate-hash.ts b/packages/npm/jns42-generator/src/utils/calculate-hash.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/calculate-hash.ts rename to packages/npm/jns42-generator/src/utils/calculate-hash.ts diff --git a/packages/ts/jns42-generator/src/utils/choose.test.ts b/packages/npm/jns42-generator/src/utils/choose.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/choose.test.ts rename to packages/npm/jns42-generator/src/utils/choose.test.ts diff --git a/packages/ts/jns42-generator/src/utils/choose.ts b/packages/npm/jns42-generator/src/utils/choose.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/choose.ts rename to packages/npm/jns42-generator/src/utils/choose.ts diff --git a/packages/ts/jns42-generator/src/utils/comments.ts b/packages/npm/jns42-generator/src/utils/comments.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/comments.ts rename to packages/npm/jns42-generator/src/utils/comments.ts diff --git a/packages/ts/jns42-generator/src/utils/deep-equal.test.ts b/packages/npm/jns42-generator/src/utils/deep-equal.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/deep-equal.test.ts rename to packages/npm/jns42-generator/src/utils/deep-equal.test.ts diff --git a/packages/ts/jns42-generator/src/utils/deep-equal.ts b/packages/npm/jns42-generator/src/utils/deep-equal.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/deep-equal.ts rename to packages/npm/jns42-generator/src/utils/deep-equal.ts diff --git a/packages/ts/jns42-generator/src/utils/deep-unique.test.ts b/packages/npm/jns42-generator/src/utils/deep-unique.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/deep-unique.test.ts rename to packages/npm/jns42-generator/src/utils/deep-unique.test.ts diff --git a/packages/ts/jns42-generator/src/utils/deep-unique.ts b/packages/npm/jns42-generator/src/utils/deep-unique.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/deep-unique.ts rename to packages/npm/jns42-generator/src/utils/deep-unique.ts diff --git a/packages/ts/jns42-generator/src/utils/empty.ts b/packages/npm/jns42-generator/src/utils/empty.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/empty.ts rename to packages/npm/jns42-generator/src/utils/empty.ts diff --git a/packages/ts/jns42-generator/src/utils/index.ts b/packages/npm/jns42-generator/src/utils/index.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/index.ts rename to packages/npm/jns42-generator/src/utils/index.ts diff --git a/packages/ts/jns42-generator/src/utils/iterable-text-template.ts b/packages/npm/jns42-generator/src/utils/iterable-text-template.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/iterable-text-template.ts rename to packages/npm/jns42-generator/src/utils/iterable-text-template.ts diff --git a/packages/ts/jns42-generator/src/utils/iterable.ts b/packages/npm/jns42-generator/src/utils/iterable.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/iterable.ts rename to packages/npm/jns42-generator/src/utils/iterable.ts diff --git a/packages/ts/jns42-generator/src/utils/load.ts b/packages/npm/jns42-generator/src/utils/load.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/load.ts rename to packages/npm/jns42-generator/src/utils/load.ts diff --git a/packages/ts/jns42-generator/src/utils/math.test.ts b/packages/npm/jns42-generator/src/utils/math.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/math.test.ts rename to packages/npm/jns42-generator/src/utils/math.test.ts diff --git a/packages/ts/jns42-generator/src/utils/math.ts b/packages/npm/jns42-generator/src/utils/math.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/math.ts rename to packages/npm/jns42-generator/src/utils/math.ts diff --git a/packages/ts/jns42-generator/src/utils/merge.ts b/packages/npm/jns42-generator/src/utils/merge.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/merge.ts rename to packages/npm/jns42-generator/src/utils/merge.ts diff --git a/packages/ts/jns42-generator/src/utils/name.ts b/packages/npm/jns42-generator/src/utils/name.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/name.ts rename to packages/npm/jns42-generator/src/utils/name.ts diff --git a/packages/ts/jns42-generator/src/utils/namer.test.ts b/packages/npm/jns42-generator/src/utils/namer.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/namer.test.ts rename to packages/npm/jns42-generator/src/utils/namer.test.ts diff --git a/packages/ts/jns42-generator/src/utils/namer.ts b/packages/npm/jns42-generator/src/utils/namer.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/namer.ts rename to packages/npm/jns42-generator/src/utils/namer.ts diff --git a/packages/ts/jns42-generator/src/utils/normalize-object.test.ts b/packages/npm/jns42-generator/src/utils/normalize-object.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/normalize-object.test.ts rename to packages/npm/jns42-generator/src/utils/normalize-object.test.ts diff --git a/packages/ts/jns42-generator/src/utils/normalize-object.ts b/packages/npm/jns42-generator/src/utils/normalize-object.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/normalize-object.ts rename to packages/npm/jns42-generator/src/utils/normalize-object.ts diff --git a/packages/ts/jns42-generator/src/utils/package.ts b/packages/npm/jns42-generator/src/utils/package.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/package.ts rename to packages/npm/jns42-generator/src/utils/package.ts diff --git a/packages/ts/jns42-generator/src/utils/product.test.ts b/packages/npm/jns42-generator/src/utils/product.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/product.test.ts rename to packages/npm/jns42-generator/src/utils/product.test.ts diff --git a/packages/ts/jns42-generator/src/utils/product.ts b/packages/npm/jns42-generator/src/utils/product.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/product.ts rename to packages/npm/jns42-generator/src/utils/product.ts diff --git a/packages/ts/jns42-generator/src/utils/properties.test.ts b/packages/npm/jns42-generator/src/utils/properties.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/properties.test.ts rename to packages/npm/jns42-generator/src/utils/properties.test.ts diff --git a/packages/ts/jns42-generator/src/utils/properties.ts b/packages/npm/jns42-generator/src/utils/properties.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/properties.ts rename to packages/npm/jns42-generator/src/utils/properties.ts diff --git a/packages/ts/jns42-generator/src/utils/read-node.test.ts b/packages/npm/jns42-generator/src/utils/read-node.test.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/read-node.test.ts rename to packages/npm/jns42-generator/src/utils/read-node.test.ts diff --git a/packages/ts/jns42-generator/src/utils/read-node.ts b/packages/npm/jns42-generator/src/utils/read-node.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/read-node.ts rename to packages/npm/jns42-generator/src/utils/read-node.ts diff --git a/packages/ts/jns42-generator/src/utils/root.ts b/packages/npm/jns42-generator/src/utils/root.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/root.ts rename to packages/npm/jns42-generator/src/utils/root.ts diff --git a/packages/ts/jns42-generator/src/utils/schema.ts b/packages/npm/jns42-generator/src/utils/schema.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/schema.ts rename to packages/npm/jns42-generator/src/utils/schema.ts diff --git a/packages/ts/jns42-generator/src/utils/url.ts b/packages/npm/jns42-generator/src/utils/url.ts similarity index 100% rename from packages/ts/jns42-generator/src/utils/url.ts rename to packages/npm/jns42-generator/src/utils/url.ts diff --git a/packages/ts/jns42-generator/test-fixtures b/packages/npm/jns42-generator/test-fixtures similarity index 100% rename from packages/ts/jns42-generator/test-fixtures rename to packages/npm/jns42-generator/test-fixtures diff --git a/packages/ts/jns42-generator/tsconfig.json b/packages/npm/jns42-generator/tsconfig.json similarity index 100% rename from packages/ts/jns42-generator/tsconfig.json rename to packages/npm/jns42-generator/tsconfig.json diff --git a/packages/rs/jns42-generator/.vscode/extensions.json b/packages/rs/jns42-generator/.vscode/extensions.json deleted file mode 100644 index 0485e979..00000000 --- a/packages/rs/jns42-generator/.vscode/extensions.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "rust-lang.rust-analyzer", - "vadimcn.vscode-lldb", - "ryanluker.vscode-coverage-gutters", - "editorconfig.editorconfig", - "tamasfe.even-better-toml" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [] -} diff --git a/packages/rs/jns42-generator/.vscode/launch.json b/packages/rs/jns42-generator/.vscode/launch.json deleted file mode 100644 index 9c9cd49a..00000000 --- a/packages/rs/jns42-generator/.vscode/launch.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests", - "cargo": { - "args": ["test", "--no-run", "--lib", "--package=jns42-generator", "--all-targets"], - "filter": { - "name": "jns42-generator", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package string-or-boolean", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/string-or-boolean.json", - "--package-directory", - ".package/string-or-boolean", - "--package-name", - "string-or-boolean", - "--package-version", - "0.0.0", - "--generate-test" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package simple-object", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/simple-object.json", - "--package-directory", - ".package/simple-object", - "--package-name", - "simple-object", - "--package-version", - "0.0.0", - "--generate-test" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package array-with-ref", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/array-with-ref.json", - "--package-directory", - ".package/array-with-ref", - "--package-name", - "array-with-ref", - "--package-version", - "0.0.0", - "--generate-test" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package openapi_v3-0_2021-09-28", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/openapi/openapi_v3-0_2021-09-28.json", - "--package-directory", - ".package/openapi_v3-0_2021-09-28", - "--package-name", - "openapi_v3-0_2021-09-28", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package openapi_v3-1_2022-10-07", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/openapi/openapi_v3-1_2022-10-07.json", - "--package-directory", - ".package/openapi_v3-1_2022-10-07", - "--package-name", - "openapi_v3-1_2022-10-07", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package draft-2020-12", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/draft-2020-12/schema", - "--package-directory", - ".package/draft-2020-12", - "--package-name", - "draft-2020-12", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package draft-2019-09", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/draft-2019-09/schema", - "--package-directory", - ".package/draft-2019-09", - "--package-name", - "draft-2019-09", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package draft-07", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/draft-07/schema", - "--package-directory", - ".package/draft-07", - "--package-name", - "draft-07", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package draft-06", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/draft-06/schema", - "--package-directory", - ".package/draft-06", - "--package-name", - "draft-06", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package draft-04", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/draft-04/schema", - "--package-directory", - ".package/draft-04", - "--package-name", - "draft-04", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package output-2020-12", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/output-2020-12/schema", - "--package-directory", - ".package/output-2020-12", - "--package-name", - "output-2020-12", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "package output-2019-09", - "cargo": { - "args": ["build", "--bin=jns42-generator", "--package=jns42-generator"], - "filter": { - "name": "jns42-generator", - "kind": "bin" - } - }, - "args": [ - "package", - "file://${workspaceFolder}/fixtures/output-2019-09/schema", - "--package-directory", - ".package/output-2019-09", - "--package-name", - "output-2019-09", - "--package-version", - "0.0.0" - ], - "cwd": "${workspaceFolder}" - } - ] -} diff --git a/packages/rs/jns42-generator/.vscode/settings.json b/packages/rs/jns42-generator/.vscode/settings.json deleted file mode 100644 index b82b9368..00000000 --- a/packages/rs/jns42-generator/.vscode/settings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll": true, - "source.organizeImports": true - }, - "editor.rulers": [100], - "rust-analyzer.check.command": "clippy" -} diff --git a/packages/rs/jns42-generator/Cargo.toml b/packages/rs/jns42-generator/Cargo.toml deleted file mode 100644 index 7472b4e9..00000000 --- a/packages/rs/jns42-generator/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "jns42_generator" -version = "0.0.0" -edition = "2021" -description = "Generate structs and validators from json schema" -license = "ISC" -authors = ["Elmer Bulthuis"] -homepage = "https://www.JsonSchema42.org" -keywords = ["json", "schema", "generator"] -repository = "git@github.com:JsonSchema42/jns42-generator-ts" - -[badges] -maintenance = { status = "actively-developed" } - -[dependencies] -clap = { version = "4.1.14", features = ["derive"] } -serde = "1.0.158" -serde_json = "1.0.94" -url = "2.3.1" -urlencoding = "2.1.2" - -[lib] -path = "src/lib.rs" - -[[bin]] -name = "jns42_generator" -path = "src/main.rs" diff --git a/packages/rs/jns42-generator/fixtures/array-with-ref.json b/packages/rs/jns42-generator/fixtures/array-with-ref.json deleted file mode 100644 index a332b365..00000000 --- a/packages/rs/jns42-generator/fixtures/array-with-ref.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://jns42-generator.org/array-with-ref", - "description": "So this is an array!", - "type": ["array"], - "items": { - "$ref": "simple-object.json" - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-04/schema b/packages/rs/jns42-generator/fixtures/draft-04/schema deleted file mode 100644 index bcbb8474..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-04/schema +++ /dev/null @@ -1,149 +0,0 @@ -{ - "id": "http://json-schema.org/draft-04/schema#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] - }, - "simpleTypes": { - "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "uniqueItems": true - } - }, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "$schema": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "boolean", - "default": false - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "boolean", - "default": false - }, - "maxLength": { "$ref": "#/definitions/positiveInteger" }, - "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/positiveInteger" }, - "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxProperties": { "$ref": "#/definitions/positiveInteger" }, - "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "dependencies": { - "exclusiveMaximum": [ "maximum" ], - "exclusiveMinimum": [ "minimum" ] - }, - "default": {} -} diff --git a/packages/rs/jns42-generator/fixtures/draft-06/schema b/packages/rs/jns42-generator/fixtures/draft-06/schema deleted file mode 100644 index bd3e763b..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-06/schema +++ /dev/null @@ -1,155 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "$id": "http://json-schema.org/draft-06/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "examples": { - "type": "array", - "items": {} - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "propertyNames": { "$ref": "#" }, - "const": {}, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": {} -} diff --git a/packages/rs/jns42-generator/fixtures/draft-07/schema b/packages/rs/jns42-generator/fixtures/draft-07/schema deleted file mode 100644 index fb92c7f7..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-07/schema +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": true - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "propertyNames": { "$ref": "#" }, - "const": true, - "enum": { - "type": "array", - "items": true, - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "contentMediaType": { "type": "string" }, - "contentEncoding": { "type": "string" }, - "if": { "$ref": "#" }, - "then": { "$ref": "#" }, - "else": { "$ref": "#" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": true -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/applicator b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/applicator deleted file mode 100644 index 24a1cc4f..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/applicator +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/applicator", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/applicator": true - }, - "$recursiveAnchor": true, - - "title": "Applicator vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "additionalItems": { "$recursiveRef": "#" }, - "unevaluatedItems": { "$recursiveRef": "#" }, - "items": { - "anyOf": [ - { "$recursiveRef": "#" }, - { "$ref": "#/$defs/schemaArray" } - ] - }, - "contains": { "$recursiveRef": "#" }, - "additionalProperties": { "$recursiveRef": "#" }, - "unevaluatedProperties": { "$recursiveRef": "#" }, - "properties": { - "type": "object", - "additionalProperties": { "$recursiveRef": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$recursiveRef": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependentSchemas": { - "type": "object", - "additionalProperties": { - "$recursiveRef": "#" - } - }, - "propertyNames": { "$recursiveRef": "#" }, - "if": { "$recursiveRef": "#" }, - "then": { "$recursiveRef": "#" }, - "else": { "$recursiveRef": "#" }, - "allOf": { "$ref": "#/$defs/schemaArray" }, - "anyOf": { "$ref": "#/$defs/schemaArray" }, - "oneOf": { "$ref": "#/$defs/schemaArray" }, - "not": { "$recursiveRef": "#" } - }, - "$defs": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$recursiveRef": "#" } - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/content b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/content deleted file mode 100644 index f6752a8e..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/content +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/content", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/content": true - }, - "$recursiveAnchor": true, - - "title": "Content vocabulary meta-schema", - - "type": ["object", "boolean"], - "properties": { - "contentMediaType": { "type": "string" }, - "contentEncoding": { "type": "string" }, - "contentSchema": { "$recursiveRef": "#" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/core b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/core deleted file mode 100644 index eb708a56..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/core +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/core", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/core": true - }, - "$recursiveAnchor": true, - - "title": "Core vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference", - "$comment": "Non-empty fragments not allowed.", - "pattern": "^[^#]*#?$" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$anchor": { - "type": "string", - "pattern": "^[A-Za-z][-A-Za-z0-9.:_]*$" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$recursiveRef": { - "type": "string", - "format": "uri-reference" - }, - "$recursiveAnchor": { - "type": "boolean", - "default": false - }, - "$vocabulary": { - "type": "object", - "propertyNames": { - "type": "string", - "format": "uri" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "$comment": { - "type": "string" - }, - "$defs": { - "type": "object", - "additionalProperties": { "$recursiveRef": "#" }, - "default": {} - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/format b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/format deleted file mode 100644 index 09bbfdda..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/format +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/format", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/format": true - }, - "$recursiveAnchor": true, - - "title": "Format vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "format": { "type": "string" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/meta-data b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/meta-data deleted file mode 100644 index da04cff6..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/meta-data +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/meta-data", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/meta-data": true - }, - "$recursiveAnchor": true, - - "title": "Meta-data vocabulary meta-schema", - - "type": ["object", "boolean"], - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "deprecated": { - "type": "boolean", - "default": false - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/validation b/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/validation deleted file mode 100644 index 9f59677b..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/meta/validation +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/meta/validation", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/validation": true - }, - "$recursiveAnchor": true, - - "title": "Validation vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/$defs/nonNegativeInteger" }, - "minLength": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "maxItems": { "$ref": "#/$defs/nonNegativeInteger" }, - "minItems": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxContains": { "$ref": "#/$defs/nonNegativeInteger" }, - "minContains": { - "$ref": "#/$defs/nonNegativeInteger", - "default": 1 - }, - "maxProperties": { "$ref": "#/$defs/nonNegativeInteger" }, - "minProperties": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/$defs/stringArray" }, - "dependentRequired": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/stringArray" - } - }, - "const": true, - "enum": { - "type": "array", - "items": true - }, - "type": { - "anyOf": [ - { "$ref": "#/$defs/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/$defs/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - } - }, - "$defs": { - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "$ref": "#/$defs/nonNegativeInteger", - "default": 0 - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2019-09/schema b/packages/rs/jns42-generator/fixtures/draft-2019-09/schema deleted file mode 100644 index 2248a0c8..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2019-09/schema +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/schema", - "$vocabulary": { - "https://json-schema.org/draft/2019-09/vocab/core": true, - "https://json-schema.org/draft/2019-09/vocab/applicator": true, - "https://json-schema.org/draft/2019-09/vocab/validation": true, - "https://json-schema.org/draft/2019-09/vocab/meta-data": true, - "https://json-schema.org/draft/2019-09/vocab/format": false, - "https://json-schema.org/draft/2019-09/vocab/content": true - }, - "$recursiveAnchor": true, - - "title": "Core and Validation specifications meta-schema", - "allOf": [ - {"$ref": "meta/core"}, - {"$ref": "meta/applicator"}, - {"$ref": "meta/validation"}, - {"$ref": "meta/meta-data"}, - {"$ref": "meta/format"}, - {"$ref": "meta/content"} - ], - "type": ["object", "boolean"], - "properties": { - "definitions": { - "$comment": "While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.", - "type": "object", - "additionalProperties": { "$recursiveRef": "#" }, - "default": {} - }, - "dependencies": { - "$comment": "\"dependencies\" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to \"dependentSchemas\" and \"dependentRequired\"", - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$recursiveRef": "#" }, - { "$ref": "meta/validation#/$defs/stringArray" } - ] - } - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/applicator b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/applicator deleted file mode 100644 index ca699230..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/applicator +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/applicator", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/applicator": true - }, - "$dynamicAnchor": "meta", - - "title": "Applicator vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "prefixItems": { "$ref": "#/$defs/schemaArray" }, - "items": { "$dynamicRef": "#meta" }, - "contains": { "$dynamicRef": "#meta" }, - "additionalProperties": { "$dynamicRef": "#meta" }, - "properties": { - "type": "object", - "additionalProperties": { "$dynamicRef": "#meta" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$dynamicRef": "#meta" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependentSchemas": { - "type": "object", - "additionalProperties": { "$dynamicRef": "#meta" }, - "default": {} - }, - "propertyNames": { "$dynamicRef": "#meta" }, - "if": { "$dynamicRef": "#meta" }, - "then": { "$dynamicRef": "#meta" }, - "else": { "$dynamicRef": "#meta" }, - "allOf": { "$ref": "#/$defs/schemaArray" }, - "anyOf": { "$ref": "#/$defs/schemaArray" }, - "oneOf": { "$ref": "#/$defs/schemaArray" }, - "not": { "$dynamicRef": "#meta" } - }, - "$defs": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$dynamicRef": "#meta" } - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/content b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/content deleted file mode 100644 index 2f6e056a..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/content +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/content", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/content": true - }, - "$dynamicAnchor": "meta", - - "title": "Content vocabulary meta-schema", - - "type": ["object", "boolean"], - "properties": { - "contentEncoding": { "type": "string" }, - "contentMediaType": { "type": "string" }, - "contentSchema": { "$dynamicRef": "#meta" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/core b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/core deleted file mode 100644 index dfc092d9..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/core +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/core", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/core": true - }, - "$dynamicAnchor": "meta", - - "title": "Core vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "$id": { - "$ref": "#/$defs/uriReferenceString", - "$comment": "Non-empty fragments not allowed.", - "pattern": "^[^#]*#?$" - }, - "$schema": { "$ref": "#/$defs/uriString" }, - "$ref": { "$ref": "#/$defs/uriReferenceString" }, - "$anchor": { "$ref": "#/$defs/anchorString" }, - "$dynamicRef": { "$ref": "#/$defs/uriReferenceString" }, - "$dynamicAnchor": { "$ref": "#/$defs/anchorString" }, - "$vocabulary": { - "type": "object", - "propertyNames": { "$ref": "#/$defs/uriString" }, - "additionalProperties": { - "type": "boolean" - } - }, - "$comment": { - "type": "string" - }, - "$defs": { - "type": "object", - "additionalProperties": { "$dynamicRef": "#meta" } - } - }, - "$defs": { - "anchorString": { - "type": "string", - "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$" - }, - "uriString": { - "type": "string", - "format": "uri" - }, - "uriReferenceString": { - "type": "string", - "format": "uri-reference" - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/format-annotation b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/format-annotation deleted file mode 100644 index 51ef7ea1..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/format-annotation +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/format-annotation": true - }, - "$dynamicAnchor": "meta", - - "title": "Format vocabulary meta-schema for annotation results", - "type": ["object", "boolean"], - "properties": { - "format": { "type": "string" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/meta-data b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/meta-data deleted file mode 100644 index 05cbc22a..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/meta-data +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/meta-data", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/meta-data": true - }, - "$dynamicAnchor": "meta", - - "title": "Meta-data vocabulary meta-schema", - - "type": ["object", "boolean"], - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "deprecated": { - "type": "boolean", - "default": false - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/unevaluated b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/unevaluated deleted file mode 100644 index 5f62a3ff..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/unevaluated +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/unevaluated": true - }, - "$dynamicAnchor": "meta", - - "title": "Unevaluated applicator vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "unevaluatedItems": { "$dynamicRef": "#meta" }, - "unevaluatedProperties": { "$dynamicRef": "#meta" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/validation b/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/validation deleted file mode 100644 index 606b87ba..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/meta/validation +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/meta/validation", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/validation": true - }, - "$dynamicAnchor": "meta", - - "title": "Validation vocabulary meta-schema", - "type": ["object", "boolean"], - "properties": { - "type": { - "anyOf": [ - { "$ref": "#/$defs/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/$defs/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "const": true, - "enum": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/$defs/nonNegativeInteger" }, - "minLength": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "maxItems": { "$ref": "#/$defs/nonNegativeInteger" }, - "minItems": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxContains": { "$ref": "#/$defs/nonNegativeInteger" }, - "minContains": { - "$ref": "#/$defs/nonNegativeInteger", - "default": 1 - }, - "maxProperties": { "$ref": "#/$defs/nonNegativeInteger" }, - "minProperties": { "$ref": "#/$defs/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/$defs/stringArray" }, - "dependentRequired": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/stringArray" - } - } - }, - "$defs": { - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "$ref": "#/$defs/nonNegativeInteger", - "default": 0 - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/draft-2020-12/schema b/packages/rs/jns42-generator/fixtures/draft-2020-12/schema deleted file mode 100644 index d5e2d31c..00000000 --- a/packages/rs/jns42-generator/fixtures/draft-2020-12/schema +++ /dev/null @@ -1,58 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/schema", - "$vocabulary": { - "https://json-schema.org/draft/2020-12/vocab/core": true, - "https://json-schema.org/draft/2020-12/vocab/applicator": true, - "https://json-schema.org/draft/2020-12/vocab/unevaluated": true, - "https://json-schema.org/draft/2020-12/vocab/validation": true, - "https://json-schema.org/draft/2020-12/vocab/meta-data": true, - "https://json-schema.org/draft/2020-12/vocab/format-annotation": true, - "https://json-schema.org/draft/2020-12/vocab/content": true - }, - "$dynamicAnchor": "meta", - - "title": "Core and Validation specifications meta-schema", - "allOf": [ - {"$ref": "meta/core"}, - {"$ref": "meta/applicator"}, - {"$ref": "meta/unevaluated"}, - {"$ref": "meta/validation"}, - {"$ref": "meta/meta-data"}, - {"$ref": "meta/format-annotation"}, - {"$ref": "meta/content"} - ], - "type": ["object", "boolean"], - "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.", - "properties": { - "definitions": { - "$comment": "\"definitions\" has been replaced by \"$defs\".", - "type": "object", - "additionalProperties": { "$dynamicRef": "#meta" }, - "deprecated": true, - "default": {} - }, - "dependencies": { - "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.", - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$dynamicRef": "#meta" }, - { "$ref": "meta/validation#/$defs/stringArray" } - ] - }, - "deprecated": true, - "default": {} - }, - "$recursiveAnchor": { - "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".", - "$ref": "meta/core#/$defs/anchorString", - "deprecated": true - }, - "$recursiveRef": { - "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".", - "$ref": "meta/core#/$defs/uriReferenceString", - "deprecated": true - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/output-2019-09/schema b/packages/rs/jns42-generator/fixtures/output-2019-09/schema deleted file mode 100644 index bef85935..00000000 --- a/packages/rs/jns42-generator/fixtures/output-2019-09/schema +++ /dev/null @@ -1,86 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "https://json-schema.org/draft/2019-09/output/schema", - "description": "A schema that validates the minimum requirements for validation output", - - "oneOf": [ - { "$ref": "#/$defs/flag" }, - { "$ref": "#/$defs/basic" }, - { "$ref": "#/$defs/detailed" }, - { "$ref": "#/$defs/verbose" } - ], - "$defs": { - "outputUnit":{ - "properties": { - "valid": { "type": "boolean" }, - "keywordLocation": { - "type": "string", - "format": "uri-reference" - }, - "absoluteKeywordLocation": { - "type": "string", - "format": "uri" - }, - "instanceLocation": { - "type": "string", - "format": "uri-reference" - }, - "errors": { - "$ref": "#/$defs/outputUnitArray" - }, - "annotations": { - "$ref": "#/$defs/outputUnitArray" - } - }, - "required": [ "valid", "keywordLocation", "instanceLocation" ], - "allOf": [ - { - "if": { - "properties": { - "valid": { "const": false } - } - }, - "then": { - "required": [ "errors" ] - } - }, - { - "if": { - "anyOf": [ - { - "properties": { - "keywordLocation": { - "pattern": "/\\$ref/" - } - } - }, - { - "properties": { - "keywordLocation": { - "pattern": "/\\$recursiveRef/" - } - } - } - ] - }, - "then": { - "required": [ "absoluteKeywordLocation" ] - } - } - ] - }, - "outputUnitArray": { - "type": "array", - "items": { "$ref": "#/$defs/outputUnit" } - }, - "flag": { - "properties": { - "valid": { "type": "boolean" } - }, - "required": [ "valid" ] - }, - "basic": { "$ref": "#/$defs/outputUnit" }, - "detailed": { "$ref": "#/$defs/outputUnit" }, - "verbose": { "$ref": "#/$defs/outputUnit" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/output-2020-12/schema b/packages/rs/jns42-generator/fixtures/output-2020-12/schema deleted file mode 100644 index 1eef288a..00000000 --- a/packages/rs/jns42-generator/fixtures/output-2020-12/schema +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://json-schema.org/draft/2020-12/output/schema", - "description": "A schema that validates the minimum requirements for validation output", - - "anyOf": [ - { "$ref": "#/$defs/flag" }, - { "$ref": "#/$defs/basic" }, - { "$ref": "#/$defs/detailed" }, - { "$ref": "#/$defs/verbose" } - ], - "$defs": { - "outputUnit":{ - "properties": { - "valid": { "type": "boolean" }, - "keywordLocation": { - "type": "string", - "format": "json-pointer" - }, - "absoluteKeywordLocation": { - "type": "string", - "format": "uri" - }, - "instanceLocation": { - "type": "string", - "format": "json-pointer" - }, - "error": { - "type": "string" - }, - "errors": { - "$ref": "#/$defs/outputUnitArray" - }, - "annotations": { - "$ref": "#/$defs/outputUnitArray" - } - }, - "required": [ "valid", "keywordLocation", "instanceLocation" ], - "allOf": [ - { - "if": { - "properties": { - "valid": { "const": false } - } - }, - "then": { - "anyOf": [ - { - "required": [ "error" ] - }, - { - "required": [ "errors" ] - } - ] - } - }, - { - "if": { - "anyOf": [ - { - "properties": { - "keywordLocation": { - "pattern": "/\\$ref/" - } - } - }, - { - "properties": { - "keywordLocation": { - "pattern": "/\\$dynamicRef/" - } - } - } - ] - }, - "then": { - "required": [ "absoluteKeywordLocation" ] - } - } - ] - }, - "outputUnitArray": { - "type": "array", - "items": { "$ref": "#/$defs/outputUnit" } - }, - "flag": { - "properties": { - "valid": { "type": "boolean" } - }, - "required": [ "valid" ] - }, - "basic": { "$ref": "#/$defs/outputUnit" }, - "detailed": { "$ref": "#/$defs/outputUnit" }, - "verbose": { "$ref": "#/$defs/outputUnit" } - } -} diff --git a/packages/rs/jns42-generator/fixtures/simple-object.json b/packages/rs/jns42-generator/fixtures/simple-object.json deleted file mode 100644 index d54f0f20..00000000 --- a/packages/rs/jns42-generator/fixtures/simple-object.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://jns42-generator.org/simple-object", - "description": "A very simple object", - "type": ["object"], - "required": ["id"], - "properties": { - "id": { - "description": "An identity", - "type": "integer", - "exclusiveMinimum": 0 - }, - "name": { - "description": "A name", - "type": "string", - "minLength": 2, - "maxLength": 20 - } - } -} diff --git a/packages/rs/jns42-generator/fixtures/string-or-boolean.json b/packages/rs/jns42-generator/fixtures/string-or-boolean.json deleted file mode 100644 index 2523059b..00000000 --- a/packages/rs/jns42-generator/fixtures/string-or-boolean.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://jns42-generator.org/string-or-boolean", - "description": "Please don't use this", - "deprecated": true, - "type": ["string", "boolean"] -} diff --git a/packages/rs/jns42-generator/src/main.rs b/packages/rs/jns42-generator/src/main.rs deleted file mode 100644 index 4d67dd0f..00000000 --- a/packages/rs/jns42-generator/src/main.rs +++ /dev/null @@ -1,11 +0,0 @@ -mod programs; -mod schemas; -mod utils; - -use clap::Parser; -use programs::{run_program, ProgramOptions}; - -fn main() { - let options = ProgramOptions::parse(); - run_program(options).unwrap() -} diff --git a/packages/rs/jns42-generator/src/schemas/manager.rs b/packages/rs/jns42-generator/src/schemas/manager.rs deleted file mode 100644 index 44c7f24b..00000000 --- a/packages/rs/jns42-generator/src/schemas/manager.rs +++ /dev/null @@ -1,140 +0,0 @@ -use super::{loader::LoaderBox, meta::MetaSchemaId}; -use crate::{schemas, utils::value_rc::ValueRc}; -use std::{collections::HashMap, fs::File, rc::Rc}; -use url::Url; - -#[derive(Default)] -pub struct Manager<'a> { - loaders: HashMap>, - retrieval_root_node_map: HashMap, - root_node_retrieval_map: HashMap, - root_node_meta_schema_id_map: HashMap, -} - -impl<'a> Manager<'a> { - pub fn new() -> Self { - Self { - loaders: vec![ - ( - MetaSchemaId::Draft202012, - Box::new(schemas::draft_2020_12::loader::LoaderImpl::new()) as LoaderBox, - ), - ( - MetaSchemaId::Draft201909, - Box::new(schemas::draft_2019_09::loader::LoaderImpl::new()), - ), - ( - MetaSchemaId::Draft07, - Box::new(schemas::draft_07::loader::LoaderImpl::new()), - ), - ( - MetaSchemaId::Draft06, - Box::new(schemas::draft_06::loader::LoaderImpl::new()), - ), - ( - MetaSchemaId::Draft04, - Box::new(schemas::draft_04::loader::LoaderImpl::new()), - ), - ] - .into_iter() - .collect(), - - ..Default::default() - } - } - - pub fn load_root_node( - &mut self, - node: Rc, - node_url: &Url, - default_meta_schema_id: MetaSchemaId, - ) -> Result<(), &'static str> { - let meta_schema_id = self.discover_meta_schema_id(node.clone(), default_meta_schema_id); - - let loader = self.loaders.get_mut(&meta_schema_id).unwrap(); - - let node_url = loader.get_root_node_url(node.clone(), node_url)?; - - loader.load_root_node(node, &node_url)?; - loader.index_root_node(&node_url)?; - - Ok(()) - } - - pub fn load_from_url( - &mut self, - node_url: &Url, - retrieval_url: &Url, - default_meta_schema_id: MetaSchemaId, - ) -> Result<(), &'static str> { - if self.retrieval_root_node_map.contains_key(retrieval_url) { - return Ok(()); - } - - let root_node = Self::fetch_json_from_url(retrieval_url)?; - - let meta_schema_id = - self.discover_meta_schema_id(root_node.clone(), default_meta_schema_id); - - let loader = self.loaders.get(&meta_schema_id).unwrap(); - - let node_url = loader.get_root_node_url(root_node.clone(), node_url)?; - - self.retrieval_root_node_map - .insert(retrieval_url.clone(), node_url.clone()); - self.root_node_retrieval_map - .insert(node_url.clone(), retrieval_url.clone()); - self.root_node_meta_schema_id_map - .insert(node_url.clone(), meta_schema_id); - - for (sub_node_url, sub_retrieval_url) in - loader.get_sub_node_urls(root_node.clone(), &node_url, retrieval_url)? - { - self.load_from_url(&sub_node_url, &sub_retrieval_url, meta_schema_id)?; - } - - self.load_root_node(root_node, &node_url, default_meta_schema_id)?; - - Ok(()) - } - - fn discover_meta_schema_id( - &self, - node: Rc, - default_meta_schema_id: MetaSchemaId, - ) -> MetaSchemaId { - for (schema_id, loader) in self.loaders.iter() { - if loader.is_schema_root_node(node.clone()) { - return *schema_id; - } - } - - default_meta_schema_id - } - - fn fetch_json_from_url(url: &Url) -> Result, &'static str> { - match url.scheme() { - "file" => { - let path = url.path(); - let reader = File::open(path).or(Err("error reading file"))?; - - let value: ValueRc = - serde_json::from_reader(reader).or(Err("error deserializing file content"))?; - let value = Rc::new(value); - - Ok(value) - } - _ => Err("not supported"), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn simple_manager() { - let _manager = Manager::new(); - } -} diff --git a/packages/rs/jns42-generator/src/schemas/meta.rs b/packages/rs/jns42-generator/src/schemas/meta.rs deleted file mode 100644 index e2635249..00000000 --- a/packages/rs/jns42-generator/src/schemas/meta.rs +++ /dev/null @@ -1,55 +0,0 @@ -use crate::schemas; -use clap::ValueEnum; -use std::fmt::Display; - -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, ValueEnum)] -pub enum MetaSchemaId { - Unknown, - - #[clap(name = schemas::draft_2020_12::meta::META_SCHEMA_ID)] - Draft202012, - - #[clap(name = schemas::draft_2019_09::meta::META_SCHEMA_ID)] - Draft201909, - - #[clap(name = schemas::draft_07::meta::META_SCHEMA_ID)] - Draft07, - - #[clap(name = schemas::draft_06::meta::META_SCHEMA_ID)] - Draft06, - - #[clap(name = schemas::draft_04::meta::META_SCHEMA_ID)] - Draft04, -} - -impl Display for MetaSchemaId { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.into()) - } -} - -impl From<&MetaSchemaId> for &'static str { - fn from(value: &MetaSchemaId) -> Self { - match value { - MetaSchemaId::Draft202012 => schemas::draft_2020_12::meta::META_SCHEMA_ID, - MetaSchemaId::Draft201909 => schemas::draft_2019_09::meta::META_SCHEMA_ID, - MetaSchemaId::Draft07 => schemas::draft_07::meta::META_SCHEMA_ID, - MetaSchemaId::Draft06 => schemas::draft_06::meta::META_SCHEMA_ID, - MetaSchemaId::Draft04 => schemas::draft_04::meta::META_SCHEMA_ID, - MetaSchemaId::Unknown => "", - } - } -} - -impl From<&str> for MetaSchemaId { - fn from(value: &str) -> Self { - match value { - schemas::draft_2020_12::meta::META_SCHEMA_ID => MetaSchemaId::Draft202012, - schemas::draft_2019_09::meta::META_SCHEMA_ID => MetaSchemaId::Draft201909, - schemas::draft_07::meta::META_SCHEMA_ID => MetaSchemaId::Draft07, - schemas::draft_06::meta::META_SCHEMA_ID => MetaSchemaId::Draft06, - schemas::draft_04::meta::META_SCHEMA_ID => MetaSchemaId::Draft04, - _ => MetaSchemaId::Unknown, - } - } -} diff --git a/packages/rs/jns42-generator/src/utils/mod.rs b/packages/rs/jns42-generator/src/utils/mod.rs deleted file mode 100644 index 88f11e6d..00000000 --- a/packages/rs/jns42-generator/src/utils/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod json_pointer; -pub mod value_rc; diff --git a/packages/ts/jns42-generator/src/generators/package-json.ts b/packages/ts/jns42-generator/src/generators/package-json.ts deleted file mode 100644 index 7ca90c99..00000000 --- a/packages/ts/jns42-generator/src/generators/package-json.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { PackageJson } from "type-fest"; -import { packageInfo } from "../utils/index.js"; - -export function getPackageJsonData(name: string, version: string) { - const content: PackageJson = { - name, - version, - sideEffects: false, - type: "module", - main: "./out/main.js", - types: "./out/main.d.ts", - files: ["./src/*", "./out/*"], - exports: { - ".": { - default: "./out/main.js", - }, - "./types": { - default: "./out/types.js", - }, - "./validators": { - default: "./out/validators.js", - }, - "./parsers": { - default: "./out/parsers.js", - }, - }, - scripts: { - prepack: "tsc --build", - pretest: "tsc --build", - build: "tsc --build", - clean: "rm -rf ./out && tsc --build --clean", - test: "node --test ./out/*.test.js", - }, - author: "", - license: "ISC", - dependencies: withDependencies(["@types/node"]), - devDependencies: withDependencies(["typescript", "@tsconfig/node20"]), - }; - - return content; -} - -function withDependencies(names: string[]) { - return names.reduce( - (o, name) => - Object.assign(o, { - [name]: packageInfo.dependencies?.[name] ?? packageInfo.devDependencies?.[name], - }), - {}, - ); -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 855cfa7a..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20", - "compilerOptions": { - "outDir": "./out", - "rootDir": "./src", - "sourceMap": true, - "declaration": true, - "composite": true, - "lib": ["ES2023", "DOM"], - }, - "include": ["src"], - "references": [{ "path": "packages/ts/jns42-generator" }], -}