@atproto/lex-schema 0.0.2 → 0.0.3
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 +68 -0
- package/dist/core/$type.d.ts +6 -3
- package/dist/core/$type.d.ts.map +1 -1
- package/dist/core/$type.js +1 -0
- package/dist/core/$type.js.map +1 -1
- package/dist/core/record-key.d.ts +3 -3
- package/dist/core/record-key.d.ts.map +1 -1
- package/dist/core/record-key.js +12 -6
- package/dist/core/record-key.js.map +1 -1
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +6 -0
- package/dist/core/result.js.map +1 -1
- package/dist/core/string-format.d.ts +30 -27
- package/dist/core/string-format.d.ts.map +1 -1
- package/dist/core/string-format.js +56 -42
- package/dist/core/string-format.js.map +1 -1
- package/dist/core/types.d.ts +9 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/external.d.ts +31 -28
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +33 -17
- package/dist/external.js.map +1 -1
- package/dist/schema/_parameters.d.ts +2 -2
- package/dist/schema/_parameters.d.ts.map +1 -1
- package/dist/schema/array.d.ts +5 -6
- package/dist/schema/array.d.ts.map +1 -1
- package/dist/schema/array.js +5 -6
- package/dist/schema/array.js.map +1 -1
- package/dist/schema/blob.d.ts +2 -3
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +1 -2
- package/dist/schema/blob.js.map +1 -1
- package/dist/schema/boolean.d.ts +4 -5
- package/dist/schema/boolean.d.ts.map +1 -1
- package/dist/schema/boolean.js +2 -3
- package/dist/schema/boolean.js.map +1 -1
- package/dist/schema/bytes.d.ts +3 -4
- package/dist/schema/bytes.d.ts.map +1 -1
- package/dist/schema/bytes.js +2 -3
- package/dist/schema/bytes.js.map +1 -1
- package/dist/schema/cid.d.ts +13 -6
- package/dist/schema/cid.d.ts.map +1 -1
- package/dist/schema/cid.js +2 -4
- package/dist/schema/cid.js.map +1 -1
- package/dist/schema/custom.d.ts +3 -4
- package/dist/schema/custom.d.ts.map +1 -1
- package/dist/schema/custom.js +4 -3
- package/dist/schema/custom.js.map +1 -1
- package/dist/schema/dict.d.ts +3 -3
- package/dist/schema/dict.d.ts.map +1 -1
- package/dist/schema/dict.js +1 -1
- package/dist/schema/dict.js.map +1 -1
- package/dist/schema/discriminated-union.d.ts +15 -24
- package/dist/schema/discriminated-union.d.ts.map +1 -1
- package/dist/schema/discriminated-union.js +40 -64
- package/dist/schema/discriminated-union.js.map +1 -1
- package/dist/schema/enum.d.ts +8 -4
- package/dist/schema/enum.d.ts.map +1 -1
- package/dist/schema/enum.js +5 -3
- package/dist/schema/enum.js.map +1 -1
- package/dist/schema/integer.d.ts +3 -4
- package/dist/schema/integer.d.ts.map +1 -1
- package/dist/schema/integer.js +3 -4
- package/dist/schema/integer.js.map +1 -1
- package/dist/schema/intersection.d.ts +22 -14
- package/dist/schema/intersection.d.ts.map +1 -1
- package/dist/schema/intersection.js +12 -22
- package/dist/schema/intersection.js.map +1 -1
- package/dist/schema/literal.d.ts +7 -3
- package/dist/schema/literal.d.ts.map +1 -1
- package/dist/schema/literal.js +5 -3
- package/dist/schema/literal.js.map +1 -1
- package/dist/schema/never.d.ts +2 -2
- package/dist/schema/never.d.ts.map +1 -1
- package/dist/schema/never.js +1 -1
- package/dist/schema/never.js.map +1 -1
- package/dist/schema/null.d.ts +2 -3
- package/dist/schema/null.d.ts.map +1 -1
- package/dist/schema/null.js +1 -2
- package/dist/schema/null.js.map +1 -1
- package/dist/schema/nullable.d.ts +7 -0
- package/dist/schema/nullable.d.ts.map +1 -0
- package/dist/schema/nullable.js +19 -0
- package/dist/schema/nullable.js.map +1 -0
- package/dist/schema/object.d.ts +10 -44
- package/dist/schema/object.d.ts.map +1 -1
- package/dist/schema/object.js +10 -46
- package/dist/schema/object.js.map +1 -1
- package/dist/schema/optional.d.ts +7 -0
- package/dist/schema/optional.d.ts.map +1 -0
- package/dist/schema/optional.js +25 -0
- package/dist/schema/optional.js.map +1 -0
- package/dist/schema/params.d.ts +14 -19
- package/dist/schema/params.d.ts.map +1 -1
- package/dist/schema/params.js +10 -24
- package/dist/schema/params.js.map +1 -1
- package/dist/schema/payload.d.ts +4 -4
- package/dist/schema/payload.d.ts.map +1 -1
- package/dist/schema/payload.js.map +1 -1
- package/dist/schema/permission-set.d.ts +6 -6
- package/dist/schema/permission-set.d.ts.map +1 -1
- package/dist/schema/permission-set.js +1 -2
- package/dist/schema/permission-set.js.map +1 -1
- package/dist/schema/permission.d.ts +0 -1
- package/dist/schema/permission.d.ts.map +1 -1
- package/dist/schema/permission.js +0 -1
- package/dist/schema/permission.js.map +1 -1
- package/dist/schema/procedure.d.ts +8 -9
- package/dist/schema/procedure.d.ts.map +1 -1
- package/dist/schema/procedure.js +0 -1
- package/dist/schema/procedure.js.map +1 -1
- package/dist/schema/query.d.ts +7 -8
- package/dist/schema/query.d.ts.map +1 -1
- package/dist/schema/query.js +0 -1
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/record.d.ts +34 -28
- package/dist/schema/record.d.ts.map +1 -1
- package/dist/schema/record.js +1 -2
- package/dist/schema/record.js.map +1 -1
- package/dist/schema/ref.d.ts +2 -3
- package/dist/schema/ref.d.ts.map +1 -1
- package/dist/schema/ref.js +1 -2
- package/dist/schema/ref.js.map +1 -1
- package/dist/schema/refine.d.ts +18 -0
- package/dist/schema/refine.d.ts.map +1 -0
- package/dist/schema/refine.js +33 -0
- package/dist/schema/refine.js.map +1 -0
- package/dist/schema/regexp.d.ts +7 -0
- package/dist/schema/regexp.d.ts.map +1 -0
- package/dist/schema/regexp.js +22 -0
- package/dist/schema/regexp.js.map +1 -0
- package/dist/schema/string.d.ts +4 -8
- package/dist/schema/string.d.ts.map +1 -1
- package/dist/schema/string.js +6 -3
- package/dist/schema/string.js.map +1 -1
- package/dist/schema/subscription.d.ts +7 -6
- package/dist/schema/subscription.d.ts.map +1 -1
- package/dist/schema/subscription.js.map +1 -1
- package/dist/schema/token.d.ts +2 -3
- package/dist/schema/token.d.ts.map +1 -1
- package/dist/schema/token.js +1 -2
- package/dist/schema/token.js.map +1 -1
- package/dist/schema/typed-object.d.ts +29 -27
- package/dist/schema/typed-object.d.ts.map +1 -1
- package/dist/schema/typed-object.js +1 -2
- package/dist/schema/typed-object.js.map +1 -1
- package/dist/schema/typed-ref.d.ts +2 -2
- package/dist/schema/typed-ref.d.ts.map +1 -1
- package/dist/schema/typed-ref.js +1 -1
- package/dist/schema/typed-ref.js.map +1 -1
- package/dist/schema/typed-union.d.ts +3 -4
- package/dist/schema/typed-union.d.ts.map +1 -1
- package/dist/schema/typed-union.js +3 -10
- package/dist/schema/typed-union.js.map +1 -1
- package/dist/schema/union.d.ts +2 -2
- package/dist/schema/union.d.ts.map +1 -1
- package/dist/schema/union.js +1 -1
- package/dist/schema/union.js.map +1 -1
- package/dist/schema/unknown-object.d.ts +2 -3
- package/dist/schema/unknown-object.d.ts.map +1 -1
- package/dist/schema/unknown-object.js +1 -2
- package/dist/schema/unknown-object.js.map +1 -1
- package/dist/schema/unknown.d.ts +2 -2
- package/dist/schema/unknown.d.ts.map +1 -1
- package/dist/schema/unknown.js +1 -1
- package/dist/schema/unknown.js.map +1 -1
- package/dist/schema.d.ts +4 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +6 -1
- package/dist/schema.js.map +1 -1
- package/dist/util/array-agg.d.ts.map +1 -1
- package/dist/util/array-agg.js +1 -0
- package/dist/util/array-agg.js.map +1 -1
- package/dist/util/lazy-property.d.ts +2 -0
- package/dist/util/lazy-property.d.ts.map +1 -0
- package/dist/util/lazy-property.js +14 -0
- package/dist/util/lazy-property.js.map +1 -0
- package/dist/validation/schema.d.ts +24 -0
- package/dist/validation/schema.d.ts.map +1 -0
- package/dist/validation/schema.js +57 -0
- package/dist/validation/schema.js.map +1 -0
- package/dist/validation/validation-error.d.ts +3 -3
- package/dist/validation/validation-error.d.ts.map +1 -1
- package/dist/validation/validation-error.js +32 -4
- package/dist/validation/validation-error.js.map +1 -1
- package/dist/validation/validation-issue.d.ts +32 -24
- package/dist/validation/validation-issue.d.ts.map +1 -1
- package/dist/validation/validation-issue.js +136 -92
- package/dist/validation/validation-issue.js.map +1 -1
- package/dist/validation/validator.d.ts +20 -50
- package/dist/validation/validator.d.ts.map +1 -1
- package/dist/validation/validator.js +40 -134
- package/dist/validation/validator.js.map +1 -1
- package/dist/validation.d.ts +1 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +1 -0
- package/dist/validation.js.map +1 -1
- package/package.json +8 -4
- package/src/core/$type.ts +7 -4
- package/src/core/record-key.ts +12 -5
- package/src/core/result.ts +6 -0
- package/src/core/string-format.ts +97 -61
- package/src/core/types.ts +12 -6
- package/src/external.ts +92 -70
- package/src/schema/_parameters.test.ts +416 -0
- package/src/schema/array.test.ts +237 -0
- package/src/schema/array.ts +17 -11
- package/src/schema/blob.test.ts +506 -0
- package/src/schema/blob.ts +3 -5
- package/src/schema/boolean.test.ts +116 -0
- package/src/schema/boolean.ts +5 -7
- package/src/schema/bytes.test.ts +226 -0
- package/src/schema/bytes.ts +4 -6
- package/src/schema/cid.test.ts +155 -0
- package/src/schema/cid.ts +14 -8
- package/src/schema/custom.test.ts +413 -0
- package/src/schema/custom.ts +10 -8
- package/src/schema/dict.test.ts +198 -0
- package/src/schema/dict.ts +6 -8
- package/src/schema/discriminated-union.test.ts +675 -0
- package/src/schema/discriminated-union.ts +68 -95
- package/src/schema/enum.test.ts +396 -0
- package/src/schema/enum.ts +12 -5
- package/src/schema/integer.test.ts +312 -0
- package/src/schema/integer.ts +5 -7
- package/src/schema/intersection.test.ts +32 -0
- package/src/schema/intersection.ts +37 -40
- package/src/schema/literal.test.ts +531 -0
- package/src/schema/literal.ts +12 -5
- package/src/schema/never.test.ts +174 -0
- package/src/schema/never.ts +3 -10
- package/src/schema/null.test.ts +79 -0
- package/src/schema/null.ts +3 -5
- package/src/schema/nullable.test.ts +480 -0
- package/src/schema/nullable.ts +23 -0
- package/src/schema/object.test.ts +47 -115
- package/src/schema/object.ts +19 -123
- package/src/schema/optional.test.ts +485 -0
- package/src/schema/optional.ts +31 -0
- package/src/schema/params.test.ts +582 -0
- package/src/schema/params.ts +37 -55
- package/src/schema/payload.test.ts +345 -0
- package/src/schema/payload.ts +5 -5
- package/src/schema/permission-set.test.ts +679 -0
- package/src/schema/permission-set.ts +6 -8
- package/src/schema/permission.test.ts +536 -0
- package/src/schema/permission.ts +0 -2
- package/src/schema/procedure.test.ts +443 -0
- package/src/schema/procedure.ts +11 -13
- package/src/schema/query.test.ts +408 -0
- package/src/schema/query.ts +9 -11
- package/src/schema/record.test.ts +694 -0
- package/src/schema/record.ts +38 -36
- package/src/schema/ref.test.ts +365 -0
- package/src/schema/ref.ts +8 -5
- package/src/schema/refine.test.ts +578 -0
- package/src/schema/refine.ts +85 -0
- package/src/schema/regexp.test.ts +580 -0
- package/src/schema/regexp.ts +22 -0
- package/src/schema/string.test.ts +612 -0
- package/src/schema/string.ts +11 -17
- package/src/schema/subscription.test.ts +689 -0
- package/src/schema/subscription.ts +13 -8
- package/src/schema/token.test.ts +428 -0
- package/src/schema/token.ts +3 -5
- package/src/schema/typed-object.test.ts +612 -0
- package/src/schema/typed-object.ts +23 -20
- package/src/schema/typed-ref.test.ts +823 -0
- package/src/schema/typed-ref.ts +10 -5
- package/src/schema/typed-union.test.ts +378 -0
- package/src/schema/typed-union.ts +6 -15
- package/src/schema/union.test.ts +200 -0
- package/src/schema/union.ts +5 -4
- package/src/schema/unknown-object.test.ts +592 -0
- package/src/schema/unknown-object.ts +3 -5
- package/src/schema/unknown.test.ts +312 -0
- package/src/schema/unknown.ts +3 -3
- package/src/schema.ts +7 -1
- package/src/util/array-agg.ts +1 -0
- package/src/util/lazy-property.ts +14 -0
- package/src/validation/schema.ts +92 -0
- package/src/validation/validation-error.ts +60 -9
- package/src/validation/validation-issue.ts +141 -144
- package/src/validation/validator.ts +67 -206
- package/src/validation.ts +1 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +7 -0
- package/tsconfig.tests.json +9 -0
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAA;AAGvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AAGnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAA;AAGvC,cAAc,oBAAoB,CAAA;AAGlC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AAGnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA"}
|
package/dist/schema.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
//
|
|
4
|
+
// Global schemas
|
|
5
5
|
tslib_1.__exportStar(require("./schema/_parameters.js"), exports);
|
|
6
|
+
// Utilities
|
|
7
|
+
tslib_1.__exportStar(require("./schema/refine.js"), exports);
|
|
6
8
|
// Concrete Types
|
|
7
9
|
tslib_1.__exportStar(require("./schema/array.js"), exports);
|
|
8
10
|
tslib_1.__exportStar(require("./schema/blob.js"), exports);
|
|
@@ -16,6 +18,7 @@ tslib_1.__exportStar(require("./schema/literal.js"), exports);
|
|
|
16
18
|
tslib_1.__exportStar(require("./schema/never.js"), exports);
|
|
17
19
|
tslib_1.__exportStar(require("./schema/null.js"), exports);
|
|
18
20
|
tslib_1.__exportStar(require("./schema/object.js"), exports);
|
|
21
|
+
tslib_1.__exportStar(require("./schema/regexp.js"), exports);
|
|
19
22
|
tslib_1.__exportStar(require("./schema/string.js"), exports);
|
|
20
23
|
tslib_1.__exportStar(require("./schema/unknown-object.js"), exports);
|
|
21
24
|
tslib_1.__exportStar(require("./schema/unknown.js"), exports);
|
|
@@ -23,6 +26,8 @@ tslib_1.__exportStar(require("./schema/unknown.js"), exports);
|
|
|
23
26
|
tslib_1.__exportStar(require("./schema/custom.js"), exports);
|
|
24
27
|
tslib_1.__exportStar(require("./schema/discriminated-union.js"), exports);
|
|
25
28
|
tslib_1.__exportStar(require("./schema/intersection.js"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./schema/nullable.js"), exports);
|
|
30
|
+
tslib_1.__exportStar(require("./schema/optional.js"), exports);
|
|
26
31
|
tslib_1.__exportStar(require("./schema/ref.js"), exports);
|
|
27
32
|
tslib_1.__exportStar(require("./schema/union.js"), exports);
|
|
28
33
|
// Lexicon specific Types
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,kEAAuC;AAEvC,YAAY;AACZ,6DAAkC;AAElC,iBAAiB;AACjB,4DAAiC;AACjC,2DAAgC;AAChC,8DAAmC;AACnC,4DAAiC;AACjC,0DAA+B;AAC/B,2DAAgC;AAChC,2DAAgC;AAChC,8DAAmC;AACnC,8DAAmC;AACnC,4DAAiC;AACjC,2DAAgC;AAChC,6DAAkC;AAClC,6DAAkC;AAClC,6DAAkC;AAClC,qEAA0C;AAC1C,8DAAmC;AAEnC,kBAAkB;AAClB,6DAAkC;AAClC,0EAA+C;AAC/C,mEAAwC;AACxC,+DAAoC;AACpC,+DAAoC;AACpC,0DAA+B;AAC/B,4DAAiC;AAEjC,yBAAyB;AACzB,6DAAkC;AAClC,8DAAmC;AACnC,qEAA0C;AAC1C,iEAAsC;AACtC,gEAAqC;AACrC,4DAAiC;AACjC,6DAAkC;AAClC,mEAAwC;AACxC,4DAAiC;AACjC,mEAAwC;AACxC,gEAAqC;AACrC,kEAAuC","sourcesContent":["// Global schemas\nexport * from './schema/_parameters.js'\n\n// Utilities\nexport * from './schema/refine.js'\n\n// Concrete Types\nexport * from './schema/array.js'\nexport * from './schema/blob.js'\nexport * from './schema/boolean.js'\nexport * from './schema/bytes.js'\nexport * from './schema/cid.js'\nexport * from './schema/dict.js'\nexport * from './schema/enum.js'\nexport * from './schema/integer.js'\nexport * from './schema/literal.js'\nexport * from './schema/never.js'\nexport * from './schema/null.js'\nexport * from './schema/object.js'\nexport * from './schema/regexp.js'\nexport * from './schema/string.js'\nexport * from './schema/unknown-object.js'\nexport * from './schema/unknown.js'\n\n// Composite Types\nexport * from './schema/custom.js'\nexport * from './schema/discriminated-union.js'\nexport * from './schema/intersection.js'\nexport * from './schema/nullable.js'\nexport * from './schema/optional.js'\nexport * from './schema/ref.js'\nexport * from './schema/union.js'\n\n// Lexicon specific Types\nexport * from './schema/params.js'\nexport * from './schema/payload.js'\nexport * from './schema/permission-set.js'\nexport * from './schema/permission.js'\nexport * from './schema/procedure.js'\nexport * from './schema/query.js'\nexport * from './schema/record.js'\nexport * from './schema/subscription.js'\nexport * from './schema/token.js'\nexport * from './schema/typed-object.js'\nexport * from './schema/typed-ref.js'\nexport * from './schema/typed-union.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-agg.d.ts","sourceRoot":"","sources":["../../src/util/array-agg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"array-agg.d.ts","sourceRoot":"","sources":["../../src/util/array-agg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,GAAG,EAAE,SAAS,CAAC,EAAE,EACjB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,EAC5B,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAC7B,CAAC,EAAE,CAoBL"}
|
package/dist/util/array-agg.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-agg.js","sourceRoot":"","sources":["../../src/util/array-agg.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"array-agg.js","sourceRoot":"","sources":["../../src/util/array-agg.ts"],"names":[],"mappings":";;AAmBA,4BAwBC;AA3CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAwB;AACxB,SAAgB,QAAQ,CACtB,GAAiB,EACjB,GAA4B,EAC5B,GAA8B;IAE9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,KAAK,CAAsB,GAAG,CAAC,MAAM,CAAC,CAAA;IAEtD,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,CAAC,CAAC;YAAE,SAAQ;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;gBACjB,SAAS,KAAK,CAAA;YAChB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC","sourcesContent":["/**\n * Aggregates items in an array based on a comparison function and an aggregation function.\n *\n * @param arr - The input array to aggregate.\n * @param cmp - A comparison function that determines if two items belong to the same group.\n * @param agg - An aggregation function that combines items in a group into a single item.\n * @returns An array of aggregated items.\n * @example\n * ```ts\n * const input = [1, 1, 2, 2, 3, 3, 3]\n * const result = arrayAgg(\n * input,\n * (a, b) => a === b,\n * (items) => { value: items[0], sum: items.reduce((sum, item) => sum + item, 0) },\n * )\n * // result is [{ value: 1, sum: 2 }, { value: 2, sum: 4 }, { value: 3, sum: 6 }]\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function arrayAgg<T, O>(\n arr: readonly T[],\n cmp: (a: T, b: T) => boolean,\n agg: (items: [T, ...T[]]) => O,\n): O[] {\n if (arr.length === 0) return []\n\n const groups: [T, ...T[]][] = [[arr[0]]]\n const skipped = Array<undefined | boolean>(arr.length)\n\n outer: for (let i = 1; i < arr.length; i++) {\n if (skipped[i]) continue\n const item = arr[i]\n for (let j = 0; j < groups.length; j++) {\n if (cmp(item, groups[j][0])) {\n groups[j].push(item)\n skipped[i] = true\n continue outer\n }\n }\n groups.push([item])\n }\n\n return groups.map(agg)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-property.d.ts","sourceRoot":"","sources":["../../src/util/lazy-property.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAC1B,CAAC,SAAS,MAAM,EAChB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EACvB,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACpB,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ7B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lazyProperty = lazyProperty;
|
|
4
|
+
/*@__NO_SIDE_EFFECTS__*/
|
|
5
|
+
function lazyProperty(obj, key, value) {
|
|
6
|
+
Object.defineProperty(obj, key, {
|
|
7
|
+
value,
|
|
8
|
+
writable: false,
|
|
9
|
+
enumerable: false,
|
|
10
|
+
configurable: true,
|
|
11
|
+
});
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=lazy-property.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-property.js","sourceRoot":"","sources":["../../src/util/lazy-property.ts"],"names":[],"mappings":";;AACA,oCAYC;AAbD,wBAAwB;AACxB,SAAgB,YAAY,CAI1B,GAAM,EAAE,GAAM,EAAE,KAAQ;IACxB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;QAC9B,KAAK;QACL,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["/*@__NO_SIDE_EFFECTS__*/\nexport function lazyProperty<\n O extends object,\n const K extends keyof O,\n const V extends O[K],\n>(obj: O, key: K, value: V): V {\n Object.defineProperty(obj, key, {\n value,\n writable: false,\n enumerable: false,\n configurable: true,\n })\n return value\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ValidationOptions, ValidationResult, Validator, ValidatorContext } from './validator.js';
|
|
2
|
+
export declare abstract class Schema<Output> implements Validator<Output> {
|
|
3
|
+
readonly ['_lex']: {
|
|
4
|
+
output: Output;
|
|
5
|
+
};
|
|
6
|
+
abstract validateInContext(input: unknown, ctx: ValidatorContext): ValidationResult<Output>;
|
|
7
|
+
assert(input: unknown): asserts input is Output;
|
|
8
|
+
matches(input: unknown): input is Output;
|
|
9
|
+
ifMatches<I>(input: I): (I & Output) | undefined;
|
|
10
|
+
parse<I>(input: I, options: ValidationOptions & {
|
|
11
|
+
allowTransform: false;
|
|
12
|
+
}): I & Output;
|
|
13
|
+
parse(input: unknown, options?: ValidationOptions): Output;
|
|
14
|
+
safeParse<I>(input: I, options: ValidationOptions & {
|
|
15
|
+
allowTransform: false;
|
|
16
|
+
}): ValidationResult<I & Output>;
|
|
17
|
+
safeParse(input: unknown, options?: ValidationOptions): ValidationResult<Output>;
|
|
18
|
+
$assert(input: unknown): asserts input is Output;
|
|
19
|
+
$matches(input: unknown): input is Output;
|
|
20
|
+
$ifMatches<I>(input: I): (I & Output) | undefined;
|
|
21
|
+
$parse(input: unknown, options?: ValidationOptions): Output;
|
|
22
|
+
$safeParse(input: unknown, options?: ValidationOptions): ValidationResult<Output>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/validation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AAEvB,8BAAsB,MAAM,CAAC,MAAM,CAAE,YAAW,SAAS,CAAC,MAAM,CAAC;IAC/D,SAAiB,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAE7C,QAAQ,CAAC,iBAAiB,CACxB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,CAAC;IAE3B,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM;IAK/C,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;IAKxC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;IAIhD,KAAK,CAAC,CAAC,EACL,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,iBAAiB,GAAG;QAAE,cAAc,EAAE,KAAK,CAAA;KAAE,GACrD,CAAC,GAAG,MAAM;IACb,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAO1D,SAAS,CAAC,CAAC,EACT,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,iBAAiB,GAAG;QAAE,cAAc,EAAE,KAAK,CAAA;KAAE,GACrD,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC;IAC/B,SAAS,CACP,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,MAAM,CAAC;IAsB3B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM;IAIhD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;IAIzC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;IAIjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAI3D,UAAU,CACR,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,MAAM,CAAC;CAG5B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = void 0;
|
|
4
|
+
const validator_js_1 = require("./validator.js");
|
|
5
|
+
class Schema {
|
|
6
|
+
assert(input) {
|
|
7
|
+
const result = this.safeParse(input, { allowTransform: false });
|
|
8
|
+
if (!result.success)
|
|
9
|
+
throw result.error;
|
|
10
|
+
}
|
|
11
|
+
matches(input) {
|
|
12
|
+
const result = this.safeParse(input, { allowTransform: false });
|
|
13
|
+
return result.success;
|
|
14
|
+
}
|
|
15
|
+
ifMatches(input) {
|
|
16
|
+
return this.matches(input) ? input : undefined;
|
|
17
|
+
}
|
|
18
|
+
parse(input, options) {
|
|
19
|
+
const result = this.safeParse(input, options);
|
|
20
|
+
if (!result.success)
|
|
21
|
+
throw result.error;
|
|
22
|
+
return result.value;
|
|
23
|
+
}
|
|
24
|
+
safeParse(input, options) {
|
|
25
|
+
return validator_js_1.ValidatorContext.validate(input, this, options);
|
|
26
|
+
}
|
|
27
|
+
// @NOTE The built lexicons namespaces will export utility functions that
|
|
28
|
+
// allow accessing the schema's methods without the need to specify ".main."
|
|
29
|
+
// as part of the namespace. This way, a utility for a particular record type
|
|
30
|
+
// can be called like "app.bsky.feed.post.<utility>()" instead of
|
|
31
|
+
// "app.bsky.feed.post.main.<utility>()". Because those utilities could
|
|
32
|
+
// conflict with other schemas (e.g. if there is a lexicon definition at
|
|
33
|
+
// "#<utility>"), those exported utilities will be prefixed with "$". In order
|
|
34
|
+
// to be able to consistently call the utilities, when using the "main" and
|
|
35
|
+
// non "main" definitions, we also expose the same methods with a "$" prefix.
|
|
36
|
+
// Thanks to this, both of the following call will be possible:
|
|
37
|
+
//
|
|
38
|
+
// - "app.bsky.feed.post.$parse(...)" // calls a utility function created by "lex build"
|
|
39
|
+
// - "app.bsky.feed.defs.postView.$parse(...)" // uses the alias defined below on the schema instance
|
|
40
|
+
$assert(input) {
|
|
41
|
+
return this.assert(input);
|
|
42
|
+
}
|
|
43
|
+
$matches(input) {
|
|
44
|
+
return this.matches(input);
|
|
45
|
+
}
|
|
46
|
+
$ifMatches(input) {
|
|
47
|
+
return this.ifMatches(input);
|
|
48
|
+
}
|
|
49
|
+
$parse(input, options) {
|
|
50
|
+
return this.parse(input, options);
|
|
51
|
+
}
|
|
52
|
+
$safeParse(input, options) {
|
|
53
|
+
return this.safeParse(input, options);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.Schema = Schema;
|
|
57
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/validation/schema.ts"],"names":[],"mappings":";;;AAAA,iDAKuB;AAEvB,MAAsB,MAAM;IAQ1B,MAAM,CAAC,KAAc;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;IACzC,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,SAAS,CAAI,KAAQ;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,CAAC;IAOD,KAAK,CAAC,KAAc,EAAE,OAA2B;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QACvC,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAUD,SAAS,CACP,KAAc,EACd,OAA2B;QAE3B,OAAO,+BAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,iEAAiE;IACjE,uEAAuE;IACvE,wEAAwE;IACxE,8EAA8E;IAC9E,2EAA2E;IAC3E,6EAA6E;IAC7E,+DAA+D;IAC/D,EAAE;IACF,wFAAwF;IACxF,qGAAqG;IAErG,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,UAAU,CAAI,KAAQ;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,KAAc,EAAE,OAA2B;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IAED,UAAU,CACR,KAAc,EACd,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;CACF;AApFD,wBAoFC","sourcesContent":["import {\n ValidationOptions,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from './validator.js'\n\nexport abstract class Schema<Output> implements Validator<Output> {\n declare readonly ['_lex']: { output: Output }\n\n abstract validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<Output>\n\n assert(input: unknown): asserts input is Output {\n const result = this.safeParse(input, { allowTransform: false })\n if (!result.success) throw result.error\n }\n\n matches(input: unknown): input is Output {\n const result = this.safeParse(input, { allowTransform: false })\n return result.success\n }\n\n ifMatches<I>(input: I): (I & Output) | undefined {\n return this.matches(input) ? input : undefined\n }\n\n parse<I>(\n input: I,\n options: ValidationOptions & { allowTransform: false },\n ): I & Output\n parse(input: unknown, options?: ValidationOptions): Output\n parse(input: unknown, options?: ValidationOptions): Output {\n const result = this.safeParse(input, options)\n if (!result.success) throw result.error\n return result.value\n }\n\n safeParse<I>(\n input: I,\n options: ValidationOptions & { allowTransform: false },\n ): ValidationResult<I & Output>\n safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output>\n safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output> {\n return ValidatorContext.validate(input, this, options)\n }\n\n // @NOTE The built lexicons namespaces will export utility functions that\n // allow accessing the schema's methods without the need to specify \".main.\"\n // as part of the namespace. This way, a utility for a particular record type\n // can be called like \"app.bsky.feed.post.<utility>()\" instead of\n // \"app.bsky.feed.post.main.<utility>()\". Because those utilities could\n // conflict with other schemas (e.g. if there is a lexicon definition at\n // \"#<utility>\"), those exported utilities will be prefixed with \"$\". In order\n // to be able to consistently call the utilities, when using the \"main\" and\n // non \"main\" definitions, we also expose the same methods with a \"$\" prefix.\n // Thanks to this, both of the following call will be possible:\n //\n // - \"app.bsky.feed.post.$parse(...)\" // calls a utility function created by \"lex build\"\n // - \"app.bsky.feed.defs.postView.$parse(...)\" // uses the alias defined below on the schema instance\n\n $assert(input: unknown): asserts input is Output {\n return this.assert(input)\n }\n\n $matches(input: unknown): input is Output {\n return this.matches(input)\n }\n\n $ifMatches<I>(input: I): (I & Output) | undefined {\n return this.ifMatches(input)\n }\n\n $parse(input: unknown, options?: ValidationOptions): Output {\n return this.parse(input, options)\n }\n\n $safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output> {\n return this.safeParse(input, options)\n }\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ResultFailure } from '../core.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Issue } from './validation-issue.js';
|
|
3
3
|
export declare class ValidationError extends Error {
|
|
4
|
-
readonly issues: ValidationIssue[];
|
|
5
4
|
name: string;
|
|
6
|
-
|
|
5
|
+
readonly issues: Issue[];
|
|
6
|
+
constructor(issues: Issue[], options?: ErrorOptions);
|
|
7
7
|
static fromFailures(failures: ResultFailure<ValidationError>[]): ValidationError;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=validation-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../src/validation/validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../src/validation/validation-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAA;AAExD,OAAO,EACL,KAAK,EAGN,MAAM,uBAAuB,CAAA;AAE9B,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,SAAoB;IAExB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEZ,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY;IAMnD,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,GACzC,eAAe;CAQnB"}
|
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ValidationError = void 0;
|
|
4
4
|
const core_js_1 = require("../core.js");
|
|
5
|
+
const array_agg_js_1 = require("../util/array-agg.js");
|
|
5
6
|
const validation_issue_js_1 = require("./validation-issue.js");
|
|
6
7
|
class ValidationError extends Error {
|
|
7
|
-
issues;
|
|
8
8
|
name = 'ValidationError';
|
|
9
|
+
issues;
|
|
9
10
|
constructor(issues, options) {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
const issuesAgg = aggregateIssues(issues);
|
|
12
|
+
super(issuesAgg.join(', '), options);
|
|
13
|
+
this.issues = issuesAgg;
|
|
12
14
|
}
|
|
13
15
|
static fromFailures(failures) {
|
|
14
16
|
if (failures.length === 1)
|
|
15
17
|
return failures[0].error;
|
|
16
18
|
const issues = failures.flatMap(extractFailureIssues);
|
|
17
|
-
return new ValidationError(
|
|
19
|
+
return new ValidationError(issues, {
|
|
18
20
|
// Keep the original errors as the cause chain
|
|
19
21
|
cause: failures.map(core_js_1.failureError),
|
|
20
22
|
});
|
|
@@ -24,4 +26,30 @@ exports.ValidationError = ValidationError;
|
|
|
24
26
|
function extractFailureIssues(result) {
|
|
25
27
|
return result.error.issues;
|
|
26
28
|
}
|
|
29
|
+
function aggregateIssues(issues) {
|
|
30
|
+
// Quick path for common cases
|
|
31
|
+
if (issues.length <= 1)
|
|
32
|
+
return issues;
|
|
33
|
+
if (issues.length === 2 && issues[0].code !== issues[1].code)
|
|
34
|
+
return issues;
|
|
35
|
+
return [
|
|
36
|
+
// Aggregate invalid_type with identical paths
|
|
37
|
+
...(0, array_agg_js_1.arrayAgg)(issues.filter((issue) => issue instanceof validation_issue_js_1.IssueInvalidType), (a, b) => comparePropertyPaths(a.path, b.path), (issues) => new validation_issue_js_1.IssueInvalidType(issues[0].path, issues[0].input, Array.from(new Set(issues.flatMap((iss) => iss.expected))))),
|
|
38
|
+
// Aggregate invalid_value with identical paths
|
|
39
|
+
...(0, array_agg_js_1.arrayAgg)(issues.filter((issue) => issue instanceof validation_issue_js_1.IssueInvalidValue), (a, b) => comparePropertyPaths(a.path, b.path), (issues) => new validation_issue_js_1.IssueInvalidValue(issues[0].path, issues[0].input, Array.from(new Set(issues.flatMap((iss) => iss.values))))),
|
|
40
|
+
// Pass through other issues
|
|
41
|
+
...issues.filter((issue) => !(issue instanceof validation_issue_js_1.IssueInvalidType) &&
|
|
42
|
+
!(issue instanceof validation_issue_js_1.IssueInvalidValue)),
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
/*@__NO_SIDE_EFFECTS__*/
|
|
46
|
+
function comparePropertyPaths(a, b) {
|
|
47
|
+
if (a.length !== b.length)
|
|
48
|
+
return false;
|
|
49
|
+
for (let i = 0; i < a.length; i++) {
|
|
50
|
+
if (a[i] !== b[i])
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
27
55
|
//# sourceMappingURL=validation-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../src/validation/validation-error.ts"],"names":[],"mappings":";;;AAAA,wCAAwD;AACxD,+DAI8B;AAE9B,MAAa,eAAgB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../src/validation/validation-error.ts"],"names":[],"mappings":"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","sourcesContent":["import { ResultFailure, failureError } from '../core.js'\nimport { arrayAgg } from '../util/array-agg.js'\nimport {\n Issue,\n IssueInvalidType,\n IssueInvalidValue,\n} from './validation-issue.js'\n\nexport class ValidationError extends Error {\n name = 'ValidationError'\n\n readonly issues: Issue[]\n\n constructor(issues: Issue[], options?: ErrorOptions) {\n const issuesAgg = aggregateIssues(issues)\n super(issuesAgg.join(', '), options)\n this.issues = issuesAgg\n }\n\n static fromFailures(\n failures: ResultFailure<ValidationError>[],\n ): ValidationError {\n if (failures.length === 1) return failures[0].error\n const issues = failures.flatMap(extractFailureIssues)\n return new ValidationError(issues, {\n // Keep the original errors as the cause chain\n cause: failures.map(failureError),\n })\n }\n}\n\nfunction extractFailureIssues(result: ResultFailure<ValidationError>) {\n return result.error.issues\n}\n\nfunction aggregateIssues(issues: Issue[]): Issue[] {\n // Quick path for common cases\n if (issues.length <= 1) return issues\n if (issues.length === 2 && issues[0].code !== issues[1].code) return issues\n\n return [\n // Aggregate invalid_type with identical paths\n ...arrayAgg(\n issues.filter((issue) => issue instanceof IssueInvalidType),\n (a, b) => comparePropertyPaths(a.path, b.path),\n (issues) =>\n new IssueInvalidType(\n issues[0].path,\n issues[0].input,\n Array.from(new Set(issues.flatMap((iss) => iss.expected))),\n ),\n ),\n // Aggregate invalid_value with identical paths\n ...arrayAgg(\n issues.filter((issue) => issue instanceof IssueInvalidValue),\n (a, b) => comparePropertyPaths(a.path, b.path),\n (issues) =>\n new IssueInvalidValue(\n issues[0].path,\n issues[0].input,\n Array.from(new Set(issues.flatMap((iss) => iss.values))),\n ),\n ),\n // Pass through other issues\n ...issues.filter(\n (issue) =>\n !(issue instanceof IssueInvalidType) &&\n !(issue instanceof IssueInvalidValue),\n ),\n ]\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nfunction comparePropertyPaths(\n a: readonly PropertyKey[],\n b: readonly PropertyKey[],\n) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n return true\n}\n"]}
|
|
@@ -1,45 +1,53 @@
|
|
|
1
1
|
import { PropertyKey } from './property-key.js';
|
|
2
|
-
export
|
|
3
|
-
readonly input: I;
|
|
2
|
+
export declare abstract class Issue {
|
|
4
3
|
readonly code: string;
|
|
5
|
-
readonly message?: string;
|
|
6
4
|
readonly path: readonly PropertyKey[];
|
|
5
|
+
readonly input: unknown;
|
|
6
|
+
constructor(code: string, path: readonly PropertyKey[], input: unknown);
|
|
7
|
+
abstract toString(): string;
|
|
7
8
|
}
|
|
8
|
-
export
|
|
9
|
-
readonly
|
|
9
|
+
export declare class IssueCustom extends Issue {
|
|
10
|
+
readonly path: readonly PropertyKey[];
|
|
11
|
+
readonly input: unknown;
|
|
10
12
|
readonly message: string;
|
|
13
|
+
constructor(path: readonly PropertyKey[], input: unknown, message: string);
|
|
14
|
+
toString(): string;
|
|
11
15
|
}
|
|
12
|
-
export
|
|
13
|
-
readonly code: 'invalid_format';
|
|
16
|
+
export declare class IssueInvalidFormat extends Issue {
|
|
14
17
|
readonly format: string;
|
|
18
|
+
readonly message?: string | undefined;
|
|
19
|
+
constructor(path: readonly PropertyKey[], input: unknown, format: string, message?: string | undefined);
|
|
20
|
+
toString(): string;
|
|
21
|
+
get formatDescription(): string;
|
|
15
22
|
}
|
|
16
|
-
export
|
|
17
|
-
readonly code: 'invalid_type';
|
|
23
|
+
export declare class IssueInvalidType extends Issue {
|
|
18
24
|
readonly expected: readonly string[];
|
|
25
|
+
constructor(path: readonly PropertyKey[], input: unknown, expected: readonly string[]);
|
|
26
|
+
toString(): string;
|
|
19
27
|
}
|
|
20
|
-
export
|
|
21
|
-
readonly code: 'invalid_value';
|
|
28
|
+
export declare class IssueInvalidValue extends Issue {
|
|
22
29
|
readonly values: readonly unknown[];
|
|
30
|
+
constructor(path: readonly PropertyKey[], input: unknown, values: readonly unknown[]);
|
|
31
|
+
toString(): string;
|
|
23
32
|
}
|
|
24
|
-
export
|
|
25
|
-
readonly code: 'required_key';
|
|
33
|
+
export declare class IssueRequiredKey extends Issue {
|
|
26
34
|
readonly key: PropertyKey;
|
|
35
|
+
constructor(path: readonly PropertyKey[], input: unknown, key: PropertyKey);
|
|
36
|
+
toString(): string;
|
|
27
37
|
}
|
|
28
|
-
export
|
|
29
|
-
|
|
38
|
+
export type MeasurableType = 'array' | 'string' | 'integer' | 'grapheme' | 'bytes' | 'blob';
|
|
39
|
+
export declare class IssueTooBig extends Issue {
|
|
30
40
|
readonly maximum: number;
|
|
31
|
-
readonly type:
|
|
41
|
+
readonly type: MeasurableType;
|
|
32
42
|
readonly actual: number;
|
|
43
|
+
constructor(path: readonly PropertyKey[], input: unknown, maximum: number, type: MeasurableType, actual: number);
|
|
44
|
+
toString(): string;
|
|
33
45
|
}
|
|
34
|
-
export
|
|
35
|
-
readonly code: 'too_small';
|
|
46
|
+
export declare class IssueTooSmall extends Issue {
|
|
36
47
|
readonly minimum: number;
|
|
37
|
-
readonly type:
|
|
48
|
+
readonly type: MeasurableType;
|
|
38
49
|
readonly actual: number;
|
|
50
|
+
constructor(path: readonly PropertyKey[], input: unknown, minimum: number, type: MeasurableType, actual: number);
|
|
51
|
+
toString(): string;
|
|
39
52
|
}
|
|
40
|
-
export type ValidationIssue = IssueCustom | IssueInvalidFormat | IssueInvalidType | IssueInvalidValue | IssueRequiredKey | IssueTooBig | IssueTooSmall;
|
|
41
|
-
export declare function stringifyIssue(issue: ValidationIssue): string;
|
|
42
|
-
export declare function stringifyType(value: unknown): string;
|
|
43
|
-
export declare function stringifyValue(value: unknown): string;
|
|
44
|
-
export declare function aggregateIssues(issues: ValidationIssue[]): ValidationIssue[];
|
|
45
53
|
//# sourceMappingURL=validation-issue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-issue.d.ts","sourceRoot":"","sources":["../../src/validation/validation-issue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation-issue.d.ts","sourceRoot":"","sources":["../../src/validation/validation-issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,8BAAsB,KAAK;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO;gBAFd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO;IAGzB,QAAQ,CAAC,QAAQ,IAAI,MAAM;CAC5B;AAED,qBAAa,WAAY,SAAQ,KAAK;IAElC,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAFf,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM;IAK1B,QAAQ;CAGT;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAIzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM;gBAHzB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,YAAA;IAK3B,QAAQ;IAIR,IAAI,iBAAiB,IAAI,MAAM,CAiB9B;CACF;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAIvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;gBAFpC,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,QAAQ,EAAE,SAAS,MAAM,EAAE;IAKtC,QAAQ;CAGT;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAIxC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE;gBAFnC,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,MAAM,EAAE,SAAS,OAAO,EAAE;IAKrC,QAAQ;CAGT;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAIvC,QAAQ,CAAC,GAAG,EAAE,WAAW;gBAFzB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,GAAG,EAAE,WAAW;IAK3B,QAAQ;CAGT;AAED,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,QAAQ,GACR,SAAS,GACT,UAAU,GACV,OAAO,GACP,MAAM,CAAA;AAEV,qBAAa,WAAY,SAAQ,KAAK;IAIlC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,IAAI,EAAE,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAJvB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM;IAKzB,QAAQ;CAGT;AAED,qBAAa,aAAc,SAAQ,KAAK;IAIpC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,IAAI,EAAE,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAJvB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,KAAK,EAAE,OAAO,EACL,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM;IAKzB,QAAQ;CAGT"}
|