@vielzeug/spell 26.11.8 → 26.11.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_dev.cjs.map +1 -1
- package/dist/_dev.js.map +1 -1
- package/dist/_object.cjs +2 -0
- package/dist/_object.cjs.map +1 -0
- package/dist/_object.d.ts +9 -0
- package/dist/_object.d.ts.map +1 -0
- package/dist/_object.js +2 -0
- package/dist/_object.js.map +1 -0
- package/dist/_parse.cjs +2 -0
- package/dist/_parse.cjs.map +1 -0
- package/dist/_parse.d.ts +38 -0
- package/dist/_parse.d.ts.map +1 -0
- package/dist/_parse.js +2 -0
- package/dist/_parse.js.map +1 -0
- package/dist/errors.cjs +2 -2
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +15 -26
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/json.cjs +2 -1
- package/dist/json.cjs.map +1 -0
- package/dist/json.d.ts +8 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +2 -1
- package/dist/json.js.map +1 -0
- package/dist/messages.cjs +1 -1
- package/dist/messages.cjs.map +1 -1
- package/dist/messages.d.ts +7 -6
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +1 -1
- package/dist/messages.js.map +1 -1
- package/dist/predicates.cjs +2 -1
- package/dist/predicates.cjs.map +1 -0
- package/dist/predicates.d.ts +41 -2
- package/dist/predicates.d.ts.map +1 -1
- package/dist/predicates.js +2 -1
- package/dist/predicates.js.map +1 -0
- package/dist/s.cjs +1 -1
- package/dist/s.cjs.map +1 -1
- package/dist/s.d.ts +21 -22
- package/dist/s.d.ts.map +1 -1
- package/dist/s.js +1 -1
- package/dist/s.js.map +1 -1
- package/dist/schema.cjs +2 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.ts +93 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/schemas/array.cjs +1 -1
- package/dist/schemas/array.cjs.map +1 -1
- package/dist/schemas/array.d.ts +22 -32
- package/dist/schemas/array.d.ts.map +1 -1
- package/dist/schemas/array.js +1 -1
- package/dist/schemas/array.js.map +1 -1
- package/dist/schemas/bigint.cjs +1 -1
- package/dist/schemas/bigint.cjs.map +1 -1
- package/dist/schemas/bigint.d.ts +14 -18
- package/dist/schemas/bigint.d.ts.map +1 -1
- package/dist/schemas/bigint.js +1 -1
- package/dist/schemas/bigint.js.map +1 -1
- package/dist/schemas/date.cjs +1 -1
- package/dist/schemas/date.cjs.map +1 -1
- package/dist/schemas/date.d.ts +7 -6
- package/dist/schemas/date.d.ts.map +1 -1
- package/dist/schemas/date.js +1 -1
- package/dist/schemas/date.js.map +1 -1
- package/dist/schemas/discriminated-union.cjs +2 -0
- package/dist/schemas/discriminated-union.cjs.map +1 -0
- package/dist/schemas/discriminated-union.d.ts +39 -0
- package/dist/schemas/discriminated-union.d.ts.map +1 -0
- package/dist/schemas/discriminated-union.js +2 -0
- package/dist/schemas/discriminated-union.js.map +1 -0
- package/dist/schemas/intersect.cjs +1 -1
- package/dist/schemas/intersect.cjs.map +1 -1
- package/dist/schemas/intersect.d.ts +10 -9
- package/dist/schemas/intersect.d.ts.map +1 -1
- package/dist/schemas/intersect.js +1 -1
- package/dist/schemas/intersect.js.map +1 -1
- package/dist/schemas/lazy.cjs +1 -1
- package/dist/schemas/lazy.cjs.map +1 -1
- package/dist/schemas/lazy.d.ts +10 -10
- package/dist/schemas/lazy.d.ts.map +1 -1
- package/dist/schemas/lazy.js +1 -1
- package/dist/schemas/lazy.js.map +1 -1
- package/dist/schemas/map.cjs +1 -1
- package/dist/schemas/map.cjs.map +1 -1
- package/dist/schemas/map.d.ts +8 -7
- package/dist/schemas/map.d.ts.map +1 -1
- package/dist/schemas/map.js +1 -1
- package/dist/schemas/map.js.map +1 -1
- package/dist/schemas/number.cjs +1 -1
- package/dist/schemas/number.cjs.map +1 -1
- package/dist/schemas/number.d.ts +20 -27
- package/dist/schemas/number.d.ts.map +1 -1
- package/dist/schemas/number.js +1 -1
- package/dist/schemas/number.js.map +1 -1
- package/dist/schemas/object.cjs +1 -1
- package/dist/schemas/object.cjs.map +1 -1
- package/dist/schemas/object.d.ts +40 -88
- package/dist/schemas/object.d.ts.map +1 -1
- package/dist/schemas/object.js +1 -1
- package/dist/schemas/object.js.map +1 -1
- package/dist/schemas/primitives.cjs +2 -0
- package/dist/schemas/primitives.cjs.map +1 -0
- package/dist/schemas/primitives.d.ts +38 -0
- package/dist/schemas/primitives.d.ts.map +1 -0
- package/dist/schemas/primitives.js +2 -0
- package/dist/schemas/primitives.js.map +1 -0
- package/dist/schemas/record.cjs +1 -1
- package/dist/schemas/record.cjs.map +1 -1
- package/dist/schemas/record.d.ts +7 -8
- package/dist/schemas/record.d.ts.map +1 -1
- package/dist/schemas/record.js +1 -1
- package/dist/schemas/record.js.map +1 -1
- package/dist/schemas/set.cjs +1 -1
- package/dist/schemas/set.cjs.map +1 -1
- package/dist/schemas/set.d.ts +8 -7
- package/dist/schemas/set.d.ts.map +1 -1
- package/dist/schemas/set.js +1 -1
- package/dist/schemas/set.js.map +1 -1
- package/dist/schemas/string.cjs +1 -1
- package/dist/schemas/string.cjs.map +1 -1
- package/dist/schemas/string.d.ts +42 -98
- package/dist/schemas/string.d.ts.map +1 -1
- package/dist/schemas/string.js +1 -1
- package/dist/schemas/string.js.map +1 -1
- package/dist/schemas/tuple.cjs +1 -1
- package/dist/schemas/tuple.cjs.map +1 -1
- package/dist/schemas/tuple.d.ts +9 -9
- package/dist/schemas/tuple.d.ts.map +1 -1
- package/dist/schemas/tuple.js +1 -1
- package/dist/schemas/tuple.js.map +1 -1
- package/dist/schemas/union.cjs +1 -1
- package/dist/schemas/union.cjs.map +1 -1
- package/dist/schemas/union.d.ts +9 -7
- package/dist/schemas/union.d.ts.map +1 -1
- package/dist/schemas/union.js +1 -1
- package/dist/schemas/union.js.map +1 -1
- package/dist/spell.cjs +2 -2
- package/dist/spell.cjs.map +1 -1
- package/dist/spell.iife.js +2 -2
- package/dist/spell.iife.js.map +1 -1
- package/dist/spell.js +842 -1601
- package/dist/spell.js.map +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +151 -265
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/core.cjs +0 -2
- package/dist/core.cjs.map +0 -1
- package/dist/core.d.ts +0 -101
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -2
- package/dist/core.js.map +0 -1
- package/dist/formats.cjs +0 -2
- package/dist/formats.cjs.map +0 -1
- package/dist/formats.d.ts +0 -41
- package/dist/formats.d.ts.map +0 -1
- package/dist/formats.js +0 -2
- package/dist/formats.js.map +0 -1
- package/dist/json-schema.cjs +0 -2
- package/dist/json-schema.cjs.map +0 -1
- package/dist/json-schema.d.ts +0 -5
- package/dist/json-schema.d.ts.map +0 -1
- package/dist/json-schema.js +0 -2
- package/dist/json-schema.js.map +0 -1
- package/dist/safe-object.cjs +0 -2
- package/dist/safe-object.cjs.map +0 -1
- package/dist/safe-object.d.ts +0 -6
- package/dist/safe-object.d.ts.map +0 -1
- package/dist/safe-object.js +0 -2
- package/dist/safe-object.js.map +0 -1
- package/dist/schemas/boolean.cjs +0 -2
- package/dist/schemas/boolean.cjs.map +0 -1
- package/dist/schemas/boolean.d.ts +0 -9
- package/dist/schemas/boolean.d.ts.map +0 -1
- package/dist/schemas/boolean.js +0 -2
- package/dist/schemas/boolean.js.map +0 -1
- package/dist/schemas/enum.cjs +0 -2
- package/dist/schemas/enum.cjs.map +0 -1
- package/dist/schemas/enum.d.ts +0 -12
- package/dist/schemas/enum.d.ts.map +0 -1
- package/dist/schemas/enum.js +0 -2
- package/dist/schemas/enum.js.map +0 -1
- package/dist/schemas/instanceof.cjs +0 -2
- package/dist/schemas/instanceof.cjs.map +0 -1
- package/dist/schemas/instanceof.d.ts +0 -9
- package/dist/schemas/instanceof.d.ts.map +0 -1
- package/dist/schemas/instanceof.js +0 -2
- package/dist/schemas/instanceof.js.map +0 -1
- package/dist/schemas/literal.cjs +0 -2
- package/dist/schemas/literal.cjs.map +0 -1
- package/dist/schemas/literal.d.ts +0 -9
- package/dist/schemas/literal.d.ts.map +0 -1
- package/dist/schemas/literal.js +0 -2
- package/dist/schemas/literal.js.map +0 -1
- package/dist/schemas/never.cjs +0 -2
- package/dist/schemas/never.cjs.map +0 -1
- package/dist/schemas/never.d.ts +0 -8
- package/dist/schemas/never.d.ts.map +0 -1
- package/dist/schemas/never.js +0 -2
- package/dist/schemas/never.js.map +0 -1
- package/dist/schemas/raw-or.cjs +0 -2
- package/dist/schemas/raw-or.cjs.map +0 -1
- package/dist/schemas/raw-or.d.ts +0 -17
- package/dist/schemas/raw-or.d.ts.map +0 -1
- package/dist/schemas/raw-or.js +0 -2
- package/dist/schemas/raw-or.js.map +0 -1
- package/dist/schemas/variant.cjs +0 -2
- package/dist/schemas/variant.cjs.map +0 -1
- package/dist/schemas/variant.d.ts +0 -37
- package/dist/schemas/variant.d.ts.map +0 -1
- package/dist/schemas/variant.js +0 -2
- package/dist/schemas/variant.js.map +0 -1
- package/dist/tolerate.cjs +0 -2
- package/dist/tolerate.cjs.map +0 -1
- package/dist/tolerate.d.ts +0 -10
- package/dist/tolerate.d.ts.map +0 -1
- package/dist/tolerate.js +0 -2
- package/dist/tolerate.js.map +0 -1
- package/dist/validators.cjs +0 -2
- package/dist/validators.cjs.map +0 -1
- package/dist/validators.d.ts +0 -20
- package/dist/validators.d.ts.map +0 -1
- package/dist/validators.js +0 -2
- package/dist/validators.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,UAAU,EAEf,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAC5C,KAAK,iBAAiB,CAAC,CAAC,SAAS,WAAW,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAErH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AACvF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,IAAI,QAAQ,CAC5D;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KACnE,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,CACF,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC;AAEpH,2FAA2F;AAC3F,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC,qBAAa,YAAY,CAAC,CAAC,SAAS,WAAW,CAAE,SAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,KAAK,EAAE,CAAC,EAAE,WAAW,GAAE,WAAsB,EAAE,SAAS,GAAE,SAAS,MAAM,EAAO;IAO5F,IAAa,IAAI,IAAI,UAAU,CAE9B;IAED;;;OAGG;cACgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAsCpF,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IAIf,wEAAwE;IACxE,MAAM,IAAI,IAAI;IAId;;;OAGG;IACH,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAMjC,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAIrF,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMxE,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMxE,uDAAuD;IACvD,OAAO,IAAI,YAAY,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAC3D,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;SAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,CAAC;IAYpH,4CAA4C;IAC5C,KAAK,IAAI,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAoBhE,0GAA0G;IAC1G,OAAO,CAAC,OAAO;cAYI,SAAS,IAAI,gBAAgB;CAajD"}
|
package/dist/schemas/object.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{defineOwnProperty as e,isUnsafeObjectKey as t,objectFromEntries as n}from"../_object.js";import{all as r,chain as i,invalid as a,issue as o,prefixIssues as s}from"../_parse.js";import{SpellDefinitionError as c}from"../errors.js";import{Schema as l}from"../schema.js";import{ErrorCode as u}from"../types.js";import{EnumSchema as d}from"./primitives.js";var f=class f extends l{shape;_unknownKeys;_tolerated;constructor(e,t=`strict`,r=[]){super(),this.shape=Object.freeze(n(Object.entries(e))),this._unknownKeys=t,this._tolerated=Object.freeze([...new Set(r)])}get kind(){return`object`}_parse(n,c){if(typeof n!=`object`||!n||Array.isArray(n))return a(n,o(u.invalid_type,c.messages.object.type()));let l=n,d=Object.keys(this.shape),f=Object.keys(l).filter(e=>!Object.hasOwn(this.shape,e)&&!this._tolerated.includes(e));return i(r(d.map(e=>this.shape[e]._run(l[e],c))),n=>{let r=[],i={};if(f.length>0&&this._unknownKeys===`strict`&&r.push(o(u.invalid_keys,c.messages.object.invalidKeys({keys:f}),{keys:f})),n.forEach((t,n)=>{let a=d[n];t.issues.length>0?r.push(...s(t.issues,a)):(t.value!==void 0||Object.hasOwn(l,a))&&e(i,a,t.value)}),this._unknownKeys===`relaxed`)for(let n of f)t(n)||e(i,n,l[n]);return{issues:r,typeOk:!0,value:i}})}relaxed(){return this._withShape(this.shape,`relaxed`)}strict(){return this._withShape(this.shape,`strict`)}tolerate(...e){return this._withShape(this.shape,this._unknownKeys,[...this._tolerated,...e])}extend(e){return this._derive({...this.shape,...e})}pick(...e){let t=n(Object.entries(this.shape).filter(([t])=>e.includes(t)));return this._derive(t)}omit(...e){let t=n(Object.entries(this.shape).filter(([t])=>!e.includes(t)));return this._derive(t)}partial(...e){return this._derive(n(Object.entries(this.shape).map(([t,n])=>[t,e.length===0||e.includes(t)?n.optional():n])))}keyof(){return new d(Object.keys(this.shape))}_withShape(e,t=this._unknownKeys,n=this._tolerated){let r=new f(e,t,n);return r.state=this.state,r}_derive(e){let{catch:t,default:n,preprocess:r,steps:i}=this.state;if(i.length>0||r.length>0||t||n)throw new c(`Cannot derive a new shape from an object schema with checks, transforms, preprocessors, defaults, or catches. Derive the shape first, then add them.`);return this._withShape(e)}_describe(){let t={};for(let[n,r]of Object.entries(this.shape))e(t,n,r.definition());return{...this._describeBase(),fields:t,kind:`object`,strict:this._unknownKeys===`strict`,...this._tolerated.length>0&&{tolerated:this._tolerated}}}};export{f as ObjectSchema};
|
|
2
2
|
//# sourceMappingURL=object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","names":["ObjectSchema","Schema","objectFromEntries","shape","isRelaxed","obj","k","unknownKeys","ErrorCode","ctx","key","isUnsafeObjectKey","defineOwnProperty","output","value","guarded","result","issues","prependIssuePath","keys","results","i","targetKeys","s","extra","keySet","parsed","schemas","LiteralSchema","UnionSchema","fields","schema","other"],"sources":["../../src/schemas/object.ts"],"sourcesContent":["import type {\n AcceptsMissing,\n AnySchema,\n InferInput,\n InferOutput,\n Issue,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n} from '../core';\n\nimport { ErrorCode, prependIssuePath, Schema } from '../core';\nimport { defineOwnProperty, isUnsafeObjectKey, objectFromEntries } from '../safe-object';\nimport { LiteralSchema } from './literal';\nimport { UnionSchema } from './union';\n\nexport type ObjectShape = Record<string, AnySchema>;\nexport type InferObject<T extends ObjectShape> = { [K in keyof T]: InferOutput<T[K]> };\ntype OptionalInputKeys<T extends ObjectShape> = {\n [K in keyof T]: T[K] extends AcceptsMissing ? K : never;\n}[keyof T];\ntype Simplify<T> = { [K in keyof T]: T[K] };\nexport type InferObjectInput<T extends ObjectShape> = Simplify<\n { [K in Exclude<keyof T, OptionalInputKeys<T>>]: InferInput<T[K]> } & {\n [K in OptionalInputKeys<T>]?: InferInput<T[K]>;\n }\n>;\n\nexport class ObjectSchema<T extends ObjectShape> extends Schema<InferObject<T>, InferObjectInput<T>> {\n readonly shape: T;\n private readonly _isRelaxed: boolean;\n\n protected override get _kind(): string {\n return 'object';\n }\n\n constructor(shape: T, isRelaxed = false) {\n super();\n this.shape = Object.freeze(objectFromEntries(Object.entries(shape))) as T;\n this._isRelaxed = isRelaxed;\n }\n\n private _unknownKeys(obj: Record<string, unknown>): string[] {\n return Object.keys(obj).filter((k) => !Object.hasOwn(this.shape, k));\n }\n\n private _strictUnknownKeyIssues(obj: Record<string, unknown>, ctx: ParseContext): Issue[] {\n if (this._isRelaxed) return [];\n\n const unknownKeys = this._unknownKeys(obj);\n\n if (unknownKeys.length === 0) return [];\n\n return [\n {\n code: ErrorCode.invalid_keys,\n message: ctx.messages.object.invalidKeys({ keys: unknownKeys }),\n params: { keys: unknownKeys },\n path: [],\n },\n ];\n }\n\n private _copyRelaxedUnknownKeys(obj: Record<string, unknown>, output: Record<string, unknown>): void {\n if (!this._isRelaxed) return;\n\n for (const key of this._unknownKeys(obj)) {\n // Skip keys that trigger inherited setters (e.g. __proto__) to prevent\n // prototype mutation on the output object.\n if (isUnsafeObjectKey(key)) continue;\n\n defineOwnProperty(output, key, obj[key]);\n }\n }\n\n private _guardObjectInput(\n value: unknown,\n ctx: ParseContext,\n ): { obj: Record<string, unknown>; ok: true } | { issues: Issue[]; ok: false } {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return {\n issues: [{ code: ErrorCode.invalid_type, message: ctx.messages.object.type(), path: [] }],\n ok: false,\n };\n }\n\n return { obj: value as Record<string, unknown>, ok: true };\n }\n\n private _createObjectParseContext(\n obj: Record<string, unknown>,\n ctx: ParseContext,\n ): {\n issues: Issue[];\n output: Record<string, unknown>;\n } {\n return {\n issues: [...this._strictUnknownKeyIssues(obj, ctx)],\n output: {},\n };\n }\n\n private _rebuildWith<U extends ObjectShape>(shape: U, isRelaxed = this._isRelaxed): ObjectSchema<U> {\n return this._copyStateTo(new ObjectSchema(shape, isRelaxed)) as unknown as ObjectSchema<U>;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const guarded = this._guardObjectInput(value, ctx);\n\n if (!guarded.ok) return { data: value, issues: guarded.issues, typeOk: false };\n\n const { obj } = guarded;\n const { issues, output } = this._createObjectParseContext(obj, ctx);\n\n for (const key of Object.keys(this.shape)) {\n const fieldSchema = this.shape[key];\n const result = fieldSchema._parseFullSync(obj[key], ctx);\n\n if (result.issues.length === 0) {\n defineOwnProperty(output, key, result.data);\n } else {\n // Failed field keys are intentionally omitted from parsed output so\n // object-level checks can branch on key presence.\n issues.push(...prependIssuePath(result.issues, key));\n }\n }\n\n this._copyRelaxedUnknownKeys(obj, output);\n\n return { data: output, issues, typeOk: true };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const guarded = this._guardObjectInput(value, ctx);\n\n if (!guarded.ok) return { data: value, issues: guarded.issues, typeOk: false };\n\n const { obj } = guarded;\n const { issues, output } = this._createObjectParseContext(obj, ctx);\n\n const keys = Object.keys(this.shape);\n const results = await Promise.all(keys.map((key) => this.shape[key]._parseFullAsync(obj[key], ctx)));\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const result = results[i];\n\n if (result.issues.length === 0) {\n defineOwnProperty(output, key, result.data);\n } else {\n issues.push(...prependIssuePath(result.issues, key));\n }\n }\n\n this._copyRelaxedUnknownKeys(obj, output);\n\n return { data: output, issues, typeOk: true };\n }\n\n partial(): ObjectSchema<{\n [K in keyof T]: Schema<InferOutput<T[K]> | undefined, InferInput<T[K]> | undefined> & AcceptsMissing;\n }>;\n partial<K extends keyof T>(\n ...keys: K[]\n ): ObjectSchema<\n Omit<T, K> & {\n [P in K]: Schema<InferOutput<T[P]> | undefined, InferInput<T[P]> | undefined> & AcceptsMissing;\n }\n >;\n partial<K extends keyof T>(...keys: K[]): ObjectSchema<any> {\n const targetKeys = keys.length > 0 ? new Set(keys as string[]) : null;\n\n return this._rebuildWith(\n objectFromEntries(\n Object.entries(this.shape).map(([k, s]) => [k, targetKeys === null || targetKeys.has(k) ? s.optional() : s]),\n ) as any,\n this._isRelaxed,\n );\n }\n\n override optional(): ObjectSchema<T> &\n Schema<InferObject<T> | undefined, InferObjectInput<T> | undefined> &\n AcceptsMissing {\n return super.optional() as ObjectSchema<T> &\n Schema<InferObject<T> | undefined, InferObjectInput<T> | undefined> &\n AcceptsMissing;\n }\n\n override nullable(): ObjectSchema<T> & Schema<InferObject<T> | null, InferObjectInput<T> | null> {\n return super.nullable() as ObjectSchema<T> & Schema<InferObject<T> | null, InferObjectInput<T> | null>;\n }\n\n override nullish(): ObjectSchema<T> &\n Schema<InferObject<T> | null | undefined, InferObjectInput<T> | null | undefined> &\n AcceptsMissing {\n return super.nullish() as ObjectSchema<T> &\n Schema<InferObject<T> | null | undefined, InferObjectInput<T> | null | undefined> &\n AcceptsMissing;\n }\n\n override required(): ObjectSchema<T> &\n Schema<Exclude<InferObject<T>, undefined>, Exclude<InferObjectInput<T>, undefined>> {\n return this._rebuildWith(\n objectFromEntries(Object.entries(this.shape).map(([k, s]) => [k, s.required()])) as any,\n this._isRelaxed,\n ) as ObjectSchema<T> & Schema<Exclude<InferObject<T>, undefined>, Exclude<InferObjectInput<T>, undefined>>;\n }\n\n extend<U extends ObjectShape>(extra: U): ObjectSchema<Omit<T, keyof U> & U> {\n return this._rebuildWith(\n objectFromEntries([...Object.entries(this.shape), ...Object.entries(extra)]) as any,\n this._isRelaxed,\n );\n }\n\n pick<K extends keyof T>(...keys: K[]): ObjectSchema<Pick<T, K>> {\n const keySet = new Set(keys as string[]);\n\n return this._rebuildWith(objectFromEntries(Object.entries(this.shape).filter(([k]) => keySet.has(k))) as any);\n }\n\n omit<K extends keyof T>(...keys: K[]): ObjectSchema<Omit<T, K>> {\n const keySet = new Set(keys as string[]);\n\n return this._rebuildWith(objectFromEntries(Object.entries(this.shape).filter(([k]) => !keySet.has(k))) as any);\n }\n\n /**\n * Returns a fully default-filled object by parsing `{}` against this schema.\n * Every required field must have a `.default()` value set; if any required\n * field is missing a default, this method throws a `SpellValidationError`.\n *\n * @example\n * const Config = s.object({ host: s.string().default('localhost'), port: s.number().default(3000) });\n * Config.defaults(); // { host: 'localhost', port: 3000 }\n */\n defaults(): InferObject<T> {\n return this.parse({});\n }\n\n /**\n * Returns a partial object containing only the fields that have a default value set.\n * Fields without a `.default()` or `.catch()` are silently omitted rather than throwing.\n *\n * Useful for pre-filling forms where only some fields have defaults.\n *\n * @example\n * const Form = s.object({ name: s.string(), role: s.string().default('viewer') });\n * Form.partialDefaults(); // { role: 'viewer' }; name is omitted\n */\n partialDefaults(): Partial<InferObject<T>> {\n const result: Record<string, unknown> = {};\n\n for (const key of Object.keys(this.shape)) {\n const parsed = this.shape[key]._parseFullSync(undefined);\n\n if (parsed.issues.length === 0) {\n defineOwnProperty(result, key, parsed.data);\n }\n }\n\n return result as Partial<InferObject<T>>;\n }\n\n /**\n * Returns an array of field keys that are **required** (not optional and not nullish).\n *\n * @example\n * const User = s.object({ id: s.number(), name: s.string().optional() });\n * User.requiredFields(); // ['id']\n */\n requiredFields(): (keyof T & string)[] {\n return Object.keys(this.shape).filter((k) => !this.shape[k].isOptional) as (keyof T & string)[];\n }\n\n /**\n * Returns an array of field keys that are **optional** (accept `undefined`).\n *\n * @example\n * const User = s.object({ id: s.number(), name: s.string().optional() });\n * User.optionalFields(); // ['name']\n */\n optionalFields(): (keyof T & string)[] {\n return Object.keys(this.shape).filter((k) => this.shape[k].isOptional) as (keyof T & string)[];\n }\n\n /**\n * Allow additional unknown properties (relaxed mode).\n * Default is strict mode (rejects unknown keys).\n *\n * Returns `ObjectSchema<T>` so fluent methods like `.pick()`, `.omit()`,\n * `.extend()`, and `.partial()` remain usable after calling `.relaxed()`.\n */\n relaxed(): ObjectSchema<T> {\n return this._rebuildWith(this.shape, true);\n }\n\n /**\n * Alias for the default strict mode: rejects unknown keys.\n * Useful after calling `.relaxed()` to return a new strict schema.\n */\n strict(): ObjectSchema<T> {\n return this._rebuildWith(this.shape, false);\n }\n\n /**\n * Returns a union schema of the object's key names as literal schemas.\n *\n * @example\n * const User = s.object({ id: s.number(), name: s.string() });\n * User.keyof(); // UnionSchema: validates 'id' | 'name'\n */\n keyof(): UnionSchema<readonly [LiteralSchema<keyof T & string>, ...LiteralSchema<keyof T & string>[]]> {\n const keys = Object.keys(this.shape) as (keyof T & string)[];\n const schemas = keys.map((k) => new LiteralSchema(k)) as unknown as readonly [\n LiteralSchema<keyof T & string>,\n ...LiteralSchema<keyof T & string>[],\n ];\n\n return new UnionSchema(schemas);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n const fields: Record<string, SchemaDescriptor> = {};\n\n for (const [key, schema] of Object.entries(this.shape)) {\n defineOwnProperty(fields, key, schema.definition());\n }\n\n return { ...this._describeBase(), fields, kind: 'object', strict: !this._isRelaxed };\n }\n\n merge<U extends ObjectShape>(other: ObjectSchema<U>): ObjectSchema<T & U> {\n return this._rebuildWith(\n objectFromEntries([...Object.entries(this.shape), ...Object.entries(other.shape)]) as any,\n other._isRelaxed,\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"object.js","names":["ObjectSchema","Schema","objectFromEntries","shape","unknownKeys","tolerated","value","invalid","issue","ErrorCode","ctx","input","keys","key","chain","all","issues","output","results","index","result","prefixIssues","defineOwnProperty","isUnsafeObjectKey","extra","schema","EnumSchema","next","fallback","defaultValue","steps","preprocess","SpellDefinitionError","fields"],"sources":["../../src/schemas/object.ts"],"sourcesContent":["import { defineOwnProperty, isUnsafeObjectKey, objectFromEntries } from '../_object';\nimport {\n all,\n chain,\n invalid,\n issue,\n type MaybePromise,\n type ParseValue,\n prefixIssues,\n type RunContext,\n} from '../_parse';\nimport { SpellDefinitionError } from '../errors';\nimport { Schema } from '../schema';\nimport {\n type AcceptsMissing,\n type AnySchema,\n ErrorCode,\n type InferInput,\n type InferOutput,\n type Issue,\n type SchemaDescriptor,\n type SchemaKind,\n} from '../types';\nimport { EnumSchema } from './primitives';\n\nexport type ObjectShape = Record<string, AnySchema>;\n\ntype Simplify<T> = { [K in keyof T]: T[K] };\ntype OptionalInputKeys<T extends ObjectShape> = { [K in keyof T]: T[K] extends AcceptsMissing ? K : never }[keyof T];\n\nexport type InferObject<T extends ObjectShape> = { [K in keyof T]: InferOutput<T[K]> };\nexport type InferObjectInput<T extends ObjectShape> = Simplify<\n { [K in Exclude<keyof T, OptionalInputKeys<T>>]: InferInput<T[K]> } & {\n [K in OptionalInputKeys<T>]?: InferInput<T[K]>;\n }\n>;\n\ntype Optional<S extends AnySchema> = Schema<InferOutput<S> | undefined, InferInput<S> | undefined> & AcceptsMissing;\n\n/** How keys outside the shape are handled: `strict` rejects them, `relaxed` keeps them. */\ntype UnknownKeys = 'relaxed' | 'strict';\n\nexport class ObjectSchema<T extends ObjectShape> extends Schema<InferObject<T>, InferObjectInput<T>> {\n readonly shape: T;\n private readonly _unknownKeys: UnknownKeys;\n private readonly _tolerated: readonly string[];\n\n constructor(shape: T, unknownKeys: UnknownKeys = 'strict', tolerated: readonly string[] = []) {\n super();\n this.shape = Object.freeze(objectFromEntries(Object.entries(shape))) as T;\n this._unknownKeys = unknownKeys;\n this._tolerated = Object.freeze([...new Set(tolerated)]);\n }\n\n override get kind(): SchemaKind {\n return 'object';\n }\n\n /**\n * Field failures are reported per key and the failed keys are left out of the output, so\n * object-level checks still run and can branch on key presence.\n */\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.object.type()));\n }\n\n const input = value as Record<string, unknown>;\n const keys = Object.keys(this.shape);\n const unknownKeys = Object.keys(input).filter(\n (key) => !Object.hasOwn(this.shape, key) && !this._tolerated.includes(key),\n );\n\n return chain(all(keys.map((key) => this.shape[key]!._run(input[key], ctx))), (results) => {\n const issues: Issue[] = [];\n const output: Record<string, unknown> = {};\n\n if (unknownKeys.length > 0 && this._unknownKeys === 'strict') {\n issues.push(\n issue(ErrorCode.invalid_keys, ctx.messages.object.invalidKeys({ keys: unknownKeys }), { keys: unknownKeys }),\n );\n }\n\n results.forEach((result, index) => {\n const key = keys[index]!;\n\n if (result.issues.length > 0) issues.push(...prefixIssues(result.issues, key));\n else if (result.value !== undefined || Object.hasOwn(input, key)) defineOwnProperty(output, key, result.value);\n });\n\n if (this._unknownKeys === 'relaxed') {\n for (const key of unknownKeys) if (!isUnsafeObjectKey(key)) defineOwnProperty(output, key, input[key]);\n }\n\n return { issues, typeOk: true, value: output };\n });\n }\n\n /* -------------------- Unknown keys -------------------- */\n\n /** Keeps keys outside the shape in the output instead of rejecting them. */\n relaxed(): this {\n return this._withShape(this.shape, 'relaxed') as unknown as this;\n }\n\n /** Rejects keys outside the shape with `invalid_keys` (the default). */\n strict(): this {\n return this._withShape(this.shape, 'strict') as unknown as this;\n }\n\n /**\n * Accepts and drops the named keys, e.g. fields that records saved by an older schema version\n * still carry. Other unknown keys are handled as before.\n */\n tolerate(...keys: string[]): this {\n return this._withShape(this.shape, this._unknownKeys, [...this._tolerated, ...keys]) as unknown as this;\n }\n\n /* -------------------- Shape derivation -------------------- */\n\n extend<U extends ObjectShape>(extra: U): ObjectSchema<Simplify<Omit<T, keyof U> & U>> {\n return this._derive({ ...this.shape, ...extra }) as unknown as ObjectSchema<Simplify<Omit<T, keyof U> & U>>;\n }\n\n pick<K extends keyof T & string>(...keys: K[]): ObjectSchema<Pick<T, K>> {\n const shape = objectFromEntries(Object.entries(this.shape).filter(([key]) => keys.includes(key as K)));\n\n return this._derive(shape as Pick<T, K>);\n }\n\n omit<K extends keyof T & string>(...keys: K[]): ObjectSchema<Omit<T, K>> {\n const shape = objectFromEntries(Object.entries(this.shape).filter(([key]) => !keys.includes(key as K)));\n\n return this._derive(shape as Omit<T, K>);\n }\n\n /** Makes the named fields (or all fields) optional. */\n partial(): ObjectSchema<{ [K in keyof T]: Optional<T[K]> }>;\n partial<K extends keyof T & string>(...keys: K[]): ObjectSchema<Simplify<Omit<T, K> & { [P in K]: Optional<T[P]> }>>;\n partial(...keys: string[]): unknown {\n return this._derive(\n objectFromEntries(\n Object.entries(this.shape).map(([key, schema]) => [\n key,\n keys.length === 0 || keys.includes(key) ? schema.optional() : schema,\n ]),\n ),\n );\n }\n\n /** An enum schema of this object's keys. */\n keyof(): EnumSchema<[keyof T & string, ...(keyof T & string)[]]> {\n return new EnumSchema(Object.keys(this.shape) as [keyof T & string, ...(keyof T & string)[]]);\n }\n\n /**\n * Same unknown-key policy and state on a new shape.\n * @internal Also used by `discriminatedUnion()` to add the discriminator literal to a branch.\n */\n _withShape<U extends ObjectShape>(\n shape: U,\n unknownKeys: UnknownKeys = this._unknownKeys,\n tolerated: readonly string[] = this._tolerated,\n ): ObjectSchema<U> {\n const next = new ObjectSchema(shape, unknownKeys, tolerated);\n\n next.state = this.state;\n\n return next;\n }\n\n /** Derivations change the value type, so runtime behavior written for the old shape cannot carry over. */\n private _derive<U extends ObjectShape>(shape: U): ObjectSchema<U> {\n const { catch: fallback, default: defaultValue, preprocess, steps } = this.state;\n\n if (steps.length > 0 || preprocess.length > 0 || fallback || defaultValue) {\n throw new SpellDefinitionError(\n 'Cannot derive a new shape from an object schema with checks, transforms, preprocessors, defaults, or catches. Derive the shape first, then add them.',\n );\n }\n\n return this._withShape(shape);\n }\n\n protected override _describe(): SchemaDescriptor {\n const fields: Record<string, SchemaDescriptor> = {};\n\n for (const [key, schema] of Object.entries(this.shape)) defineOwnProperty(fields, key, schema.definition());\n\n return {\n ...this._describeBase(),\n fields,\n kind: 'object',\n strict: this._unknownKeys === 'strict',\n ...(this._tolerated.length > 0 && { tolerated: this._tolerated }),\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../_parse.cjs"),t=require("../schema.cjs"),n=require("../types.cjs");var r=class extends t.Schema{get kind(){return`boolean`}_parse(t,r){return typeof t==`boolean`?e.ok(t):e.invalid(t,e.issue(n.ErrorCode.invalid_type,r.messages.boolean.type()))}_describe(){return{...this._describeBase(),kind:`boolean`}}},i=class extends t.Schema{value;constructor(e){super(),this.value=e}get kind(){return`literal`}_parse(t,r){return t===this.value?e.ok(t):e.invalid(t,e.issue(n.ErrorCode.invalid_literal,r.messages.literal.expected({expected:this.value}),{expected:this.value}))}_describe(){return{...this._describeBase(),kind:`literal`,value:this.value}}},a=class extends t.Schema{values;_allowed;constructor(e){super(),this.values=Object.freeze([...e]),this._allowed=new Set(e)}get kind(){return`enum`}_parse(t,r){return this._allowed.has(t)?e.ok(t):e.invalid(t,e.issue(n.ErrorCode.invalid_enum,r.messages.enum.invalid({values:this.values}),{values:this.values}))}_describe(){return{...this._describeBase(),kind:`enum`,values:this.values}}},o=class extends t.Schema{cls;constructor(e){super(),this.cls=e}get kind(){return`instanceof`}_parse(t,r){return t instanceof this.cls?e.ok(t):e.invalid(t,e.issue(n.ErrorCode.invalid_type,r.messages.instanceof.type({className:this.cls.name})))}_describe(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}},s=class extends t.Schema{get kind(){return`never`}_parse(t,r){return e.invalid(t,e.issue(n.ErrorCode.invalid_type,r.messages.never.invalid()))}_describe(){return{...this._describeBase(),kind:`never`}}};exports.BooleanSchema=r,exports.EnumSchema=a,exports.InstanceOfSchema=o,exports.LiteralSchema=i,exports.NeverSchema=s;
|
|
2
|
+
//# sourceMappingURL=primitives.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.cjs","names":["Schema","ok","invalid","issue","ErrorCode","require__parse","require_schema","require_types","BooleanSchema","value","ctx","LiteralSchema","EnumSchema","values","InstanceOfSchema","cls","NeverSchema"],"sources":["../../src/schemas/primitives.ts"],"sourcesContent":["import { invalid, issue, type MaybePromise, ok, type ParseValue, type RunContext } from '../_parse';\nimport { Schema } from '../schema';\nimport { ErrorCode, type SchemaDescriptor, type SchemaKind } from '../types';\n\nexport type LiteralValue = string | number | boolean | null | undefined;\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\n\nexport class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {\n override get kind(): SchemaKind {\n return 'boolean';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return typeof value === 'boolean'\n ? ok(value)\n : invalid(value, issue(ErrorCode.invalid_type, ctx.messages.boolean.type()));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n}\n\nexport class LiteralSchema<T extends LiteralValue> extends Schema<T> {\n readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n }\n\n override get kind(): SchemaKind {\n return 'literal';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return value === this.value\n ? ok(value)\n : invalid(\n value,\n issue(ErrorCode.invalid_literal, ctx.messages.literal.expected({ expected: this.value }), {\n expected: this.value,\n }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n}\n\nexport class EnumSchema<T extends EnumValues> extends Schema<T[number]> {\n readonly values: T;\n private readonly _allowed: ReadonlySet<unknown>;\n\n constructor(values: T) {\n super();\n this.values = Object.freeze([...values]) as unknown as T;\n this._allowed = new Set(values);\n }\n\n override get kind(): SchemaKind {\n return 'enum';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return this._allowed.has(value)\n ? ok(value)\n : invalid(\n value,\n issue(ErrorCode.invalid_enum, ctx.messages.enum.invalid({ values: this.values }), { values: this.values }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n}\n\nexport class InstanceOfSchema<T> extends Schema<T> {\n readonly cls: abstract new (\n ...args: never[]\n ) => T;\n\n constructor(cls: abstract new (...args: never[]) => T) {\n super();\n this.cls = cls;\n }\n\n override get kind(): SchemaKind {\n return 'instanceof';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return value instanceof this.cls\n ? ok(value)\n : invalid(value, issue(ErrorCode.invalid_type, ctx.messages.instanceof.type({ className: this.cls.name })));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n}\n\nexport class NeverSchema extends Schema<never> {\n override get kind(): SchemaKind {\n return 'never';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.never.invalid()));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n}\n"],"mappings":"A,sFAOA,IAAaQ,EAAb,cAAoDR,EAAAA,MAAuB,CACzE,IAAa,MAAmB,CAC9B,MAAO,SACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAO,OAAOS,GAAU,UACpBR,EAAAA,GAAGQ,CAAK,EACRP,EAAAA,QAAQO,EAAON,EAAAA,MAAMC,EAAAA,UAAU,aAAcM,EAAI,SAAS,QAAQ,KAAK,CAAC,CAAC,CAC/E,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CACF,EAEaC,EAAb,cAA2DX,EAAAA,MAAU,CACnE,MAEA,YAAY,EAAU,CACpB,MAAM,EACN,KAAK,MAAQS,CACf,CAEA,IAAa,MAAmB,CAC9B,MAAO,SACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAOA,IAAU,KAAK,MAClBR,EAAAA,GAAGQ,CAAK,EACRP,EAAAA,QACEO,EACAN,EAAAA,MAAMC,EAAAA,UAAU,gBAAiBM,EAAI,SAAS,QAAQ,SAAS,CAAE,SAAU,KAAK,KAAM,CAAC,EAAG,CACxF,SAAU,KAAK,KACjB,CAAC,CACH,CACN,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,UAAW,MAAO,KAAK,KAAM,CACvE,CACF,EAEaE,EAAb,cAAsDZ,EAAAA,MAAkB,CACtE,OACA,SAEA,YAAY,EAAW,CACrB,MAAM,EACN,KAAK,OAAS,OAAO,OAAO,CAAC,GAAGa,CAAM,CAAC,EACvC,KAAK,SAAW,IAAI,IAAIA,CAAM,CAChC,CAEA,IAAa,MAAmB,CAC9B,MAAO,MACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAO,KAAK,SAAS,IAAIJ,CAAK,EAC1BR,EAAAA,GAAGQ,CAAK,EACRP,EAAAA,QACEO,EACAN,EAAAA,MAAMC,EAAAA,UAAU,aAAcM,EAAI,SAAS,KAAK,QAAQ,CAAE,OAAQ,KAAK,MAAO,CAAC,EAAG,CAAE,OAAQ,KAAK,MAAO,CAAC,CAC3G,CACN,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CACF,EAEaI,EAAb,cAAyCd,EAAAA,MAAU,CACjD,IAIA,YAAY,EAA2C,CACrD,MAAM,EACN,KAAK,IAAMe,CACb,CAEA,IAAa,MAAmB,CAC9B,MAAO,YACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAON,aAAiB,KAAK,IACzBR,EAAAA,GAAGQ,CAAK,EACRP,EAAAA,QAAQO,EAAON,EAAAA,MAAMC,EAAAA,UAAU,aAAcM,EAAI,SAAS,WAAW,KAAK,CAAE,UAAW,KAAK,IAAI,IAAK,CAAC,CAAC,CAAC,CAC9G,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CACF,EAEaM,EAAb,cAAiChB,EAAAA,MAAc,CAC7C,IAAa,MAAmB,CAC9B,MAAO,OACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAOE,EAAAA,QAAQO,EAAON,EAAAA,MAAMC,EAAAA,UAAU,aAAcM,EAAI,SAAS,MAAM,QAAQ,CAAC,CAAC,CACnF,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CACF,E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type MaybePromise, type ParseValue, type RunContext } from '../_parse';
|
|
2
|
+
import { Schema } from '../schema';
|
|
3
|
+
import { type SchemaDescriptor, type SchemaKind } from '../types';
|
|
4
|
+
export type LiteralValue = string | number | boolean | null | undefined;
|
|
5
|
+
export type EnumValues = readonly [string | number, ...(string | number)[]];
|
|
6
|
+
export declare class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {
|
|
7
|
+
get kind(): SchemaKind;
|
|
8
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
9
|
+
protected _describe(): SchemaDescriptor;
|
|
10
|
+
}
|
|
11
|
+
export declare class LiteralSchema<T extends LiteralValue> extends Schema<T> {
|
|
12
|
+
readonly value: T;
|
|
13
|
+
constructor(value: T);
|
|
14
|
+
get kind(): SchemaKind;
|
|
15
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
16
|
+
protected _describe(): SchemaDescriptor;
|
|
17
|
+
}
|
|
18
|
+
export declare class EnumSchema<T extends EnumValues> extends Schema<T[number]> {
|
|
19
|
+
readonly values: T;
|
|
20
|
+
private readonly _allowed;
|
|
21
|
+
constructor(values: T);
|
|
22
|
+
get kind(): SchemaKind;
|
|
23
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
24
|
+
protected _describe(): SchemaDescriptor;
|
|
25
|
+
}
|
|
26
|
+
export declare class InstanceOfSchema<T> extends Schema<T> {
|
|
27
|
+
readonly cls: abstract new (...args: never[]) => T;
|
|
28
|
+
constructor(cls: abstract new (...args: never[]) => T);
|
|
29
|
+
get kind(): SchemaKind;
|
|
30
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
31
|
+
protected _describe(): SchemaDescriptor;
|
|
32
|
+
}
|
|
33
|
+
export declare class NeverSchema extends Schema<never> {
|
|
34
|
+
get kind(): SchemaKind;
|
|
35
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
36
|
+
protected _describe(): SchemaDescriptor;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/schemas/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,YAAY,EAAM,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAa,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5E,qBAAa,aAAa,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;IACxE,IAAa,IAAI,IAAI,UAAU,CAE9B;cAEkB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cAMjE,SAAS,IAAI,gBAAgB;CAGjD;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,YAAY,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAEN,KAAK,EAAE,CAAC;IAKpB,IAAa,IAAI,IAAI,UAAU,CAE9B;cAEkB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cAWjE,SAAS,IAAI,gBAAgB;CAGjD;AAED,qBAAa,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEpC,MAAM,EAAE,CAAC;IAMrB,IAAa,IAAI,IAAI,UAAU,CAE9B;cAEkB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cASjE,SAAS,IAAI,gBAAgB;CAGjD;AAED,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,QAAQ,MACpB,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,CAAC,CAAC;gBAEK,GAAG,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;IAKrD,IAAa,IAAI,IAAI,UAAU,CAE9B;cAEkB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cAMjE,SAAS,IAAI,gBAAgB;CAGjD;AAED,qBAAa,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAC;IAC5C,IAAa,IAAI,IAAI,UAAU,CAE9B;cAEkB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cAIjE,SAAS,IAAI,gBAAgB;CAGjD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{invalid as e,issue as t,ok as n}from"../_parse.js";import{Schema as r}from"../schema.js";import{ErrorCode as i}from"../types.js";var a=class extends r{get kind(){return`boolean`}_parse(r,a){return typeof r==`boolean`?n(r):e(r,t(i.invalid_type,a.messages.boolean.type()))}_describe(){return{...this._describeBase(),kind:`boolean`}}},o=class extends r{value;constructor(e){super(),this.value=e}get kind(){return`literal`}_parse(r,a){return r===this.value?n(r):e(r,t(i.invalid_literal,a.messages.literal.expected({expected:this.value}),{expected:this.value}))}_describe(){return{...this._describeBase(),kind:`literal`,value:this.value}}},s=class extends r{values;_allowed;constructor(e){super(),this.values=Object.freeze([...e]),this._allowed=new Set(e)}get kind(){return`enum`}_parse(r,a){return this._allowed.has(r)?n(r):e(r,t(i.invalid_enum,a.messages.enum.invalid({values:this.values}),{values:this.values}))}_describe(){return{...this._describeBase(),kind:`enum`,values:this.values}}},c=class extends r{cls;constructor(e){super(),this.cls=e}get kind(){return`instanceof`}_parse(r,a){return r instanceof this.cls?n(r):e(r,t(i.invalid_type,a.messages.instanceof.type({className:this.cls.name})))}_describe(){return{...this._describeBase(),className:this.cls.name,kind:`instanceof`}}},l=class extends r{get kind(){return`never`}_parse(n,r){return e(n,t(i.invalid_type,r.messages.never.invalid()))}_describe(){return{...this._describeBase(),kind:`never`}}};export{a as BooleanSchema,s as EnumSchema,c as InstanceOfSchema,o as LiteralSchema,l as NeverSchema};
|
|
2
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","names":["BooleanSchema","Schema","value","ok","invalid","issue","ErrorCode","ctx","LiteralSchema","EnumSchema","values","InstanceOfSchema","cls","NeverSchema"],"sources":["../../src/schemas/primitives.ts"],"sourcesContent":["import { invalid, issue, type MaybePromise, ok, type ParseValue, type RunContext } from '../_parse';\nimport { Schema } from '../schema';\nimport { ErrorCode, type SchemaDescriptor, type SchemaKind } from '../types';\n\nexport type LiteralValue = string | number | boolean | null | undefined;\nexport type EnumValues = readonly [string | number, ...(string | number)[]];\n\nexport class BooleanSchema<Input = boolean> extends Schema<boolean, Input> {\n override get kind(): SchemaKind {\n return 'boolean';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return typeof value === 'boolean'\n ? ok(value)\n : invalid(value, issue(ErrorCode.invalid_type, ctx.messages.boolean.type()));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'boolean' };\n }\n}\n\nexport class LiteralSchema<T extends LiteralValue> extends Schema<T> {\n readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n }\n\n override get kind(): SchemaKind {\n return 'literal';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return value === this.value\n ? ok(value)\n : invalid(\n value,\n issue(ErrorCode.invalid_literal, ctx.messages.literal.expected({ expected: this.value }), {\n expected: this.value,\n }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n}\n\nexport class EnumSchema<T extends EnumValues> extends Schema<T[number]> {\n readonly values: T;\n private readonly _allowed: ReadonlySet<unknown>;\n\n constructor(values: T) {\n super();\n this.values = Object.freeze([...values]) as unknown as T;\n this._allowed = new Set(values);\n }\n\n override get kind(): SchemaKind {\n return 'enum';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return this._allowed.has(value)\n ? ok(value)\n : invalid(\n value,\n issue(ErrorCode.invalid_enum, ctx.messages.enum.invalid({ values: this.values }), { values: this.values }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'enum', values: this.values };\n }\n}\n\nexport class InstanceOfSchema<T> extends Schema<T> {\n readonly cls: abstract new (\n ...args: never[]\n ) => T;\n\n constructor(cls: abstract new (...args: never[]) => T) {\n super();\n this.cls = cls;\n }\n\n override get kind(): SchemaKind {\n return 'instanceof';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return value instanceof this.cls\n ? ok(value)\n : invalid(value, issue(ErrorCode.invalid_type, ctx.messages.instanceof.type({ className: this.cls.name })));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), className: this.cls.name, kind: 'instanceof' };\n }\n}\n\nexport class NeverSchema extends Schema<never> {\n override get kind(): SchemaKind {\n return 'never';\n }\n\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.never.invalid()));\n }\n\n protected override _describe(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'never' };\n }\n}\n"],"mappings":"A,wIAOA,IAAaA,EAAb,cAAoDC,CAAuB,CACzE,IAAa,MAAmB,CAC9B,MAAO,SACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAO,OAAOC,GAAU,UACpBC,EAAGD,CAAK,EACRE,EAAQF,EAAOG,EAAMC,EAAU,aAAcC,EAAI,SAAS,QAAQ,KAAK,CAAC,CAAC,CAC/E,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,SAAU,CACpD,CACF,EAEaC,EAAb,cAA2DP,CAAU,CACnE,MAEA,YAAY,EAAU,CACpB,MAAM,EACN,KAAK,MAAQC,CACf,CAEA,IAAa,MAAmB,CAC9B,MAAO,SACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAOA,IAAU,KAAK,MAClBC,EAAGD,CAAK,EACRE,EACEF,EACAG,EAAMC,EAAU,gBAAiBC,EAAI,SAAS,QAAQ,SAAS,CAAE,SAAU,KAAK,KAAM,CAAC,EAAG,CACxF,SAAU,KAAK,KACjB,CAAC,CACH,CACN,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,UAAW,MAAO,KAAK,KAAM,CACvE,CACF,EAEaE,EAAb,cAAsDR,CAAkB,CACtE,OACA,SAEA,YAAY,EAAW,CACrB,MAAM,EACN,KAAK,OAAS,OAAO,OAAO,CAAC,GAAGS,CAAM,CAAC,EACvC,KAAK,SAAW,IAAI,IAAIA,CAAM,CAChC,CAEA,IAAa,MAAmB,CAC9B,MAAO,MACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAO,KAAK,SAAS,IAAIR,CAAK,EAC1BC,EAAGD,CAAK,EACRE,EACEF,EACAG,EAAMC,EAAU,aAAcC,EAAI,SAAS,KAAK,QAAQ,CAAE,OAAQ,KAAK,MAAO,CAAC,EAAG,CAAE,OAAQ,KAAK,MAAO,CAAC,CAC3G,CACN,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,OAAQ,KAAK,MAAO,CACtE,CACF,EAEaI,EAAb,cAAyCV,CAAU,CACjD,IAIA,YAAY,EAA2C,CACrD,MAAM,EACN,KAAK,IAAMW,CACb,CAEA,IAAa,MAAmB,CAC9B,MAAO,YACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAOV,aAAiB,KAAK,IACzBC,EAAGD,CAAK,EACRE,EAAQF,EAAOG,EAAMC,EAAU,aAAcC,EAAI,SAAS,WAAW,KAAK,CAAE,UAAW,KAAK,IAAI,IAAK,CAAC,CAAC,CAAC,CAC9G,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,UAAW,KAAK,IAAI,KAAM,KAAM,YAAa,CACjF,CACF,EAEaM,EAAb,cAAiCZ,CAAc,CAC7C,IAAa,MAAmB,CAC9B,MAAO,OACT,CAEA,OAA0B,EAAgB,EAA2C,CACnF,OAAOG,EAAQF,EAAOG,EAAMC,EAAU,aAAcC,EAAI,SAAS,MAAM,QAAQ,CAAC,CAAC,CACnF,CAEA,WAAiD,CAC/C,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,OAAQ,CAClD,CACF,E"}
|
package/dist/schemas/record.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../_object.cjs"),t=require("../_parse.cjs"),n=require("../schema.cjs"),r=require("../types.cjs");var i=class extends n.Schema{keySchema;valueSchema;constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}get kind(){return`record`}_parse(n,i){if(typeof n!=`object`||!n||Array.isArray(n))return t.invalid(n,t.issue(r.ErrorCode.invalid_type,i.messages.object.type()));let a=n,o=Object.keys(a),s=o.map(e=>t.all([this.keySchema._run(e,i),this.valueSchema._run(a[e],i)]));return t.chain(t.all(s),n=>{let r=[],i={};return n.forEach(([n,a],s)=>{let c=o[s];if(n.issues.length>0){r.push(...t.prefixIssues(n.issues,c));return}if(a.issues.length>0){r.push(...t.prefixIssues(a.issues,c));return}let l=String(n.value);e.isUnsafeObjectKey(l)||e.defineOwnProperty(i,l,a.value)}),{issues:r,typeOk:!0,value:i}})}_describe(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`record`,value:this.valueSchema.definition()}}};exports.RecordSchema=i;
|
|
2
2
|
//# sourceMappingURL=record.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.cjs","names":["Schema","ErrorCode","
|
|
1
|
+
{"version":3,"file":"record.cjs","names":["Schema","invalid","issue","ErrorCode","all","chain","prefixIssues","isUnsafeObjectKey","require__object","require__parse","require_schema","require_types","RecordSchema","keySchema","valueSchema","value","ctx","input","keys","runs","key","issues","output","results","entry","rawKey","index","parsedKey"],"sources":["../../src/schemas/record.ts"],"sourcesContent":["import { defineOwnProperty, isUnsafeObjectKey } from '../_object';\nimport {\n all,\n chain,\n invalid,\n issue,\n type MaybePromise,\n type ParseValue,\n prefixIssues,\n type RunContext,\n} from '../_parse';\nimport { Schema } from '../schema';\nimport {\n type AnySchema,\n ErrorCode,\n type InferInput,\n type InferOutput,\n type Issue,\n type SchemaDescriptor,\n type SchemaKind,\n} from '../types';\n\nexport class RecordSchema<K extends AnySchema, V extends AnySchema> extends Schema<\n Record<InferOutput<K> & string, InferOutput<V>>,\n Record<InferInput<K> & string, InferInput<V>>\n> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n constructor(keySchema: K, valueSchema: V) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n override get kind(): SchemaKind {\n return 'record';\n }\n\n /** Parses every own enumerable key and value; keys like `__proto__` are dropped from the output. */\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.object.type()));\n }\n\n const input = value as Record<string, unknown>;\n const keys = Object.keys(input);\n const runs = keys.map((key) => all([this.keySchema._run(key, ctx), this.valueSchema._run(input[key], ctx)]));\n\n return chain(all(runs), (results) => {\n const issues: Issue[] = [];\n const output: Record<string, unknown> = {};\n\n results.forEach(([key, entry], index) => {\n const rawKey = keys[index]!;\n\n if (key!.issues.length > 0) {\n issues.push(...prefixIssues(key!.issues, rawKey));\n return;\n }\n\n if (entry!.issues.length > 0) {\n issues.push(...prefixIssues(entry!.issues, rawKey));\n return;\n }\n\n const parsedKey = String(key!.value);\n\n if (!isUnsafeObjectKey(parsedKey)) defineOwnProperty(output, parsedKey, entry!.value);\n });\n\n return { issues, typeOk: true, value: output };\n });\n }\n\n protected override _describe(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.definition(),\n kind: 'record',\n value: this.valueSchema.definition(),\n };\n }\n}\n"],"mappings":"A,kHAsBA,IAAaY,EAAb,cAA4EZ,EAAAA,MAG1E,CACA,UACA,YAEA,YAAY,EAAc,EAAgB,CACxC,MAAM,EACN,KAAK,UAAYa,EACjB,KAAK,YAAcC,CACrB,CAEA,IAAa,MAAmB,CAC9B,MAAO,QACT,CAGA,OAA0B,EAAgB,EAA2C,CACnF,GAAsB,OAAOC,GAAU,WAAnCA,GAA+C,MAAM,QAAQA,CAAK,EACpE,OAAOd,EAAAA,QAAQc,EAAOb,EAAAA,MAAMC,EAAAA,UAAU,aAAca,EAAI,SAAS,OAAO,KAAK,CAAC,CAAC,EAGjF,IAAMC,EAAQF,EACRG,EAAO,OAAO,KAAKD,CAAK,EACxBE,EAAOD,EAAK,IAAK,GAAQd,EAAAA,IAAI,CAAC,KAAK,UAAU,KAAKgB,EAAKJ,CAAG,EAAG,KAAK,YAAY,KAAKC,EAAMG,GAAMJ,CAAG,CAAC,CAAC,CAAC,EAE3G,OAAOX,EAAAA,MAAMD,EAAAA,IAAIe,CAAI,EAAI,GAAY,CACnC,IAAME,EAAkB,CAAC,EACnBC,EAAkC,CAAC,EAoBzC,OAlBAC,EAAQ,SAAS,CAACH,EAAKI,GAAQ,IAAU,CACvC,IAAMC,EAASP,EAAKQ,GAEpB,GAAIN,EAAK,OAAO,OAAS,EAAG,CAC1BC,EAAO,KAAK,GAAGf,EAAAA,aAAac,EAAK,OAAQK,CAAM,CAAC,EAChD,MACF,CAEA,GAAID,EAAO,OAAO,OAAS,EAAG,CAC5BH,EAAO,KAAK,GAAGf,EAAAA,aAAakB,EAAO,OAAQC,CAAM,CAAC,EAClD,MACF,CAEA,IAAME,EAAY,OAAOP,EAAK,KAAK,EAE9Bb,EAAAA,kBAAkBoB,CAAS,GAAGnB,EAAA,kBAAkBc,EAAQK,EAAWH,EAAO,KAAK,CACtF,CAAC,EAEM,CAAE,SAAQ,OAAQ,GAAM,MAAOF,CAAO,CAC/C,CAAC,CACH,CAEA,WAAiD,CAC/C,MAAO,CACL,GAAG,KAAK,cAAc,EACtB,IAAK,KAAK,UAAU,WAAW,EAC/B,KAAM,SACN,MAAO,KAAK,YAAY,WAAW,CACrC,CACF,CACF,E"}
|
package/dist/schemas/record.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Schema } from '../
|
|
1
|
+
import { type MaybePromise, type ParseValue, type RunContext } from '../_parse';
|
|
2
|
+
import { Schema } from '../schema';
|
|
3
|
+
import { type AnySchema, type InferInput, type InferOutput, type SchemaDescriptor, type SchemaKind } from '../types';
|
|
3
4
|
export declare class RecordSchema<K extends AnySchema, V extends AnySchema> extends Schema<Record<InferOutput<K> & string, InferOutput<V>>, Record<InferInput<K> & string, InferInput<V>>> {
|
|
4
5
|
readonly keySchema: K;
|
|
5
6
|
readonly valueSchema: V;
|
|
6
|
-
protected get _kind(): string;
|
|
7
7
|
constructor(keySchema: K, valueSchema: V);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
protected _parse(value: unknown, ctx:
|
|
11
|
-
protected
|
|
12
|
-
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
8
|
+
get kind(): SchemaKind;
|
|
9
|
+
/** Parses every own enumerable key and value; keys like `__proto__` are dropped from the output. */
|
|
10
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
11
|
+
protected _describe(): SchemaDescriptor;
|
|
13
12
|
}
|
|
14
13
|
//# sourceMappingURL=record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/schemas/record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/schemas/record.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,UAAU,EAEf,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAE,SAAQ,MAAM,CAChF,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAC9C;IACC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEZ,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IAMxC,IAAa,IAAI,IAAI,UAAU,CAE9B;IAED,oGAAoG;cACjF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;cAmCjE,SAAS,IAAI,gBAAgB;CAQjD"}
|
package/dist/schemas/record.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{defineOwnProperty as e,isUnsafeObjectKey as t}from"../_object.js";import{all as n,chain as r,invalid as i,issue as a,prefixIssues as o}from"../_parse.js";import{Schema as s}from"../schema.js";import{ErrorCode as c}from"../types.js";var l=class extends s{keySchema;valueSchema;constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}get kind(){return`record`}_parse(s,l){if(typeof s!=`object`||!s||Array.isArray(s))return i(s,a(c.invalid_type,l.messages.object.type()));let u=s,d=Object.keys(u),f=d.map(e=>n([this.keySchema._run(e,l),this.valueSchema._run(u[e],l)]));return r(n(f),n=>{let r=[],i={};return n.forEach(([n,a],s)=>{let c=d[s];if(n.issues.length>0){r.push(...o(n.issues,c));return}if(a.issues.length>0){r.push(...o(a.issues,c));return}let l=String(n.value);t(l)||e(i,l,a.value)}),{issues:r,typeOk:!0,value:i}})}_describe(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`record`,value:this.valueSchema.definition()}}};export{l as RecordSchema};
|
|
2
2
|
//# sourceMappingURL=record.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","names":["RecordSchema","Schema","keySchema","valueSchema","value","ErrorCode","ctx","
|
|
1
|
+
{"version":3,"file":"record.js","names":["RecordSchema","Schema","keySchema","valueSchema","value","invalid","issue","ErrorCode","ctx","input","keys","runs","all","key","chain","issues","output","results","entry","rawKey","index","prefixIssues","parsedKey","isUnsafeObjectKey","defineOwnProperty"],"sources":["../../src/schemas/record.ts"],"sourcesContent":["import { defineOwnProperty, isUnsafeObjectKey } from '../_object';\nimport {\n all,\n chain,\n invalid,\n issue,\n type MaybePromise,\n type ParseValue,\n prefixIssues,\n type RunContext,\n} from '../_parse';\nimport { Schema } from '../schema';\nimport {\n type AnySchema,\n ErrorCode,\n type InferInput,\n type InferOutput,\n type Issue,\n type SchemaDescriptor,\n type SchemaKind,\n} from '../types';\n\nexport class RecordSchema<K extends AnySchema, V extends AnySchema> extends Schema<\n Record<InferOutput<K> & string, InferOutput<V>>,\n Record<InferInput<K> & string, InferInput<V>>\n> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n constructor(keySchema: K, valueSchema: V) {\n super();\n this.keySchema = keySchema;\n this.valueSchema = valueSchema;\n }\n\n override get kind(): SchemaKind {\n return 'record';\n }\n\n /** Parses every own enumerable key and value; keys like `__proto__` are dropped from the output. */\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.object.type()));\n }\n\n const input = value as Record<string, unknown>;\n const keys = Object.keys(input);\n const runs = keys.map((key) => all([this.keySchema._run(key, ctx), this.valueSchema._run(input[key], ctx)]));\n\n return chain(all(runs), (results) => {\n const issues: Issue[] = [];\n const output: Record<string, unknown> = {};\n\n results.forEach(([key, entry], index) => {\n const rawKey = keys[index]!;\n\n if (key!.issues.length > 0) {\n issues.push(...prefixIssues(key!.issues, rawKey));\n return;\n }\n\n if (entry!.issues.length > 0) {\n issues.push(...prefixIssues(entry!.issues, rawKey));\n return;\n }\n\n const parsedKey = String(key!.value);\n\n if (!isUnsafeObjectKey(parsedKey)) defineOwnProperty(output, parsedKey, entry!.value);\n });\n\n return { issues, typeOk: true, value: output };\n });\n }\n\n protected override _describe(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n key: this.keySchema.definition(),\n kind: 'record',\n value: this.valueSchema.definition(),\n };\n }\n}\n"],"mappings":"A,+OAsBA,IAAaA,EAAb,cAA4EC,CAG1E,CACA,UACA,YAEA,YAAY,EAAc,EAAgB,CACxC,MAAM,EACN,KAAK,UAAYC,EACjB,KAAK,YAAcC,CACrB,CAEA,IAAa,MAAmB,CAC9B,MAAO,QACT,CAGA,OAA0B,EAAgB,EAA2C,CACnF,GAAsB,OAAOC,GAAU,WAAnCA,GAA+C,MAAM,QAAQA,CAAK,EACpE,OAAOC,EAAQD,EAAOE,EAAMC,EAAU,aAAcC,EAAI,SAAS,OAAO,KAAK,CAAC,CAAC,EAGjF,IAAMC,EAAQL,EACRM,EAAO,OAAO,KAAKD,CAAK,EACxBE,EAAOD,EAAK,IAAK,GAAQE,EAAI,CAAC,KAAK,UAAU,KAAKC,EAAKL,CAAG,EAAG,KAAK,YAAY,KAAKC,EAAMI,GAAML,CAAG,CAAC,CAAC,CAAC,EAE3G,OAAOM,EAAMF,EAAID,CAAI,EAAI,GAAY,CACnC,IAAMI,EAAkB,CAAC,EACnBC,EAAkC,CAAC,EAoBzC,OAlBAC,EAAQ,SAAS,CAACJ,EAAKK,GAAQ,IAAU,CACvC,IAAMC,EAAST,EAAKU,GAEpB,GAAIP,EAAK,OAAO,OAAS,EAAG,CAC1BE,EAAO,KAAK,GAAGM,EAAaR,EAAK,OAAQM,CAAM,CAAC,EAChD,MACF,CAEA,GAAID,EAAO,OAAO,OAAS,EAAG,CAC5BH,EAAO,KAAK,GAAGM,EAAaH,EAAO,OAAQC,CAAM,CAAC,EAClD,MACF,CAEA,IAAMG,EAAY,OAAOT,EAAK,KAAK,EAE9BU,EAAkBD,CAAS,GAAGE,EAAkBR,EAAQM,EAAWJ,EAAO,KAAK,CACtF,CAAC,EAEM,CAAE,SAAQ,OAAQ,GAAM,MAAOF,CAAO,CAC/C,CAAC,CACH,CAEA,WAAiD,CAC/C,MAAO,CACL,GAAG,KAAK,cAAc,EACtB,IAAK,KAAK,UAAU,WAAW,EAC/B,KAAM,SACN,MAAO,KAAK,YAAY,WAAW,CACrC,CACF,CACF,E"}
|
package/dist/schemas/set.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../_parse.cjs"),t=require("../schema.cjs"),n=require("../types.cjs");var r=class extends t.Schema{itemSchema;constructor(e){super(),this.itemSchema=e}get kind(){return`set`}_parse(t,r){return t instanceof Set?e.chain(e.all([...t].map(e=>this.itemSchema._run(e,r))),t=>{let n=[],r=new Set;return t.forEach((t,i)=>{t.issues.length===0?r.add(t.value):n.push(...e.prefixIssues(t.issues,i))}),{issues:n,typeOk:!0,value:r}}):e.invalid(t,e.issue(n.ErrorCode.invalid_type,r.messages.set.type()))}min(t,r){return this._refine(e=>e.size>=t,(i,a)=>e.issue(n.ErrorCode.too_small,e.resolveMessage(r??a.set.min,{min:t,value:i}),{min:t}),n=>({minSize:e.atLeast(n.minSize,t)}))}max(t,r){return this._refine(e=>e.size<=t,(i,a)=>e.issue(n.ErrorCode.too_big,e.resolveMessage(r??a.set.max,{max:t,value:i}),{max:t}),n=>({maxSize:e.atMost(n.maxSize,t)}))}size(t,r){return this._refine(e=>e.size===t,(i,a)=>e.issue(n.ErrorCode.invalid_length,e.resolveMessage(r??a.set.size,{exact:t,value:i}),{exact:t}),n=>({maxSize:e.atMost(n.maxSize,t),minSize:e.atLeast(n.minSize,t)}))}nonEmpty(t){return this._refine(e=>e.size>0,(r,i)=>e.issue(n.ErrorCode.too_small,e.resolveMessage(t??i.set.nonEmpty,{value:r}),{min:1}),t=>({minSize:e.atLeast(t.minSize,1)}))}_describe(){return{...this._describeBase(),...this.state.meta,items:this.itemSchema.definition(),kind:`set`}}};exports.SetSchema=r;
|
|
2
2
|
//# sourceMappingURL=set.cjs.map
|
package/dist/schemas/set.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.cjs","names":["Schema","ErrorCode","
|
|
1
|
+
{"version":3,"file":"set.cjs","names":["Schema","invalid","issue","ErrorCode","chain","all","prefixIssues","resolveMessage","atLeast","atMost","require__parse","require_schema","require_types","SetSchema","itemSchema","value","item","ctx","issues","output","results","result","index","size","message","m","current","exact"],"sources":["../../src/schemas/set.ts"],"sourcesContent":["import {\n all,\n atLeast,\n atMost,\n chain,\n invalid,\n issue,\n type MaybePromise,\n type ParseValue,\n prefixIssues,\n type RunContext,\n resolveMessage,\n} from '../_parse';\nimport { Schema } from '../schema';\nimport {\n type AnySchema,\n ErrorCode,\n type InferInput,\n type InferOutput,\n type Issue,\n type MessageFn,\n type SchemaDescriptor,\n type SchemaKind,\n} from '../types';\n\ntype SizeMeta = { maxSize: number; minSize: number };\n\nexport class SetSchema<T extends AnySchema> extends Schema<Set<InferOutput<T>>, Set<InferInput<T>>> {\n readonly itemSchema: T;\n\n constructor(itemSchema: T) {\n super();\n this.itemSchema = itemSchema;\n }\n\n override get kind(): SchemaKind {\n return 'set';\n }\n\n /** Item failures are reported by iteration index; failed items are left out of the parsed set. */\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n if (!(value instanceof Set)) return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.set.type()));\n\n return chain(all([...value].map((item) => this.itemSchema._run(item, ctx))), (results) => {\n const issues: Issue[] = [];\n const output = new Set<unknown>();\n\n results.forEach((result, index) => {\n if (result.issues.length === 0) output.add(result.value);\n else issues.push(...prefixIssues(result.issues, index));\n });\n\n return { issues, typeOk: true, value: output };\n });\n }\n\n min(size: number, message?: MessageFn<{ min: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size >= size,\n (value, m) =>\n issue(ErrorCode.too_small, resolveMessage(message ?? m.set.min, { min: size, value }), { min: size }),\n (current) => ({ minSize: atLeast(current.minSize, size) }),\n );\n }\n\n max(size: number, message?: MessageFn<{ max: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size <= size,\n (value, m) => issue(ErrorCode.too_big, resolveMessage(message ?? m.set.max, { max: size, value }), { max: size }),\n (current) => ({ maxSize: atMost(current.maxSize, size) }),\n );\n }\n\n size(exact: number, message?: MessageFn<{ exact: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size === exact,\n (value, m) => issue(ErrorCode.invalid_length, resolveMessage(message ?? m.set.size, { exact, value }), { exact }),\n (current) => ({ maxSize: atMost(current.maxSize, exact), minSize: atLeast(current.minSize, exact) }),\n );\n }\n\n nonEmpty(message?: MessageFn<{ value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size > 0,\n (value, m) => issue(ErrorCode.too_small, resolveMessage(message ?? m.set.nonEmpty, { value }), { min: 1 }),\n (current) => ({ minSize: atLeast(current.minSize, 1) }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n ...(this.state.meta as Partial<SizeMeta>),\n items: this.itemSchema.definition(),\n kind: 'set',\n };\n }\n}\n"],"mappings":"A,sFA2BA,IAAaa,EAAb,cAAoDb,EAAAA,MAAgD,CAClG,WAEA,YAAY,EAAe,CACzB,MAAM,EACN,KAAK,WAAac,CACpB,CAEA,IAAa,MAAmB,CAC9B,MAAO,KACT,CAGA,OAA0B,EAAgB,EAA2C,CAGnF,OAFMC,aAAiB,IAEhBX,EAAAA,MAAMC,EAAAA,IAAI,CAAC,GAAGU,CAAK,CAAC,CAAC,IAAK,GAAS,KAAK,WAAW,KAAKC,EAAMC,CAAG,CAAC,CAAC,EAAI,GAAY,CACxF,IAAMC,EAAkB,CAAC,EACnBC,EAAS,IAAI,IAOnB,OALAC,EAAQ,SAAS,EAAQ,IAAU,CAC7BC,EAAO,OAAO,SAAW,EAAGF,EAAO,IAAIE,EAAO,KAAK,EAClDH,EAAO,KAAK,GAAGZ,EAAAA,aAAae,EAAO,OAAQC,CAAK,CAAC,CACxD,CAAC,EAEM,CAAE,SAAQ,OAAQ,GAAM,MAAOH,CAAO,CAC/C,CAAC,EAZmClB,EAAAA,QAAQc,EAAOb,EAAAA,MAAMC,EAAAA,UAAU,aAAcc,EAAI,SAAS,IAAI,KAAK,CAAC,CAAC,CAa3G,CAEA,IAAI,EAAc,EAAiE,CACjF,OAAO,KAAK,QACT,GAAUF,EAAM,MAAQQ,GACxB,EAAO,IACNrB,EAAAA,MAAMC,EAAAA,UAAU,UAAWI,EAAAA,eAAeiB,GAAWC,EAAE,IAAI,IAAK,CAAE,IAAKF,EAAM,OAAM,CAAC,EAAG,CAAE,IAAKA,CAAK,CAAC,EACrG,IAAa,CAAE,QAASf,EAAAA,QAAQkB,EAAQ,QAASH,CAAI,CAAE,EAC1D,CACF,CAEA,IAAI,EAAc,EAAiE,CACjF,OAAO,KAAK,QACT,GAAUR,EAAM,MAAQQ,GACxB,EAAO,IAAMrB,EAAAA,MAAMC,EAAAA,UAAU,QAASI,EAAAA,eAAeiB,GAAWC,EAAE,IAAI,IAAK,CAAE,IAAKF,EAAM,OAAM,CAAC,EAAG,CAAE,IAAKA,CAAK,CAAC,EAC/G,IAAa,CAAE,QAASd,EAAAA,OAAOiB,EAAQ,QAASH,CAAI,CAAE,EACzD,CACF,CAEA,KAAK,EAAe,EAAmE,CACrF,OAAO,KAAK,QACT,GAAUR,EAAM,OAASY,GACzB,EAAO,IAAMzB,EAAAA,MAAMC,EAAAA,UAAU,eAAgBI,EAAAA,eAAeiB,GAAWC,EAAE,IAAI,KAAM,CAAE,QAAO,OAAM,CAAC,EAAG,CAAE,OAAM,CAAC,EAC/G,IAAa,CAAE,QAAShB,EAAAA,OAAOiB,EAAQ,QAASC,CAAK,EAAG,QAASnB,EAAAA,QAAQkB,EAAQ,QAASC,CAAK,CAAE,EACpG,CACF,CAEA,SAAS,EAAoD,CAC3D,OAAO,KAAK,QACT,GAAUZ,EAAM,KAAO,GACvB,EAAO,IAAMb,EAAAA,MAAMC,EAAAA,UAAU,UAAWI,EAAAA,eAAeiB,GAAWC,EAAE,IAAI,SAAU,CAAE,OAAM,CAAC,EAAG,CAAE,IAAK,CAAE,CAAC,EACxG,IAAa,CAAE,QAASjB,EAAAA,QAAQkB,EAAQ,QAAS,CAAC,CAAE,EACvD,CACF,CAEA,WAAiD,CAC/C,MAAO,CACL,GAAG,KAAK,cAAc,EACtB,GAAI,KAAK,MAAM,KACf,MAAO,KAAK,WAAW,WAAW,EAClC,KAAM,KACR,CACF,CACF,E"}
|
package/dist/schemas/set.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Schema } from '../
|
|
1
|
+
import { type MaybePromise, type ParseValue, type RunContext } from '../_parse';
|
|
2
|
+
import { Schema } from '../schema';
|
|
3
|
+
import { type AnySchema, type InferInput, type InferOutput, type MessageFn, type SchemaDescriptor, type SchemaKind } from '../types';
|
|
3
4
|
export declare class SetSchema<T extends AnySchema> extends Schema<Set<InferOutput<T>>, Set<InferInput<T>>> {
|
|
4
5
|
readonly itemSchema: T;
|
|
5
|
-
protected get _kind(): string;
|
|
6
6
|
constructor(itemSchema: T);
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
get kind(): SchemaKind;
|
|
8
|
+
/** Item failures are reported by iteration index; failed items are left out of the parsed set. */
|
|
9
|
+
protected _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue>;
|
|
9
10
|
min(size: number, message?: MessageFn<{
|
|
10
11
|
min: number;
|
|
11
12
|
value: Set<unknown>;
|
|
@@ -19,8 +20,8 @@ export declare class SetSchema<T extends AnySchema> extends Schema<Set<InferOutp
|
|
|
19
20
|
value: Set<unknown>;
|
|
20
21
|
}>): this;
|
|
21
22
|
nonEmpty(message?: MessageFn<{
|
|
22
|
-
|
|
23
|
+
value: Set<unknown>;
|
|
23
24
|
}>): this;
|
|
24
|
-
protected
|
|
25
|
+
protected _describe(): SchemaDescriptor;
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=set.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/schemas/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/schemas/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,UAAU,EAEf,KAAK,UAAU,EAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAIlB,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEX,UAAU,EAAE,CAAC;IAKzB,IAAa,IAAI,IAAI,UAAU,CAE9B;IAED,kGAAkG;cAC/E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAgBpF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IASlF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAQlF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IAQtF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;cAQzC,SAAS,IAAI,gBAAgB;CAQjD"}
|
package/dist/schemas/set.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{all as e,atLeast as t,atMost as n,chain as r,invalid as i,issue as a,prefixIssues as o,resolveMessage as s}from"../_parse.js";import{Schema as c}from"../schema.js";import{ErrorCode as l}from"../types.js";var u=class extends c{itemSchema;constructor(e){super(),this.itemSchema=e}get kind(){return`set`}_parse(t,n){return t instanceof Set?r(e([...t].map(e=>this.itemSchema._run(e,n))),e=>{let t=[],n=/* @__PURE__ */ new Set;return e.forEach((e,r)=>{e.issues.length===0?n.add(e.value):t.push(...o(e.issues,r))}),{issues:t,typeOk:!0,value:n}}):i(t,a(l.invalid_type,n.messages.set.type()))}min(e,n){return this._refine(t=>t.size>=e,(t,r)=>a(l.too_small,s(n??r.set.min,{min:e,value:t}),{min:e}),n=>({minSize:t(n.minSize,e)}))}max(e,t){return this._refine(t=>t.size<=e,(n,r)=>a(l.too_big,s(t??r.set.max,{max:e,value:n}),{max:e}),t=>({maxSize:n(t.maxSize,e)}))}size(e,r){return this._refine(t=>t.size===e,(t,n)=>a(l.invalid_length,s(r??n.set.size,{exact:e,value:t}),{exact:e}),r=>({maxSize:n(r.maxSize,e),minSize:t(r.minSize,e)}))}nonEmpty(e){return this._refine(e=>e.size>0,(t,n)=>a(l.too_small,s(e??n.set.nonEmpty,{value:t}),{min:1}),e=>({minSize:t(e.minSize,1)}))}_describe(){return{...this._describeBase(),...this.state.meta,items:this.itemSchema.definition(),kind:`set`}}};export{u as SetSchema};
|
|
2
2
|
//# sourceMappingURL=set.js.map
|
package/dist/schemas/set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","names":["
|
|
1
|
+
{"version":3,"file":"set.js","names":["SetSchema","Schema","itemSchema","value","chain","all","item","ctx","issues","output","results","result","prefixIssues","index","invalid","issue","ErrorCode","size","resolveMessage","message","m","atLeast","current","atMost","exact"],"sources":["../../src/schemas/set.ts"],"sourcesContent":["import {\n all,\n atLeast,\n atMost,\n chain,\n invalid,\n issue,\n type MaybePromise,\n type ParseValue,\n prefixIssues,\n type RunContext,\n resolveMessage,\n} from '../_parse';\nimport { Schema } from '../schema';\nimport {\n type AnySchema,\n ErrorCode,\n type InferInput,\n type InferOutput,\n type Issue,\n type MessageFn,\n type SchemaDescriptor,\n type SchemaKind,\n} from '../types';\n\ntype SizeMeta = { maxSize: number; minSize: number };\n\nexport class SetSchema<T extends AnySchema> extends Schema<Set<InferOutput<T>>, Set<InferInput<T>>> {\n readonly itemSchema: T;\n\n constructor(itemSchema: T) {\n super();\n this.itemSchema = itemSchema;\n }\n\n override get kind(): SchemaKind {\n return 'set';\n }\n\n /** Item failures are reported by iteration index; failed items are left out of the parsed set. */\n protected override _parse(value: unknown, ctx: RunContext): MaybePromise<ParseValue> {\n if (!(value instanceof Set)) return invalid(value, issue(ErrorCode.invalid_type, ctx.messages.set.type()));\n\n return chain(all([...value].map((item) => this.itemSchema._run(item, ctx))), (results) => {\n const issues: Issue[] = [];\n const output = new Set<unknown>();\n\n results.forEach((result, index) => {\n if (result.issues.length === 0) output.add(result.value);\n else issues.push(...prefixIssues(result.issues, index));\n });\n\n return { issues, typeOk: true, value: output };\n });\n }\n\n min(size: number, message?: MessageFn<{ min: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size >= size,\n (value, m) =>\n issue(ErrorCode.too_small, resolveMessage(message ?? m.set.min, { min: size, value }), { min: size }),\n (current) => ({ minSize: atLeast(current.minSize, size) }),\n );\n }\n\n max(size: number, message?: MessageFn<{ max: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size <= size,\n (value, m) => issue(ErrorCode.too_big, resolveMessage(message ?? m.set.max, { max: size, value }), { max: size }),\n (current) => ({ maxSize: atMost(current.maxSize, size) }),\n );\n }\n\n size(exact: number, message?: MessageFn<{ exact: number; value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size === exact,\n (value, m) => issue(ErrorCode.invalid_length, resolveMessage(message ?? m.set.size, { exact, value }), { exact }),\n (current) => ({ maxSize: atMost(current.maxSize, exact), minSize: atLeast(current.minSize, exact) }),\n );\n }\n\n nonEmpty(message?: MessageFn<{ value: Set<unknown> }>): this {\n return this._refine<SizeMeta>(\n (value) => value.size > 0,\n (value, m) => issue(ErrorCode.too_small, resolveMessage(message ?? m.set.nonEmpty, { value }), { min: 1 }),\n (current) => ({ minSize: atLeast(current.minSize, 1) }),\n );\n }\n\n protected override _describe(): SchemaDescriptor {\n return {\n ...this._describeBase(),\n ...(this.state.meta as Partial<SizeMeta>),\n items: this.itemSchema.definition(),\n kind: 'set',\n };\n }\n}\n"],"mappings":"A,mNA2BA,IAAaA,EAAb,cAAoDC,CAAgD,CAClG,WAEA,YAAY,EAAe,CACzB,MAAM,EACN,KAAK,WAAaC,CACpB,CAEA,IAAa,MAAmB,CAC9B,MAAO,KACT,CAGA,OAA0B,EAAgB,EAA2C,CAGnF,OAFMC,aAAiB,IAEhBC,EAAMC,EAAI,CAAC,GAAGF,CAAK,CAAC,CAAC,IAAK,GAAS,KAAK,WAAW,KAAKG,EAAMC,CAAG,CAAC,CAAC,EAAI,GAAY,CACxF,IAAMC,EAAkB,CAAC,EACnBC,kBAAS,IAAI,IAOnB,OALAC,EAAQ,SAAS,EAAQ,IAAU,CAC7BC,EAAO,OAAO,SAAW,EAAGF,EAAO,IAAIE,EAAO,KAAK,EAClDH,EAAO,KAAK,GAAGI,EAAaD,EAAO,OAAQE,CAAK,CAAC,CACxD,CAAC,EAEM,CAAE,SAAQ,OAAQ,GAAM,MAAOJ,CAAO,CAC/C,CAAC,EAZmCK,EAAQX,EAAOY,EAAMC,EAAU,aAAcT,EAAI,SAAS,IAAI,KAAK,CAAC,CAAC,CAa3G,CAEA,IAAI,EAAc,EAAiE,CACjF,OAAO,KAAK,QACT,GAAUJ,EAAM,MAAQc,GACxB,EAAO,IACNF,EAAMC,EAAU,UAAWE,EAAeC,GAAWC,EAAE,IAAI,IAAK,CAAE,IAAKH,EAAM,OAAM,CAAC,EAAG,CAAE,IAAKA,CAAK,CAAC,EACrG,IAAa,CAAE,QAASI,EAAQC,EAAQ,QAASL,CAAI,CAAE,EAC1D,CACF,CAEA,IAAI,EAAc,EAAiE,CACjF,OAAO,KAAK,QACT,GAAUd,EAAM,MAAQc,GACxB,EAAO,IAAMF,EAAMC,EAAU,QAASE,EAAeC,GAAWC,EAAE,IAAI,IAAK,CAAE,IAAKH,EAAM,OAAM,CAAC,EAAG,CAAE,IAAKA,CAAK,CAAC,EAC/G,IAAa,CAAE,QAASM,EAAOD,EAAQ,QAASL,CAAI,CAAE,EACzD,CACF,CAEA,KAAK,EAAe,EAAmE,CACrF,OAAO,KAAK,QACT,GAAUd,EAAM,OAASqB,GACzB,EAAO,IAAMT,EAAMC,EAAU,eAAgBE,EAAeC,GAAWC,EAAE,IAAI,KAAM,CAAE,QAAO,OAAM,CAAC,EAAG,CAAE,OAAM,CAAC,EAC/G,IAAa,CAAE,QAASG,EAAOD,EAAQ,QAASE,CAAK,EAAG,QAASH,EAAQC,EAAQ,QAASE,CAAK,CAAE,EACpG,CACF,CAEA,SAAS,EAAoD,CAC3D,OAAO,KAAK,QACT,GAAUrB,EAAM,KAAO,GACvB,EAAO,IAAMY,EAAMC,EAAU,UAAWE,EAAeC,GAAWC,EAAE,IAAI,SAAU,CAAE,OAAM,CAAC,EAAG,CAAE,IAAK,CAAE,CAAC,EACxG,IAAa,CAAE,QAASC,EAAQC,EAAQ,QAAS,CAAC,CAAE,EACvD,CACF,CAEA,WAAiD,CAC/C,MAAO,CACL,GAAG,KAAK,cAAc,EACtB,GAAI,KAAK,MAAM,KACf,MAAO,KAAK,WAAW,WAAW,EAClC,KAAM,KACR,CACF,CACF,E"}
|
package/dist/schemas/string.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../_parse.cjs"),t=require("../predicates.cjs"),n=require("../schema.cjs"),r=require("../types.cjs");var i=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),a=class extends n.Schema{get kind(){return`string`}_parse(t,n){return typeof t==`string`?e.ok(t):e.invalid(t,e.issue(r.ErrorCode.invalid_type,n.messages.string.type()))}_format(t,n,i,a){return this._refine(n,(n,a)=>e.issue(r.ErrorCode.invalid_format,e.resolveMessage(i??a.string[t],{value:n}),{format:t}),e=>({...a?.(e),formats:[...e.formats??[],t]}))}_pattern(e,t,n){return this._refine(e,n,e=>({patterns:[...e.patterns??[],t]}))}min(t,n){return this._refine(e=>e.length>=t,(i,a)=>e.issue(r.ErrorCode.too_small,e.resolveMessage(n??a.string.min,{min:t,value:i}),{min:t}),n=>({minLength:e.atLeast(n.minLength,t)}))}max(t,n){return this._refine(e=>e.length<=t,(i,a)=>e.issue(r.ErrorCode.too_big,e.resolveMessage(n??a.string.max,{max:t,value:i}),{max:t}),n=>({maxLength:e.atMost(n.maxLength,t)}))}length(t,n){return this._refine(e=>e.length===t,(i,a)=>e.issue(r.ErrorCode.invalid_length,e.resolveMessage(n??a.string.length,{exact:t,value:i}),{exact:t}),n=>({maxLength:e.atMost(n.maxLength,t),minLength:e.atLeast(n.minLength,t)}))}nonEmpty(t){return this._refine(e=>e.length>0,(n,i)=>e.issue(r.ErrorCode.too_small,e.resolveMessage(t??i.string.nonEmpty,{value:n}),{min:1}),t=>({minLength:e.atLeast(t.minLength,1)}))}startsWith(t,n){return this._pattern(e=>e.startsWith(t),{flags:``,source:`^${i(t)}`},(i,a)=>e.issue(r.ErrorCode.invalid_format,e.resolveMessage(n??a.string.startsWith,{prefix:t,value:i}),{format:`startsWith`,prefix:t}))}endsWith(t,n){return this._pattern(e=>e.endsWith(t),{flags:``,source:`${i(t)}$`},(i,a)=>e.issue(r.ErrorCode.invalid_format,e.resolveMessage(n??a.string.endsWith,{suffix:t,value:i}),{format:`endsWith`,suffix:t}))}includes(t,n){return this._pattern(e=>e.includes(t),{flags:``,source:i(t)},(i,a)=>e.issue(r.ErrorCode.invalid_format,e.resolveMessage(n??a.string.includes,{substr:t,value:i}),{format:`includes`,includes:t}))}regex(t,n){let i=new RegExp(t.source,t.flags.replace(/[gy]/g,``));return this._pattern(e=>i.test(e),{flags:i.flags,source:i.source},(t,a)=>e.issue(r.ErrorCode.invalid_format,e.resolveMessage(n??a.string.regex,{value:t}),{format:`regex`,pattern:i.source}))}email(e){return this._format(`email`,t.isEmail,e)}url(e={}){let{message:n,protocols:r=[`http`,`https`]}=e,a={flags:`i`,source:`^(?:${r.map(i).join(`|`)}):`};return this._format(`url`,e=>t.isUrl(e,r),n,e=>({patterns:[...e.patterns??[],a]}))}uuid(e){return this._format(`uuid`,t.isUuid,e)}isoDate(e){return this._format(`isoDate`,t.isIsoDate,e)}isoDateTime(e){return this._format(`isoDateTime`,t.isIsoDateTime,e)}time(e){return this._format(`time`,t.isTime,e)}duration(e){return this._format(`duration`,t.isDuration,e)}ip(e){return this._format(`ip`,t.isIp,e)}cuid(e){return this._format(`cuid`,t.isCuid,e)}cuid2(e){return this._format(`cuid2`,t.isCuid2,e)}ulid(e){return this._format(`ulid`,t.isUlid,e)}nanoid(n=21,r){return this._format(`nanoid`,e=>t.isNanoid(e,n),r,t=>({maxLength:e.atMost(t.maxLength,n),minLength:e.atLeast(t.minLength,n)}))}base64(e){return this._format(`base64`,t.isBase64,e)}base64url(e){return this._format(`base64url`,t.isBase64url,e)}hex(e){return this._format(`hex`,t.isHex,e)}hexColor(e){return this._format(`hexColor`,t.isHexColor,e)}emoji(e){return this._format(`emoji`,t.isEmoji,e)}jwt(e){return this._format(`jwt`,t.isJwt,e)}semver(e){return this._format(`semver`,t.isSemver,e)}slug(e){return this._format(`slug`,t.isSlug,e)}numeric(e){return this._format(`numeric`,t.isNumeric,e)}trim(){return this.transform(e=>e.trim())}lowercase(){return this.transform(e=>e.toLowerCase())}uppercase(){return this.transform(e=>e.toUpperCase())}_describe(){return{...this._describeBase(),...this.state.meta,kind:`string`}}};exports.StringSchema=a;
|
|
2
2
|
//# sourceMappingURL=string.cjs.map
|