@vielzeug/spell 3.1.2 → 26.10.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 (151) hide show
  1. package/dist/core.cjs +1 -1
  2. package/dist/core.cjs.map +1 -1
  3. package/dist/core.d.ts +24 -24
  4. package/dist/core.d.ts.map +1 -1
  5. package/dist/core.js +1 -1
  6. package/dist/core.js.map +1 -1
  7. package/dist/errors.cjs +1 -1
  8. package/dist/errors.cjs.map +1 -1
  9. package/dist/errors.js +1 -1
  10. package/dist/errors.js.map +1 -1
  11. package/dist/index.cjs +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/s.cjs +1 -1
  16. package/dist/s.cjs.map +1 -1
  17. package/dist/s.d.ts +7 -4
  18. package/dist/s.d.ts.map +1 -1
  19. package/dist/s.js +1 -1
  20. package/dist/s.js.map +1 -1
  21. package/dist/schemas/array.cjs +1 -1
  22. package/dist/schemas/array.cjs.map +1 -1
  23. package/dist/schemas/array.d.ts +3 -5
  24. package/dist/schemas/array.d.ts.map +1 -1
  25. package/dist/schemas/array.js +1 -1
  26. package/dist/schemas/array.js.map +1 -1
  27. package/dist/schemas/bigint.cjs +1 -1
  28. package/dist/schemas/bigint.cjs.map +1 -1
  29. package/dist/schemas/bigint.d.ts +2 -4
  30. package/dist/schemas/bigint.d.ts.map +1 -1
  31. package/dist/schemas/bigint.js +1 -1
  32. package/dist/schemas/bigint.js.map +1 -1
  33. package/dist/schemas/boolean.cjs +1 -1
  34. package/dist/schemas/boolean.cjs.map +1 -1
  35. package/dist/schemas/boolean.d.ts +2 -4
  36. package/dist/schemas/boolean.d.ts.map +1 -1
  37. package/dist/schemas/boolean.js +1 -1
  38. package/dist/schemas/boolean.js.map +1 -1
  39. package/dist/schemas/date.cjs +1 -1
  40. package/dist/schemas/date.cjs.map +1 -1
  41. package/dist/schemas/date.d.ts +2 -4
  42. package/dist/schemas/date.d.ts.map +1 -1
  43. package/dist/schemas/date.js +1 -1
  44. package/dist/schemas/date.js.map +1 -1
  45. package/dist/schemas/enum.cjs +1 -1
  46. package/dist/schemas/enum.cjs.map +1 -1
  47. package/dist/schemas/enum.d.ts +2 -4
  48. package/dist/schemas/enum.d.ts.map +1 -1
  49. package/dist/schemas/enum.js +1 -1
  50. package/dist/schemas/enum.js.map +1 -1
  51. package/dist/schemas/instanceof.cjs +1 -1
  52. package/dist/schemas/instanceof.cjs.map +1 -1
  53. package/dist/schemas/instanceof.d.ts +2 -4
  54. package/dist/schemas/instanceof.d.ts.map +1 -1
  55. package/dist/schemas/instanceof.js +1 -1
  56. package/dist/schemas/instanceof.js.map +1 -1
  57. package/dist/schemas/intersect.cjs +1 -1
  58. package/dist/schemas/intersect.cjs.map +1 -1
  59. package/dist/schemas/intersect.d.ts +3 -5
  60. package/dist/schemas/intersect.d.ts.map +1 -1
  61. package/dist/schemas/intersect.js +1 -1
  62. package/dist/schemas/intersect.js.map +1 -1
  63. package/dist/schemas/lazy.cjs +1 -1
  64. package/dist/schemas/lazy.cjs.map +1 -1
  65. package/dist/schemas/lazy.d.ts +4 -6
  66. package/dist/schemas/lazy.d.ts.map +1 -1
  67. package/dist/schemas/lazy.js +1 -1
  68. package/dist/schemas/lazy.js.map +1 -1
  69. package/dist/schemas/literal.cjs +1 -1
  70. package/dist/schemas/literal.cjs.map +1 -1
  71. package/dist/schemas/literal.d.ts +2 -4
  72. package/dist/schemas/literal.d.ts.map +1 -1
  73. package/dist/schemas/literal.js +1 -1
  74. package/dist/schemas/literal.js.map +1 -1
  75. package/dist/schemas/map.cjs +1 -1
  76. package/dist/schemas/map.cjs.map +1 -1
  77. package/dist/schemas/map.d.ts +3 -5
  78. package/dist/schemas/map.d.ts.map +1 -1
  79. package/dist/schemas/map.js +1 -1
  80. package/dist/schemas/map.js.map +1 -1
  81. package/dist/schemas/never.cjs +1 -1
  82. package/dist/schemas/never.cjs.map +1 -1
  83. package/dist/schemas/never.d.ts +2 -4
  84. package/dist/schemas/never.d.ts.map +1 -1
  85. package/dist/schemas/never.js +1 -1
  86. package/dist/schemas/never.js.map +1 -1
  87. package/dist/schemas/number.cjs +1 -1
  88. package/dist/schemas/number.cjs.map +1 -1
  89. package/dist/schemas/number.d.ts +2 -4
  90. package/dist/schemas/number.d.ts.map +1 -1
  91. package/dist/schemas/number.js +1 -1
  92. package/dist/schemas/number.js.map +1 -1
  93. package/dist/schemas/object.cjs +1 -1
  94. package/dist/schemas/object.cjs.map +1 -1
  95. package/dist/schemas/object.d.ts +19 -21
  96. package/dist/schemas/object.d.ts.map +1 -1
  97. package/dist/schemas/object.js +1 -1
  98. package/dist/schemas/object.js.map +1 -1
  99. package/dist/schemas/record.cjs +1 -1
  100. package/dist/schemas/record.cjs.map +1 -1
  101. package/dist/schemas/record.d.ts +3 -5
  102. package/dist/schemas/record.d.ts.map +1 -1
  103. package/dist/schemas/record.js +1 -1
  104. package/dist/schemas/record.js.map +1 -1
  105. package/dist/schemas/set.cjs +1 -1
  106. package/dist/schemas/set.cjs.map +1 -1
  107. package/dist/schemas/set.d.ts +3 -5
  108. package/dist/schemas/set.d.ts.map +1 -1
  109. package/dist/schemas/set.js +1 -1
  110. package/dist/schemas/set.js.map +1 -1
  111. package/dist/schemas/string.cjs +1 -1
  112. package/dist/schemas/string.cjs.map +1 -1
  113. package/dist/schemas/string.d.ts +2 -4
  114. package/dist/schemas/string.d.ts.map +1 -1
  115. package/dist/schemas/string.js +1 -1
  116. package/dist/schemas/string.js.map +1 -1
  117. package/dist/schemas/tuple.cjs +1 -1
  118. package/dist/schemas/tuple.cjs.map +1 -1
  119. package/dist/schemas/tuple.d.ts +4 -6
  120. package/dist/schemas/tuple.d.ts.map +1 -1
  121. package/dist/schemas/tuple.js +1 -1
  122. package/dist/schemas/tuple.js.map +1 -1
  123. package/dist/schemas/union.cjs +1 -1
  124. package/dist/schemas/union.cjs.map +1 -1
  125. package/dist/schemas/union.d.ts +4 -6
  126. package/dist/schemas/union.d.ts.map +1 -1
  127. package/dist/schemas/union.js +1 -1
  128. package/dist/schemas/union.js.map +1 -1
  129. package/dist/schemas/variant.cjs +1 -1
  130. package/dist/schemas/variant.cjs.map +1 -1
  131. package/dist/schemas/variant.d.ts +4 -6
  132. package/dist/schemas/variant.d.ts.map +1 -1
  133. package/dist/schemas/variant.js +1 -1
  134. package/dist/schemas/variant.js.map +1 -1
  135. package/dist/spell.cjs +2 -2
  136. package/dist/spell.cjs.map +1 -1
  137. package/dist/spell.iife.js +2 -2
  138. package/dist/spell.iife.js.map +1 -1
  139. package/dist/spell.js +2 -2
  140. package/dist/spell.js.map +1 -1
  141. package/dist/tolerate.cjs +2 -0
  142. package/dist/tolerate.cjs.map +1 -0
  143. package/dist/tolerate.d.ts +10 -0
  144. package/dist/tolerate.d.ts.map +1 -0
  145. package/dist/tolerate.js +2 -0
  146. package/dist/tolerate.js.map +1 -0
  147. package/dist/types.cjs.map +1 -1
  148. package/dist/types.d.ts +9 -52
  149. package/dist/types.d.ts.map +1 -1
  150. package/dist/types.js.map +1 -1
  151. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"bigint.js","names":[],"sources":["../../src/schemas/bigint.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { CheckContext, MessageFn, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class BigIntSchema<Input = bigint, Mode extends SchemaMode = 'sync'> extends Schema<bigint, Input, Mode> {\n protected override get _kind(): string {\n return 'bigint';\n }\n\n override checkAsync(\n this: BigIntSchema<Input, 'sync'>,\n fn: (value: bigint, ctx: CheckContext) => Promise<ValidateResult>,\n ): BigIntSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as BigIntSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'bigint' ? null : fail(ErrorCode.invalid_type, ctx!.messages.bigint.type()),\n );\n }\n\n min(minimum: bigint, message?: MessageFn<{ min: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed >= minimum) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.bigint.min, { min: minimum, value: typed }),\n { min: minimum },\n );\n });\n }\n\n max(maximum: bigint, message?: MessageFn<{ max: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed <= maximum) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.bigint.max, { max: maximum, value: typed }),\n { max: maximum },\n );\n });\n }\n\n positive(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed > 0n) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.bigint.positive, { value: typed }), {\n exclusive: true,\n min: 0n,\n });\n });\n }\n\n negative(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed < 0n) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.bigint.negative, { value: typed }), {\n exclusive: true,\n max: 0n,\n });\n });\n }\n\n nonNegative(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed >= 0n) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.bigint.nonNegative, { value: typed }), {\n min: 0n,\n });\n });\n }\n\n nonPositive(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed <= 0n) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.bigint.nonPositive, { value: typed }), {\n max: 0n,\n });\n });\n }\n\n multipleOf(step: bigint, message?: MessageFn<{ step: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed % step === 0n) return null;\n\n return fail(\n ErrorCode.invalid_multiple_of,\n resolveMessage(message ?? ctx!.messages.bigint.multipleOf, { step, value: typed }),\n { step },\n );\n });\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.bigint) return visitor.bigint(this);\n\n return super._walk(visitor);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n if (this.state.validators.length > 0) {\n warn(\n 'definition(): this bigint schema has constraints (e.g. min(), max(), positive()). ' +\n 'BigInt constraints are not serializable and will not appear in the definition.',\n );\n }\n\n return { ...this._describeBase(), kind: 'bigint' };\n }\n\n static coerce(): BigIntSchema<unknown> {\n return new BigIntSchema().preprocess((value: unknown) => {\n if (typeof value === 'bigint') return value;\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || !Number.isInteger(value)) return value;\n\n try {\n return BigInt(value);\n } catch {\n return value;\n }\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Guard against DoS: BigInt() conversion is O(n²) in digit count.\n if (trimmed.length === 0 || trimmed.length > 1000) return value;\n\n try {\n return BigInt(trimmed);\n } catch {\n return value;\n }\n }\n\n return value;\n });\n }\n}\n"],"mappings":"uJAIA,IAAa,EAAb,MAAa,UAAuE,CAA4B,CAC9G,IAAuB,OAAgB,CACrC,MAAO,QACT,CAEA,WAEE,EAC8B,CAC9B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,SAAW,KAAO,EAAK,EAAU,aAAc,EAAK,SAAS,OAAO,KAAK,CAAC,CAC7F,CACF,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,EAAgB,KAEtB,EACL,EAAU,UACV,EAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAS,MAAO,CAAM,CAAC,EAClF,CAAE,IAAK,CAAQ,CACjB,CACF,CAAC,CACH,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,EAAgB,KAEtB,EACL,EAAU,QACV,EAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAS,MAAO,CAAM,CAAC,EAClF,CAAE,IAAK,CAAQ,CACjB,CACF,CAAC,CACH,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,GAAW,KAEhB,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAE,MAAO,CAAM,CAAC,EAAG,CAC3G,UAAW,GACX,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,GAAW,KAEhB,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAE,MAAO,CAAM,CAAC,EAAG,CACzG,UAAW,GACX,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,GAAW,KAEjB,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAE,MAAO,CAAM,CAAC,EAAG,CAC9G,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,GAAW,KAEjB,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAE,MAAO,CAAM,CAAC,EAAG,CAC5G,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,WAAW,EAAc,EAA4D,CACnF,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,IAAS,GAAW,KAEzB,EACL,EAAU,oBACV,EAAe,GAAW,EAAK,SAAS,OAAO,WAAY,CAAE,OAAM,MAAO,CAAM,CAAC,EACjF,CAAE,MAAK,CACT,CACF,CAAC,CACH,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,OAAe,EAAQ,OAAO,IAAI,EAEvC,MAAM,MAAM,CAAO,CAC5B,CAEA,mBAAyD,CAQvD,OAPI,KAAK,MAAM,WAAW,OAOnB,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,QAAS,CACnD,CAEA,OAAO,QAAgC,CACrC,OAAO,IAAI,EAAa,CAAC,CAAC,WAAY,GAAmB,CACvD,GAAI,OAAO,GAAU,SAAU,OAAO,EAEtC,GAAI,OAAO,GAAU,SAAU,CAC7B,GAAI,CAAC,OAAO,SAAS,CAAK,GAAK,CAAC,OAAO,UAAU,CAAK,EAAG,OAAO,EAEhE,GAAI,CACF,OAAO,OAAO,CAAK,CACrB,MAAQ,CACN,OAAO,CACT,CACF,CAEA,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAG3B,GAAI,EAAQ,SAAW,GAAK,EAAQ,OAAS,IAAM,OAAO,EAE1D,GAAI,CACF,OAAO,OAAO,CAAO,CACvB,MAAQ,CACN,OAAO,CACT,CACF,CAEA,OAAO,CACT,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"bigint.js","names":[],"sources":["../../src/schemas/bigint.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { MessageFn, SchemaDescriptor } from '../core';\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class BigIntSchema<Input = bigint> extends Schema<bigint, Input> {\n protected override get _kind(): string {\n return 'bigint';\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'bigint' ? null : fail(ErrorCode.invalid_type, ctx!.messages.bigint.type()),\n );\n }\n\n min(minimum: bigint, message?: MessageFn<{ min: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed >= minimum) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.bigint.min, { min: minimum, value: typed }),\n { min: minimum },\n );\n });\n }\n\n max(maximum: bigint, message?: MessageFn<{ max: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed <= maximum) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.bigint.max, { max: maximum, value: typed }),\n { max: maximum },\n );\n });\n }\n\n positive(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed > 0n) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.bigint.positive, { value: typed }), {\n exclusive: true,\n min: 0n,\n });\n });\n }\n\n negative(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed < 0n) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.bigint.negative, { value: typed }), {\n exclusive: true,\n max: 0n,\n });\n });\n }\n\n nonNegative(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed >= 0n) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.bigint.nonNegative, { value: typed }), {\n min: 0n,\n });\n });\n }\n\n nonPositive(message?: MessageFn<{ value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed <= 0n) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.bigint.nonPositive, { value: typed }), {\n max: 0n,\n });\n });\n }\n\n multipleOf(step: bigint, message?: MessageFn<{ step: bigint; value: bigint }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as bigint;\n\n if (typed % step === 0n) return null;\n\n return fail(\n ErrorCode.invalid_multiple_of,\n resolveMessage(message ?? ctx!.messages.bigint.multipleOf, { step, value: typed }),\n { step },\n );\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n if (this.state.validators.length > 0) {\n warn(\n 'definition(): this bigint schema has constraints (e.g. min(), max(), positive()). ' +\n 'BigInt constraints are not serializable and will not appear in the definition.',\n );\n }\n\n return { ...this._describeBase(), kind: 'bigint' };\n }\n\n static coerce(): BigIntSchema<unknown> {\n return new BigIntSchema().preprocess((value: unknown) => {\n if (typeof value === 'bigint') return value;\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || !Number.isInteger(value)) return value;\n\n try {\n return BigInt(value);\n } catch {\n return value;\n }\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n\n // Guard against DoS: BigInt() conversion is O(n²) in digit count.\n if (trimmed.length === 0 || trimmed.length > 1000) return value;\n\n try {\n return BigInt(trimmed);\n } catch {\n return value;\n }\n }\n\n return value;\n });\n }\n}\n"],"mappings":"uJAIA,IAAa,EAAb,MAAa,UAAqC,CAAsB,CACtE,IAAuB,OAAgB,CACrC,MAAO,QACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,SAAW,KAAO,EAAK,EAAU,aAAc,EAAK,SAAS,OAAO,KAAK,CAAC,CAC7F,CACF,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,EAAgB,KAEtB,EACL,EAAU,UACV,EAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAS,MAAO,CAAM,CAAC,EAClF,CAAE,IAAK,CAAQ,CACjB,CACF,CAAC,CACH,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,EAAgB,KAEtB,EACL,EAAU,QACV,EAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAS,MAAO,CAAM,CAAC,EAClF,CAAE,IAAK,CAAQ,CACjB,CACF,CAAC,CACH,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,GAAW,KAEhB,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAE,MAAO,CAAM,CAAC,EAAG,CAC3G,UAAW,GACX,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,GAAW,KAEhB,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAE,MAAO,CAAM,CAAC,EAAG,CACzG,UAAW,GACX,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,GAAW,KAEjB,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAE,MAAO,CAAM,CAAC,EAAG,CAC9G,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,GAAS,GAAW,KAEjB,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAE,MAAO,CAAM,CAAC,EAAG,CAC5G,IAAK,EACP,CAAC,CACH,CAAC,CACH,CAEA,WAAW,EAAc,EAA4D,CACnF,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAId,OAFI,EAAQ,IAAS,GAAW,KAEzB,EACL,EAAU,oBACV,EAAe,GAAW,EAAK,SAAS,OAAO,WAAY,CAAE,OAAM,MAAO,CAAM,CAAC,EACjF,CAAE,MAAK,CACT,CACF,CAAC,CACH,CAEA,mBAAyD,CAQvD,OAPI,KAAK,MAAM,WAAW,OAOnB,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,QAAS,CACnD,CAEA,OAAO,QAAgC,CACrC,OAAO,IAAI,EAAa,CAAC,CAAC,WAAY,GAAmB,CACvD,GAAI,OAAO,GAAU,SAAU,OAAO,EAEtC,GAAI,OAAO,GAAU,SAAU,CAC7B,GAAI,CAAC,OAAO,SAAS,CAAK,GAAK,CAAC,OAAO,UAAU,CAAK,EAAG,OAAO,EAEhE,GAAI,CACF,OAAO,OAAO,CAAK,CACrB,MAAQ,CACN,OAAO,CACT,CACF,CAEA,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAG3B,GAAI,EAAQ,SAAW,GAAK,EAAQ,OAAS,IAAM,OAAO,EAE1D,GAAI,CACF,OAAO,OAAO,CAAO,CACvB,MAAQ,CACN,OAAO,CACT,CACF,CAEA,OAAO,CACT,CAAC,CACH,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../core.cjs");var n=class n extends t.Schema{get _kind(){return`boolean`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((t,n)=>typeof t==`boolean`?null:[{code:e.ErrorCode.invalid_type,message:n.messages.boolean.type(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`boolean`}}_walk(e){return e.boolean?e.boolean(this):super._walk(e)}static coerce(){return new n().preprocess(e=>typeof e==`boolean`?e:e===`true`||e===`1`||e===1?!0:e===`false`||e===`0`||e===0?!1:e)}};exports.BooleanSchema=n;
1
+ const e=require("../types.cjs"),t=require("../core.cjs");var n=class n extends t.Schema{get _kind(){return`boolean`}constructor(){super((t,n)=>typeof t==`boolean`?null:[{code:e.ErrorCode.invalid_type,message:n.messages.boolean.type(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`boolean`}}static coerce(){return new n().preprocess(e=>typeof e==`boolean`?e:e===`true`||e===`1`||e===1?!0:e===`false`||e===`0`||e===0?!1:e)}};exports.BooleanSchema=n;
2
2
  //# sourceMappingURL=boolean.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.cjs","names":[],"sources":["../../src/schemas/boolean.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class BooleanSchema<Input = boolean, Mode extends SchemaMode = 'sync'> extends Schema<boolean, Input, Mode> {\n protected override get _kind(): string {\n return 'boolean';\n }\n\n override checkAsync(\n this: BooleanSchema<Input, 'sync'>,\n fn: (value: boolean, ctx: CheckContext) => Promise<ValidateResult>,\n ): BooleanSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as BooleanSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'boolean'\n ? null\n : [{ code: ErrorCode.invalid_type, message: ctx!.messages.boolean.type(), path: [] }],\n );\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.boolean) return visitor.boolean(this);\n\n return super._walk(visitor);\n }\n\n static coerce(): BooleanSchema<unknown> {\n return new BooleanSchema().preprocess((v: unknown) => {\n if (typeof v === 'boolean') return v;\n\n if (v === 'true' || v === '1' || v === 1) return true;\n\n if (v === 'false' || v === '0' || v === 0) return false;\n\n return v;\n });\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,MAAa,UAAyE,EAAA,MAA6B,CACjH,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,WAEE,EAC+B,CAC/B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,UACb,KACA,CAAC,CAAE,KAAM,EAAA,UAAU,aAAc,QAAS,EAAK,SAAS,QAAQ,KAAK,EAAG,KAAM,CAAC,CAAE,CAAC,CACxF,CACF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CAEA,OAAO,QAAiC,CACtC,OAAO,IAAI,EAAc,CAAC,CAAC,WAAY,GACjC,OAAO,GAAM,UAAkB,EAE/B,IAAM,QAAU,IAAM,KAAO,IAAM,EAAU,GAE7C,IAAM,SAAW,IAAM,KAAO,IAAM,EAAU,GAE3C,CACR,CACH,CACF"}
1
+ {"version":3,"file":"boolean.cjs","names":[],"sources":["../../src/schemas/boolean.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {\n protected override get _kind(): string {\n return 'boolean';\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'boolean'\n ? null\n : [{ code: ErrorCode.invalid_type, message: ctx!.messages.boolean.type(), path: [] }],\n );\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n\n static coerce(): BooleanSchema<unknown> {\n return new BooleanSchema().preprocess((v: unknown) => {\n if (typeof v === 'boolean') return v;\n\n if (v === 'true' || v === '1' || v === 1) return true;\n\n if (v === 'false' || v === '0' || v === 0) return false;\n\n return v;\n });\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,MAAa,UAAuC,EAAA,MAAuB,CACzE,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,UACb,KACA,CAAC,CAAE,KAAM,EAAA,UAAU,aAAc,QAAS,EAAK,SAAS,QAAQ,KAAK,EAAG,KAAM,CAAC,CAAE,CAAC,CACxF,CACF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CAEA,OAAO,QAAiC,CACtC,OAAO,IAAI,EAAc,CAAC,CAAC,WAAY,GACjC,OAAO,GAAM,UAAkB,EAE/B,IAAM,QAAU,IAAM,KAAO,IAAM,EAAU,GAE7C,IAAM,SAAW,IAAM,KAAO,IAAM,EAAU,GAE3C,CACR,CACH,CACF"}
@@ -1,11 +1,9 @@
1
- import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class BooleanSchema<Input = boolean, Mode extends SchemaMode = 'sync'> extends Schema<boolean, Input, Mode> {
3
+ export declare class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {
4
4
  protected get _kind(): string;
5
- checkAsync(this: BooleanSchema<Input, 'sync'>, fn: (value: boolean, ctx: CheckContext) => Promise<ValidateResult>): BooleanSchema<Input, 'async'>;
6
5
  constructor();
7
6
  protected _toDescriptorImpl(): SchemaDescriptor;
8
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
9
7
  static coerce(): BooleanSchema<unknown>;
10
8
  }
11
9
  //# sourceMappingURL=boolean.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/schemas/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExG,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,aAAa,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;IAChH,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,EAClC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GACjE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;;cAYb,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAM/D,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC;CAWxC"}
1
+ {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/schemas/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,aAAa,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;IACxE,cAAuB,KAAK,IAAI,MAAM,CAErC;;cAUkB,iBAAiB,IAAI,gBAAgB;IAIxD,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC;CAWxC"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class n extends t{get _kind(){return`boolean`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((t,n)=>typeof t==`boolean`?null:[{code:e.invalid_type,message:n.messages.boolean.type(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`boolean`}}_walk(e){return e.boolean?e.boolean(this):super._walk(e)}static coerce(){return new n().preprocess(e=>typeof e==`boolean`?e:e===`true`||e===`1`||e===1?!0:e===`false`||e===`0`||e===0?!1:e)}};export{n as BooleanSchema};
1
+ import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class n extends t{get _kind(){return`boolean`}constructor(){super((t,n)=>typeof t==`boolean`?null:[{code:e.invalid_type,message:n.messages.boolean.type(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`boolean`}}static coerce(){return new n().preprocess(e=>typeof e==`boolean`?e:e===`true`||e===`1`||e===1?!0:e===`false`||e===`0`||e===0?!1:e)}};export{n as BooleanSchema};
2
2
  //# sourceMappingURL=boolean.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.js","names":[],"sources":["../../src/schemas/boolean.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class BooleanSchema<Input = boolean, Mode extends SchemaMode = 'sync'> extends Schema<boolean, Input, Mode> {\n protected override get _kind(): string {\n return 'boolean';\n }\n\n override checkAsync(\n this: BooleanSchema<Input, 'sync'>,\n fn: (value: boolean, ctx: CheckContext) => Promise<ValidateResult>,\n ): BooleanSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as BooleanSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'boolean'\n ? null\n : [{ code: ErrorCode.invalid_type, message: ctx!.messages.boolean.type(), path: [] }],\n );\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.boolean) return visitor.boolean(this);\n\n return super._walk(visitor);\n }\n\n static coerce(): BooleanSchema<unknown> {\n return new BooleanSchema().preprocess((v: unknown) => {\n if (typeof v === 'boolean') return v;\n\n if (v === 'true' || v === '1' || v === 1) return true;\n\n if (v === 'false' || v === '0' || v === 0) return false;\n\n return v;\n });\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,MAAa,UAAyE,CAA6B,CACjH,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,WAEE,EAC+B,CAC/B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,UACb,KACA,CAAC,CAAE,KAAM,EAAU,aAAc,QAAS,EAAK,SAAS,QAAQ,KAAK,EAAG,KAAM,CAAC,CAAE,CAAC,CACxF,CACF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CAEA,OAAO,QAAiC,CACtC,OAAO,IAAI,EAAc,CAAC,CAAC,WAAY,GACjC,OAAO,GAAM,UAAkB,EAE/B,IAAM,QAAU,IAAM,KAAO,IAAM,EAAU,GAE7C,IAAM,SAAW,IAAM,KAAO,IAAM,EAAU,GAE3C,CACR,CACH,CACF"}
1
+ {"version":3,"file":"boolean.js","names":[],"sources":["../../src/schemas/boolean.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {\n protected override get _kind(): string {\n return 'boolean';\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'boolean'\n ? null\n : [{ code: ErrorCode.invalid_type, message: ctx!.messages.boolean.type(), path: [] }],\n );\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n\n static coerce(): BooleanSchema<unknown> {\n return new BooleanSchema().preprocess((v: unknown) => {\n if (typeof v === 'boolean') return v;\n\n if (v === 'true' || v === '1' || v === 1) return true;\n\n if (v === 'false' || v === '0' || v === 0) return false;\n\n return v;\n });\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,MAAa,UAAuC,CAAuB,CACzE,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,UACb,KACA,CAAC,CAAE,KAAM,EAAU,aAAc,QAAS,EAAK,SAAS,QAAQ,KAAK,EAAG,KAAM,CAAC,CAAE,CAAC,CACxF,CACF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CAEA,OAAO,QAAiC,CACtC,OAAO,IAAI,EAAc,CAAC,CAAC,WAAY,GACjC,OAAO,GAAM,UAAkB,EAE/B,IAAM,QAAU,IAAM,KAAO,IAAM,EAAU,GAE7C,IAAM,SAAW,IAAM,KAAO,IAAM,EAAU,GAE3C,CACR,CACH,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{get _kind(){return`date`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((n,r)=>n instanceof Date&&!Number.isNaN(n.getTime())?null:e.fail(t.ErrorCode.invalid_date,r.messages.date.type()))}min(n,r){return this._addConstraint((i,a)=>{let o=i;return o>=n?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(r??a.messages.date.min,{min:n,value:o}),{min:n})})}max(n,r){return this._addConstraint((i,a)=>{let o=i;return o<=n?null:e.fail(t.ErrorCode.too_big,e.resolveMessage(r??a.messages.date.max,{max:n,value:o}),{max:n})})}_toDescriptorImpl(){return{...this._describeBase(),kind:`date`}}_walk(e){return e.date?e.date(this):super._walk(e)}static coerce(){return new r().preprocess(e=>e instanceof Date?e:typeof e==`string`||typeof e==`number`?new Date(e):e)}};exports.DateSchema=r;
1
+ const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{get _kind(){return`date`}constructor(){super((n,r)=>n instanceof Date&&!Number.isNaN(n.getTime())?null:e.fail(t.ErrorCode.invalid_date,r.messages.date.type()))}min(n,r){return this._addConstraint((i,a)=>{let o=i;return o>=n?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(r??a.messages.date.min,{min:n,value:o}),{min:n})})}max(n,r){return this._addConstraint((i,a)=>{let o=i;return o<=n?null:e.fail(t.ErrorCode.too_big,e.resolveMessage(r??a.messages.date.max,{max:n,value:o}),{max:n})})}_toDescriptorImpl(){return{...this._describeBase(),kind:`date`}}static coerce(){return new r().preprocess(e=>e instanceof Date?e:typeof e==`string`||typeof e==`number`?new Date(e):e)}};exports.DateSchema=r;
2
2
  //# sourceMappingURL=date.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.cjs","names":[],"sources":["../../src/schemas/date.ts"],"sourcesContent":["import type { CheckContext, MessageFn, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class DateSchema<Input = Date, Mode extends SchemaMode = 'sync'> extends Schema<Date, Input, Mode> {\n protected override get _kind(): string {\n return 'date';\n }\n\n override checkAsync(\n this: DateSchema<Input, 'sync'>,\n fn: (value: Date, ctx: CheckContext) => Promise<ValidateResult>,\n ): DateSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as DateSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n value instanceof Date && !Number.isNaN(value.getTime())\n ? null\n : fail(ErrorCode.invalid_date, ctx!.messages.date.type()),\n );\n }\n\n min(date: Date, message?: MessageFn<{ min: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed >= date\n ? null\n : fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.date.min, { min: date, value: typed }), {\n min: date,\n });\n });\n }\n\n max(date: Date, message?: MessageFn<{ max: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed <= date\n ? null\n : fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.date.max, { max: date, value: typed }), {\n max: date,\n });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'date' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.date) return visitor.date(this);\n\n return super._walk(visitor);\n }\n\n static coerce(): DateSchema<unknown> {\n return new DateSchema().preprocess((v: unknown) => {\n if (v instanceof Date) return v;\n\n if (typeof v === 'string' || typeof v === 'number') return new Date(v);\n\n return v;\n });\n }\n}\n"],"mappings":"oFAIA,IAAa,EAAb,MAAa,UAAmE,EAAA,MAA0B,CACxG,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EAC4B,CAC5B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,aAAiB,MAAQ,CAAC,OAAO,MAAM,EAAM,QAAQ,CAAC,EAClD,KACA,EAAA,KAAK,EAAA,UAAU,aAAc,EAAK,SAAS,KAAK,KAAK,CAAC,CAC5D,CACF,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAA,KAAK,EAAA,UAAU,UAAW,EAAA,eAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACxG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAA,KAAK,EAAA,UAAU,QAAS,EAAA,eAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACtG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,OAAO,QAA8B,CACnC,OAAO,IAAI,EAAW,CAAC,CAAC,WAAY,GAC9B,aAAa,KAAa,EAE1B,OAAO,GAAM,UAAY,OAAO,GAAM,SAAiB,IAAI,KAAK,CAAC,EAE9D,CACR,CACH,CACF"}
1
+ {"version":3,"file":"date.cjs","names":[],"sources":["../../src/schemas/date.ts"],"sourcesContent":["import type { MessageFn, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class DateSchema<Input = Date> extends Schema<Date, Input> {\n protected override get _kind(): string {\n return 'date';\n }\n\n constructor() {\n super((value, ctx) =>\n value instanceof Date && !Number.isNaN(value.getTime())\n ? null\n : fail(ErrorCode.invalid_date, ctx!.messages.date.type()),\n );\n }\n\n min(date: Date, message?: MessageFn<{ min: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed >= date\n ? null\n : fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.date.min, { min: date, value: typed }), {\n min: date,\n });\n });\n }\n\n max(date: Date, message?: MessageFn<{ max: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed <= date\n ? null\n : fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.date.max, { max: date, value: typed }), {\n max: date,\n });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'date' };\n }\n\n static coerce(): DateSchema<unknown> {\n return new DateSchema().preprocess((v: unknown) => {\n if (v instanceof Date) return v;\n\n if (typeof v === 'string' || typeof v === 'number') return new Date(v);\n\n return v;\n });\n }\n}\n"],"mappings":"oFAIA,IAAa,EAAb,MAAa,UAAiC,EAAA,MAAoB,CAChE,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,aAAiB,MAAQ,CAAC,OAAO,MAAM,EAAM,QAAQ,CAAC,EAClD,KACA,EAAA,KAAK,EAAA,UAAU,aAAc,EAAK,SAAS,KAAK,KAAK,CAAC,CAC5D,CACF,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAA,KAAK,EAAA,UAAU,UAAW,EAAA,eAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACxG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAA,KAAK,EAAA,UAAU,QAAS,EAAA,eAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACtG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,OAAO,QAA8B,CACnC,OAAO,IAAI,EAAW,CAAC,CAAC,WAAY,GAC9B,aAAa,KAAa,EAE1B,OAAO,GAAM,UAAY,OAAO,GAAM,SAAiB,IAAI,KAAK,CAAC,EAE9D,CACR,CACH,CACF"}
@@ -1,8 +1,7 @@
1
- import type { CheckContext, MessageFn, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { MessageFn, SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class DateSchema<Input = Date, Mode extends SchemaMode = 'sync'> extends Schema<Date, Input, Mode> {
3
+ export declare class DateSchema<Input = Date> extends Schema<Date, Input> {
4
4
  protected get _kind(): string;
5
- checkAsync(this: DateSchema<Input, 'sync'>, fn: (value: Date, ctx: CheckContext) => Promise<ValidateResult>): DateSchema<Input, 'async'>;
6
5
  constructor();
7
6
  min(date: Date, message?: MessageFn<{
8
7
  min: Date;
@@ -13,7 +12,6 @@ export declare class DateSchema<Input = Date, Mode extends SchemaMode = 'sync'>
13
12
  value: Date;
14
13
  }>): this;
15
14
  protected _toDescriptorImpl(): SchemaDescriptor;
16
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
17
15
  static coerce(): DateSchema<unknown>;
18
16
  }
19
17
  //# sourceMappingURL=date.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/schemas/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnH,OAAO,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAC;AAElE,qBAAa,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,IAAI,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;IACvG,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GAC9D,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;;IAY7B,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;IAYtE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;cAYnD,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAM/D,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC;CASrC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/schemas/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAC;AAElE,qBAAa,UAAU,CAAC,KAAK,GAAG,IAAI,CAAE,SAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/D,cAAuB,KAAK,IAAI,MAAM,CAErC;;IAUD,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;IAYtE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI;cAYnD,iBAAiB,IAAI,gBAAgB;IAIxD,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC;CASrC"}
@@ -1,2 +1,2 @@
1
- import{fail as e,resolveMessage as t}from"../errors.js";import{ErrorCode as n}from"../types.js";import{Schema as r}from"../core.js";var i=class i extends r{get _kind(){return`date`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((t,r)=>t instanceof Date&&!Number.isNaN(t.getTime())?null:e(n.invalid_date,r.messages.date.type()))}min(r,i){return this._addConstraint((a,o)=>{let s=a;return s>=r?null:e(n.too_small,t(i??o.messages.date.min,{min:r,value:s}),{min:r})})}max(r,i){return this._addConstraint((a,o)=>{let s=a;return s<=r?null:e(n.too_big,t(i??o.messages.date.max,{max:r,value:s}),{max:r})})}_toDescriptorImpl(){return{...this._describeBase(),kind:`date`}}_walk(e){return e.date?e.date(this):super._walk(e)}static coerce(){return new i().preprocess(e=>e instanceof Date?e:typeof e==`string`||typeof e==`number`?new Date(e):e)}};export{i as DateSchema};
1
+ import{fail as e,resolveMessage as t}from"../errors.js";import{ErrorCode as n}from"../types.js";import{Schema as r}from"../core.js";var i=class i extends r{get _kind(){return`date`}constructor(){super((t,r)=>t instanceof Date&&!Number.isNaN(t.getTime())?null:e(n.invalid_date,r.messages.date.type()))}min(r,i){return this._addConstraint((a,o)=>{let s=a;return s>=r?null:e(n.too_small,t(i??o.messages.date.min,{min:r,value:s}),{min:r})})}max(r,i){return this._addConstraint((a,o)=>{let s=a;return s<=r?null:e(n.too_big,t(i??o.messages.date.max,{max:r,value:s}),{max:r})})}_toDescriptorImpl(){return{...this._describeBase(),kind:`date`}}static coerce(){return new i().preprocess(e=>e instanceof Date?e:typeof e==`string`||typeof e==`number`?new Date(e):e)}};export{i as DateSchema};
2
2
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","names":[],"sources":["../../src/schemas/date.ts"],"sourcesContent":["import type { CheckContext, MessageFn, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class DateSchema<Input = Date, Mode extends SchemaMode = 'sync'> extends Schema<Date, Input, Mode> {\n protected override get _kind(): string {\n return 'date';\n }\n\n override checkAsync(\n this: DateSchema<Input, 'sync'>,\n fn: (value: Date, ctx: CheckContext) => Promise<ValidateResult>,\n ): DateSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as DateSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n value instanceof Date && !Number.isNaN(value.getTime())\n ? null\n : fail(ErrorCode.invalid_date, ctx!.messages.date.type()),\n );\n }\n\n min(date: Date, message?: MessageFn<{ min: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed >= date\n ? null\n : fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.date.min, { min: date, value: typed }), {\n min: date,\n });\n });\n }\n\n max(date: Date, message?: MessageFn<{ max: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed <= date\n ? null\n : fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.date.max, { max: date, value: typed }), {\n max: date,\n });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'date' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.date) return visitor.date(this);\n\n return super._walk(visitor);\n }\n\n static coerce(): DateSchema<unknown> {\n return new DateSchema().preprocess((v: unknown) => {\n if (v instanceof Date) return v;\n\n if (typeof v === 'string' || typeof v === 'number') return new Date(v);\n\n return v;\n });\n }\n}\n"],"mappings":"oIAIA,IAAa,EAAb,MAAa,UAAmE,CAA0B,CACxG,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EAC4B,CAC5B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,aAAiB,MAAQ,CAAC,OAAO,MAAM,EAAM,QAAQ,CAAC,EAClD,KACA,EAAK,EAAU,aAAc,EAAK,SAAS,KAAK,KAAK,CAAC,CAC5D,CACF,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACxG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACtG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,OAAO,QAA8B,CACnC,OAAO,IAAI,EAAW,CAAC,CAAC,WAAY,GAC9B,aAAa,KAAa,EAE1B,OAAO,GAAM,UAAY,OAAO,GAAM,SAAiB,IAAI,KAAK,CAAC,EAE9D,CACR,CACH,CACF"}
1
+ {"version":3,"file":"date.js","names":[],"sources":["../../src/schemas/date.ts"],"sourcesContent":["import type { MessageFn, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\nexport class DateSchema<Input = Date> extends Schema<Date, Input> {\n protected override get _kind(): string {\n return 'date';\n }\n\n constructor() {\n super((value, ctx) =>\n value instanceof Date && !Number.isNaN(value.getTime())\n ? null\n : fail(ErrorCode.invalid_date, ctx!.messages.date.type()),\n );\n }\n\n min(date: Date, message?: MessageFn<{ min: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed >= date\n ? null\n : fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.date.min, { min: date, value: typed }), {\n min: date,\n });\n });\n }\n\n max(date: Date, message?: MessageFn<{ max: Date; value: Date }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Date;\n\n return typed <= date\n ? null\n : fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.date.max, { max: date, value: typed }), {\n max: date,\n });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'date' };\n }\n\n static coerce(): DateSchema<unknown> {\n return new DateSchema().preprocess((v: unknown) => {\n if (v instanceof Date) return v;\n\n if (typeof v === 'string' || typeof v === 'number') return new Date(v);\n\n return v;\n });\n }\n}\n"],"mappings":"oIAIA,IAAa,EAAb,MAAa,UAAiC,CAAoB,CAChE,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,aAAiB,MAAQ,CAAC,OAAO,MAAM,EAAM,QAAQ,CAAC,EAClD,KACA,EAAK,EAAU,aAAc,EAAK,SAAS,KAAK,KAAK,CAAC,CAC5D,CACF,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAK,EAAU,UAAW,EAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACxG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,IAAI,EAAY,EAAuD,CACrE,OAAO,KAAK,gBAAgB,EAAO,IAAQ,CACzC,IAAM,EAAQ,EAEd,OAAO,GAAS,EACZ,KACA,EAAK,EAAU,QAAS,EAAe,GAAW,EAAK,SAAS,KAAK,IAAK,CAAE,IAAK,EAAM,MAAO,CAAM,CAAC,EAAG,CACtG,IAAK,CACP,CAAC,CACP,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,OAAO,QAA8B,CACnC,OAAO,IAAI,EAAW,CAAC,CAAC,WAAY,GAC9B,aAAa,KAAa,EAE1B,OAAO,GAAM,UAAY,OAAO,GAAM,SAAiB,IAAI,KAAK,CAAC,EAE9D,CACR,CACH,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../core.cjs");function n(t){let n=new Set(t);return(r,i)=>n.has(r)?null:[{code:e.ErrorCode.invalid_enum,message:i.messages.enum.invalid({values:t}),params:{values:t},path:[]}]}var r=class extends t.Schema{values;get _kind(){return`enum`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(n(e)),this.values=e}_toDescriptorImpl(){return{...this._describeBase(),kind:`enum`,values:this.values}}_walk(e){return e.enum?e.enum(this):super._walk(e)}};exports.EnumSchema=r;
1
+ const e=require("../types.cjs"),t=require("../core.cjs");function n(t){let n=new Set(t);return(r,i)=>n.has(r)?null:[{code:e.ErrorCode.invalid_enum,message:i.messages.enum.invalid({values:t}),params:{values:t},path:[]}]}var r=class extends t.Schema{values;get _kind(){return`enum`}constructor(e){super(n(e)),this.values=e}_toDescriptorImpl(){return{...this._describeBase(),kind:`enum`,values:this.values}}};exports.EnumSchema=r;
2
2
  //# sourceMappingURL=enum.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.cjs","names":[],"sources":["../../src/schemas/enum.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateFn, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\ntype EnumType<T extends EnumValues> = T[number];\n\nfunction buildEnumValidator(values: readonly unknown[]): ValidateFn {\n const set = new Set<unknown>(values);\n\n return (value, ctx) =>\n set.has(value)\n ? null\n : [\n {\n code: ErrorCode.invalid_enum,\n message: ctx!.messages.enum.invalid({ values }),\n params: { values },\n path: [],\n },\n ];\n}\n\nexport class EnumSchema<T extends EnumValues, Mode extends SchemaMode = 'sync'> extends Schema<\n EnumType<T>,\n EnumType<T>,\n Mode\n> {\n readonly values: T;\n\n protected override get _kind(): string {\n return 'enum';\n }\n\n override checkAsync(\n this: EnumSchema<T, 'sync'>,\n fn: (value: EnumType<T>, ctx: CheckContext) => Promise<ValidateResult>,\n ): EnumSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as EnumSchema<T, 'async'>;\n }\n\n constructor(values: T) {\n super(buildEnumValidator(values));\n this.values = values;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.enum) return visitor.enum(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"yDAOA,SAAS,EAAmB,EAAwC,CAClE,IAAM,EAAM,IAAI,IAAa,CAAM,EAEnC,OAAQ,EAAO,IACb,EAAI,IAAI,CAAK,EACT,KACA,CACE,CACE,KAAM,EAAA,UAAU,aAChB,QAAS,EAAK,SAAS,KAAK,QAAQ,CAAE,QAAO,CAAC,EAC9C,OAAQ,CAAE,QAAO,EACjB,KAAM,CAAC,CACT,CACF,CACR,CAEA,IAAa,EAAb,cAAwF,EAAA,MAItF,CACA,OAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EACwB,CACxB,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAW,CACrB,MAAM,EAAmB,CAAM,CAAC,EAChC,KAAK,OAAS,CAChB,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"enum.cjs","names":[],"sources":["../../src/schemas/enum.ts"],"sourcesContent":["import type { SchemaDescriptor, ValidateFn } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\ntype EnumType<T extends EnumValues> = T[number];\n\nfunction buildEnumValidator(values: readonly unknown[]): ValidateFn {\n const set = new Set<unknown>(values);\n\n return (value, ctx) =>\n set.has(value)\n ? null\n : [\n {\n code: ErrorCode.invalid_enum,\n message: ctx!.messages.enum.invalid({ values }),\n params: { values },\n path: [],\n },\n ];\n}\n\nexport class EnumSchema<T extends EnumValues> extends Schema<EnumType<T>, EnumType<T>> {\n readonly values: T;\n\n protected override get _kind(): string {\n return 'enum';\n }\n\n constructor(values: T) {\n super(buildEnumValidator(values));\n this.values = values;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n}\n"],"mappings":"yDAOA,SAAS,EAAmB,EAAwC,CAClE,IAAM,EAAM,IAAI,IAAa,CAAM,EAEnC,OAAQ,EAAO,IACb,EAAI,IAAI,CAAK,EACT,KACA,CACE,CACE,KAAM,EAAA,UAAU,aAChB,QAAS,EAAK,SAAS,KAAK,QAAQ,CAAE,QAAO,CAAC,EAC9C,OAAQ,CAAE,QAAO,EACjB,KAAM,CAAC,CACT,CACF,CACR,CAEA,IAAa,EAAb,cAAsD,EAAA,MAAiC,CACrF,OAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAW,CACrB,MAAM,EAAmB,CAAM,CAAC,EAChC,KAAK,OAAS,CAChB,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CACF"}
@@ -1,14 +1,12 @@
1
- import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
3
  export type EnumValues = readonly [string | number, ...(string | number)[]];
4
4
  type EnumType<T extends EnumValues> = T[number];
5
- export declare class EnumSchema<T extends EnumValues, Mode extends SchemaMode = 'sync'> extends Schema<EnumType<T>, EnumType<T>, Mode> {
5
+ export declare class EnumSchema<T extends EnumValues> extends Schema<EnumType<T>, EnumType<T>> {
6
6
  readonly values: T;
7
7
  protected get _kind(): string;
8
- checkAsync(this: EnumSchema<T, 'sync'>, fn: (value: EnumType<T>, ctx: CheckContext) => Promise<ValidateResult>): EnumSchema<T, 'async'>;
9
8
  constructor(values: T);
10
9
  protected _toDescriptorImpl(): SchemaDescriptor;
11
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
12
10
  }
13
11
  export {};
14
12
  //# sourceMappingURL=enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/schemas/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AAEpH,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5E,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAkBhD,qBAAa,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAC5F,QAAQ,CAAC,CAAC,CAAC,EACX,QAAQ,CAAC,CAAC,CAAC,EACX,IAAI,CACL;IACC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC3B,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GACrE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;gBAIb,MAAM,EAAE,CAAC;cAKF,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAKhE"}
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/schemas/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,SAAS,CAAC;AAE5D,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5E,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAkBhD,qBAAa,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,MAAM,EAAE,CAAC;cAKF,iBAAiB,IAAI,gBAAgB;CAGzD"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";function n(t){let n=new Set(t);return(r,i)=>n.has(r)?null:[{code:e.invalid_enum,message:i.messages.enum.invalid({values:t}),params:{values:t},path:[]}]}var r=class extends t{values;get _kind(){return`enum`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(n(e)),this.values=e}_toDescriptorImpl(){return{...this._describeBase(),kind:`enum`,values:this.values}}_walk(e){return e.enum?e.enum(this):super._walk(e)}};export{r as EnumSchema};
1
+ import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";function n(t){let n=new Set(t);return(r,i)=>n.has(r)?null:[{code:e.invalid_enum,message:i.messages.enum.invalid({values:t}),params:{values:t},path:[]}]}var r=class extends t{values;get _kind(){return`enum`}constructor(e){super(n(e)),this.values=e}_toDescriptorImpl(){return{...this._describeBase(),kind:`enum`,values:this.values}}};export{r as EnumSchema};
2
2
  //# sourceMappingURL=enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","names":[],"sources":["../../src/schemas/enum.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateFn, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\ntype EnumType<T extends EnumValues> = T[number];\n\nfunction buildEnumValidator(values: readonly unknown[]): ValidateFn {\n const set = new Set<unknown>(values);\n\n return (value, ctx) =>\n set.has(value)\n ? null\n : [\n {\n code: ErrorCode.invalid_enum,\n message: ctx!.messages.enum.invalid({ values }),\n params: { values },\n path: [],\n },\n ];\n}\n\nexport class EnumSchema<T extends EnumValues, Mode extends SchemaMode = 'sync'> extends Schema<\n EnumType<T>,\n EnumType<T>,\n Mode\n> {\n readonly values: T;\n\n protected override get _kind(): string {\n return 'enum';\n }\n\n override checkAsync(\n this: EnumSchema<T, 'sync'>,\n fn: (value: EnumType<T>, ctx: CheckContext) => Promise<ValidateResult>,\n ): EnumSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as EnumSchema<T, 'async'>;\n }\n\n constructor(values: T) {\n super(buildEnumValidator(values));\n this.values = values;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.enum) return visitor.enum(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"4EAOA,SAAS,EAAmB,EAAwC,CAClE,IAAM,EAAM,IAAI,IAAa,CAAM,EAEnC,OAAQ,EAAO,IACb,EAAI,IAAI,CAAK,EACT,KACA,CACE,CACE,KAAM,EAAU,aAChB,QAAS,EAAK,SAAS,KAAK,QAAQ,CAAE,QAAO,CAAC,EAC9C,OAAQ,CAAE,QAAO,EACjB,KAAM,CAAC,CACT,CACF,CACR,CAEA,IAAa,EAAb,cAAwF,CAItF,CACA,OAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EACwB,CACxB,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAW,CACrB,MAAM,EAAmB,CAAM,CAAC,EAChC,KAAK,OAAS,CAChB,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"enum.js","names":[],"sources":["../../src/schemas/enum.ts"],"sourcesContent":["import type { SchemaDescriptor, ValidateFn } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\ntype EnumType<T extends EnumValues> = T[number];\n\nfunction buildEnumValidator(values: readonly unknown[]): ValidateFn {\n const set = new Set<unknown>(values);\n\n return (value, ctx) =>\n set.has(value)\n ? null\n : [\n {\n code: ErrorCode.invalid_enum,\n message: ctx!.messages.enum.invalid({ values }),\n params: { values },\n path: [],\n },\n ];\n}\n\nexport class EnumSchema<T extends EnumValues> extends Schema<EnumType<T>, EnumType<T>> {\n readonly values: T;\n\n protected override get _kind(): string {\n return 'enum';\n }\n\n constructor(values: T) {\n super(buildEnumValidator(values));\n this.values = values;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n}\n"],"mappings":"4EAOA,SAAS,EAAmB,EAAwC,CAClE,IAAM,EAAM,IAAI,IAAa,CAAM,EAEnC,OAAQ,EAAO,IACb,EAAI,IAAI,CAAK,EACT,KACA,CACE,CACE,KAAM,EAAU,aAChB,QAAS,EAAK,SAAS,KAAK,QAAQ,CAAE,QAAO,CAAC,EAC9C,OAAQ,CAAE,QAAO,EACjB,KAAM,CAAC,CACT,CACF,CACR,CAEA,IAAa,EAAb,cAAsD,CAAiC,CACrF,OAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAW,CACrB,MAAM,EAAmB,CAAM,CAAC,EAChC,KAAK,OAAS,CAChB,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{cls;get _kind(){return`instanceof`}checkAsync(e){return this._addCheck(e,!0)}constructor(t){super((n,r)=>n instanceof t?null:[{code:e.ErrorCode.invalid_type,message:r.messages.instanceof.type({className:t.name}),path:[]}]),this.cls=t}_toDescriptorImpl(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}_walk(e){return e.instanceof?e.instanceof(this):super._walk(e)}};exports.InstanceOfSchema=n;
1
+ const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{cls;get _kind(){return`instanceof`}constructor(t){super((n,r)=>n instanceof t?null:[{code:e.ErrorCode.invalid_type,message:r.messages.instanceof.type({className:t.name}),path:[]}]),this.cls=t}_toDescriptorImpl(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}};exports.InstanceOfSchema=n;
2
2
  //# sourceMappingURL=instanceof.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"instanceof.cjs","names":[],"sources":["../../src/schemas/instanceof.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class InstanceOfSchema<T, Mode extends SchemaMode = 'sync'> extends Schema<T, T, Mode> {\n readonly cls: new (\n ...args: never[]\n ) => T;\n\n protected override get _kind(): string {\n return 'instanceof';\n }\n\n override checkAsync(\n this: InstanceOfSchema<T, 'sync'>,\n fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>,\n ): InstanceOfSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as InstanceOfSchema<T, 'async'>;\n }\n\n constructor(cls: new (...args: never[]) => T) {\n super((value, ctx) =>\n value instanceof cls\n ? null\n : [\n {\n code: ErrorCode.invalid_type,\n message: ctx!.messages.instanceof.type({ className: cls.name }),\n path: [],\n },\n ],\n );\n this.cls = cls;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.instanceof) return visitor.instanceof(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAA2E,EAAA,MAAmB,CAC5F,IAIA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,WAEE,EAC8B,CAC9B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAkC,CAC5C,OAAO,EAAO,IACZ,aAAiB,EACb,KACA,CACE,CACE,KAAM,EAAA,UAAU,aAChB,QAAS,EAAK,SAAS,WAAW,KAAK,CAAE,UAAW,EAAI,IAAK,CAAC,EAC9D,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,IAAM,CACb,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,WAAmB,EAAQ,WAAW,IAAI,EAE/C,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"instanceof.cjs","names":[],"sources":["../../src/schemas/instanceof.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class InstanceOfSchema<T> extends Schema<T, T> {\n readonly cls: new (\n ...args: never[]\n ) => T;\n\n protected override get _kind(): string {\n return 'instanceof';\n }\n\n constructor(cls: new (...args: never[]) => T) {\n super((value, ctx) =>\n value instanceof cls\n ? null\n : [\n {\n code: ErrorCode.invalid_type,\n message: ctx!.messages.instanceof.type({ className: cls.name }),\n path: [],\n },\n ],\n );\n this.cls = cls;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAAyC,EAAA,MAAa,CACpD,IAIA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,YAAY,EAAkC,CAC5C,OAAO,EAAO,IACZ,aAAiB,EACb,KACA,CACE,CACE,KAAM,EAAA,UAAU,aAChB,QAAS,EAAK,SAAS,WAAW,KAAK,CAAE,UAAW,EAAI,IAAK,CAAC,EAC9D,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,IAAM,CACb,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CACF"}
@@ -1,11 +1,9 @@
1
- import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class InstanceOfSchema<T, Mode extends SchemaMode = 'sync'> extends Schema<T, T, Mode> {
3
+ export declare class InstanceOfSchema<T> extends Schema<T, T> {
4
4
  readonly cls: new (...args: never[]) => T;
5
5
  protected get _kind(): string;
6
- checkAsync(this: InstanceOfSchema<T, 'sync'>, fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>): InstanceOfSchema<T, 'async'>;
7
6
  constructor(cls: new (...args: never[]) => T);
8
7
  protected _toDescriptorImpl(): SchemaDescriptor;
9
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
10
8
  }
11
9
  //# sourceMappingURL=instanceof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instanceof.d.ts","sourceRoot":"","sources":["../../src/schemas/instanceof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExG,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,gBAAgB,CAAC,CAAC,EAAE,IAAI,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC3F,QAAQ,CAAC,GAAG,EAAE,KACZ,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,CAAC,CAAC;IAEP,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,EACjC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GAC3D,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC;gBAInB,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;cAezB,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAKhE"}
1
+ {"version":3,"file":"instanceof.d.ts","sourceRoot":"","sources":["../../src/schemas/instanceof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,KACZ,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,CAAC,CAAC;IAEP,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;cAezB,iBAAiB,IAAI,gBAAgB;CAGzD"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{cls;get _kind(){return`instanceof`}checkAsync(e){return this._addCheck(e,!0)}constructor(t){super((n,r)=>n instanceof t?null:[{code:e.invalid_type,message:r.messages.instanceof.type({className:t.name}),path:[]}]),this.cls=t}_toDescriptorImpl(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}_walk(e){return e.instanceof?e.instanceof(this):super._walk(e)}};export{n as InstanceOfSchema};
1
+ import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{cls;get _kind(){return`instanceof`}constructor(t){super((n,r)=>n instanceof t?null:[{code:e.invalid_type,message:r.messages.instanceof.type({className:t.name}),path:[]}]),this.cls=t}_toDescriptorImpl(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}};export{n as InstanceOfSchema};
2
2
  //# sourceMappingURL=instanceof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instanceof.js","names":[],"sources":["../../src/schemas/instanceof.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class InstanceOfSchema<T, Mode extends SchemaMode = 'sync'> extends Schema<T, T, Mode> {\n readonly cls: new (\n ...args: never[]\n ) => T;\n\n protected override get _kind(): string {\n return 'instanceof';\n }\n\n override checkAsync(\n this: InstanceOfSchema<T, 'sync'>,\n fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>,\n ): InstanceOfSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as InstanceOfSchema<T, 'async'>;\n }\n\n constructor(cls: new (...args: never[]) => T) {\n super((value, ctx) =>\n value instanceof cls\n ? null\n : [\n {\n code: ErrorCode.invalid_type,\n message: ctx!.messages.instanceof.type({ className: cls.name }),\n path: [],\n },\n ],\n );\n this.cls = cls;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.instanceof) return visitor.instanceof(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,cAA2E,CAAmB,CAC5F,IAIA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,WAEE,EAC8B,CAC9B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAkC,CAC5C,OAAO,EAAO,IACZ,aAAiB,EACb,KACA,CACE,CACE,KAAM,EAAU,aAChB,QAAS,EAAK,SAAS,WAAW,KAAK,CAAE,UAAW,EAAI,IAAK,CAAC,EAC9D,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,IAAM,CACb,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,WAAmB,EAAQ,WAAW,IAAI,EAE/C,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"instanceof.js","names":[],"sources":["../../src/schemas/instanceof.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class InstanceOfSchema<T> extends Schema<T, T> {\n readonly cls: new (\n ...args: never[]\n ) => T;\n\n protected override get _kind(): string {\n return 'instanceof';\n }\n\n constructor(cls: new (...args: never[]) => T) {\n super((value, ctx) =>\n value instanceof cls\n ? null\n : [\n {\n code: ErrorCode.invalid_type,\n message: ctx!.messages.instanceof.type({ className: cls.name }),\n path: [],\n },\n ],\n );\n this.cls = cls;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,cAAyC,CAAa,CACpD,IAIA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,YAAY,EAAkC,CAC5C,OAAO,EAAO,IACZ,aAAiB,EACb,KACA,CACE,CACE,KAAM,EAAU,aAChB,QAAS,EAAK,SAAS,WAAW,KAAK,CAAE,UAAW,EAAI,IAAK,CAAC,EAC9D,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,IAAM,CACb,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../errors.cjs"),t=require("../safe-object.cjs"),n=require("../core.cjs");let r=require("@vielzeug/arsenal");function i(e,n){if((0,r.isPlainObject)(e)&&(0,r.isPlainObject)(n)){let r=t.cloneRecord(e);for(let[a,o]of Object.entries(n))t.defineOwnProperty(r,a,i(e[a],o));return r}return n}var a=class extends n.Schema{schemas;get _kind(){return`intersect`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(),this.schemas=Object.freeze([...e])}_parse(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let a=this.schemas[r]._parseFullSync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=i(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}async parseAsync(t,r){let a=r??n._makeCtx();return this._withCatchAsync(async()=>{let n=this._prepareInput(t);if(n.skip)return n.value;let r={hasOutput:!1,issues:[],output:n.value};for(let e=0;e<this.schemas.length;e++){let t=await this.schemas[e]._parseFullAsync(n.value,a);t.issues.length>0?r.issues.push(...t.issues):r.hasOutput?r.output=i(r.output,t.data):(r.hasOutput=!0,r.output=t.data)}if(r.issues.length>0)throw new e.SpellValidationError(r.issues);let o=await this._runValidatorsAsync(r.output,a);if(o.length)throw new e.SpellValidationError(o);return this._runPostprocessors(r.output)})}_toDescriptorImpl(){return{...this._describeBase(),branches:this.schemas.map(e=>e.definition()),kind:`intersect`}}_walk(e){let t=this.schemas.map(t=>t.walk(e));return e.intersect?e.intersect(this,t):super._walk(e)}};exports.IntersectSchema=a;
1
+ const e=require("../safe-object.cjs"),t=require("../core.cjs");let n=require("@vielzeug/arsenal");function r(t,i){if((0,n.isPlainObject)(t)&&(0,n.isPlainObject)(i)){let n=e.cloneRecord(t);for(let[a,o]of Object.entries(i))e.defineOwnProperty(n,a,r(t[a],o));return n}return i}var i=class extends t.Schema{schemas;get _kind(){return`intersect`}constructor(e){super(),this.schemas=Object.freeze([...e])}_parse(e,t){let n={hasOutput:!1,issues:[],output:e};for(let i=0;i<this.schemas.length;i++){let a=this.schemas[i]._parseFullSync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=r(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}async _parseAsync(e,t){let n={hasOutput:!1,issues:[],output:e};for(let i=0;i<this.schemas.length;i++){let a=await this.schemas[i]._parseFullAsync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=r(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}_toDescriptorImpl(){return{...this._describeBase(),branches:this.schemas.map(e=>e.definition()),kind:`intersect`}}};exports.IntersectSchema=i;
2
2
  //# sourceMappingURL=intersect.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersect.cjs","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type {\n AnySchema,\n CheckContext,\n InferInput,\n InferOutput,\n InferSchemaMode,\n Issue,\n MergeSchemaModes,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n SchemaMode,\n SchemaWalker,\n ValidateResult,\n} from '../core';\n\nimport { _makeCtx, Schema, SpellValidationError } from '../core';\nimport { cloneRecord, defineOwnProperty } from '../safe-object';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Recursively merges `source` into `target`.\n * Plain objects are merged key-by-key; all other values take the `source` value.\n */\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (isPlainObject(target) && isPlainObject(source)) {\n const result = cloneRecord(target);\n\n for (const [key, val] of Object.entries(source)) {\n defineOwnProperty(result, key, deepMerge(target[key], val));\n }\n\n return result;\n }\n\n return source;\n}\n\n/** All schemas must pass — intersection semantics. */\nexport class IntersectSchema<\n T extends readonly AnySchema[],\n Mode extends SchemaMode = MergeSchemaModes<InferSchemaMode<T[number]>>,\n> extends Schema<UnionToIntersection<InferOutput<T[number]>>, UnionToIntersection<InferInput<T[number]>>, Mode> {\n readonly schemas: T;\n\n protected override get _kind(): string {\n return 'intersect';\n }\n\n override checkAsync(\n this: IntersectSchema<T, 'sync'>,\n fn: (value: UnionToIntersection<InferOutput<T[number]>>, ctx: CheckContext) => Promise<ValidateResult>,\n ): IntersectSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as IntersectSchema<T, 'async'>;\n }\n\n constructor(schemas: T) {\n super();\n this.schemas = Object.freeze([...schemas]) as T;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = this.schemas[i]._parseFullSync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<UnionToIntersection<InferOutput<T[number]>>> {\n const c = ctx ?? _makeCtx();\n\n return this._withCatchAsync(async () => {\n const prepared = this._prepareInput(value);\n\n if (prepared.skip) return prepared.value as UnionToIntersection<InferOutput<T[number]>>;\n\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: prepared.value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = await this.schemas[i]._parseFullAsync(prepared.value, c);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n if (state.issues.length > 0) throw new SpellValidationError(state.issues);\n\n const validationIssues = await this._runValidatorsAsync(state.output, c);\n\n if (validationIssues.length) throw new SpellValidationError(validationIssues);\n\n return this._runPostprocessors(state.output) as UnionToIntersection<InferOutput<T[number]>>;\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), branches: this.schemas.map((s) => s.definition()), kind: 'intersect' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n const branches = this.schemas.map((s) => s.walk(visitor));\n\n if (visitor.intersect) return visitor.intersect(this, branches);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"6HA2BA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,IAAA,EAAI,EAAA,cAAA,CAAc,CAAM,IAAA,EAAK,EAAA,cAAA,CAAc,CAAM,EAAG,CAClD,IAAM,EAAS,EAAA,YAAY,CAAM,EAEjC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAM,EAC5C,EAAA,kBAAkB,EAAQ,EAAK,EAAU,EAAO,GAAM,CAAG,CAAC,EAG5D,OAAO,CACT,CAEA,OAAO,CACT,CAGA,IAAa,EAAb,cAGU,EAAA,MAAsG,CAC9G,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,WAEE,EAC6B,CAC7B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,OAAO,OAAO,CAAC,GAAG,CAAO,CAAC,CAC3C,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,KAAK,QAAQ,EAAE,CAAC,eAAe,EAAO,CAAG,EAEpD,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,MAAe,WAAW,EAAgB,EAA0E,CAClH,IAAM,EAAI,GAAO,EAAA,SAAS,EAE1B,OAAO,KAAK,gBAAgB,SAAY,CACtC,IAAM,EAAW,KAAK,cAAc,CAAK,EAEzC,GAAI,EAAS,KAAM,OAAO,EAAS,MAEnC,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,EAAS,KACnB,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,MAAM,KAAK,QAAQ,EAAE,CAAC,gBAAgB,EAAS,MAAO,CAAC,EAElE,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,GAAI,EAAM,OAAO,OAAS,EAAG,MAAM,IAAI,EAAA,qBAAqB,EAAM,MAAM,EAExE,IAAM,EAAmB,MAAM,KAAK,oBAAoB,EAAM,OAAQ,CAAC,EAEvE,GAAI,EAAiB,OAAQ,MAAM,IAAI,EAAA,qBAAqB,CAAgB,EAE5E,OAAO,KAAK,mBAAmB,EAAM,MAAM,CAC7C,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,SAAU,KAAK,QAAQ,IAAK,GAAM,EAAE,WAAW,CAAC,EAAG,KAAM,WAAY,CACzG,CAEA,MAA4B,EAAoC,CAC9D,IAAM,EAAW,KAAK,QAAQ,IAAK,GAAM,EAAE,KAAK,CAAO,CAAC,EAIxD,OAFI,EAAQ,UAAkB,EAAQ,UAAU,KAAM,CAAQ,EAEvD,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"intersect.cjs","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type { AnySchema, InferInput, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema } from '../core';\nimport { cloneRecord, defineOwnProperty } from '../safe-object';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Recursively merges `source` into `target`.\n * Plain objects are merged key-by-key; all other values take the `source` value.\n */\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (isPlainObject(target) && isPlainObject(source)) {\n const result = cloneRecord(target);\n\n for (const [key, val] of Object.entries(source)) {\n defineOwnProperty(result, key, deepMerge(target[key], val));\n }\n\n return result;\n }\n\n return source;\n}\n\n/** All schemas must pass — intersection semantics. */\nexport class IntersectSchema<T extends readonly AnySchema[]> extends Schema<\n UnionToIntersection<InferOutput<T[number]>>,\n UnionToIntersection<InferInput<T[number]>>\n> {\n readonly schemas: T;\n\n protected override get _kind(): string {\n return 'intersect';\n }\n\n constructor(schemas: T) {\n super();\n this.schemas = Object.freeze([...schemas]) as T;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = this.schemas[i]._parseFullSync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = await this.schemas[i]._parseFullAsync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), branches: this.schemas.map((s) => s.definition()), kind: 'intersect' };\n }\n}\n"],"mappings":"kGAaA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,IAAA,EAAI,EAAA,cAAA,CAAc,CAAM,IAAA,EAAK,EAAA,cAAA,CAAc,CAAM,EAAG,CAClD,IAAM,EAAS,EAAA,YAAY,CAAM,EAEjC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAM,EAC5C,EAAA,kBAAkB,EAAQ,EAAK,EAAU,EAAO,GAAM,CAAG,CAAC,EAG5D,OAAO,CACT,CAEA,OAAO,CACT,CAGA,IAAa,EAAb,cAAqE,EAAA,MAGnE,CACA,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,OAAO,OAAO,CAAC,GAAG,CAAO,CAAC,CAC3C,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,KAAK,QAAQ,EAAE,CAAC,eAAe,EAAO,CAAG,EAEpD,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,MAAM,KAAK,QAAQ,EAAE,CAAC,gBAAgB,EAAO,CAAG,EAE3D,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,SAAU,KAAK,QAAQ,IAAK,GAAM,EAAE,WAAW,CAAC,EAAG,KAAM,WAAY,CACzG,CACF"}
@@ -1,16 +1,14 @@
1
- import type { AnySchema, CheckContext, InferInput, InferOutput, InferSchemaMode, MergeSchemaModes, ParseContext, ParseValue, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { AnySchema, InferInput, InferOutput, ParseContext, ParseValue, SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
3
  type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
4
4
  /** All schemas must pass — intersection semantics. */
5
- export declare class IntersectSchema<T extends readonly AnySchema[], Mode extends SchemaMode = MergeSchemaModes<InferSchemaMode<T[number]>>> extends Schema<UnionToIntersection<InferOutput<T[number]>>, UnionToIntersection<InferInput<T[number]>>, Mode> {
5
+ export declare class IntersectSchema<T extends readonly AnySchema[]> extends Schema<UnionToIntersection<InferOutput<T[number]>>, UnionToIntersection<InferInput<T[number]>>> {
6
6
  readonly schemas: T;
7
7
  protected get _kind(): string;
8
- checkAsync(this: IntersectSchema<T, 'sync'>, fn: (value: UnionToIntersection<InferOutput<T[number]>>, ctx: CheckContext) => Promise<ValidateResult>): IntersectSchema<T, 'async'>;
9
8
  constructor(schemas: T);
10
9
  protected _parse(value: unknown, ctx: ParseContext): ParseValue;
11
- parseAsync(value: unknown, ctx?: ParseContext): Promise<UnionToIntersection<InferOutput<T[number]>>>;
10
+ protected _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue>;
12
11
  protected _toDescriptorImpl(): SchemaDescriptor;
13
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
14
12
  }
15
13
  export {};
16
14
  //# sourceMappingURL=intersect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersect.d.ts","sourceRoot":"","sources":["../../src/schemas/intersect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EAEf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAY,MAAM,EAAwB,MAAM,SAAS,CAAC;AAGjE,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAoBhH,sDAAsD;AACtD,qBAAa,eAAe,CAC1B,CAAC,SAAS,SAAS,SAAS,EAAE,EAC9B,IAAI,SAAS,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CACtE,SAAQ,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7G,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpB,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,EAChC,EAAE,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GACrG,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC;gBAIlB,OAAO,EAAE,CAAC;cAKH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;IAuBzD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cAqChG,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAOhE"}
1
+ {"version":3,"file":"intersect.d.ts","sourceRoot":"","sources":["../../src/schemas/intersect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAS,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAoBhH,sDAAsD;AACtD,qBAAa,eAAe,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,CAAE,SAAQ,MAAM,CACzE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC3C,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3C;IACC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpB,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,OAAO,EAAE,CAAC;cAKH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;cAuB/C,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;cAuBzE,iBAAiB,IAAI,gBAAgB;CAGzD"}
@@ -1,2 +1,2 @@
1
- import{SpellValidationError as e}from"../errors.js";import{cloneRecord as t,defineOwnProperty as n}from"../safe-object.js";import{Schema as r,_makeCtx as i}from"../core.js";import{isPlainObject as a}from"@vielzeug/arsenal";function o(e,r){if(a(e)&&a(r)){let i=t(e);for(let[t,a]of Object.entries(r))n(i,t,o(e[t],a));return i}return r}var s=class extends r{schemas;get _kind(){return`intersect`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(),this.schemas=Object.freeze([...e])}_parse(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let i=this.schemas[r]._parseFullSync(e,t);i.issues.length>0?n.issues.push(...i.issues):n.hasOutput?n.output=o(n.output,i.data):(n.hasOutput=!0,n.output=i.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}async parseAsync(t,n){let r=n??i();return this._withCatchAsync(async()=>{let n=this._prepareInput(t);if(n.skip)return n.value;let i={hasOutput:!1,issues:[],output:n.value};for(let e=0;e<this.schemas.length;e++){let t=await this.schemas[e]._parseFullAsync(n.value,r);t.issues.length>0?i.issues.push(...t.issues):i.hasOutput?i.output=o(i.output,t.data):(i.hasOutput=!0,i.output=t.data)}if(i.issues.length>0)throw new e(i.issues);let a=await this._runValidatorsAsync(i.output,r);if(a.length)throw new e(a);return this._runPostprocessors(i.output)})}_toDescriptorImpl(){return{...this._describeBase(),branches:this.schemas.map(e=>e.definition()),kind:`intersect`}}_walk(e){let t=this.schemas.map(t=>t.walk(e));return e.intersect?e.intersect(this,t):super._walk(e)}};export{s as IntersectSchema};
1
+ import{cloneRecord as e,defineOwnProperty as t}from"../safe-object.js";import{Schema as n}from"../core.js";import{isPlainObject as r}from"@vielzeug/arsenal";function i(n,a){if(r(n)&&r(a)){let r=e(n);for(let[e,o]of Object.entries(a))t(r,e,i(n[e],o));return r}return a}var a=class extends n{schemas;get _kind(){return`intersect`}constructor(e){super(),this.schemas=Object.freeze([...e])}_parse(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let a=this.schemas[r]._parseFullSync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=i(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}async _parseAsync(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let a=await this.schemas[r]._parseFullAsync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=i(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}_toDescriptorImpl(){return{...this._describeBase(),branches:this.schemas.map(e=>e.definition()),kind:`intersect`}}};export{a as IntersectSchema};
2
2
  //# sourceMappingURL=intersect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersect.js","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type {\n AnySchema,\n CheckContext,\n InferInput,\n InferOutput,\n InferSchemaMode,\n Issue,\n MergeSchemaModes,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n SchemaMode,\n SchemaWalker,\n ValidateResult,\n} from '../core';\n\nimport { _makeCtx, Schema, SpellValidationError } from '../core';\nimport { cloneRecord, defineOwnProperty } from '../safe-object';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Recursively merges `source` into `target`.\n * Plain objects are merged key-by-key; all other values take the `source` value.\n */\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (isPlainObject(target) && isPlainObject(source)) {\n const result = cloneRecord(target);\n\n for (const [key, val] of Object.entries(source)) {\n defineOwnProperty(result, key, deepMerge(target[key], val));\n }\n\n return result;\n }\n\n return source;\n}\n\n/** All schemas must pass — intersection semantics. */\nexport class IntersectSchema<\n T extends readonly AnySchema[],\n Mode extends SchemaMode = MergeSchemaModes<InferSchemaMode<T[number]>>,\n> extends Schema<UnionToIntersection<InferOutput<T[number]>>, UnionToIntersection<InferInput<T[number]>>, Mode> {\n readonly schemas: T;\n\n protected override get _kind(): string {\n return 'intersect';\n }\n\n override checkAsync(\n this: IntersectSchema<T, 'sync'>,\n fn: (value: UnionToIntersection<InferOutput<T[number]>>, ctx: CheckContext) => Promise<ValidateResult>,\n ): IntersectSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as IntersectSchema<T, 'async'>;\n }\n\n constructor(schemas: T) {\n super();\n this.schemas = Object.freeze([...schemas]) as T;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = this.schemas[i]._parseFullSync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<UnionToIntersection<InferOutput<T[number]>>> {\n const c = ctx ?? _makeCtx();\n\n return this._withCatchAsync(async () => {\n const prepared = this._prepareInput(value);\n\n if (prepared.skip) return prepared.value as UnionToIntersection<InferOutput<T[number]>>;\n\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: prepared.value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = await this.schemas[i]._parseFullAsync(prepared.value, c);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n if (state.issues.length > 0) throw new SpellValidationError(state.issues);\n\n const validationIssues = await this._runValidatorsAsync(state.output, c);\n\n if (validationIssues.length) throw new SpellValidationError(validationIssues);\n\n return this._runPostprocessors(state.output) as UnionToIntersection<InferOutput<T[number]>>;\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), branches: this.schemas.map((s) => s.definition()), kind: 'intersect' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n const branches = this.schemas.map((s) => s.walk(visitor));\n\n if (visitor.intersect) return visitor.intersect(this, branches);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"+NA2BA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,GAAI,EAAc,CAAM,GAAK,EAAc,CAAM,EAAG,CAClD,IAAM,EAAS,EAAY,CAAM,EAEjC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAM,EAC5C,EAAkB,EAAQ,EAAK,EAAU,EAAO,GAAM,CAAG,CAAC,EAG5D,OAAO,CACT,CAEA,OAAO,CACT,CAGA,IAAa,EAAb,cAGU,CAAsG,CAC9G,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,WAEE,EAC6B,CAC7B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,OAAO,OAAO,CAAC,GAAG,CAAO,CAAC,CAC3C,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,KAAK,QAAQ,EAAE,CAAC,eAAe,EAAO,CAAG,EAEpD,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,MAAe,WAAW,EAAgB,EAA0E,CAClH,IAAM,EAAI,GAAO,EAAS,EAE1B,OAAO,KAAK,gBAAgB,SAAY,CACtC,IAAM,EAAW,KAAK,cAAc,CAAK,EAEzC,GAAI,EAAS,KAAM,OAAO,EAAS,MAEnC,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,EAAS,KACnB,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,MAAM,KAAK,QAAQ,EAAE,CAAC,gBAAgB,EAAS,MAAO,CAAC,EAElE,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,GAAI,EAAM,OAAO,OAAS,EAAG,MAAM,IAAI,EAAqB,EAAM,MAAM,EAExE,IAAM,EAAmB,MAAM,KAAK,oBAAoB,EAAM,OAAQ,CAAC,EAEvE,GAAI,EAAiB,OAAQ,MAAM,IAAI,EAAqB,CAAgB,EAE5E,OAAO,KAAK,mBAAmB,EAAM,MAAM,CAC7C,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,SAAU,KAAK,QAAQ,IAAK,GAAM,EAAE,WAAW,CAAC,EAAG,KAAM,WAAY,CACzG,CAEA,MAA4B,EAAoC,CAC9D,IAAM,EAAW,KAAK,QAAQ,IAAK,GAAM,EAAE,KAAK,CAAO,CAAC,EAIxD,OAFI,EAAQ,UAAkB,EAAQ,UAAU,KAAM,CAAQ,EAEvD,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"intersect.js","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type { AnySchema, InferInput, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema } from '../core';\nimport { cloneRecord, defineOwnProperty } from '../safe-object';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Recursively merges `source` into `target`.\n * Plain objects are merged key-by-key; all other values take the `source` value.\n */\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (isPlainObject(target) && isPlainObject(source)) {\n const result = cloneRecord(target);\n\n for (const [key, val] of Object.entries(source)) {\n defineOwnProperty(result, key, deepMerge(target[key], val));\n }\n\n return result;\n }\n\n return source;\n}\n\n/** All schemas must pass — intersection semantics. */\nexport class IntersectSchema<T extends readonly AnySchema[]> extends Schema<\n UnionToIntersection<InferOutput<T[number]>>,\n UnionToIntersection<InferInput<T[number]>>\n> {\n readonly schemas: T;\n\n protected override get _kind(): string {\n return 'intersect';\n }\n\n constructor(schemas: T) {\n super();\n this.schemas = Object.freeze([...schemas]) as T;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = this.schemas[i]._parseFullSync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = await this.schemas[i]._parseFullAsync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), branches: this.schemas.map((s) => s.definition()), kind: 'intersect' };\n }\n}\n"],"mappings":"6JAaA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,GAAI,EAAc,CAAM,GAAK,EAAc,CAAM,EAAG,CAClD,IAAM,EAAS,EAAY,CAAM,EAEjC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAM,EAC5C,EAAkB,EAAQ,EAAK,EAAU,EAAO,GAAM,CAAG,CAAC,EAG5D,OAAO,CACT,CAEA,OAAO,CACT,CAGA,IAAa,EAAb,cAAqE,CAGnE,CACA,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,OAAO,OAAO,CAAC,GAAG,CAAO,CAAC,CAC3C,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,KAAK,QAAQ,EAAE,CAAC,eAAe,EAAO,CAAG,EAEpD,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,MAAM,KAAK,QAAQ,EAAE,CAAC,gBAAgB,EAAO,CAAG,EAE3D,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,SAAU,KAAK,QAAQ,IAAK,GAAM,EAAE,WAAW,CAAC,EAAG,KAAM,WAAY,CACzG,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../errors.cjs"),t=require("../core.cjs");var n=class n extends t.Schema{_getter;_resolved;get _kind(){return`lazy`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async parseAsync(n,r){let i=r??t._makeCtx();return this._withCatchAsync(async()=>{let t=this._prepareInput(n);if(t.skip)return t.value;let r=await this._resolve()._parseFullAsync(t.value,i);if(r.issues.length>0)throw new e.SpellValidationError(r.issues);let a=await this._runValidatorsAsync(r.data,i);if(a.length>0)throw new e.SpellValidationError(a);return this._runPostprocessors(r.data)})}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_walk(e){return e.lazy?e.lazy(this):super._walk(e)}_construct(e){let t=new n(this._getter);return t.state=e,t}};exports.LazySchema=n;
1
+ const e=require("../core.cjs");var t=class t extends e.Schema{_getter;_resolved;get _kind(){return`lazy`}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async _parseAsync(e,t){let n=await this._resolve()._parseFullAsync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_construct(e){let n=new t(this._getter);return n.state=e,n}};exports.LazySchema=t;
2
2
  //# sourceMappingURL=lazy.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.cjs","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type {\n CheckContext,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n SchemaMode,\n SchemaState,\n SchemaWalker,\n ValidateResult,\n} from '../core';\n\nimport { _makeCtx, Schema, SpellValidationError } from '../core';\n\nexport class LazySchema<T, Input = T, Mode extends SchemaMode = 'sync'> extends Schema<T, Input, Mode> {\n private readonly _getter: () => Schema<T, Input, Mode>;\n private _resolved?: Schema<T, Input, Mode>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n override checkAsync(\n this: LazySchema<T, Input, 'sync'>,\n fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>,\n ): LazySchema<T, Input, 'async'> {\n return this._addCheck(fn, true) as unknown as LazySchema<T, Input, 'async'>;\n }\n\n constructor(getter: () => Schema<T, Input, Mode>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input, Mode> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<T> {\n const c = ctx ?? _makeCtx();\n\n return this._withCatchAsync(async () => {\n const prepared = this._prepareInput(value);\n\n if (prepared.skip) return prepared.value as T;\n\n const result = await this._resolve()._parseFullAsync(prepared.value, c);\n\n if (result.issues.length > 0) throw new SpellValidationError(result.issues);\n\n const validationIssues = await this._runValidatorsAsync(result.data, c);\n\n if (validationIssues.length > 0) throw new SpellValidationError(validationIssues);\n\n return this._runPostprocessors(result.data) as T;\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.lazy) return visitor.lazy(this);\n\n return super._walk(visitor);\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved — each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"0DAaA,IAAa,EAAb,MAAa,UAAmE,EAAA,MAAuB,CACrG,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EAC+B,CAC/B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAsC,CAChD,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAA2C,CAGzC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAe,WAAW,EAAgB,EAAgC,CACxE,IAAM,EAAI,GAAO,EAAA,SAAS,EAE1B,OAAO,KAAK,gBAAgB,SAAY,CACtC,IAAM,EAAW,KAAK,cAAc,CAAK,EAEzC,GAAI,EAAS,KAAM,OAAO,EAAS,MAEnC,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAS,MAAO,CAAC,EAEtE,GAAI,EAAO,OAAO,OAAS,EAAG,MAAM,IAAI,EAAA,qBAAqB,EAAO,MAAM,EAE1E,IAAM,EAAmB,MAAM,KAAK,oBAAoB,EAAO,KAAM,CAAC,EAEtE,GAAI,EAAiB,OAAS,EAAG,MAAM,IAAI,EAAA,qBAAqB,CAAgB,EAEhF,OAAO,KAAK,mBAAmB,EAAO,IAAI,CAC5C,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
1
+ {"version":3,"file":"lazy.cjs","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema } from '../core';\n\nexport class LazySchema<T, Input = T> extends Schema<T, Input> {\n private readonly _getter: () => Schema<T, Input>;\n private _resolved?: Schema<T, Input>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, Input>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const result = await this._resolve()._parseFullAsync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved — each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"+BAIA,IAAa,EAAb,MAAa,UAAiC,EAAA,MAAiB,CAC7D,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAgC,CAC1C,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAqC,CAGnC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAO,CAAG,EAI/D,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
@@ -1,16 +1,14 @@
1
- import type { CheckContext, ParseContext, ParseValue, SchemaDescriptor, SchemaMode, SchemaState, SchemaWalker, ValidateResult } from '../core';
1
+ import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class LazySchema<T, Input = T, Mode extends SchemaMode = 'sync'> extends Schema<T, Input, Mode> {
3
+ export declare class LazySchema<T, Input = T> extends Schema<T, Input> {
4
4
  private readonly _getter;
5
5
  private _resolved?;
6
6
  protected get _kind(): string;
7
- checkAsync(this: LazySchema<T, Input, 'sync'>, fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>): LazySchema<T, Input, 'async'>;
8
- constructor(getter: () => Schema<T, Input, Mode>);
7
+ constructor(getter: () => Schema<T, Input>);
9
8
  private _resolve;
10
9
  protected _parse(value: unknown, ctx: ParseContext): ParseValue;
11
- parseAsync(value: unknown, ctx?: ParseContext): Promise<T>;
10
+ protected _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue>;
12
11
  protected _toDescriptorImpl(): SchemaDescriptor;
13
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
14
12
  protected _construct(state: SchemaState<any>): this;
15
13
  }
16
14
  //# sourceMappingURL=lazy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schemas/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAY,MAAM,EAAwB,MAAM,SAAS,CAAC;AAEjE,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IACpG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,SAAS,CAAC,CAAyB;IAE3C,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAClC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,GAC3D,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;gBAIpB,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IAKhD,OAAO,CAAC,QAAQ;cAMG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;IAQzD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;cAoBtD,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAM5C,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;CAQ7D"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schemas/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;IAK1C,OAAO,CAAC,QAAQ;cAMG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;cAQ/C,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;cAQzE,iBAAiB,IAAI,gBAAgB;cAIrC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;CAQ7D"}
@@ -1,2 +1,2 @@
1
- import{SpellValidationError as e}from"../errors.js";import{Schema as t,_makeCtx as n}from"../core.js";var r=class r extends t{_getter;_resolved;get _kind(){return`lazy`}checkAsync(e){return this._addCheck(e,!0)}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async parseAsync(t,r){let i=r??n();return this._withCatchAsync(async()=>{let n=this._prepareInput(t);if(n.skip)return n.value;let r=await this._resolve()._parseFullAsync(n.value,i);if(r.issues.length>0)throw new e(r.issues);let a=await this._runValidatorsAsync(r.data,i);if(a.length>0)throw new e(a);return this._runPostprocessors(r.data)})}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_walk(e){return e.lazy?e.lazy(this):super._walk(e)}_construct(e){let t=new r(this._getter);return t.state=e,t}};export{r as LazySchema};
1
+ import{Schema as e}from"../core.js";var t=class t extends e{_getter;_resolved;get _kind(){return`lazy`}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async _parseAsync(e,t){let n=await this._resolve()._parseFullAsync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_construct(e){let n=new t(this._getter);return n.state=e,n}};export{t as LazySchema};
2
2
  //# sourceMappingURL=lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type {\n CheckContext,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n SchemaMode,\n SchemaState,\n SchemaWalker,\n ValidateResult,\n} from '../core';\n\nimport { _makeCtx, Schema, SpellValidationError } from '../core';\n\nexport class LazySchema<T, Input = T, Mode extends SchemaMode = 'sync'> extends Schema<T, Input, Mode> {\n private readonly _getter: () => Schema<T, Input, Mode>;\n private _resolved?: Schema<T, Input, Mode>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n override checkAsync(\n this: LazySchema<T, Input, 'sync'>,\n fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>,\n ): LazySchema<T, Input, 'async'> {\n return this._addCheck(fn, true) as unknown as LazySchema<T, Input, 'async'>;\n }\n\n constructor(getter: () => Schema<T, Input, Mode>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input, Mode> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<T> {\n const c = ctx ?? _makeCtx();\n\n return this._withCatchAsync(async () => {\n const prepared = this._prepareInput(value);\n\n if (prepared.skip) return prepared.value as T;\n\n const result = await this._resolve()._parseFullAsync(prepared.value, c);\n\n if (result.issues.length > 0) throw new SpellValidationError(result.issues);\n\n const validationIssues = await this._runValidatorsAsync(result.data, c);\n\n if (validationIssues.length > 0) throw new SpellValidationError(validationIssues);\n\n return this._runPostprocessors(result.data) as T;\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.lazy) return visitor.lazy(this);\n\n return super._walk(visitor);\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved — each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"sGAaA,IAAa,EAAb,MAAa,UAAmE,CAAuB,CACrG,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,WAEE,EAC+B,CAC/B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAsC,CAChD,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAA2C,CAGzC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAe,WAAW,EAAgB,EAAgC,CACxE,IAAM,EAAI,GAAO,EAAS,EAE1B,OAAO,KAAK,gBAAgB,SAAY,CACtC,IAAM,EAAW,KAAK,cAAc,CAAK,EAEzC,GAAI,EAAS,KAAM,OAAO,EAAS,MAEnC,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAS,MAAO,CAAC,EAEtE,GAAI,EAAO,OAAO,OAAS,EAAG,MAAM,IAAI,EAAqB,EAAO,MAAM,EAE1E,IAAM,EAAmB,MAAM,KAAK,oBAAoB,EAAO,KAAM,CAAC,EAEtE,GAAI,EAAiB,OAAS,EAAG,MAAM,IAAI,EAAqB,CAAgB,EAEhF,OAAO,KAAK,mBAAmB,EAAO,IAAI,CAC5C,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
1
+ {"version":3,"file":"lazy.js","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema } from '../core';\n\nexport class LazySchema<T, Input = T> extends Schema<T, Input> {\n private readonly _getter: () => Schema<T, Input>;\n private _resolved?: Schema<T, Input>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, Input>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const result = await this._resolve()._parseFullAsync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved — each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"oCAIA,IAAa,EAAb,MAAa,UAAiC,CAAiB,CAC7D,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAgC,CAC1C,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAqC,CAGnC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAO,CAAG,EAI/D,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{value;get _kind(){return`literal`}checkAsync(e){return this._addCheck(e,!0)}constructor(t){super((n,r)=>n===t?null:[{code:e.ErrorCode.invalid_literal,message:r.messages.literal.expected({expected:t}),params:{expected:t},path:[]}]),this.value=t}_toDescriptorImpl(){return{...this._describeBase(),kind:`literal`,value:this.value}}_walk(e){return e.literal?e.literal(this):super._walk(e)}};exports.LiteralSchema=n;
1
+ const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{value;get _kind(){return`literal`}constructor(t){super((n,r)=>n===t?null:[{code:e.ErrorCode.invalid_literal,message:r.messages.literal.expected({expected:t}),params:{expected:t},path:[]}]),this.value=t}_toDescriptorImpl(){return{...this._describeBase(),kind:`literal`,value:this.value}}};exports.LiteralSchema=n;
2
2
  //# sourceMappingURL=literal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.cjs","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class LiteralSchema<\n T extends string | number | boolean | null | undefined,\n Mode extends SchemaMode = 'sync',\n> extends Schema<T, T, Mode> {\n readonly value: T;\n\n protected override get _kind(): string {\n return 'literal';\n }\n\n override checkAsync(\n this: LiteralSchema<T, 'sync'>,\n fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>,\n ): LiteralSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as LiteralSchema<T, 'async'>;\n }\n\n constructor(value: T) {\n super((val, ctx) =>\n val === value\n ? null\n : [\n {\n code: ErrorCode.invalid_literal,\n message: ctx!.messages.literal.expected({ expected: value }),\n params: { expected: value },\n path: [],\n },\n ],\n );\n this.value = value;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.literal) return visitor.literal(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAGU,EAAA,MAAmB,CAC3B,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,WAEE,EAC2B,CAC3B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAU,CACpB,OAAO,EAAK,IACV,IAAQ,EACJ,KACA,CACE,CACE,KAAM,EAAA,UAAU,gBAChB,QAAS,EAAK,SAAS,QAAQ,SAAS,CAAE,SAAU,CAAM,CAAC,EAC3D,OAAQ,CAAE,SAAU,CAAM,EAC1B,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,MAAQ,CACf,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,UAAW,MAAO,KAAK,KAAM,CACvE,CAEA,MAA4B,EAAoC,CAG9D,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CACF"}
1
+ {"version":3,"file":"literal.cjs","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<T, T> {\n readonly value: T;\n\n protected override get _kind(): string {\n return 'literal';\n }\n\n constructor(value: T) {\n super((val, ctx) =>\n val === value\n ? null\n : [\n {\n code: ErrorCode.invalid_literal,\n message: ctx!.messages.literal.expected({ expected: value }),\n params: { expected: value },\n path: [],\n },\n ],\n );\n this.value = value;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAA2F,EAAA,MAAa,CACtG,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,YAAY,EAAU,CACpB,OAAO,EAAK,IACV,IAAQ,EACJ,KACA,CACE,CACE,KAAM,EAAA,UAAU,gBAChB,QAAS,EAAK,SAAS,QAAQ,SAAS,CAAE,SAAU,CAAM,CAAC,EAC3D,OAAQ,CAAE,SAAU,CAAM,EAC1B,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,MAAQ,CACf,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,UAAW,MAAO,KAAK,KAAM,CACvE,CACF"}
@@ -1,11 +1,9 @@
1
- import type { CheckContext, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';
1
+ import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class LiteralSchema<T extends string | number | boolean | null | undefined, Mode extends SchemaMode = 'sync'> extends Schema<T, T, Mode> {
3
+ export declare class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<T, T> {
4
4
  readonly value: T;
5
5
  protected get _kind(): string;
6
- checkAsync(this: LiteralSchema<T, 'sync'>, fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>): LiteralSchema<T, 'async'>;
7
6
  constructor(value: T);
8
7
  protected _toDescriptorImpl(): SchemaDescriptor;
9
- protected _walk<R>(visitor: SchemaWalker<R>): R | null;
10
8
  }
11
9
  //# sourceMappingURL=literal.d.ts.map