@atproto/lex-schema 0.0.4 → 0.0.6
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/CHANGELOG.md +58 -0
- package/dist/core/$type.d.ts +7 -0
- package/dist/core/$type.d.ts.map +1 -1
- package/dist/core/$type.js.map +1 -1
- package/dist/core/property-key.d.ts.map +1 -0
- package/dist/core/property-key.js.map +1 -0
- package/dist/core/result.d.ts +7 -6
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +9 -8
- package/dist/core/result.js.map +1 -1
- package/dist/{validation → core}/schema.d.ts +21 -2
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/{validation → core}/schema.js +25 -2
- package/dist/core/schema.js.map +1 -0
- package/dist/core/string-format.d.ts +37 -26
- package/dist/core/string-format.d.ts.map +1 -1
- package/dist/core/string-format.js +66 -59
- package/dist/core/string-format.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/validation-error.d.ts +19 -0
- package/dist/core/validation-error.d.ts.map +1 -0
- package/dist/{validation → core}/validation-error.js +13 -6
- package/dist/core/validation-error.js.map +1 -0
- package/dist/{validation → core}/validation-issue.d.ts +43 -0
- package/dist/core/validation-issue.d.ts.map +1 -0
- package/dist/{validation → core}/validation-issue.js +55 -2
- package/dist/core/validation-issue.js.map +1 -0
- package/dist/{validation → core}/validator.d.ts +5 -4
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/{validation → core}/validator.js +16 -13
- package/dist/core/validator.js.map +1 -0
- package/dist/core.d.ts +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +5 -0
- package/dist/core.js.map +1 -1
- package/dist/external.d.ts +21 -21
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +39 -55
- package/dist/external.js.map +1 -1
- package/dist/helpers.d.ts +41 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +13 -0
- package/dist/helpers.js.map +1 -0
- package/dist/schema/_parameters.d.ts +1 -1
- package/dist/schema/_parameters.d.ts.map +1 -1
- package/dist/schema/_parameters.js.map +1 -1
- package/dist/schema/array.d.ts +1 -1
- package/dist/schema/array.d.ts.map +1 -1
- package/dist/schema/array.js +2 -2
- package/dist/schema/array.js.map +1 -1
- package/dist/schema/blob.d.ts +2 -1
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +34 -20
- package/dist/schema/blob.js.map +1 -1
- package/dist/schema/boolean.d.ts +1 -1
- package/dist/schema/boolean.d.ts.map +1 -1
- package/dist/schema/boolean.js +2 -2
- package/dist/schema/boolean.js.map +1 -1
- package/dist/schema/bytes.d.ts +1 -1
- package/dist/schema/bytes.d.ts.map +1 -1
- package/dist/schema/bytes.js +2 -2
- package/dist/schema/bytes.js.map +1 -1
- package/dist/schema/cid.d.ts +1 -1
- package/dist/schema/cid.d.ts.map +1 -1
- package/dist/schema/cid.js +2 -2
- package/dist/schema/cid.js.map +1 -1
- package/dist/schema/custom.d.ts +1 -1
- package/dist/schema/custom.d.ts.map +1 -1
- package/dist/schema/custom.js +3 -3
- package/dist/schema/custom.js.map +1 -1
- package/dist/schema/dict.d.ts +1 -1
- package/dist/schema/dict.d.ts.map +1 -1
- package/dist/schema/dict.js +2 -2
- package/dist/schema/dict.js.map +1 -1
- package/dist/schema/discriminated-union.d.ts +1 -1
- package/dist/schema/discriminated-union.d.ts.map +1 -1
- package/dist/schema/discriminated-union.js +2 -2
- package/dist/schema/discriminated-union.js.map +1 -1
- package/dist/schema/enum.d.ts +1 -1
- package/dist/schema/enum.d.ts.map +1 -1
- package/dist/schema/enum.js +2 -2
- package/dist/schema/enum.js.map +1 -1
- package/dist/schema/integer.d.ts +1 -1
- package/dist/schema/integer.d.ts.map +1 -1
- package/dist/schema/integer.js +4 -4
- package/dist/schema/integer.js.map +1 -1
- package/dist/schema/intersection.d.ts +1 -2
- package/dist/schema/intersection.d.ts.map +1 -1
- package/dist/schema/intersection.js +2 -2
- package/dist/schema/intersection.js.map +1 -1
- package/dist/schema/literal.d.ts +1 -1
- package/dist/schema/literal.d.ts.map +1 -1
- package/dist/schema/literal.js +2 -2
- package/dist/schema/literal.js.map +1 -1
- package/dist/schema/never.d.ts +1 -1
- package/dist/schema/never.d.ts.map +1 -1
- package/dist/schema/never.js +2 -2
- package/dist/schema/never.js.map +1 -1
- package/dist/schema/null.d.ts +1 -1
- package/dist/schema/null.d.ts.map +1 -1
- package/dist/schema/null.js +2 -2
- package/dist/schema/null.js.map +1 -1
- package/dist/schema/nullable.d.ts +1 -1
- package/dist/schema/nullable.d.ts.map +1 -1
- package/dist/schema/nullable.js +2 -2
- package/dist/schema/nullable.js.map +1 -1
- package/dist/schema/object.d.ts +1 -2
- package/dist/schema/object.d.ts.map +1 -1
- package/dist/schema/object.js +2 -2
- package/dist/schema/object.js.map +1 -1
- package/dist/schema/optional.d.ts +1 -1
- package/dist/schema/optional.d.ts.map +1 -1
- package/dist/schema/optional.js +2 -2
- package/dist/schema/optional.js.map +1 -1
- package/dist/schema/params.d.ts +1 -3
- package/dist/schema/params.d.ts.map +1 -1
- package/dist/schema/params.js +2 -2
- package/dist/schema/params.js.map +1 -1
- package/dist/schema/payload.d.ts +17 -15
- package/dist/schema/payload.d.ts.map +1 -1
- package/dist/schema/payload.js +28 -0
- package/dist/schema/payload.js.map +1 -1
- package/dist/schema/procedure.d.ts +3 -6
- package/dist/schema/procedure.d.ts.map +1 -1
- package/dist/schema/procedure.js +1 -0
- package/dist/schema/procedure.js.map +1 -1
- package/dist/schema/query.d.ts +3 -5
- package/dist/schema/query.d.ts.map +1 -1
- package/dist/schema/query.js +1 -0
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/record.d.ts +14 -14
- package/dist/schema/record.d.ts.map +1 -1
- package/dist/schema/record.js +2 -2
- package/dist/schema/record.js.map +1 -1
- package/dist/schema/ref.d.ts +1 -1
- package/dist/schema/ref.d.ts.map +1 -1
- package/dist/schema/ref.js +2 -2
- package/dist/schema/ref.js.map +1 -1
- package/dist/schema/refine.d.ts +18 -1
- package/dist/schema/refine.d.ts.map +1 -1
- package/dist/schema/refine.js +2 -2
- package/dist/schema/refine.js.map +1 -1
- package/dist/schema/regexp.d.ts +1 -1
- package/dist/schema/regexp.d.ts.map +1 -1
- package/dist/schema/regexp.js +2 -2
- package/dist/schema/regexp.js.map +1 -1
- package/dist/schema/string.d.ts +1 -2
- package/dist/schema/string.d.ts.map +1 -1
- package/dist/schema/string.js +1 -2
- package/dist/schema/string.js.map +1 -1
- package/dist/schema/subscription.d.ts +4 -8
- package/dist/schema/subscription.d.ts.map +1 -1
- package/dist/schema/subscription.js.map +1 -1
- package/dist/schema/token.d.ts +1 -1
- package/dist/schema/token.d.ts.map +1 -1
- package/dist/schema/token.js +2 -2
- package/dist/schema/token.js.map +1 -1
- package/dist/schema/typed-object.d.ts +8 -8
- package/dist/schema/typed-object.d.ts.map +1 -1
- package/dist/schema/typed-object.js +2 -2
- package/dist/schema/typed-object.js.map +1 -1
- package/dist/schema/typed-ref.d.ts +1 -1
- package/dist/schema/typed-ref.d.ts.map +1 -1
- package/dist/schema/typed-ref.js +2 -2
- package/dist/schema/typed-ref.js.map +1 -1
- package/dist/schema/typed-union.d.ts +2 -3
- package/dist/schema/typed-union.d.ts.map +1 -1
- package/dist/schema/typed-union.js +2 -2
- package/dist/schema/typed-union.js.map +1 -1
- package/dist/schema/union.d.ts +1 -1
- package/dist/schema/union.d.ts.map +1 -1
- package/dist/schema/union.js +3 -6
- package/dist/schema/union.js.map +1 -1
- package/dist/schema/unknown-object.d.ts +1 -2
- package/dist/schema/unknown-object.d.ts.map +1 -1
- package/dist/schema/unknown-object.js +2 -2
- package/dist/schema/unknown-object.js.map +1 -1
- package/dist/schema/unknown.d.ts +1 -1
- package/dist/schema/unknown.d.ts.map +1 -1
- package/dist/schema/unknown.js +2 -2
- package/dist/schema/unknown.js.map +1 -1
- package/dist/util/assertion-util.d.ts +8 -0
- package/dist/util/assertion-util.d.ts.map +1 -0
- package/dist/util/assertion-util.js +31 -0
- package/dist/util/assertion-util.js.map +1 -0
- package/dist/util/memoize.d.ts +3 -0
- package/dist/util/memoize.d.ts.map +1 -0
- package/dist/util/memoize.js +52 -0
- package/dist/util/memoize.js.map +1 -0
- package/package.json +6 -6
- package/src/core/$type.ts +4 -0
- package/src/core/result.ts +9 -8
- package/src/{validation → core}/schema.ts +29 -4
- package/src/core/string-format.ts +88 -68
- package/src/core/types.ts +4 -0
- package/src/{validation → core}/validation-error.ts +14 -6
- package/src/{validation → core}/validation-issue.ts +64 -2
- package/src/{validation → core}/validator.ts +17 -13
- package/src/core.ts +5 -0
- package/src/external.ts +75 -55
- package/src/helpers.test.ts +487 -0
- package/src/helpers.ts +75 -0
- package/src/schema/_parameters.test.ts +1 -0
- package/src/schema/_parameters.ts +1 -1
- package/src/schema/array.test.ts +1 -0
- package/src/schema/array.ts +1 -1
- package/src/schema/blob.test.ts +3 -4
- package/src/schema/blob.ts +32 -24
- package/src/schema/boolean.test.ts +1 -0
- package/src/schema/boolean.ts +1 -1
- package/src/schema/bytes.test.ts +1 -0
- package/src/schema/bytes.ts +1 -1
- package/src/schema/cid.test.ts +1 -0
- package/src/schema/cid.ts +1 -1
- package/src/schema/custom.test.ts +8 -7
- package/src/schema/custom.ts +2 -2
- package/src/schema/dict.test.ts +1 -0
- package/src/schema/dict.ts +1 -1
- package/src/schema/discriminated-union.test.ts +1 -0
- package/src/schema/discriminated-union.ts +1 -1
- package/src/schema/enum.test.ts +1 -0
- package/src/schema/enum.ts +1 -1
- package/src/schema/integer.test.ts +1 -0
- package/src/schema/integer.ts +3 -3
- package/src/schema/intersection.test.ts +1 -0
- package/src/schema/intersection.ts +2 -2
- package/src/schema/literal.test.ts +1 -0
- package/src/schema/literal.ts +1 -1
- package/src/schema/never.test.ts +1 -0
- package/src/schema/never.ts +1 -1
- package/src/schema/null.test.ts +1 -0
- package/src/schema/null.ts +1 -1
- package/src/schema/nullable.test.ts +1 -0
- package/src/schema/nullable.ts +1 -1
- package/src/schema/object.test.ts +1 -0
- package/src/schema/object.ts +3 -3
- package/src/schema/optional.test.ts +1 -0
- package/src/schema/optional.ts +1 -1
- package/src/schema/params.test.ts +1 -0
- package/src/schema/params.ts +3 -10
- package/src/schema/payload.test.ts +1 -0
- package/src/schema/payload.ts +67 -34
- package/src/schema/permission-set.test.ts +37 -36
- package/src/schema/permission.test.ts +1 -0
- package/src/schema/procedure.test.ts +2 -62
- package/src/schema/procedure.ts +8 -20
- package/src/schema/query.test.ts +23 -69
- package/src/schema/query.ts +7 -14
- package/src/schema/record.test.ts +1 -0
- package/src/schema/record.ts +13 -6
- package/src/schema/ref.test.ts +2 -1
- package/src/schema/ref.ts +1 -1
- package/src/schema/refine.test.ts +1 -0
- package/src/schema/refine.ts +19 -2
- package/src/schema/regexp.test.ts +1 -0
- package/src/schema/regexp.ts +1 -1
- package/src/schema/string.test.ts +1 -0
- package/src/schema/string.ts +8 -2
- package/src/schema/subscription.test.ts +31 -93
- package/src/schema/subscription.ts +11 -25
- package/src/schema/token.test.ts +1 -0
- package/src/schema/token.ts +1 -1
- package/src/schema/typed-object.test.ts +1 -0
- package/src/schema/typed-object.ts +10 -5
- package/src/schema/typed-ref.test.ts +1 -0
- package/src/schema/typed-ref.ts +1 -1
- package/src/schema/typed-union.test.ts +1 -0
- package/src/schema/typed-union.ts +4 -4
- package/src/schema/union.test.ts +1 -0
- package/src/schema/union.ts +2 -5
- package/src/schema/unknown-object.test.ts +1 -0
- package/src/schema/unknown-object.ts +1 -2
- package/src/schema/unknown.test.ts +1 -0
- package/src/schema/unknown.ts +1 -1
- package/src/util/array-agg.test.ts +1 -0
- package/src/util/assertion-util.ts +40 -0
- package/src/util/memoize.ts +57 -0
- package/tsconfig.tests.json +2 -2
- package/dist/validation/property-key.d.ts.map +0 -1
- package/dist/validation/property-key.js.map +0 -1
- package/dist/validation/schema.d.ts.map +0 -1
- package/dist/validation/schema.js.map +0 -1
- package/dist/validation/validation-error.d.ts +0 -9
- package/dist/validation/validation-error.d.ts.map +0 -1
- package/dist/validation/validation-error.js.map +0 -1
- package/dist/validation/validation-issue.d.ts.map +0 -1
- package/dist/validation/validation-issue.js.map +0 -1
- package/dist/validation/validator.d.ts.map +0 -1
- package/dist/validation/validator.js.map +0 -1
- package/dist/validation.d.ts +0 -6
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -9
- package/dist/validation.js.map +0 -1
- package/src/validation.ts +0 -5
- /package/dist/{validation → core}/property-key.d.ts +0 -0
- /package/dist/{validation → core}/property-key.js +0 -0
- /package/src/{validation → core}/property-key.ts +0 -0
package/dist/schema/blob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/schema/blob.ts"],"names":[],"mappings":";;;AAAA,gDAK0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/schema/blob.ts"],"names":[],"mappings":";;;AAAA,gDAK0B;AAC1B,wCAAuE;AA4BvE,MAAa,UAAwC,SAAQ,gBAE5D;IACsB;IAArB,YAAqB,OAAU;QAC7B,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAG;IAE/B,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,MAAM,IAAI,GACP,KAAa,EAAE,KAAK,KAAK,SAAS;YACjC,CAAC,CAAC,IAAA,oBAAS,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;gBAC9B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAA,0BAAe,EAAC,KAAK,CAAC;gBAC3D,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAA;QAEZ,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC/B,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAChC,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;YAC7D,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,IAA2B,CAAC,CAAA;IACjD,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;CACF;AA1CD,gCA0CC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAkB;IACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["import {\n BlobRef,\n LegacyBlobRef,\n isBlobRef,\n isLegacyBlobRef,\n} from '@atproto/lex-data'\nimport { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type BlobSchemaOptions = {\n /**\n * Whether to allow legacy blob references format\n * @see {@link LegacyBlobRef}\n */\n allowLegacy?: boolean\n /**\n * Whether to enforce strict validation on the blob reference (CID version, codec, hash function)\n */\n strict?: boolean\n /**\n * List of accepted mime types\n */\n accept?: string[]\n /**\n * Maximum size in bytes\n */\n maxSize?: number\n}\n\nexport type { BlobRef, LegacyBlobRef }\n\nexport type BlobSchemaOutput<Options> = Options extends { allowLegacy: true }\n ? BlobRef | LegacyBlobRef\n : BlobRef\n\nexport class BlobSchema<O extends BlobSchemaOptions> extends Schema<\n BlobSchemaOutput<O>\n> {\n constructor(readonly options: O) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<BlobSchemaOutput<O>> {\n const blob: null | BlobRef | LegacyBlobRef =\n (input as any)?.$type !== undefined\n ? isBlobRef(input, this.options)\n ? input\n : null\n : this.options.allowLegacy === true && isLegacyBlobRef(input)\n ? input\n : null\n\n if (!blob) {\n return ctx.issueInvalidType(input, 'blob')\n }\n\n const { accept } = this.options\n if (accept && !matchesMime(blob.mimeType, accept)) {\n return ctx.issueInvalidPropertyValue(blob, 'mimeType', accept)\n }\n\n const { maxSize } = this.options\n if (maxSize != null && 'size' in blob && blob.size > maxSize) {\n return ctx.issueTooBig(blob, 'blob', maxSize, blob.size)\n }\n\n return ctx.success(blob as BlobSchemaOutput<O>)\n }\n\n matchesMime(mime: string): boolean {\n const { accept } = this.options\n if (!accept) return true\n return matchesMime(mime, accept)\n }\n}\n\nfunction matchesMime(mime: string, accepted: string[]): boolean {\n if (accepted.includes('*/*')) return true\n if (accepted.includes(mime)) return true\n for (const value of accepted) {\n if (value.endsWith('/*') && mime.startsWith(value.slice(0, -1))) {\n return true\n }\n }\n return false\n}\n"]}
|
package/dist/schema/boolean.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/schema/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/schema/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,qBAAa,aAAc,SAAQ,MAAM,CAAC,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB;gBAA9B,OAAO,CAAC,EAAE,oBAAoB,YAAA;IAInD,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAwB,EACtC,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,OAAO,CAAC;CAO7B"}
|
package/dist/schema/boolean.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BooleanSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class BooleanSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class BooleanSchema extends core_js_1.Schema {
|
|
6
6
|
options;
|
|
7
7
|
constructor(options) {
|
|
8
8
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/schema/boolean.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/schema/boolean.ts"],"names":[],"mappings":";;;AAAA,wCAAuE;AAMvE,MAAa,aAAc,SAAQ,gBAAe;IAC3B;IAArB,YAAqB,OAA8B;QACjD,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAuB;IAEnD,CAAC;IAED,iBAAiB,CACf,QAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,EACtC,GAAqB;QAErB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;CACF;AAfD,sCAeC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type BooleanSchemaOptions = {\n default?: boolean\n}\n\nexport class BooleanSchema extends Schema<boolean> {\n constructor(readonly options?: BooleanSchemaOptions) {\n super()\n }\n\n validateInContext(\n input: unknown = this.options?.default,\n ctx: ValidatorContext,\n ): ValidationResult<boolean> {\n if (typeof input === 'boolean') {\n return ctx.success(input)\n }\n\n return ctx.issueInvalidType(input, 'boolean')\n }\n}\n"]}
|
package/dist/schema/bytes.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/schema/bytes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/schema/bytes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,qBAAa,WAAY,SAAQ,MAAM,CAAC,UAAU,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,kBAAkB;gBAA3B,OAAO,GAAE,kBAAuB;IAIrD,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,UAAU,CAAC;CAmBhC"}
|
package/dist/schema/bytes.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BytesSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
-
const
|
|
6
|
-
class BytesSchema extends
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
6
|
+
class BytesSchema extends core_js_1.Schema {
|
|
7
7
|
options;
|
|
8
8
|
constructor(options = {}) {
|
|
9
9
|
super();
|
package/dist/schema/bytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/schema/bytes.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/schema/bytes.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,wCAAuE;AAOvE,MAAa,WAAY,SAAQ,gBAAkB;IAC5B;IAArB,YAAqB,UAA8B,EAAE;QACnD,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAyB;IAErD,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,kDAAkD;QAClD,MAAM,KAAK,GAAG,IAAA,uBAAY,EAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAClC,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAClC,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACjE,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;CACF;AA3BD,kCA2BC","sourcesContent":["import { asUint8Array } from '@atproto/lex-data'\nimport { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type BytesSchemaOptions = {\n minLength?: number\n maxLength?: number\n}\n\nexport class BytesSchema extends Schema<Uint8Array> {\n constructor(readonly options: BytesSchemaOptions = {}) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<Uint8Array> {\n // Coerce different binary formats into Uint8Array\n const bytes = asUint8Array(input)\n if (!bytes) {\n return ctx.issueInvalidType(input, 'bytes')\n }\n\n const { minLength } = this.options\n if (minLength != null && bytes.length < minLength) {\n return ctx.issueTooSmall(bytes, 'bytes', minLength, bytes.length)\n }\n\n const { maxLength } = this.options\n if (maxLength != null && bytes.length > maxLength) {\n return ctx.issueTooBig(bytes, 'bytes', maxLength, bytes.length)\n }\n\n return ctx.success(bytes)\n }\n}\n"]}
|
package/dist/schema/cid.d.ts
CHANGED
package/dist/schema/cid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid.d.ts","sourceRoot":"","sources":["../../src/schema/cid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cid.d.ts","sourceRoot":"","sources":["../../src/schema/cid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,YAAY,EAAE,GAAG,EAAE,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,qBAAa,SAAU,SAAQ,MAAM,CAAC,GAAG,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB;gBAAzB,OAAO,GAAE,gBAAqB;IAInD,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,GAAG,CAAC;CAOzB"}
|
package/dist/schema/cid.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CidSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
-
const
|
|
6
|
-
class CidSchema extends
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
6
|
+
class CidSchema extends core_js_1.Schema {
|
|
7
7
|
options;
|
|
8
8
|
constructor(options = {}) {
|
|
9
9
|
super();
|
package/dist/schema/cid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid.js","sourceRoot":"","sources":["../../src/schema/cid.ts"],"names":[],"mappings":";;;AAAA,gDAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"cid.js","sourceRoot":"","sources":["../../src/schema/cid.ts"],"names":[],"mappings":";;;AAAA,gDAA8C;AAC9C,wCAAuE;AAgBvE,MAAa,SAAU,SAAQ,gBAAW;IACnB;IAArB,YAAqB,UAA4B,EAAE;QACjD,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAuB;IAEnD,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,CAAC,IAAA,gBAAK,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;CACF;AAfD,8BAeC","sourcesContent":["import { Cid, isCid } from '@atproto/lex-data'\nimport { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type { Cid }\n\nexport type CidSchemaOptions = {\n /**\n * In strict mode, only CID with the following properties are accepted:\n * - version: 1\n * - codec: raw binary (0x55) or DAG-CBOR (0x71)\n * - hash function: SHA-256 (0x12)\n *\n * @default false\n */\n strict?: boolean\n}\n\nexport class CidSchema extends Schema<Cid> {\n constructor(readonly options: CidSchemaOptions = {}) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<Cid> {\n if (!isCid(input, this.options)) {\n return ctx.issueInvalidType(input, 'cid')\n }\n\n return ctx.success(input)\n }\n}\n"]}
|
package/dist/schema/custom.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Issue, PropertyKey, Schema, ValidationResult, ValidatorContext } from '../
|
|
1
|
+
import { Issue, PropertyKey, Schema, ValidationResult, ValidatorContext } from '../core.js';
|
|
2
2
|
export type CustomAssertionContext = {
|
|
3
3
|
path: PropertyKey[];
|
|
4
4
|
addIssue(issue: Issue): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/schema/custom.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/schema/custom.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,WAAW,EAAE,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI,CACrC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,sBAAsB,KACxB,KAAK,IAAI,CAAC,CAAA;AAEf,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAFL,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,GAAE,WAAW,GAAG,SAAS,WAAW,EAAE,aAAA;IAK9D,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,CAAC;CAKvB"}
|
package/dist/schema/custom.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CustomSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class CustomSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class CustomSchema extends core_js_1.Schema {
|
|
6
6
|
assertion;
|
|
7
7
|
message;
|
|
8
8
|
path;
|
|
@@ -16,7 +16,7 @@ class CustomSchema extends validation_js_1.Schema {
|
|
|
16
16
|
if (this.assertion.call(null, input, ctx))
|
|
17
17
|
return ctx.success(input);
|
|
18
18
|
const path = ctx.concatPath(this.path);
|
|
19
|
-
return ctx.
|
|
19
|
+
return ctx.issue(new core_js_1.IssueCustom(path, input, this.message));
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.CustomSchema = CustomSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/schema/custom.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/schema/custom.ts"],"names":[],"mappings":";;;AAAA,wCAOmB;AAanB,MAAa,YAA0B,SAAQ,gBAAS;IAEnC;IACA;IACA;IAHnB,YACmB,SAA6B,EAC7B,OAAe,EACf,IAA2C;QAE5D,KAAK,EAAE,CAAA;QAJU,cAAS,GAAT,SAAS,CAAoB;QAC7B,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAuC;IAG9D,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAU,CAAC,CAAA;QACzE,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,qBAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,CAAC;CACF;AAjBD,oCAiBC","sourcesContent":["import {\n Issue,\n IssueCustom,\n PropertyKey,\n Schema,\n ValidationResult,\n ValidatorContext,\n} from '../core.js'\n\nexport type CustomAssertionContext = {\n path: PropertyKey[]\n addIssue(issue: Issue): void\n}\n\nexport type CustomAssertion<T = any> = (\n this: null,\n input: unknown,\n ctx: CustomAssertionContext,\n) => input is T\n\nexport class CustomSchema<T = unknown> extends Schema<T> {\n constructor(\n private readonly assertion: CustomAssertion<T>,\n private readonly message: string,\n private readonly path?: PropertyKey | readonly PropertyKey[],\n ) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<T> {\n if (this.assertion.call(null, input, ctx)) return ctx.success(input as T)\n const path = ctx.concatPath(this.path)\n return ctx.issue(new IssueCustom(path, input, this.message))\n }\n}\n"]}
|
package/dist/schema/dict.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../
|
|
1
|
+
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../core.js';
|
|
2
2
|
export type DictSchemaOutput<KeySchema extends Validator<string>, ValueSchema extends Validator> = Record<Infer<KeySchema>, Infer<ValueSchema>>;
|
|
3
3
|
/**
|
|
4
4
|
* @note There is no dictionary in Lexicon schemas. This is a custom extension
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../src/schema/dict.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../src/schema/dict.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,SAAS,CAAC,MAAM,CAAC,EACnC,WAAW,SAAS,SAAS,IAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;AAEhD;;;;GAIG;AACH,qBAAa,UAAU,CACrB,KAAK,CAAC,SAAS,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,EAC/C,KAAK,CAAC,WAAW,SAAS,SAAS,GAAG,GAAG,CACzC,SAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEtD,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW;gBADxB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW;IAKnC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,GACtD,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CAgC9D"}
|
package/dist/schema/dict.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DictSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
-
const
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
6
6
|
/**
|
|
7
7
|
* @note There is no dictionary in Lexicon schemas. This is a custom extension
|
|
8
8
|
* to allow map-like objects when using the lex library programmatically (i.e.
|
|
9
9
|
* not code generated from a lexicon schema).
|
|
10
10
|
*/
|
|
11
|
-
class DictSchema extends
|
|
11
|
+
class DictSchema extends core_js_1.Schema {
|
|
12
12
|
keySchema;
|
|
13
13
|
valueSchema;
|
|
14
14
|
constructor(keySchema, valueSchema) {
|
package/dist/schema/dict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict.js","sourceRoot":"","sources":["../../src/schema/dict.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"dict.js","sourceRoot":"","sources":["../../src/schema/dict.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,wCAMmB;AAOnB;;;;GAIG;AACH,MAAa,UAGX,SAAQ,gBAAgD;IAE7C;IACA;IAFX,YACW,SAAoB,EACpB,WAAwB;QAEjC,KAAK,EAAE,CAAA;QAHE,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAa;IAGnC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB,EACrB,OAAuD;QAEvD,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,IAAyC,CAAA;QAE7C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAE5C,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YACnD,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAA;YACxC,IAAI,SAAS,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBAC5B,mEAAmE;gBACnE,uEAAuE;gBACvE,6DAA6D;gBAC7D,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACzC,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YACnE,IAAI,CAAC,WAAW,CAAC,OAAO;gBAAE,OAAO,WAAW,CAAA;YAE5C,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAChB,CAAC,IAAI,IAAI,KAAK,CAA6C,CAC5D,CAAA;IACH,CAAC;CACF;AA/CD,gCA+CC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\n\nexport type DictSchemaOutput<\n KeySchema extends Validator<string>,\n ValueSchema extends Validator,\n> = Record<Infer<KeySchema>, Infer<ValueSchema>>\n\n/**\n * @note There is no dictionary in Lexicon schemas. This is a custom extension\n * to allow map-like objects when using the lex library programmatically (i.e.\n * not code generated from a lexicon schema).\n */\nexport class DictSchema<\n const KeySchema extends Validator<string> = any,\n const ValueSchema extends Validator = any,\n> extends Schema<DictSchemaOutput<KeySchema, ValueSchema>> {\n constructor(\n readonly keySchema: KeySchema,\n readonly valueSchema: ValueSchema,\n ) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n options?: { ignoredKeys?: { has(k: string): boolean } },\n ): ValidationResult<DictSchemaOutput<KeySchema, ValueSchema>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'dict')\n }\n\n let copy: undefined | Record<string, unknown>\n\n for (const key in input) {\n if (options?.ignoredKeys?.has(key)) continue\n\n const keyResult = ctx.validate(key, this.keySchema)\n if (!keyResult.success) return keyResult\n if (keyResult.value !== key) {\n // We can't safely \"move\" the key to a different name in the output\n // object (because there may already be something there), so we issue a\n // \"required key\" error if the key validation changes the key\n return ctx.issueRequiredKey(input, key)\n }\n\n const valueResult = ctx.validateChild(input, key, this.valueSchema)\n if (!valueResult.success) return valueResult\n\n if (valueResult.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = valueResult.value\n }\n }\n\n return ctx.success(\n (copy ?? input) as DictSchemaOutput<KeySchema, ValueSchema>,\n )\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../
|
|
1
|
+
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../core.js';
|
|
2
2
|
import { EnumSchema } from './enum.js';
|
|
3
3
|
import { LiteralSchema } from './literal.js';
|
|
4
4
|
import { ObjectSchema } from './object.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../src/schema/discriminated-union.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../src/schema/discriminated-union.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,MAAM,yBAAyB,CAAC,aAAa,SAAS,MAAM,IAChE,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC,CAAC,CAAA;AAEjE,MAAM,MAAM,0BAA0B,CAAC,aAAa,SAAS,MAAM,IACjE,SAAS;IACP,yBAAyB,CAAC,aAAa,CAAC;IACxC,GAAG,yBAAyB,CAAC,aAAa,CAAC,EAAE;CAC9C,CAAA;AAEH,MAAM,MAAM,8BAA8B,CACxC,QAAQ,SAAS,SAAS,SAAS,EAAE,IACnC,QAAQ,SAAS,SAAS;IAC5B,MAAM,CAAC,SAAS,SAAS;IACzB,GAAG,MAAM,IAAI,SAAS,SAAS,SAAS,EAAE;CAC3C,GACG,KAAK,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAC/C,KAAK,CAAA;AAET;;;;GAIG;AACH,qBAAa,wBAAwB,CACnC,KAAK,CAAC,aAAa,SAAS,MAAM,GAAG,GAAG,EACxC,KAAK,CAAC,QAAQ,SAAS,0BAA0B,CAAC,aAAa,CAAC,GAAG,GAAG,CACtE,SAAQ,MAAM,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAItD,QAAQ,CAAC,aAAa,EAAE,aAAa;IAHvC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAA;gBAGjE,aAAa,EAAE,aAAa,EACrC,QAAQ,EAAE,QAAQ;IAUpB,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;CAwB9D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DiscriminatedUnionSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
-
const
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
6
6
|
const enum_js_1 = require("./enum.js");
|
|
7
7
|
const literal_js_1 = require("./literal.js");
|
|
8
8
|
/**
|
|
@@ -10,7 +10,7 @@ const literal_js_1 = require("./literal.js");
|
|
|
10
10
|
* extension to allow optimized validation of union of objects when using the
|
|
11
11
|
* lex library programmatically (i.e. not code generated from a lexicon schema).
|
|
12
12
|
*/
|
|
13
|
-
class DiscriminatedUnionSchema extends
|
|
13
|
+
class DiscriminatedUnionSchema extends core_js_1.Schema {
|
|
14
14
|
discriminator;
|
|
15
15
|
variantsMap;
|
|
16
16
|
constructor(discriminator, variants) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../src/schema/discriminated-union.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../src/schema/discriminated-union.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,wCAMmB;AACnB,uCAAsC;AACtC,6CAA4C;AAqB5C;;;;GAIG;AACH,MAAa,wBAGX,SAAQ,gBAAgD;IAI7C;IAHF,WAAW,CAAwD;IAE5E,YACW,aAA4B,EACrC,QAAkB;QAElB,KAAK,EAAE,CAAA;QAHE,kBAAa,GAAb,aAAa,CAAe;QAKrC,wEAAwE;QACxE,2EAA2E;QAC3E,8DAA8D;QAC9D,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAC9D,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;QAE9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;QAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAEjC,CAAA;QACH,CAAC;QAED,OAAO,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE;YACzD,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC;CACF;AA7CD,4DA6CC;AAED,SAAS,gBAAgB,CACvB,aAA4B,EAC5B,QAAmD;IAEnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAA;IAEH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC3C,IAAI,MAAM,YAAY,0BAAa,EAAE,CAAC;YACpC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,SAAS,CAAC,oCAAoC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;YACzE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;aAAM,IAAI,MAAM,YAAY,oBAAU,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,SAAS,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;gBAChE,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sDAAsD;YAEtD,kDAAkD;YAClD,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\nimport { EnumSchema } from './enum.js'\nimport { LiteralSchema } from './literal.js'\nimport { ObjectSchema } from './object.js'\n\nexport type DiscriminatedUnionVariant<Discriminator extends string> =\n ObjectSchema<Record<Discriminator, EnumSchema | LiteralSchema>>\n\nexport type DiscriminatedUnionVariants<Discriminator extends string> =\n readonly [\n DiscriminatedUnionVariant<Discriminator>,\n ...DiscriminatedUnionVariant<Discriminator>[],\n ]\n\nexport type DiscriminatedUnionSchemaOutput<\n Variants extends readonly Validator[],\n> = Variants extends readonly [\n infer V extends Validator,\n ...infer Rest extends readonly Validator[],\n]\n ? Infer<V> | DiscriminatedUnionSchemaOutput<Rest>\n : never\n\n/**\n * @note There is no discriminated union in Lexicon schemas. This is a custom\n * extension to allow optimized validation of union of objects when using the\n * lex library programmatically (i.e. not code generated from a lexicon schema).\n */\nexport class DiscriminatedUnionSchema<\n const Discriminator extends string = any,\n const Variants extends DiscriminatedUnionVariants<Discriminator> = any,\n> extends Schema<DiscriminatedUnionSchemaOutput<Variants>> {\n readonly variantsMap: Map<unknown, DiscriminatedUnionVariant<Discriminator>>\n\n constructor(\n readonly discriminator: Discriminator,\n variants: Variants,\n ) {\n super()\n\n // Although we usually try to avoid initialization work in constructors,\n // here it is necessary to ensure that invalid discriminated throw from the\n // place of construction, rather than later during validation.\n this.variantsMap = buildVariantsMap(discriminator, variants)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<DiscriminatedUnionSchemaOutput<Variants>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n const { discriminator } = this\n\n if (!Object.hasOwn(input, discriminator)) {\n return ctx.issueRequiredKey(input, discriminator)\n }\n\n const discriminatorValue = input[discriminator]\n\n const variant = this.variantsMap.get(discriminatorValue)\n if (variant) {\n return ctx.validate(input, variant) as ValidationResult<\n DiscriminatedUnionSchemaOutput<Variants>\n >\n }\n\n return ctx.issueInvalidPropertyValue(input, discriminator, [\n ...this.variantsMap.keys(),\n ])\n }\n}\n\nfunction buildVariantsMap<Discriminator extends string>(\n discriminator: Discriminator,\n variants: DiscriminatedUnionVariants<Discriminator>,\n) {\n const variantsMap = new Map<\n unknown,\n DiscriminatedUnionVariant<Discriminator>\n >()\n\n for (const variant of variants) {\n const schema = variant.shape[discriminator]\n if (schema instanceof LiteralSchema) {\n if (variantsMap.has(schema.value)) {\n throw new TypeError(`Overlapping discriminator value: ${schema.value}`)\n }\n variantsMap.set(schema.value, variant)\n } else if (schema instanceof EnumSchema) {\n for (const val of schema.values) {\n if (variantsMap.has(val)) {\n throw new TypeError(`Overlapping discriminator value: ${val}`)\n }\n variantsMap.set(val, variant)\n }\n } else {\n // Only enumerable discriminator schemas are supported\n\n // Should never happen if types are used correctly\n throw new TypeError(\n `Discriminator schema must be a LiteralSchema or EnumSchema`,\n )\n }\n }\n\n return variantsMap\n}\n"]}
|
package/dist/schema/enum.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/schema/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/schema/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI;IAC1E,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ,CAAA;AAED,qBAAa,UAAU,CACrB,MAAM,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,CACrD,SAAQ,MAAM,CAAC,MAAM,CAAC;IAEpB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;gBADnC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,YAAA;IAK9C,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAwB,EACtC,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,CAAC;CAO5B"}
|
package/dist/schema/enum.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EnumSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class EnumSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class EnumSchema extends core_js_1.Schema {
|
|
6
6
|
values;
|
|
7
7
|
options;
|
|
8
8
|
constructor(values, options) {
|
package/dist/schema/enum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/schema/enum.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/schema/enum.ts"],"names":[],"mappings":";;;AAAA,wCAAuE;AAMvE,MAAa,UAEX,SAAQ,gBAAc;IAEX;IACA;IAFX,YACW,MAAyB,EACzB,OAAmC;QAE5C,KAAK,EAAE,CAAA;QAHE,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAA4B;IAG9C,CAAC;IAED,iBAAiB,CACf,QAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,EACtC,GAAqB;QAErB,IAAI,CAAE,IAAI,CAAC,MAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAClD,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,KAAe,CAAC,CAAA;IACrC,CAAC;CACF;AApBD,gCAoBC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type EnumSchemaOptions<T extends null | string | number | boolean> = {\n default?: T\n}\n\nexport class EnumSchema<\n Output extends null | string | number | boolean = any,\n> extends Schema<Output> {\n constructor(\n readonly values: readonly Output[],\n readonly options?: EnumSchemaOptions<Output>,\n ) {\n super()\n }\n\n validateInContext(\n input: unknown = this.options?.default,\n ctx: ValidatorContext,\n ): ValidationResult<Output> {\n if (!(this.values as readonly unknown[]).includes(input)) {\n return ctx.issueInvalidValue(input, this.values)\n }\n\n return ctx.success(input as Output)\n }\n}\n"]}
|
package/dist/schema/integer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../src/schema/integer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../src/schema/integer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,qBAAa,aAAc,SAAQ,MAAM,CAAC,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;gBAA7B,OAAO,GAAE,oBAAyB;IAIvD,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAwB,EACtC,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,CAAC;CAe5B"}
|
package/dist/schema/integer.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IntegerSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class IntegerSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class IntegerSchema extends core_js_1.Schema {
|
|
6
6
|
options;
|
|
7
7
|
constructor(options = {}) {
|
|
8
8
|
super();
|
|
@@ -23,9 +23,9 @@ class IntegerSchema extends validation_js_1.Schema {
|
|
|
23
23
|
}
|
|
24
24
|
exports.IntegerSchema = IntegerSchema;
|
|
25
25
|
/**
|
|
26
|
-
* Simple wrapper around {@link Number.
|
|
26
|
+
* Simple wrapper around {@link Number.isSafeInteger} that acts as a type guard.
|
|
27
27
|
*/
|
|
28
28
|
function isInteger(input) {
|
|
29
|
-
return Number.
|
|
29
|
+
return Number.isSafeInteger(input);
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=integer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../src/schema/integer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../src/schema/integer.ts"],"names":[],"mappings":";;;AAAA,wCAAuE;AAQvE,MAAa,aAAc,SAAQ,gBAAc;IAC1B;IAArB,YAAqB,UAAgC,EAAE;QACrD,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAA2B;IAEvD,CAAC;IAED,iBAAiB,CACf,QAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,EACtC,GAAqB;QAErB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvE,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACvE,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;CACF;AAvBD,sCAuBC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type IntegerSchemaOptions = {\n default?: number\n minimum?: number\n maximum?: number\n}\n\nexport class IntegerSchema extends Schema<number> {\n constructor(readonly options: IntegerSchemaOptions = {}) {\n super()\n }\n\n validateInContext(\n input: unknown = this.options?.default,\n ctx: ValidatorContext,\n ): ValidationResult<number> {\n if (!isInteger(input)) {\n return ctx.issueInvalidType(input, 'integer')\n }\n\n if (this.options.minimum !== undefined && input < this.options.minimum) {\n return ctx.issueTooSmall(input, 'integer', this.options.minimum, input)\n }\n\n if (this.options.maximum !== undefined && input > this.options.maximum) {\n return ctx.issueTooBig(input, 'integer', this.options.maximum, input)\n }\n\n return ctx.success(input)\n }\n}\n\n/**\n * Simple wrapper around {@link Number.isSafeInteger} that acts as a type guard.\n */\nfunction isInteger(input: unknown): input is number {\n return Number.isSafeInteger(input)\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Simplify } from '../core.js';
|
|
2
|
-
import { Infer, Schema, ValidationResult, ValidatorContext } from '../validation.js';
|
|
1
|
+
import { Infer, Schema, Simplify, ValidationResult, ValidatorContext } from '../core.js';
|
|
3
2
|
import { DictSchema } from './dict.js';
|
|
4
3
|
import { ObjectSchema } from './object.js';
|
|
5
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../src/schema/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../src/schema/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAClD,CAAC,GACD,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,GAE7B,AADA,8CAA8C;AAC9C,CAAC,GAAG,CAAC,GAGL,AAFA,iEAAiE;AAEjE,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAAE,CAAA;AAEnD,MAAM,MAAM,wBAAwB,CAClC,IAAI,SAAS,YAAY,EACzB,KAAK,SAAS,UAAU,IACtB,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElD,qBAAa,kBAAkB,CAC7B,KAAK,CAAC,IAAI,SAAS,YAAY,GAAG,GAAG,EACrC,KAAK,CAAC,KAAK,SAAS,UAAU,GAAG,GAAG,CACpC,SAAQ,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;IAC7B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;gBADZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK;IAKjC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAQ3D"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IntersectionSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class IntersectionSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class IntersectionSchema extends core_js_1.Schema {
|
|
6
6
|
left;
|
|
7
7
|
right;
|
|
8
8
|
constructor(left, right) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../src/schema/intersection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../src/schema/intersection.ts"],"names":[],"mappings":";;;AAAA,wCAMmB;AAyBnB,MAAa,kBAGX,SAAQ,gBAA6C;IAEhC;IACA;IAFrB,YACqB,IAAU,EACV,KAAY;QAE/B,KAAK,EAAE,CAAA;QAHY,SAAI,GAAJ,IAAI,CAAM;QACV,UAAK,GAAL,KAAK,CAAO;IAGjC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO,UAAU,CAAA;QAE1C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACzD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;SACrC,CAA4D,CAAA;IAC/D,CAAC;CACF;AAtBD,gDAsBC","sourcesContent":["import {\n Infer,\n Schema,\n Simplify,\n ValidationResult,\n ValidatorContext,\n} from '../core.js'\nimport { DictSchema } from './dict.js'\nimport { ObjectSchema } from './object.js'\n\n/**\n * Allows to more accurately represent the intersection of two object types\n * where both types may share some keys, and one of them uses an index\n * signature.\n *\n * @see {@link https://www.typescriptlang.org/play/?#code/C4TwDgpgBAglC8UDeUBmB7dAuKByARgIYBOuUAvlAGTJQDaA+lAJYB2UAzsMWwOYC6OVgFcAtvgjEKAKGkATCAGMANiWiL0rLlEI4YsjVuBQA1hBA4uPVrwRQARBnT2Dm7QDdCy4dESE6ZiD8UAD0IVAi4pJQABQcABbowspyUBIORMT2AJSyEAAeYOjExqCQUACSrMCSHErAzJoAPNJQsFAFNaxyHFAASkrFck1WfAA0UMKsJqzoAO6sAHxjrVAAQh35XT39g8TDozYTUzPzSyuLdqtwVKttMYHoqO00j88bnRDdvawQ7pJ3NpQAD860BbRwSHBQLadAA0ix2G91oJ1vDggAfWABcxPF5QOH8aFtci5aRlaAwVDMfIQVKIKo1Yh1RQNZq0Jw4AgkMjkCYoRiIzjcPioyISKTkRayBQqNRQQzaQgAMRpdL01NpclcRignm8EFVWrsKrVchxQVC4XF0SxmSAA Playground link}\n */\nexport type Intersect<A, B> = B[keyof B] extends never\n ? A\n : keyof A & keyof B extends never\n ? // If A and B don't overlap, just return A & B\n A & B\n : // Otherwise, properly represent the fact that accessing using an\n // index signature could return a value from either A or B\n A & { [K in keyof B]: B[K] | A[keyof A & K] }\n\nexport type IntersectionSchemaOutput<\n Left extends ObjectSchema,\n Right extends DictSchema,\n> = Simplify<Intersect<Infer<Left>, Infer<Right>>>\n\nexport class IntersectionSchema<\n const Left extends ObjectSchema = any,\n const Right extends DictSchema = any,\n> extends Schema<IntersectionSchemaOutput<Left, Right>> {\n constructor(\n protected readonly left: Left,\n protected readonly right: Right,\n ) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<IntersectionSchemaOutput<Left, Right>> {\n const leftResult = ctx.validate(input, this.left)\n if (!leftResult.success) return leftResult\n\n return this.right.validateInContext(leftResult.value, ctx, {\n ignoredKeys: this.left.validatorsMap,\n }) as ValidationResult<IntersectionSchemaOutput<Left, Right>>\n }\n}\n"]}
|
package/dist/schema/literal.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI;IAC7E,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ,CAAA;AAED,qBAAa,aAAa,CACxB,MAAM,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,CACrD,SAAQ,MAAM,CAAC,MAAM,CAAC;IAEpB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC;gBADtC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,YAAA;IAKjD,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAwB,EACtC,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,CAAC;CAO5B"}
|
package/dist/schema/literal.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LiteralSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class LiteralSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class LiteralSchema extends core_js_1.Schema {
|
|
6
6
|
value;
|
|
7
7
|
options;
|
|
8
8
|
constructor(value, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":";;;AAAA,wCAAuE;AAMvE,MAAa,aAEX,SAAQ,gBAAc;IAEX;IACA;IAFX,YACW,KAAa,EACb,OAAsC;QAE/C,KAAK,EAAE,CAAA;QAHE,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAA+B;IAGjD,CAAC;IAED,iBAAiB,CACf,QAAiB,IAAI,CAAC,OAAO,EAAE,OAAO,EACtC,GAAqB;QAErB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;CACF;AApBD,sCAoBC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport type LiteralSchemaOptions<T extends null | string | number | boolean> = {\n default?: T\n}\n\nexport class LiteralSchema<\n Output extends null | string | number | boolean = any,\n> extends Schema<Output> {\n constructor(\n readonly value: Output,\n readonly options?: LiteralSchemaOptions<Output>,\n ) {\n super()\n }\n\n validateInContext(\n input: unknown = this.options?.default,\n ctx: ValidatorContext,\n ): ValidationResult<Output> {\n if (input !== this.value) {\n return ctx.issueInvalidValue(input, [this.value])\n }\n\n return ctx.success(this.value)\n }\n}\n"]}
|
package/dist/schema/never.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema, ValidationFailure, ValidatorContext } from '../
|
|
1
|
+
import { Schema, ValidationFailure, ValidatorContext } from '../core.js';
|
|
2
2
|
export declare class NeverSchema extends Schema<never> {
|
|
3
3
|
validateInContext(input: unknown, ctx: ValidatorContext): ValidationFailure;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"never.d.ts","sourceRoot":"","sources":["../../src/schema/never.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"never.d.ts","sourceRoot":"","sources":["../../src/schema/never.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAExE,qBAAa,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAC;IAC5C,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,iBAAiB;CAG5E"}
|
package/dist/schema/never.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NeverSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class NeverSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class NeverSchema extends core_js_1.Schema {
|
|
6
6
|
validateInContext(input, ctx) {
|
|
7
7
|
return ctx.issueInvalidType(input, 'never');
|
|
8
8
|
}
|
package/dist/schema/never.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"never.js","sourceRoot":"","sources":["../../src/schema/never.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"never.js","sourceRoot":"","sources":["../../src/schema/never.ts"],"names":[],"mappings":";;;AAAA,wCAAwE;AAExE,MAAa,WAAY,SAAQ,gBAAa;IAC5C,iBAAiB,CAAC,KAAc,EAAE,GAAqB;QACrD,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;CACF;AAJD,kCAIC","sourcesContent":["import { Schema, ValidationFailure, ValidatorContext } from '../core.js'\n\nexport class NeverSchema extends Schema<never> {\n validateInContext(input: unknown, ctx: ValidatorContext): ValidationFailure {\n return ctx.issueInvalidType(input, 'never')\n }\n}\n"]}
|
package/dist/schema/null.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema, ValidationResult, ValidatorContext } from '../
|
|
1
|
+
import { Schema, ValidationResult, ValidatorContext } from '../core.js';
|
|
2
2
|
export declare class NullSchema extends Schema<null> {
|
|
3
3
|
constructor();
|
|
4
4
|
validateInContext(input: unknown, ctx: ValidatorContext): ValidationResult<null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../src/schema/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../src/schema/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEvE,qBAAa,UAAW,SAAQ,MAAM,CAAC,IAAI,CAAC;;IAK1C,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,IAAI,CAAC;CAO1B"}
|
package/dist/schema/null.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NullSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class NullSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class NullSchema extends core_js_1.Schema {
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
8
8
|
}
|
package/dist/schema/null.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/schema/null.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/schema/null.ts"],"names":[],"mappings":";;;AAAA,wCAAuE;AAEvE,MAAa,UAAW,SAAQ,gBAAY;IAC1C;QACE,KAAK,EAAE,CAAA;IACT,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;CACF;AAfD,gCAeC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../core.js'\n\nexport class NullSchema extends Schema<null> {\n constructor() {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<null> {\n if (input !== null) {\n return ctx.issueInvalidType(input, 'null')\n }\n\n return ctx.success(null)\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema, ValidationResult, Validator, ValidatorContext } from '../
|
|
1
|
+
import { Schema, ValidationResult, Validator, ValidatorContext } from '../core.js';
|
|
2
2
|
export declare class NullableSchema<V> extends Schema<V | null> {
|
|
3
3
|
readonly schema: Validator<V>;
|
|
4
4
|
constructor(schema: Validator<V>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../src/schema/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../src/schema/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAApB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAIzC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC;CAO9B"}
|
package/dist/schema/nullable.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NullableSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class NullableSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class NullableSchema extends core_js_1.Schema {
|
|
6
6
|
schema;
|
|
7
7
|
constructor(schema) {
|
|
8
8
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../src/schema/nullable.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../src/schema/nullable.ts"],"names":[],"mappings":";;;AAAA,wCAKmB;AAEnB,MAAa,cAAkB,SAAQ,gBAAgB;IAChC;IAArB,YAAqB,MAAoB;QACvC,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAc;IAEzC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;CACF;AAfD,wCAeC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\n\nexport class NullableSchema<V> extends Schema<V | null> {\n constructor(readonly schema: Validator<V>) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V | null> {\n if (input === null) {\n return ctx.success(null)\n }\n\n return ctx.validate(input, this.schema)\n }\n}\n"]}
|