@atproto/lex-schema 0.0.5 → 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 +21 -0
- package/dist/core/property-key.d.ts.map +1 -0
- package/dist/core/property-key.js.map +1 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js.map +1 -0
- 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 +12 -5
- 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 +45 -0
- package/dist/core/validation-issue.js.map +1 -0
- package/dist/{validation → core}/validator.d.ts +1 -1
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/{validation → core}/validator.js +4 -4
- 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 +15 -16
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +38 -55
- package/dist/external.js.map +1 -1
- package/dist/helpers.d.ts +7 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +10 -0
- package/dist/helpers.js.map +1 -1
- 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 +1 -1
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +2 -2
- 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 -2
- 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 +1 -1
- package/dist/schema/payload.d.ts.map +1 -1
- package/dist/schema/payload.js.map +1 -1
- package/dist/schema/record.d.ts +1 -2
- 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 +1 -2
- 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 +1 -2
- 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 -3
- 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/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/{validation → core}/validation-error.ts +11 -3
- package/src/{validation → core}/validation-issue.ts +52 -0
- package/src/{validation → core}/validator.ts +1 -1
- package/src/core.ts +5 -0
- package/src/external.ts +67 -48
- package/src/helpers.test.ts +1 -0
- package/src/helpers.ts +16 -2
- 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 +1 -0
- package/src/schema/blob.ts +1 -1
- 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 +3 -2
- package/src/schema/custom.ts +1 -1
- 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 -3
- package/src/schema/payload.test.ts +1 -0
- package/src/schema/payload.ts +1 -1
- package/src/schema/permission-set.test.ts +1 -0
- package/src/schema/permission.test.ts +1 -0
- package/src/schema/procedure.test.ts +1 -0
- package/src/schema/query.test.ts +1 -0
- package/src/schema/record.test.ts +1 -0
- package/src/schema/record.ts +5 -2
- 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 +18 -1
- 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 +1 -0
- package/src/schema/subscription.ts +1 -2
- 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 +3 -2
- 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 +1 -1
- 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/memoize.ts +57 -0
- package/tsconfig.tests.json +1 -1
- 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/dist/{validation → core}/schema.d.ts +0 -0
- /package/dist/{validation → core}/schema.js +0 -0
- /package/src/{validation → core}/property-key.ts +0 -0
- /package/src/{validation → core}/schema.ts +0 -0
|
@@ -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"]}
|
package/dist/schema/object.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { WithOptionalProperties } from '../core.js';
|
|
2
|
-
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
|
|
1
|
+
import { Infer, Schema, ValidationResult, Validator, ValidatorContext, WithOptionalProperties } from '../core.js';
|
|
3
2
|
export type ObjectSchemaShape = Record<string, Validator>;
|
|
4
3
|
export type ObjectSchemaOutput<Shape extends ObjectSchemaShape> = WithOptionalProperties<{
|
|
5
4
|
[K in keyof Shape]: Infer<Shape[K]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAGnB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,GAAG,CAC3C,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAIjC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAI1C;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAkC/C"}
|
package/dist/schema/object.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObjectSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
5
6
|
const lazy_property_js_1 = require("../util/lazy-property.js");
|
|
6
|
-
|
|
7
|
-
class ObjectSchema extends validation_js_1.Schema {
|
|
7
|
+
class ObjectSchema extends core_js_1.Schema {
|
|
8
8
|
shape;
|
|
9
9
|
constructor(shape) {
|
|
10
10
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,wCAOmB;AACnB,+DAAuD;AASvD,MAAa,YAEX,SAAQ,gBAAiC;IACpB;IAArB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;IAEjC,CAAC;IAED,IAAI,aAAa;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAE/C,OAAO,IAAA,+BAAY,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IACjD,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,oBAAoB;QACpB,IAAI,IAAyC,CAAA;QAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,sCAAsC;oBACtC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACzC,CAAC;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClD,SAAQ;YACV,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAA8B,CAAA;QAE3D,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF;AAlDD,oCAkDC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n WithOptionalProperties,\n} from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\n\nexport type ObjectSchemaShape = Record<string, Validator>\n\nexport type ObjectSchemaOutput<Shape extends ObjectSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport class ObjectSchema<\n const Shape extends ObjectSchemaShape = any,\n> extends Schema<ObjectSchemaOutput<Shape>> {\n constructor(readonly shape: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator> {\n const map = new Map(Object.entries(this.shape))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<ObjectSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n const output = (copy ?? input) as ObjectSchemaOutput<Shape>\n\n return ctx.success(output)\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 OptionalSchema<V> extends Schema<V | undefined> {
|
|
3
3
|
readonly schema: Validator<V>;
|
|
4
4
|
constructor(schema: Validator<V>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../src/schema/optional.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,SAAS,CAAC;IAC9C,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,SAAS,CAAC;CAenC"}
|
package/dist/schema/optional.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OptionalSchema = void 0;
|
|
4
|
-
const
|
|
5
|
-
class OptionalSchema extends
|
|
4
|
+
const core_js_1 = require("../core.js");
|
|
5
|
+
class OptionalSchema extends core_js_1.Schema {
|
|
6
6
|
schema;
|
|
7
7
|
constructor(schema) {
|
|
8
8
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":";;;AAAA,wCAKmB;AAEnB,MAAa,cAAkB,SAAQ,gBAAqB;IACrC;IAArB,YAAqB,MAAoB;QACvC,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAc;IAEzC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,0EAA0E;QAC1E,qCAAqC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAvBD,wCAuBC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\n\nexport class OptionalSchema<V> extends Schema<V | undefined> {\n constructor(readonly schema: Validator<V>) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V | undefined> {\n // @NOTE The inner schema might apply a default value so we need to run it\n // first, even if input is undefined.\n const result = ctx.validate(input, this.schema)\n\n if (result.success) {\n return result\n }\n\n if (input === undefined) {\n return ctx.success(input)\n }\n\n return result\n }\n}\n"]}
|
package/dist/schema/params.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { WithOptionalProperties } from '../core.js';
|
|
2
|
-
import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
|
|
1
|
+
import { Infer, Schema, ValidationResult, Validator, ValidatorContext, WithOptionalProperties } from '../core.js';
|
|
3
2
|
import { Param } from './_parameters.js';
|
|
4
3
|
export type ParamsSchemaShape = Record<string, Validator<Param | undefined>>;
|
|
5
4
|
export type ParamsSchemaOutput<Shape extends ParamsSchemaShape> = WithOptionalProperties<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,KAAK,EAA4B,MAAM,kBAAkB,CAAA;AAGlE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,iBAAiB,CACzD,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK;gBAAjB,UAAU,EAAE,KAAK;IAItC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAI7D;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAK,EACnB,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IA+C9C,mBAAmB,CACjB,eAAe,EAAE,eAAe,GAC/B,kBAAkB,CAAC,KAAK,CAAC;IA6B5B,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,eAAe;CAiBrE"}
|
package/dist/schema/params.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ParamsSchema = void 0;
|
|
4
4
|
const lex_data_1 = require("@atproto/lex-data");
|
|
5
|
+
const core_js_1 = require("../core.js");
|
|
5
6
|
const lazy_property_js_1 = require("../util/lazy-property.js");
|
|
6
|
-
const validation_js_1 = require("../validation.js");
|
|
7
7
|
const _parameters_js_1 = require("./_parameters.js");
|
|
8
8
|
const string_js_1 = require("./string.js");
|
|
9
|
-
class ParamsSchema extends
|
|
9
|
+
class ParamsSchema extends core_js_1.Schema {
|
|
10
10
|
validators;
|
|
11
11
|
constructor(validators) {
|
|
12
12
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n WithOptionalProperties,\n} from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\nimport { Param, ParamScalar, paramSchema } from './_parameters.js'\nimport { StringSchema } from './string.js'\n\nexport type ParamsSchemaShape = Record<string, Validator<Param | undefined>>\n\nexport type ParamsSchemaOutput<Shape extends ParamsSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport class ParamsSchema<\n const Shape extends ParamsSchemaShape = ParamsSchemaShape,\n> extends Schema<ParamsSchemaOutput<Shape>> {\n constructor(readonly validators: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator<Param | undefined>> {\n const map = new Map(Object.entries(this.validators))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown = {},\n ctx: ValidatorContext,\n ): ValidationResult<ParamsSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n // Ensure that non-specified params conform to param schema\n for (const key in input) {\n if (this.validatorsMap.has(key)) continue\n\n const result = ctx.validateChild(input, key, paramSchema)\n if (!result.success) return result\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n // Copy on write\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n return ctx.success((copy ?? input) as ParamsSchemaOutput<Shape>)\n }\n\n fromURLSearchParams(\n urlSearchParams: URLSearchParams,\n ): ParamsSchemaOutput<Shape> {\n const params: Record<string, Param> = {}\n\n for (const [key, value] of urlSearchParams.entries()) {\n const validator = this.validatorsMap.get(key)\n\n const coerced: ParamScalar =\n validator != null && validator instanceof StringSchema\n ? value\n : value === 'true'\n ? true\n : value === 'false'\n ? false\n : /^-?\\d+$/.test(value)\n ? Number(value)\n : value\n\n if (params[key] === undefined) {\n params[key] = coerced\n } else if (Array.isArray(params[key])) {\n params[key].push(coerced)\n } else {\n params[key] = [params[key] as ParamScalar, coerced]\n }\n }\n\n return this.parse(params)\n }\n\n toURLSearchParams(input: ParamsSchemaOutput<Shape>): URLSearchParams {\n const urlSearchParams = new URLSearchParams()\n\n if (input !== undefined) {\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n urlSearchParams.append(key, String(v))\n }\n } else if (value !== undefined) {\n urlSearchParams.append(key, String(value))\n }\n }\n }\n\n return urlSearchParams\n }\n}\n"]}
|
package/dist/schema/payload.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LexValue } from '@atproto/lex-data';
|
|
2
|
-
import { Infer, Schema } from '../
|
|
2
|
+
import { Infer, Schema } from '../core.js';
|
|
3
3
|
export type InferPayload<P extends Payload, B> = P['encoding'] extends infer E extends string ? {
|
|
4
4
|
encoding: SchemaEncodingToDataEncoding<E>;
|
|
5
5
|
body: InferPayloadBody<P, B>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,OAAO,EACjB,CAAC,IACC,CAAC,CAAC,UAAU,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GAC5C;IACE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC7B,GACD,IAAI,GAAG,SAAS,CAAA;AAEpB,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,GACxE,GAAG,MAAM,IAAI,MAAM,EAAE,GACrB,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,MAAM,IAAI,GACrC,GAAG,CAAC,IAAI,MAAM,EAAE,GAChB,CAAC,CAAA;AAEP,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,IAChD,CAAC,CAAC,UAAU,CAAC,SAAS,MAAM,GACxB,4BAA4B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAC3C,SAAS,CAAA;AAEf,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,OAAO,EACjB,CAAC,IACC,CAAC,CAAC,UAAU,CAAC,SAAS,SAAS,GAC/B,SAAS,GACT,CAAC,CAAC,QAAQ,CAAC,SAAS,MAAM,GACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAClB,CAAC,CAAC,UAAU,CAAC,SAAS,kBAAkB,GACtC,QAAQ,GACR,CAAC,CAAA;AAET,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,IAAI,CAAC,SAAS,SAAS,GACzE,SAAS,GACT,MAAM,GAAG,SAAS,CAAA;AAEtB,qBAAa,OAAO,CAClB,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9D,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;IAGpE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;IAOzB;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;CA6B1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":";;;AAuCA,MAAa,OAAO;IAKP;IACA;IAFX,YACW,QAAkB,EAClB,MAAc;QADd,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QAEvB,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,WAA+B;QAC7C,MAAM,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEjD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAEzB,yBAAyB;QACzB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,oBAAoB;YACpB,OAAO,IAAI,KAAK,SAAS,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,4CAA4C;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;QAED,gEAAgE;QAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,QAAQ,KAAK,IAAI,CAAA;IAC1B,CAAC;CACF;AA9CD,0BA8CC","sourcesContent":["import { LexValue } from '@atproto/lex-data'\nimport { Infer, Schema } from '../
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":";;;AAuCA,MAAa,OAAO;IAKP;IACA;IAFX,YACW,QAAkB,EAClB,MAAc;QADd,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QAEvB,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,WAA+B;QAC7C,MAAM,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEjD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAEzB,yBAAyB;QACzB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,oBAAoB;YACpB,OAAO,IAAI,KAAK,SAAS,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,4CAA4C;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;QAED,gEAAgE;QAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,QAAQ,KAAK,IAAI,CAAA;IAC1B,CAAC;CACF;AA9CD,0BA8CC","sourcesContent":["import { LexValue } from '@atproto/lex-data'\nimport { Infer, Schema } from '../core.js'\n\nexport type InferPayload<\n P extends Payload,\n B,\n> = P['encoding'] extends infer E extends string\n ? {\n encoding: SchemaEncodingToDataEncoding<E>\n body: InferPayloadBody<P, B>\n }\n : void | undefined\n\nexport type SchemaEncodingToDataEncoding<E extends string> = E extends '*/*'\n ? `${string}/${string}`\n : E extends `${infer T extends string}/*`\n ? `${T}/${string}`\n : E\n\nexport type InferPayloadEncoding<P extends Payload> =\n P['encoding'] extends string\n ? SchemaEncodingToDataEncoding<P['encoding']>\n : undefined\n\nexport type InferPayloadBody<\n P extends Payload,\n B,\n> = P['encoding'] extends undefined\n ? undefined // No encoding, no payload\n : P['schema'] extends Schema\n ? Infer<P['schema']>\n : P['encoding'] extends `application/json`\n ? LexValue\n : B\n\nexport type PayloadSchema<E extends string | undefined> = E extends undefined\n ? undefined\n : Schema | undefined\n\nexport class Payload<\n const Encoding extends string | undefined = string | undefined,\n const Schema extends PayloadSchema<Encoding> = PayloadSchema<Encoding>,\n> {\n constructor(\n readonly encoding: Encoding,\n readonly schema: Schema,\n ) {\n if (encoding === undefined && schema !== undefined) {\n throw new TypeError('schema cannot be defined when encoding is undefined')\n }\n }\n\n /**\n * Checks whether the given content-type matches the expected payload schema's\n * encoding.\n */\n matchesEncoding(contentType: string | undefined): boolean {\n const mime = contentType?.split(';', 1)[0].trim()\n\n const { encoding } = this\n\n // Handle undefined cases\n if (encoding === undefined) {\n // Expecting no body\n return mime === undefined\n } else if (mime === undefined) {\n // Expecting a body, but got no content-type\n return false\n }\n\n if (encoding === '*/*') {\n return true\n }\n\n if (encoding.endsWith('/*')) {\n return mime.startsWith(encoding.slice(0, -1))\n }\n\n // Invalid: Lexicon can only specify \"*/*\" or \"type/*\" wildcards\n if (encoding.includes('*')) {\n return false\n }\n\n return encoding === mime\n }\n}\n"]}
|