@modulify/validator 0.1.0 → 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 +29 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/README.md +324 -107
- package/dist/assert.cjs +66 -0
- package/dist/assert.d.ts +16 -0
- package/dist/assert.mjs +66 -0
- package/dist/assertions.cjs +190 -92
- package/dist/assertions.d.ts +58 -2
- package/dist/assertions.mjs +191 -93
- 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 +172 -61
- package/dist/index.d.ts +10 -4
- package/dist/index.mjs +176 -64
- 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 +40 -5
- package/dist/predicates.d.ts +25 -3
- package/dist/predicates.mjs +40 -5
- 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/package.json +43 -33
- 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 +789 -30
- package/types/json-schema.d.ts +75 -0
- package/dist/assertions/Assert.d.ts +0 -2
- package/dist/assertions/HasLength.d.ts +0 -7
- package/dist/assertions/check.d.ts +0 -3
- package/dist/assertions/index.d.ts +0 -16
- package/dist/runners/Each.d.ts +0 -3
- package/dist/runners/HasProperties.d.ts +0 -6
- package/dist/runners/index.d.ts +0 -2
- package/dist/runners.cjs +0 -32
- package/dist/runners.d.ts +0 -2
- package/dist/runners.mjs +0 -32
package/types/index.d.ts
CHANGED
|
@@ -1,65 +1,824 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/** Internal utility that intersects all members of a tuple into a single type. */
|
|
2
|
+
export type Intersect<T extends readonly unknown[]> =
|
|
3
|
+
T extends readonly [infer First, ...infer Rest extends readonly unknown[]]
|
|
3
4
|
? First & Intersect<Rest>
|
|
4
5
|
: unknown;
|
|
5
6
|
|
|
7
|
+
/** Internal utility that converts a union like `A | B` into `A & B`. */
|
|
8
|
+
export type UnionToIntersection<T> =
|
|
9
|
+
(T extends unknown ? (value: T) => void : never) extends (value: infer I) => void
|
|
10
|
+
? I
|
|
11
|
+
: never;
|
|
12
|
+
|
|
13
|
+
/** Internal helper for nested validation results. */
|
|
6
14
|
export type Recursive<T> = T | Recursive<T>[]
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
/** Accepts either a single value or an array of values. */
|
|
17
|
+
export type MaybeMany<V> = V | readonly V[]
|
|
18
|
+
/** Accepts either a plain value or a promise of that value. */
|
|
9
19
|
export type MaybePromise<V> = V | Promise<V>
|
|
10
20
|
|
|
21
|
+
/** Runtime predicate that also acts as a TypeScript type guard. */
|
|
11
22
|
export type Predicate<T = unknown> = (value: unknown) => value is T
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
23
|
+
|
|
24
|
+
/** Checker used by assertion constraints after a value is extracted. */
|
|
25
|
+
export type Checker<T, A extends readonly unknown[] = readonly unknown[]> = (value: T, ...args: A) => boolean
|
|
26
|
+
|
|
27
|
+
/** Extracts a derived value from the original input before a checker runs. */
|
|
28
|
+
export type Extractor<T, V> = (value: T) => V
|
|
29
|
+
|
|
30
|
+
/** Origin layer that produced a violation. */
|
|
31
|
+
export type ViolationKind = 'assertion' | 'validator' | 'runtime'
|
|
32
|
+
|
|
33
|
+
/** Contract stored in `ViolationCodeRegistry` for a known machine-readable code. */
|
|
34
|
+
export type ViolationCodeEntry<
|
|
35
|
+
K extends ViolationKind = ViolationKind,
|
|
36
|
+
N extends string = string,
|
|
37
|
+
A extends readonly unknown[] = readonly unknown[],
|
|
38
|
+
> = {
|
|
39
|
+
kind: K;
|
|
40
|
+
name: N;
|
|
41
|
+
args: A;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
type ResolveViolationEntry<E> =
|
|
45
|
+
[E] extends [never]
|
|
46
|
+
? ViolationCodeEntry
|
|
47
|
+
: E extends ViolationCodeEntry
|
|
48
|
+
? E
|
|
49
|
+
: ViolationCodeEntry
|
|
50
|
+
|
|
51
|
+
type ResolveViolationSubjectCode<COrT extends string | readonly unknown[]> = COrT extends string ? COrT : string
|
|
52
|
+
type ResolveViolationSubjectArgs<COrT extends string | readonly unknown[], C extends string> = [COrT] extends [readonly unknown[]]
|
|
53
|
+
? COrT
|
|
54
|
+
: ViolationArgs<C>
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Extensible registry of machine-readable violation codes.
|
|
58
|
+
*
|
|
59
|
+
* Consumers can augment this interface in their app code:
|
|
60
|
+
* `declare module '@modulify/validator' { interface ViolationCodeRegistry { 'app.user.conflict': ViolationCodeEntry<'validator', 'user', readonly []> } }`
|
|
61
|
+
*
|
|
62
|
+
* Legacy `never` markers remain supported as a fallback for gradual migration:
|
|
63
|
+
* `declare module '@modulify/validator' { interface ViolationCodeRegistry { 'legacy.code': never } }`
|
|
64
|
+
*/
|
|
65
|
+
export interface ViolationCodeRegistry {
|
|
66
|
+
'length.exact': ViolationCodeEntry<'assertion', 'hasLength', readonly [exact: number]>;
|
|
67
|
+
'length.max': ViolationCodeEntry<'assertion', 'hasLength', readonly [max: number]>;
|
|
68
|
+
'length.min': ViolationCodeEntry<'assertion', 'hasLength', readonly [min: number]>;
|
|
69
|
+
'length.range': ViolationCodeEntry<'assertion', 'hasLength', readonly [range: readonly [number, number]]>;
|
|
70
|
+
'length.unsupported-type': ViolationCodeEntry<'assertion', 'hasLength', readonly []>;
|
|
71
|
+
'number.exact': ViolationCodeEntry<'assertion', 'hasValue', readonly [exact: number]>;
|
|
72
|
+
'number.max': ViolationCodeEntry<'assertion', 'hasValue', readonly [max: number]>;
|
|
73
|
+
'number.min': ViolationCodeEntry<'assertion', 'hasValue', readonly [min: number]>;
|
|
74
|
+
'number.multiple-of': ViolationCodeEntry<'assertion', 'multipleOf', readonly [step: number]>;
|
|
75
|
+
'number.nan': ViolationCodeEntry<'assertion', 'isNaN', readonly []>;
|
|
76
|
+
'number.range': ViolationCodeEntry<'assertion', 'hasValue', readonly [range: readonly [number, number]]>;
|
|
77
|
+
'number.unsupported-type': ViolationCodeEntry<'assertion', 'hasValue' | 'multipleOf', readonly []>;
|
|
78
|
+
'runtime.rejection': ViolationCodeEntry<'runtime', 'validate', readonly [reason: unknown]>;
|
|
79
|
+
'shape.fields.mismatch': ViolationCodeEntry<
|
|
80
|
+
'validator',
|
|
81
|
+
'shape',
|
|
82
|
+
readonly [selectors: readonly [ObjectShapeFieldSelector, ObjectShapeFieldSelector]]
|
|
83
|
+
>;
|
|
84
|
+
'shape.unknown-key': ViolationCodeEntry<'validator', 'shape', readonly []>;
|
|
85
|
+
'size.exact': ViolationCodeEntry<'assertion', 'hasSize', readonly [exact: number]>;
|
|
86
|
+
'size.max': ViolationCodeEntry<'assertion', 'hasSize', readonly [max: number]>;
|
|
87
|
+
'size.min': ViolationCodeEntry<'assertion', 'hasSize', readonly [min: number]>;
|
|
88
|
+
'size.range': ViolationCodeEntry<'assertion', 'hasSize', readonly [range: readonly [number, number]]>;
|
|
89
|
+
'size.unsupported-type': ViolationCodeEntry<'assertion', 'hasSize', readonly []>;
|
|
90
|
+
'string.email': ViolationCodeEntry<'assertion', 'isEmail', readonly []>;
|
|
91
|
+
'string.ends-with': ViolationCodeEntry<'assertion', 'endsWith', readonly [suffix: string]>;
|
|
92
|
+
'string.pattern': ViolationCodeEntry<'assertion', 'hasPattern', readonly [pattern: RegExp]>;
|
|
93
|
+
'string.starts-with': ViolationCodeEntry<'assertion', 'startsWith', readonly [prefix: string]>;
|
|
94
|
+
'string.unsupported-type': ViolationCodeEntry<
|
|
95
|
+
'assertion',
|
|
96
|
+
'hasPattern' | 'startsWith' | 'endsWith',
|
|
97
|
+
readonly []
|
|
98
|
+
>;
|
|
99
|
+
'tuple.length': ViolationCodeEntry<'validator', 'tuple', readonly [length: number]>;
|
|
100
|
+
'type.array': ViolationCodeEntry<'validator', 'each' | 'tuple', readonly []>;
|
|
101
|
+
'type.bigint': ViolationCodeEntry<'assertion', 'isBigInt', readonly []>;
|
|
102
|
+
'type.blob': ViolationCodeEntry<'assertion', 'isBlob', readonly []>;
|
|
103
|
+
'type.boolean': ViolationCodeEntry<'assertion', 'isBoolean', readonly []>;
|
|
104
|
+
'type.date': ViolationCodeEntry<'assertion', 'isDate', readonly []>;
|
|
105
|
+
'type.file': ViolationCodeEntry<'assertion', 'isFile', readonly []>;
|
|
106
|
+
'type.function': ViolationCodeEntry<'assertion', 'isFunction', readonly []>;
|
|
107
|
+
'type.map': ViolationCodeEntry<'assertion', 'isMap', readonly []>;
|
|
108
|
+
'type.null': ViolationCodeEntry<'assertion', 'isNull', readonly []>;
|
|
109
|
+
'type.number': ViolationCodeEntry<'assertion', 'isNumber', readonly []>;
|
|
110
|
+
'type.record': ViolationCodeEntry<'validator', 'shape' | 'discriminatedUnion' | 'record', readonly []>;
|
|
111
|
+
'type.set': ViolationCodeEntry<'assertion', 'isSet', readonly []>;
|
|
112
|
+
'type.string': ViolationCodeEntry<'assertion', 'isString', readonly []>;
|
|
113
|
+
'type.symbol': ViolationCodeEntry<'assertion', 'isSymbol', readonly []>;
|
|
114
|
+
'union.invalid-discriminator': ViolationCodeEntry<
|
|
115
|
+
'validator',
|
|
116
|
+
'discriminatedUnion',
|
|
117
|
+
readonly [variants: readonly PropertyKey[]]
|
|
118
|
+
>;
|
|
119
|
+
'union.no-match': ViolationCodeEntry<'validator', 'union', readonly [branches: number]>;
|
|
120
|
+
'value.defined': ViolationCodeEntry<'assertion', 'isDefined', readonly []>;
|
|
121
|
+
'value.exact': ViolationCodeEntry<'assertion', 'exact', readonly [expected: unknown]>;
|
|
122
|
+
'value.one-of': ViolationCodeEntry<'assertion', 'oneOf', readonly [values: readonly unknown[]]>;
|
|
17
123
|
}
|
|
18
124
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
125
|
+
/** Union of all registered machine-readable violation codes. */
|
|
126
|
+
export type ViolationCode = Extract<keyof ViolationCodeRegistry, string>
|
|
127
|
+
|
|
128
|
+
/** Registered codes that provide a full contract entry instead of a legacy `never` marker. */
|
|
129
|
+
export type KnownViolationCode = Extract<{
|
|
130
|
+
[C in ViolationCode]:
|
|
131
|
+
[ViolationCodeRegistry[C]] extends [never]
|
|
132
|
+
? never
|
|
133
|
+
: ViolationCodeRegistry[C] extends ViolationCodeEntry
|
|
134
|
+
? C
|
|
135
|
+
: never
|
|
136
|
+
}[ViolationCode], string>
|
|
137
|
+
|
|
138
|
+
/** Contract entry derived from `ViolationCodeRegistry`, with a generic fallback for unknown or legacy codes. */
|
|
139
|
+
export type ViolationEntry<C extends string = string> = C extends ViolationCode
|
|
140
|
+
? ResolveViolationEntry<ViolationCodeRegistry[C]>
|
|
141
|
+
: ViolationCodeEntry
|
|
142
|
+
|
|
143
|
+
/** Tuple of machine-readable arguments associated with a violation code. */
|
|
144
|
+
export type ViolationArgs<C extends string = string> = ViolationEntry<C>['args']
|
|
145
|
+
|
|
146
|
+
/** Origin layer associated with a violation code. */
|
|
147
|
+
export type ViolationKindOf<C extends string = string> = ViolationEntry<C>['kind']
|
|
148
|
+
|
|
149
|
+
/** Constraint name associated with a violation code. */
|
|
150
|
+
export type ViolationNameOf<C extends string = string> = ViolationEntry<C>['name']
|
|
151
|
+
|
|
152
|
+
/** Strict code-driven violation subject for a fully registered violation code. */
|
|
153
|
+
export type KnownViolationSubject<C extends KnownViolationCode> = {
|
|
154
|
+
kind: ViolationKindOf<C>;
|
|
155
|
+
name: ViolationNameOf<C>;
|
|
156
|
+
code: C;
|
|
157
|
+
args: ViolationArgs<C>;
|
|
22
158
|
}
|
|
23
159
|
|
|
24
|
-
|
|
160
|
+
/** Machine-readable description of a validation failure. */
|
|
161
|
+
export type ViolationSubject<
|
|
162
|
+
COrT extends string | readonly unknown[] = string,
|
|
163
|
+
K extends ViolationKind = COrT extends string ? ViolationKindOf<COrT> : ViolationKind,
|
|
164
|
+
C extends string = ResolveViolationSubjectCode<COrT>,
|
|
165
|
+
T extends readonly unknown[] = ResolveViolationSubjectArgs<COrT, C>,
|
|
166
|
+
> = [COrT] extends [readonly unknown[]]
|
|
167
|
+
? {
|
|
168
|
+
kind: K;
|
|
169
|
+
name: string;
|
|
170
|
+
code: C;
|
|
171
|
+
args: T;
|
|
172
|
+
}
|
|
173
|
+
: C extends KnownViolationCode
|
|
174
|
+
? {
|
|
175
|
+
kind: K & ViolationKindOf<C>;
|
|
176
|
+
name: ViolationNameOf<C>;
|
|
177
|
+
code: C;
|
|
178
|
+
args: T & ViolationArgs<C>;
|
|
179
|
+
}
|
|
180
|
+
: {
|
|
181
|
+
kind: K;
|
|
182
|
+
name: string;
|
|
183
|
+
code: C;
|
|
184
|
+
args: T;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Structured validation error returned by assertions and composed validators.
|
|
189
|
+
*
|
|
190
|
+
* `path` points to the nested property or array index that failed.
|
|
191
|
+
*
|
|
192
|
+
* Example:
|
|
193
|
+
* `violation.violates.code === 'length.min'`
|
|
194
|
+
*/
|
|
195
|
+
export type Violation<S extends ViolationSubject = ViolationSubject> = {
|
|
25
196
|
value: unknown;
|
|
26
|
-
/** Path to a property, if a constraint is used as part of a `Collection` for checking some object's structure */
|
|
27
197
|
path?: PropertyKey[];
|
|
28
|
-
violates:
|
|
29
|
-
reason?: string | symbol;
|
|
30
|
-
meta?: M;
|
|
198
|
+
violates: S;
|
|
31
199
|
}
|
|
32
200
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
201
|
+
/** Read-only utility wrapper for working with `Violation[]` results. */
|
|
202
|
+
export declare class ViolationCollection<V extends Violation = Violation> implements Iterable<V> {
|
|
203
|
+
constructor(violations: readonly V[]);
|
|
204
|
+
readonly size: number;
|
|
205
|
+
[Symbol.iterator](): Iterator<V>;
|
|
206
|
+
forEach(callback: (violation: V, index: number, collection: ViolationCollection<V>) => void): void;
|
|
207
|
+
map<T>(callback: (violation: V, index: number, collection: ViolationCollection<V>) => T): T[];
|
|
208
|
+
at(path: readonly PropertyKey[]): ViolationCollection<V>;
|
|
209
|
+
tree(): ViolationTreeNode<V>;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** Tree node built from a `ViolationCollection` for nested path traversal. */
|
|
213
|
+
export type ViolationTreeNode<V extends Violation = Violation> = {
|
|
214
|
+
readonly path: readonly PropertyKey[];
|
|
215
|
+
readonly self: ViolationCollection<V>;
|
|
216
|
+
readonly subtree: ViolationCollection<V>;
|
|
217
|
+
readonly children: ReadonlyMap<PropertyKey, ViolationTreeNode<V>>;
|
|
218
|
+
at(path: readonly PropertyKey[]): ViolationTreeNode<V> | undefined;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/** Standard entrypoint for wrapping `Violation[]` into a collection utility API. */
|
|
222
|
+
export declare const collection: <V extends Violation>(violations: readonly V[]) => ViolationCollection<V>
|
|
223
|
+
|
|
224
|
+
/** Read-only machine-readable metadata attached to a constraint. */
|
|
225
|
+
export type ConstraintMetadata = Readonly<Record<string, unknown>>
|
|
226
|
+
|
|
227
|
+
/** Public descriptor entry for additional assertion-level checks. */
|
|
228
|
+
export interface AssertionDescriptorConstraint<
|
|
229
|
+
C extends string = string,
|
|
230
|
+
A extends readonly unknown[] = readonly unknown[],
|
|
231
|
+
> {
|
|
232
|
+
readonly code: C;
|
|
233
|
+
readonly args: A
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/** Shared descriptor shape returned by `describe(...)`. */
|
|
237
|
+
export interface ConstraintDescriptorBase<K extends string = string> {
|
|
238
|
+
readonly kind: K;
|
|
239
|
+
readonly metadata?: ConstraintMetadata
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** Descriptor for leaf assertions created with `assert(...)` or compatible custom assertions. */
|
|
243
|
+
export interface AssertionDescriptor<
|
|
244
|
+
C extends string = string,
|
|
245
|
+
A extends readonly unknown[] = readonly unknown[],
|
|
246
|
+
T extends readonly AssertionDescriptorConstraint[] = readonly AssertionDescriptorConstraint[],
|
|
247
|
+
> extends ConstraintDescriptorBase<'assertion'> {
|
|
248
|
+
readonly name: string;
|
|
249
|
+
readonly bail: boolean;
|
|
250
|
+
readonly code: C;
|
|
251
|
+
readonly args: A;
|
|
252
|
+
readonly constraints: T
|
|
39
253
|
}
|
|
40
254
|
|
|
41
|
-
|
|
255
|
+
/** Generic fallback descriptor for custom validators without structural instrumentation. */
|
|
256
|
+
export type ValidatorDescriptor = ConstraintDescriptorBase<'validator'>
|
|
257
|
+
|
|
258
|
+
/** Public extension descriptor for custom validators that expose their own `describe()` contract. */
|
|
259
|
+
export interface CustomConstraintDescriptor<K extends string = string> extends ConstraintDescriptorBase<K> {
|
|
260
|
+
readonly [key: string]: unknown
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** Descriptor for sequential arrays of constraints used in a single slot. */
|
|
264
|
+
export interface AllOfConstraintDescriptor<
|
|
265
|
+
T extends readonly unknown[] = readonly ConstraintDescriptor[],
|
|
266
|
+
> extends ConstraintDescriptorBase<'allOf'> {
|
|
267
|
+
readonly constraints: T
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** Descriptor for wrapper combinators such as `optional(...)`. */
|
|
271
|
+
export interface WrapperConstraintDescriptor<
|
|
272
|
+
K extends 'optional' | 'nullable' | 'nullish' = 'optional' | 'nullable' | 'nullish',
|
|
273
|
+
C = ConstraintDescriptor,
|
|
274
|
+
> extends ConstraintDescriptorBase<K> {
|
|
275
|
+
readonly child: C
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** Descriptor for `each(...)`. */
|
|
279
|
+
export interface EachConstraintDescriptor<
|
|
280
|
+
C = ConstraintDescriptor,
|
|
281
|
+
> extends ConstraintDescriptorBase<'each'> {
|
|
282
|
+
readonly item: C
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/** Descriptor for `tuple(...)`. */
|
|
286
|
+
export interface TupleConstraintDescriptor<
|
|
287
|
+
T extends readonly unknown[] = readonly ConstraintDescriptor[],
|
|
288
|
+
> extends ConstraintDescriptorBase<'tuple'> {
|
|
289
|
+
readonly items: T
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/** Descriptor for `union(...)`. */
|
|
293
|
+
export interface UnionConstraintDescriptor<
|
|
294
|
+
T extends readonly unknown[] = readonly ConstraintDescriptor[],
|
|
295
|
+
> extends ConstraintDescriptorBase<'union'> {
|
|
296
|
+
readonly branches: T
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/** Descriptor for `record(...)`. */
|
|
300
|
+
export interface RecordConstraintDescriptor<
|
|
301
|
+
C = ConstraintDescriptor,
|
|
302
|
+
> extends ConstraintDescriptorBase<'record'> {
|
|
303
|
+
readonly values: C
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/** Descriptor for `discriminatedUnion(...)`. */
|
|
307
|
+
export interface DiscriminatedUnionConstraintDescriptor<
|
|
308
|
+
V = Readonly<Record<PropertyKey, ConstraintDescriptor>>,
|
|
309
|
+
> extends ConstraintDescriptorBase<'discriminatedUnion'> {
|
|
310
|
+
readonly key: PropertyKey;
|
|
311
|
+
readonly variants: V
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/** Machine-readable summary of object-level rules registered on a shape. */
|
|
315
|
+
export interface ObjectShapeRuleDescriptorBase<K extends string = string> {
|
|
316
|
+
readonly kind: K;
|
|
317
|
+
readonly metadata?: ConstraintMetadata
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** Generic compact descriptor for sync object-level rules added via `.refine(...)`. */
|
|
321
|
+
export type GenericObjectShapeRuleDescriptor<
|
|
322
|
+
K extends string = 'refine',
|
|
323
|
+
> = ObjectShapeRuleDescriptorBase<K>
|
|
324
|
+
|
|
325
|
+
/** Descriptor for the built-in `.fieldsMatch(...)` helper. */
|
|
326
|
+
export interface FieldsMatchObjectShapeRuleDescriptor<
|
|
327
|
+
Left extends ObjectShapeFieldSelector = ObjectShapeFieldSelector,
|
|
328
|
+
Right extends ObjectShapeFieldSelector = ObjectShapeFieldSelector,
|
|
329
|
+
> extends ObjectShapeRuleDescriptorBase<'fieldsMatch'> {
|
|
330
|
+
readonly selectors: readonly [Left, Right]
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/** Machine-readable summary of object-level rules registered on a shape. */
|
|
334
|
+
export type ObjectShapeRuleDescriptor =
|
|
335
|
+
| GenericObjectShapeRuleDescriptor<string>
|
|
336
|
+
| FieldsMatchObjectShapeRuleDescriptor
|
|
337
|
+
|
|
338
|
+
/** Descriptor for `shape(...)`. */
|
|
339
|
+
export interface ShapeConstraintDescriptor<
|
|
340
|
+
F = Readonly<Record<PropertyKey, ConstraintDescriptor>>,
|
|
341
|
+
R extends readonly ObjectShapeRuleDescriptor[] = readonly ObjectShapeRuleDescriptor[],
|
|
342
|
+
> extends ConstraintDescriptorBase<'shape'> {
|
|
343
|
+
readonly unknownKeys: UnknownKeysMode;
|
|
344
|
+
readonly fields: F;
|
|
345
|
+
readonly rules: R
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/** Stable machine-readable description of a constraint tree. */
|
|
349
|
+
export type BuiltInConstraintDescriptor =
|
|
350
|
+
| AssertionDescriptor
|
|
351
|
+
| AllOfConstraintDescriptor
|
|
352
|
+
| ValidatorDescriptor
|
|
353
|
+
| WrapperConstraintDescriptor
|
|
354
|
+
| EachConstraintDescriptor
|
|
355
|
+
| TupleConstraintDescriptor
|
|
356
|
+
| UnionConstraintDescriptor
|
|
357
|
+
| RecordConstraintDescriptor
|
|
358
|
+
| DiscriminatedUnionConstraintDescriptor
|
|
359
|
+
| ShapeConstraintDescriptor
|
|
360
|
+
|
|
361
|
+
/** Stable machine-readable description of a constraint tree. */
|
|
362
|
+
export type ConstraintDescriptor = BuiltInConstraintDescriptor | CustomConstraintDescriptor
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Extra checker pipeline for an assertion.
|
|
366
|
+
*
|
|
367
|
+
* Example:
|
|
368
|
+
* `type LengthConstraint = AssertionConstraint<string, number, [min: number], 'length.min'>`
|
|
369
|
+
*/
|
|
370
|
+
export type AssertionConstraint<
|
|
371
|
+
T = unknown,
|
|
372
|
+
V = unknown,
|
|
373
|
+
A extends readonly unknown[] = readonly unknown[],
|
|
374
|
+
C extends string = string
|
|
375
|
+
> = readonly [
|
|
376
|
+
Extractor<T, V>,
|
|
377
|
+
Checker<V, A>,
|
|
378
|
+
C,
|
|
379
|
+
...A
|
|
380
|
+
]
|
|
381
|
+
|
|
382
|
+
/** Maps an assertion checker tuple into its public descriptor entry. */
|
|
383
|
+
export type DescribeAssertionConstraint<C extends AssertionConstraint> =
|
|
384
|
+
C extends AssertionConstraint<unknown, unknown, infer A, infer Code>
|
|
385
|
+
? AssertionDescriptorConstraint<Code, A>
|
|
386
|
+
: never
|
|
42
387
|
|
|
43
|
-
|
|
44
|
-
|
|
388
|
+
/** Maps an assertion checker tuple into the violation subject it can produce. */
|
|
389
|
+
export type AssertionConstraintSubject<C extends AssertionConstraint, N extends string = string> =
|
|
390
|
+
C extends AssertionConstraint<unknown, unknown, infer A, infer Code>
|
|
391
|
+
? {
|
|
392
|
+
kind: 'assertion';
|
|
393
|
+
name: N;
|
|
394
|
+
code: Code;
|
|
395
|
+
args: A;
|
|
396
|
+
}
|
|
397
|
+
: never
|
|
398
|
+
|
|
399
|
+
/** Maps assertion checker tuples into their public descriptor entries. */
|
|
400
|
+
export type DescribeAssertionConstraintTuple<T extends readonly AssertionConstraint[]> = {
|
|
401
|
+
readonly [K in keyof T]: T[K] extends AssertionConstraint
|
|
402
|
+
? DescribeAssertionConstraint<T[K]>
|
|
403
|
+
: never
|
|
404
|
+
} & ReadonlyArray<DescribeAssertionConstraint<T[number]>>
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Leaf-level validator that checks a single value and either succeeds with `null`
|
|
408
|
+
* or returns a structured violation.
|
|
409
|
+
*
|
|
410
|
+
* `check` is the synchronous type guard used for inference and sync narrowing.
|
|
411
|
+
*/
|
|
412
|
+
export type Assertion<
|
|
413
|
+
T = unknown,
|
|
414
|
+
C extends readonly AssertionConstraint[] = readonly AssertionConstraint[],
|
|
415
|
+
Code extends string = string,
|
|
416
|
+
A extends readonly unknown[] = readonly unknown[],
|
|
417
|
+
Name extends string = string,
|
|
418
|
+
> = ((value: unknown) => MaybePromise<Omit<Violation<
|
|
419
|
+
{
|
|
420
|
+
kind: 'assertion';
|
|
421
|
+
name: Name;
|
|
422
|
+
code: Code;
|
|
423
|
+
args: A;
|
|
424
|
+
} | AssertionConstraintSubject<C[number], Name>
|
|
425
|
+
>, 'path'> | null>) & {
|
|
426
|
+
readonly name: Name;
|
|
427
|
+
readonly bail: boolean;
|
|
428
|
+
readonly constraints: C;
|
|
429
|
+
readonly check: Predicate<T>;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Any reusable validation unit: either a leaf `Assertion` or a composed `Validator`.
|
|
434
|
+
*
|
|
435
|
+
* This is the main building block accepted by `validate(...)`, `matches.sync(...)`,
|
|
436
|
+
* `shape(...)`, and `each(...)`.
|
|
437
|
+
*/
|
|
438
|
+
export type Constraint<T = unknown> = Assertion<T> | Validator<T>
|
|
439
|
+
|
|
440
|
+
/** Extracts the validated TypeScript type from a single constraint. */
|
|
441
|
+
export type InferConstraint<C> =
|
|
442
|
+
C extends Assertion<infer T, readonly AssertionConstraint[], string, readonly unknown[], string>
|
|
443
|
+
? T
|
|
444
|
+
: C extends Validator<infer T>
|
|
445
|
+
? T
|
|
446
|
+
: never
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Extracts the validated TypeScript type from one or many constraints.
|
|
450
|
+
*
|
|
451
|
+
* When an array of constraints is provided, their inferred types are intersected.
|
|
452
|
+
*
|
|
453
|
+
* Example:
|
|
454
|
+
* `InferConstraints<[typeof isDefined, typeof isString]> // string`
|
|
455
|
+
*
|
|
456
|
+
* Example:
|
|
457
|
+
* `InferConstraints<typeof shape({ name: [isDefined, isString] })> // { name: string }`
|
|
458
|
+
*/
|
|
459
|
+
export type InferConstraints<C> =
|
|
460
|
+
C extends readonly []
|
|
461
|
+
? unknown
|
|
462
|
+
: C extends readonly unknown[]
|
|
463
|
+
? UnionToIntersection<InferConstraint<C[number]>>
|
|
464
|
+
: InferConstraint<C>
|
|
465
|
+
|
|
466
|
+
/** Internal async runner signature used by composed validators. */
|
|
467
|
+
export type Validate = (
|
|
468
|
+
value: unknown,
|
|
45
469
|
constraints: MaybeMany<Constraint>,
|
|
46
470
|
path?: PropertyKey[]
|
|
47
471
|
) => Promise<Violation[]>
|
|
48
472
|
|
|
49
|
-
|
|
50
|
-
|
|
473
|
+
/** Internal sync runner signature used by composed validators. */
|
|
474
|
+
export type ValidateSync = (
|
|
475
|
+
value: unknown,
|
|
51
476
|
constraints: MaybeMany<Constraint>,
|
|
52
477
|
path?: PropertyKey[]
|
|
53
478
|
) => Violation[]
|
|
54
479
|
|
|
55
|
-
|
|
480
|
+
/** Internal union of async and sync runner signatures. */
|
|
481
|
+
export type ValidateLike = Validate | ValidateSync
|
|
482
|
+
|
|
483
|
+
/** Internal helper that maps a runner kind to nested validation results. */
|
|
484
|
+
export type Validation<F extends ValidateLike> = F extends Validate
|
|
56
485
|
? MaybePromise<Violation[]>
|
|
57
486
|
: Violation[]
|
|
58
487
|
|
|
59
|
-
|
|
60
|
-
|
|
488
|
+
/** Controls how object shapes handle keys missing from the descriptor. */
|
|
489
|
+
export type UnknownKeysMode = 'passthrough' | 'strict'
|
|
490
|
+
|
|
491
|
+
/** Field selector accepted by shape helpers that can point to the current level or a nested path. */
|
|
492
|
+
export type ObjectShapeFieldSelector = PropertyKey | readonly PropertyKey[]
|
|
493
|
+
|
|
494
|
+
type ResolveObjectShapeRefinementIssueCode<COrA extends string | readonly unknown[]> = COrA extends string ? COrA : string
|
|
495
|
+
type ResolveObjectShapeRefinementIssueArgs<COrA extends string | readonly unknown[], C extends string> = [COrA] extends [readonly unknown[]]
|
|
496
|
+
? COrA
|
|
497
|
+
: ViolationArgs<C>
|
|
498
|
+
|
|
499
|
+
/** Machine-readable issue returned by an object-level shape refinement. */
|
|
500
|
+
export type ObjectShapeRefinementIssue<
|
|
501
|
+
COrA extends string | readonly unknown[] = string,
|
|
502
|
+
C extends string = ResolveObjectShapeRefinementIssueCode<COrA>,
|
|
503
|
+
A extends readonly unknown[] = ResolveObjectShapeRefinementIssueArgs<COrA, C>,
|
|
504
|
+
> = {
|
|
505
|
+
path?: PropertyKey[];
|
|
506
|
+
code: C;
|
|
507
|
+
args?: [COrA] extends [readonly unknown[]]
|
|
508
|
+
? A
|
|
509
|
+
: C extends KnownViolationCode
|
|
510
|
+
? A & ViolationArgs<C>
|
|
511
|
+
: A;
|
|
512
|
+
value?: unknown;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/** Sync object-level rule that runs after the base shape has validated successfully. */
|
|
516
|
+
export type ObjectShapeRefinement<
|
|
517
|
+
T,
|
|
518
|
+
I extends ObjectShapeRefinementIssue = ObjectShapeRefinementIssue,
|
|
519
|
+
> = (
|
|
520
|
+
value: T
|
|
521
|
+
) => MaybeMany<I | null | undefined> | null | undefined
|
|
522
|
+
|
|
523
|
+
type KnownCodeViolation<C extends KnownViolationCode> = Violation<KnownViolationSubject<C>>
|
|
524
|
+
|
|
525
|
+
type ShapeRefinementIssueSubject<I extends ObjectShapeRefinementIssue> =
|
|
526
|
+
I extends ObjectShapeRefinementIssue<string | readonly unknown[], infer C, infer A>
|
|
527
|
+
? C extends KnownViolationCode
|
|
528
|
+
? {
|
|
529
|
+
kind: 'validator';
|
|
530
|
+
name: 'shape' & ViolationNameOf<C>;
|
|
531
|
+
code: C;
|
|
532
|
+
args: A & ViolationArgs<C>;
|
|
533
|
+
}
|
|
534
|
+
: ViolationSubject<A, 'validator', C>
|
|
535
|
+
: never
|
|
536
|
+
|
|
537
|
+
type ShapeRefinementIssueViolation<I extends ObjectShapeRefinementIssue> =
|
|
538
|
+
I extends ObjectShapeRefinementIssue
|
|
539
|
+
? Violation<ShapeRefinementIssueSubject<I>>
|
|
540
|
+
: never
|
|
541
|
+
|
|
542
|
+
type InferObjectDescriptorViolations<D extends ObjectDescriptor> = {
|
|
543
|
+
[K in keyof D]: InferMaybeManyViolations<D[K]>
|
|
544
|
+
}[keyof D]
|
|
545
|
+
|
|
546
|
+
/** Maps a single constraint into the union of violations it can produce. */
|
|
547
|
+
export type InferConstraintViolations<C extends Constraint> =
|
|
548
|
+
C extends Assertion<unknown, infer AC, infer Code, infer Args, infer Name>
|
|
549
|
+
? Violation<{
|
|
550
|
+
kind: 'assertion';
|
|
551
|
+
name: Name;
|
|
552
|
+
code: Code;
|
|
553
|
+
args: Args;
|
|
554
|
+
} | AssertionConstraintSubject<AC[number], Name>>
|
|
555
|
+
: C extends ObjectShape<infer D, infer M, readonly ObjectShapeRuleDescriptor[], infer RI>
|
|
556
|
+
? KnownCodeViolation<'type.record'>
|
|
557
|
+
| (M extends 'strict' ? KnownCodeViolation<'shape.unknown-key'> : never)
|
|
558
|
+
| InferObjectDescriptorViolations<D>
|
|
559
|
+
| ShapeRefinementIssueViolation<RI>
|
|
560
|
+
: C extends OptionalValidator<infer Child>
|
|
561
|
+
? InferMaybeManyViolations<Child>
|
|
562
|
+
: C extends NullableValidator<infer Child>
|
|
563
|
+
? InferMaybeManyViolations<Child>
|
|
564
|
+
: C extends NullishValidator<infer Child>
|
|
565
|
+
? InferMaybeManyViolations<Child>
|
|
566
|
+
: C extends EachValidator<infer Child>
|
|
567
|
+
? KnownCodeViolation<'type.array'> | InferMaybeManyViolations<Child>
|
|
568
|
+
: C extends TupleValidator<infer Items>
|
|
569
|
+
? KnownCodeViolation<'type.array'>
|
|
570
|
+
| KnownCodeViolation<'tuple.length'>
|
|
571
|
+
| InferMaybeManyViolations<Items[number]>
|
|
572
|
+
: C extends UnionValidator<infer Branches>
|
|
573
|
+
? KnownCodeViolation<'union.no-match'> | InferMaybeManyViolations<Branches[number]>
|
|
574
|
+
: C extends DiscriminatedUnionValidator<PropertyKey, infer Variants>
|
|
575
|
+
? KnownCodeViolation<'type.record'>
|
|
576
|
+
| KnownCodeViolation<'union.invalid-discriminator'>
|
|
577
|
+
| InferMaybeManyViolations<Variants[keyof Variants]>
|
|
578
|
+
: C extends RecordValidator<infer Values>
|
|
579
|
+
? KnownCodeViolation<'type.record'> | InferMaybeManyViolations<Values>
|
|
580
|
+
: C extends Validator
|
|
581
|
+
? Violation
|
|
582
|
+
: never
|
|
583
|
+
|
|
584
|
+
/** Maps one-or-many constraints into the union of violations they can produce. */
|
|
585
|
+
export type InferMaybeManyViolations<C extends MaybeMany<Constraint>> =
|
|
586
|
+
C extends readonly []
|
|
587
|
+
? never
|
|
588
|
+
: C extends readonly Constraint[]
|
|
589
|
+
? InferConstraintViolations<C[number]>
|
|
590
|
+
: C extends Constraint
|
|
591
|
+
? InferConstraintViolations<C>
|
|
592
|
+
: never
|
|
593
|
+
|
|
594
|
+
/** Successful `validate(...)` tuple with typed `validated` value. */
|
|
595
|
+
export type ValidationSuccess<T> = [ok: true, validated: T, violations: []]
|
|
596
|
+
|
|
597
|
+
/** Failed `validate(...)` tuple with original value and collected violations. */
|
|
598
|
+
export type ValidationFailure<V extends Violation = Violation> = [ok: false, validated: unknown, violations: V[]]
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* The result tuple returned by `validate(...)` and `validate.sync(...)`.
|
|
602
|
+
*
|
|
603
|
+
* Example:
|
|
604
|
+
* `const [ok, validated, violations] = await validate(value, schema)`
|
|
605
|
+
*
|
|
606
|
+
* Example:
|
|
607
|
+
* `if (ok) validated.name.toUpperCase()`
|
|
608
|
+
*/
|
|
609
|
+
export type ValidationTuple<T, V extends Violation = Violation> = ValidationSuccess<T> | ValidationFailure<V>
|
|
610
|
+
|
|
611
|
+
/** Alias for `ValidationTuple<T>`. */
|
|
612
|
+
export type ValidationResult<T, V extends Violation = Violation> = ValidationTuple<T, V>
|
|
613
|
+
|
|
614
|
+
/** Attaches read-only metadata to a constraint without changing validation semantics. */
|
|
615
|
+
export declare const meta: <const C extends Constraint, const M extends ConstraintMetadata>(constraint: C, metadata: M) => C
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
* Composed validator used by recursive helpers such as `shape(...)` and `each(...)`.
|
|
619
|
+
*
|
|
620
|
+
* Custom validators should keep `check` aligned with runtime behavior so that
|
|
621
|
+
* inference and sync narrowing stay trustworthy.
|
|
622
|
+
*
|
|
623
|
+
* Example:
|
|
624
|
+
* `const schema: Validator<{ name: string }>`
|
|
625
|
+
*/
|
|
626
|
+
export interface Validator<T = unknown> {
|
|
627
|
+
readonly check: Predicate<T>;
|
|
628
|
+
run <F extends ValidateLike> (
|
|
61
629
|
validate: F,
|
|
62
630
|
value: unknown,
|
|
63
631
|
path: PropertyKey[]
|
|
64
632
|
): Validation<F>[];
|
|
65
633
|
}
|
|
634
|
+
|
|
635
|
+
/** Public validator extension contract for participating in `describe(...)` without private runtime knowledge. */
|
|
636
|
+
export interface DescribedValidator<
|
|
637
|
+
T = unknown,
|
|
638
|
+
D extends ConstraintDescriptor = ConstraintDescriptor,
|
|
639
|
+
> extends Validator<T> {
|
|
640
|
+
describe(): D;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/** Identity helper that preserves the exact shape of custom validators, including public descriptors. */
|
|
644
|
+
export declare const custom: <const V extends Validator>(validator: V) => V
|
|
645
|
+
|
|
646
|
+
/** Descriptor that maps object keys to one or many constraints. */
|
|
647
|
+
export type ObjectDescriptor = Record<PropertyKey, MaybeMany<Constraint>>
|
|
648
|
+
|
|
649
|
+
/** Runtime type inferred from an object descriptor. */
|
|
650
|
+
export type InferObjectDescriptor<D extends ObjectDescriptor> = {
|
|
651
|
+
[K in keyof D]: InferConstraints<D[K]>
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
/** Descriptor produced by `.partial()` where every field accepts `undefined`. */
|
|
655
|
+
export type PartialObjectDescriptor<D extends ObjectDescriptor> = {
|
|
656
|
+
[K in keyof D]: Validator<InferConstraints<D[K]> | undefined>
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/** Utility type for overriding descriptor keys from left to right. */
|
|
660
|
+
export type MergeObjectDescriptors<
|
|
661
|
+
Left extends ObjectDescriptor,
|
|
662
|
+
Right extends ObjectDescriptor,
|
|
663
|
+
> = Omit<Left, keyof Right> & Right
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Object-aware validator with descriptor introspection and immutable shape helpers.
|
|
667
|
+
*
|
|
668
|
+
* Example:
|
|
669
|
+
* `const user = shape({ name: isString }).strict()`
|
|
670
|
+
*/
|
|
671
|
+
export interface ObjectShape<
|
|
672
|
+
D extends ObjectDescriptor = ObjectDescriptor,
|
|
673
|
+
M extends UnknownKeysMode = 'passthrough',
|
|
674
|
+
R extends readonly ObjectShapeRuleDescriptor[] = readonly ObjectShapeRuleDescriptor[],
|
|
675
|
+
RI extends ObjectShapeRefinementIssue = never,
|
|
676
|
+
> extends Validator<InferObjectDescriptor<D>> {
|
|
677
|
+
readonly descriptor: D;
|
|
678
|
+
readonly unknownKeys: M;
|
|
679
|
+
refine<const I extends ObjectShapeRefinementIssue = ObjectShapeRefinementIssue>(
|
|
680
|
+
refinement: ObjectShapeRefinement<InferObjectDescriptor<D>, I>
|
|
681
|
+
): ObjectShape<D, M, [...R, GenericObjectShapeRuleDescriptor<'refine'>], RI | I>;
|
|
682
|
+
refine<
|
|
683
|
+
const I extends ObjectShapeRefinementIssue = ObjectShapeRefinementIssue,
|
|
684
|
+
const RD extends GenericObjectShapeRuleDescriptor<string> = GenericObjectShapeRuleDescriptor<'refine'>
|
|
685
|
+
>(
|
|
686
|
+
refinement: ObjectShapeRefinement<InferObjectDescriptor<D>, I>,
|
|
687
|
+
descriptor: RD
|
|
688
|
+
): ObjectShape<D, M, [...R, RD], RI | I>;
|
|
689
|
+
fieldsMatch<const K extends readonly [ObjectShapeFieldSelector, ObjectShapeFieldSelector]>(
|
|
690
|
+
keys: K
|
|
691
|
+
): ObjectShape<D, M, [...R, FieldsMatchObjectShapeRuleDescriptor<K[0], K[1]>], RI | ObjectShapeRefinementIssue<'shape.fields.mismatch'>>;
|
|
692
|
+
strict(): ObjectShape<D, 'strict', R, RI>;
|
|
693
|
+
passthrough(): ObjectShape<D, 'passthrough', R, RI>;
|
|
694
|
+
pick<const K extends readonly (keyof D)[]>(keys: K): ObjectShape<Pick<D, K[number]>, M, [], never>;
|
|
695
|
+
omit<const K extends readonly (keyof D)[]>(keys: K): ObjectShape<Omit<D, K[number]>, M, [], never>;
|
|
696
|
+
partial(): ObjectShape<PartialObjectDescriptor<D>, M, [], never>;
|
|
697
|
+
extend<const E extends ObjectDescriptor>(descriptor: E): ObjectShape<MergeObjectDescriptors<D, E>, M, [], never>;
|
|
698
|
+
merge<const E extends ObjectDescriptor, OM extends UnknownKeysMode, OR extends readonly ObjectShapeRuleDescriptor[]>(
|
|
699
|
+
shape: ObjectShape<E, OM, OR, ObjectShapeRefinementIssue>
|
|
700
|
+
): ObjectShape<MergeObjectDescriptors<D, E>, M, [], never>;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/** Helper that maps a single constraint into its public `describe(...)` result. */
|
|
704
|
+
export type DescribeConstraint<C extends Constraint> =
|
|
705
|
+
C extends Assertion<unknown, infer AC, infer Code, infer Args, string>
|
|
706
|
+
? AssertionDescriptor<Code, Args, DescribeAssertionConstraintTuple<AC>>
|
|
707
|
+
: C extends ObjectShape<infer D, infer M, infer R, ObjectShapeRefinementIssue>
|
|
708
|
+
? ShapeConstraintDescriptor<DescribeObjectDescriptor<D>, R> & { readonly unknownKeys: M }
|
|
709
|
+
: C extends OptionalValidator<infer Child>
|
|
710
|
+
? WrapperConstraintDescriptor<'optional', DescribeMaybeMany<Child>>
|
|
711
|
+
: C extends NullableValidator<infer Child>
|
|
712
|
+
? WrapperConstraintDescriptor<'nullable', DescribeMaybeMany<Child>>
|
|
713
|
+
: C extends NullishValidator<infer Child>
|
|
714
|
+
? WrapperConstraintDescriptor<'nullish', DescribeMaybeMany<Child>>
|
|
715
|
+
: C extends EachValidator<infer Child>
|
|
716
|
+
? EachConstraintDescriptor<DescribeMaybeMany<Child>>
|
|
717
|
+
: C extends TupleValidator<infer Items>
|
|
718
|
+
? TupleConstraintDescriptor<DescribeConstraintTuple<Items>>
|
|
719
|
+
: C extends UnionValidator<infer Branches>
|
|
720
|
+
? UnionConstraintDescriptor<DescribeConstraintTuple<Branches>>
|
|
721
|
+
: C extends DiscriminatedUnionValidator<PropertyKey, infer Variants>
|
|
722
|
+
? DiscriminatedUnionConstraintDescriptor<DescribeObjectDescriptor<Variants>>
|
|
723
|
+
: C extends RecordValidator<infer Values>
|
|
724
|
+
? RecordConstraintDescriptor<DescribeMaybeMany<Values>>
|
|
725
|
+
: C extends DescribedValidator<unknown, infer D>
|
|
726
|
+
? D & { readonly metadata?: ConstraintMetadata }
|
|
727
|
+
: C extends Validator
|
|
728
|
+
? ValidatorDescriptor
|
|
729
|
+
: never
|
|
730
|
+
|
|
731
|
+
/** Helper that maps a one-or-many constraint slot into its public `describe(...)` result. */
|
|
732
|
+
export type DescribeMaybeMany<C extends MaybeMany<Constraint>> =
|
|
733
|
+
C extends readonly [infer Only]
|
|
734
|
+
? Only extends Constraint
|
|
735
|
+
? DescribeConstraint<Only>
|
|
736
|
+
: never
|
|
737
|
+
: C extends readonly [Constraint, Constraint, ...Constraint[]]
|
|
738
|
+
? AllOfConstraintDescriptor<DescribeConstraintTuple<C>>
|
|
739
|
+
: C extends readonly Constraint[]
|
|
740
|
+
? DescribeConstraint<C[number]> | AllOfConstraintDescriptor
|
|
741
|
+
: C extends Constraint
|
|
742
|
+
? DescribeConstraint<C>
|
|
743
|
+
: never
|
|
744
|
+
|
|
745
|
+
/** Helper that maps object descriptors into their `describe(...)` field tree. */
|
|
746
|
+
export type DescribeObjectDescriptor<D extends ObjectDescriptor> = {
|
|
747
|
+
[K in keyof D]: DescribeMaybeMany<D[K]>
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
/** Helper that maps tuples of constraints into tuples of descriptors. */
|
|
751
|
+
export type DescribeConstraintTuple<T extends readonly MaybeMany<Constraint>[]> = {
|
|
752
|
+
readonly [K in keyof T]: DescribeMaybeMany<T[K]>
|
|
753
|
+
} & ReadonlyArray<DescribeMaybeMany<T[number]>>
|
|
754
|
+
|
|
755
|
+
declare const optionalValidatorBrand: unique symbol
|
|
756
|
+
declare const nullableValidatorBrand: unique symbol
|
|
757
|
+
declare const nullishValidatorBrand: unique symbol
|
|
758
|
+
declare const eachValidatorBrand: unique symbol
|
|
759
|
+
declare const tupleValidatorBrand: unique symbol
|
|
760
|
+
declare const unionValidatorBrand: unique symbol
|
|
761
|
+
declare const discriminatedUnionValidatorBrand: unique symbol
|
|
762
|
+
declare const recordValidatorBrand: unique symbol
|
|
763
|
+
|
|
764
|
+
/** Typed validator returned by `optional(...)`. */
|
|
765
|
+
export type OptionalValidator<C extends MaybeMany<Constraint> = MaybeMany<Constraint>> =
|
|
766
|
+
Validator<InferConstraints<C> | undefined> & {
|
|
767
|
+
readonly [optionalValidatorBrand]: C
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
/** Typed validator returned by `nullable(...)`. */
|
|
771
|
+
export type NullableValidator<C extends MaybeMany<Constraint> = MaybeMany<Constraint>> =
|
|
772
|
+
Validator<InferConstraints<C> | null> & {
|
|
773
|
+
readonly [nullableValidatorBrand]: C
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/** Typed validator returned by `nullish(...)`. */
|
|
777
|
+
export type NullishValidator<C extends MaybeMany<Constraint> = MaybeMany<Constraint>> =
|
|
778
|
+
Validator<InferConstraints<C> | null | undefined> & {
|
|
779
|
+
readonly [nullishValidatorBrand]: C
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
/** Typed validator returned by `each(...)`. */
|
|
783
|
+
export type EachValidator<C extends MaybeMany<Constraint> = MaybeMany<Constraint>> =
|
|
784
|
+
Validator<InferConstraints<C>[]> & {
|
|
785
|
+
readonly [eachValidatorBrand]: C
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
/** Typed validator returned by `tuple(...)`. */
|
|
789
|
+
export type TupleValidator<T extends readonly MaybeMany<Constraint>[] = readonly MaybeMany<Constraint>[]> =
|
|
790
|
+
Validator<{
|
|
791
|
+
-readonly [K in keyof T]: InferConstraints<T[K]>
|
|
792
|
+
}> & {
|
|
793
|
+
readonly [tupleValidatorBrand]: T
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
/** Typed validator returned by `union(...)`. */
|
|
797
|
+
export type UnionValidator<T extends readonly MaybeMany<Constraint>[] = readonly MaybeMany<Constraint>[]> =
|
|
798
|
+
Validator<{
|
|
799
|
+
[K in keyof T]: InferConstraints<T[K]>
|
|
800
|
+
}[number]> & {
|
|
801
|
+
readonly [unionValidatorBrand]: T
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/** Typed validator returned by `discriminatedUnion(...)`. */
|
|
805
|
+
export type DiscriminatedUnionValidator<
|
|
806
|
+
K extends PropertyKey = PropertyKey,
|
|
807
|
+
T extends Record<PropertyKey, MaybeMany<Constraint>> = Record<PropertyKey, MaybeMany<Constraint>>,
|
|
808
|
+
> = Validator<{
|
|
809
|
+
[P in keyof T]: InferConstraints<T[P]>
|
|
810
|
+
}[keyof T]> & {
|
|
811
|
+
readonly [discriminatedUnionValidatorBrand]: {
|
|
812
|
+
readonly key: K;
|
|
813
|
+
readonly variants: T;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/** Typed validator returned by `record(...)`. */
|
|
818
|
+
export type RecordValidator<C extends MaybeMany<Constraint> = MaybeMany<Constraint>> =
|
|
819
|
+
Validator<Record<string, InferConstraints<C>>> & {
|
|
820
|
+
readonly [recordValidatorBrand]: C
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
/** Returns a stable machine-readable description of a constraint tree. */
|
|
824
|
+
export declare const describe: <const C extends Constraint>(constraint: C) => DescribeConstraint<C>
|