@modulify/validator 0.0.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-53c2b231a6.zip +0 -0
- package/.yarn/cache/@babel-code-frame-npm-7.23.5-cb10d08de6-a10e843595.zip +0 -0
- package/.yarn/cache/@babel-helper-string-parser-npm-7.25.7-352069de58-73ef2ceb81.zip +0 -0
- package/.yarn/cache/@babel-helper-string-parser-npm-7.27.1-d1471e0598-8bda3448e0.zip +0 -0
- package/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-dcad63db34.zip +0 -0
- package/.yarn/cache/@babel-helper-validator-identifier-npm-7.25.7-1c758f0472-07438e5bf0.zip +0 -0
- package/.yarn/cache/@babel-helper-validator-identifier-npm-7.28.5-1953d49d2b-42aaebed91.zip +0 -0
- package/.yarn/cache/@babel-highlight-npm-7.23.4-2a9f2d2538-fbff9fcb2f.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.25.8-fda12195b5-a1a13845b7.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.29.0-c605c63e8b-333b2aa761.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.25.8-44acfff5f6-55ca2d6df6.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.29.0-6c2fa77581-23cc3466e8.zip +0 -0
- package/.yarn/cache/@bcoe-v8-coverage-npm-1.0.2-e80fdc21ac-1eb1dc93cc.zip +0 -0
- package/.yarn/cache/@commitlint-cli-npm-20.4.3-7b788c74b9-1f54b6870a.zip +0 -0
- package/.yarn/cache/@commitlint-config-conventional-npm-20.4.3-aa90460b69-c7c6fb0b32.zip +0 -0
- package/.yarn/cache/@commitlint-config-validator-npm-20.4.3-456f7d3da8-e65f2bd3cc.zip +0 -0
- package/.yarn/cache/@commitlint-ensure-npm-20.4.3-432e5ad329-aa1f42317a.zip +0 -0
- package/.yarn/cache/@commitlint-execute-rule-npm-20.0.0-6eb8155492-a1035ae9d6.zip +0 -0
- package/.yarn/cache/@commitlint-format-npm-20.4.3-ebe3e8cb04-e221f61a07.zip +0 -0
- package/.yarn/cache/@commitlint-is-ignored-npm-20.4.3-69e200640d-bc118de0aa.zip +0 -0
- package/.yarn/cache/@commitlint-lint-npm-20.4.3-c9940afaeb-e6af7cbbf9.zip +0 -0
- package/.yarn/cache/@commitlint-load-npm-20.4.3-81ae2db04a-80fb52e259.zip +0 -0
- package/.yarn/cache/@commitlint-message-npm-20.4.3-e9b5d77cad-16f7a67d17.zip +0 -0
- package/.yarn/cache/@commitlint-parse-npm-20.4.3-ecc5779976-404fecad36.zip +0 -0
- package/.yarn/cache/@commitlint-read-npm-20.4.3-32de5c8d85-3e7f88ad9b.zip +0 -0
- package/.yarn/cache/@commitlint-resolve-extends-npm-20.4.3-71b99c2779-09220329ba.zip +0 -0
- package/.yarn/cache/@commitlint-rules-npm-20.4.3-390ce9eadc-03348731a9.zip +0 -0
- package/.yarn/cache/@commitlint-to-lines-npm-20.0.0-888ee2239e-49bc05eb06.zip +0 -0
- package/.yarn/cache/@commitlint-top-level-npm-20.4.3-b0ef9fb207-52a1f59677.zip +0 -0
- package/.yarn/cache/@commitlint-types-npm-20.4.3-3d079b12ab-2181f9696f.zip +0 -0
- package/.yarn/cache/@cspotcode-source-map-support-npm-0.8.1-964f2de99d-05c5368c13.zip +0 -0
- package/.yarn/cache/@esbuild-linux-x64-npm-0.27.3-2041dd7b27-10c0.zip +0 -0
- package/.yarn/cache/@eslint-community-eslint-utils-npm-4.9.1-30ad3d49de-dc4ab5e3e3.zip +0 -0
- package/.yarn/cache/@eslint-community-regexpp-npm-4.12.2-3d54624470-fddcbc6685.zip +0 -0
- package/.yarn/cache/@eslint-config-array-npm-0.23.3-19b1c24f51-7c19027acf.zip +0 -0
- package/.yarn/cache/@eslint-config-helpers-npm-0.5.3-b60fa10f11-c836476e83.zip +0 -0
- package/.yarn/cache/@eslint-core-npm-1.1.1-bca32bf928-129c654c78.zip +0 -0
- package/.yarn/cache/@eslint-js-npm-10.0.1-c30b85ca06-9f3fcaf71b.zip +0 -0
- package/.yarn/cache/@eslint-object-schema-npm-3.0.3-4c45388d6c-4abbb7cba5.zip +0 -0
- package/.yarn/cache/@eslint-plugin-kit-npm-0.6.1-fafe413a70-f8354a7b92.zip +0 -0
- package/.yarn/cache/@gar-promise-retry-npm-1.0.2-960b209ddf-748a84fb0a.zip +0 -0
- package/.yarn/cache/@humanfs-core-npm-0.19.1-e2e7aaeb6e-aa4e015217.zip +0 -0
- package/.yarn/cache/@humanfs-node-npm-0.16.6-6ee2cad587-8356359c9f.zip +0 -0
- package/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-909b69c3b8.zip +0 -0
- package/.yarn/cache/@humanwhocodes-retry-npm-0.3.1-9d87bf92c6-f0da1282df.zip +0 -0
- package/.yarn/cache/@humanwhocodes-retry-npm-0.4.3-a8d7ca1663-3775bb3008.zip +0 -0
- package/.yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip +0 -0
- package/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-0dbc9e29bc.zip +0 -0
- package/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.2-5bc4245992-d502e6fb51.zip +0 -0
- package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-0c6b5ae663.zip +0 -0
- package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.0-dfd9126d71-2eb864f276.zip +0 -0
- package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.5-5189d9fc79-f9e538f302.zip +0 -0
- package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.31-1ae81d75ac-4b30ec8cd5.zip +0 -0
- package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.9-91625cd7fb-fa425b606d.zip +0 -0
- package/.yarn/cache/@microsoft-api-extractor-model-npm-7.33.4-65dc0810a1-c71569e59a.zip +0 -0
- package/.yarn/cache/@microsoft-api-extractor-npm-7.57.6-3ff3fa89f4-2f4598cc6b.zip +0 -0
- package/.yarn/cache/@microsoft-tsdoc-config-npm-0.18.1-9e24f960a2-06507f7ced.zip +0 -0
- package/.yarn/cache/@microsoft-tsdoc-npm-0.16.0-9d3f19f1b6-8883bb0ed2.zip +0 -0
- package/.yarn/cache/@npmcli-agent-npm-4.0.0-502e5ae4f0-f7b5ce0f3d.zip +0 -0
- package/.yarn/cache/@npmcli-fs-npm-5.0.0-9d737ae2f3-26e376d780.zip +0 -0
- package/.yarn/cache/@polka-url-npm-1.0.0-next.28-024769eda8-acc5ea6259.zip +0 -0
- package/.yarn/cache/@rollup-pluginutils-npm-5.1.4-83ce21024f-6d58fbc6f1.zip +0 -0
- package/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.59.0-da6c703f69-10c0.zip +0 -0
- package/.yarn/cache/@rushstack-node-core-library-npm-5.20.3-c547457ad4-bc9b33c6be.zip +0 -0
- package/.yarn/cache/@rushstack-problem-matcher-npm-0.2.1-87bf7eb8c4-d6cf27f6bf.zip +0 -0
- package/.yarn/cache/@rushstack-rig-package-npm-0.7.2-5f0f64865a-2e2839fa9a.zip +0 -0
- package/.yarn/cache/@rushstack-terminal-npm-0.22.3-2934ccd0ff-0e81fe7543.zip +0 -0
- package/.yarn/cache/@rushstack-ts-command-line-npm-5.3.3-d220c0fef2-03d9e9989b.zip +0 -0
- package/.yarn/cache/@simple-libs-stream-utils-npm-1.2.0-db53dc026f-2788ac7b16.zip +0 -0
- package/.yarn/cache/@standard-schema-spec-npm-1.1.0-d3e5ccd2e2-d90f55acde.zip +0 -0
- package/.yarn/cache/@tsconfig-node10-npm-1.0.9-f2e2d20feb-c176a2c1e1.zip +0 -0
- package/.yarn/cache/@tsconfig-node12-npm-1.0.11-9710d1c61b-dddca2b553.zip +0 -0
- package/.yarn/cache/@tsconfig-node14-npm-1.0.3-15321421d2-67c1316d06.zip +0 -0
- package/.yarn/cache/@tsconfig-node16-npm-1.0.4-b7cb87d859-05f8f2734e.zip +0 -0
- package/.yarn/cache/@types-argparse-npm-1.0.38-657c15204c-4fc892da5d.zip +0 -0
- package/.yarn/cache/@types-chai-npm-5.2.3-5f61dbddda-e0ef1de3b6.zip +0 -0
- package/.yarn/cache/@types-deep-eql-npm-4.0.2-e6bc68cc92-bf3f811843.zip +0 -0
- package/.yarn/cache/@types-esrecurse-npm-4.3.1-237d34a55f-90dad74d5d.zip +0 -0
- package/.yarn/cache/@types-estree-npm-1.0.5-5b7faed3b4-b3b0e33428.zip +0 -0
- package/.yarn/cache/@types-estree-npm-1.0.6-b5e23f2ea2-cdfd751f6f.zip +0 -0
- package/.yarn/cache/@types-estree-npm-1.0.8-2195bac6d6-39d34d1afa.zip +0 -0
- package/.yarn/cache/@types-json-schema-npm-7.0.15-fd16381786-a996a745e6.zip +0 -0
- package/.yarn/cache/@types-node-npm-25.3.5-81ad2eb587-4cf0834a6f.zip +0 -0
- package/.yarn/cache/@typescript-eslint-eslint-plugin-npm-8.56.1-3df20cf10b-8a97e77779.zip +0 -0
- package/.yarn/cache/@typescript-eslint-parser-npm-8.56.1-3f9b1c2f30-61c9dab481.zip +0 -0
- package/.yarn/cache/@typescript-eslint-project-service-npm-8.56.1-766cc01259-ca61cde575.zip +0 -0
- package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.56.1-2d38e88a4b-89cc1af263.zip +0 -0
- package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.56.1-e35d1dd914-d03b64d7ff.zip +0 -0
- package/.yarn/cache/@typescript-eslint-type-utils-npm-8.56.1-e472908945-66517aed50.zip +0 -0
- package/.yarn/cache/@typescript-eslint-types-npm-8.56.1-09e50c3c54-e5a0318abd.zip +0 -0
- package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.56.1-bdca7e3c09-92f4421dac.zip +0 -0
- package/.yarn/cache/@typescript-eslint-utils-npm-8.56.1-aa0778f53a-d9ffd9b294.zip +0 -0
- package/.yarn/cache/@typescript-eslint-visitor-keys-npm-8.56.1-901d7b2e4d-86d97905de.zip +0 -0
- package/.yarn/cache/@vitest-coverage-v8-npm-4.0.18-62bb7f840e-e23e0da86f.zip +0 -0
- package/.yarn/cache/@vitest-expect-npm-4.0.18-03919ccd0b-123b0aa111.zip +0 -0
- package/.yarn/cache/@vitest-mocker-npm-4.0.18-118c87f90e-fb0a257e7e.zip +0 -0
- package/.yarn/cache/@vitest-pretty-format-npm-4.0.18-a73855e4a4-0086b8c88e.zip +0 -0
- package/.yarn/cache/@vitest-runner-npm-4.0.18-3dbdf3fb30-fdb4afa411.zip +0 -0
- package/.yarn/cache/@vitest-snapshot-npm-4.0.18-35134202ed-d3bfefa558.zip +0 -0
- package/.yarn/cache/@vitest-spy-npm-4.0.18-296c59dce4-6de537890b.zip +0 -0
- package/.yarn/cache/@vitest-ui-npm-4.0.18-2112b3c7d4-25ed45b529.zip +0 -0
- package/.yarn/cache/@vitest-utils-npm-4.0.18-b1c99a49e0-4a3c43c142.zip +0 -0
- package/.yarn/cache/@volar-language-core-npm-2.4.11-9f1617b8e0-ccc5de0c28.zip +0 -0
- package/.yarn/cache/@volar-language-core-npm-2.4.28-23fc3d6b92-d41f7327fe.zip +0 -0
- package/.yarn/cache/@volar-source-map-npm-2.4.11-1022b0cd34-8e5badf9f6.zip +0 -0
- package/.yarn/cache/@volar-source-map-npm-2.4.28-7517299eaf-24b0b02c7f.zip +0 -0
- package/.yarn/cache/@volar-typescript-npm-2.4.11-9486696485-bca9bda9c8.zip +0 -0
- package/.yarn/cache/@vue-compiler-core-npm-3.5.13-b0c91e9970-b89f3e3ca9.zip +0 -0
- package/.yarn/cache/@vue-compiler-dom-npm-3.5.13-8785a9ba19-8f424a7188.zip +0 -0
- package/.yarn/cache/@vue-compiler-vue2-npm-2.7.16-ac462b66cc-c76c3fad77.zip +0 -0
- package/.yarn/cache/@vue-language-core-npm-2.2.0-451bd2aafd-1c44cc4067.zip +0 -0
- package/.yarn/cache/@vue-shared-npm-3.5.13-519178ab33-2c940ef907.zip +0 -0
- package/.yarn/cache/abbrev-npm-4.0.0-7d848a1ef0-b4cc169352.zip +0 -0
- package/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-4c54868fbe.zip +0 -0
- package/.yarn/cache/acorn-npm-8.11.3-0d7ab48b38-3ff155f881.zip +0 -0
- package/.yarn/cache/acorn-npm-8.16.0-b2096bf83f-c9c5269722.zip +0 -0
- package/.yarn/cache/acorn-walk-npm-8.3.2-df039a42bf-7e2a8dad54.zip +0 -0
- package/.yarn/cache/agent-base-npm-7.1.4-cb8b4604d5-c2c9ab7599.zip +0 -0
- package/.yarn/cache/ajv-draft-04-npm-1.0.0-6fc962dbab-6044310bd3.zip +0 -0
- package/.yarn/cache/ajv-formats-npm-3.0.1-2662cf5b12-168d6bca1e.zip +0 -0
- package/.yarn/cache/ajv-npm-6.14.0-41f32f2ba8-a2bc39b055.zip +0 -0
- package/.yarn/cache/ajv-npm-8.12.0-3bf6e30741-ac4f72adf7.zip +0 -0
- package/.yarn/cache/ajv-npm-8.17.1-12ade7edc6-ec3ba10a57.zip +0 -0
- package/.yarn/cache/ajv-npm-8.18.0-6e5e062765-e7517c4261.zip +0 -0
- package/.yarn/cache/alien-signals-npm-0.4.14-73b9599f8d-5abb3377bc.zip +0 -0
- package/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-9a64bb8627.zip +0 -0
- package/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-ece5a8ef06.zip +0 -0
- package/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-895a23929d.zip +0 -0
- package/.yarn/cache/arg-npm-4.1.3-1748b966a8-070ff801a9.zip +0 -0
- package/.yarn/cache/argparse-npm-1.0.10-528934e59d-b2972c5c23.zip +0 -0
- package/.yarn/cache/argparse-npm-2.0.1-faff7999e6-c5640c2d89.zip +0 -0
- package/.yarn/cache/array-ify-npm-1.0.0-e09a371977-75c9c072fa.zip +0 -0
- package/.yarn/cache/assertion-error-npm-2.0.1-8169d136f2-bbbcb117ac.zip +0 -0
- package/.yarn/cache/ast-v8-to-istanbul-npm-0.3.12-a066421931-bad6ba222b.zip +0 -0
- package/.yarn/cache/balanced-match-npm-4.0.4-fd666b3c7f-07e86102a3.zip +0 -0
- package/.yarn/cache/brace-expansion-npm-5.0.4-acb9332524-359cbcfa80.zip +0 -0
- package/.yarn/cache/cacache-npm-20.0.3-5f244d5bdd-c7da1ca694.zip +0 -0
- package/.yarn/cache/callsites-npm-3.1.0-268f989910-fff9227740.zip +0 -0
- package/.yarn/cache/chai-npm-6.2.2-e1795cadaa-e6c69e5f0c.zip +0 -0
- package/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-e6543f02ec.zip +0 -0
- package/.yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip +0 -0
- package/.yarn/cache/cliui-npm-8.0.1-3b029092cf-4bda0f09c3.zip +0 -0
- package/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-5ad3c53494.zip +0 -0
- package/.yarn/cache/color-convert-npm-2.0.1-79730e935b-37e1150172.zip +0 -0
- package/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-566a3d42cc.zip +0 -0
- package/.yarn/cache/color-name-npm-1.1.4-025792b0ea-a1a3f91415.zip +0 -0
- package/.yarn/cache/compare-func-npm-2.0.0-9cd7852f23-78bd4dd4ed.zip +0 -0
- package/.yarn/cache/compare-versions-npm-6.1.1-4b4ac16a32-415205c762.zip +0 -0
- package/.yarn/cache/confbox-npm-0.1.8-8396039b68-fc2c68d97c.zip +0 -0
- package/.yarn/cache/confbox-npm-0.2.4-31ba8953f9-4c36af33d9.zip +0 -0
- package/.yarn/cache/conventional-changelog-angular-npm-8.3.0-0cd5330d9e-bab87fa741.zip +0 -0
- package/.yarn/cache/conventional-changelog-conventionalcommits-npm-9.3.0-6c1ee7bc50-36be9435bb.zip +0 -0
- package/.yarn/cache/conventional-commits-parser-npm-6.3.0-ac5eec936e-7b152db0b6.zip +0 -0
- package/.yarn/cache/cosmiconfig-npm-9.0.1-66b0cd2503-a5d4d95599.zip +0 -0
- package/.yarn/cache/cosmiconfig-typescript-loader-npm-6.2.0-a314118ca7-0fd8fd9b9b.zip +0 -0
- package/.yarn/cache/create-require-npm-1.1.1-839884ca2e-157cbc59b2.zip +0 -0
- package/.yarn/cache/cross-spawn-npm-7.0.6-264bddf921-053ea8b213.zip +0 -0
- package/.yarn/cache/dargs-npm-8.1.0-39fde97ef5-08cbd1ee4a.zip +0 -0
- package/.yarn/cache/de-indent-npm-1.0.2-66cccde30f-7058ce58ab.zip +0 -0
- package/.yarn/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip +0 -0
- package/.yarn/cache/debug-npm-4.4.0-f6efe76023-db94f1a182.zip +0 -0
- package/.yarn/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip +0 -0
- package/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-7f0ee496e0.zip +0 -0
- package/.yarn/cache/diff-npm-4.0.2-73133c7102-81b91f9d39.zip +0 -0
- package/.yarn/cache/diff-npm-8.0.3-6f5c127138-d29321c70d.zip +0 -0
- package/.yarn/cache/dot-prop-npm-5.3.0-7bf6ee1eb8-93f0d343ef.zip +0 -0
- package/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-b6053ad399.zip +0 -0
- package/.yarn/cache/entities-npm-4.5.0-7cdb83b832-5b039739f7.zip +0 -0
- package/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-285325677b.zip +0 -0
- package/.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-ba827f8936.zip +0 -0
- package/.yarn/cache/es-module-lexer-npm-1.7.0-456b47a08a-4c935affcb.zip +0 -0
- package/.yarn/cache/esbuild-npm-0.27.3-85b6c20323-fdc3f87a3f.zip +0 -0
- package/.yarn/cache/escalade-npm-3.1.1-e02da076aa-afd02e6ca9.zip +0 -0
- package/.yarn/cache/escalade-npm-3.2.0-19b50dd48f-ced4dd3a78.zip +0 -0
- package/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-a968ad453d.zip +0 -0
- package/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-9497d4dd30.zip +0 -0
- package/.yarn/cache/eslint-npm-10.0.3-c98e23b2a9-fbbb4d99cb.zip +0 -0
- package/.yarn/cache/eslint-scope-npm-9.1.2-50e6e92f41-9fb8bca5a7.zip +0 -0
- package/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-92708e882c.zip +0 -0
- package/.yarn/cache/eslint-visitor-keys-npm-5.0.1-30a44b062b-16190bdf2c.zip +0 -0
- package/.yarn/cache/espree-npm-11.2.0-095134f369-cf87e18ffd.zip +0 -0
- package/.yarn/cache/esquery-npm-1.7.0-c1e8da438a-77d5173db4.zip +0 -0
- package/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-81a37116d1.zip +0 -0
- package/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-1ff9447b96.zip +0 -0
- package/.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-53a6c54e20.zip +0 -0
- package/.yarn/cache/estree-walker-npm-3.0.3-0372979673-c12e3c2b26.zip +0 -0
- package/.yarn/cache/esutils-npm-2.0.3-f865beafd5-9a2fe69a41.zip +0 -0
- package/.yarn/cache/expect-type-npm-1.3.0-95a4384745-8412b3fe4f.zip +0 -0
- package/.yarn/cache/exponential-backoff-npm-3.1.3-28be78d98e-77e3ae682b.zip +0 -0
- package/.yarn/cache/exsolve-npm-1.0.8-20570c05a2-65e44ae05b.zip +0 -0
- package/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-40dedc862e.zip +0 -0
- package/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-7f081eb0b8.zip +0 -0
- package/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-111972b373.zip +0 -0
- package/.yarn/cache/fast-uri-npm-3.0.3-0874072625-4b2c5ce681.zip +0 -0
- package/.yarn/cache/fdir-npm-6.5.0-8814a0dec7-e345083c43.zip +0 -0
- package/.yarn/cache/fflate-npm-0.8.2-5129f303f0-03448d630c.zip +0 -0
- package/.yarn/cache/file-entry-cache-npm-8.0.0-5b09d19a83-9e2b5938b1.zip +0 -0
- package/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-062c5a83a9.zip +0 -0
- package/.yarn/cache/flat-cache-npm-4.0.1-12bf2455f7-2c59d93e9f.zip +0 -0
- package/.yarn/cache/flatted-npm-3.2.9-0462256d3c-5c91c5a0a2.zip +0 -0
- package/.yarn/cache/flatted-npm-3.3.4-614e5aba3e-d1f33426e9.zip +0 -0
- package/.yarn/cache/fs-extra-npm-11.3.4-29a9d2b3b0-e08276f767.zip +0 -0
- package/.yarn/cache/fs-minipass-npm-3.0.3-d148d6ac19-63e80da2ff.zip +0 -0
- package/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-a1f0c44595.zip +0 -0
- package/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-d8680ee1e5.zip +0 -0
- package/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-c6c7b60271.zip +0 -0
- package/.yarn/cache/git-raw-commits-npm-4.0.0-60e7e666d1-ab51335d9e.zip +0 -0
- package/.yarn/cache/glob-npm-13.0.6-864eb0cece-269c236f11.zip +0 -0
- package/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-317034d886.zip +0 -0
- package/.yarn/cache/global-directory-npm-4.0.1-1de95382fd-f9cbeef41d.zip +0 -0
- package/.yarn/cache/globals-npm-17.4.0-d04eded15b-2be9e8c2b9.zip +0 -0
- package/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip +0 -0
- package/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-1c6c83b14b.zip +0 -0
- package/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-2e789c61b7.zip +0 -0
- package/.yarn/cache/hasown-npm-2.0.0-78b794ceef-5d415b114f.zip +0 -0
- package/.yarn/cache/he-npm-1.2.0-3b73a2ff07-a27d478bef.zip +0 -0
- package/.yarn/cache/html-escaper-npm-2.0.2-38e51ef294-208e8a12de.zip +0 -0
- package/.yarn/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-45b66a945c.zip +0 -0
- package/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-4207b06a45.zip +0 -0
- package/.yarn/cache/https-proxy-agent-npm-7.0.6-27a95c2690-f729219bc7.zip +0 -0
- package/.yarn/cache/husky-npm-9.1.7-5b02eaabc4-35bb110a71.zip +0 -0
- package/.yarn/cache/iconv-lite-npm-0.7.2-716fc012a0-3c228920f3.zip +0 -0
- package/.yarn/cache/ignore-npm-5.3.0-fb0f5fa062-dc06bea5c2.zip +0 -0
- package/.yarn/cache/ignore-npm-7.0.5-dea34ee430-ae00db89fe.zip +0 -0
- package/.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-7f882953aa.zip +0 -0
- package/.yarn/cache/import-lazy-npm-4.0.0-3215653869-a3520313e2.zip +0 -0
- package/.yarn/cache/import-meta-resolve-npm-4.2.0-d0ecf96035-3ee8aeecb6.zip +0 -0
- package/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-8b51313850.zip +0 -0
- package/.yarn/cache/ini-npm-4.1.1-01c2cbda7b-7fddc8dfd3.zip +0 -0
- package/.yarn/cache/ip-address-npm-10.1.0-d5d5693401-0103516cfa.zip +0 -0
- package/.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-e7fb686a73.zip +0 -0
- package/.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-2cba9903aa.zip +0 -0
- package/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-5487da3569.zip +0 -0
- package/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-bb11d825e0.zip +0 -0
- package/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-17fb4014e2.zip +0 -0
- package/.yarn/cache/is-obj-npm-2.0.0-3d95e053f4-85044ed7ba.zip +0 -0
- package/.yarn/cache/is-plain-obj-npm-4.1.0-a4f2a92b44-32130d651d.zip +0 -0
- package/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-228cfa503f.zip +0 -0
- package/.yarn/cache/isexe-npm-4.0.0-588229ad74-5884815115.zip +0 -0
- package/.yarn/cache/istanbul-lib-coverage-npm-3.2.2-5c0526e059-6c7ff21067.zip +0 -0
- package/.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-84323afb14.zip +0 -0
- package/.yarn/cache/istanbul-reports-npm-3.2.0-b755b56d78-d596317cfd.zip +0 -0
- package/.yarn/cache/jiti-npm-2.6.1-597ab7fb84-79b2e96a8e.zip +0 -0
- package/.yarn/cache/jju-npm-1.4.0-670678eaa3-f3f444557e.zip +0 -0
- package/.yarn/cache/js-tokens-npm-10.0.0-2f75d73bcb-a934987478.zip +0 -0
- package/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-e248708d37.zip +0 -0
- package/.yarn/cache/js-yaml-npm-4.1.0-3606f32312-184a24b4ea.zip +0 -0
- package/.yarn/cache/json-buffer-npm-3.0.1-f8f6d20603-0d1c91569d.zip +0 -0
- package/.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-140932564c.zip +0 -0
- package/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-108fa90d4c.zip +0 -0
- package/.yarn/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-71e30015d7.zip +0 -0
- package/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cb168b61fd.zip +0 -0
- package/.yarn/cache/jsonfile-npm-6.1.0-20a4796cee-4f95b5e8a5.zip +0 -0
- package/.yarn/cache/keyv-npm-4.5.4-4c8e2cf7f7-aa52f3c5e1.zip +0 -0
- package/.yarn/cache/kolorist-npm-1.8.0-2cc04dcc05-73075db44a.zip +0 -0
- package/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-effb03cad7.zip +0 -0
- package/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-3da6ee62d4.zip +0 -0
- package/.yarn/cache/local-pkg-npm-1.1.2-04ade6b6c7-1bcfcc5528.zip +0 -0
- package/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-d3972ab70d.zip +0 -0
- package/.yarn/cache/lodash-npm-4.17.23-50bdb1c01a-1264a90469.zip +0 -0
- package/.yarn/cache/lodash.camelcase-npm-4.3.0-bf268e3bf0-fcba15d21a.zip +0 -0
- package/.yarn/cache/lodash.kebabcase-npm-4.1.1-89ffca7e1f-da5d8f41db.zip +0 -0
- package/.yarn/cache/lodash.mergewith-npm-4.6.2-7d2d4201ec-4adbed65ff.zip +0 -0
- package/.yarn/cache/lodash.snakecase-npm-4.1.1-b12cdbecb4-f0b3f2497e.zip +0 -0
- package/.yarn/cache/lodash.startcase-npm-4.4.0-637aa8cc15-bd82aa87a4.zip +0 -0
- package/.yarn/cache/lodash.upperfirst-npm-4.3.1-e3b7c364ba-435625da4b.zip +0 -0
- package/.yarn/cache/lru-cache-npm-11.2.6-acb7d4323e-73bbffb298.zip +0 -0
- package/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-cb53e58278.zip +0 -0
- package/.yarn/cache/magic-string-npm-0.30.17-da1b7593b1-16826e415d.zip +0 -0
- package/.yarn/cache/magic-string-npm-0.30.21-9a226cb21e-299378e38f.zip +0 -0
- package/.yarn/cache/magicast-npm-0.5.2-24c891cd9d-924af67764.zip +0 -0
- package/.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-69b98a6c0b.zip +0 -0
- package/.yarn/cache/make-error-npm-1.3.6-ccb85d9458-171e458d86.zip +0 -0
- package/.yarn/cache/make-fetch-happen-npm-15.0.4-cd90f16f9b-b874bf6879.zip +0 -0
- package/.yarn/cache/meow-npm-12.1.1-bd7858d088-a125ca99a3.zip +0 -0
- package/.yarn/cache/meow-npm-13.2.0-9907f89171-d5b339ae31.zip +0 -0
- package/.yarn/cache/minimatch-npm-10.2.4-11f0605299-35f3dfb7b9.zip +0 -0
- package/.yarn/cache/minimatch-npm-9.0.7-145dd43fbb-e90f8d8dd1.zip +0 -0
- package/.yarn/cache/minimist-npm-1.2.8-d7af7b1dce-19d3fcdca0.zip +0 -0
- package/.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-5167e73f62.zip +0 -0
- package/.yarn/cache/minipass-fetch-npm-5.0.2-cd03eefed8-ce4ab9f21c.zip +0 -0
- package/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-2a51b63feb.zip +0 -0
- package/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip +0 -0
- package/.yarn/cache/minipass-npm-7.1.3-b73a16498d-539da88dac.zip +0 -0
- package/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-cbda57cea2.zip +0 -0
- package/.yarn/cache/minipass-sized-npm-2.0.0-a911fc7d3f-f9201696a6.zip +0 -0
- package/.yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip +0 -0
- package/.yarn/cache/mlly-npm-1.8.1-0181666245-664fa66726.zip +0 -0
- package/.yarn/cache/mrmime-npm-2.0.0-0326eb1458-312b35ed28.zip +0 -0
- package/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-a437714e2f.zip +0 -0
- package/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip +0 -0
- package/.yarn/cache/muggle-string-npm-0.4.1-fe3c825cc2-e914b63e24.zip +0 -0
- package/.yarn/cache/nanoid-npm-3.3.11-f98c1f9ef6-40e7f70b3d.zip +0 -0
- package/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-f5f9a7974b.zip +0 -0
- package/.yarn/cache/negotiator-npm-1.0.0-47d727e27e-4c559dd526.zip +0 -0
- package/.yarn/cache/node-gyp-npm-12.2.0-11f8fe84f1-3ed046746a.zip +0 -0
- package/.yarn/cache/nopt-npm-9.0.0-81316ec15c-1822eb6f9b.zip +0 -0
- package/.yarn/cache/obug-npm-2.1.1-029730d296-59dccd7de7.zip +0 -0
- package/.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-66fba794d4.zip +0 -0
- package/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-9db675949d.zip +0 -0
- package/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-2290d627ab.zip +0 -0
- package/.yarn/cache/p-map-npm-7.0.4-39386109d0-a5030935d3.zip +0 -0
- package/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-c63d6e8000.zip +0 -0
- package/.yarn/cache/parse-json-npm-5.2.0-00a63b1199-77947f2253.zip +0 -0
- package/.yarn/cache/path-browserify-npm-1.0.1-f975d99a99-8b8c3fd5c6.zip +0 -0
- package/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-8c0bd3f523.zip +0 -0
- package/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-748c43efd5.zip +0 -0
- package/.yarn/cache/path-parse-npm-1.0.7-09564527b7-11ce261f9d.zip +0 -0
- package/.yarn/cache/path-scurry-npm-2.0.2-f10aa6a77e-b35ad37cf6.zip +0 -0
- package/.yarn/cache/pathe-npm-2.0.3-0924246ee0-c118dc5a8b.zip +0 -0
- package/.yarn/cache/picocolors-npm-1.1.1-4fede47cf1-e2e3e8170a.zip +0 -0
- package/.yarn/cache/picomatch-npm-4.0.2-e93516ddf2-7c51f3ad2b.zip +0 -0
- package/.yarn/cache/picomatch-npm-4.0.3-0a647b87cc-9582c951e9.zip +0 -0
- package/.yarn/cache/pkg-types-npm-1.3.1-832c9cd162-19e6cb8b66.zip +0 -0
- package/.yarn/cache/pkg-types-npm-2.3.0-e7381b4aaa-d2bbddc5b8.zip +0 -0
- package/.yarn/cache/postcss-npm-8.5.8-b010bee8df-dd918f7127.zip +0 -0
- package/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-b00d617431.zip +0 -0
- package/.yarn/cache/proc-log-npm-6.1.0-84e609b3f4-4f178d4062.zip +0 -0
- package/.yarn/cache/punycode-npm-2.3.1-97543c420d-14f76a8206.zip +0 -0
- package/.yarn/cache/quansync-npm-0.2.11-f7bf964a44-cb9a1f8ebc.zip +0 -0
- package/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-83aa76a7bc.zip +0 -0
- package/.yarn/cache/require-from-string-npm-2.0.2-8557e0db12-aaa267e0c5.zip +0 -0
- package/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-8408eec31a.zip +0 -0
- package/.yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-b21cb7f1fb.zip +0 -0
- package/.yarn/cache/resolve-npm-1.22.8-098f379dfe-07e179f437.zip +0 -0
- package/.yarn/cache/resolve-patch-4254c24959-0446f02443.zip +0 -0
- package/.yarn/cache/retry-npm-0.13.1-89eb100ab6-9ae822ee19.zip +0 -0
- package/.yarn/cache/rollup-npm-4.59.0-3b10f603ec-f38742da34.zip +0 -0
- package/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-7e3c8b2e88.zip +0 -0
- package/.yarn/cache/semver-npm-7.5.4-c4ad957fcd-5160b06975.zip +0 -0
- package/.yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip +0 -0
- package/.yarn/cache/semver-npm-7.7.4-746e538da5-5215ad0234.zip +0 -0
- package/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-a41692e7d8.zip +0 -0
- package/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1dbed0726d.zip +0 -0
- package/.yarn/cache/siginfo-npm-2.0.0-9bbac931f8-3def8f8e51.zip +0 -0
- package/.yarn/cache/sirv-npm-3.0.2-6cf658c733-5930e4397a.zip +0 -0
- package/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-a16775323e.zip +0 -0
- package/.yarn/cache/socks-npm-2.8.7-d1d20aae19-2805a43a1c.zip +0 -0
- package/.yarn/cache/socks-proxy-agent-npm-8.0.5-24d77a90dc-5d2c6cecba.zip +0 -0
- package/.yarn/cache/source-map-js-npm-1.2.1-b9a47d7e1a-7bda1fc4c1.zip +0 -0
- package/.yarn/cache/source-map-npm-0.6.1-1a3621db16-ab55398007.zip +0 -0
- package/.yarn/cache/split2-npm-4.2.0-16aa3883ba-b292beb8ce.zip +0 -0
- package/.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-ecadcfe4c7.zip +0 -0
- package/.yarn/cache/ssri-npm-13.0.1-c266f2233c-cf6408a186.zip +0 -0
- package/.yarn/cache/stackback-npm-0.0.2-73273dc92e-89a1416668.zip +0 -0
- package/.yarn/cache/std-env-npm-3.10.0-30d3e2646f-1814927a45.zip +0 -0
- package/.yarn/cache/string-argv-npm-0.3.2-6e057a88f1-75c02a8375.zip +0 -0
- package/.yarn/cache/string-width-npm-4.2.3-2c27177bae-1e525e92e5.zip +0 -0
- package/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-1ae5f212a1.zip +0 -0
- package/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-9681a6257b.zip +0 -0
- package/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-6ae5ff319b.zip +0 -0
- package/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-afb4c88521.zip +0 -0
- package/.yarn/cache/supports-color-npm-8.1.1-289e937149-ea1d3c275d.zip +0 -0
- package/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-6c40323407.zip +0 -0
- package/.yarn/cache/tar-npm-7.5.10-83147ff192-ed905e4b33.zip +0 -0
- package/.yarn/cache/tinybench-npm-2.9.0-2861a048db-c3500b0f60.zip +0 -0
- package/.yarn/cache/tinyexec-npm-1.0.2-321b713e56-1261a8e34c.zip +0 -0
- package/.yarn/cache/tinyglobby-npm-0.2.15-0e783aadbd-869c31490d.zip +0 -0
- package/.yarn/cache/tinyrainbow-npm-3.0.3-06ed35d14d-1e799d35cd.zip +0 -0
- package/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-b214d21dbf.zip +0 -0
- package/.yarn/cache/totalist-npm-3.0.1-91e71f3baa-4bb1fadb69.zip +0 -0
- package/.yarn/cache/ts-api-utils-npm-2.4.0-1179124e9a-ed185861ae.zip +0 -0
- package/.yarn/cache/ts-node-npm-10.9.2-3f3890b9ac-5f29938489.zip +0 -0
- package/.yarn/cache/tslib-npm-2.8.1-66590b21b8-9c4759110a.zip +0 -0
- package/.yarn/cache/type-check-npm-0.4.0-60565800ce-7b3fd0ed43.zip +0 -0
- package/.yarn/cache/typescript-eslint-npm-8.56.1-533c704529-c33aeb9a8b.zip +0 -0
- package/.yarn/cache/typescript-npm-5.7.2-b1f84a8b28-a873118b52.zip +0 -0
- package/.yarn/cache/typescript-npm-5.8.2-b95d637f6a-5c4f6fbf1c.zip +0 -0
- package/.yarn/cache/typescript-patch-26c53754b1-5448a08e59.zip +0 -0
- package/.yarn/cache/typescript-patch-aed9e5263d-f3b8082c9d.zip +0 -0
- package/.yarn/cache/ufo-npm-1.6.3-29bac69d97-bf0e4ebff9.zip +0 -0
- package/.yarn/cache/undici-types-npm-7.18.2-3e6d69d829-85a7918911.zip +0 -0
- package/.yarn/cache/unique-filename-npm-5.0.0-605f54f18e-afb897e9cf.zip +0 -0
- package/.yarn/cache/unique-slug-npm-6.0.0-f26b186e99-da7ade4cb0.zip +0 -0
- package/.yarn/cache/universalify-npm-2.0.1-040ba5a21e-73e8ee3809.zip +0 -0
- package/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-4ef57b45aa.zip +0 -0
- package/.yarn/cache/v8-compile-cache-lib-npm-3.0.1-4886071ece-bdc36fb809.zip +0 -0
- package/.yarn/cache/vite-npm-7.3.1-330baf2f0d-5c7548f5f4.zip +0 -0
- package/.yarn/cache/vite-plugin-dts-npm-4.5.4-2445647687-5fcb7f3739.zip +0 -0
- package/.yarn/cache/vitest-npm-4.0.18-52f42bdace-b913cd3203.zip +0 -0
- package/.yarn/cache/vscode-uri-npm-3.0.8-56f46b9d24-f7f217f526.zip +0 -0
- package/.yarn/cache/which-npm-2.0.2-320ddf72f7-66522872a7.zip +0 -0
- package/.yarn/cache/which-npm-6.0.1-afc3b2db90-7e710e54ea.zip +0 -0
- package/.yarn/cache/why-is-node-running-npm-2.3.0-011cf61a18-1cde0b01b8.zip +0 -0
- package/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-d15fc12c11.zip +0 -0
- package/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-4df2842c36.zip +0 -0
- package/.yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip +0 -0
- package/.yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip +0 -0
- package/.yarn/cache/yargs-npm-17.7.2-80b62638e1-ccd7e723e6.zip +0 -0
- package/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-f84b5e4816.zip +0 -0
- package/.yarn/cache/yn-npm-3.1.1-8ad4259784-0732468dd7.zip +0 -0
- package/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-dceb44c285.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-4.12.0.cjs +942 -0
- package/.yarnrc.yml +5 -0
- package/AGENTS.md +82 -0
- package/CHANGELOG.md +55 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/README.md +300 -119
- package/dist/assert.cjs +66 -0
- package/dist/assert.d.ts +16 -0
- package/dist/assert.mjs +66 -0
- package/dist/assertions.cjs +207 -0
- package/dist/assertions.d.ts +58 -0
- package/dist/assertions.mjs +207 -0
- package/dist/checkers.d.ts +8 -0
- package/dist/combinators.cjs +341 -0
- package/dist/combinators.d.ts +17 -0
- package/dist/combinators.mjs +341 -0
- package/dist/constraints.d.ts +4 -0
- package/dist/extractors.d.ts +2 -0
- package/dist/index.cjs +219 -315
- package/dist/index.d.ts +12 -0
- package/dist/index.mjs +220 -306
- package/dist/json-schema.cjs +514 -0
- package/dist/json-schema.d.ts +14 -0
- package/dist/json-schema.mjs +514 -0
- package/dist/metadata.cjs +8 -0
- package/dist/metadata.cjs.js +130 -0
- package/dist/metadata.d.ts +8 -0
- package/dist/metadata.es.js +131 -0
- package/dist/metadata.mjs +8 -0
- package/dist/predicates.cjs +116 -0
- package/dist/predicates.d.ts +56 -0
- package/dist/predicates.mjs +116 -0
- package/dist/violations.d.ts +29 -0
- package/docker/services/node/Dockerfile +9 -0
- package/docs/en/00-index.md +14 -0
- package/docs/en/01-shape-api.md +348 -0
- package/docs/en/02-metadata-and-introspection.md +276 -0
- package/docs/en/03-violations.md +267 -0
- package/docs/en/04-json-schema-export.md +264 -0
- package/docs/en/05-public-api.md +123 -0
- package/docs/en/06-common-recipes.md +273 -0
- package/docs/en/07-ai-reference.md +215 -0
- package/docs/en/08-violation-code-types.md +241 -0
- package/docs/ru/00-index.md +15 -0
- package/docs/ru/01-shape-api.md +348 -0
- package/docs/ru/02-metadata-and-introspection.md +276 -0
- package/docs/ru/03-violations.md +267 -0
- package/docs/ru/04-json-schema-export.md +264 -0
- package/docs/ru/05-public-api.md +123 -0
- package/docs/ru/06-common-recipes.md +273 -0
- package/docs/ru/07-ai-reference.md +215 -0
- package/docs/ru/08-violation-code-types.md +241 -0
- package/docs/ru/README.md +371 -0
- package/drafts/.gitignore +2 -0
- package/logo.png +0 -0
- package/package.json +85 -35
- package/skills/commit-workflow/SKILL.md +93 -0
- package/skills/coverage-recovery/SKILL.md +68 -0
- package/skills/yarn-lock-conflict-resolution/SKILL.md +69 -0
- package/types/index.d.ts +780 -86
- package/types/json-schema.d.ts +75 -0
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import { d as describeConstraints } from "./metadata.es.js";
|
|
2
|
+
const jsonSchemaMetadataKeys = [
|
|
3
|
+
"title",
|
|
4
|
+
"description",
|
|
5
|
+
"format",
|
|
6
|
+
"default",
|
|
7
|
+
"examples",
|
|
8
|
+
"deprecated",
|
|
9
|
+
"readOnly",
|
|
10
|
+
"writeOnly"
|
|
11
|
+
];
|
|
12
|
+
const typeOf = (value) => Object.prototype.toString.call(value);
|
|
13
|
+
const isEmptySchema = (schema) => Object.keys(schema).length === 0;
|
|
14
|
+
const isFiniteJsonNumber = (value) => typeof value === "number" && Number.isFinite(value);
|
|
15
|
+
const isJsonScalar = (value) => {
|
|
16
|
+
return value === null || typeof value === "string" || typeof value === "boolean" || isFiniteJsonNumber(value);
|
|
17
|
+
};
|
|
18
|
+
const isLength = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
19
|
+
const isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
|
|
20
|
+
const isPositiveFiniteNumber = (value) => isFiniteNumber(value) && value > 0;
|
|
21
|
+
const withPath = (context, segment) => ({
|
|
22
|
+
...context,
|
|
23
|
+
path: [...context.path, segment]
|
|
24
|
+
});
|
|
25
|
+
const formatPath = (path) => path.length === 0 ? "<root>" : path.map((segment) => typeof segment === "symbol" ? segment.toString() : String(segment)).join(".");
|
|
26
|
+
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
27
|
+
const setSchemaProperty = (schema, key, value) => {
|
|
28
|
+
schema[key] = value;
|
|
29
|
+
};
|
|
30
|
+
const pickMetadata = (metadata) => {
|
|
31
|
+
if (!metadata) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
const schemaMetadata = {};
|
|
35
|
+
jsonSchemaMetadataKeys.forEach((key) => {
|
|
36
|
+
if (!(key in metadata)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const value = metadata[key];
|
|
40
|
+
if (key === "examples") {
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
setSchemaProperty(schemaMetadata, "examples", [...value]);
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (key === "default") {
|
|
47
|
+
setSchemaProperty(schemaMetadata, "default", value);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if ((key === "deprecated" || key === "readOnly" || key === "writeOnly") && typeof value === "boolean") {
|
|
51
|
+
setSchemaProperty(schemaMetadata, key, value);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (typeof value === "string") {
|
|
55
|
+
setSchemaProperty(schemaMetadata, key, value);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return schemaMetadata;
|
|
59
|
+
};
|
|
60
|
+
const applyMetadata = (schema, metadata) => {
|
|
61
|
+
const schemaMetadata = pickMetadata(metadata);
|
|
62
|
+
const nextSchema = { ...schema };
|
|
63
|
+
jsonSchemaMetadataKeys.forEach((key) => {
|
|
64
|
+
if (!(key in schemaMetadata) || key in nextSchema) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
setSchemaProperty(nextSchema, key, schemaMetadata[key]);
|
|
68
|
+
});
|
|
69
|
+
return nextSchema;
|
|
70
|
+
};
|
|
71
|
+
class JsonSchemaExportError extends Error {
|
|
72
|
+
constructor(message, {
|
|
73
|
+
descriptor,
|
|
74
|
+
path = [],
|
|
75
|
+
reason
|
|
76
|
+
}) {
|
|
77
|
+
super(message);
|
|
78
|
+
this.name = "JsonSchemaExportError";
|
|
79
|
+
this.descriptor = descriptor;
|
|
80
|
+
this.reason = reason;
|
|
81
|
+
this.path = [...path];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const unsupported = (descriptor, context, reason) => {
|
|
85
|
+
if (context.mode === "strict") {
|
|
86
|
+
throw new JsonSchemaExportError(
|
|
87
|
+
`Cannot export ${descriptor.kind} at ${formatPath(context.path)}: ${reason}`,
|
|
88
|
+
{ descriptor, path: context.path, reason }
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
return {};
|
|
92
|
+
};
|
|
93
|
+
const mergeNullable = (schema) => {
|
|
94
|
+
if (isEmptySchema(schema)) {
|
|
95
|
+
return schema;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
anyOf: [schema, { type: "null" }]
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const toPropertyName = (key, descriptor, context) => {
|
|
102
|
+
if (typeof key === "symbol") {
|
|
103
|
+
return unsupported(descriptor, context, "symbol keys cannot be represented in JSON Schema");
|
|
104
|
+
}
|
|
105
|
+
return String(key);
|
|
106
|
+
};
|
|
107
|
+
const lengthSchema = (descriptor, context) => {
|
|
108
|
+
const stringSchema2 = { type: "string" };
|
|
109
|
+
const arraySchema = { type: "array" };
|
|
110
|
+
for (const constraint of descriptor.constraints) {
|
|
111
|
+
switch (constraint.code) {
|
|
112
|
+
case "length.exact": {
|
|
113
|
+
const exact = constraint.args[0];
|
|
114
|
+
if (!isLength(exact)) {
|
|
115
|
+
return unsupported(descriptor, context, "hasLength exact bounds must be non-negative integers");
|
|
116
|
+
}
|
|
117
|
+
setSchemaProperty(stringSchema2, "minLength", exact);
|
|
118
|
+
setSchemaProperty(stringSchema2, "maxLength", exact);
|
|
119
|
+
setSchemaProperty(arraySchema, "minItems", exact);
|
|
120
|
+
setSchemaProperty(arraySchema, "maxItems", exact);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case "length.min": {
|
|
124
|
+
const min = constraint.args[0];
|
|
125
|
+
if (!isLength(min)) {
|
|
126
|
+
return unsupported(descriptor, context, "hasLength minimum bounds must be non-negative integers");
|
|
127
|
+
}
|
|
128
|
+
setSchemaProperty(stringSchema2, "minLength", min);
|
|
129
|
+
setSchemaProperty(arraySchema, "minItems", min);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case "length.max": {
|
|
133
|
+
const max = constraint.args[0];
|
|
134
|
+
if (!isLength(max)) {
|
|
135
|
+
return unsupported(descriptor, context, "hasLength maximum bounds must be non-negative integers");
|
|
136
|
+
}
|
|
137
|
+
setSchemaProperty(stringSchema2, "maxLength", max);
|
|
138
|
+
setSchemaProperty(arraySchema, "maxItems", max);
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case "length.range": {
|
|
142
|
+
const range = constraint.args[0];
|
|
143
|
+
if (!Array.isArray(range) || range.length !== 2 || !isLength(range[0]) || !isLength(range[1])) {
|
|
144
|
+
return unsupported(descriptor, context, "hasLength ranges must be `[min, max]` integer tuples");
|
|
145
|
+
}
|
|
146
|
+
setSchemaProperty(stringSchema2, "minLength", range[0]);
|
|
147
|
+
setSchemaProperty(stringSchema2, "maxLength", range[1]);
|
|
148
|
+
setSchemaProperty(arraySchema, "minItems", range[0]);
|
|
149
|
+
setSchemaProperty(arraySchema, "maxItems", range[1]);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
default:
|
|
153
|
+
return unsupported(descriptor, context, `unsupported hasLength constraint "${constraint.code}"`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
anyOf: [stringSchema2, arraySchema]
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
const exactSchema = (descriptor, context) => {
|
|
161
|
+
const [value] = descriptor.args ?? [];
|
|
162
|
+
if (!isJsonScalar(value)) {
|
|
163
|
+
return unsupported(
|
|
164
|
+
descriptor,
|
|
165
|
+
context,
|
|
166
|
+
`exact(...) supports only JSON scalar values, got ${typeOf(value)}`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
return { const: value };
|
|
170
|
+
};
|
|
171
|
+
const enumSchema = (descriptor, context) => {
|
|
172
|
+
const [values] = descriptor.args ?? [];
|
|
173
|
+
if (!Array.isArray(values) || values.some((value) => !isJsonScalar(value))) {
|
|
174
|
+
return unsupported(
|
|
175
|
+
descriptor,
|
|
176
|
+
context,
|
|
177
|
+
"oneOf(...) supports only arrays of JSON scalar values"
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
return { enum: [...new Set(values)] };
|
|
181
|
+
};
|
|
182
|
+
const stringSchema = (descriptor, context) => {
|
|
183
|
+
if (descriptor.name === "hasPattern") {
|
|
184
|
+
const [pattern] = descriptor.constraints[0]?.args ?? [];
|
|
185
|
+
if (!(pattern instanceof RegExp)) {
|
|
186
|
+
return unsupported(descriptor, context, "hasPattern(...) requires a RegExp pattern");
|
|
187
|
+
}
|
|
188
|
+
if (pattern.flags !== "") {
|
|
189
|
+
return unsupported(descriptor, context, "hasPattern(...) supports only flagless regular expressions in JSON Schema");
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
type: "string",
|
|
193
|
+
pattern: pattern.source
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
if (descriptor.name === "startsWith") {
|
|
197
|
+
const [prefix] = descriptor.constraints[0]?.args ?? [];
|
|
198
|
+
if (typeof prefix !== "string") {
|
|
199
|
+
return unsupported(descriptor, context, "startsWith(...) requires a string prefix");
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
type: "string",
|
|
203
|
+
pattern: `^${escapeRegExp(prefix)}`
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const [suffix] = descriptor.constraints[0]?.args ?? [];
|
|
207
|
+
if (typeof suffix !== "string") {
|
|
208
|
+
return unsupported(descriptor, context, "endsWith(...) requires a string suffix");
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
type: "string",
|
|
212
|
+
pattern: `${escapeRegExp(suffix)}$`
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
const numberSchema = (descriptor, context) => {
|
|
216
|
+
const schema = { type: "number" };
|
|
217
|
+
if (descriptor.name === "multipleOf") {
|
|
218
|
+
const [step] = descriptor.constraints[0]?.args ?? [];
|
|
219
|
+
if (!isPositiveFiniteNumber(step)) {
|
|
220
|
+
return unsupported(descriptor, context, "multipleOf(...) requires a positive finite divisor");
|
|
221
|
+
}
|
|
222
|
+
setSchemaProperty(schema, "multipleOf", step);
|
|
223
|
+
return schema;
|
|
224
|
+
}
|
|
225
|
+
for (const constraint of descriptor.constraints) {
|
|
226
|
+
switch (constraint.code) {
|
|
227
|
+
case "number.exact": {
|
|
228
|
+
const exact = constraint.args[0];
|
|
229
|
+
if (!isFiniteNumber(exact)) {
|
|
230
|
+
return unsupported(descriptor, context, "hasValue exact bounds must be finite numbers");
|
|
231
|
+
}
|
|
232
|
+
setSchemaProperty(schema, "const", exact);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case "number.min": {
|
|
236
|
+
const min = constraint.args[0];
|
|
237
|
+
if (!isFiniteNumber(min)) {
|
|
238
|
+
return unsupported(descriptor, context, "hasValue minimum bounds must be finite numbers");
|
|
239
|
+
}
|
|
240
|
+
setSchemaProperty(schema, "minimum", min);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
case "number.max": {
|
|
244
|
+
const max = constraint.args[0];
|
|
245
|
+
if (!isFiniteNumber(max)) {
|
|
246
|
+
return unsupported(descriptor, context, "hasValue maximum bounds must be finite numbers");
|
|
247
|
+
}
|
|
248
|
+
setSchemaProperty(schema, "maximum", max);
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
case "number.range": {
|
|
252
|
+
const range = constraint.args[0];
|
|
253
|
+
if (!Array.isArray(range) || range.length !== 2 || !isFiniteNumber(range[0]) || !isFiniteNumber(range[1])) {
|
|
254
|
+
return unsupported(descriptor, context, "hasValue ranges must be `[min, max]` finite number tuples");
|
|
255
|
+
}
|
|
256
|
+
setSchemaProperty(schema, "minimum", range[0]);
|
|
257
|
+
setSchemaProperty(schema, "maximum", range[1]);
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
default:
|
|
261
|
+
return unsupported(descriptor, context, `unsupported number assertion "${descriptor.name}"`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return schema;
|
|
265
|
+
};
|
|
266
|
+
const assertionAcceptsUndefined = (descriptor) => {
|
|
267
|
+
switch (descriptor.name) {
|
|
268
|
+
case "exact":
|
|
269
|
+
return descriptor.args?.[0] === void 0;
|
|
270
|
+
case "oneOf": {
|
|
271
|
+
const [values] = descriptor.args ?? [];
|
|
272
|
+
return Array.isArray(values) && values.includes(void 0);
|
|
273
|
+
}
|
|
274
|
+
default:
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
const acceptsUndefined = (descriptor) => {
|
|
279
|
+
switch (descriptor.kind) {
|
|
280
|
+
case "optional":
|
|
281
|
+
case "nullish":
|
|
282
|
+
return true;
|
|
283
|
+
case "nullable":
|
|
284
|
+
case "each":
|
|
285
|
+
case "tuple":
|
|
286
|
+
case "record":
|
|
287
|
+
case "shape":
|
|
288
|
+
case "discriminatedUnion":
|
|
289
|
+
case "validator":
|
|
290
|
+
return false;
|
|
291
|
+
case "allOf":
|
|
292
|
+
return descriptor.constraints.every(acceptsUndefined);
|
|
293
|
+
case "union":
|
|
294
|
+
return descriptor.branches.some(acceptsUndefined);
|
|
295
|
+
case "assertion":
|
|
296
|
+
return assertionAcceptsUndefined(descriptor);
|
|
297
|
+
default:
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
const exportShapeRules = (descriptor, context) => {
|
|
302
|
+
if (descriptor.rules.length === 0 || context.mode === "bestEffort") {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const [rule] = descriptor.rules;
|
|
306
|
+
throw new JsonSchemaExportError(
|
|
307
|
+
`Cannot export shape at ${formatPath([...context.path, "rules"])}: object-level rule "${rule.kind}" has no JSON Schema mapping`,
|
|
308
|
+
{
|
|
309
|
+
descriptor,
|
|
310
|
+
path: [...context.path, "rules"],
|
|
311
|
+
reason: `object-level rule "${rule.kind}" has no JSON Schema mapping`
|
|
312
|
+
}
|
|
313
|
+
);
|
|
314
|
+
};
|
|
315
|
+
const exportAssertion = (descriptor, context) => {
|
|
316
|
+
switch (descriptor.name) {
|
|
317
|
+
case "isString":
|
|
318
|
+
return { type: "string" };
|
|
319
|
+
case "isNumber":
|
|
320
|
+
return { type: "number" };
|
|
321
|
+
case "isBoolean":
|
|
322
|
+
return { type: "boolean" };
|
|
323
|
+
case "isBigInt":
|
|
324
|
+
return unsupported(descriptor, context, "bigint values cannot be represented in JSON Schema");
|
|
325
|
+
case "isBlob":
|
|
326
|
+
return unsupported(descriptor, context, "Blob instances do not have a stable JSON Schema representation");
|
|
327
|
+
case "isNull":
|
|
328
|
+
return { type: "null" };
|
|
329
|
+
case "isEmail":
|
|
330
|
+
return {
|
|
331
|
+
type: "string",
|
|
332
|
+
format: "email"
|
|
333
|
+
};
|
|
334
|
+
case "hasPattern":
|
|
335
|
+
case "startsWith":
|
|
336
|
+
case "endsWith":
|
|
337
|
+
return stringSchema(descriptor, context);
|
|
338
|
+
case "isFile":
|
|
339
|
+
return unsupported(descriptor, context, "File instances do not have a stable JSON Schema representation");
|
|
340
|
+
case "isFunction":
|
|
341
|
+
return unsupported(descriptor, context, "functions cannot be represented in JSON Schema");
|
|
342
|
+
case "isDefined":
|
|
343
|
+
return {};
|
|
344
|
+
case "isMap":
|
|
345
|
+
return unsupported(descriptor, context, "Map instances do not have a stable JSON Schema representation");
|
|
346
|
+
case "isNaN":
|
|
347
|
+
return unsupported(descriptor, context, "NaN cannot be represented in JSON Schema");
|
|
348
|
+
case "hasValue":
|
|
349
|
+
case "multipleOf":
|
|
350
|
+
return numberSchema(descriptor, context);
|
|
351
|
+
case "exact":
|
|
352
|
+
return exactSchema(descriptor, context);
|
|
353
|
+
case "hasSize":
|
|
354
|
+
return unsupported(descriptor, context, "Map and Set sizes do not have a stable JSON Schema representation");
|
|
355
|
+
case "oneOf":
|
|
356
|
+
return enumSchema(descriptor, context);
|
|
357
|
+
case "hasLength":
|
|
358
|
+
return lengthSchema(descriptor, context);
|
|
359
|
+
case "isDate":
|
|
360
|
+
return unsupported(descriptor, context, "Date instances do not have a stable JSON Schema representation");
|
|
361
|
+
case "isSet":
|
|
362
|
+
return unsupported(descriptor, context, "Set instances do not have a stable JSON Schema representation");
|
|
363
|
+
case "isSymbol":
|
|
364
|
+
return unsupported(descriptor, context, "symbols cannot be represented in JSON Schema");
|
|
365
|
+
default:
|
|
366
|
+
return unsupported(descriptor, context, `unsupported assertion "${descriptor.name}"`);
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
const exportDiscriminatedUnion = (descriptor, context) => {
|
|
370
|
+
if (typeof descriptor.key === "symbol") {
|
|
371
|
+
return unsupported(descriptor, context, "symbol discriminators cannot be represented in JSON Schema");
|
|
372
|
+
}
|
|
373
|
+
const key = String(descriptor.key);
|
|
374
|
+
const variants = descriptor.variants;
|
|
375
|
+
const branches = Reflect.ownKeys(variants).map((variantKey) => {
|
|
376
|
+
if (typeof variantKey === "symbol") {
|
|
377
|
+
return unsupported(descriptor, withPath(context, variantKey), "symbol discriminator values cannot be represented in JSON Schema");
|
|
378
|
+
}
|
|
379
|
+
const variant = variants[variantKey];
|
|
380
|
+
const branch = exportDescriptor(variant, withPath(context, variantKey));
|
|
381
|
+
return {
|
|
382
|
+
allOf: [{
|
|
383
|
+
type: "object",
|
|
384
|
+
properties: {
|
|
385
|
+
[key]: {
|
|
386
|
+
const: variantKey
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
required: [key]
|
|
390
|
+
}, branch]
|
|
391
|
+
};
|
|
392
|
+
});
|
|
393
|
+
return {
|
|
394
|
+
oneOf: branches
|
|
395
|
+
};
|
|
396
|
+
};
|
|
397
|
+
const exportRulesAsComment = (rules, schema) => ({
|
|
398
|
+
...schema,
|
|
399
|
+
$comment: `Dropped ${rules.length} object rule(s) during best-effort JSON Schema export.`
|
|
400
|
+
});
|
|
401
|
+
const exportDescriptor = (descriptor, context) => {
|
|
402
|
+
let schema;
|
|
403
|
+
switch (descriptor.kind) {
|
|
404
|
+
case "assertion":
|
|
405
|
+
schema = exportAssertion(descriptor, context);
|
|
406
|
+
break;
|
|
407
|
+
case "allOf": {
|
|
408
|
+
const allOfDescriptor = descriptor;
|
|
409
|
+
schema = {
|
|
410
|
+
allOf: allOfDescriptor.constraints.map((child, index) => exportDescriptor(child, withPath(context, index)))
|
|
411
|
+
};
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
case "optional": {
|
|
415
|
+
const wrapperDescriptor = descriptor;
|
|
416
|
+
schema = exportDescriptor(wrapperDescriptor.child, withPath(context, "optional"));
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
case "nullable":
|
|
420
|
+
case "nullish": {
|
|
421
|
+
const wrapperDescriptor = descriptor;
|
|
422
|
+
schema = mergeNullable(exportDescriptor(wrapperDescriptor.child, withPath(context, descriptor.kind)));
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
case "each": {
|
|
426
|
+
const eachDescriptor = descriptor;
|
|
427
|
+
schema = {
|
|
428
|
+
type: "array",
|
|
429
|
+
items: exportDescriptor(eachDescriptor.item, withPath(context, "items"))
|
|
430
|
+
};
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
case "tuple": {
|
|
434
|
+
const tupleDescriptor = descriptor;
|
|
435
|
+
schema = {
|
|
436
|
+
type: "array",
|
|
437
|
+
prefixItems: tupleDescriptor.items.map((item, index) => exportDescriptor(item, withPath(context, index))),
|
|
438
|
+
minItems: tupleDescriptor.items.length,
|
|
439
|
+
maxItems: tupleDescriptor.items.length
|
|
440
|
+
};
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
case "union": {
|
|
444
|
+
const unionDescriptor = descriptor;
|
|
445
|
+
schema = {
|
|
446
|
+
anyOf: unionDescriptor.branches.map((branch, index) => exportDescriptor(branch, withPath(context, index)))
|
|
447
|
+
};
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
case "record": {
|
|
451
|
+
const recordDescriptor = descriptor;
|
|
452
|
+
schema = {
|
|
453
|
+
type: "object",
|
|
454
|
+
additionalProperties: exportDescriptor(recordDescriptor.values, withPath(context, "additionalProperties"))
|
|
455
|
+
};
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
case "shape": {
|
|
459
|
+
const shapeDescriptor = descriptor;
|
|
460
|
+
const fields = shapeDescriptor.fields;
|
|
461
|
+
const rules = shapeDescriptor.rules;
|
|
462
|
+
exportShapeRules(shapeDescriptor, context);
|
|
463
|
+
const properties = {};
|
|
464
|
+
const required = [];
|
|
465
|
+
Reflect.ownKeys(fields).forEach((key) => {
|
|
466
|
+
const childContext = withPath(context, key);
|
|
467
|
+
const propertyName = toPropertyName(key, shapeDescriptor, childContext);
|
|
468
|
+
if (typeof propertyName !== "string") {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
const child = fields[key];
|
|
472
|
+
properties[propertyName] = exportDescriptor(child, childContext);
|
|
473
|
+
if (!acceptsUndefined(child)) {
|
|
474
|
+
required.push(propertyName);
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
const shapeSchema = {
|
|
478
|
+
type: "object",
|
|
479
|
+
properties,
|
|
480
|
+
additionalProperties: shapeDescriptor.unknownKeys === "strict" ? false : true
|
|
481
|
+
};
|
|
482
|
+
if (required.length > 0) {
|
|
483
|
+
setSchemaProperty(shapeSchema, "required", required);
|
|
484
|
+
}
|
|
485
|
+
schema = shapeSchema;
|
|
486
|
+
if (rules.length > 0 && context.mode === "bestEffort") {
|
|
487
|
+
schema = exportRulesAsComment(rules, schema);
|
|
488
|
+
}
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
case "discriminatedUnion":
|
|
492
|
+
schema = exportDiscriminatedUnion(descriptor, context);
|
|
493
|
+
break;
|
|
494
|
+
case "validator":
|
|
495
|
+
schema = unsupported(descriptor, context, "custom validators need a supported public descriptor");
|
|
496
|
+
break;
|
|
497
|
+
default:
|
|
498
|
+
schema = unsupported(descriptor, context, `unsupported descriptor kind "${descriptor.kind}"`);
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
return applyMetadata(schema, descriptor.metadata);
|
|
502
|
+
};
|
|
503
|
+
const toJsonSchema = (constraints, options = {}) => {
|
|
504
|
+
const descriptor = describeConstraints(constraints);
|
|
505
|
+
const context = {
|
|
506
|
+
mode: options.mode ?? "bestEffort",
|
|
507
|
+
path: []
|
|
508
|
+
};
|
|
509
|
+
return exportDescriptor(descriptor, context);
|
|
510
|
+
};
|
|
511
|
+
export {
|
|
512
|
+
JsonSchemaExportError,
|
|
513
|
+
toJsonSchema
|
|
514
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const metadata = require("./metadata.cjs.js");
|
|
4
|
+
exports.attachConstraintDescriptor = metadata.attachConstraintDescriptor;
|
|
5
|
+
exports.custom = metadata.custom;
|
|
6
|
+
exports.describe = metadata.describe;
|
|
7
|
+
exports.describeConstraints = metadata.describeConstraints;
|
|
8
|
+
exports.meta = metadata.meta;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const isValidator = (constraint) => "run" in constraint;
|
|
3
|
+
function arrayify(value) {
|
|
4
|
+
return Array.isArray(value) ? [...value] : [value];
|
|
5
|
+
}
|
|
6
|
+
function matchesConstraints(value, constraints) {
|
|
7
|
+
return arrayify(constraints).every((constraint) => constraint.check(value));
|
|
8
|
+
}
|
|
9
|
+
const constraintDescriptorSymbol = /* @__PURE__ */ Symbol("modulify.validator.descriptor");
|
|
10
|
+
const constraintMetadataSymbol = /* @__PURE__ */ Symbol("modulify.validator.metadata");
|
|
11
|
+
const cloneCallableConstraint = (constraint) => {
|
|
12
|
+
const source = constraint;
|
|
13
|
+
const cloned = ((value) => source(value));
|
|
14
|
+
const {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
+
length: _length,
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
18
|
+
name: _name,
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
prototype: _prototype,
|
|
21
|
+
...descriptors
|
|
22
|
+
} = Object.getOwnPropertyDescriptors(source);
|
|
23
|
+
Object.defineProperties(cloned, descriptors);
|
|
24
|
+
try {
|
|
25
|
+
Object.defineProperty(cloned, "name", {
|
|
26
|
+
configurable: true,
|
|
27
|
+
value: source.name
|
|
28
|
+
});
|
|
29
|
+
} catch {
|
|
30
|
+
}
|
|
31
|
+
Object.setPrototypeOf(cloned, Object.getPrototypeOf(source));
|
|
32
|
+
return cloned;
|
|
33
|
+
};
|
|
34
|
+
const cloneConstraint = (constraint) => {
|
|
35
|
+
if (typeof constraint === "function") {
|
|
36
|
+
return cloneCallableConstraint(constraint);
|
|
37
|
+
}
|
|
38
|
+
return Object.create(
|
|
39
|
+
Object.getPrototypeOf(constraint),
|
|
40
|
+
Object.getOwnPropertyDescriptors(constraint)
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
const freezeMetadata = (metadata) => Object.freeze({ ...metadata });
|
|
44
|
+
const getConstraintMetadata = (constraint) => {
|
|
45
|
+
return constraint[constraintMetadataSymbol];
|
|
46
|
+
};
|
|
47
|
+
const getDescriptorFactory = (constraint) => {
|
|
48
|
+
return constraint[constraintDescriptorSymbol];
|
|
49
|
+
};
|
|
50
|
+
const getPublicDescriptor = (constraint) => {
|
|
51
|
+
if (!isValidator(constraint)) {
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
const { describe: describe2 } = constraint;
|
|
55
|
+
return typeof describe2 === "function" ? describe2.call(constraint) : void 0;
|
|
56
|
+
};
|
|
57
|
+
const inferAssertionDescriptor = (assertion) => ({
|
|
58
|
+
kind: "assertion",
|
|
59
|
+
name: assertion.name,
|
|
60
|
+
bail: assertion.bail,
|
|
61
|
+
code: assertion.name,
|
|
62
|
+
args: [],
|
|
63
|
+
constraints: assertion.constraints.map(([, , code, ...args]) => ({
|
|
64
|
+
code,
|
|
65
|
+
args
|
|
66
|
+
}))
|
|
67
|
+
});
|
|
68
|
+
const withMetadata = (descriptor, metadata) => {
|
|
69
|
+
if (!metadata) {
|
|
70
|
+
return descriptor;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
...descriptor,
|
|
74
|
+
metadata
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
const attachConstraintDescriptor = (constraint, describe2) => {
|
|
78
|
+
Object.defineProperty(constraint, constraintDescriptorSymbol, {
|
|
79
|
+
configurable: false,
|
|
80
|
+
enumerable: false,
|
|
81
|
+
value: describe2,
|
|
82
|
+
writable: false
|
|
83
|
+
});
|
|
84
|
+
return constraint;
|
|
85
|
+
};
|
|
86
|
+
const meta = (constraint, metadata) => {
|
|
87
|
+
const cloned = cloneConstraint(constraint);
|
|
88
|
+
const nextMetadata = freezeMetadata({
|
|
89
|
+
...getConstraintMetadata(constraint) ?? {},
|
|
90
|
+
...metadata
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(cloned, constraintMetadataSymbol, {
|
|
93
|
+
configurable: true,
|
|
94
|
+
enumerable: false,
|
|
95
|
+
value: nextMetadata,
|
|
96
|
+
writable: false
|
|
97
|
+
});
|
|
98
|
+
return cloned;
|
|
99
|
+
};
|
|
100
|
+
const custom = (validator) => validator;
|
|
101
|
+
const describeConstraints = (constraints) => {
|
|
102
|
+
const values = arrayify(constraints);
|
|
103
|
+
return values.length === 1 ? describe(values[0]) : {
|
|
104
|
+
kind: "allOf",
|
|
105
|
+
constraints: values.map((value) => describe(value))
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
const describe = (constraint) => {
|
|
109
|
+
const factory = getDescriptorFactory(constraint);
|
|
110
|
+
const metadata = getConstraintMetadata(constraint);
|
|
111
|
+
if (factory) {
|
|
112
|
+
return withMetadata(factory(), metadata);
|
|
113
|
+
}
|
|
114
|
+
const publicDescriptor = getPublicDescriptor(constraint);
|
|
115
|
+
if (publicDescriptor) {
|
|
116
|
+
return withMetadata(publicDescriptor, metadata);
|
|
117
|
+
}
|
|
118
|
+
if (isValidator(constraint)) {
|
|
119
|
+
return withMetadata({ kind: "validator" }, metadata);
|
|
120
|
+
}
|
|
121
|
+
return withMetadata(inferAssertionDescriptor(constraint), metadata);
|
|
122
|
+
};
|
|
123
|
+
exports.arrayify = arrayify;
|
|
124
|
+
exports.attachConstraintDescriptor = attachConstraintDescriptor;
|
|
125
|
+
exports.custom = custom;
|
|
126
|
+
exports.describe = describe;
|
|
127
|
+
exports.describeConstraints = describeConstraints;
|
|
128
|
+
exports.isValidator = isValidator;
|
|
129
|
+
exports.matchesConstraints = matchesConstraints;
|
|
130
|
+
exports.meta = meta;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Constraint, ConstraintDescriptor, ConstraintMetadata, DescribeConstraint, DescribeMaybeMany, MaybeMany, Validator } from '../types';
|
|
2
|
+
type DescriptorFactory = () => ConstraintDescriptor;
|
|
3
|
+
export declare const attachConstraintDescriptor: <C extends Constraint>(constraint: C, describe: DescriptorFactory) => C;
|
|
4
|
+
export declare const meta: <const C extends Constraint, const M extends ConstraintMetadata>(constraint: C, metadata: M) => C;
|
|
5
|
+
export declare const custom: <const V extends Validator>(validator: V) => V;
|
|
6
|
+
export declare const describeConstraints: <const C extends MaybeMany<Constraint>>(constraints: C) => DescribeMaybeMany<C>;
|
|
7
|
+
export declare const describe: <const C extends Constraint>(constraint: C) => DescribeConstraint<C>;
|
|
8
|
+
export {};
|