@vielzeug/spell 3.1.2 → 26.10.1
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 +2 -2
- package/dist/_dev.cjs.map +1 -1
- package/dist/_dev.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +24 -24
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/formats.cjs.map +1 -1
- package/dist/formats.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/json-schema.cjs +1 -1
- package/dist/json-schema.cjs.map +1 -1
- package/dist/json-schema.js +1 -1
- package/dist/json-schema.js.map +1 -1
- package/dist/s.cjs +1 -1
- package/dist/s.cjs.map +1 -1
- package/dist/s.d.ts +7 -4
- package/dist/s.d.ts.map +1 -1
- package/dist/s.js +1 -1
- package/dist/s.js.map +1 -1
- package/dist/schemas/array.cjs +1 -1
- package/dist/schemas/array.cjs.map +1 -1
- package/dist/schemas/array.d.ts +3 -5
- 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 +2 -4
- 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/boolean.cjs +1 -1
- package/dist/schemas/boolean.cjs.map +1 -1
- package/dist/schemas/boolean.d.ts +2 -4
- package/dist/schemas/boolean.d.ts.map +1 -1
- package/dist/schemas/boolean.js +1 -1
- package/dist/schemas/boolean.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 +2 -4
- 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/enum.cjs +1 -1
- package/dist/schemas/enum.cjs.map +1 -1
- package/dist/schemas/enum.d.ts +2 -4
- package/dist/schemas/enum.d.ts.map +1 -1
- package/dist/schemas/enum.js +1 -1
- package/dist/schemas/enum.js.map +1 -1
- package/dist/schemas/instanceof.cjs +1 -1
- package/dist/schemas/instanceof.cjs.map +1 -1
- package/dist/schemas/instanceof.d.ts +2 -4
- package/dist/schemas/instanceof.d.ts.map +1 -1
- package/dist/schemas/instanceof.js +1 -1
- package/dist/schemas/instanceof.js.map +1 -1
- package/dist/schemas/intersect.cjs +1 -1
- package/dist/schemas/intersect.cjs.map +1 -1
- package/dist/schemas/intersect.d.ts +4 -6
- 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 +4 -6
- 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/literal.cjs +1 -1
- package/dist/schemas/literal.cjs.map +1 -1
- package/dist/schemas/literal.d.ts +2 -4
- package/dist/schemas/literal.d.ts.map +1 -1
- package/dist/schemas/literal.js +1 -1
- package/dist/schemas/literal.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 +3 -5
- 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/never.cjs +1 -1
- package/dist/schemas/never.cjs.map +1 -1
- package/dist/schemas/never.d.ts +2 -4
- package/dist/schemas/never.d.ts.map +1 -1
- package/dist/schemas/never.js +1 -1
- package/dist/schemas/never.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 +2 -4
- 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 +22 -24
- 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/raw-or.cjs.map +1 -1
- package/dist/schemas/raw-or.d.ts +1 -1
- package/dist/schemas/raw-or.js.map +1 -1
- package/dist/schemas/record.cjs +1 -1
- package/dist/schemas/record.cjs.map +1 -1
- package/dist/schemas/record.d.ts +3 -5
- 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 +3 -5
- 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 +5 -7
- 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 +4 -6
- 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 +4 -6
- 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/schemas/variant.cjs +1 -1
- package/dist/schemas/variant.cjs.map +1 -1
- package/dist/schemas/variant.d.ts +4 -6
- package/dist/schemas/variant.d.ts.map +1 -1
- package/dist/schemas/variant.js +1 -1
- package/dist/schemas/variant.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 +2 -2
- package/dist/spell.js.map +1 -1
- package/dist/tolerate.cjs +2 -0
- package/dist/tolerate.cjs.map +1 -0
- package/dist/tolerate.d.ts +10 -0
- package/dist/tolerate.d.ts.map +1 -0
- package/dist/tolerate.js +2 -0
- package/dist/tolerate.js.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +15 -58
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validators.cjs.map +1 -1
- package/dist/validators.d.ts +1 -1
- package/dist/validators.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{cloneRecord as e,defineOwnProperty as t}from"../safe-object.js";import{Schema as n}from"../core.js";import{isPlainObject as r}from"@vielzeug/arsenal";function i(n,a){if(r(n)&&r(a)){let r=e(n);for(let[e,o]of Object.entries(a))t(r,e,i(n[e],o));return r}return a}var a=class extends n{schemas;get _kind(){return`intersect`}constructor(e){super(),this.schemas=Object.freeze([...e])}_parse(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let a=this.schemas[r]._parseFullSync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=i(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}async _parseAsync(e,t){let n={hasOutput:!1,issues:[],output:e};for(let r=0;r<this.schemas.length;r++){let a=await this.schemas[r]._parseFullAsync(e,t);a.issues.length>0?n.issues.push(...a.issues):n.hasOutput?n.output=i(n.output,a.data):(n.hasOutput=!0,n.output=a.data)}return{data:n.output,issues:n.issues,typeOk:n.issues.length===0}}_toDescriptorImpl(){return{...this._describeBase(),branches:this.schemas.map(e=>e.definition()),kind:`intersect`}}};export{a as IntersectSchema};
|
|
2
2
|
//# sourceMappingURL=intersect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersect.js","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type {
|
|
1
|
+
{"version":3,"file":"intersect.js","names":[],"sources":["../../src/schemas/intersect.ts"],"sourcesContent":["import { isPlainObject } from '@vielzeug/arsenal';\n\nimport type { AnySchema, InferInput, InferOutput, Issue, ParseContext, ParseValue, SchemaDescriptor } from '../core';\n\nimport { Schema } from '../core';\nimport { cloneRecord, defineOwnProperty } from '../safe-object';\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n/**\n * Recursively merges `source` into `target`.\n * Plain objects are merged key-by-key; all other values take the `source` value.\n */\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (isPlainObject(target) && isPlainObject(source)) {\n const result = cloneRecord(target);\n\n for (const [key, val] of Object.entries(source)) {\n defineOwnProperty(result, key, deepMerge(target[key], val));\n }\n\n return result;\n }\n\n return source;\n}\n\n/** All schemas must pass: intersection semantics. */\nexport class IntersectSchema<T extends readonly AnySchema[]> extends Schema<\n UnionToIntersection<InferOutput<T[number]>>,\n UnionToIntersection<InferInput<T[number]>>\n> {\n readonly schemas: T;\n\n protected override get _kind(): string {\n return 'intersect';\n }\n\n constructor(schemas: T) {\n super();\n this.schemas = Object.freeze([...schemas]) as T;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = this.schemas[i]._parseFullSync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const state: { hasOutput: boolean; issues: Issue[]; output: unknown } = {\n hasOutput: false,\n issues: [],\n output: value,\n };\n\n for (let i = 0; i < this.schemas.length; i++) {\n const result = await this.schemas[i]._parseFullAsync(value, ctx);\n\n if (result.issues.length > 0) {\n state.issues.push(...result.issues);\n } else if (!state.hasOutput) {\n state.hasOutput = true;\n state.output = result.data;\n } else {\n state.output = deepMerge(state.output, result.data);\n }\n }\n\n return { data: state.output, issues: state.issues, typeOk: state.issues.length === 0 };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), branches: this.schemas.map((s) => s.definition()), kind: 'intersect' };\n }\n}\n"],"mappings":"6JAaA,SAAS,EAAU,EAAiB,EAA0B,CAC5D,GAAI,EAAc,CAAM,GAAK,EAAc,CAAM,EAAG,CAClD,IAAM,EAAS,EAAY,CAAM,EAEjC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAM,EAC5C,EAAkB,EAAQ,EAAK,EAAU,EAAO,GAAM,CAAG,CAAC,EAG5D,OAAO,CACT,CAEA,OAAO,CACT,CAGA,IAAa,EAAb,cAAqE,CAGnE,CACA,QAEA,IAAuB,OAAgB,CACrC,MAAO,WACT,CAEA,YAAY,EAAY,CACtB,MAAM,EACN,KAAK,QAAU,OAAO,OAAO,CAAC,GAAG,CAAO,CAAC,CAC3C,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,KAAK,QAAQ,EAAE,CAAC,eAAe,EAAO,CAAG,EAEpD,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAkE,CACtE,UAAW,GACX,OAAQ,CAAC,EACT,OAAQ,CACV,EAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,IAAM,EAAS,MAAM,KAAK,QAAQ,EAAE,CAAC,gBAAgB,EAAO,CAAG,EAE3D,EAAO,OAAO,OAAS,EACzB,EAAM,OAAO,KAAK,GAAG,EAAO,MAAM,EACxB,EAAM,UAIhB,EAAM,OAAS,EAAU,EAAM,OAAQ,EAAO,IAAI,GAHlD,EAAM,UAAY,GAClB,EAAM,OAAS,EAAO,KAI1B,CAEA,MAAO,CAAE,KAAM,EAAM,OAAQ,OAAQ,EAAM,OAAQ,OAAQ,EAAM,OAAO,SAAW,CAAE,CACvF,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,SAAU,KAAK,QAAQ,IAAK,GAAM,EAAE,WAAW,CAAC,EAAG,KAAM,WAAY,CACzG,CACF"}
|
package/dist/schemas/lazy.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../core.cjs");var t=class t extends e.Schema{_getter;_resolved;get _kind(){return`lazy`}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async _parseAsync(e,t){let n=await this._resolve()._parseFullAsync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_construct(e){let n=new t(this._getter);return n.state=e,n}};exports.LazySchema=t;
|
|
2
2
|
//# sourceMappingURL=lazy.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.cjs","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"lazy.cjs","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema } from '../core';\n\nexport class LazySchema<T, Input = T> extends Schema<T, Input> {\n private readonly _getter: () => Schema<T, Input>;\n private _resolved?: Schema<T, Input>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, Input>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const result = await this._resolve()._parseFullAsync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved: each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"+BAIA,IAAa,EAAb,MAAa,UAAiC,EAAA,MAAiB,CAC7D,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAgC,CAC1C,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAqC,CAGnC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAO,CAAG,EAI/D,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
|
package/dist/schemas/lazy.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';
|
|
2
2
|
import { Schema } from '../core';
|
|
3
|
-
export declare class LazySchema<T, Input = T
|
|
3
|
+
export declare class LazySchema<T, Input = T> extends Schema<T, Input> {
|
|
4
4
|
private readonly _getter;
|
|
5
5
|
private _resolved?;
|
|
6
6
|
protected get _kind(): string;
|
|
7
|
-
|
|
8
|
-
constructor(getter: () => Schema<T, Input, Mode>);
|
|
7
|
+
constructor(getter: () => Schema<T, Input>);
|
|
9
8
|
private _resolve;
|
|
10
9
|
protected _parse(value: unknown, ctx: ParseContext): ParseValue;
|
|
11
|
-
|
|
10
|
+
protected _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue>;
|
|
12
11
|
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
13
|
-
protected _walk<R>(visitor: SchemaWalker<R>): R | null;
|
|
14
12
|
protected _construct(state: SchemaState<any>): this;
|
|
15
13
|
}
|
|
16
14
|
//# sourceMappingURL=lazy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schemas/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schemas/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;IAK1C,OAAO,CAAC,QAAQ;cAMG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;cAQ/C,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;cAQzE,iBAAiB,IAAI,gBAAgB;cAIrC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;CAQ7D"}
|
package/dist/schemas/lazy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Schema as e}from"../core.js";var t=class t extends e{_getter;_resolved;get _kind(){return`lazy`}constructor(e){super(),this._getter=e}_resolve(){return this._resolved??=this._getter()}_parse(e,t){let n=this._resolve()._parseFullSync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}async _parseAsync(e,t){let n=await this._resolve()._parseFullAsync(e,t);return n.issues.length===0?{data:n.data,issues:[],typeOk:!0}:{data:e,issues:n.issues,typeOk:!0}}_toDescriptorImpl(){return{...this._describeBase(),kind:`lazy`}}_construct(e){let n=new t(this._getter);return n.state=e,n}};export{t as LazySchema};
|
|
2
2
|
//# sourceMappingURL=lazy.js.map
|
package/dist/schemas/lazy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.js","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"lazy.js","names":[],"sources":["../../src/schemas/lazy.ts"],"sourcesContent":["import type { ParseContext, ParseValue, SchemaDescriptor, SchemaState } from '../core';\n\nimport { Schema } from '../core';\n\nexport class LazySchema<T, Input = T> extends Schema<T, Input> {\n private readonly _getter: () => Schema<T, Input>;\n private _resolved?: Schema<T, Input>;\n\n protected override get _kind(): string {\n return 'lazy';\n }\n\n constructor(getter: () => Schema<T, Input>) {\n super();\n this._getter = getter;\n }\n\n private _resolve(): Schema<T, Input> {\n const resolved = (this._resolved ??= this._getter());\n\n return resolved;\n }\n\n protected override _parse(value: unknown, ctx: ParseContext): ParseValue {\n const result = this._resolve()._parseFullSync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue> {\n const result = await this._resolve()._parseFullAsync(value, ctx);\n\n if (result.issues.length === 0) return { data: result.data, issues: [], typeOk: true };\n\n return { data: value, issues: result.issues, typeOk: true };\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'lazy' };\n }\n\n protected override _construct(state: SchemaState<any>): this {\n // Do not copy _resolved: each clone re-resolves from the getter on first use.\n const next = new LazySchema(this._getter) as this;\n\n next.state = state as any;\n\n return next;\n }\n}\n"],"mappings":"oCAIA,IAAa,EAAb,MAAa,UAAiC,CAAiB,CAC7D,QACA,UAEA,IAAuB,OAAgB,CACrC,MAAO,MACT,CAEA,YAAY,EAAgC,CAC1C,MAAM,EACN,KAAK,QAAU,CACjB,CAEA,UAAqC,CAGnC,MAAO,MAFgB,YAAc,KAAK,QAAQ,CAGpD,CAEA,OAA0B,EAAgB,EAA+B,CACvE,IAAM,EAAS,KAAK,SAAS,CAAC,CAAC,eAAe,EAAO,CAAG,EAIxD,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,MAAyB,YAAY,EAAgB,EAAwC,CAC3F,IAAM,EAAS,MAAM,KAAK,SAAS,CAAC,CAAC,gBAAgB,EAAO,CAAG,EAI/D,OAFI,EAAO,OAAO,SAAW,EAAU,CAAE,KAAM,EAAO,KAAM,OAAQ,CAAC,EAAG,OAAQ,EAAK,EAE9E,CAAE,KAAM,EAAO,OAAQ,EAAO,OAAQ,OAAQ,EAAK,CAC5D,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,MAAO,CACjD,CAEA,WAA8B,EAA+B,CAE3D,IAAM,EAAO,IAAI,EAAW,KAAK,OAAO,EAIxC,MAFA,GAAK,MAAQ,EAEN,CACT,CACF"}
|
package/dist/schemas/literal.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{value;get _kind(){return`literal`}
|
|
1
|
+
const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{value;get _kind(){return`literal`}constructor(t){super((n,r)=>n===t?null:[{code:e.ErrorCode.invalid_literal,message:r.messages.literal.expected({expected:t}),params:{expected:t},path:[]}]),this.value=t}_toDescriptorImpl(){return{...this._describeBase(),kind:`literal`,value:this.value}}};exports.LiteralSchema=n;
|
|
2
2
|
//# sourceMappingURL=literal.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.cjs","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"literal.cjs","names":[],"sources":["../../src/schemas/literal.ts"],"sourcesContent":["import type { SchemaDescriptor } from '../core';\n\nimport { ErrorCode, Schema } from '../core';\n\nexport class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<T, T> {\n readonly value: T;\n\n protected override get _kind(): string {\n return 'literal';\n }\n\n constructor(value: T) {\n super((val, ctx) =>\n val === value\n ? null\n : [\n {\n code: ErrorCode.invalid_literal,\n message: ctx!.messages.literal.expected({ expected: value }),\n params: { expected: value },\n path: [],\n },\n ],\n );\n this.value = value;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n}\n"],"mappings":"yDAIA,IAAa,EAAb,cAA2F,EAAA,MAAa,CACtG,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,CAEA,YAAY,EAAU,CACpB,OAAO,EAAK,IACV,IAAQ,EACJ,KACA,CACE,CACE,KAAM,EAAA,UAAU,gBAChB,QAAS,EAAK,SAAS,QAAQ,SAAS,CAAE,SAAU,CAAM,CAAC,EAC3D,OAAQ,CAAE,SAAU,CAAM,EAC1B,KAAM,CAAC,CACT,CACF,CACN,EACA,KAAK,MAAQ,CACf,CAEA,mBAAyD,CACvD,MAAO,CAAE,GAAG,KAAK,cAAc,EAAG,KAAM,UAAW,MAAO,KAAK,KAAM,CACvE,CACF"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SchemaDescriptor } from '../core';
|
|
2
2
|
import { Schema } from '../core';
|
|
3
|
-
export declare class LiteralSchema<T extends string | number | boolean | null | undefined
|
|
3
|
+
export declare class LiteralSchema<T extends string | number | boolean | null | undefined> extends Schema<T, T> {
|
|
4
4
|
readonly value: T;
|
|
5
5
|
protected get _kind(): string;
|
|
6
|
-
checkAsync(this: LiteralSchema<T, 'sync'>, fn: (value: T, ctx: CheckContext) => Promise<ValidateResult>): LiteralSchema<T, 'async'>;
|
|
7
6
|
constructor(value: T);
|
|
8
7
|
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
9
|
-
protected _walk<R>(visitor: SchemaWalker<R>): R | null;
|
|
10
8
|
}
|
|
11
9
|
//# sourceMappingURL=literal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schemas/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
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,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACrG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,KAAK,EAAE,CAAC;cAgBD,iBAAiB,IAAI,gBAAgB;CAGzD"}
|
package/dist/schemas/literal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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`}
|
|
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`}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}}};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 {
|
|
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<T extends string | number | boolean | null | undefined> extends Schema<T, T> {\n readonly value: T;\n\n protected override get _kind(): string {\n return 'literal';\n }\n\n constructor(value: T) {\n super((val, ctx) =>\n val === value\n ? null\n : [\n {\n code: ErrorCode.invalid_literal,\n message: ctx!.messages.literal.expected({ expected: value }),\n params: { expected: value },\n path: [],\n },\n ],\n );\n this.value = value;\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n return { ...this._describeBase(), kind: 'literal', value: this.value };\n }\n}\n"],"mappings":"4EAIA,IAAa,EAAb,cAA2F,CAAa,CACtG,MAEA,IAAuB,OAAgB,CACrC,MAAO,SACT,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,CACF"}
|
package/dist/schemas/map.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class extends n.Schema{keySchema;valueSchema;get _kind(){return`map`}
|
|
1
|
+
const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class extends n.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:t.ErrorCode.invalid_type,message:r.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[t,s]of n){let n=this.keySchema._parseFullSync(t,r),c=this.valueSchema._parseFullSync(s,r);n.issues.length>0&&a.push(...e.prependIssuePath(n.issues,o)),c.issues.length>0&&a.push(...e.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,r){if(!(n instanceof Map))return{data:n,issues:[{code:t.ErrorCode.invalid_type,message:r.messages.map.type(),path:[]}],typeOk:!1};let i=[...n],a=await Promise.all(i.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,r),this.valueSchema._parseFullAsync(t,r)]))),o=[],s=new Map;for(let t=0;t<a.length;t++){let[n,r]=a[t];n.issues.length>0&&o.push(...e.prependIssuePath(n.issues,t)),r.issues.length>0&&o.push(...e.prependIssuePath(r.issues,t)),n.issues.length===0&&r.issues.length===0&&s.set(n.data,r.data)}return{data:s,issues:o,typeOk:!0}}min(n,r){return this._addConstraint((i,a)=>{let o=i;return o.size>=n?null:e.fail(t.ErrorCode.too_small,e.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:e.fail(t.ErrorCode.too_big,e.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:e.fail(t.ErrorCode.invalid_length,e.resolveMessage(r??a.messages.map.size,{exact:n,value:o}),{exact:n})})}nonEmpty(n){return this._addConstraint((r,i)=>r.size>0?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(n??i.messages.map.nonEmpty,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`map`,value:this.valueSchema.definition()}}};exports.MapSchema=r;
|
|
2
2
|
//# sourceMappingURL=map.cjs.map
|
package/dist/schemas/map.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.cjs","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type {\n AnySchema,\n
|
|
1
|
+
{"version":3,"file":"map.cjs","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type {\n AnySchema,\n InferInput,\n InferOutput,\n Issue,\n MessageFn,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n} from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema } from '../core';\n\nexport class MapSchema<K extends AnySchema, V extends AnySchema> extends Schema<\n Map<InferOutput<K>, InferOutput<V>>,\n Map<InferInput<K>, InferInput<V>>\n> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n protected override get _kind(): string {\n return 'map';\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 protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<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 entries = [...value];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, ctx), this.valueSchema._parseFullAsync(val, ctx)]),\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 return { data: out, issues, typeOk: true };\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"],"mappings":"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"}
|
package/dist/schemas/map.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import type { AnySchema,
|
|
1
|
+
import type { AnySchema, InferInput, InferOutput, MessageFn, ParseContext, ParseValue, SchemaDescriptor } from '../core';
|
|
2
2
|
import { Schema } from '../core';
|
|
3
|
-
export declare class MapSchema<K extends AnySchema, V extends AnySchema
|
|
3
|
+
export declare class MapSchema<K extends AnySchema, V extends AnySchema> extends Schema<Map<InferOutput<K>, InferOutput<V>>, Map<InferInput<K>, InferInput<V>>> {
|
|
4
4
|
readonly keySchema: K;
|
|
5
5
|
readonly valueSchema: V;
|
|
6
6
|
protected get _kind(): string;
|
|
7
|
-
checkAsync(this: MapSchema<K, V, 'sync'>, fn: (value: Map<InferOutput<K>, InferOutput<V>>, ctx: CheckContext) => Promise<ValidateResult>): MapSchema<K, V, 'async'>;
|
|
8
7
|
constructor(keySchema: K, valueSchema: V);
|
|
9
8
|
protected _parse(value: unknown, ctx: ParseContext): ParseValue;
|
|
10
|
-
|
|
9
|
+
protected _parseAsync(value: unknown, ctx: ParseContext): Promise<ParseValue>;
|
|
11
10
|
min(size: number, message?: MessageFn<{
|
|
12
11
|
min: number;
|
|
13
12
|
value: Map<unknown, unknown>;
|
|
@@ -24,6 +23,5 @@ export declare class MapSchema<K extends AnySchema, V extends AnySchema, Mode ex
|
|
|
24
23
|
min: number;
|
|
25
24
|
}>): this;
|
|
26
25
|
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
27
|
-
protected _walk<R>(visitor: SchemaWalker<R>): R | null;
|
|
28
26
|
}
|
|
29
27
|
//# 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,EACV,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/schemas/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,WAAW,EAEX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAqD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEpF,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,CAAE,SAAQ,MAAM,CAC7E,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EACnC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAClC;IACC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAExB,cAAuB,KAAK,IAAI,MAAM,CAErC;gBAEW,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;cAMrB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU;cA8B/C,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAiC5F,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;CAQzD"}
|
package/dist/schemas/map.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{fail as e,prependIssuePath as t,resolveMessage as n}from"../errors.js";import{ErrorCode as r}from"../types.js";import{Schema as i}from"../core.js";var a=class extends i{keySchema;valueSchema;get _kind(){return`map`}constructor(e,t){super(),this.keySchema=e,this.valueSchema=t}_parse(e,n){if(!(e instanceof Map))return{data:e,issues:[{code:r.invalid_type,message:n.messages.map.type(),path:[]}],typeOk:!1};let i=new Map,a=[],o=0;for(let[r,s]of e){let e=this.keySchema._parseFullSync(r,n),c=this.valueSchema._parseFullSync(s,n);e.issues.length>0&&a.push(...t(e.issues,o)),c.issues.length>0&&a.push(...t(c.issues,o)),e.issues.length===0&&c.issues.length===0&&i.set(e.data,c.data),o+=1}return{data:i,issues:a,typeOk:!0}}async _parseAsync(e,n){if(!(e instanceof Map))return{data:e,issues:[{code:r.invalid_type,message:n.messages.map.type(),path:[]}],typeOk:!1};let i=[...e],a=await Promise.all(i.map(([e,t])=>Promise.all([this.keySchema._parseFullAsync(e,n),this.valueSchema._parseFullAsync(t,n)]))),o=[],s=new Map;for(let e=0;e<a.length;e++){let[n,r]=a[e];n.issues.length>0&&o.push(...t(n.issues,e)),r.issues.length>0&&o.push(...t(r.issues,e)),n.issues.length===0&&r.issues.length===0&&s.set(n.data,r.data)}return{data:s,issues:o,typeOk:!0}}min(t,i){return this._addConstraint((a,o)=>{let s=a;return s.size>=t?null:e(r.too_small,n(i??o.messages.map.min,{min:t,value:s}),{min:t})})}max(t,i){return this._addConstraint((a,o)=>{let s=a;return s.size<=t?null:e(r.too_big,n(i??o.messages.map.max,{max:t,value:s}),{max:t})})}size(t,i){return this._addConstraint((a,o)=>{let s=a;return s.size===t?null:e(r.invalid_length,n(i??o.messages.map.size,{exact:t,value:s}),{exact:t})})}nonEmpty(t){return this._addConstraint((i,a)=>i.size>0?null:e(r.too_small,n(t??a.messages.map.nonEmpty,{min:1}),{min:1}))}_toDescriptorImpl(){return{...this._describeBase(),key:this.keySchema.definition(),kind:`map`,value:this.valueSchema.definition()}}};export{a as MapSchema};
|
|
2
2
|
//# sourceMappingURL=map.js.map
|
package/dist/schemas/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type {\n AnySchema,\n
|
|
1
|
+
{"version":3,"file":"map.js","names":[],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type {\n AnySchema,\n InferInput,\n InferOutput,\n Issue,\n MessageFn,\n ParseContext,\n ParseValue,\n SchemaDescriptor,\n} from '../core';\n\nimport { ErrorCode, fail, prependIssuePath, resolveMessage, Schema } from '../core';\n\nexport class MapSchema<K extends AnySchema, V extends AnySchema> extends Schema<\n Map<InferOutput<K>, InferOutput<V>>,\n Map<InferInput<K>, InferInput<V>>\n> {\n readonly keySchema: K;\n readonly valueSchema: V;\n\n protected override get _kind(): string {\n return 'map';\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 protected override async _parseAsync(value: unknown, ctx: ParseContext): Promise<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 entries = [...value];\n const settled = await Promise.all(\n entries.map(([key, val]) =>\n Promise.all([this.keySchema._parseFullAsync(key, ctx), this.valueSchema._parseFullAsync(val, ctx)]),\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 return { data: out, issues, typeOk: true };\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"],"mappings":"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"}
|
package/dist/schemas/never.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{get _kind(){return`never`}
|
|
1
|
+
const e=require("../types.cjs"),t=require("../core.cjs");var n=class extends t.Schema{get _kind(){return`never`}constructor(){super((t,n)=>[{code:e.ErrorCode.invalid_type,message:n.messages.never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}};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 {
|
|
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 extends Schema<never, never> {\n protected override get _kind(): string {\n return 'never';\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"],"mappings":"yDAIA,IAAa,EAAb,cAAiC,EAAA,MAAqB,CACpD,IAAuB,OAAgB,CACrC,MAAO,OACT,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,CACF"}
|
package/dist/schemas/never.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SchemaDescriptor } from '../core';
|
|
2
2
|
import { Schema } from '../core';
|
|
3
|
-
export declare class NeverSchema
|
|
3
|
+
export declare class NeverSchema extends Schema<never, never> {
|
|
4
4
|
protected get _kind(): string;
|
|
5
|
-
checkAsync(this: NeverSchema<'sync'>, fn: (value: never, ctx: CheckContext) => Promise<ValidateResult>): NeverSchema<'async'>;
|
|
6
5
|
constructor();
|
|
7
6
|
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
8
|
-
protected _walk<R>(visitor: SchemaWalker<R>): R | null;
|
|
9
7
|
}
|
|
10
8
|
//# 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,
|
|
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,WAAY,SAAQ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACnD,cAAuB,KAAK,IAAI,MAAM,CAErC;;cAMkB,iBAAiB,IAAI,gBAAgB;CAGzD"}
|
package/dist/schemas/never.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{get _kind(){return`never`}
|
|
1
|
+
import{ErrorCode as e}from"../types.js";import{Schema as t}from"../core.js";var n=class extends t{get _kind(){return`never`}constructor(){super((t,n)=>[{code:e.invalid_type,message:n.messages.never.invalid(),path:[]}])}_toDescriptorImpl(){return{...this._describeBase(),kind:`never`}}};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 {
|
|
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 extends Schema<never, never> {\n protected override get _kind(): string {\n return 'never';\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"],"mappings":"4EAIA,IAAa,EAAb,cAAiC,CAAqB,CACpD,IAAuB,OAAgB,CACrC,MAAO,OACT,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,CACF"}
|
package/dist/schemas/number.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{get _kind(){return`number`}
|
|
1
|
+
const e=require("../errors.cjs"),t=require("../types.cjs"),n=require("../core.cjs");var r=class r extends n.Schema{get _kind(){return`number`}constructor(){super((n,r)=>typeof n==`number`&&!Number.isNaN(n)?null:e.fail(t.ErrorCode.invalid_type,r.messages.number.type()))}min(n,r){return this._addConstraint((i,a)=>i>=n?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(r??a.messages.number.min,{min:n,value:i}),{min:n}),e=>{let t=e;return{...t,minimum:t.minimum===void 0?n:Math.max(t.minimum,n)}})}max(n,r){return this._addConstraint((i,a)=>i<=n?null:e.fail(t.ErrorCode.too_big,e.resolveMessage(r??a.messages.number.max,{max:n,value:i}),{max:n}),e=>{let t=e;return{...t,maximum:t.maximum===void 0?n:Math.min(t.maximum,n)}})}int(n){return this._addConstraint((r,i)=>Number.isInteger(r)?null:e.fail(t.ErrorCode.invalid_integer,e.resolveMessage(n??i.messages.number.int,{value:r})),e=>({...e,typeHint:`integer`}))}positive(n){return this._addConstraint((r,i)=>r>0?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(n??i.messages.number.positive,{value:r}),{exclusive:!0,min:0}),e=>{let t=e;return{...t,exclusiveMinimum:t.exclusiveMinimum===void 0?0:Math.max(t.exclusiveMinimum,0)}})}negative(n){return this._addConstraint((r,i)=>r<0?null:e.fail(t.ErrorCode.too_big,e.resolveMessage(n??i.messages.number.negative,{value:r}),{exclusive:!0,max:0}),e=>{let t=e;return{...t,exclusiveMaximum:t.exclusiveMaximum===void 0?0:Math.min(t.exclusiveMaximum,0)}})}nonNegative(n){return this._addConstraint((r,i)=>r>=0?null:e.fail(t.ErrorCode.too_small,e.resolveMessage(n??i.messages.number.nonNegative,{value:r}),{min:0}),e=>{let t=e;return{...t,minimum:t.minimum===void 0?0:Math.max(t.minimum,0)}})}nonPositive(n){return this._addConstraint((r,i)=>r<=0?null:e.fail(t.ErrorCode.too_big,e.resolveMessage(n??i.messages.number.nonPositive,{value:r}),{max:0}),e=>{let t=e;return{...t,maximum:t.maximum===void 0?0:Math.min(t.maximum,0)}})}multipleOf(n,r){return this._addConstraint((i,a)=>Math.abs(Math.round(i/n)-i/n)<1e-9?null:e.fail(t.ErrorCode.invalid_multiple_of,e.resolveMessage(r??a.messages.number.multipleOf,{step:n,value:i}),{step:n}),e=>({...e,multipleOf:n}))}safe(n){return this._addConstraint((r,i)=>Number.isSafeInteger(r)?null:e.fail(t.ErrorCode.invalid_safe,e.resolveMessage(n??i.messages.number.safe,{value:r})))}finite(n){return this._addConstraint((r,i)=>Number.isFinite(r)?null:e.fail(t.ErrorCode.invalid_finite,e.resolveMessage(n??i.messages.number.finite,{value:r})))}_toDescriptorImpl(){let e=this._annotations;return{...this._describeBase(),...e.exclusiveMaximum===void 0?{}:{exclusiveMaximum:e.exclusiveMaximum},...e.exclusiveMinimum===void 0?{}:{exclusiveMinimum:e.exclusiveMinimum},...e.maximum===void 0?{}:{maximum:e.maximum},...e.minimum===void 0?{}:{minimum:e.minimum},...e.multipleOf===void 0?{}:{multipleOf:e.multipleOf},...e.typeHint===void 0?{}:{typeHint:e.typeHint},kind:`number`}}static coerce(){return new r().preprocess(e=>{if(typeof e==`number`)return e;if(typeof e==`string`||typeof e==`boolean`){let t=Number(e);return Number.isNaN(t)?e:t}return e})}};exports.NumberSchema=r;
|
|
2
2
|
//# sourceMappingURL=number.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.cjs","names":[],"sources":["../../src/schemas/number.ts"],"sourcesContent":["import type { CheckContext, MessageFn, SchemaDescriptor, SchemaMode, SchemaWalker, ValidateResult } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\n/* -------------------- Typed annotations -------------------- */\n\ninterface NumberAnnotations extends Record<string, unknown> {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n}\n\nexport class NumberSchema<Input = number, Mode extends SchemaMode = 'sync'> extends Schema<number, Input, Mode> {\n protected override get _kind(): string {\n return 'number';\n }\n\n override checkAsync(\n this: NumberSchema<Input, 'sync'>,\n fn: (value: number, ctx: CheckContext) => Promise<ValidateResult>,\n ): NumberSchema<Input, 'async'> {\n return this._addCheck(fn, true) as unknown as NumberSchema<Input, 'async'>;\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'number' && !Number.isNaN(value)\n ? null\n : fail(ErrorCode.invalid_type, ctx!.messages.number.type()),\n );\n }\n\n min(minimum: number, message?: MessageFn<{ min: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) >= minimum) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.min, { min: minimum, value: value as number }),\n {\n min: minimum,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n minimum: ann.minimum === undefined ? minimum : Math.max(ann.minimum, minimum),\n };\n },\n );\n }\n\n max(maximum: number, message?: MessageFn<{ max: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) <= maximum) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.max, { max: maximum, value: value as number }),\n {\n max: maximum,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n maximum: ann.maximum === undefined ? maximum : Math.min(ann.maximum, maximum),\n };\n },\n );\n }\n\n int(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if (Number.isInteger(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_integer,\n resolveMessage(message ?? ctx!.messages.number.int, { value: value as number }),\n );\n },\n (ann) => ({ ...ann, typeHint: 'integer' as const }),\n );\n }\n\n positive(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) > 0) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.positive, { value: value as number }),\n {\n exclusive: true,\n min: 0,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n exclusiveMinimum: ann.exclusiveMinimum === undefined ? 0 : Math.max(ann.exclusiveMinimum, 0),\n };\n },\n );\n }\n\n negative(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) < 0) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.negative, { value: value as number }),\n {\n exclusive: true,\n max: 0,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n exclusiveMaximum: ann.exclusiveMaximum === undefined ? 0 : Math.min(ann.exclusiveMaximum, 0),\n };\n },\n );\n }\n\n nonNegative(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) >= 0) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.nonNegative, { value: value as number }),\n { min: 0 },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return { ...ann, minimum: ann.minimum === undefined ? 0 : Math.max(ann.minimum, 0) };\n },\n );\n }\n\n nonPositive(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) <= 0) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.nonPositive, { value: value as number }),\n { max: 0 },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return { ...ann, maximum: ann.maximum === undefined ? 0 : Math.min(ann.maximum, 0) };\n },\n );\n }\n\n multipleOf(step: number, message?: MessageFn<{ step: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if (Math.abs(Math.round((value as number) / step) - (value as number) / step) < 1e-9) return null;\n\n return fail(\n ErrorCode.invalid_multiple_of,\n resolveMessage(message ?? ctx!.messages.number.multipleOf, { step, value: value as number }),\n { step },\n );\n },\n (ann) => ({ ...ann, multipleOf: step }),\n );\n }\n\n safe(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint((value, ctx) => {\n if (Number.isSafeInteger(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_safe,\n resolveMessage(message ?? ctx!.messages.number.safe, { value: value as number }),\n );\n });\n }\n\n finite(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint((value, ctx) => {\n if (Number.isFinite(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_finite,\n resolveMessage(message ?? ctx!.messages.number.finite, { value: value as number }),\n );\n });\n }\n\n protected override _walk<R>(visitor: SchemaWalker<R>): R | null {\n if (visitor.number) return visitor.number(this);\n\n return super._walk(visitor);\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n const ann = this._annotations as NumberAnnotations;\n\n return {\n ...this._describeBase(),\n ...(ann.exclusiveMaximum !== undefined ? { exclusiveMaximum: ann.exclusiveMaximum } : {}),\n ...(ann.exclusiveMinimum !== undefined ? { exclusiveMinimum: ann.exclusiveMinimum } : {}),\n ...(ann.maximum !== undefined ? { maximum: ann.maximum } : {}),\n ...(ann.minimum !== undefined ? { minimum: ann.minimum } : {}),\n ...(ann.multipleOf !== undefined ? { multipleOf: ann.multipleOf } : {}),\n ...(ann.typeHint !== undefined ? { typeHint: ann.typeHint } : {}),\n kind: 'number',\n };\n }\n\n static coerce(): NumberSchema<unknown> {\n return new NumberSchema().preprocess((v: unknown) => {\n if (typeof v === 'number') return v;\n\n if (typeof v === 'string' || typeof v === 'boolean') {\n const n = Number(v);\n\n return Number.isNaN(n) ? v : n;\n }\n\n return v;\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"number.cjs","names":[],"sources":["../../src/schemas/number.ts"],"sourcesContent":["import type { MessageFn, SchemaDescriptor } from '../core';\n\nimport { ErrorCode, fail, resolveMessage, Schema } from '../core';\n\n/* -------------------- Typed annotations -------------------- */\n\ninterface NumberAnnotations extends Record<string, unknown> {\n exclusiveMaximum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n minimum?: number;\n multipleOf?: number;\n typeHint?: 'integer';\n}\n\nexport class NumberSchema<Input = number> extends Schema<number, Input> {\n protected override get _kind(): string {\n return 'number';\n }\n\n constructor() {\n super((value, ctx) =>\n typeof value === 'number' && !Number.isNaN(value)\n ? null\n : fail(ErrorCode.invalid_type, ctx!.messages.number.type()),\n );\n }\n\n min(minimum: number, message?: MessageFn<{ min: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) >= minimum) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.min, { min: minimum, value: value as number }),\n {\n min: minimum,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n minimum: ann.minimum === undefined ? minimum : Math.max(ann.minimum, minimum),\n };\n },\n );\n }\n\n max(maximum: number, message?: MessageFn<{ max: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) <= maximum) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.max, { max: maximum, value: value as number }),\n {\n max: maximum,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n maximum: ann.maximum === undefined ? maximum : Math.min(ann.maximum, maximum),\n };\n },\n );\n }\n\n int(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if (Number.isInteger(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_integer,\n resolveMessage(message ?? ctx!.messages.number.int, { value: value as number }),\n );\n },\n (ann) => ({ ...ann, typeHint: 'integer' as const }),\n );\n }\n\n positive(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) > 0) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.positive, { value: value as number }),\n {\n exclusive: true,\n min: 0,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n exclusiveMinimum: ann.exclusiveMinimum === undefined ? 0 : Math.max(ann.exclusiveMinimum, 0),\n };\n },\n );\n }\n\n negative(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) < 0) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.negative, { value: value as number }),\n {\n exclusive: true,\n max: 0,\n },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return {\n ...ann,\n exclusiveMaximum: ann.exclusiveMaximum === undefined ? 0 : Math.min(ann.exclusiveMaximum, 0),\n };\n },\n );\n }\n\n nonNegative(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) >= 0) return null;\n\n return fail(\n ErrorCode.too_small,\n resolveMessage(message ?? ctx!.messages.number.nonNegative, { value: value as number }),\n { min: 0 },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return { ...ann, minimum: ann.minimum === undefined ? 0 : Math.max(ann.minimum, 0) };\n },\n );\n }\n\n nonPositive(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if ((value as number) <= 0) return null;\n\n return fail(\n ErrorCode.too_big,\n resolveMessage(message ?? ctx!.messages.number.nonPositive, { value: value as number }),\n { max: 0 },\n );\n },\n (current) => {\n const ann = current as NumberAnnotations;\n\n return { ...ann, maximum: ann.maximum === undefined ? 0 : Math.min(ann.maximum, 0) };\n },\n );\n }\n\n multipleOf(step: number, message?: MessageFn<{ step: number; value: number }>): this {\n return this._addConstraint(\n (value, ctx) => {\n if (Math.abs(Math.round((value as number) / step) - (value as number) / step) < 1e-9) return null;\n\n return fail(\n ErrorCode.invalid_multiple_of,\n resolveMessage(message ?? ctx!.messages.number.multipleOf, { step, value: value as number }),\n { step },\n );\n },\n (ann) => ({ ...ann, multipleOf: step }),\n );\n }\n\n safe(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint((value, ctx) => {\n if (Number.isSafeInteger(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_safe,\n resolveMessage(message ?? ctx!.messages.number.safe, { value: value as number }),\n );\n });\n }\n\n finite(message?: MessageFn<{ value: number }>): this {\n return this._addConstraint((value, ctx) => {\n if (Number.isFinite(value as number)) return null;\n\n return fail(\n ErrorCode.invalid_finite,\n resolveMessage(message ?? ctx!.messages.number.finite, { value: value as number }),\n );\n });\n }\n\n protected override _toDescriptorImpl(): SchemaDescriptor {\n const ann = this._annotations as NumberAnnotations;\n\n return {\n ...this._describeBase(),\n ...(ann.exclusiveMaximum !== undefined ? { exclusiveMaximum: ann.exclusiveMaximum } : {}),\n ...(ann.exclusiveMinimum !== undefined ? { exclusiveMinimum: ann.exclusiveMinimum } : {}),\n ...(ann.maximum !== undefined ? { maximum: ann.maximum } : {}),\n ...(ann.minimum !== undefined ? { minimum: ann.minimum } : {}),\n ...(ann.multipleOf !== undefined ? { multipleOf: ann.multipleOf } : {}),\n ...(ann.typeHint !== undefined ? { typeHint: ann.typeHint } : {}),\n kind: 'number',\n };\n }\n\n static coerce(): NumberSchema<unknown> {\n return new NumberSchema().preprocess((v: unknown) => {\n if (typeof v === 'number') return v;\n\n if (typeof v === 'string' || typeof v === 'boolean') {\n const n = Number(v);\n\n return Number.isNaN(n) ? v : n;\n }\n\n return v;\n });\n }\n}\n"],"mappings":"oFAeA,IAAa,EAAb,MAAa,UAAqC,EAAA,MAAsB,CACtE,IAAuB,OAAgB,CACrC,MAAO,QACT,CAEA,aAAc,CACZ,OAAO,EAAO,IACZ,OAAO,GAAU,UAAY,CAAC,OAAO,MAAM,CAAK,EAC5C,KACA,EAAA,KAAK,EAAA,UAAU,aAAc,EAAK,SAAS,OAAO,KAAK,CAAC,CAC9D,CACF,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBACT,EAAO,IACD,GAAoB,EAAgB,KAElC,EAAA,KACL,EAAA,UAAU,UACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAgB,OAAgB,CAAC,EAC5F,CACE,IAAK,CACP,CACF,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CACL,GAAG,EACH,QAAS,EAAI,UAAY,IAAA,GAAY,EAAU,KAAK,IAAI,EAAI,QAAS,CAAO,CAC9E,CACF,CACF,CACF,CAEA,IAAI,EAAiB,EAA2D,CAC9E,OAAO,KAAK,gBACT,EAAO,IACD,GAAoB,EAAgB,KAElC,EAAA,KACL,EAAA,UAAU,QACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAE,IAAK,EAAgB,OAAgB,CAAC,EAC5F,CACE,IAAK,CACP,CACF,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CACL,GAAG,EACH,QAAS,EAAI,UAAY,IAAA,GAAY,EAAU,KAAK,IAAI,EAAI,QAAS,CAAO,CAC9E,CACF,CACF,CACF,CAEA,IAAI,EAA8C,CAChD,OAAO,KAAK,gBACT,EAAO,IACF,OAAO,UAAU,CAAe,EAAU,KAEvC,EAAA,KACL,EAAA,UAAU,gBACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,IAAK,CAAS,OAAgB,CAAC,CAChF,EAED,IAAS,CAAE,GAAG,EAAK,SAAU,SAAmB,EACnD,CACF,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBACT,EAAO,IACD,EAAmB,EAAU,KAE3B,EAAA,KACL,EAAA,UAAU,UACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAS,OAAgB,CAAC,EACnF,CACE,UAAW,GACX,IAAK,CACP,CACF,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CACL,GAAG,EACH,iBAAkB,EAAI,mBAAqB,IAAA,GAAY,EAAI,KAAK,IAAI,EAAI,iBAAkB,CAAC,CAC7F,CACF,CACF,CACF,CAEA,SAAS,EAA8C,CACrD,OAAO,KAAK,gBACT,EAAO,IACD,EAAmB,EAAU,KAE3B,EAAA,KACL,EAAA,UAAU,QACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,SAAU,CAAS,OAAgB,CAAC,EACnF,CACE,UAAW,GACX,IAAK,CACP,CACF,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CACL,GAAG,EACH,iBAAkB,EAAI,mBAAqB,IAAA,GAAY,EAAI,KAAK,IAAI,EAAI,iBAAkB,CAAC,CAC7F,CACF,CACF,CACF,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBACT,EAAO,IACD,GAAoB,EAAU,KAE5B,EAAA,KACL,EAAA,UAAU,UACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAS,OAAgB,CAAC,EACtF,CAAE,IAAK,CAAE,CACX,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CAAE,GAAG,EAAK,QAAS,EAAI,UAAY,IAAA,GAAY,EAAI,KAAK,IAAI,EAAI,QAAS,CAAC,CAAE,CACrF,CACF,CACF,CAEA,YAAY,EAA8C,CACxD,OAAO,KAAK,gBACT,EAAO,IACD,GAAoB,EAAU,KAE5B,EAAA,KACL,EAAA,UAAU,QACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,YAAa,CAAS,OAAgB,CAAC,EACtF,CAAE,IAAK,CAAE,CACX,EAED,GAAY,CACX,IAAM,EAAM,EAEZ,MAAO,CAAE,GAAG,EAAK,QAAS,EAAI,UAAY,IAAA,GAAY,EAAI,KAAK,IAAI,EAAI,QAAS,CAAC,CAAE,CACrF,CACF,CACF,CAEA,WAAW,EAAc,EAA4D,CACnF,OAAO,KAAK,gBACT,EAAO,IACF,KAAK,IAAI,KAAK,MAAO,EAAmB,CAAI,EAAK,EAAmB,CAAI,EAAI,KAAa,KAEtF,EAAA,KACL,EAAA,UAAU,oBACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,WAAY,CAAE,OAAa,OAAgB,CAAC,EAC3F,CAAE,MAAK,CACT,EAED,IAAS,CAAE,GAAG,EAAK,WAAY,CAAK,EACvC,CACF,CAEA,KAAK,EAA8C,CACjD,OAAO,KAAK,gBAAgB,EAAO,IAC7B,OAAO,cAAc,CAAe,EAAU,KAE3C,EAAA,KACL,EAAA,UAAU,aACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,KAAM,CAAS,OAAgB,CAAC,CACjF,CACD,CACH,CAEA,OAAO,EAA8C,CACnD,OAAO,KAAK,gBAAgB,EAAO,IAC7B,OAAO,SAAS,CAAe,EAAU,KAEtC,EAAA,KACL,EAAA,UAAU,eACV,EAAA,eAAe,GAAW,EAAK,SAAS,OAAO,OAAQ,CAAS,OAAgB,CAAC,CACnF,CACD,CACH,CAEA,mBAAyD,CACvD,IAAM,EAAM,KAAK,aAEjB,MAAO,CACL,GAAG,KAAK,cAAc,EACtB,GAAI,EAAI,mBAAqB,IAAA,GAAyD,CAAC,EAA9C,CAAE,iBAAkB,EAAI,gBAAiB,EAClF,GAAI,EAAI,mBAAqB,IAAA,GAAyD,CAAC,EAA9C,CAAE,iBAAkB,EAAI,gBAAiB,EAClF,GAAI,EAAI,UAAY,IAAA,GAAuC,CAAC,EAA5B,CAAE,QAAS,EAAI,OAAQ,EACvD,GAAI,EAAI,UAAY,IAAA,GAAuC,CAAC,EAA5B,CAAE,QAAS,EAAI,OAAQ,EACvD,GAAI,EAAI,aAAe,IAAA,GAA6C,CAAC,EAAlC,CAAE,WAAY,EAAI,UAAW,EAChE,GAAI,EAAI,WAAa,IAAA,GAAyC,CAAC,EAA9B,CAAE,SAAU,EAAI,QAAS,EAC1D,KAAM,QACR,CACF,CAEA,OAAO,QAAgC,CACrC,OAAO,IAAI,EAAa,CAAC,CAAC,WAAY,GAAe,CACnD,GAAI,OAAO,GAAM,SAAU,OAAO,EAElC,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,UAAW,CACnD,IAAM,EAAI,OAAO,CAAC,EAElB,OAAO,OAAO,MAAM,CAAC,EAAI,EAAI,CAC/B,CAEA,OAAO,CACT,CAAC,CACH,CACF"}
|
package/dist/schemas/number.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MessageFn, SchemaDescriptor } from '../core';
|
|
2
2
|
import { Schema } from '../core';
|
|
3
|
-
export declare class NumberSchema<Input = number
|
|
3
|
+
export declare class NumberSchema<Input = number> extends Schema<number, Input> {
|
|
4
4
|
protected get _kind(): string;
|
|
5
|
-
checkAsync(this: NumberSchema<Input, 'sync'>, fn: (value: number, ctx: CheckContext) => Promise<ValidateResult>): NumberSchema<Input, 'async'>;
|
|
6
5
|
constructor();
|
|
7
6
|
min(minimum: number, message?: MessageFn<{
|
|
8
7
|
min: number;
|
|
@@ -37,7 +36,6 @@ export declare class NumberSchema<Input = number, Mode extends SchemaMode = 'syn
|
|
|
37
36
|
finite(message?: MessageFn<{
|
|
38
37
|
value: number;
|
|
39
38
|
}>): this;
|
|
40
|
-
protected _walk<R>(visitor: SchemaWalker<R>): R | null;
|
|
41
39
|
protected _toDescriptorImpl(): SchemaDescriptor;
|
|
42
40
|
static coerce(): NumberSchema<unknown>;
|
|
43
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/schemas/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/schemas/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAC;AAalE,qBAAa,YAAY,CAAC,KAAK,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACrE,cAAuB,KAAK,IAAI,MAAM,CAErC;;IAUD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAwB/E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAwB/E,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAcjD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAyBtD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAyBtD,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAmBzD,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAmBzD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAepF,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAWlD,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;cAWjC,iBAAiB,IAAI,gBAAgB;IAexD,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC;CAavC"}
|
package/dist/schemas/number.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{fail as e,resolveMessage as t}from"../errors.js";import{ErrorCode as n}from"../types.js";import{Schema as r}from"../core.js";var i=class i extends r{get _kind(){return`number`}
|
|
1
|
+
import{fail as e,resolveMessage as t}from"../errors.js";import{ErrorCode as n}from"../types.js";import{Schema as r}from"../core.js";var i=class i extends r{get _kind(){return`number`}constructor(){super((t,r)=>typeof t==`number`&&!Number.isNaN(t)?null:e(n.invalid_type,r.messages.number.type()))}min(r,i){return this._addConstraint((a,o)=>a>=r?null:e(n.too_small,t(i??o.messages.number.min,{min:r,value:a}),{min:r}),e=>{let t=e;return{...t,minimum:t.minimum===void 0?r:Math.max(t.minimum,r)}})}max(r,i){return this._addConstraint((a,o)=>a<=r?null:e(n.too_big,t(i??o.messages.number.max,{max:r,value:a}),{max:r}),e=>{let t=e;return{...t,maximum:t.maximum===void 0?r:Math.min(t.maximum,r)}})}int(r){return this._addConstraint((i,a)=>Number.isInteger(i)?null:e(n.invalid_integer,t(r??a.messages.number.int,{value:i})),e=>({...e,typeHint:`integer`}))}positive(r){return this._addConstraint((i,a)=>i>0?null:e(n.too_small,t(r??a.messages.number.positive,{value:i}),{exclusive:!0,min:0}),e=>{let t=e;return{...t,exclusiveMinimum:t.exclusiveMinimum===void 0?0:Math.max(t.exclusiveMinimum,0)}})}negative(r){return this._addConstraint((i,a)=>i<0?null:e(n.too_big,t(r??a.messages.number.negative,{value:i}),{exclusive:!0,max:0}),e=>{let t=e;return{...t,exclusiveMaximum:t.exclusiveMaximum===void 0?0:Math.min(t.exclusiveMaximum,0)}})}nonNegative(r){return this._addConstraint((i,a)=>i>=0?null:e(n.too_small,t(r??a.messages.number.nonNegative,{value:i}),{min:0}),e=>{let t=e;return{...t,minimum:t.minimum===void 0?0:Math.max(t.minimum,0)}})}nonPositive(r){return this._addConstraint((i,a)=>i<=0?null:e(n.too_big,t(r??a.messages.number.nonPositive,{value:i}),{max:0}),e=>{let t=e;return{...t,maximum:t.maximum===void 0?0:Math.min(t.maximum,0)}})}multipleOf(r,i){return this._addConstraint((a,o)=>Math.abs(Math.round(a/r)-a/r)<1e-9?null:e(n.invalid_multiple_of,t(i??o.messages.number.multipleOf,{step:r,value:a}),{step:r}),e=>({...e,multipleOf:r}))}safe(r){return this._addConstraint((i,a)=>Number.isSafeInteger(i)?null:e(n.invalid_safe,t(r??a.messages.number.safe,{value:i})))}finite(r){return this._addConstraint((i,a)=>Number.isFinite(i)?null:e(n.invalid_finite,t(r??a.messages.number.finite,{value:i})))}_toDescriptorImpl(){let e=this._annotations;return{...this._describeBase(),...e.exclusiveMaximum===void 0?{}:{exclusiveMaximum:e.exclusiveMaximum},...e.exclusiveMinimum===void 0?{}:{exclusiveMinimum:e.exclusiveMinimum},...e.maximum===void 0?{}:{maximum:e.maximum},...e.minimum===void 0?{}:{minimum:e.minimum},...e.multipleOf===void 0?{}:{multipleOf:e.multipleOf},...e.typeHint===void 0?{}:{typeHint:e.typeHint},kind:`number`}}static coerce(){return new i().preprocess(e=>{if(typeof e==`number`)return e;if(typeof e==`string`||typeof e==`boolean`){let t=Number(e);return Number.isNaN(t)?e:t}return e})}};export{i as NumberSchema};
|
|
2
2
|
//# sourceMappingURL=number.js.map
|