@modulify/validator 0.2.0 → 0.3.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.
Files changed (486) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +12 -2
  3. package/dist/assert-BDOtHdLx.cjs +289 -0
  4. package/dist/assert-CzMg5aO7.mjs +206 -0
  5. package/dist/assert.cjs +7 -65
  6. package/dist/assert.d.cts +37 -0
  7. package/dist/assert.d.mts +37 -0
  8. package/dist/assert.d.ts +24 -3
  9. package/dist/assert.mjs +2 -66
  10. package/dist/assertions-DPYCHREw.mjs +297 -0
  11. package/dist/assertions-nfOKqcjs.cjs +476 -0
  12. package/dist/assertions.cjs +34 -206
  13. package/dist/assertions.d.cts +56 -0
  14. package/dist/assertions.d.mts +56 -0
  15. package/dist/assertions.d.ts +43 -45
  16. package/dist/assertions.mjs +3 -207
  17. package/dist/checkers.d.cts +8 -0
  18. package/dist/checkers.d.mts +8 -0
  19. package/dist/checkers.d.ts +1 -1
  20. package/dist/combinators.cjs +303 -304
  21. package/dist/combinators.d.cts +16 -0
  22. package/dist/combinators.d.mts +16 -0
  23. package/dist/combinators.d.ts +15 -16
  24. package/dist/combinators.mjs +304 -315
  25. package/dist/constraints.d.cts +4 -0
  26. package/dist/constraints.d.mts +4 -0
  27. package/dist/constraints.d.ts +2 -2
  28. package/dist/extractors.d.cts +2 -0
  29. package/dist/extractors.d.mts +2 -0
  30. package/dist/index.cjs +210 -213
  31. package/dist/index.d.cts +12 -0
  32. package/dist/index.d.mts +12 -0
  33. package/dist/index.d.ts +9 -9
  34. package/dist/index.mjs +165 -218
  35. package/dist/json-schema.cjs +364 -489
  36. package/dist/json-schema.d.cts +14 -0
  37. package/dist/json-schema.d.mts +14 -0
  38. package/dist/json-schema.d.ts +3 -3
  39. package/dist/json-schema.mjs +365 -492
  40. package/dist/metadata.cjs +6 -7
  41. package/dist/metadata.d.cts +8 -0
  42. package/dist/metadata.d.mts +8 -0
  43. package/dist/metadata.d.ts +2 -2
  44. package/dist/metadata.mjs +2 -8
  45. package/dist/predicates.cjs +98 -41
  46. package/dist/predicates.d.cts +77 -0
  47. package/dist/predicates.d.mts +77 -0
  48. package/dist/predicates.d.ts +25 -4
  49. package/dist/predicates.mjs +92 -66
  50. package/dist/types/index.d.cts +984 -0
  51. package/dist/types/index.d.mts +984 -0
  52. package/dist/types/index.d.ts +984 -0
  53. package/dist/types/json-schema.d.cts +75 -0
  54. package/dist/types/json-schema.d.mts +75 -0
  55. package/dist/types/json-schema.d.ts +75 -0
  56. package/dist/violations.d.cts +29 -0
  57. package/dist/violations.d.mts +29 -0
  58. package/dist/violations.d.ts +1 -1
  59. package/docs/RELEASING.md +66 -0
  60. package/docs/en/00-index.md +2 -0
  61. package/docs/en/01-shape-api.md +35 -10
  62. package/docs/en/02-metadata-and-introspection.md +2 -1
  63. package/docs/en/03-violations.md +1 -1
  64. package/docs/en/04-json-schema-export.md +5 -0
  65. package/docs/en/05-public-api.md +35 -3
  66. package/docs/en/06-common-recipes.md +2 -1
  67. package/docs/en/07-ai-reference.md +5 -2
  68. package/docs/en/08-violation-code-types.md +28 -2
  69. package/docs/en/09-migration.md +75 -0
  70. package/docs/ru/00-index.md +2 -0
  71. package/docs/ru/01-shape-api.md +35 -10
  72. package/docs/ru/02-metadata-and-introspection.md +2 -1
  73. package/docs/ru/03-violations.md +1 -1
  74. package/docs/ru/04-json-schema-export.md +5 -0
  75. package/docs/ru/05-public-api.md +35 -3
  76. package/docs/ru/06-common-recipes.md +2 -1
  77. package/docs/ru/07-ai-reference.md +5 -2
  78. package/docs/ru/08-violation-code-types.md +28 -2
  79. package/docs/ru/09-migration.md +76 -0
  80. package/docs/ru/README.md +10 -2
  81. package/package.json +71 -37
  82. package/types/index.d.ts +275 -115
  83. package/.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-53c2b231a6.zip +0 -0
  84. package/.yarn/cache/@babel-code-frame-npm-7.23.5-cb10d08de6-a10e843595.zip +0 -0
  85. package/.yarn/cache/@babel-helper-string-parser-npm-7.25.7-352069de58-73ef2ceb81.zip +0 -0
  86. package/.yarn/cache/@babel-helper-string-parser-npm-7.27.1-d1471e0598-8bda3448e0.zip +0 -0
  87. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-dcad63db34.zip +0 -0
  88. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.25.7-1c758f0472-07438e5bf0.zip +0 -0
  89. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.28.5-1953d49d2b-42aaebed91.zip +0 -0
  90. package/.yarn/cache/@babel-highlight-npm-7.23.4-2a9f2d2538-fbff9fcb2f.zip +0 -0
  91. package/.yarn/cache/@babel-parser-npm-7.25.8-fda12195b5-a1a13845b7.zip +0 -0
  92. package/.yarn/cache/@babel-parser-npm-7.29.0-c605c63e8b-333b2aa761.zip +0 -0
  93. package/.yarn/cache/@babel-types-npm-7.25.8-44acfff5f6-55ca2d6df6.zip +0 -0
  94. package/.yarn/cache/@babel-types-npm-7.29.0-6c2fa77581-23cc3466e8.zip +0 -0
  95. package/.yarn/cache/@bcoe-v8-coverage-npm-1.0.2-e80fdc21ac-1eb1dc93cc.zip +0 -0
  96. package/.yarn/cache/@commitlint-cli-npm-20.4.3-7b788c74b9-1f54b6870a.zip +0 -0
  97. package/.yarn/cache/@commitlint-config-conventional-npm-20.4.3-aa90460b69-c7c6fb0b32.zip +0 -0
  98. package/.yarn/cache/@commitlint-config-validator-npm-20.4.3-456f7d3da8-e65f2bd3cc.zip +0 -0
  99. package/.yarn/cache/@commitlint-ensure-npm-20.4.3-432e5ad329-aa1f42317a.zip +0 -0
  100. package/.yarn/cache/@commitlint-execute-rule-npm-20.0.0-6eb8155492-a1035ae9d6.zip +0 -0
  101. package/.yarn/cache/@commitlint-format-npm-20.4.3-ebe3e8cb04-e221f61a07.zip +0 -0
  102. package/.yarn/cache/@commitlint-is-ignored-npm-20.4.3-69e200640d-bc118de0aa.zip +0 -0
  103. package/.yarn/cache/@commitlint-lint-npm-20.4.3-c9940afaeb-e6af7cbbf9.zip +0 -0
  104. package/.yarn/cache/@commitlint-load-npm-20.4.3-81ae2db04a-80fb52e259.zip +0 -0
  105. package/.yarn/cache/@commitlint-message-npm-20.4.3-e9b5d77cad-16f7a67d17.zip +0 -0
  106. package/.yarn/cache/@commitlint-parse-npm-20.4.3-ecc5779976-404fecad36.zip +0 -0
  107. package/.yarn/cache/@commitlint-read-npm-20.4.3-32de5c8d85-3e7f88ad9b.zip +0 -0
  108. package/.yarn/cache/@commitlint-resolve-extends-npm-20.4.3-71b99c2779-09220329ba.zip +0 -0
  109. package/.yarn/cache/@commitlint-rules-npm-20.4.3-390ce9eadc-03348731a9.zip +0 -0
  110. package/.yarn/cache/@commitlint-to-lines-npm-20.0.0-888ee2239e-49bc05eb06.zip +0 -0
  111. package/.yarn/cache/@commitlint-top-level-npm-20.4.3-b0ef9fb207-52a1f59677.zip +0 -0
  112. package/.yarn/cache/@commitlint-types-npm-20.4.3-3d079b12ab-2181f9696f.zip +0 -0
  113. package/.yarn/cache/@cspotcode-source-map-support-npm-0.8.1-964f2de99d-05c5368c13.zip +0 -0
  114. package/.yarn/cache/@esbuild-linux-x64-npm-0.27.3-2041dd7b27-10c0.zip +0 -0
  115. package/.yarn/cache/@eslint-community-eslint-utils-npm-4.9.1-30ad3d49de-dc4ab5e3e3.zip +0 -0
  116. package/.yarn/cache/@eslint-community-regexpp-npm-4.12.2-3d54624470-fddcbc6685.zip +0 -0
  117. package/.yarn/cache/@eslint-config-array-npm-0.23.3-19b1c24f51-7c19027acf.zip +0 -0
  118. package/.yarn/cache/@eslint-config-helpers-npm-0.5.3-b60fa10f11-c836476e83.zip +0 -0
  119. package/.yarn/cache/@eslint-core-npm-1.1.1-bca32bf928-129c654c78.zip +0 -0
  120. package/.yarn/cache/@eslint-js-npm-10.0.1-c30b85ca06-9f3fcaf71b.zip +0 -0
  121. package/.yarn/cache/@eslint-object-schema-npm-3.0.3-4c45388d6c-4abbb7cba5.zip +0 -0
  122. package/.yarn/cache/@eslint-plugin-kit-npm-0.6.1-fafe413a70-f8354a7b92.zip +0 -0
  123. package/.yarn/cache/@gar-promise-retry-npm-1.0.2-960b209ddf-748a84fb0a.zip +0 -0
  124. package/.yarn/cache/@humanfs-core-npm-0.19.1-e2e7aaeb6e-aa4e015217.zip +0 -0
  125. package/.yarn/cache/@humanfs-node-npm-0.16.6-6ee2cad587-8356359c9f.zip +0 -0
  126. package/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-909b69c3b8.zip +0 -0
  127. package/.yarn/cache/@humanwhocodes-retry-npm-0.3.1-9d87bf92c6-f0da1282df.zip +0 -0
  128. package/.yarn/cache/@humanwhocodes-retry-npm-0.4.3-a8d7ca1663-3775bb3008.zip +0 -0
  129. package/.yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip +0 -0
  130. package/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-0dbc9e29bc.zip +0 -0
  131. package/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.2-5bc4245992-d502e6fb51.zip +0 -0
  132. package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-0c6b5ae663.zip +0 -0
  133. package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.0-dfd9126d71-2eb864f276.zip +0 -0
  134. package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.5-5189d9fc79-f9e538f302.zip +0 -0
  135. package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.31-1ae81d75ac-4b30ec8cd5.zip +0 -0
  136. package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.9-91625cd7fb-fa425b606d.zip +0 -0
  137. package/.yarn/cache/@microsoft-api-extractor-model-npm-7.33.4-65dc0810a1-c71569e59a.zip +0 -0
  138. package/.yarn/cache/@microsoft-api-extractor-npm-7.57.6-3ff3fa89f4-2f4598cc6b.zip +0 -0
  139. package/.yarn/cache/@microsoft-tsdoc-config-npm-0.18.1-9e24f960a2-06507f7ced.zip +0 -0
  140. package/.yarn/cache/@microsoft-tsdoc-npm-0.16.0-9d3f19f1b6-8883bb0ed2.zip +0 -0
  141. package/.yarn/cache/@npmcli-agent-npm-4.0.0-502e5ae4f0-f7b5ce0f3d.zip +0 -0
  142. package/.yarn/cache/@npmcli-fs-npm-5.0.0-9d737ae2f3-26e376d780.zip +0 -0
  143. package/.yarn/cache/@polka-url-npm-1.0.0-next.28-024769eda8-acc5ea6259.zip +0 -0
  144. package/.yarn/cache/@rollup-pluginutils-npm-5.1.4-83ce21024f-6d58fbc6f1.zip +0 -0
  145. package/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.59.0-da6c703f69-10c0.zip +0 -0
  146. package/.yarn/cache/@rushstack-node-core-library-npm-5.20.3-c547457ad4-bc9b33c6be.zip +0 -0
  147. package/.yarn/cache/@rushstack-problem-matcher-npm-0.2.1-87bf7eb8c4-d6cf27f6bf.zip +0 -0
  148. package/.yarn/cache/@rushstack-rig-package-npm-0.7.2-5f0f64865a-2e2839fa9a.zip +0 -0
  149. package/.yarn/cache/@rushstack-terminal-npm-0.22.3-2934ccd0ff-0e81fe7543.zip +0 -0
  150. package/.yarn/cache/@rushstack-ts-command-line-npm-5.3.3-d220c0fef2-03d9e9989b.zip +0 -0
  151. package/.yarn/cache/@simple-libs-stream-utils-npm-1.2.0-db53dc026f-2788ac7b16.zip +0 -0
  152. package/.yarn/cache/@standard-schema-spec-npm-1.1.0-d3e5ccd2e2-d90f55acde.zip +0 -0
  153. package/.yarn/cache/@tsconfig-node10-npm-1.0.9-f2e2d20feb-c176a2c1e1.zip +0 -0
  154. package/.yarn/cache/@tsconfig-node12-npm-1.0.11-9710d1c61b-dddca2b553.zip +0 -0
  155. package/.yarn/cache/@tsconfig-node14-npm-1.0.3-15321421d2-67c1316d06.zip +0 -0
  156. package/.yarn/cache/@tsconfig-node16-npm-1.0.4-b7cb87d859-05f8f2734e.zip +0 -0
  157. package/.yarn/cache/@types-argparse-npm-1.0.38-657c15204c-4fc892da5d.zip +0 -0
  158. package/.yarn/cache/@types-chai-npm-5.2.3-5f61dbddda-e0ef1de3b6.zip +0 -0
  159. package/.yarn/cache/@types-deep-eql-npm-4.0.2-e6bc68cc92-bf3f811843.zip +0 -0
  160. package/.yarn/cache/@types-esrecurse-npm-4.3.1-237d34a55f-90dad74d5d.zip +0 -0
  161. package/.yarn/cache/@types-estree-npm-1.0.5-5b7faed3b4-b3b0e33428.zip +0 -0
  162. package/.yarn/cache/@types-estree-npm-1.0.6-b5e23f2ea2-cdfd751f6f.zip +0 -0
  163. package/.yarn/cache/@types-estree-npm-1.0.8-2195bac6d6-39d34d1afa.zip +0 -0
  164. package/.yarn/cache/@types-json-schema-npm-7.0.15-fd16381786-a996a745e6.zip +0 -0
  165. package/.yarn/cache/@types-node-npm-25.3.5-81ad2eb587-4cf0834a6f.zip +0 -0
  166. package/.yarn/cache/@typescript-eslint-eslint-plugin-npm-8.56.1-3df20cf10b-8a97e77779.zip +0 -0
  167. package/.yarn/cache/@typescript-eslint-parser-npm-8.56.1-3f9b1c2f30-61c9dab481.zip +0 -0
  168. package/.yarn/cache/@typescript-eslint-project-service-npm-8.56.1-766cc01259-ca61cde575.zip +0 -0
  169. package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.56.1-2d38e88a4b-89cc1af263.zip +0 -0
  170. package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.56.1-e35d1dd914-d03b64d7ff.zip +0 -0
  171. package/.yarn/cache/@typescript-eslint-type-utils-npm-8.56.1-e472908945-66517aed50.zip +0 -0
  172. package/.yarn/cache/@typescript-eslint-types-npm-8.56.1-09e50c3c54-e5a0318abd.zip +0 -0
  173. package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.56.1-bdca7e3c09-92f4421dac.zip +0 -0
  174. package/.yarn/cache/@typescript-eslint-utils-npm-8.56.1-aa0778f53a-d9ffd9b294.zip +0 -0
  175. package/.yarn/cache/@typescript-eslint-visitor-keys-npm-8.56.1-901d7b2e4d-86d97905de.zip +0 -0
  176. package/.yarn/cache/@vitest-coverage-v8-npm-4.0.18-62bb7f840e-e23e0da86f.zip +0 -0
  177. package/.yarn/cache/@vitest-expect-npm-4.0.18-03919ccd0b-123b0aa111.zip +0 -0
  178. package/.yarn/cache/@vitest-mocker-npm-4.0.18-118c87f90e-fb0a257e7e.zip +0 -0
  179. package/.yarn/cache/@vitest-pretty-format-npm-4.0.18-a73855e4a4-0086b8c88e.zip +0 -0
  180. package/.yarn/cache/@vitest-runner-npm-4.0.18-3dbdf3fb30-fdb4afa411.zip +0 -0
  181. package/.yarn/cache/@vitest-snapshot-npm-4.0.18-35134202ed-d3bfefa558.zip +0 -0
  182. package/.yarn/cache/@vitest-spy-npm-4.0.18-296c59dce4-6de537890b.zip +0 -0
  183. package/.yarn/cache/@vitest-ui-npm-4.0.18-2112b3c7d4-25ed45b529.zip +0 -0
  184. package/.yarn/cache/@vitest-utils-npm-4.0.18-b1c99a49e0-4a3c43c142.zip +0 -0
  185. package/.yarn/cache/@volar-language-core-npm-2.4.11-9f1617b8e0-ccc5de0c28.zip +0 -0
  186. package/.yarn/cache/@volar-language-core-npm-2.4.28-23fc3d6b92-d41f7327fe.zip +0 -0
  187. package/.yarn/cache/@volar-source-map-npm-2.4.11-1022b0cd34-8e5badf9f6.zip +0 -0
  188. package/.yarn/cache/@volar-source-map-npm-2.4.28-7517299eaf-24b0b02c7f.zip +0 -0
  189. package/.yarn/cache/@volar-typescript-npm-2.4.11-9486696485-bca9bda9c8.zip +0 -0
  190. package/.yarn/cache/@vue-compiler-core-npm-3.5.13-b0c91e9970-b89f3e3ca9.zip +0 -0
  191. package/.yarn/cache/@vue-compiler-dom-npm-3.5.13-8785a9ba19-8f424a7188.zip +0 -0
  192. package/.yarn/cache/@vue-compiler-vue2-npm-2.7.16-ac462b66cc-c76c3fad77.zip +0 -0
  193. package/.yarn/cache/@vue-language-core-npm-2.2.0-451bd2aafd-1c44cc4067.zip +0 -0
  194. package/.yarn/cache/@vue-shared-npm-3.5.13-519178ab33-2c940ef907.zip +0 -0
  195. package/.yarn/cache/abbrev-npm-4.0.0-7d848a1ef0-b4cc169352.zip +0 -0
  196. package/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-4c54868fbe.zip +0 -0
  197. package/.yarn/cache/acorn-npm-8.11.3-0d7ab48b38-3ff155f881.zip +0 -0
  198. package/.yarn/cache/acorn-npm-8.16.0-b2096bf83f-c9c5269722.zip +0 -0
  199. package/.yarn/cache/acorn-walk-npm-8.3.2-df039a42bf-7e2a8dad54.zip +0 -0
  200. package/.yarn/cache/agent-base-npm-7.1.4-cb8b4604d5-c2c9ab7599.zip +0 -0
  201. package/.yarn/cache/ajv-draft-04-npm-1.0.0-6fc962dbab-6044310bd3.zip +0 -0
  202. package/.yarn/cache/ajv-formats-npm-3.0.1-2662cf5b12-168d6bca1e.zip +0 -0
  203. package/.yarn/cache/ajv-npm-6.14.0-41f32f2ba8-a2bc39b055.zip +0 -0
  204. package/.yarn/cache/ajv-npm-8.12.0-3bf6e30741-ac4f72adf7.zip +0 -0
  205. package/.yarn/cache/ajv-npm-8.17.1-12ade7edc6-ec3ba10a57.zip +0 -0
  206. package/.yarn/cache/ajv-npm-8.18.0-6e5e062765-e7517c4261.zip +0 -0
  207. package/.yarn/cache/alien-signals-npm-0.4.14-73b9599f8d-5abb3377bc.zip +0 -0
  208. package/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-9a64bb8627.zip +0 -0
  209. package/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-ece5a8ef06.zip +0 -0
  210. package/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-895a23929d.zip +0 -0
  211. package/.yarn/cache/arg-npm-4.1.3-1748b966a8-070ff801a9.zip +0 -0
  212. package/.yarn/cache/argparse-npm-1.0.10-528934e59d-b2972c5c23.zip +0 -0
  213. package/.yarn/cache/argparse-npm-2.0.1-faff7999e6-c5640c2d89.zip +0 -0
  214. package/.yarn/cache/array-ify-npm-1.0.0-e09a371977-75c9c072fa.zip +0 -0
  215. package/.yarn/cache/assertion-error-npm-2.0.1-8169d136f2-bbbcb117ac.zip +0 -0
  216. package/.yarn/cache/ast-v8-to-istanbul-npm-0.3.12-a066421931-bad6ba222b.zip +0 -0
  217. package/.yarn/cache/balanced-match-npm-4.0.4-fd666b3c7f-07e86102a3.zip +0 -0
  218. package/.yarn/cache/brace-expansion-npm-5.0.4-acb9332524-359cbcfa80.zip +0 -0
  219. package/.yarn/cache/cacache-npm-20.0.3-5f244d5bdd-c7da1ca694.zip +0 -0
  220. package/.yarn/cache/callsites-npm-3.1.0-268f989910-fff9227740.zip +0 -0
  221. package/.yarn/cache/chai-npm-6.2.2-e1795cadaa-e6c69e5f0c.zip +0 -0
  222. package/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-e6543f02ec.zip +0 -0
  223. package/.yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip +0 -0
  224. package/.yarn/cache/cliui-npm-8.0.1-3b029092cf-4bda0f09c3.zip +0 -0
  225. package/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-5ad3c53494.zip +0 -0
  226. package/.yarn/cache/color-convert-npm-2.0.1-79730e935b-37e1150172.zip +0 -0
  227. package/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-566a3d42cc.zip +0 -0
  228. package/.yarn/cache/color-name-npm-1.1.4-025792b0ea-a1a3f91415.zip +0 -0
  229. package/.yarn/cache/compare-func-npm-2.0.0-9cd7852f23-78bd4dd4ed.zip +0 -0
  230. package/.yarn/cache/compare-versions-npm-6.1.1-4b4ac16a32-415205c762.zip +0 -0
  231. package/.yarn/cache/confbox-npm-0.1.8-8396039b68-fc2c68d97c.zip +0 -0
  232. package/.yarn/cache/confbox-npm-0.2.4-31ba8953f9-4c36af33d9.zip +0 -0
  233. package/.yarn/cache/conventional-changelog-angular-npm-8.3.0-0cd5330d9e-bab87fa741.zip +0 -0
  234. package/.yarn/cache/conventional-changelog-conventionalcommits-npm-9.3.0-6c1ee7bc50-36be9435bb.zip +0 -0
  235. package/.yarn/cache/conventional-commits-parser-npm-6.3.0-ac5eec936e-7b152db0b6.zip +0 -0
  236. package/.yarn/cache/cosmiconfig-npm-9.0.1-66b0cd2503-a5d4d95599.zip +0 -0
  237. package/.yarn/cache/cosmiconfig-typescript-loader-npm-6.2.0-a314118ca7-0fd8fd9b9b.zip +0 -0
  238. package/.yarn/cache/create-require-npm-1.1.1-839884ca2e-157cbc59b2.zip +0 -0
  239. package/.yarn/cache/cross-spawn-npm-7.0.6-264bddf921-053ea8b213.zip +0 -0
  240. package/.yarn/cache/dargs-npm-8.1.0-39fde97ef5-08cbd1ee4a.zip +0 -0
  241. package/.yarn/cache/de-indent-npm-1.0.2-66cccde30f-7058ce58ab.zip +0 -0
  242. package/.yarn/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip +0 -0
  243. package/.yarn/cache/debug-npm-4.4.0-f6efe76023-db94f1a182.zip +0 -0
  244. package/.yarn/cache/debug-npm-4.4.3-0105c6123a-d79136ec6c.zip +0 -0
  245. package/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-7f0ee496e0.zip +0 -0
  246. package/.yarn/cache/diff-npm-4.0.2-73133c7102-81b91f9d39.zip +0 -0
  247. package/.yarn/cache/diff-npm-8.0.3-6f5c127138-d29321c70d.zip +0 -0
  248. package/.yarn/cache/dot-prop-npm-5.3.0-7bf6ee1eb8-93f0d343ef.zip +0 -0
  249. package/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-b6053ad399.zip +0 -0
  250. package/.yarn/cache/entities-npm-4.5.0-7cdb83b832-5b039739f7.zip +0 -0
  251. package/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-285325677b.zip +0 -0
  252. package/.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-ba827f8936.zip +0 -0
  253. package/.yarn/cache/es-module-lexer-npm-1.7.0-456b47a08a-4c935affcb.zip +0 -0
  254. package/.yarn/cache/esbuild-npm-0.27.3-85b6c20323-fdc3f87a3f.zip +0 -0
  255. package/.yarn/cache/escalade-npm-3.1.1-e02da076aa-afd02e6ca9.zip +0 -0
  256. package/.yarn/cache/escalade-npm-3.2.0-19b50dd48f-ced4dd3a78.zip +0 -0
  257. package/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-a968ad453d.zip +0 -0
  258. package/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-9497d4dd30.zip +0 -0
  259. package/.yarn/cache/eslint-npm-10.0.3-c98e23b2a9-fbbb4d99cb.zip +0 -0
  260. package/.yarn/cache/eslint-scope-npm-9.1.2-50e6e92f41-9fb8bca5a7.zip +0 -0
  261. package/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-92708e882c.zip +0 -0
  262. package/.yarn/cache/eslint-visitor-keys-npm-5.0.1-30a44b062b-16190bdf2c.zip +0 -0
  263. package/.yarn/cache/espree-npm-11.2.0-095134f369-cf87e18ffd.zip +0 -0
  264. package/.yarn/cache/esquery-npm-1.7.0-c1e8da438a-77d5173db4.zip +0 -0
  265. package/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-81a37116d1.zip +0 -0
  266. package/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-1ff9447b96.zip +0 -0
  267. package/.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-53a6c54e20.zip +0 -0
  268. package/.yarn/cache/estree-walker-npm-3.0.3-0372979673-c12e3c2b26.zip +0 -0
  269. package/.yarn/cache/esutils-npm-2.0.3-f865beafd5-9a2fe69a41.zip +0 -0
  270. package/.yarn/cache/expect-type-npm-1.3.0-95a4384745-8412b3fe4f.zip +0 -0
  271. package/.yarn/cache/exponential-backoff-npm-3.1.3-28be78d98e-77e3ae682b.zip +0 -0
  272. package/.yarn/cache/exsolve-npm-1.0.8-20570c05a2-65e44ae05b.zip +0 -0
  273. package/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-40dedc862e.zip +0 -0
  274. package/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-7f081eb0b8.zip +0 -0
  275. package/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-111972b373.zip +0 -0
  276. package/.yarn/cache/fast-uri-npm-3.0.3-0874072625-4b2c5ce681.zip +0 -0
  277. package/.yarn/cache/fdir-npm-6.5.0-8814a0dec7-e345083c43.zip +0 -0
  278. package/.yarn/cache/fflate-npm-0.8.2-5129f303f0-03448d630c.zip +0 -0
  279. package/.yarn/cache/file-entry-cache-npm-8.0.0-5b09d19a83-9e2b5938b1.zip +0 -0
  280. package/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-062c5a83a9.zip +0 -0
  281. package/.yarn/cache/flat-cache-npm-4.0.1-12bf2455f7-2c59d93e9f.zip +0 -0
  282. package/.yarn/cache/flatted-npm-3.2.9-0462256d3c-5c91c5a0a2.zip +0 -0
  283. package/.yarn/cache/flatted-npm-3.3.4-614e5aba3e-d1f33426e9.zip +0 -0
  284. package/.yarn/cache/fs-extra-npm-11.3.4-29a9d2b3b0-e08276f767.zip +0 -0
  285. package/.yarn/cache/fs-minipass-npm-3.0.3-d148d6ac19-63e80da2ff.zip +0 -0
  286. package/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-a1f0c44595.zip +0 -0
  287. package/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-d8680ee1e5.zip +0 -0
  288. package/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-c6c7b60271.zip +0 -0
  289. package/.yarn/cache/git-raw-commits-npm-4.0.0-60e7e666d1-ab51335d9e.zip +0 -0
  290. package/.yarn/cache/glob-npm-13.0.6-864eb0cece-269c236f11.zip +0 -0
  291. package/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-317034d886.zip +0 -0
  292. package/.yarn/cache/global-directory-npm-4.0.1-1de95382fd-f9cbeef41d.zip +0 -0
  293. package/.yarn/cache/globals-npm-17.4.0-d04eded15b-2be9e8c2b9.zip +0 -0
  294. package/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip +0 -0
  295. package/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-1c6c83b14b.zip +0 -0
  296. package/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-2e789c61b7.zip +0 -0
  297. package/.yarn/cache/hasown-npm-2.0.0-78b794ceef-5d415b114f.zip +0 -0
  298. package/.yarn/cache/he-npm-1.2.0-3b73a2ff07-a27d478bef.zip +0 -0
  299. package/.yarn/cache/html-escaper-npm-2.0.2-38e51ef294-208e8a12de.zip +0 -0
  300. package/.yarn/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-45b66a945c.zip +0 -0
  301. package/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-4207b06a45.zip +0 -0
  302. package/.yarn/cache/https-proxy-agent-npm-7.0.6-27a95c2690-f729219bc7.zip +0 -0
  303. package/.yarn/cache/husky-npm-9.1.7-5b02eaabc4-35bb110a71.zip +0 -0
  304. package/.yarn/cache/iconv-lite-npm-0.7.2-716fc012a0-3c228920f3.zip +0 -0
  305. package/.yarn/cache/ignore-npm-5.3.0-fb0f5fa062-dc06bea5c2.zip +0 -0
  306. package/.yarn/cache/ignore-npm-7.0.5-dea34ee430-ae00db89fe.zip +0 -0
  307. package/.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-7f882953aa.zip +0 -0
  308. package/.yarn/cache/import-lazy-npm-4.0.0-3215653869-a3520313e2.zip +0 -0
  309. package/.yarn/cache/import-meta-resolve-npm-4.2.0-d0ecf96035-3ee8aeecb6.zip +0 -0
  310. package/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-8b51313850.zip +0 -0
  311. package/.yarn/cache/ini-npm-4.1.1-01c2cbda7b-7fddc8dfd3.zip +0 -0
  312. package/.yarn/cache/ip-address-npm-10.1.0-d5d5693401-0103516cfa.zip +0 -0
  313. package/.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-e7fb686a73.zip +0 -0
  314. package/.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-2cba9903aa.zip +0 -0
  315. package/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-5487da3569.zip +0 -0
  316. package/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-bb11d825e0.zip +0 -0
  317. package/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-17fb4014e2.zip +0 -0
  318. package/.yarn/cache/is-obj-npm-2.0.0-3d95e053f4-85044ed7ba.zip +0 -0
  319. package/.yarn/cache/is-plain-obj-npm-4.1.0-a4f2a92b44-32130d651d.zip +0 -0
  320. package/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-228cfa503f.zip +0 -0
  321. package/.yarn/cache/isexe-npm-4.0.0-588229ad74-5884815115.zip +0 -0
  322. package/.yarn/cache/istanbul-lib-coverage-npm-3.2.2-5c0526e059-6c7ff21067.zip +0 -0
  323. package/.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-84323afb14.zip +0 -0
  324. package/.yarn/cache/istanbul-reports-npm-3.2.0-b755b56d78-d596317cfd.zip +0 -0
  325. package/.yarn/cache/jiti-npm-2.6.1-597ab7fb84-79b2e96a8e.zip +0 -0
  326. package/.yarn/cache/jju-npm-1.4.0-670678eaa3-f3f444557e.zip +0 -0
  327. package/.yarn/cache/js-tokens-npm-10.0.0-2f75d73bcb-a934987478.zip +0 -0
  328. package/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-e248708d37.zip +0 -0
  329. package/.yarn/cache/js-yaml-npm-4.1.0-3606f32312-184a24b4ea.zip +0 -0
  330. package/.yarn/cache/json-buffer-npm-3.0.1-f8f6d20603-0d1c91569d.zip +0 -0
  331. package/.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-140932564c.zip +0 -0
  332. package/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-108fa90d4c.zip +0 -0
  333. package/.yarn/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-71e30015d7.zip +0 -0
  334. package/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cb168b61fd.zip +0 -0
  335. package/.yarn/cache/jsonfile-npm-6.1.0-20a4796cee-4f95b5e8a5.zip +0 -0
  336. package/.yarn/cache/keyv-npm-4.5.4-4c8e2cf7f7-aa52f3c5e1.zip +0 -0
  337. package/.yarn/cache/kolorist-npm-1.8.0-2cc04dcc05-73075db44a.zip +0 -0
  338. package/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-effb03cad7.zip +0 -0
  339. package/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-3da6ee62d4.zip +0 -0
  340. package/.yarn/cache/local-pkg-npm-1.1.2-04ade6b6c7-1bcfcc5528.zip +0 -0
  341. package/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-d3972ab70d.zip +0 -0
  342. package/.yarn/cache/lodash-npm-4.17.23-50bdb1c01a-1264a90469.zip +0 -0
  343. package/.yarn/cache/lodash.camelcase-npm-4.3.0-bf268e3bf0-fcba15d21a.zip +0 -0
  344. package/.yarn/cache/lodash.kebabcase-npm-4.1.1-89ffca7e1f-da5d8f41db.zip +0 -0
  345. package/.yarn/cache/lodash.mergewith-npm-4.6.2-7d2d4201ec-4adbed65ff.zip +0 -0
  346. package/.yarn/cache/lodash.snakecase-npm-4.1.1-b12cdbecb4-f0b3f2497e.zip +0 -0
  347. package/.yarn/cache/lodash.startcase-npm-4.4.0-637aa8cc15-bd82aa87a4.zip +0 -0
  348. package/.yarn/cache/lodash.upperfirst-npm-4.3.1-e3b7c364ba-435625da4b.zip +0 -0
  349. package/.yarn/cache/lru-cache-npm-11.2.6-acb7d4323e-73bbffb298.zip +0 -0
  350. package/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-cb53e58278.zip +0 -0
  351. package/.yarn/cache/magic-string-npm-0.30.17-da1b7593b1-16826e415d.zip +0 -0
  352. package/.yarn/cache/magic-string-npm-0.30.21-9a226cb21e-299378e38f.zip +0 -0
  353. package/.yarn/cache/magicast-npm-0.5.2-24c891cd9d-924af67764.zip +0 -0
  354. package/.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-69b98a6c0b.zip +0 -0
  355. package/.yarn/cache/make-error-npm-1.3.6-ccb85d9458-171e458d86.zip +0 -0
  356. package/.yarn/cache/make-fetch-happen-npm-15.0.4-cd90f16f9b-b874bf6879.zip +0 -0
  357. package/.yarn/cache/meow-npm-12.1.1-bd7858d088-a125ca99a3.zip +0 -0
  358. package/.yarn/cache/meow-npm-13.2.0-9907f89171-d5b339ae31.zip +0 -0
  359. package/.yarn/cache/minimatch-npm-10.2.4-11f0605299-35f3dfb7b9.zip +0 -0
  360. package/.yarn/cache/minimatch-npm-9.0.7-145dd43fbb-e90f8d8dd1.zip +0 -0
  361. package/.yarn/cache/minimist-npm-1.2.8-d7af7b1dce-19d3fcdca0.zip +0 -0
  362. package/.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-5167e73f62.zip +0 -0
  363. package/.yarn/cache/minipass-fetch-npm-5.0.2-cd03eefed8-ce4ab9f21c.zip +0 -0
  364. package/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-2a51b63feb.zip +0 -0
  365. package/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip +0 -0
  366. package/.yarn/cache/minipass-npm-7.1.3-b73a16498d-539da88dac.zip +0 -0
  367. package/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-cbda57cea2.zip +0 -0
  368. package/.yarn/cache/minipass-sized-npm-2.0.0-a911fc7d3f-f9201696a6.zip +0 -0
  369. package/.yarn/cache/minizlib-npm-3.1.0-6680befdba-5aad75ab00.zip +0 -0
  370. package/.yarn/cache/mlly-npm-1.8.1-0181666245-664fa66726.zip +0 -0
  371. package/.yarn/cache/mrmime-npm-2.0.0-0326eb1458-312b35ed28.zip +0 -0
  372. package/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-a437714e2f.zip +0 -0
  373. package/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-d924b57e73.zip +0 -0
  374. package/.yarn/cache/muggle-string-npm-0.4.1-fe3c825cc2-e914b63e24.zip +0 -0
  375. package/.yarn/cache/nanoid-npm-3.3.11-f98c1f9ef6-40e7f70b3d.zip +0 -0
  376. package/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-f5f9a7974b.zip +0 -0
  377. package/.yarn/cache/negotiator-npm-1.0.0-47d727e27e-4c559dd526.zip +0 -0
  378. package/.yarn/cache/node-gyp-npm-12.2.0-11f8fe84f1-3ed046746a.zip +0 -0
  379. package/.yarn/cache/nopt-npm-9.0.0-81316ec15c-1822eb6f9b.zip +0 -0
  380. package/.yarn/cache/obug-npm-2.1.1-029730d296-59dccd7de7.zip +0 -0
  381. package/.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-66fba794d4.zip +0 -0
  382. package/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-9db675949d.zip +0 -0
  383. package/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-2290d627ab.zip +0 -0
  384. package/.yarn/cache/p-map-npm-7.0.4-39386109d0-a5030935d3.zip +0 -0
  385. package/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-c63d6e8000.zip +0 -0
  386. package/.yarn/cache/parse-json-npm-5.2.0-00a63b1199-77947f2253.zip +0 -0
  387. package/.yarn/cache/path-browserify-npm-1.0.1-f975d99a99-8b8c3fd5c6.zip +0 -0
  388. package/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-8c0bd3f523.zip +0 -0
  389. package/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-748c43efd5.zip +0 -0
  390. package/.yarn/cache/path-parse-npm-1.0.7-09564527b7-11ce261f9d.zip +0 -0
  391. package/.yarn/cache/path-scurry-npm-2.0.2-f10aa6a77e-b35ad37cf6.zip +0 -0
  392. package/.yarn/cache/pathe-npm-2.0.3-0924246ee0-c118dc5a8b.zip +0 -0
  393. package/.yarn/cache/picocolors-npm-1.1.1-4fede47cf1-e2e3e8170a.zip +0 -0
  394. package/.yarn/cache/picomatch-npm-4.0.2-e93516ddf2-7c51f3ad2b.zip +0 -0
  395. package/.yarn/cache/picomatch-npm-4.0.3-0a647b87cc-9582c951e9.zip +0 -0
  396. package/.yarn/cache/pkg-types-npm-1.3.1-832c9cd162-19e6cb8b66.zip +0 -0
  397. package/.yarn/cache/pkg-types-npm-2.3.0-e7381b4aaa-d2bbddc5b8.zip +0 -0
  398. package/.yarn/cache/postcss-npm-8.5.8-b010bee8df-dd918f7127.zip +0 -0
  399. package/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-b00d617431.zip +0 -0
  400. package/.yarn/cache/proc-log-npm-6.1.0-84e609b3f4-4f178d4062.zip +0 -0
  401. package/.yarn/cache/punycode-npm-2.3.1-97543c420d-14f76a8206.zip +0 -0
  402. package/.yarn/cache/quansync-npm-0.2.11-f7bf964a44-cb9a1f8ebc.zip +0 -0
  403. package/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-83aa76a7bc.zip +0 -0
  404. package/.yarn/cache/require-from-string-npm-2.0.2-8557e0db12-aaa267e0c5.zip +0 -0
  405. package/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-8408eec31a.zip +0 -0
  406. package/.yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-b21cb7f1fb.zip +0 -0
  407. package/.yarn/cache/resolve-npm-1.22.8-098f379dfe-07e179f437.zip +0 -0
  408. package/.yarn/cache/resolve-patch-4254c24959-0446f02443.zip +0 -0
  409. package/.yarn/cache/retry-npm-0.13.1-89eb100ab6-9ae822ee19.zip +0 -0
  410. package/.yarn/cache/rollup-npm-4.59.0-3b10f603ec-f38742da34.zip +0 -0
  411. package/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-7e3c8b2e88.zip +0 -0
  412. package/.yarn/cache/semver-npm-7.5.4-c4ad957fcd-5160b06975.zip +0 -0
  413. package/.yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip +0 -0
  414. package/.yarn/cache/semver-npm-7.7.4-746e538da5-5215ad0234.zip +0 -0
  415. package/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-a41692e7d8.zip +0 -0
  416. package/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1dbed0726d.zip +0 -0
  417. package/.yarn/cache/siginfo-npm-2.0.0-9bbac931f8-3def8f8e51.zip +0 -0
  418. package/.yarn/cache/sirv-npm-3.0.2-6cf658c733-5930e4397a.zip +0 -0
  419. package/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-a16775323e.zip +0 -0
  420. package/.yarn/cache/socks-npm-2.8.7-d1d20aae19-2805a43a1c.zip +0 -0
  421. package/.yarn/cache/socks-proxy-agent-npm-8.0.5-24d77a90dc-5d2c6cecba.zip +0 -0
  422. package/.yarn/cache/source-map-js-npm-1.2.1-b9a47d7e1a-7bda1fc4c1.zip +0 -0
  423. package/.yarn/cache/source-map-npm-0.6.1-1a3621db16-ab55398007.zip +0 -0
  424. package/.yarn/cache/split2-npm-4.2.0-16aa3883ba-b292beb8ce.zip +0 -0
  425. package/.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-ecadcfe4c7.zip +0 -0
  426. package/.yarn/cache/ssri-npm-13.0.1-c266f2233c-cf6408a186.zip +0 -0
  427. package/.yarn/cache/stackback-npm-0.0.2-73273dc92e-89a1416668.zip +0 -0
  428. package/.yarn/cache/std-env-npm-3.10.0-30d3e2646f-1814927a45.zip +0 -0
  429. package/.yarn/cache/string-argv-npm-0.3.2-6e057a88f1-75c02a8375.zip +0 -0
  430. package/.yarn/cache/string-width-npm-4.2.3-2c27177bae-1e525e92e5.zip +0 -0
  431. package/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-1ae5f212a1.zip +0 -0
  432. package/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-9681a6257b.zip +0 -0
  433. package/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-6ae5ff319b.zip +0 -0
  434. package/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-afb4c88521.zip +0 -0
  435. package/.yarn/cache/supports-color-npm-8.1.1-289e937149-ea1d3c275d.zip +0 -0
  436. package/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-6c40323407.zip +0 -0
  437. package/.yarn/cache/tar-npm-7.5.10-83147ff192-ed905e4b33.zip +0 -0
  438. package/.yarn/cache/tinybench-npm-2.9.0-2861a048db-c3500b0f60.zip +0 -0
  439. package/.yarn/cache/tinyexec-npm-1.0.2-321b713e56-1261a8e34c.zip +0 -0
  440. package/.yarn/cache/tinyglobby-npm-0.2.15-0e783aadbd-869c31490d.zip +0 -0
  441. package/.yarn/cache/tinyrainbow-npm-3.0.3-06ed35d14d-1e799d35cd.zip +0 -0
  442. package/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-b214d21dbf.zip +0 -0
  443. package/.yarn/cache/totalist-npm-3.0.1-91e71f3baa-4bb1fadb69.zip +0 -0
  444. package/.yarn/cache/ts-api-utils-npm-2.4.0-1179124e9a-ed185861ae.zip +0 -0
  445. package/.yarn/cache/ts-node-npm-10.9.2-3f3890b9ac-5f29938489.zip +0 -0
  446. package/.yarn/cache/tslib-npm-2.8.1-66590b21b8-9c4759110a.zip +0 -0
  447. package/.yarn/cache/type-check-npm-0.4.0-60565800ce-7b3fd0ed43.zip +0 -0
  448. package/.yarn/cache/typescript-eslint-npm-8.56.1-533c704529-c33aeb9a8b.zip +0 -0
  449. package/.yarn/cache/typescript-npm-5.7.2-b1f84a8b28-a873118b52.zip +0 -0
  450. package/.yarn/cache/typescript-npm-5.8.2-b95d637f6a-5c4f6fbf1c.zip +0 -0
  451. package/.yarn/cache/typescript-patch-26c53754b1-5448a08e59.zip +0 -0
  452. package/.yarn/cache/typescript-patch-aed9e5263d-f3b8082c9d.zip +0 -0
  453. package/.yarn/cache/ufo-npm-1.6.3-29bac69d97-bf0e4ebff9.zip +0 -0
  454. package/.yarn/cache/undici-types-npm-7.18.2-3e6d69d829-85a7918911.zip +0 -0
  455. package/.yarn/cache/unique-filename-npm-5.0.0-605f54f18e-afb897e9cf.zip +0 -0
  456. package/.yarn/cache/unique-slug-npm-6.0.0-f26b186e99-da7ade4cb0.zip +0 -0
  457. package/.yarn/cache/universalify-npm-2.0.1-040ba5a21e-73e8ee3809.zip +0 -0
  458. package/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-4ef57b45aa.zip +0 -0
  459. package/.yarn/cache/v8-compile-cache-lib-npm-3.0.1-4886071ece-bdc36fb809.zip +0 -0
  460. package/.yarn/cache/vite-npm-7.3.1-330baf2f0d-5c7548f5f4.zip +0 -0
  461. package/.yarn/cache/vite-plugin-dts-npm-4.5.4-2445647687-5fcb7f3739.zip +0 -0
  462. package/.yarn/cache/vitest-npm-4.0.18-52f42bdace-b913cd3203.zip +0 -0
  463. package/.yarn/cache/vscode-uri-npm-3.0.8-56f46b9d24-f7f217f526.zip +0 -0
  464. package/.yarn/cache/which-npm-2.0.2-320ddf72f7-66522872a7.zip +0 -0
  465. package/.yarn/cache/which-npm-6.0.1-afc3b2db90-7e710e54ea.zip +0 -0
  466. package/.yarn/cache/why-is-node-running-npm-2.3.0-011cf61a18-1cde0b01b8.zip +0 -0
  467. package/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-d15fc12c11.zip +0 -0
  468. package/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-4df2842c36.zip +0 -0
  469. package/.yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip +0 -0
  470. package/.yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip +0 -0
  471. package/.yarn/cache/yargs-npm-17.7.2-80b62638e1-ccd7e723e6.zip +0 -0
  472. package/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-f84b5e4816.zip +0 -0
  473. package/.yarn/cache/yn-npm-3.1.1-8ad4259784-0732468dd7.zip +0 -0
  474. package/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-dceb44c285.zip +0 -0
  475. package/.yarn/install-state.gz +0 -0
  476. package/.yarn/releases/yarn-4.12.0.cjs +0 -942
  477. package/.yarnrc.yml +0 -5
  478. package/AGENTS.md +0 -82
  479. package/CODE_OF_CONDUCT.md +0 -128
  480. package/dist/metadata.cjs.js +0 -130
  481. package/dist/metadata.es.js +0 -131
  482. package/docker/services/node/Dockerfile +0 -9
  483. package/drafts/.gitignore +0 -2
  484. package/skills/commit-workflow/SKILL.md +0 -93
  485. package/skills/coverage-recovery/SKILL.md +0 -68
  486. package/skills/yarn-lock-conflict-resolution/SKILL.md +0 -69
@@ -0,0 +1,75 @@
1
+ # Migrating From 0.2.1
2
+
3
+ [Documentation index](./00-index.md)
4
+ [Russian translation](../ru/09-migration.md)
5
+
6
+ This guide describes the unreleased changes after `0.2.1`.
7
+
8
+ ## Object-Level Refinements
9
+
10
+ `shape(...).refine(...)` is async-first even when its callback returns a plain value.
11
+ Use `shape(...).refine.sync(...)` for rules used by `validate.sync(...)`,
12
+ `matches.sync(...)`, or `shape.check(...)`.
13
+
14
+ ```typescript
15
+ const profile = shape({ password: isString, confirmation: isString })
16
+ .refine.sync(value => value.password === value.confirmation ? null : {
17
+ code: 'profile.password.mismatch',
18
+ })
19
+ ```
20
+
21
+ Use `.refine(...)` with `await validate(...)` for asynchronous rules.
22
+
23
+ ## Staged Assertions
24
+
25
+ Guard assertions establish a domain; refinements check properties inside it:
26
+
27
+ ```typescript
28
+ validate.sync('name', [isString, hasLength({ min: 3 })])
29
+ validate.sync(4, [isInteger, multipleOf(2)])
30
+ ```
31
+
32
+ Replace standalone refinements such as `validate.sync(value, hasLength(...))`
33
+ with a compatible guard followed by the refinement. Incompatible combinations,
34
+ such as `[isNumber, hasLength(...)]`, are rejected by TypeScript.
35
+
36
+ Structural validators reset the assertion stage. To refine the outer array after
37
+ checking its elements, use `[each(isString), isDefined, hasLength({ min: 2 })]`.
38
+
39
+ ## Public Type Names
40
+
41
+ The old names have no compatibility aliases. Update imports and annotations:
42
+
43
+ | Old name | Current name |
44
+ | --- | --- |
45
+ | `ValidationTuple` | `ValidationResult` |
46
+ | `InferMaybeManyViolations` | `InferViolations` |
47
+ | `ObjectDescriptor` | `ShapeDescriptor` |
48
+ | `InferObjectDescriptor` | `InferShape` |
49
+ | `PartialObjectDescriptor` | `PartialShapeDescriptor` |
50
+ | `MergeObjectDescriptors` | `MergeShapeDescriptors` |
51
+ | `ObjectShapeFieldSelector` | `ShapeFieldSelector` |
52
+ | `ObjectShapeRefinement` / `ObjectShapeAsyncRefinement` | `ShapeRefinement` |
53
+ | `ObjectShapeRefinementSync` / `ObjectShapeSyncRefinement` | `SyncShapeRefinement` |
54
+ | `ObjectShapeRefinementIssue` | `ShapeRefinementViolationInput` |
55
+ | `ObjectShapeRefineMethod` | `ShapeRefineMethod` |
56
+ | `ObjectShapeRefineMethodSync` | `ShapeRefineMethodSync` |
57
+ | `DescribeMaybeMany` | `DescribeConstraints` |
58
+ | `DescribeObjectDescriptor` | `DescribeShapeDescriptor` |
59
+ | `AssertionDescriptorConstraint` | `AssertionConstraintDescriptor` |
60
+ | `ConstraintDescriptorBase` | `BaseConstraintDescriptor` |
61
+ | `ValidatorDescriptor` | `OpaqueValidatorDescriptor` |
62
+ | `GenericObjectShapeRuleDescriptor` | `SyncObjectShapeRuleDescriptor` |
63
+
64
+ ## Optional Predicate Fields
65
+
66
+ `isShape({ name: [isString, false] })` permits an absent `name`, but rejects
67
+ `{ name: 2 }` and `{ name: undefined }`. To allow explicit `undefined`, use
68
+ `[Or(isString, isUndefined), false]`. Required fields must be present even when
69
+ their predicate accepts `undefined`.
70
+
71
+ ## Package Consumers
72
+
73
+ The public root and subpath exports support ESM, CommonJS, and strict TypeScript
74
+ with NodeNext or Bundler resolution. Import from package entrypoints rather than
75
+ internal files in `dist/`.
@@ -10,6 +10,8 @@
10
10
  - [Справка для AI](./07-ai-reference.md) - Краткое описание контракта для AI agents, инструментов и быстрого поиска стабильной семантики библиотеки.
11
11
  - [Типы кодов нарушений](./08-violation-code-types.md) - Подробное руководство по `ViolationCodeRegistry`, `ViolationCode`, сохранению literal-кодов в descriptors и внешнему расширению реестра.
12
12
 
13
+ - [Миграция с 0.2.1](./09-migration.md) - Breaking changes, переименованные типы и обновлённые контракты валидации.
14
+
13
15
  ## Переводы
14
16
 
15
17
  - [English](../en/00-index.md)
@@ -49,6 +49,8 @@ Shape по-прежнему остаётся validator-ом. Дополните
49
49
  - массив constraint-ов, которые выполняются последовательно;
50
50
  - другой structural validator вроде `shape(...)`, `each(...)`, `tuple(...)`, `record(...)`, `union(...)` или `discriminatedUnion(...)`.
51
51
 
52
+ Для массивов assertions эта последовательность теперь stage-aware: сначала guard assertions задают домен поля, а refinement assertions обязаны быть совместимы с этим доменом.
53
+
52
54
  Поэтому object validation остаётся согласованной с остальной библиотекой:
53
55
 
54
56
  - field-level checks переиспользуют те же assertions и combinators;
@@ -79,6 +81,11 @@ Runtime behavior:
79
81
  - вложенные violations возвращаются на пути поля;
80
82
  - unknown keys по умолчанию разрешены.
81
83
 
84
+ Type-level behavior:
85
+
86
+ - `[isString, hasLength({ min: 8 })]` типизируется корректно;
87
+ - `[isNumber, hasLength({ min: 8 })]` TypeScript отсекает ещё до runtime.
88
+
82
89
  ## Неизвестные ключи
83
90
 
84
91
  У shape есть два режима работы с неизвестными ключами:
@@ -190,13 +197,36 @@ Shapes позволяют выражать cross-field invariants без вне
190
197
 
191
198
  ### `refine(...)`
192
199
 
193
- `refine(...)` добавляет синхронное object-level rule, которое запускается только после того, как базовая shape уже успешно провалидировалась как объект.
200
+ `refine(...)` добавляет async-first object-level rule, которое запускается только после того, как базовая shape уже успешно провалидировалась как объект.
201
+
202
+ ```typescript
203
+ const registration = shape({
204
+ email: isString,
205
+ }).refine(async value => {
206
+ const taken = await users.has(value.email)
207
+
208
+ return taken
209
+ ? [{ path: ['email'], code: 'user.email.taken' }]
210
+ : []
211
+ })
212
+ ```
213
+
214
+ `refine(...)` специально остаётся тонким:
215
+
216
+ - он принимает sync- и async-callbacks;
217
+ - при успехе возвращает `[]`, `null` или `undefined`;
218
+ - при ошибке возвращает один issue или массив issue;
219
+ - `path` задаётся относительно текущей shape и по умолчанию равен `[]`;
220
+ - `value` необязателен и по умолчанию берётся из значения объекта по этому относительному пути;
221
+ - `code` остаётся machine-readable.
222
+
223
+ Если нужен явно sync-safe object rule для `validate.sync(...)`, используйте `refine.sync(...)`:
194
224
 
195
225
  ```typescript
196
226
  const registration = shape({
197
227
  password: isString,
198
228
  confirmPassword: isString,
199
- }).refine(value => {
229
+ }).refine.sync(value => {
200
230
  return value.password === value.confirmPassword
201
231
  ? []
202
232
  : [{
@@ -207,14 +237,7 @@ const registration = shape({
207
237
  })
208
238
  ```
209
239
 
210
- `refine(...)` специально остаётся тонким:
211
-
212
- - он только sync;
213
- - при успехе возвращает `[]`, `null` или `undefined`;
214
- - при ошибке возвращает один issue или массив issue;
215
- - `path` задаётся относительно текущей shape и по умолчанию равен `[]`;
216
- - `value` необязателен и по умолчанию берётся из значения объекта по этому относительному пути;
217
- - `code` остаётся machine-readable.
240
+ `validate.sync(...)`, `matches.sync(...)` и `shape.check(...)` выбрасывают явную ошибку, если встречают async-callback в `refine(...)`.
218
241
 
219
242
  Сгенерированные violations используют:
220
243
 
@@ -243,6 +266,8 @@ const registration = shape({
243
266
 
244
267
  Позже это попадает в `describe(...)` в массив `rules`.
245
268
 
269
+ Rules, зарегистрированные через async-first `refine(...)`, получают в этом массиве признак `async: true`.
270
+
246
271
  ### `fieldsMatch(...)`
247
272
 
248
273
  `fieldsMatch(...)` — небольшой helper для частого случая с полем подтверждения.
@@ -182,7 +182,8 @@ const descriptor = describe(shape({
182
182
  Built-in примеры:
183
183
 
184
184
  - `fieldsMatch(...)` создаёт компактный `fieldsMatch` rule descriptor;
185
- - `refine(...)` может принимать собственный компактный rule descriptor object.
185
+ - `refine(...)` может принимать собственный компактный rule descriptor object;
186
+ - async-first rules из `refine(...)` помечаются через `async: true`.
186
187
 
187
188
  Так публичное descriptor tree остаётся стабильным и достаточно сериализуемым для tooling, при этом библиотека не пытается сериализовать произвольные callbacks.
188
189
 
@@ -120,7 +120,7 @@ const violation: Violation = {
120
120
  `validate(...)` и `validate.sync(...)` возвращают:
121
121
 
122
122
  ```typescript
123
- type ValidationTuple<T> =
123
+ type ValidationResult<T> =
124
124
  | [ok: true, validated: T, violations: []]
125
125
  | [ok: false, validated: unknown, violations: Violation[]]
126
126
  ```
@@ -69,6 +69,9 @@ Exporter покрывает built-in descriptor set, который уже уч
69
69
 
70
70
  - `isString` -> `type: 'string'`
71
71
  - `isNumber` -> `type: 'number'`
72
+ - `isFiniteNumber` -> `type: 'number'`
73
+ - `isInteger` -> `type: 'integer'`
74
+ - `isSafeInteger` -> `type: 'integer'`, `minimum: Number.MIN_SAFE_INTEGER`, `maximum: Number.MAX_SAFE_INTEGER`
72
75
  - `isBoolean` -> `type: 'boolean'`
73
76
  - `isNull` -> `type: 'null'`
74
77
  - `isEmail` -> `type: 'string'` и `format: 'email'`
@@ -202,6 +205,8 @@ Strict режим полезен, когда silent fallback был бы вво
202
205
 
203
206
  Exporter фиксирует эти границы явно и не пытается гадать.
204
207
 
208
+ `isValidDate`, `isError`, `isRegExp` и `isPromiseLike` описывают runtime-значения без точного представления в JSON Schema. Strict mode бросает `JsonSchemaExportError`, а best-effort mode выдаёт узел без ограничений. Числа JSON конечны, поэтому для `isFiniteNumber` дополнительный schema keyword не нужен.
209
+
205
210
  ## Связь с `describe(...)`
206
211
 
207
212
  `toJsonSchema(...)` находится downstream от `describe(...)`.
@@ -19,6 +19,8 @@ Root package экспортирует:
19
19
  - `validate`
20
20
  - `validate.sync`
21
21
  - `matches.sync`
22
+ - `Guard`
23
+ - `Refinement`
22
24
  - `meta`
23
25
  - `describe`
24
26
  - `custom`
@@ -33,8 +35,9 @@ Root package экспортирует:
33
35
 
34
36
  Root package включает:
35
37
 
36
- - низкоуровневое создание assertions через `assert(...)`
37
- - built-in assertions вроде `isString`, `isNumber`, `isBoolean`, `isNull`, `isEmail`, `hasLength(...)`, `oneOf(...)`
38
+ - низкоуровневое создание assertions через `assert(...)` и `refine(...)`
39
+ - built-in guard assertions вроде `isString`, `isNumber`, `isBoolean`, `isNull`, `isEmail`, `oneOf(...)`
40
+ - built-in refinement assertions вроде `hasLength(...)`, `hasSize(...)`, `hasPattern(...)`, `startsWith(...)`, `hasValue(...)`, `multipleOf(...)`
38
41
  - structural combinators вроде `shape(...)`, `each(...)`, `tuple(...)`, `record(...)`
39
42
  - wrappers вроде `optional(...)`, `nullable(...)`, `nullish(...)`
40
43
  - branching combinators вроде `union(...)` и `discriminatedUnion(...)`
@@ -42,6 +45,27 @@ Root package включает:
42
45
 
43
46
  Это основной runtime-facing API surface библиотеки.
44
47
 
48
+ Последовательные массивы assertions теперь stage-aware: совместимый кортеж вроде `[isString, hasLength({ min: 3 })]` поддерживается напрямую, а несовместимые комбинации отсекаются типовой системой.
49
+ Refinement assertions в этой модели являются staged-helper'ами, поэтому `validate(...)` и `matches.sync(...)` ожидают их после совместимого guard-а, а не в одиночку.
50
+
51
+ Структурные validators вроде `each(...)` сбрасывают assertion stage. Перед следующим refinement нужен новый совместимый guard, например `[each(isString), isDefined, hasLength({ min: 2 })]`.
52
+
53
+ ### Встроенные проверки значений
54
+
55
+ Эти проверки доступны как assertions из root и `./assertions`, а как boolean type guards — из `./predicates`.
56
+
57
+ | Проверка | Допустимые значения | Код нарушения |
58
+ | --- | --- | --- |
59
+ | `isFiniteNumber` | Числа без `NaN` и бесконечностей | `number.finite` |
60
+ | `isInteger` | Целые числа | `number.integer` |
61
+ | `isSafeInteger` | Целые числа в безопасном диапазоне JavaScript | `number.safe-integer` |
62
+ | `isValidDate` | Экземпляры `Date` с корректным timestamp | `date.valid` |
63
+ | `isError` | Экземпляры `Error`, включая подклассы | `type.error` |
64
+ | `isRegExp` | Экземпляры `RegExp` | `type.regexp` |
65
+ | `isPromiseLike` | Объекты или функции с вызываемым свойством `then` | `type.promise-like` |
66
+
67
+ `isNumber` по-прежнему принимает бесконечности, а `isDate` — невалидные экземпляры `Date`. Для их отклонения используйте более строгие проверки. `isPromiseLike` проверяет наличие вызываемого `then`, не вызывая его и не проверяя тип результата.
68
+
45
69
  ## Метаданные и интроспекция
46
70
 
47
71
  Тот же root package также включает:
@@ -67,7 +91,7 @@ Root package также содержит:
67
91
  `validate(...)` и `validate.sync(...)` возвращают:
68
92
 
69
93
  ```typescript
70
- type ValidationTuple<T> =
94
+ type ValidationResult<T> =
71
95
  | [ok: true, validated: T, violations: []]
72
96
  | [ok: false, validated: unknown, violations: Violation[]]
73
97
  ```
@@ -77,6 +101,8 @@ type ValidationTuple<T> =
77
101
  - `ok` показывает, прошла ли валидация;
78
102
  - `validated` становится строго типизированным только в успешной ветке;
79
103
  - `violations` пуст при успехе и содержит структурированные ошибки при неуспехе.
104
+ - `validate(...)` остаётся основным async-first entrypoint;
105
+ - `validate.sync(...)` явно выбрасывает ошибку при async validators и async object-level rules из `shape(...).refine(...)`.
80
106
 
81
107
  ## Subpath predicates
82
108
 
@@ -97,6 +123,12 @@ Predicates доступны из:
97
123
 
98
124
  Используйте этот subpath, когда нужны guard-style runtime checks без более высокого validation layer.
99
125
 
126
+ В `isShape({ name: [isString, false] })` optional-поле может отсутствовать,
127
+ но присутствующее значение всегда проверяется предикатом. Это относится и к
128
+ явному `undefined`: чтобы разрешить его, используйте `Or(isString, isUndefined)`.
129
+ Shorthand `name: isString` и кортеж `[isString, true]` задают обязательное поле.
130
+ Наличие поля проверяется через `in`, включая свойства из цепочки прототипов.
131
+
100
132
  ## Subpath экспорта JSON Schema
101
133
 
102
134
  JSON Schema export доступен из:
@@ -14,7 +14,7 @@
14
14
  Быстрое правило выбора:
15
15
 
16
16
  - используйте `@modulify/validator/predicates`, когда нужны только runtime checks и type guards;
17
- - используйте built-in assertions вроде `isString`, `isDefined`, `hasLength(...)`, `oneOf(...)`, когда нужны машиночитаемые ошибки;
17
+ - используйте built-in guard/refinement assertions вроде `isString`, `isDefined`, `hasLength(...)`, `oneOf(...)`, когда нужны машиночитаемые ошибки;
18
18
  - используйте combinators вроде `shape(...)`, `each(...)`, `tuple(...)`, `record(...)`, `union(...)`, `discriminatedUnion(...)`, когда валидация становится структурной;
19
19
  - используйте `meta(...)` и `describe(...)`, когда другой слой нуждается в стабильных машиночитаемых descriptors;
20
20
  - используйте `toJsonSchema(...)` только тогда, когда нужно представление для interoperability или экспорта, а не источник runtime truth.
@@ -44,6 +44,7 @@ const [ok, validated, violations] = validate.sync(input, createUser)
44
44
 
45
45
  - используйте `.strict()` для request payload, если неизвестные ключи должны отклоняться;
46
46
  - держите leaf checks маленькими и хорошо сочетаемыми друг с другом;
47
+ - если используете массив assertions, начинайте его с совместимого guard-а вроде `isString` перед строковыми refinement-проверками вроде `hasLength(...)`;
47
48
  - используйте элемент кортежа `validated` внутри успешной ветки;
48
49
  - используйте `violations` как структурированные данные для ответов API, логов или сопоставления с UI.
49
50
 
@@ -43,7 +43,7 @@ Violations — это прежде всего структурированные
43
43
  ## Контракт результата валидации
44
44
 
45
45
  ```typescript
46
- type ValidationTuple<T> =
46
+ type ValidationResult<T> =
47
47
  | [ok: true, validated: T, violations: []]
48
48
  | [ok: false, validated: unknown, violations: Violation[]]
49
49
  ```
@@ -53,7 +53,8 @@ type ValidationTuple<T> =
53
53
  - `validate(...)` сужает `validated` в успешной ветке;
54
54
  - `validate(...)` не сужает исходную входную переменную;
55
55
  - `matches.sync(...)` — это API для сужения исходной переменной;
56
- - `violations` при успехе всегда пуст.
56
+ - `violations` при успехе всегда пуст;
57
+ - `validate(...)` — async-first API, а `validate.sync(...)` и `matches.sync(...)` остаются специализированными sync API.
57
58
 
58
59
  ## Семантика wrappers
59
60
 
@@ -90,6 +91,8 @@ type ValidationTuple<T> =
90
91
 
91
92
  - structural derivations намеренно сбрасывают object-level rules;
92
93
  - mode switches намеренно сохраняют object-level rules.
94
+ - `.refine(...)` — async-first и может возвращать promise;
95
+ - `.refine.sync(...)` — явно sync-safe API для object-level rules.
93
96
 
94
97
  ## Контракт violations
95
98
 
@@ -58,6 +58,32 @@ const lengthDescriptor = describe(hasLength({ min: 3 }))
58
58
 
59
59
  Это удобно для адаптеров и tooling-кода, который читает descriptors и хочет ветвиться по коду без ручных cast.
60
60
 
61
+ Та же точность теперь протекает и в `validate(...)` для параметризованных built-in assertions.
62
+
63
+ ```typescript
64
+ import {
65
+ collection,
66
+ hasLength,
67
+ isString,
68
+ validate,
69
+ } from '@modulify/validator'
70
+
71
+ const [ok, , violations] = validate.sync('ab', [isString, hasLength({ min: 3 })])
72
+
73
+ if (!ok) {
74
+ collection(violations).map(violation => {
75
+ switch (violation.violates.code) {
76
+ case 'type.string':
77
+ return violation.violates.name
78
+ case 'length.min':
79
+ return violation.violates.args[0]
80
+ }
81
+ })
82
+ }
83
+ ```
84
+
85
+ Для staged-вызовов вроде `[isString, hasLength({ min: 3 })]` невозможные ветки, например `'length.max'` или `'length.range'`, больше не попадают в union violations, а unsupported-type остаётся только на стороне descriptor-а и не протекает в staged-валидацию.
86
+
61
87
  ## Зачем нужен глобальный реестр
62
88
 
63
89
  Точные literals на отдельных значениях полезны для локальной интроспекции.
@@ -158,7 +184,7 @@ const isAvailableEmail = assert(
158
184
  Та же идея работает и для object-level refinement issues.
159
185
 
160
186
  ```typescript
161
- import type { ObjectShapeRefinementIssue } from '@modulify/validator'
187
+ import type { ShapeRefinementViolationInput } from '@modulify/validator'
162
188
  import {
163
189
  isEmail,
164
190
  isString,
@@ -180,7 +206,7 @@ const signUpForm = shape({
180
206
  path: ['confirmation', 'password'],
181
207
  code: 'profile.password.mismatch',
182
208
  args: [],
183
- }] satisfies ObjectShapeRefinementIssue<'profile.password.mismatch'>
209
+ }] satisfies ShapeRefinementViolationInput<'profile.password.mismatch'>
184
210
  })
185
211
  ```
186
212
 
@@ -0,0 +1,76 @@
1
+ # Миграция с 0.2.1
2
+
3
+ [Индекс документации](./00-index.md)
4
+ [English](../en/09-migration.md)
5
+
6
+ Здесь описаны ещё не выпущенные изменения после `0.2.1`.
7
+
8
+ ## Правила уровня объекта
9
+
10
+ `shape(...).refine(...)` стал async-first, даже если callback возвращает обычное
11
+ значение. Для правил, используемых через `validate.sync(...)`, `matches.sync(...)`
12
+ или `shape.check(...)`, нужен `shape(...).refine.sync(...)`.
13
+
14
+ ```typescript
15
+ const profile = shape({ password: isString, confirmation: isString })
16
+ .refine.sync(value => value.password === value.confirmation ? null : {
17
+ code: 'profile.password.mismatch',
18
+ })
19
+ ```
20
+
21
+ Асинхронные правила `.refine(...)` используются с `await validate(...)`.
22
+
23
+ ## Последовательные assertions
24
+
25
+ Guard задаёт область допустимых значений, refinement проверяет свойства внутри неё:
26
+
27
+ ```typescript
28
+ validate.sync('name', [isString, hasLength({ min: 3 })])
29
+ validate.sync(4, [isInteger, multipleOf(2)])
30
+ ```
31
+
32
+ Замените самостоятельные refinements вроде `validate.sync(value, hasLength(...))`
33
+ на совместимый guard и refinement после него. Несовместимые сочетания, например
34
+ `[isNumber, hasLength(...)]`, отклоняются TypeScript.
35
+
36
+ Структурные validators сбрасывают assertion stage. Для проверки длины внешнего
37
+ массива после проверки элементов используйте
38
+ `[each(isString), isDefined, hasLength({ min: 2 })]`.
39
+
40
+ ## Имена публичных типов
41
+
42
+ Совместимых aliases для прежних имён нет. Обновите imports и аннотации:
43
+
44
+ | Прежнее имя | Новое имя |
45
+ | --- | --- |
46
+ | `ValidationTuple` | `ValidationResult` |
47
+ | `InferMaybeManyViolations` | `InferViolations` |
48
+ | `ObjectDescriptor` | `ShapeDescriptor` |
49
+ | `InferObjectDescriptor` | `InferShape` |
50
+ | `PartialObjectDescriptor` | `PartialShapeDescriptor` |
51
+ | `MergeObjectDescriptors` | `MergeShapeDescriptors` |
52
+ | `ObjectShapeFieldSelector` | `ShapeFieldSelector` |
53
+ | `ObjectShapeRefinement` / `ObjectShapeAsyncRefinement` | `ShapeRefinement` |
54
+ | `ObjectShapeRefinementSync` / `ObjectShapeSyncRefinement` | `SyncShapeRefinement` |
55
+ | `ObjectShapeRefinementIssue` | `ShapeRefinementViolationInput` |
56
+ | `ObjectShapeRefineMethod` | `ShapeRefineMethod` |
57
+ | `ObjectShapeRefineMethodSync` | `ShapeRefineMethodSync` |
58
+ | `DescribeMaybeMany` | `DescribeConstraints` |
59
+ | `DescribeObjectDescriptor` | `DescribeShapeDescriptor` |
60
+ | `AssertionDescriptorConstraint` | `AssertionConstraintDescriptor` |
61
+ | `ConstraintDescriptorBase` | `BaseConstraintDescriptor` |
62
+ | `ValidatorDescriptor` | `OpaqueValidatorDescriptor` |
63
+ | `GenericObjectShapeRuleDescriptor` | `SyncObjectShapeRuleDescriptor` |
64
+
65
+ ## Optional-поля в predicates
66
+
67
+ `isShape({ name: [isString, false] })` разрешает отсутствие `name`, но отклоняет
68
+ `{ name: 2 }` и `{ name: undefined }`. Для явного `undefined` используйте
69
+ `[Or(isString, isUndefined), false]`. Обязательное поле должно присутствовать,
70
+ даже если его предикат принимает `undefined`.
71
+
72
+ ## Потребители пакета
73
+
74
+ Публичные root и subpath exports поддерживают ESM, CommonJS и strict TypeScript
75
+ с разрешением модулей NodeNext или Bundler. Используйте package entrypoints,
76
+ а не внутренние файлы `dist/`.
package/docs/ru/README.md CHANGED
@@ -207,7 +207,7 @@ if (ok) {
207
207
 
208
208
  ## API объектных схем
209
209
 
210
- `shape(...)` — это переиспользуемый API объектных схем. Он валидирует вложенные record-like objects и предоставляет небольшой неизменяемый API вроде `strict()`, `pick()`, `omit()`, `partial()`, `extend()`, `merge()`, `refine()` и `fieldsMatch(...)`.
210
+ `shape(...)` — это переиспользуемый API объектных схем. Он валидирует вложенные record-like objects и предоставляет небольшой неизменяемый API вроде `strict()`, `pick()`, `omit()`, `partial()`, `extend()`, `merge()`, async-first `refine()`, явного `refine.sync()` и `fieldsMatch(...)`.
211
211
 
212
212
  ```typescript
213
213
  import {
@@ -273,11 +273,17 @@ const node = describe(registration)
273
273
 
274
274
  В текущем API это обычно выглядит так:
275
275
 
276
- - leaf checks через assertions вроде `isString`, `isDefined`, `hasLength`, `oneOf`;
276
+ - guard assertions вроде `isString`, `isNumber`, `isDefined`, `oneOf(...)` задают базовый домен значения;
277
+ - refinement assertions вроде `hasLength(...)`, `hasPattern(...)`, `startsWith(...)`, `hasValue(...)`, `multipleOf(...)` проверяют свойства уже внутри этого домена;
277
278
  - композиция схем через combinators вроде `exact`, `optional`, `nullable`, `nullish`, `shape(...)`, `each(...)`;
278
279
  - типизированная валидация через `validate(...)` или `validate.sync(...)`;
279
280
  - narrowing исходной переменной в sync-коде через `matches.sync(...)`.
280
281
 
282
+ Последовательные массивы assertions теперь stage-aware. Кортеж вроде `[isString, hasLength({ min: 3 })]` типизируется, а несовместимые комбинации вроде `[isNumber, hasLength({ min: 3 })]` TypeScript отсекает.
283
+ Refinement assertions не предполагаются для одиночной передачи в `validate(...)` или `matches.sync(...)`.
284
+
285
+ `validate(...)` — основной async-first entrypoint. `validate.sync(...)` и `matches.sync(...)` остаются специализированными sync API и выбрасывают ошибку, если встречают async validators или async object-level rules из `shape(...).refine(...)`.
286
+
281
287
  ## Нарушения
282
288
 
283
289
  `validate(...)` возвращает машиночитаемый список `Violation[]`, а `collection(...)` может обернуть его в небольшой helper API для точного поиска по path и обхода дерева.
@@ -357,6 +363,8 @@ const jsonSchema = toJsonSchema(profile)
357
363
  - [Практические рецепты](./06-common-recipes.md) - практические примеры для валидации payload, выбора wrappers, переиспользуемых shape, сопоставления ошибок формы и экспорта JSON Schema.
358
364
  - [Справка для AI](./07-ai-reference.md) - компактное описание контракта для agents, инструментов и быстрого поиска семантики библиотеки.
359
365
 
366
+ - [Миграция с 0.2.1](./09-migration.md)
367
+
360
368
  ## Заметки
361
369
 
362
370
  - Assertions возвращают структурированные метаданные вместо сообщений.