@atproto/lex-schema 0.0.3 → 0.0.5
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 +44 -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/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/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/external.d.ts +7 -6
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +1 -0
- package/dist/external.js.map +1 -1
- package/dist/helpers.d.ts +36 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +3 -0
- package/dist/helpers.js.map +1 -0
- package/dist/schema/blob.d.ts +1 -0
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +32 -18
- package/dist/schema/blob.js.map +1 -1
- package/dist/schema/custom.js +1 -1
- package/dist/schema/custom.js.map +1 -1
- package/dist/schema/integer.js +1 -1
- package/dist/schema/integer.js.map +1 -1
- package/dist/schema/params.d.ts +0 -1
- package/dist/schema/params.d.ts.map +1 -1
- 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 +13 -12
- package/dist/schema/record.d.ts.map +1 -1
- package/dist/schema/record.js.map +1 -1
- package/dist/schema/refine.js +1 -1
- package/dist/schema/refine.js.map +1 -1
- package/dist/schema/subscription.d.ts +4 -7
- package/dist/schema/subscription.d.ts.map +1 -1
- package/dist/schema/subscription.js.map +1 -1
- package/dist/schema/typed-object.d.ts +7 -6
- package/dist/schema/typed-object.d.ts.map +1 -1
- package/dist/schema/typed-object.js.map +1 -1
- package/dist/schema/union.d.ts.map +1 -1
- package/dist/schema/union.js +1 -4
- package/dist/schema/union.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/validation/schema.d.ts +21 -2
- package/dist/validation/schema.d.ts.map +1 -1
- package/dist/validation/schema.js +25 -2
- package/dist/validation/schema.js.map +1 -1
- package/dist/validation/validation-error.d.ts.map +1 -1
- package/dist/validation/validation-error.js +3 -3
- package/dist/validation/validation-error.js.map +1 -1
- package/dist/validation/validation-issue.js +10 -2
- package/dist/validation/validation-issue.js.map +1 -1
- package/dist/validation/validator.d.ts +4 -3
- package/dist/validation/validator.d.ts.map +1 -1
- package/dist/validation/validator.js +13 -10
- package/dist/validation/validator.js.map +1 -1
- package/package.json +2 -2
- package/src/core/$type.ts +4 -0
- package/src/core/result.ts +9 -8
- package/src/core/string-format.ts +88 -68
- package/src/core/types.ts +4 -0
- package/src/external.ts +9 -8
- package/src/helpers.test.ts +486 -0
- package/src/helpers.ts +61 -0
- package/src/schema/blob.test.ts +2 -4
- package/src/schema/blob.ts +31 -23
- package/src/schema/custom.test.ts +5 -5
- package/src/schema/custom.ts +1 -1
- package/src/schema/integer.ts +1 -1
- package/src/schema/params.ts +0 -7
- package/src/schema/payload.ts +67 -34
- package/src/schema/permission-set.test.ts +36 -36
- package/src/schema/procedure.test.ts +1 -62
- package/src/schema/procedure.ts +8 -20
- package/src/schema/query.test.ts +22 -69
- package/src/schema/query.ts +7 -14
- package/src/schema/record.ts +8 -4
- package/src/schema/refine.ts +1 -1
- package/src/schema/subscription.test.ts +30 -93
- package/src/schema/subscription.ts +11 -24
- package/src/schema/typed-object.ts +7 -3
- package/src/schema/union.ts +1 -4
- package/src/util/assertion-util.ts +40 -0
- package/src/validation/schema.ts +29 -4
- package/src/validation/validation-error.ts +4 -4
- package/src/validation/validation-issue.ts +12 -2
- package/src/validation/validator.ts +16 -12
- package/tsconfig.tests.json +1 -1
package/dist/external.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAS,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC/E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAS,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC/E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,KAAK,EACL,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,MAAM,EACP,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEvE,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAG/B,wBAAgB,KAAK,gBAEpB;AAGD,wBAAgB,OAAO,kBAEtB;AAGD,wBAAgB,KAAK,eAEpB;AAED,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAA;AAGxB,wBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EACtE,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,oBAGlC;AAGD,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EACpE,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,iBAG/B;AAGD,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAA;AAGxB,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,iBAErD;AAGD,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,iBAErD;AAGD,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,aAEjD;AAGD,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,kBAAkB,eAEjD;AAGD,wBAAgB,IAAI,CAAC,CAAC,SAAS,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,EACrE,OAAO,GAAE,CAAW,iBAGrB;AAGD,wBAAgB,MAAM,CACpB,KAAK,CAAC,CAAC,SAAS,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC,EAC1D,OAAO,GAAE,mBAAmB,GAAG,CAAW,mBAE3C;AAGD,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,mBAEhE;AAGD,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAC7C,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAAC,CAAC,CAAC,CAAA;AACjB,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAClE,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAAC,CAAC,CAAC,CAAA;AASjB,wBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,iBAAiB,EAAE,UAAU,EAAE,CAAC,mBAEtE;AAGD,wBAAgB,IAAI,CAClB,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EACjC,KAAK,CAAC,CAAC,SAAS,SAAS,EACzB,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,oBAEjB;AAGD,YAAY,EAAE,mBAAmB,IAAI,aAAa,EAAE,CAAA;AAGpD,wBAAgB,aAAa,wBAE5B;AAGD,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,gBAE7C;AAGD,wBAAgB,MAAM,CAAC,CAAC,EACtB,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,mBAG5C;AAGD,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,4BAE5D;AAGD,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,4BAE5D;AAGD,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,qBAAqB,EAAE,UAAU,EAAE,CAAC,kBAEzE;AAGD,wBAAgB,YAAY,CAC1B,KAAK,CAAC,IAAI,SAAS,YAAY,EAC/B,KAAK,CAAC,KAAK,SAAS,UAAU,EAC9B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,mCAEzB;AAED,OAAO,EAAE,MAAM,EAAE,CAAA;AAGjB,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,aAAa,SAAS,MAAM,EAClC,KAAK,CAAC,OAAO,SAAS,0BAA0B,CAAC,aAAa,CAAC,EAC/D,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,oDAKhD;AAGD,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,EACtE,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,4BAGR;AAGD,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACzD,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,qBAGvB;AAGD,wBAAgB,UAAU,CACxB,KAAK,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE,EACzC,KAAK,CAAC,CAAC,SAAS,OAAO,EACvB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,0BAEnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,EACnD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjE,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,EACrD,IAAI,EAAE,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAC9C,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GAC9B,CAAC,GACD,CAAC,GACH,KAAK,EACT,IAAI,EAAE,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAC9C,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAC9B,CAAC,GACD,MAAM,GACR,KAAK,EACT,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAClC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAU7D;;GAEG;AACH,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAA;AAE5D;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CACpB,KAAK,CAAC,CAAC,SAAS,gBAAgB,EAChC,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,EACnD,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5D,wBAAgB,MAAM,CACpB,KAAK,CAAC,CAAC,SAAS,gBAAgB,EAChC,KAAK,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,EAErC,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACxB,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAClC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAW3D,wBAAgB,MAAM,CACpB,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,EACxD,UAAU,GAAE,CAAW,mBAExB;AAGD,wBAAgB,OAAO,CACrB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EAC9C,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EAC5C,QAAQ,GAAE,CAAkB,EAAE,MAAM,GAAE,CAAkB,iBAEzD;AAGD,wBAAgB,KAAK,CACnB,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,YAAY,EAC5B,KAAK,CAAC,CAAC,SAAS,OAAO,EACvB,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EACzD,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,CAAkB,qBAE9D;AAGD,wBAAgB,SAAS,CACvB,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,YAAY,EAC5B,KAAK,CAAC,CAAC,SAAS,OAAO,EACvB,KAAK,CAAC,CAAC,SAAS,OAAO,EACvB,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EACzD,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAE,CAAkB,4BAExE;AAGD,wBAAgB,YAAY,CAC1B,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,YAAY,EAC5B,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EACzD,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,GAAE,CAAkB,4BAE/D;AAGD,wBAAgB,UAAU,CACxB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,iBAAiB,EACjC,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAE,iBAAiB,GAAG,CAAW,oBAEtD;AAGD,wBAAgB,aAAa,CAC3B,KAAK,CAAC,CAAC,SAAS,UAAU,EAC1B,KAAK,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,EACrC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,uBAExD"}
|
package/dist/external.js
CHANGED
|
@@ -43,6 +43,7 @@ const core_js_1 = require("./core.js");
|
|
|
43
43
|
const schema_js_1 = require("./schema.js");
|
|
44
44
|
Object.defineProperty(exports, "refine", { enumerable: true, get: function () { return schema_js_1.refine; } });
|
|
45
45
|
tslib_1.__exportStar(require("./core.js"), exports);
|
|
46
|
+
tslib_1.__exportStar(require("./helpers.js"), exports);
|
|
46
47
|
tslib_1.__exportStar(require("./schema.js"), exports);
|
|
47
48
|
tslib_1.__exportStar(require("./validation.js"), exports);
|
|
48
49
|
/*@__NO_SIDE_EFFECTS__*/
|
package/dist/external.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":";;;AAkEA,sBAEC;AAGD,0BAEC;AAGD,sBAEC;AAEiB,qBAAI;AAGtB,0BAKC;AAGD,sBAKC;AAGiB,qBAAI;AAGtB,0BAEC;AAGD,0BAEC;AAGD,0BAEC;AAGD,sBAEC;AAGD,oBAIC;AAGD,wBAIC;AAGD,wBAEC;AAWD,sBAKC;AAGD,wBAEC;AAGD,oBAKC;AAMD,sCAEC;AAGD,kBAEC;AAGD,wBAMC;AAGD,4BAEC;AAGD,4BAEC;AAGD,sBAEC;AAGD,oCAKC;AAKD,gDAQC;AAGD,sBAKC;AAGD,4BAIC;AAGD,gCAKC;AAgCD,kCAMC;AAgCD,wBAMC;AAGD,wBAIC;AAGD,0BAKC;AAGD,sBAOC;AAGD,8BAQC;AAGD,oCAOC;AAGD,gCAKC;AAGD,sCAKC;;AAlYD,uCAA+E;AAC/E,2CAyDoB;AA4JX,uFA7JP,kBAAM,OA6JO;AAzJf,oDAAyB;AACzB,sDAA2B;AAC3B,0DAA+B;AAE/B,wBAAwB;AACxB,SAAgB,KAAK;IACnB,OAAO,IAAI,uBAAW,EAAE,CAAA;AAC1B,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO;IACrB,OAAO,IAAI,yBAAa,EAAE,CAAA;AAC5B,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK;IACnB,OAAO,IAAI,sBAAU,EAAE,CAAA;AACzB,CAAC;AAID,wBAAwB;AACxB,SAAgB,OAAO,CACrB,KAAQ,EACR,OAAiC;IAEjC,OAAO,IAAI,yBAAa,CAAI,KAAK,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK,CACnB,KAAmB,EACnB,OAA8B;IAE9B,OAAO,IAAI,sBAAU,CAAI,KAAK,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC;AAKD,wBAAwB;AACxB,SAAgB,OAAO,CAAC,OAA8B;IACpD,OAAO,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO,CAAC,OAA8B;IACpD,OAAO,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO,CAAC,OAA0B;IAChD,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK,CAAC,OAA4B;IAChD,OAAO,IAAI,uBAAW,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC;AAED,wBAAwB;AACxB,SAAgB,IAAI,CAClB,UAAa,EAAO;IAEpB,OAAO,IAAI,sBAAU,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC;AAED,wBAAwB;AACxB,SAAgB,MAAM,CAEpB,UAAmC,EAAO;IAC1C,OAAO,IAAI,wBAAY,CAAI,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,wBAAwB;AACxB,SAAgB,MAAM,CAA4B,OAAe;IAC/D,OAAO,IAAI,wBAAY,CAAI,OAAO,CAAC,CAAA;AACrC,CAAC;AAWD,SAAgB,KAAK,CACnB,KAAQ,EACR,OAA4B;IAE5B,OAAO,IAAI,uBAAW,CAAI,KAAK,EAAE,OAAO,CAAC,CAAA;AAC3C,CAAC;AAED,wBAAwB;AACxB,SAAgB,MAAM,CAAoC,UAAa;IACrE,OAAO,IAAI,wBAAY,CAAI,UAAU,CAAC,CAAA;AACxC,CAAC;AAED,wBAAwB;AACxB,SAAgB,IAAI,CAGlB,GAAM,EAAE,KAAQ;IAChB,OAAO,IAAI,sBAAU,CAAO,GAAG,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC;AAKD,wBAAwB;AACxB,SAAgB,aAAa;IAC3B,OAAO,IAAI,+BAAmB,EAAE,CAAA;AAClC,CAAC;AAED,wBAAwB;AACxB,SAAgB,GAAG,CAAI,GAAuB;IAC5C,OAAO,IAAI,qBAAS,CAAI,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,wBAAwB;AACxB,SAAgB,MAAM,CACpB,SAA6B,EAC7B,OAAe,EACf,IAA2C;IAE3C,OAAO,IAAI,wBAAY,CAAI,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AACtD,CAAC;AAED,wBAAwB;AACxB,SAAgB,QAAQ,CAA4B,MAAS;IAC3D,OAAO,IAAI,0BAAc,CAAW,MAAM,CAAC,CAAA;AAC7C,CAAC;AAED,wBAAwB;AACxB,SAAgB,QAAQ,CAA4B,MAAS;IAC3D,OAAO,IAAI,0BAAc,CAAW,MAAM,CAAC,CAAA;AAC7C,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK,CAAwC,UAAa;IACxE,OAAO,IAAI,uBAAW,CAAI,UAAU,CAAC,CAAA;AACvC,CAAC;AAED,wBAAwB;AACxB,SAAgB,YAAY,CAG1B,IAAU,EAAE,KAAY;IACxB,OAAO,IAAI,8BAAkB,CAAc,IAAI,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAID,wBAAwB;AACxB,SAAgB,kBAAkB,CAGhC,aAA4B,EAAE,QAAiB;IAC/C,OAAO,IAAI,oCAAwB,CACjC,aAAa,EACb,QAAQ,CACT,CAAA;AACH,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK,CACnB,IAAO,EACP,IAAO;IAEP,OAAO,IAAI,uBAAW,CAAC,IAAA,eAAK,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,wBAAwB;AACxB,SAAgB,QAAQ,CACtB,GAAsB;IAEtB,OAAO,IAAI,0BAAc,CAAI,GAAG,CAAC,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,SAAgB,UAAU,CAGxB,IAAO,EAAE,MAAS;IAClB,OAAO,IAAI,4BAAgB,CAAO,IAAI,EAAE,MAAM,CAAC,CAAA;AACjD,CAAC;AA+BD,wBAAwB;AACxB,SAAgB,WAAW,CAIzB,IAAO,EAAE,IAAO,EAAE,MAAS;IAC3B,OAAO,IAAI,6BAAiB,CAAiB,IAAA,eAAK,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AACzE,CAAC;AA+BD,wBAAwB;AACxB,SAAgB,MAAM,CAIpB,GAAM,EAAE,IAAO,EAAE,MAAS;IAC1B,OAAO,IAAI,wBAAY,CAAU,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC;AAED,wBAAwB;AACxB,SAAgB,MAAM,CAEpB,aAAgB,EAAO;IACvB,OAAO,IAAI,wBAAY,CAAI,UAAU,CAAC,CAAA;AACxC,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO,CAGrB,WAAc,SAAc,EAAE,SAAY,SAAc;IACxD,OAAO,IAAI,mBAAO,CAAO,QAAQ,EAAE,MAAM,CAAC,CAAA;AAC5C,CAAC;AAED,wBAAwB;AACxB,SAAgB,KAAK,CAKnB,IAAO,EAAE,UAAa,EAAE,MAAS,EAAE,SAAY,SAAc;IAC7D,OAAO,IAAI,iBAAK,CAAa,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAChE,CAAC;AAED,wBAAwB;AACxB,SAAgB,SAAS,CAMvB,IAAO,EAAE,UAAa,EAAE,KAAQ,EAAE,MAAS,EAAE,SAAY,SAAc;IACvE,OAAO,IAAI,qBAAS,CAAgB,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC9E,CAAC;AAED,wBAAwB;AACxB,SAAgB,YAAY,CAK1B,IAAO,EAAE,UAAa,EAAE,OAAU,EAAE,SAAY,SAAc;IAC9D,OAAO,IAAI,wBAAY,CAAa,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC;AAED,wBAAwB;AACxB,SAAgB,UAAU,CAGxB,QAAW,EAAE,UAAiC,EAAO;IACrD,OAAO,IAAI,sBAAU,CAAO,QAAQ,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAED,wBAAwB;AACxB,SAAgB,aAAa,CAG3B,IAAO,EAAE,WAAc,EAAE,OAA8B;IACvD,OAAO,IAAI,yBAAa,CAAO,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AAC5D,CAAC","sourcesContent":["import { $Type, $TypeOf, $type, LexiconRecordKey, NsidString } from './core.js'\nimport {\n ArraySchema,\n ArraySchemaOptions,\n BlobSchema,\n BlobSchemaOptions,\n BooleanSchema,\n BooleanSchemaOptions,\n BytesSchema,\n BytesSchemaOptions,\n CidSchema,\n CidSchemaOptions,\n CustomAssertion,\n CustomSchema,\n DictSchema,\n DiscriminatedUnionSchema,\n DiscriminatedUnionVariants,\n EnumSchema,\n EnumSchemaOptions,\n IntegerSchema,\n IntegerSchemaOptions,\n IntersectionSchema,\n LiteralSchema,\n LiteralSchemaOptions,\n NeverSchema,\n NullSchema,\n NullableSchema,\n ObjectSchema,\n ObjectSchemaShape,\n OptionalSchema,\n ParamsSchema,\n ParamsSchemaShape,\n Payload,\n PayloadBody,\n Permission,\n PermissionOptions,\n PermissionSet,\n PermissionSetOptions,\n Procedure,\n Query,\n RecordSchema,\n RefSchema,\n RefSchemaGetter,\n RegexpSchema,\n StringSchema,\n StringSchemaOptions,\n Subscription,\n TokenSchema,\n TypedObjectSchema,\n TypedRefGetter,\n TypedRefSchema,\n TypedUnionSchema,\n UnionSchema,\n UnionSchemaValidators,\n UnknownObjectOutput,\n UnknownObjectSchema,\n UnknownSchema,\n refine,\n} from './schema.js'\nimport { Infer, PropertyKey, Validator } from './validation.js'\n\nexport * from './core.js'\nexport * from './schema.js'\nexport * from './validation.js'\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function never() {\n return new NeverSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function unknown() {\n return new UnknownSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function _null() {\n return new NullSchema()\n}\n\nexport { _null as null }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function literal<const V extends null | string | number | boolean>(\n value: V,\n options?: LiteralSchemaOptions<V>,\n) {\n return new LiteralSchema<V>(value, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function _enum<const V extends null | string | number | boolean>(\n value: readonly V[],\n options?: EnumSchemaOptions<V>,\n) {\n return new EnumSchema<V>(value, options)\n}\n\n// @NOTE \"enum\" is a reserved keyword in JS/TS\nexport { _enum as enum }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function boolean(options?: BooleanSchemaOptions) {\n return new BooleanSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function integer(options?: IntegerSchemaOptions) {\n return new IntegerSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function cidLink(options?: CidSchemaOptions) {\n return new CidSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function bytes(options?: BytesSchemaOptions) {\n return new BytesSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function blob<O extends BlobSchemaOptions = NonNullable<unknown>>(\n options: O = {} as O,\n) {\n return new BlobSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function string<\n const O extends StringSchemaOptions = NonNullable<unknown>,\n>(options: StringSchemaOptions & O = {} as O) {\n return new StringSchema<O>(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function regexp<T extends string = string>(pattern: RegExp) {\n return new RegexpSchema<T>(pattern)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function array<const S extends Validator>(\n items: S,\n options?: ArraySchemaOptions,\n): ArraySchema<S>\nexport function array<T, const S extends Validator<T> = Validator<T>>(\n items: S,\n options?: ArraySchemaOptions,\n): ArraySchema<S>\nexport function array<const S extends Validator>(\n items: S,\n options?: ArraySchemaOptions,\n) {\n return new ArraySchema<S>(items, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function object<const P extends ObjectSchemaShape>(properties: P) {\n return new ObjectSchema<P>(properties)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function dict<\n const K extends Validator<string>,\n const V extends Validator,\n>(key: K, value: V) {\n return new DictSchema<K, V>(key, value)\n}\n\n// Utility\nexport type { UnknownObjectOutput as UnknownObject }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function unknownObject() {\n return new UnknownObjectSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function ref<T>(get: RefSchemaGetter<T>) {\n return new RefSchema<T>(get)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function custom<T>(\n assertion: CustomAssertion<T>,\n message: string,\n path?: PropertyKey | readonly PropertyKey[],\n) {\n return new CustomSchema<T>(assertion, message, path)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function nullable<const S extends Validator>(schema: S) {\n return new NullableSchema<Infer<S>>(schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function optional<const S extends Validator>(schema: S) {\n return new OptionalSchema<Infer<S>>(schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function union<const V extends UnionSchemaValidators>(validators: V) {\n return new UnionSchema<V>(validators)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function intersection<\n const Left extends ObjectSchema,\n const Right extends DictSchema,\n>(left: Left, right: Right) {\n return new IntersectionSchema<Left, Right>(left, right)\n}\n\nexport { refine }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function discriminatedUnion<\n const Discriminator extends string,\n const Options extends DiscriminatedUnionVariants<Discriminator>,\n>(discriminator: Discriminator, variants: Options) {\n return new DiscriminatedUnionSchema<Discriminator, Options>(\n discriminator,\n variants,\n )\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function token<const N extends NsidString, const H extends string>(\n nsid: N,\n hash: H,\n) {\n return new TokenSchema($type(nsid, hash))\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedRef<const V extends { $type?: string }>(\n get: TypedRefGetter<V>,\n) {\n return new TypedRefSchema<V>(get)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedUnion<\n const R extends readonly TypedRefSchema[],\n const C extends boolean,\n>(refs: R, closed: C) {\n return new TypedUnionSchema<R, C>(refs, closed)\n}\n\n/**\n * This function offers two overloads:\n * - One that allows creating a {@link TypedObjectSchema}, and infer the output\n * type from the provided arguments, without requiring to specify any of the\n * generics. This is useful when you want to define a record without\n * explicitly defining its interface. This version does not support circular\n * references, as TypeScript cannot infer types in such cases.\n * - One allows creating a {@link TypedObjectSchema} with an explicitly defined\n * interface. This will typically be used by codegen (`lex build`) to generate\n * schemas that work even if they contain circular references.\n */\nexport function typedObject<\n const N extends NsidString,\n const H extends string,\n const S extends Validator<{ [_ in string]?: unknown }>,\n>(nsid: N, hash: H, schema: S): TypedObjectSchema<$Type<N, H>, S>\nexport function typedObject<V extends { $type?: $Type }>(\n nsid: V extends { $type?: infer T extends string }\n ? T extends `${infer N}#${string}`\n ? N\n : T // (T is a \"main\" type, so already an NSID)\n : never,\n hash: V extends { $type?: infer T extends string }\n ? T extends `${string}#${infer H}`\n ? H\n : 'main'\n : never,\n schema: Validator<Omit<V, '$type'>>,\n): TypedObjectSchema<$TypeOf<V>, Validator<Omit<V, '$type'>>>\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedObject<\n const N extends NsidString,\n const H extends string,\n const S extends Validator<{ [_ in string]?: unknown }>,\n>(nsid: N, hash: H, schema: S) {\n return new TypedObjectSchema<$Type<N, H>, S>($type(nsid, hash), schema)\n}\n\n/**\n * Ensures that a `$type` used in a record is a valid NSID (i.e. no fragment).\n */\ntype AsNsid<T> = T extends `${string}#${string}` ? never : T\n\n/**\n * This function offers two overloads:\n * - One that allows creating a {@link RecordSchema}, and infer the output type\n * from the provided arguments, without requiring to specify any of the\n * generics. This is useful when you want to define a record without\n * explicitly defining its interface. This version does not support circular\n * references, as TypeScript cannot infer types in such cases.\n * - One allows creating a {@link RecordSchema} with an explicitly defined\n * interface. This will typically be used by codegen (`lex build`) to generate\n * schemas that work even if they contain circular references.\n */\nexport function record<\n const K extends LexiconRecordKey,\n const T extends NsidString,\n const S extends Validator<{ [_ in string]?: unknown }>,\n>(key: K, type: AsNsid<T>, schema: S): RecordSchema<K, T, S>\nexport function record<\n const K extends LexiconRecordKey,\n const V extends { $type: NsidString },\n>(\n key: K,\n type: AsNsid<V['$type']>,\n schema: Validator<Omit<V, '$type'>>,\n): RecordSchema<K, V['$type'], Validator<Omit<V, '$type'>>>\n/*@__NO_SIDE_EFFECTS__*/\nexport function record<\n const K extends LexiconRecordKey,\n const T extends NsidString,\n const S extends Validator<{ [_ in string]?: unknown }>,\n>(key: K, type: T, schema: S) {\n return new RecordSchema<K, T, S>(key, type, schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function params<\n const P extends ParamsSchemaShape = NonNullable<unknown>,\n>(properties: P = {} as P) {\n return new ParamsSchema<P>(properties)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function payload<\n const E extends string | undefined = undefined,\n const S extends PayloadBody<E> = undefined,\n>(encoding: E = undefined as E, schema: S = undefined as S) {\n return new Payload<E, S>(encoding, schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function query<\n const N extends NsidString,\n const P extends ParamsSchema,\n const O extends Payload,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, output: O, errors: E = undefined as E) {\n return new Query<N, P, O, E>(nsid, parameters, output, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function procedure<\n const N extends NsidString,\n const P extends ParamsSchema,\n const I extends Payload,\n const O extends Payload,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, input: I, output: O, errors: E = undefined as E) {\n return new Procedure<N, P, I, O, E>(nsid, parameters, input, output, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function subscription<\n const N extends NsidString,\n const P extends ParamsSchema,\n const M extends undefined | RefSchema | TypedUnionSchema | ObjectSchema,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, message: M, errors: E = undefined as E) {\n return new Subscription<N, P, M, E>(nsid, parameters, message, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function permission<\n const R extends string,\n const O extends PermissionOptions,\n>(resource: R, options: PermissionOptions & O = {} as O) {\n return new Permission<R, O>(resource, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function permissionSet<\n const N extends NsidString,\n const P extends readonly Permission[],\n>(nsid: N, permissions: P, options?: PermissionSetOptions) {\n return new PermissionSet<N, P>(nsid, permissions, options)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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","sourcesContent":["import { $Type, $TypeOf, $type, LexiconRecordKey, NsidString } from './core.js'\nimport {\n ArraySchema,\n ArraySchemaOptions,\n BlobSchema,\n BlobSchemaOptions,\n BooleanSchema,\n BooleanSchemaOptions,\n BytesSchema,\n BytesSchemaOptions,\n CidSchema,\n CidSchemaOptions,\n CustomAssertion,\n CustomSchema,\n DictSchema,\n DiscriminatedUnionSchema,\n DiscriminatedUnionVariants,\n EnumSchema,\n EnumSchemaOptions,\n IntegerSchema,\n IntegerSchemaOptions,\n IntersectionSchema,\n LiteralSchema,\n LiteralSchemaOptions,\n NeverSchema,\n NullSchema,\n NullableSchema,\n ObjectSchema,\n ObjectSchemaShape,\n OptionalSchema,\n ParamsSchema,\n ParamsSchemaShape,\n Payload,\n PayloadSchema,\n Permission,\n PermissionOptions,\n PermissionSet,\n PermissionSetOptions,\n Procedure,\n Query,\n RecordSchema,\n RefSchema,\n RefSchemaGetter,\n RegexpSchema,\n StringSchema,\n StringSchemaOptions,\n Subscription,\n TokenSchema,\n TypedObjectSchema,\n TypedRefGetter,\n TypedRefSchema,\n TypedUnionSchema,\n UnionSchema,\n UnionSchemaValidators,\n UnknownObjectOutput,\n UnknownObjectSchema,\n UnknownSchema,\n refine,\n} from './schema.js'\nimport { Infer, PropertyKey, Schema, Validator } from './validation.js'\n\nexport * from './core.js'\nexport * from './helpers.js'\nexport * from './schema.js'\nexport * from './validation.js'\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function never() {\n return new NeverSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function unknown() {\n return new UnknownSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function _null() {\n return new NullSchema()\n}\n\nexport { _null as null }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function literal<const V extends null | string | number | boolean>(\n value: V,\n options?: LiteralSchemaOptions<V>,\n) {\n return new LiteralSchema<V>(value, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function _enum<const V extends null | string | number | boolean>(\n value: readonly V[],\n options?: EnumSchemaOptions<V>,\n) {\n return new EnumSchema<V>(value, options)\n}\n\n// @NOTE \"enum\" is a reserved keyword in JS/TS\nexport { _enum as enum }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function boolean(options?: BooleanSchemaOptions) {\n return new BooleanSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function integer(options?: IntegerSchemaOptions) {\n return new IntegerSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function cidLink(options?: CidSchemaOptions) {\n return new CidSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function bytes(options?: BytesSchemaOptions) {\n return new BytesSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function blob<O extends BlobSchemaOptions = NonNullable<unknown>>(\n options: O = {} as O,\n) {\n return new BlobSchema(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function string<\n const O extends StringSchemaOptions = NonNullable<unknown>,\n>(options: StringSchemaOptions & O = {} as O) {\n return new StringSchema<O>(options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function regexp<T extends string = string>(pattern: RegExp) {\n return new RegexpSchema<T>(pattern)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function array<const S extends Validator>(\n items: S,\n options?: ArraySchemaOptions,\n): ArraySchema<S>\nexport function array<T, const S extends Validator<T> = Validator<T>>(\n items: S,\n options?: ArraySchemaOptions,\n): ArraySchema<S>\nexport function array<const S extends Validator>(\n items: S,\n options?: ArraySchemaOptions,\n) {\n return new ArraySchema<S>(items, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function object<const P extends ObjectSchemaShape>(properties: P) {\n return new ObjectSchema<P>(properties)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function dict<\n const K extends Validator<string>,\n const V extends Validator,\n>(key: K, value: V) {\n return new DictSchema<K, V>(key, value)\n}\n\n// Utility\nexport type { UnknownObjectOutput as UnknownObject }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function unknownObject() {\n return new UnknownObjectSchema()\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function ref<T>(get: RefSchemaGetter<T>) {\n return new RefSchema<T>(get)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function custom<T>(\n assertion: CustomAssertion<T>,\n message: string,\n path?: PropertyKey | readonly PropertyKey[],\n) {\n return new CustomSchema<T>(assertion, message, path)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function nullable<const S extends Validator>(schema: S) {\n return new NullableSchema<Infer<S>>(schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function optional<const S extends Validator>(schema: S) {\n return new OptionalSchema<Infer<S>>(schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function union<const V extends UnionSchemaValidators>(validators: V) {\n return new UnionSchema<V>(validators)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function intersection<\n const Left extends ObjectSchema,\n const Right extends DictSchema,\n>(left: Left, right: Right) {\n return new IntersectionSchema<Left, Right>(left, right)\n}\n\nexport { refine }\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function discriminatedUnion<\n const Discriminator extends string,\n const Options extends DiscriminatedUnionVariants<Discriminator>,\n>(discriminator: Discriminator, variants: Options) {\n return new DiscriminatedUnionSchema<Discriminator, Options>(\n discriminator,\n variants,\n )\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function token<const N extends NsidString, const H extends string>(\n nsid: N,\n hash: H,\n) {\n return new TokenSchema($type(nsid, hash))\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedRef<const V extends { $type?: string }>(\n get: TypedRefGetter<V>,\n) {\n return new TypedRefSchema<V>(get)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedUnion<\n const R extends readonly TypedRefSchema[],\n const C extends boolean,\n>(refs: R, closed: C) {\n return new TypedUnionSchema<R, C>(refs, closed)\n}\n\n/**\n * This function offers two overloads:\n * - One that allows creating a {@link TypedObjectSchema}, and infer the output\n * type from the provided arguments, without requiring to specify any of the\n * generics. This is useful when you want to define a record without\n * explicitly defining its interface. This version does not support circular\n * references, as TypeScript cannot infer types in such cases.\n * - One allows creating a {@link TypedObjectSchema} with an explicitly defined\n * interface. This will typically be used by codegen (`lex build`) to generate\n * schemas that work even if they contain circular references.\n */\nexport function typedObject<\n const N extends NsidString,\n const H extends string,\n const S extends Validator<{ [k: string]: unknown }>,\n>(nsid: N, hash: H, schema: S): TypedObjectSchema<$Type<N, H>, S>\nexport function typedObject<V extends { $type?: $Type }>(\n nsid: V extends { $type?: infer T extends string }\n ? T extends `${infer N}#${string}`\n ? N\n : T // (T is a \"main\" type, so already an NSID)\n : never,\n hash: V extends { $type?: infer T extends string }\n ? T extends `${string}#${infer H}`\n ? H\n : 'main'\n : never,\n schema: Validator<Omit<V, '$type'>>,\n): TypedObjectSchema<$TypeOf<V>, Validator<Omit<V, '$type'>>>\n/*@__NO_SIDE_EFFECTS__*/\nexport function typedObject<\n const N extends NsidString,\n const H extends string,\n const S extends Validator<{ [k: string]: unknown }>,\n>(nsid: N, hash: H, schema: S) {\n return new TypedObjectSchema<$Type<N, H>, S>($type(nsid, hash), schema)\n}\n\n/**\n * Ensures that a `$type` used in a record is a valid NSID (i.e. no fragment).\n */\ntype AsNsid<T> = T extends `${string}#${string}` ? never : T\n\n/**\n * This function offers two overloads:\n * - One that allows creating a {@link RecordSchema}, and infer the output type\n * from the provided arguments, without requiring to specify any of the\n * generics. This is useful when you want to define a record without\n * explicitly defining its interface. This version does not support circular\n * references, as TypeScript cannot infer types in such cases.\n * - One allows creating a {@link RecordSchema} with an explicitly defined\n * interface. This will typically be used by codegen (`lex build`) to generate\n * schemas that work even if they contain circular references.\n */\nexport function record<\n const K extends LexiconRecordKey,\n const T extends NsidString,\n const S extends Validator<{ [k: string]: unknown }>,\n>(key: K, type: AsNsid<T>, schema: S): RecordSchema<K, T, S>\nexport function record<\n const K extends LexiconRecordKey,\n const V extends { $type: NsidString },\n>(\n key: K,\n type: AsNsid<V['$type']>,\n schema: Validator<Omit<V, '$type'>>,\n): RecordSchema<K, V['$type'], Validator<Omit<V, '$type'>>>\n/*@__NO_SIDE_EFFECTS__*/\nexport function record<\n const K extends LexiconRecordKey,\n const T extends NsidString,\n const S extends Validator<{ [k: string]: unknown }>,\n>(key: K, type: T, schema: S) {\n return new RecordSchema<K, T, S>(key, type, schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function params<\n const P extends ParamsSchemaShape = NonNullable<unknown>,\n>(properties: P = {} as P) {\n return new ParamsSchema<P>(properties)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function payload<\n const E extends string | undefined = undefined,\n const S extends PayloadSchema<E> = undefined,\n>(encoding: E = undefined as E, schema: S = undefined as S) {\n return new Payload<E, S>(encoding, schema)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function query<\n const N extends NsidString,\n const P extends ParamsSchema,\n const O extends Payload,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, output: O, errors: E = undefined as E) {\n return new Query<N, P, O, E>(nsid, parameters, output, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function procedure<\n const N extends NsidString,\n const P extends ParamsSchema,\n const I extends Payload,\n const O extends Payload,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, input: I, output: O, errors: E = undefined as E) {\n return new Procedure<N, P, I, O, E>(nsid, parameters, input, output, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function subscription<\n const N extends NsidString,\n const P extends ParamsSchema,\n const M extends Schema,\n const E extends undefined | readonly string[] = undefined,\n>(nsid: N, parameters: P, message: M, errors: E = undefined as E) {\n return new Subscription<N, P, M, E>(nsid, parameters, message, errors)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function permission<\n const R extends string,\n const O extends PermissionOptions,\n>(resource: R, options: PermissionOptions & O = {} as O) {\n return new Permission<R, O>(resource, options)\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function permissionSet<\n const N extends NsidString,\n const P extends readonly Permission[],\n>(nsid: N, permissions: P, options?: PermissionSetOptions) {\n return new PermissionSet<N, P>(nsid, permissions, options)\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Restricted } from './core.js';
|
|
2
|
+
import { InferPayload, InferPayloadBody, InferPayloadEncoding, Payload, Procedure, Query, Subscription } from './schema.js';
|
|
3
|
+
import { Infer, Schema } from './validation.js';
|
|
4
|
+
/**
|
|
5
|
+
* Every XRPC implementation should translate `application/json` and `text/*`
|
|
6
|
+
* payloads into their native equivalent ({@link LexValue} or string). Binary
|
|
7
|
+
* data payloads, however, can be represented differently depending on the
|
|
8
|
+
* environment and use case (e.g. `Uint8Array`, `Blob`, `Buffer`,
|
|
9
|
+
* `ReadableStream`, etc.). This type is a placeholder to represent binary data
|
|
10
|
+
* when not explicitly provided.
|
|
11
|
+
*/
|
|
12
|
+
type BinaryData = Restricted<'Binary data'>;
|
|
13
|
+
export type InferMethodParams<M extends Procedure | Query | Subscription> = Infer<M['parameters']>;
|
|
14
|
+
export type InferMethodInput<M extends Procedure | Query | Subscription, B = BinaryData> = M extends {
|
|
15
|
+
input: Payload;
|
|
16
|
+
} ? InferPayload<M['input'], B> : undefined;
|
|
17
|
+
export type InferMethodInputBody<M extends Procedure | Query | Subscription, B = BinaryData> = M extends {
|
|
18
|
+
input: Payload;
|
|
19
|
+
} ? InferPayloadBody<M['input'], B> : undefined;
|
|
20
|
+
export type InferMethodInputEncoding<M extends Procedure | Query | Subscription> = M extends {
|
|
21
|
+
input: Payload;
|
|
22
|
+
} ? InferPayloadEncoding<M['input']> : undefined;
|
|
23
|
+
export type InferMethodOutput<M extends Procedure | Query | Subscription, B = BinaryData> = M extends {
|
|
24
|
+
output: Payload;
|
|
25
|
+
} ? InferPayload<M['output'], B> : undefined;
|
|
26
|
+
export type InferMethodOutputBody<M extends Procedure | Query | Subscription, B = BinaryData> = M extends {
|
|
27
|
+
output: Payload;
|
|
28
|
+
} ? InferPayloadBody<M['output'], B> : undefined;
|
|
29
|
+
export type InferMethodOutputEncoding<M extends Procedure | Query | Subscription> = M extends {
|
|
30
|
+
output: Payload;
|
|
31
|
+
} ? InferPayloadEncoding<M['output']> : undefined;
|
|
32
|
+
export type InferMethodMessage<M extends Procedure | Query | Subscription> = M extends {
|
|
33
|
+
message: Schema;
|
|
34
|
+
} ? Infer<M['message']> : undefined;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,OAAO,EACP,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;;;;GAOG;AACH,KAAK,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAE3C,MAAM,MAAM,iBAAiB,CAE3B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,IACxC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;AAE1B,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,EAC1C,CAAC,GAAG,UAAU,IACZ,CAAC,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;AAE1E,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,EAC1C,CAAC,GAAG,UAAU,IACZ,CAAC,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;AAE9E,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,IACxC,CAAC,SAAS;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;AAE/E,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,EAC1C,CAAC,GAAG,UAAU,IACZ,CAAC,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,EAC1C,CAAC,GAAG,UAAU,IACZ,CAAC,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;AAEhF,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,IACxC,CAAC,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC7B,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GACjC,SAAS,CAAA;AAEb,MAAM,MAAM,kBAAkB,CAE5B,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,YAAY,IACxC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"","sourcesContent":["import { Restricted } from './core.js'\nimport {\n InferPayload,\n InferPayloadBody,\n InferPayloadEncoding,\n Payload,\n Procedure,\n Query,\n Subscription,\n} from './schema.js'\nimport { Infer, Schema } from './validation.js'\n\n/**\n * Every XRPC implementation should translate `application/json` and `text/*`\n * payloads into their native equivalent ({@link LexValue} or string). Binary\n * data payloads, however, can be represented differently depending on the\n * environment and use case (e.g. `Uint8Array`, `Blob`, `Buffer`,\n * `ReadableStream`, etc.). This type is a placeholder to represent binary data\n * when not explicitly provided.\n */\ntype BinaryData = Restricted<'Binary data'>\n\nexport type InferMethodParams<\n //\n M extends Procedure | Query | Subscription,\n> = Infer<M['parameters']>\n\nexport type InferMethodInput<\n M extends Procedure | Query | Subscription,\n B = BinaryData,\n> = M extends { input: Payload } ? InferPayload<M['input'], B> : undefined\n\nexport type InferMethodInputBody<\n M extends Procedure | Query | Subscription,\n B = BinaryData,\n> = M extends { input: Payload } ? InferPayloadBody<M['input'], B> : undefined\n\nexport type InferMethodInputEncoding<\n M extends Procedure | Query | Subscription,\n> = M extends { input: Payload } ? InferPayloadEncoding<M['input']> : undefined\n\nexport type InferMethodOutput<\n M extends Procedure | Query | Subscription,\n B = BinaryData,\n> = M extends { output: Payload } ? InferPayload<M['output'], B> : undefined\n\nexport type InferMethodOutputBody<\n M extends Procedure | Query | Subscription,\n B = BinaryData,\n> = M extends { output: Payload } ? InferPayloadBody<M['output'], B> : undefined\n\nexport type InferMethodOutputEncoding<\n M extends Procedure | Query | Subscription,\n> = M extends { output: Payload }\n ? InferPayloadEncoding<M['output']>\n : undefined\n\nexport type InferMethodMessage<\n //\n M extends Procedure | Query | Subscription,\n> = M extends { message: Schema } ? Infer<M['message']> : undefined\n"]}
|
package/dist/schema/blob.d.ts
CHANGED
|
@@ -27,5 +27,6 @@ export declare class BlobSchema<O extends BlobSchemaOptions> extends Schema<Blob
|
|
|
27
27
|
readonly options: O;
|
|
28
28
|
constructor(options: O);
|
|
29
29
|
validateInContext(input: unknown, ctx: ValidatorContext): ValidationResult<BlobSchemaOutput<O>>;
|
|
30
|
+
matchesMime(mime: string): boolean;
|
|
30
31
|
}
|
|
31
32
|
//# sourceMappingURL=blob.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/schema/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,CAAA;AAEtC,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,OAAO,SAAS;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GACzE,OAAO,GAAG,aAAa,GACvB,OAAO,CAAA;AAEX,qBAAa,UAAU,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,MAAM,CACjE,gBAAgB,CAAC,CAAC,CAAC,CACpB;IACa,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;IAI/B,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/schema/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,CAAA;AAEtC,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,OAAO,SAAS;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GACzE,OAAO,GAAG,aAAa,GACvB,OAAO,CAAA;AAEX,qBAAa,UAAU,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,MAAM,CACjE,gBAAgB,CAAC,CAAC,CAAC,CACpB;IACa,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;IAI/B,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IA2BxC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAKnC"}
|
package/dist/schema/blob.js
CHANGED
|
@@ -10,29 +10,43 @@ class BlobSchema extends validation_js_1.Schema {
|
|
|
10
10
|
this.options = options;
|
|
11
11
|
}
|
|
12
12
|
validateInContext(input, ctx) {
|
|
13
|
-
|
|
13
|
+
const blob = input?.$type !== undefined
|
|
14
|
+
? (0, lex_data_1.isBlobRef)(input, this.options)
|
|
15
|
+
? input
|
|
16
|
+
: null
|
|
17
|
+
: this.options.allowLegacy === true && (0, lex_data_1.isLegacyBlobRef)(input)
|
|
18
|
+
? input
|
|
19
|
+
: null;
|
|
20
|
+
if (!blob) {
|
|
14
21
|
return ctx.issueInvalidType(input, 'blob');
|
|
15
22
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
const { accept } = this.options;
|
|
24
|
+
if (accept && !matchesMime(blob.mimeType, accept)) {
|
|
25
|
+
return ctx.issueInvalidPropertyValue(blob, 'mimeType', accept);
|
|
26
|
+
}
|
|
27
|
+
const { maxSize } = this.options;
|
|
28
|
+
if (maxSize != null && 'size' in blob && blob.size > maxSize) {
|
|
29
|
+
return ctx.issueTooBig(blob, 'blob', maxSize, blob.size);
|
|
30
|
+
}
|
|
31
|
+
return ctx.success(blob);
|
|
32
|
+
}
|
|
33
|
+
matchesMime(mime) {
|
|
34
|
+
const { accept } = this.options;
|
|
35
|
+
if (!accept)
|
|
36
|
+
return true;
|
|
37
|
+
return matchesMime(mime, accept);
|
|
27
38
|
}
|
|
28
39
|
}
|
|
29
40
|
exports.BlobSchema = BlobSchema;
|
|
30
|
-
function
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
function matchesMime(mime, accepted) {
|
|
42
|
+
if (accepted.includes('*/*'))
|
|
43
|
+
return true;
|
|
44
|
+
if (accepted.includes(mime))
|
|
45
|
+
return true;
|
|
46
|
+
for (const value of accepted) {
|
|
47
|
+
if (value.endsWith('/*') && mime.startsWith(value.slice(0, -1))) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
36
50
|
}
|
|
37
51
|
return false;
|
|
38
52
|
}
|
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,oDAA6E;AA4B7E,MAAa,UAAwC,SAAQ,sBAE5D;IACsB;IAArB,YAAqB,OAAU;QAC7B,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAG;IAE/B,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/schema/blob.ts"],"names":[],"mappings":";;;AAAA,gDAK0B;AAC1B,oDAA6E;AA4B7E,MAAa,UAAwC,SAAQ,sBAE5D;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 '../validation.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/custom.js
CHANGED
|
@@ -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 validation_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,oDAOyB;AAazB,MAAa,YAA0B,SAAQ,sBAAS;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,
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/schema/custom.ts"],"names":[],"mappings":";;;AAAA,oDAOyB;AAazB,MAAa,YAA0B,SAAQ,sBAAS;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,2BAAW,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 '../validation.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/integer.js
CHANGED
|
@@ -26,6 +26,6 @@ exports.IntegerSchema = IntegerSchema;
|
|
|
26
26
|
* Simple wrapper around {@link Number.isInteger} that acts as a type guard.
|
|
27
27
|
*/
|
|
28
28
|
function isInteger(input) {
|
|
29
|
-
return Number.isInteger(input);
|
|
29
|
+
return Number.isInteger(input) && 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,oDAA6E;AAQ7E,MAAa,aAAc,SAAQ,sBAAc;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,SAAS,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../src/schema/integer.ts"],"names":[],"mappings":";;;AAAA,oDAA6E;AAQ7E,MAAa,aAAc,SAAQ,sBAAc;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,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC","sourcesContent":["import { Schema, ValidationResult, ValidatorContext } from '../validation.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.isInteger} that acts as a type guard.\n */\nfunction isInteger(input: unknown): input is number {\n return Number.isInteger(input) && Number.isSafeInteger(input)\n}\n"]}
|
package/dist/schema/params.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export type ParamsSchemaShape = Record<string, Validator<Param | undefined>>;
|
|
|
5
5
|
export type ParamsSchemaOutput<Shape extends ParamsSchemaShape> = WithOptionalProperties<{
|
|
6
6
|
[K in keyof Shape]: Infer<Shape[K]>;
|
|
7
7
|
}>;
|
|
8
|
-
export type InferParamsSchema<T> = T extends ParamsSchema<infer P> ? NonNullable<unknown> extends ParamsSchemaOutput<P> ? ParamsSchemaOutput<P> | undefined : ParamsSchemaOutput<P> : never;
|
|
9
8
|
export declare class ParamsSchema<const Shape extends ParamsSchemaShape = ParamsSchemaShape> extends Schema<ParamsSchemaOutput<Shape>> {
|
|
10
9
|
readonly validators: Shape;
|
|
11
10
|
constructor(validators: Shape);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,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,
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AAEjD,+DAAuD;AACvD,oDAMyB;AACzB,qDAAkE;AAClE,2CAA0C;
|
|
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 { WithOptionalProperties } from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.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,19 +1,21 @@
|
|
|
1
1
|
import { LexValue } from '@atproto/lex-data';
|
|
2
|
-
import { Infer,
|
|
3
|
-
export type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} : void;
|
|
13
|
-
export type PayloadBody<E extends string | undefined> = E extends undefined ? undefined : Validator | undefined;
|
|
14
|
-
export declare class Payload<const Encoding extends string | undefined = string | undefined, const Body extends PayloadBody<Encoding> = PayloadBody<Encoding>> {
|
|
2
|
+
import { Infer, Schema } from '../validation.js';
|
|
3
|
+
export type InferPayload<P extends Payload, B> = P['encoding'] extends infer E extends string ? {
|
|
4
|
+
encoding: SchemaEncodingToDataEncoding<E>;
|
|
5
|
+
body: InferPayloadBody<P, B>;
|
|
6
|
+
} : void | undefined;
|
|
7
|
+
export type SchemaEncodingToDataEncoding<E extends string> = E extends '*/*' ? `${string}/${string}` : E extends `${infer T extends string}/*` ? `${T}/${string}` : E;
|
|
8
|
+
export type InferPayloadEncoding<P extends Payload> = P['encoding'] extends string ? SchemaEncodingToDataEncoding<P['encoding']> : undefined;
|
|
9
|
+
export type InferPayloadBody<P extends Payload, B> = P['encoding'] extends undefined ? undefined : P['schema'] extends Schema ? Infer<P['schema']> : P['encoding'] extends `application/json` ? LexValue : B;
|
|
10
|
+
export type PayloadSchema<E extends string | undefined> = E extends undefined ? undefined : Schema | undefined;
|
|
11
|
+
export declare class Payload<const Encoding extends string | undefined = string | undefined, const Schema extends PayloadSchema<Encoding> = PayloadSchema<Encoding>> {
|
|
15
12
|
readonly encoding: Encoding;
|
|
16
|
-
readonly schema:
|
|
17
|
-
constructor(encoding: Encoding, schema:
|
|
13
|
+
readonly schema: Schema;
|
|
14
|
+
constructor(encoding: Encoding, schema: Schema);
|
|
15
|
+
/**
|
|
16
|
+
* Checks whether the given content-type matches the expected payload schema's
|
|
17
|
+
* encoding.
|
|
18
|
+
*/
|
|
19
|
+
matchesEncoding(contentType: string | undefined): boolean;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -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,
|
|
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,kBAAkB,CAAA;AAEhD,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"}
|
package/dist/schema/payload.js
CHANGED
|
@@ -11,6 +11,34 @@ class Payload {
|
|
|
11
11
|
throw new TypeError('schema cannot be defined when encoding is undefined');
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether the given content-type matches the expected payload schema's
|
|
16
|
+
* encoding.
|
|
17
|
+
*/
|
|
18
|
+
matchesEncoding(contentType) {
|
|
19
|
+
const mime = contentType?.split(';', 1)[0].trim();
|
|
20
|
+
const { encoding } = this;
|
|
21
|
+
// Handle undefined cases
|
|
22
|
+
if (encoding === undefined) {
|
|
23
|
+
// Expecting no body
|
|
24
|
+
return mime === undefined;
|
|
25
|
+
}
|
|
26
|
+
else if (mime === undefined) {
|
|
27
|
+
// Expecting a body, but got no content-type
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (encoding === '*/*') {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (encoding.endsWith('/*')) {
|
|
34
|
+
return mime.startsWith(encoding.slice(0, -1));
|
|
35
|
+
}
|
|
36
|
+
// Invalid: Lexicon can only specify "*/*" or "type/*" wildcards
|
|
37
|
+
if (encoding.includes('*')) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return encoding === mime;
|
|
41
|
+
}
|
|
14
42
|
}
|
|
15
43
|
exports.Payload = Payload;
|
|
16
44
|
//# sourceMappingURL=payload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":";;;
|
|
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 '../validation.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"]}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { NsidString } from '../core.js';
|
|
2
|
-
import { Infer } from '../validation.js';
|
|
3
2
|
import { ParamsSchema } from './params.js';
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
export type InferProcedureInputBody<Q extends Procedure> = Q extends Procedure<any, any, infer I extends Payload, any> ? InferPayloadBody<I> : never;
|
|
7
|
-
export type InferProcedureOutputBody<Q extends Procedure> = Q extends Procedure<any, any, any, infer O extends Payload> ? InferPayloadBody<O> : never;
|
|
8
|
-
export declare class Procedure<TNsid extends NsidString = any, TParameters extends ParamsSchema = any, TInputPayload extends Payload = any, TOutputPayload extends Payload = any, TErrors extends undefined | readonly string[] = any> {
|
|
3
|
+
import { Payload } from './payload.js';
|
|
4
|
+
export declare class Procedure<TNsid extends NsidString = NsidString, TParameters extends ParamsSchema = ParamsSchema, TInputPayload extends Payload = Payload, TOutputPayload extends Payload = Payload, TErrors extends undefined | readonly string[] = undefined | readonly string[]> {
|
|
9
5
|
readonly nsid: TNsid;
|
|
10
6
|
readonly parameters: TParameters;
|
|
11
7
|
readonly input: TInputPayload;
|
|
12
8
|
readonly output: TOutputPayload;
|
|
13
9
|
readonly errors: TErrors;
|
|
10
|
+
readonly type: "procedure";
|
|
14
11
|
constructor(nsid: TNsid, parameters: TParameters, input: TInputPayload, output: TOutputPayload, errors: TErrors);
|
|
15
12
|
}
|
|
16
13
|
//# sourceMappingURL=procedure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,qBAAa,SAAS,CACpB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,WAAW,SAAS,YAAY,GAAG,YAAY,EAC/C,aAAa,SAAS,OAAO,GAAG,OAAO,EACvC,cAAc,SAAS,OAAO,GAAG,OAAO,EACxC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;IAK3E,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAP1B,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;gBAGzB,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
|
package/dist/schema/procedure.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":";;;AAIA,MAAa,SAAS;IAUT;IACA;IACA;IACA;IACA;IAPF,IAAI,GAAG,WAAoB,CAAA;IAEpC,YACW,IAAW,EACX,UAAuB,EACvB,KAAoB,EACpB,MAAsB,EACtB,MAAe;QAJf,SAAI,GAAJ,IAAI,CAAO;QACX,eAAU,GAAV,UAAU,CAAa;QACvB,UAAK,GAAL,KAAK,CAAe;QACpB,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;CACL;AAhBD,8BAgBC","sourcesContent":["import { NsidString } from '../core.js'\nimport { ParamsSchema } from './params.js'\nimport { Payload } from './payload.js'\n\nexport class Procedure<\n TNsid extends NsidString = NsidString,\n TParameters extends ParamsSchema = ParamsSchema,\n TInputPayload extends Payload = Payload,\n TOutputPayload extends Payload = Payload,\n TErrors extends undefined | readonly string[] = undefined | readonly string[],\n> {\n readonly type = 'procedure' as const\n\n constructor(\n readonly nsid: TNsid,\n readonly parameters: TParameters,\n readonly input: TInputPayload,\n readonly output: TOutputPayload,\n readonly errors: TErrors,\n ) {}\n}\n"]}
|
package/dist/schema/query.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { NsidString } from '../core.js';
|
|
2
|
-
import { Infer } from '../validation.js';
|
|
3
2
|
import { ParamsSchema } from './params.js';
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
export type InferQueryOutputBody<Q extends Query> = Q extends Query<any, any, infer O extends Payload> ? InferPayloadBody<O> : never;
|
|
7
|
-
export declare class Query<TNsid extends NsidString = any, TParameters extends ParamsSchema = any, TOutputPayload extends Payload = any, TErrors extends undefined | readonly string[] = any> {
|
|
3
|
+
import { Payload } from './payload.js';
|
|
4
|
+
export declare class Query<TNsid extends NsidString = NsidString, TParameters extends ParamsSchema = ParamsSchema, TOutputPayload extends Payload = Payload, TErrors extends undefined | readonly string[] = undefined | readonly string[]> {
|
|
8
5
|
readonly nsid: TNsid;
|
|
9
6
|
readonly parameters: TParameters;
|
|
10
7
|
readonly output: TOutputPayload;
|
|
11
8
|
readonly errors: TErrors;
|
|
9
|
+
readonly type: "query";
|
|
12
10
|
constructor(nsid: TNsid, parameters: TParameters, output: TOutputPayload, errors: TErrors);
|
|
13
11
|
}
|
|
14
12
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,qBAAa,KAAK,CAChB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,WAAW,SAAS,YAAY,GAAG,YAAY,EAC/C,cAAc,SAAS,OAAO,GAAG,OAAO,EACxC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;IAK3E,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAN1B,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAGrB,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
|