@vielzeug/spell 1.2.1 → 2.0.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 (176) hide show
  1. package/README.md +4 -4
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +1 -1
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/core.cjs +1 -1
  7. package/dist/core.cjs.map +1 -1
  8. package/dist/core.d.ts +29 -43
  9. package/dist/core.d.ts.map +1 -1
  10. package/dist/core.js +1 -1
  11. package/dist/core.js.map +1 -1
  12. package/dist/errors.cjs +2 -2
  13. package/dist/errors.cjs.map +1 -1
  14. package/dist/errors.d.ts +9 -11
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +2 -2
  17. package/dist/errors.js.map +1 -1
  18. package/dist/index.cjs +2 -1
  19. package/dist/index.cjs.map +1 -0
  20. package/dist/index.d.ts +11 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -0
  24. package/dist/json-schema.cjs +1 -1
  25. package/dist/json-schema.cjs.map +1 -1
  26. package/dist/json-schema.d.ts +3 -13
  27. package/dist/json-schema.d.ts.map +1 -1
  28. package/dist/json-schema.js +1 -1
  29. package/dist/json-schema.js.map +1 -1
  30. package/dist/json.cjs +1 -0
  31. package/dist/json.d.ts +2 -0
  32. package/dist/json.d.ts.map +1 -0
  33. package/dist/json.js +1 -0
  34. package/dist/messages.cjs +1 -1
  35. package/dist/messages.cjs.map +1 -1
  36. package/dist/messages.d.ts +3 -35
  37. package/dist/messages.d.ts.map +1 -1
  38. package/dist/messages.js +1 -1
  39. package/dist/messages.js.map +1 -1
  40. package/dist/predicates.cjs +1 -0
  41. package/dist/predicates.d.ts +3 -0
  42. package/dist/predicates.d.ts.map +1 -0
  43. package/dist/predicates.js +1 -0
  44. package/dist/s.cjs +1 -1
  45. package/dist/s.cjs.map +1 -1
  46. package/dist/s.d.ts +12 -14
  47. package/dist/s.d.ts.map +1 -1
  48. package/dist/s.js +1 -1
  49. package/dist/s.js.map +1 -1
  50. package/dist/schemas/array.cjs +1 -1
  51. package/dist/schemas/array.cjs.map +1 -1
  52. package/dist/schemas/array.d.ts +7 -7
  53. package/dist/schemas/array.d.ts.map +1 -1
  54. package/dist/schemas/array.js +1 -1
  55. package/dist/schemas/array.js.map +1 -1
  56. package/dist/schemas/bigint.cjs +1 -1
  57. package/dist/schemas/bigint.cjs.map +1 -1
  58. package/dist/schemas/bigint.d.ts +2 -2
  59. package/dist/schemas/bigint.d.ts.map +1 -1
  60. package/dist/schemas/bigint.js +1 -1
  61. package/dist/schemas/bigint.js.map +1 -1
  62. package/dist/schemas/boolean.cjs +1 -1
  63. package/dist/schemas/boolean.cjs.map +1 -1
  64. package/dist/schemas/boolean.d.ts +2 -2
  65. package/dist/schemas/boolean.d.ts.map +1 -1
  66. package/dist/schemas/boolean.js +1 -1
  67. package/dist/schemas/boolean.js.map +1 -1
  68. package/dist/schemas/date.cjs +1 -1
  69. package/dist/schemas/date.cjs.map +1 -1
  70. package/dist/schemas/date.d.ts +2 -2
  71. package/dist/schemas/date.d.ts.map +1 -1
  72. package/dist/schemas/date.js +1 -1
  73. package/dist/schemas/date.js.map +1 -1
  74. package/dist/schemas/enum.cjs +1 -1
  75. package/dist/schemas/enum.cjs.map +1 -1
  76. package/dist/schemas/enum.d.ts +2 -2
  77. package/dist/schemas/enum.d.ts.map +1 -1
  78. package/dist/schemas/enum.js +1 -1
  79. package/dist/schemas/enum.js.map +1 -1
  80. package/dist/schemas/instanceof.cjs +1 -1
  81. package/dist/schemas/instanceof.cjs.map +1 -1
  82. package/dist/schemas/instanceof.d.ts +2 -2
  83. package/dist/schemas/instanceof.d.ts.map +1 -1
  84. package/dist/schemas/instanceof.js +1 -1
  85. package/dist/schemas/instanceof.js.map +1 -1
  86. package/dist/schemas/intersect.cjs +1 -1
  87. package/dist/schemas/intersect.cjs.map +1 -1
  88. package/dist/schemas/intersect.d.ts +2 -2
  89. package/dist/schemas/intersect.d.ts.map +1 -1
  90. package/dist/schemas/intersect.js +1 -1
  91. package/dist/schemas/intersect.js.map +1 -1
  92. package/dist/schemas/lazy.cjs +1 -1
  93. package/dist/schemas/lazy.cjs.map +1 -1
  94. package/dist/schemas/lazy.d.ts +3 -3
  95. package/dist/schemas/lazy.d.ts.map +1 -1
  96. package/dist/schemas/lazy.js +1 -1
  97. package/dist/schemas/lazy.js.map +1 -1
  98. package/dist/schemas/literal.cjs +1 -1
  99. package/dist/schemas/literal.cjs.map +1 -1
  100. package/dist/schemas/literal.d.ts +2 -2
  101. package/dist/schemas/literal.d.ts.map +1 -1
  102. package/dist/schemas/literal.js +1 -1
  103. package/dist/schemas/literal.js.map +1 -1
  104. package/dist/schemas/map.cjs +1 -1
  105. package/dist/schemas/map.cjs.map +1 -1
  106. package/dist/schemas/map.d.ts +7 -7
  107. package/dist/schemas/map.d.ts.map +1 -1
  108. package/dist/schemas/map.js +1 -1
  109. package/dist/schemas/map.js.map +1 -1
  110. package/dist/schemas/never.cjs +1 -1
  111. package/dist/schemas/never.cjs.map +1 -1
  112. package/dist/schemas/never.d.ts +2 -2
  113. package/dist/schemas/never.d.ts.map +1 -1
  114. package/dist/schemas/never.js +1 -1
  115. package/dist/schemas/never.js.map +1 -1
  116. package/dist/schemas/number.cjs +1 -1
  117. package/dist/schemas/number.cjs.map +1 -1
  118. package/dist/schemas/number.d.ts +3 -3
  119. package/dist/schemas/number.d.ts.map +1 -1
  120. package/dist/schemas/number.js +1 -1
  121. package/dist/schemas/number.js.map +1 -1
  122. package/dist/schemas/object.cjs +1 -1
  123. package/dist/schemas/object.cjs.map +1 -1
  124. package/dist/schemas/object.d.ts +21 -15
  125. package/dist/schemas/object.d.ts.map +1 -1
  126. package/dist/schemas/object.js +1 -1
  127. package/dist/schemas/object.js.map +1 -1
  128. package/dist/schemas/record.cjs +1 -1
  129. package/dist/schemas/record.cjs.map +1 -1
  130. package/dist/schemas/record.d.ts +7 -7
  131. package/dist/schemas/record.d.ts.map +1 -1
  132. package/dist/schemas/record.js +1 -1
  133. package/dist/schemas/record.js.map +1 -1
  134. package/dist/schemas/set.cjs +1 -1
  135. package/dist/schemas/set.cjs.map +1 -1
  136. package/dist/schemas/set.d.ts +6 -6
  137. package/dist/schemas/set.d.ts.map +1 -1
  138. package/dist/schemas/set.js +1 -1
  139. package/dist/schemas/set.js.map +1 -1
  140. package/dist/schemas/string.cjs +1 -1
  141. package/dist/schemas/string.cjs.map +1 -1
  142. package/dist/schemas/string.d.ts +6 -12
  143. package/dist/schemas/string.d.ts.map +1 -1
  144. package/dist/schemas/string.js +1 -1
  145. package/dist/schemas/string.js.map +1 -1
  146. package/dist/schemas/tuple.cjs +1 -1
  147. package/dist/schemas/tuple.cjs.map +1 -1
  148. package/dist/schemas/tuple.d.ts +3 -3
  149. package/dist/schemas/tuple.d.ts.map +1 -1
  150. package/dist/schemas/tuple.js +1 -1
  151. package/dist/schemas/tuple.js.map +1 -1
  152. package/dist/schemas/union.cjs +1 -1
  153. package/dist/schemas/union.cjs.map +1 -1
  154. package/dist/schemas/union.d.ts +2 -2
  155. package/dist/schemas/union.d.ts.map +1 -1
  156. package/dist/schemas/union.js +1 -1
  157. package/dist/schemas/union.js.map +1 -1
  158. package/dist/schemas/variant.cjs +1 -1
  159. package/dist/schemas/variant.cjs.map +1 -1
  160. package/dist/schemas/variant.d.ts +7 -5
  161. package/dist/schemas/variant.d.ts.map +1 -1
  162. package/dist/schemas/variant.js +1 -1
  163. package/dist/schemas/variant.js.map +1 -1
  164. package/dist/spell.cjs +2 -2
  165. package/dist/spell.cjs.map +1 -1
  166. package/dist/spell.iife.js +2 -2
  167. package/dist/spell.iife.js.map +1 -1
  168. package/dist/spell.js +2 -2
  169. package/dist/spell.js.map +1 -1
  170. package/dist/types.cjs +1 -1
  171. package/dist/types.cjs.map +1 -1
  172. package/dist/types.d.ts +61 -26
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +1 -1
  175. package/dist/types.js.map +1 -1
  176. package/package.json +18 -5
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{_messages as t}from"../messages.js";import{Schema as n}from"../core.js";var r=class r extends n{cls;get _kind(){return`instanceof`}constructor(n){super((r,i)=>r instanceof n?null:[{code:e.invalid_type,message:(i?.messages??t()).instanceof.type({className:n.name}),path:[]}]),this.cls=n}_toDescriptorImpl(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}_walk(e){return e.instanceof?e.instanceof(this):super._walk(e)}_equalsImpl(e){return e instanceof r&&this.cls===e.cls}};export{r 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`}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};
2
2
  //# sourceMappingURL=instanceof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instanceof.js","names":[],"sources":["../../src/schemas/instanceof.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\nimport { _messages } from '../messages';\n\nexport class InstanceOfSchema<T> extends Schema<T> {\n readonly cls: new (...args: any[]) => T;\n\n protected override get _kind(): string {\n return 'instanceof';\n }\n\n constructor(cls: new (...args: any[]) => T) {\n super((value, ctx) =>\n value instanceof cls\n ? null\n : [\n {\n code: ErrorCode.invalid_type,\n message: (ctx?.messages ?? _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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.instanceof) return visitor.instanceof(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n return other instanceof InstanceOfSchema && this.cls === other.cls;\n }\n}\n"],"mappings":"uHAKA,IAAa,EAAb,MAAa,UAA4B,CAAU,CACjD,IAEA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,YAAY,EAAgC,CAC1C,OAAO,EAAO,IACZ,aAAiB,EACb,KACA,CACE,CACE,KAAM,EAAU,aAChB,SAAU,GAAK,UAAY,EAAU,EAAA,CAAG,WAAW,KAAK,CAAE,UAAW,EAAI,IAAK,CAAC,EAC/E,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,EAAsD,CAGhF,OAFI,EAAQ,WAAmB,EAAQ,WAAW,IAAI,EAE/C,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAC1E,OAAO,aAAiB,GAAoB,KAAK,MAAQ,EAAM,GACjE,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, Mode extends import('../core').SchemaMode = 'sync'> extends Schema<T, T, Mode> {\n readonly cls: new (...args: any[]) => 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: import('../core').CheckContext) => Promise<import('../core').ValidateResult>,\n ): InstanceOfSchema<T, 'async'> {\n return this._addCheck(fn, true) as unknown as InstanceOfSchema<T, 'async'>;\n }\n\n constructor(cls: new (...args: any[]) => 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: import('../core').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,cAA6F,CAAmB,CAC9G,IAEA,IAAuB,OAAgB,CACrC,MAAO,YACT,CAEA,WAEE,EAC8B,CAC9B,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,YAAY,EAAgC,CAC1C,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,EAAsD,CAGhF,OAFI,EAAQ,WAAmB,EAAQ,WAAW,IAAI,EAE/C,MAAM,MAAM,CAAO,CAC5B,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 t extends n.Schema{schemas;get _kind(){return`intersect`}constructor(e){super(),this.schemas=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.toDescriptor()),kind:`intersect`}}_walk(e){let t=this.schemas.map(t=>t.walk(e));return e.intersect?e.intersect(this,t):super._walk(e)}_equalsImpl(e){return!(e instanceof t)||this.schemas.length!==e.schemas.length?!1:this.schemas.every((t,n)=>t.equals(e.schemas[n]))}};exports.IntersectSchema=a;
1
+ const e=require("../errors.cjs"),t=require("../safe-object.cjs"),n=require("../core.cjs");let r=require("@vielzeug/arsenal/guards");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;
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 { AnySchema, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } 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> {\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 = schemas;\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.toDescriptor()), kind: 'intersect' };\n }\n\n protected override _walk<R>(visitor: import('../core').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 protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof IntersectSchema)) return false;\n\n if (this.schemas.length !== other.schemas.length) return false;\n\n return this.schemas.every((s, i) => s.equals(other.schemas[i]));\n }\n}\n"],"mappings":"6HAaA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,IAAA,EAAA,EAAA,cAAA,CAAkB,CAAM,IAAA,EAAA,EAAA,cAAA,CAAmB,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,MAAa,UAAwD,EAAA,MAEnE,CACA,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,CACjB,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,aAAa,CAAC,EAAG,KAAM,WAAY,CAC3G,CAEA,MAA4B,EAAsD,CAChF,IAAM,EAAW,KAAK,QAAQ,IAAK,GAAM,EAAE,KAAK,CAAO,CAAC,EAIxD,OAFI,EAAQ,UAAkB,EAAQ,UAAU,KAAM,CAAQ,EAEvD,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAK1E,MAJI,EAAE,aAAiB,IAEnB,KAAK,QAAQ,SAAW,EAAM,QAAQ,OAAe,GAElD,KAAK,QAAQ,OAAO,EAAG,IAAM,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,CAChE,CACF"}
1
+ {"version":3,"file":"intersect.cjs","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal/guards';\n\nimport type { AnySchema, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } 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 import('../core').SchemaMode = import('../core').MergeSchemaModes<\n import('../core').InferSchemaMode<T[number]>\n >,\n> extends Schema<UnionToIntersection<InferOutput<T[number]>>, unknown, 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: (\n value: UnionToIntersection<InferOutput<T[number]>>,\n ctx: import('../core').CheckContext,\n ) => Promise<import('../core').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: import('../core').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":"oIAaA,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,cAKU,EAAA,MAAmE,CAC3E,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,WAEE,EAI6B,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,EAAsD,CAChF,IAAM,EAAW,KAAK,QAAQ,IAAK,GAAM,EAAE,KAAK,CAAO,CAAC,EAIxD,OAFI,EAAQ,UAAkB,EAAQ,UAAU,KAAM,CAAQ,EAEvD,MAAM,MAAM,CAAO,CAC5B,CACF"}
@@ -2,15 +2,15 @@ import type { AnySchema, InferOutput, ParseContext, ParseValue, SchemaDescriptor
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[]> extends Schema<UnionToIntersection<InferOutput<T[number]>>> {
5
+ export declare class IntersectSchema<T extends readonly AnySchema[], Mode extends import('../core').SchemaMode = import('../core').MergeSchemaModes<import('../core').InferSchemaMode<T[number]>>> extends Schema<UnionToIntersection<InferOutput<T[number]>>, unknown, Mode> {
6
6
  readonly schemas: T;
7
7
  protected get _kind(): string;
8
+ checkAsync(this: IntersectSchema<T, 'sync'>, fn: (value: UnionToIntersection<InferOutput<T[number]>>, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>): IntersectSchema<T, 'async'>;
8
9
  constructor(schemas: T);
9
10
  protected _parse(value: unknown, ctx: ParseContext): ParseValue;
10
11
  parseAsync(value: unknown, ctx?: ParseContext): Promise<UnionToIntersection<InferOutput<T[number]>>>;
11
12
  protected _toDescriptorImpl(): SchemaDescriptor;
12
13
  protected _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null;
13
- protected _equalsImpl(other: import('../core').AnySchema): boolean;
14
14
  }
15
15
  export {};
16
16
  //# 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,EAAE,SAAS,EAAE,WAAW,EAAS,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzG,OAAO,EAAE,MAAM,EAAkC,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,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,CAAE,SAAQ,MAAM,CACzE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAC5C;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;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,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAQ9D,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,GAAG,OAAO;CAO5E"}
1
+ {"version":3,"file":"intersect.d.ts","sourceRoot":"","sources":["../../src/schemas/intersect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAS,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzG,OAAO,EAAE,MAAM,EAAkC,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,OAAO,SAAS,EAAE,UAAU,GAAG,OAAO,SAAS,EAAE,gBAAgB,CAC5E,OAAO,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAC7C,CACD,SAAQ,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC;IAC1E,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,CACF,KAAK,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAClD,GAAG,EAAE,OAAO,SAAS,EAAE,YAAY,KAChC,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,GAC7C,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,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAOlF"}
@@ -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 t extends r{schemas;get _kind(){return`intersect`}constructor(e){super(),this.schemas=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.toDescriptor()),kind:`intersect`}}_walk(e){let t=this.schemas.map(t=>t.walk(e));return e.intersect?e.intersect(this,t):super._walk(e)}_equalsImpl(e){return!(e instanceof t)||this.schemas.length!==e.schemas.length?!1:this.schemas.every((t,n)=>t.equals(e.schemas[n]))}};export{s as IntersectSchema};
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/guards";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};
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 { AnySchema, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } 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> {\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 = schemas;\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.toDescriptor()), kind: 'intersect' };\n }\n\n protected override _walk<R>(visitor: import('../core').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 protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof IntersectSchema)) return false;\n\n if (this.schemas.length !== other.schemas.length) return false;\n\n return this.schemas.every((s, i) => s.equals(other.schemas[i]));\n }\n}\n"],"mappings":"+NAaA,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,MAAa,UAAwD,CAEnE,CACA,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,CACjB,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,aAAa,CAAC,EAAG,KAAM,WAAY,CAC3G,CAEA,MAA4B,EAAsD,CAChF,IAAM,EAAW,KAAK,QAAQ,IAAK,GAAM,EAAE,KAAK,CAAO,CAAC,EAIxD,OAFI,EAAQ,UAAkB,EAAQ,UAAU,KAAM,CAAQ,EAEvD,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAK1E,MAJI,EAAE,aAAiB,IAEnB,KAAK,QAAQ,SAAW,EAAM,QAAQ,OAAe,GAElD,KAAK,QAAQ,OAAO,EAAG,IAAM,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,CAChE,CACF"}
1
+ {"version":3,"file":"intersect.js","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal/guards';\n\nimport type { AnySchema, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } 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 import('../core').SchemaMode = import('../core').MergeSchemaModes<\n import('../core').InferSchemaMode<T[number]>\n >,\n> extends Schema<UnionToIntersection<InferOutput<T[number]>>, unknown, 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: (\n value: UnionToIntersection<InferOutput<T[number]>>,\n ctx: import('../core').CheckContext,\n ) => Promise<import('../core').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: import('../core').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":"sOAaA,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,cAKU,CAAmE,CAC3E,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,WAEE,EAI6B,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,EAAsD,CAChF,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,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`}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)}_equalsImpl(e){return e instanceof n?this._getter===e._getter:!1}_construct(e){let t=new n(this._getter);return t.state=e,t}};exports.LazySchema=n;
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;
2
2
  //# sourceMappingURL=lazy.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.cjs","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } from '../core';\n\nexport class LazySchema<T> extends Schema<T> {\n private readonly _getter: () => Schema<T, any>;\n private _resolved?: Schema<T, any>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, any>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, any> {\n return (this._resolved ??= this._getter());\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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.lazy) return visitor.lazy(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n // Lazy schemas are equal only if they reference the same getter function.\n if (!(other instanceof LazySchema)) return false;\n\n return this._getter === other._getter;\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":"0DAIA,IAAa,EAAb,MAAa,UAAsB,EAAA,MAAU,CAC3C,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAA8B,CACxC,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAmC,CACjC,MAAQ,MAAK,YAAc,KAAK,QAAQ,CAC1C,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,EAAsD,CAGhF,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAI1E,OAFM,aAAiB,EAEhB,KAAK,UAAY,EAAM,QAFa,EAG7C,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, SpellValidationError, _makeCtx } from '../core';\n\nexport class LazySchema<T, Input = T, Mode extends import('../core').SchemaMode = 'sync'> extends Schema<\n T,\n Input,\n Mode\n> {\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: import('../core').CheckContext) => Promise<import('../core').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: import('../core').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":"0DAIA,IAAa,EAAb,MAAa,UAAqF,EAAA,MAIhG,CACA,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,EAAsD,CAGhF,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,16 +1,16 @@
1
1
  import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class LazySchema<T> extends Schema<T> {
3
+ export declare class LazySchema<T, Input = T, Mode extends import('../core').SchemaMode = 'sync'> extends Schema<T, Input, Mode> {
4
4
  private readonly _getter;
5
5
  private _resolved?;
6
6
  protected get _kind(): string;
7
- constructor(getter: () => Schema<T, any>);
7
+ checkAsync(this: LazySchema<T, Input, 'sync'>, fn: (value: T, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>): LazySchema<T, Input, 'async'>;
8
+ constructor(getter: () => Schema<T, Input, Mode>);
8
9
  private _resolve;
9
10
  protected _parse(value: unknown, ctx: ParseContext): ParseValue;
10
11
  parseAsync(value: unknown, ctx?: ParseContext): Promise<T>;
11
12
  protected _toDescriptorImpl(): SchemaDescriptor;
12
13
  protected _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null;
13
- protected _equalsImpl(other: import('../core').AnySchema): boolean;
14
14
  protected _construct(state: SchemaState<any>): this;
15
15
  }
16
16
  //# 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,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,MAAM,EAAkC,MAAM,SAAS,CAAC;AAEjE,qBAAa,UAAU,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,SAAS,CAAC,CAAiB;IAEnC,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;IAKxC,OAAO,CAAC,QAAQ;cAIG,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,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAM9D,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,GAAG,OAAO;cAOxD,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,EAAkC,MAAM,SAAS,CAAC;AAEjE,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,SAAS,OAAO,SAAS,EAAE,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CACtG,CAAC,EACD,KAAK,EACL,IAAI,CACL;IACC,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,OAAO,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,GAC/F,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,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAM9D,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`}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)}_equalsImpl(e){return e instanceof r?this._getter===e._getter:!1}_construct(e){let t=new r(this._getter);return t.state=e,t}};export{r as LazySchema};
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};
2
2
  //# sourceMappingURL=lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema, SpellValidationError, _makeCtx } from '../core';\n\nexport class LazySchema<T> extends Schema<T> {\n private readonly _getter: () => Schema<T, any>;\n private _resolved?: Schema<T, any>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, any>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, any> {\n return (this._resolved ??= this._getter());\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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.lazy) return visitor.lazy(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n // Lazy schemas are equal only if they reference the same getter function.\n if (!(other instanceof LazySchema)) return false;\n\n return this._getter === other._getter;\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":"sGAIA,IAAa,EAAb,MAAa,UAAsB,CAAU,CAC3C,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAA8B,CACxC,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAmC,CACjC,MAAQ,MAAK,YAAc,KAAK,QAAQ,CAC1C,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,EAAsD,CAGhF,OAFI,EAAQ,KAAa,EAAQ,KAAK,IAAI,EAEnC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAI1E,OAFM,aAAiB,EAEhB,KAAK,UAAY,EAAM,QAFa,EAG7C,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, SpellValidationError, _makeCtx } from '../core';\n\nexport class LazySchema<T, Input = T, Mode extends import('../core').SchemaMode = 'sync'> extends Schema<\n T,\n Input,\n Mode\n> {\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: import('../core').CheckContext) => Promise<import('../core').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: import('../core').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":"sGAIA,IAAa,EAAb,MAAa,UAAqF,CAIhG,CACA,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,EAAsD,CAGhF,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,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../messages.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{value;get _kind(){return`literal`}constructor(n){super((r,i)=>r===n?null:[{code:e.ErrorCode.invalid_literal,message:(i?.messages??t._messages()).literal.expected({expected:n}),params:{expected:n},path:[]}]),this.value=n}_toDescriptorImpl(){return{...this._describeBase(),kind:`literal`,value:this.value}}_walk(e){return e.literal?e.literal(this):super._walk(e)}_equalsImpl(e){return e instanceof r?this.value===e.value:!1}};exports.LiteralSchema=r;
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;
2
2
  //# sourceMappingURL=literal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.cjs","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\nimport { _messages } from '../messages';\n\nexport class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<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 ?? _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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.literal) return visitor.literal(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof LiteralSchema)) return false;\n\n return this.value === other.value;\n }\n}\n"],"mappings":"sFAKA,IAAa,EAAb,MAAa,UAA8E,EAAA,MAAU,CACnG,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,YAAY,EAAU,CACpB,OAAO,EAAK,IACV,IAAQ,EACJ,KACA,CACE,CACE,KAAM,EAAA,UAAU,gBAChB,SAAU,GAAK,UAAY,EAAA,UAAU,EAAA,CAAG,QAAQ,SAAS,CAAE,SAAU,CAAM,CAAC,EAC5E,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,EAAsD,CAGhF,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAG1E,OAFM,aAAiB,EAEhB,KAAK,QAAU,EAAM,MAFkB,EAGhD,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<\n T extends string | number | boolean | null | undefined,\n Mode extends import('../core').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: import('../core').CheckContext) => Promise<import('../core').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: import('../core').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,EAAsD,CAGhF,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CACF"}
@@ -1,11 +1,11 @@
1
1
  import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<T> {
3
+ export declare class LiteralSchema<T extends string | number | boolean | null | undefined, Mode extends import('../core').SchemaMode = 'sync'> extends Schema<T, T, Mode> {
4
4
  readonly value: T;
5
5
  protected get _kind(): string;
6
+ checkAsync(this: LiteralSchema<T, 'sync'>, fn: (value: T, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>): LiteralSchema<T, 'async'>;
6
7
  constructor(value: T);
7
8
  protected _toDescriptorImpl(): SchemaDescriptor;
8
9
  protected _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null;
9
- protected _equalsImpl(other: import('../core').AnySchema): boolean;
10
10
  }
11
11
  //# sourceMappingURL=literal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schemas/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAG5C,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,KAAK,EAAE,CAAC;cAgBD,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAM9D,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,GAAG,OAAO;CAK5E"}
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schemas/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,aAAa,CACxB,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EACtD,IAAI,SAAS,OAAO,SAAS,EAAE,UAAU,GAAG,MAAM,CAClD,SAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,EAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,GAC/F,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;gBAIhB,KAAK,EAAE,CAAC;cAgBD,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAKlF"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{_messages as t}from"../messages.js";import{Schema as n}from"../core.js";var r=class r extends n{value;get _kind(){return`literal`}constructor(n){super((r,i)=>r===n?null:[{code:e.invalid_literal,message:(i?.messages??t()).literal.expected({expected:n}),params:{expected:n},path:[]}]),this.value=n}_toDescriptorImpl(){return{...this._describeBase(),kind:`literal`,value:this.value}}_walk(e){return e.literal?e.literal(this):super._walk(e)}_equalsImpl(e){return e instanceof r?this.value===e.value:!1}};export{r as LiteralSchema};
1
+ import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{value;get _kind(){return`literal`}checkAsync(e){return this._addCheck(e,!0)}constructor(t){super((n,r)=>n===t?null:[{code:e.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)}};export{n as LiteralSchema};
2
2
  //# sourceMappingURL=literal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\nimport { _messages } from '../messages';\n\nexport class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<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 ?? _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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.literal) return visitor.literal(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof LiteralSchema)) return false;\n\n return this.value === other.value;\n }\n}\n"],"mappings":"uHAKA,IAAa,EAAb,MAAa,UAA8E,CAAU,CACnG,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,YAAY,EAAU,CACpB,OAAO,EAAK,IACV,IAAQ,EACJ,KACA,CACE,CACE,KAAM,EAAU,gBAChB,SAAU,GAAK,UAAY,EAAU,EAAA,CAAG,QAAQ,SAAS,CAAE,SAAU,CAAM,CAAC,EAC5E,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,EAAsD,CAGhF,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAG1E,OAFM,aAAiB,EAEhB,KAAK,QAAU,EAAM,MAFkB,EAGhD,CACF"}
1
+ {"version":3,"file":"literal.js","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class LiteralSchema<\n T extends string | number | boolean | null | undefined,\n Mode extends import('../core').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: import('../core').CheckContext) => Promise<import('../core').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: import('../core').SchemaWalker<R>): R | null {\n if (visitor.literal) return visitor.literal(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,cAGU,CAAmB,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,EAAU,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,EAAsD,CAGhF,OAFI,EAAQ,QAAgB,EAAQ,QAAQ,IAAI,EAEzC,MAAM,MAAM,CAAO,CAC5B,CACF"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../errors.cjs"),n=require("../messages.cjs"),r=require("../core.cjs");var i=class i extends r.Schema{keySchema;valueSchema;get _kind(){return`map`}constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}_parse(n,r){if(!(n instanceof Map))return{data:n,issues:[{code:e.ErrorCode.invalid_type,message:r.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[e,s]of n){let n=this.keySchema._parseFullSync(e,r),c=this.valueSchema._parseFullSync(s,r);n.issues.length>0&&a.push(...t.prependIssuePath(n.issues,o)),c.issues.length>0&&a.push(...t.prependIssuePath(c.issues,o)),n.issues.length===0&&c.issues.length===0&&i.set(n.data,c.data),o+=1}return{data:i,issues:a,typeOk:!0}}async parseAsync(n,i){let a=i??r._makeCtx();return this._withCatchAsync(async()=>{let r=this._prepareInput(n);if(r.skip)return r.value;let i=r.value;if(!(i instanceof Map))throw new t.SpellValidationError([{code:e.ErrorCode.invalid_type,message:a.messages.map.type(),path:[]}]);let o=[...i],s=await Promise.all(o.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,a),this.valueSchema._parseFullAsync(t,a)]))),c=[],l=new Map;for(let e=0;e<s.length;e++){let[n,r]=s[e];n.issues.length>0&&c.push(...t.prependIssuePath(n.issues,e)),r.issues.length>0&&c.push(...t.prependIssuePath(r.issues,e)),n.issues.length===0&&r.issues.length===0&&l.set(n.data,r.data)}let u=await this._runValidatorsAsync(l,a),d=[...c,...u];if(d.length>0)throw new t.SpellValidationError(d);return this._runPostprocessors(l)})}min(r,i=e=>n._messages().map.min(e)){return this._addConstraint((n,a)=>{let o=n;return o.size>=r?null:t.fail(e.ErrorCode.too_small,t.resolveMessage(i,{min:r,value:o}),{min:r})})}max(r,i=e=>n._messages().map.max(e)){return this._addConstraint((n,a)=>{let o=n;return o.size<=r?null:t.fail(e.ErrorCode.too_big,t.resolveMessage(i,{max:r,value:o}),{max:r})})}size(r,i=e=>n._messages().map.size(e)){return this._addConstraint((n,a)=>{let o=n;return o.size===r?null:t.fail(e.ErrorCode.invalid_length,t.resolveMessage(i,{exact:r,value:o}),{exact:r})})}nonEmpty(r=()=>n._messages().map.nonEmpty()){return this._addConstraint((n,i)=>n.size>0?null:t.fail(e.ErrorCode.too_small,t.resolveMessage(r,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.toDescriptor(),kind:`map`,value:this.valueSchema.toDescriptor()}}_walk(e){let t=this.keySchema.walk(e),n=this.valueSchema.walk(e);return e.map?e.map(this,t,n):super._walk(e)}_equalsImpl(e){return e instanceof i?this.keySchema.equals(e.keySchema)&&this.valueSchema.equals(e.valueSchema):!1}};exports.MapSchema=i;
1
+ const e=require("../types.cjs"),t=require("../errors.cjs"),n=require("../core.cjs");var r=class extends n.Schema{keySchema;valueSchema;get _kind(){return`map`}checkAsync(e){return this._addCheck(e,!0)}constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}_parse(n,r){if(!(n instanceof Map))return{data:n,issues:[{code:e.ErrorCode.invalid_type,message:r.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[e,s]of n){let n=this.keySchema._parseFullSync(e,r),c=this.valueSchema._parseFullSync(s,r);n.issues.length>0&&a.push(...t.prependIssuePath(n.issues,o)),c.issues.length>0&&a.push(...t.prependIssuePath(c.issues,o)),n.issues.length===0&&c.issues.length===0&&i.set(n.data,c.data),o+=1}return{data:i,issues:a,typeOk:!0}}async parseAsync(r,i){let a=i??n._makeCtx();return this._withCatchAsync(async()=>{let n=this._prepareInput(r);if(n.skip)return n.value;let i=n.value;if(!(i instanceof Map))throw new t.SpellValidationError([{code:e.ErrorCode.invalid_type,message:a.messages.map.type(),path:[]}]);let o=[...i],s=await Promise.all(o.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,a),this.valueSchema._parseFullAsync(t,a)]))),c=[],l=new Map;for(let e=0;e<s.length;e++){let[n,r]=s[e];n.issues.length>0&&c.push(...t.prependIssuePath(n.issues,e)),r.issues.length>0&&c.push(...t.prependIssuePath(r.issues,e)),n.issues.length===0&&r.issues.length===0&&l.set(n.data,r.data)}let u=await this._runValidatorsAsync(l,a),d=[...c,...u];if(d.length>0)throw new t.SpellValidationError(d);return this._runPostprocessors(l)})}min(n,r){return this._addConstraint((i,a)=>{let o=i;return o.size>=n?null:t.fail(e.ErrorCode.too_small,t.resolveMessage(r??a.messages.map.min,{min:n,value:o}),{min:n})})}max(n,r){return this._addConstraint((i,a)=>{let o=i;return o.size<=n?null:t.fail(e.ErrorCode.too_big,t.resolveMessage(r??a.messages.map.max,{max:n,value:o}),{max:n})})}size(n,r){return this._addConstraint((i,a)=>{let o=i;return o.size===n?null:t.fail(e.ErrorCode.invalid_length,t.resolveMessage(r??a.messages.map.size,{exact:n,value:o}),{exact:n})})}nonEmpty(n){return this._addConstraint((r,i)=>r.size>0?null:t.fail(e.ErrorCode.too_small,t.resolveMessage(n??i.messages.map.nonEmpty,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`map`,value:this.valueSchema.definition()}}_walk(e){let t=this.keySchema.walk(e),n=this.valueSchema.walk(e);return e.map?e.map(this,t,n):super._walk(e)}};exports.MapSchema=r;
2
2
  //# sourceMappingURL=map.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.cjs","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type { Issue, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema, SpellValidationError, _makeCtx } from '../core';\nimport { _messages } from '../messages';\n\nexport class MapSchema<K, V> extends Schema<Map<K, V>> {\n readonly keySchema: Schema<K, any>;\n readonly valueSchema: Schema<V, any>;\n\n protected override get _kind(): string {\n return 'map';\n }\n\n constructor(keySchema: Schema<K, any>, valueSchema: Schema<V, any>) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n if (!(value instanceof Map)) {\n return {\n data: value,\n issues: [{ code: ErrorCode.invalid_type, message: ctx.messages.map.type(), path: [] }],\n typeOk: false,\n };\n }\n\n const out = new Map<K, V>();\n const issues: Issue[] = [];\n let i = 0;\n\n for (const [key, val] of value) {\n const keyResult = this.keySchema._parseFullSync(key, ctx);\n const valResult = this.valueSchema._parseFullSync(val, ctx);\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as K, valResult.data as V);\n\n i += 1;\n }\n\n return { data: out, issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<K, V>> {\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 unknown as Map<K, V>;\n\n const raw = prepared.value;\n\n if (!(raw instanceof Map)) {\n throw new SpellValidationError([{ code: ErrorCode.invalid_type, message: c.messages.map.type(), path: [] }]);\n }\n\n const entries = [...raw];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, c), this.valueSchema._parseFullAsync(val, c)]),\n ),\n );\n\n const issues: Issue[] = [];\n const out = new Map<K, V>();\n\n for (let i = 0; i < settled.length; i++) {\n const [keyResult, valResult] = settled[i];\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as K, valResult.data as V);\n }\n\n const validationIssues = await this._runValidatorsAsync(out, c);\n const allIssues = [...issues, ...validationIssues];\n\n if (allIssues.length > 0) throw new SpellValidationError(allIssues);\n\n return this._runPostprocessors(out) as Map<K, V>;\n });\n }\n\n min(\n size: number,\n message: MessageFn<{ min: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.min(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size >= size) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message, { min: size, value: typed }), { min: size });\n });\n }\n\n max(\n size: number,\n message: MessageFn<{ max: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.max(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size <= size) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message, { max: size, value: typed }), { max: size });\n });\n }\n\n size(\n exact: number,\n message: MessageFn<{ exact: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.size(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size === exact) return null;\n\n return fail(ErrorCode.invalid_length, resolveMessage(message, { exact, value: typed }), { exact });\n });\n }\n\n nonEmpty(message: MessageFn<{ min: number }> = () => _messages().map.nonEmpty()): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size > 0) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message, { min: 1 }), { min: 1 });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.toDescriptor(),\n kind: 'map',\n value: this.valueSchema.toDescriptor(),\n };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n const key = this.keySchema.walk(visitor);\n const value = this.valueSchema.walk(visitor);\n\n if (visitor.map) return visitor.map(this, key, value);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof MapSchema)) return false;\n\n return this.keySchema.equals(other.keySchema) && this.valueSchema.equals(other.valueSchema);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"map.cjs","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type { AnySchema, InferOutput, Issue, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema, SpellValidationError, _makeCtx } from '../core';\n\nexport class MapSchema<\n K extends AnySchema,\n V extends AnySchema,\n Mode extends import('../core').SchemaMode = import('../core').MergeSchemaModes<\n import('../core').InferSchemaMode<K | V>\n >,\n> extends Schema<Map<InferOutput<K>, InferOutput<V>>, unknown, Mode> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n protected override get _kind(): string {\n return 'map';\n }\n\n override checkAsync(\n this: MapSchema<K, V, 'sync'>,\n fn: (\n value: Map<InferOutput<K>, InferOutput<V>>,\n ctx: import('../core').CheckContext,\n ) => Promise<import('../core').ValidateResult>,\n ): MapSchema<K, V, 'async'> {\n return this._addCheck(fn, true) as unknown as MapSchema<K, V, 'async'>;\n }\n\n constructor(keySchema: K, valueSchema: V) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n if (!(value instanceof Map)) {\n return {\n data: value,\n issues: [{ code: ErrorCode.invalid_type, message: ctx.messages.map.type(), path: [] }],\n typeOk: false,\n };\n }\n\n const out = new Map<InferOutput<K>, InferOutput<V>>();\n const issues: Issue[] = [];\n let i = 0;\n\n for (const [key, val] of value) {\n const keyResult = this.keySchema._parseFullSync(key, ctx);\n const valResult = this.valueSchema._parseFullSync(val, ctx);\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as InferOutput<K>, valResult.data as InferOutput<V>);\n\n i += 1;\n }\n\n return { data: out, issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<InferOutput<K>, InferOutput<V>>> {\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 unknown as Map<InferOutput<K>, InferOutput<V>>;\n\n const raw = prepared.value;\n\n if (!(raw instanceof Map)) {\n throw new SpellValidationError([{ code: ErrorCode.invalid_type, message: c.messages.map.type(), path: [] }]);\n }\n\n const entries = [...raw];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, c), this.valueSchema._parseFullAsync(val, c)]),\n ),\n );\n\n const issues: Issue[] = [];\n const out = new Map<InferOutput<K>, InferOutput<V>>();\n\n for (let i = 0; i < settled.length; i++) {\n const [keyResult, valResult] = settled[i];\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as InferOutput<K>, valResult.data as InferOutput<V>);\n }\n\n const validationIssues = await this._runValidatorsAsync(out, c);\n const allIssues = [...issues, ...validationIssues];\n\n if (allIssues.length > 0) throw new SpellValidationError(allIssues);\n\n return this._runPostprocessors(out) as Map<InferOutput<K>, InferOutput<V>>;\n });\n }\n\n min(size: number, message?: MessageFn<{ min: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size >= size) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.map.min, { min: size, value: typed }), {\n min: size,\n });\n });\n }\n\n max(size: number, message?: MessageFn<{ max: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size <= size) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.map.max, { max: size, value: typed }), {\n max: size,\n });\n });\n }\n\n size(exact: number, message?: MessageFn<{ exact: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size === exact) return null;\n\n return fail(\n ErrorCode.invalid_length,\n resolveMessage(message ?? ctx!.messages.map.size, { exact, value: typed }),\n { exact },\n );\n });\n }\n\n nonEmpty(message?: MessageFn<{ min: number }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size > 0) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.map.nonEmpty, { min: 1 }), { min: 1 });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.definition(),\n kind: 'map',\n value: this.valueSchema.definition(),\n };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n const key = this.keySchema.walk(visitor);\n const value = this.valueSchema.walk(visitor);\n\n if (visitor.map) return visitor.map(this, key, value);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
- import type { MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';
1
+ import type { AnySchema, InferOutput, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class MapSchema<K, V> extends Schema<Map<K, V>> {
4
- readonly keySchema: Schema<K, any>;
5
- readonly valueSchema: Schema<V, any>;
3
+ export declare class MapSchema<K extends AnySchema, V extends AnySchema, Mode extends import('../core').SchemaMode = import('../core').MergeSchemaModes<import('../core').InferSchemaMode<K | V>>> extends Schema<Map<InferOutput<K>, InferOutput<V>>, unknown, Mode> {
4
+ readonly keySchema: K;
5
+ readonly valueSchema: V;
6
6
  protected get _kind(): string;
7
- constructor(keySchema: Schema<K, any>, valueSchema: Schema<V, any>);
7
+ checkAsync(this: MapSchema<K, V, 'sync'>, fn: (value: Map<InferOutput<K>, InferOutput<V>>, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>): MapSchema<K, V, 'async'>;
8
+ constructor(keySchema: K, valueSchema: V);
8
9
  protected _parse(value: unknown, ctx: ParseContext): ParseValue;
9
- parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<K, V>>;
10
+ parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<InferOutput<K>, InferOutput<V>>>;
10
11
  min(size: number, message?: MessageFn<{
11
12
  min: number;
12
13
  value: Map<unknown, unknown>;
@@ -24,6 +25,5 @@ export declare class MapSchema<K, V> extends Schema<Map<K, V>> {
24
25
  }>): this;
25
26
  protected _toDescriptorImpl(): SchemaDescriptor;
26
27
  protected _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null;
27
- protected _equalsImpl(other: import('../core').AnySchema): boolean;
28
28
  }
29
29
  //# sourceMappingURL=map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/schemas/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5F,OAAO,EAAqD,MAAM,EAAkC,MAAM,SAAS,CAAC;AAGpH,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAErC,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;cAM/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;IA8BzD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA4CjF,GAAG,CACD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAqC,GACpG,IAAI;IAUP,GAAG,CACD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAqC,GACpG,IAAI;IAUP,IAAI,CACF,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAsC,GACvG,IAAI;IAUP,QAAQ,CAAC,OAAO,GAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAoC,GAAG,IAAI;cAUnE,iBAAiB,IAAI,gBAAgB;cASrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAS9D,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,GAAG,OAAO;CAK5E"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/schemas/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAS,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEpH,OAAO,EAAqD,MAAM,EAAkC,MAAM,SAAS,CAAC;AAEpH,qBAAa,SAAS,CACpB,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,SAAS,EACnB,IAAI,SAAS,OAAO,SAAS,EAAE,UAAU,GAAG,OAAO,SAAS,EAAE,gBAAgB,CAC5E,OAAO,SAAS,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CACzC,CACD,SAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAExB,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAC7B,EAAE,EAAE,CACF,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAC1C,GAAG,EAAE,OAAO,SAAS,EAAE,YAAY,KAChC,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,GAC7C,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;gBAIf,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;cAMrB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;IA8BzD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IA4C3G,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAY3F,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAY3F,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAc/F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;cAUjC,iBAAiB,IAAI,gBAAgB;cASrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAQlF"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{SpellValidationError as t,fail as n,prependIssuePath as r,resolveMessage as i}from"../errors.js";import{_messages as a}from"../messages.js";import{Schema as o,_makeCtx as s}from"../core.js";var c=class c extends o{keySchema;valueSchema;get _kind(){return`map`}constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}_parse(t,n){if(!(t instanceof Map))return{data:t,issues:[{code:e.invalid_type,message:n.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[e,s]of t){let t=this.keySchema._parseFullSync(e,n),c=this.valueSchema._parseFullSync(s,n);t.issues.length>0&&a.push(...r(t.issues,o)),c.issues.length>0&&a.push(...r(c.issues,o)),t.issues.length===0&&c.issues.length===0&&i.set(t.data,c.data),o+=1}return{data:i,issues:a,typeOk:!0}}async parseAsync(n,i){let a=i??s();return this._withCatchAsync(async()=>{let i=this._prepareInput(n);if(i.skip)return i.value;let o=i.value;if(!(o instanceof Map))throw new t([{code:e.invalid_type,message:a.messages.map.type(),path:[]}]);let s=[...o],c=await Promise.all(s.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,a),this.valueSchema._parseFullAsync(t,a)]))),l=[],u=new Map;for(let e=0;e<c.length;e++){let[t,n]=c[e];t.issues.length>0&&l.push(...r(t.issues,e)),n.issues.length>0&&l.push(...r(n.issues,e)),t.issues.length===0&&n.issues.length===0&&u.set(t.data,n.data)}let d=await this._runValidatorsAsync(u,a),f=[...l,...d];if(f.length>0)throw new t(f);return this._runPostprocessors(u)})}min(t,r=e=>a().map.min(e)){return this._addConstraint((a,o)=>{let s=a;return s.size>=t?null:n(e.too_small,i(r,{min:t,value:s}),{min:t})})}max(t,r=e=>a().map.max(e)){return this._addConstraint((a,o)=>{let s=a;return s.size<=t?null:n(e.too_big,i(r,{max:t,value:s}),{max:t})})}size(t,r=e=>a().map.size(e)){return this._addConstraint((a,o)=>{let s=a;return s.size===t?null:n(e.invalid_length,i(r,{exact:t,value:s}),{exact:t})})}nonEmpty(t=()=>a().map.nonEmpty()){return this._addConstraint((r,a)=>r.size>0?null:n(e.too_small,i(t,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.toDescriptor(),kind:`map`,value:this.valueSchema.toDescriptor()}}_walk(e){let t=this.keySchema.walk(e),n=this.valueSchema.walk(e);return e.map?e.map(this,t,n):super._walk(e)}_equalsImpl(e){return e instanceof c?this.keySchema.equals(e.keySchema)&&this.valueSchema.equals(e.valueSchema):!1}};export{c as MapSchema};
1
+ import{ErrorCode as e}from"../types.js";import{SpellValidationError as t,fail as n,prependIssuePath as r,resolveMessage as i}from"../errors.js";import{Schema as a,_makeCtx as o}from"../core.js";var s=class extends a{keySchema;valueSchema;get _kind(){return`map`}checkAsync(e){return this._addCheck(e,!0)}constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}_parse(t,n){if(!(t instanceof Map))return{data:t,issues:[{code:e.invalid_type,message:n.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[e,s]of t){let t=this.keySchema._parseFullSync(e,n),c=this.valueSchema._parseFullSync(s,n);t.issues.length>0&&a.push(...r(t.issues,o)),c.issues.length>0&&a.push(...r(c.issues,o)),t.issues.length===0&&c.issues.length===0&&i.set(t.data,c.data),o+=1}return{data:i,issues:a,typeOk:!0}}async parseAsync(n,i){let a=i??o();return this._withCatchAsync(async()=>{let i=this._prepareInput(n);if(i.skip)return i.value;let o=i.value;if(!(o instanceof Map))throw new t([{code:e.invalid_type,message:a.messages.map.type(),path:[]}]);let s=[...o],c=await Promise.all(s.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,a),this.valueSchema._parseFullAsync(t,a)]))),l=[],u=new Map;for(let e=0;e<c.length;e++){let[t,n]=c[e];t.issues.length>0&&l.push(...r(t.issues,e)),n.issues.length>0&&l.push(...r(n.issues,e)),t.issues.length===0&&n.issues.length===0&&u.set(t.data,n.data)}let d=await this._runValidatorsAsync(u,a),f=[...l,...d];if(f.length>0)throw new t(f);return this._runPostprocessors(u)})}min(t,r){return this._addConstraint((a,o)=>{let s=a;return s.size>=t?null:n(e.too_small,i(r??o.messages.map.min,{min:t,value:s}),{min:t})})}max(t,r){return this._addConstraint((a,o)=>{let s=a;return s.size<=t?null:n(e.too_big,i(r??o.messages.map.max,{max:t,value:s}),{max:t})})}size(t,r){return this._addConstraint((a,o)=>{let s=a;return s.size===t?null:n(e.invalid_length,i(r??o.messages.map.size,{exact:t,value:s}),{exact:t})})}nonEmpty(t){return this._addConstraint((r,a)=>r.size>0?null:n(e.too_small,i(t??a.messages.map.nonEmpty,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`map`,value:this.valueSchema.definition()}}_walk(e){let t=this.keySchema.walk(e),n=this.valueSchema.walk(e);return e.map?e.map(this,t,n):super._walk(e)}};export{s as MapSchema};
2
2
  //# sourceMappingURL=map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type { Issue, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema, SpellValidationError, _makeCtx } from '../core';\nimport { _messages } from '../messages';\n\nexport class MapSchema<K, V> extends Schema<Map<K, V>> {\n readonly keySchema: Schema<K, any>;\n readonly valueSchema: Schema<V, any>;\n\n protected override get _kind(): string {\n return 'map';\n }\n\n constructor(keySchema: Schema<K, any>, valueSchema: Schema<V, any>) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n if (!(value instanceof Map)) {\n return {\n data: value,\n issues: [{ code: ErrorCode.invalid_type, message: ctx.messages.map.type(), path: [] }],\n typeOk: false,\n };\n }\n\n const out = new Map<K, V>();\n const issues: Issue[] = [];\n let i = 0;\n\n for (const [key, val] of value) {\n const keyResult = this.keySchema._parseFullSync(key, ctx);\n const valResult = this.valueSchema._parseFullSync(val, ctx);\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as K, valResult.data as V);\n\n i += 1;\n }\n\n return { data: out, issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<K, V>> {\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 unknown as Map<K, V>;\n\n const raw = prepared.value;\n\n if (!(raw instanceof Map)) {\n throw new SpellValidationError([{ code: ErrorCode.invalid_type, message: c.messages.map.type(), path: [] }]);\n }\n\n const entries = [...raw];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, c), this.valueSchema._parseFullAsync(val, c)]),\n ),\n );\n\n const issues: Issue[] = [];\n const out = new Map<K, V>();\n\n for (let i = 0; i < settled.length; i++) {\n const [keyResult, valResult] = settled[i];\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as K, valResult.data as V);\n }\n\n const validationIssues = await this._runValidatorsAsync(out, c);\n const allIssues = [...issues, ...validationIssues];\n\n if (allIssues.length > 0) throw new SpellValidationError(allIssues);\n\n return this._runPostprocessors(out) as Map<K, V>;\n });\n }\n\n min(\n size: number,\n message: MessageFn<{ min: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.min(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size >= size) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message, { min: size, value: typed }), { min: size });\n });\n }\n\n max(\n size: number,\n message: MessageFn<{ max: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.max(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size <= size) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message, { max: size, value: typed }), { max: size });\n });\n }\n\n size(\n exact: number,\n message: MessageFn<{ exact: number; value: Map<unknown, unknown> }> = (ctx) => _messages().map.size(ctx),\n ): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size === exact) return null;\n\n return fail(ErrorCode.invalid_length, resolveMessage(message, { exact, value: typed }), { exact });\n });\n }\n\n nonEmpty(message: MessageFn<{ min: number }> = () => _messages().map.nonEmpty()): this {\n return this._addConstraint((value, _ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size > 0) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message, { min: 1 }), { min: 1 });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.toDescriptor(),\n kind: 'map',\n value: this.valueSchema.toDescriptor(),\n };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n const key = this.keySchema.walk(visitor);\n const value = this.valueSchema.walk(visitor);\n\n if (visitor.map) return visitor.map(this, key, value);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n if (!(other instanceof MapSchema)) return false;\n\n return this.keySchema.equals(other.keySchema) && this.valueSchema.equals(other.valueSchema);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"map.js","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type { AnySchema, InferOutput, Issue, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema, SpellValidationError, _makeCtx } from '../core';\n\nexport class MapSchema<\n K extends AnySchema,\n V extends AnySchema,\n Mode extends import('../core').SchemaMode = import('../core').MergeSchemaModes<\n import('../core').InferSchemaMode<K | V>\n >,\n> extends Schema<Map<InferOutput<K>, InferOutput<V>>, unknown, Mode> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n protected override get _kind(): string {\n return 'map';\n }\n\n override checkAsync(\n this: MapSchema<K, V, 'sync'>,\n fn: (\n value: Map<InferOutput<K>, InferOutput<V>>,\n ctx: import('../core').CheckContext,\n ) => Promise<import('../core').ValidateResult>,\n ): MapSchema<K, V, 'async'> {\n return this._addCheck(fn, true) as unknown as MapSchema<K, V, 'async'>;\n }\n\n constructor(keySchema: K, valueSchema: V) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n if (!(value instanceof Map)) {\n return {\n data: value,\n issues: [{ code: ErrorCode.invalid_type, message: ctx.messages.map.type(), path: [] }],\n typeOk: false,\n };\n }\n\n const out = new Map<InferOutput<K>, InferOutput<V>>();\n const issues: Issue[] = [];\n let i = 0;\n\n for (const [key, val] of value) {\n const keyResult = this.keySchema._parseFullSync(key, ctx);\n const valResult = this.valueSchema._parseFullSync(val, ctx);\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as InferOutput<K>, valResult.data as InferOutput<V>);\n\n i += 1;\n }\n\n return { data: out, issues, typeOk: true };\n }\n\n override async parseAsync(value: unknown, ctx?: ParseContext): Promise<Map<InferOutput<K>, InferOutput<V>>> {\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 unknown as Map<InferOutput<K>, InferOutput<V>>;\n\n const raw = prepared.value;\n\n if (!(raw instanceof Map)) {\n throw new SpellValidationError([{ code: ErrorCode.invalid_type, message: c.messages.map.type(), path: [] }]);\n }\n\n const entries = [...raw];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, c), this.valueSchema._parseFullAsync(val, c)]),\n ),\n );\n\n const issues: Issue[] = [];\n const out = new Map<InferOutput<K>, InferOutput<V>>();\n\n for (let i = 0; i < settled.length; i++) {\n const [keyResult, valResult] = settled[i];\n\n if (keyResult.issues.length > 0) issues.push(...prependIssuePath(keyResult.issues, i));\n\n if (valResult.issues.length > 0) issues.push(...prependIssuePath(valResult.issues, i));\n\n if (keyResult.issues.length === 0 && valResult.issues.length === 0)\n out.set(keyResult.data as InferOutput<K>, valResult.data as InferOutput<V>);\n }\n\n const validationIssues = await this._runValidatorsAsync(out, c);\n const allIssues = [...issues, ...validationIssues];\n\n if (allIssues.length > 0) throw new SpellValidationError(allIssues);\n\n return this._runPostprocessors(out) as Map<InferOutput<K>, InferOutput<V>>;\n });\n }\n\n min(size: number, message?: MessageFn<{ min: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size >= size) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.map.min, { min: size, value: typed }), {\n min: size,\n });\n });\n }\n\n max(size: number, message?: MessageFn<{ max: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size <= size) return null;\n\n return fail(ErrorCode.too_big, resolveMessage(message ?? ctx!.messages.map.max, { max: size, value: typed }), {\n max: size,\n });\n });\n }\n\n size(exact: number, message?: MessageFn<{ exact: number; value: Map<unknown, unknown> }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size === exact) return null;\n\n return fail(\n ErrorCode.invalid_length,\n resolveMessage(message ?? ctx!.messages.map.size, { exact, value: typed }),\n { exact },\n );\n });\n }\n\n nonEmpty(message?: MessageFn<{ min: number }>): this {\n return this._addConstraint((value, ctx) => {\n const typed = value as Map<unknown, unknown>;\n\n if (typed.size > 0) return null;\n\n return fail(ErrorCode.too_small, resolveMessage(message ?? ctx!.messages.map.nonEmpty, { min: 1 }), { min: 1 });\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.definition(),\n kind: 'map',\n value: this.valueSchema.definition(),\n };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n const key = this.keySchema.walk(visitor);\n const value = this.valueSchema.walk(visitor);\n\n if (visitor.map) return visitor.map(this, key, value);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../types.cjs"),t=require("../messages.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{get _kind(){return`never`}constructor(){super((n,r)=>[{code:e.ErrorCode.invalid_type,message:(r?.messages??t._messages()).never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}_walk(e){return e.never?e.never(this):super._walk(e)}_equalsImpl(e){return e instanceof r}};exports.NeverSchema=r;
1
+ const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{get _kind(){return`never`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((t,n)=>[{code:e.ErrorCode.invalid_type,message:n.messages.never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}_walk(e){return e.never?e.never(this):super._walk(e)}};exports.NeverSchema=n;
2
2
  //# sourceMappingURL=never.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"never.cjs","names":[],"sources":["../../src/schemas/never.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\nimport { _messages } from '../messages';\n\nexport class NeverSchema extends Schema<never> {\n protected override get _kind(): string {\n return 'never';\n }\n\n constructor() {\n super((_value, ctx) => [\n { code: ErrorCode.invalid_type, message: (ctx?.messages ?? _messages()).never.invalid(), path: [] },\n ]);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n if (visitor.never) return visitor.never(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n return other instanceof NeverSchema;\n }\n}\n"],"mappings":"sFAKA,IAAa,EAAb,MAAa,UAAoB,EAAA,MAAc,CAC7C,IAAuB,OAAgB,CACrC,MAAO,OACT,CAEA,aAAc,CACZ,OAAO,EAAQ,IAAQ,CACrB,CAAE,KAAM,EAAA,UAAU,aAAc,SAAU,GAAK,UAAY,EAAA,UAAU,EAAA,CAAG,MAAM,QAAQ,EAAG,KAAM,CAAC,CAAE,CACpG,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CAEA,MAA4B,EAAsD,CAGhF,OAFI,EAAQ,MAAc,EAAQ,MAAM,IAAI,EAErC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAC1E,OAAO,aAAiB,CAC1B,CACF"}
1
+ {"version":3,"file":"never.cjs","names":[],"sources":["../../src/schemas/never.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class NeverSchema<Mode extends import('../core').SchemaMode = 'sync'> extends Schema<never, never, Mode> {\n protected override get _kind(): string {\n return 'never';\n }\n\n override checkAsync(\n this: NeverSchema<'sync'>,\n fn: (value: never, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>,\n ): NeverSchema<'async'> {\n return this._addCheck(fn, true) as unknown as NeverSchema<'async'>;\n }\n\n constructor() {\n super((_value, ctx) => [{ code: ErrorCode.invalid_type, message: ctx!.messages.never.invalid(), path: [] }]);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n if (visitor.never) return visitor.never(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAAqF,EAAA,MAA2B,CAC9G,IAAuB,OAAgB,CACrC,MAAO,OACT,CAEA,WAEE,EACsB,CACtB,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAQ,IAAQ,CAAC,CAAE,KAAM,EAAA,UAAU,aAAc,QAAS,EAAK,SAAS,MAAM,QAAQ,EAAG,KAAM,CAAC,CAAE,CAAC,CAAC,CAC7G,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CAEA,MAA4B,EAAsD,CAGhF,OAFI,EAAQ,MAAc,EAAQ,MAAM,IAAI,EAErC,MAAM,MAAM,CAAO,CAC5B,CACF"}
@@ -1,10 +1,10 @@
1
1
  import type { SchemaDescriptor } from '../core';
2
2
  import { Schema } from '../core';
3
- export declare class NeverSchema extends Schema<never> {
3
+ export declare class NeverSchema<Mode extends import('../core').SchemaMode = 'sync'> extends Schema<never, never, Mode> {
4
4
  protected get _kind(): string;
5
+ checkAsync(this: NeverSchema<'sync'>, fn: (value: never, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>): NeverSchema<'async'>;
5
6
  constructor();
6
7
  protected _toDescriptorImpl(): SchemaDescriptor;
7
8
  protected _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null;
8
- protected _equalsImpl(other: import('../core').AnySchema): boolean;
9
9
  }
10
10
  //# sourceMappingURL=never.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"never.d.ts","sourceRoot":"","sources":["../../src/schemas/never.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAG5C,qBAAa,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAC;IAC5C,cAAuB,KAAK,IAAI,MAAM,CAErC;;cAQkB,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;cAM9D,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,GAAG,OAAO;CAG5E"}
1
+ {"version":3,"file":"never.d.ts","sourceRoot":"","sources":["../../src/schemas/never.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,WAAW,CAAC,IAAI,SAAS,OAAO,SAAS,EAAE,UAAU,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IAC7G,cAAuB,KAAK,IAAI,MAAM,CAErC;IAEQ,UAAU,CACjB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,GACnG,WAAW,CAAC,OAAO,CAAC;;cAQJ,iBAAiB,IAAI,gBAAgB;cAIrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;CAKlF"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e}from"../types.js";import{_messages as t}from"../messages.js";import{Schema as n}from"../core.js";var r=class r extends n{get _kind(){return`never`}constructor(){super((n,r)=>[{code:e.invalid_type,message:(r?.messages??t()).never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}_walk(e){return e.never?e.never(this):super._walk(e)}_equalsImpl(e){return e instanceof r}};export{r as NeverSchema};
1
+ import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{get _kind(){return`never`}checkAsync(e){return this._addCheck(e,!0)}constructor(){super((t,n)=>[{code:e.invalid_type,message:n.messages.never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}_walk(e){return e.never?e.never(this):super._walk(e)}};export{n as NeverSchema};
2
2
  //# sourceMappingURL=never.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"never.js","names":[],"sources":["../../src/schemas/never.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\nimport { _messages } from '../messages';\n\nexport class NeverSchema extends Schema<never> {\n protected override get _kind(): string {\n return 'never';\n }\n\n constructor() {\n super((_value, ctx) => [\n { code: ErrorCode.invalid_type, message: (ctx?.messages ?? _messages()).never.invalid(), path: [] },\n ]);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n if (visitor.never) return visitor.never(this);\n\n return super._walk(visitor);\n }\n\n protected override _equalsImpl(other: import('../core').AnySchema): boolean {\n return other instanceof NeverSchema;\n }\n}\n"],"mappings":"uHAKA,IAAa,EAAb,MAAa,UAAoB,CAAc,CAC7C,IAAuB,OAAgB,CACrC,MAAO,OACT,CAEA,aAAc,CACZ,OAAO,EAAQ,IAAQ,CACrB,CAAE,KAAM,EAAU,aAAc,SAAU,GAAK,UAAY,EAAU,EAAA,CAAG,MAAM,QAAQ,EAAG,KAAM,CAAC,CAAE,CACpG,CAAC,CACH,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CAEA,MAA4B,EAAsD,CAGhF,OAFI,EAAQ,MAAc,EAAQ,MAAM,IAAI,EAErC,MAAM,MAAM,CAAO,CAC5B,CAEA,YAA+B,EAA6C,CAC1E,OAAO,aAAiB,CAC1B,CACF"}
1
+ {"version":3,"file":"never.js","names":[],"sources":["../../src/schemas/never.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class NeverSchema<Mode extends import('../core').SchemaMode = 'sync'> extends Schema<never, never, Mode> {\n protected override get _kind(): string {\n return 'never';\n }\n\n override checkAsync(\n this: NeverSchema<'sync'>,\n fn: (value: never, ctx: import('../core').CheckContext) => Promise<import('../core').ValidateResult>,\n ): NeverSchema<'async'> {\n return this._addCheck(fn, true) as unknown as NeverSchema<'async'>;\n }\n\n constructor() {\n super((_value, ctx) => [{ code: ErrorCode.invalid_type, message: ctx!.messages.never.invalid(), path: [] }]);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n\n protected override _walk<R>(visitor: import('../core').SchemaWalker<R>): R | null {\n if (visitor.never) return visitor.never(this);\n\n return super._walk(visitor);\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,cAAqF,CAA2B,CAC9G,IAAuB,OAAgB,CACrC,MAAO,OACT,CAEA,WAEE,EACsB,CACtB,OAAO,KAAK,UAAU,EAAI,EAAI,CAChC,CAEA,aAAc,CACZ,OAAO,EAAQ,IAAQ,CAAC,CAAE,KAAM,EAAU,aAAc,QAAS,EAAK,SAAS,MAAM,QAAQ,EAAG,KAAM,CAAC,CAAE,CAAC,CAAC,CAC7G,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CAEA,MAA4B,EAAsD,CAGhF,OAFI,EAAQ,MAAc,EAAQ,MAAM,IAAI,EAErC,MAAM,MAAM,CAAO,CAC5B,CACF"}