justus 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/dist/dts-generator.cjs +36 -22
- package/dist/dts-generator.cjs.map +1 -1
- package/dist/dts-generator.d.ts +1 -1
- package/dist/dts-generator.mjs +15 -22
- package/dist/dts-generator.mjs.map +1 -1
- package/dist/errors.cjs +3 -3
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.mjs +3 -3
- package/dist/errors.mjs.map +1 -1
- package/dist/extra/arn.cjs +98 -0
- package/dist/extra/arn.cjs.map +6 -0
- package/dist/extra/arn.d.ts +71 -0
- package/dist/extra/arn.mjs +68 -0
- package/dist/extra/arn.mjs.map +6 -0
- package/dist/extra/ean13.cjs +52 -0
- package/dist/extra/ean13.cjs.map +6 -0
- package/dist/extra/ean13.d.ts +9 -0
- package/dist/extra/ean13.mjs +26 -0
- package/dist/extra/ean13.mjs.map +6 -0
- package/dist/{validators → extra}/url.cjs +10 -10
- package/dist/extra/url.cjs.map +6 -0
- package/dist/{validators → extra}/url.d.ts +4 -5
- package/dist/{validators → extra}/url.mjs +8 -9
- package/dist/{validators → extra}/url.mjs.map +3 -3
- package/dist/extra/uuid.cjs +45 -0
- package/dist/extra/uuid.cjs.map +6 -0
- package/dist/extra/uuid.d.ts +10 -0
- package/dist/extra/uuid.mjs +18 -0
- package/dist/extra/uuid.mjs.map +6 -0
- package/dist/index.cjs +0 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +18 -19
- package/dist/index.mjs +12 -15
- package/dist/index.mjs.map +1 -1
- package/dist/registry.cjs +44 -0
- package/dist/registry.cjs.map +6 -0
- package/dist/registry.d.ts +16 -0
- package/dist/registry.mjs +19 -0
- package/dist/registry.mjs.map +6 -0
- package/dist/schema.cjs +3 -5
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.ts +6 -5
- package/dist/schema.mjs +3 -4
- package/dist/schema.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +38 -12
- package/dist/types.mjs.map +1 -1
- package/dist/utilities.cjs +5 -7
- package/dist/utilities.cjs.map +1 -1
- package/dist/utilities.mjs +5 -7
- package/dist/utilities.mjs.map +1 -1
- package/dist/validators/array.cjs +4 -2
- package/dist/validators/array.cjs.map +1 -1
- package/dist/validators/array.d.ts +3 -4
- package/dist/validators/array.mjs +3 -2
- package/dist/validators/array.mjs.map +1 -1
- package/dist/validators/boolean.cjs +6 -4
- package/dist/validators/boolean.cjs.map +1 -1
- package/dist/validators/boolean.d.ts +2 -3
- package/dist/validators/boolean.mjs +4 -3
- package/dist/validators/boolean.mjs.map +1 -1
- package/dist/validators/constant.cjs +4 -5
- package/dist/validators/constant.cjs.map +1 -1
- package/dist/validators/constant.d.ts +0 -2
- package/dist/validators/constant.mjs +3 -3
- package/dist/validators/constant.mjs.map +1 -1
- package/dist/validators/date.cjs +8 -10
- package/dist/validators/date.cjs.map +1 -1
- package/dist/validators/date.d.ts +3 -4
- package/dist/validators/date.mjs +6 -9
- package/dist/validators/date.mjs.map +1 -1
- package/dist/validators/number.cjs +6 -4
- package/dist/validators/number.cjs.map +1 -1
- package/dist/validators/number.d.ts +5 -6
- package/dist/validators/number.mjs +4 -3
- package/dist/validators/number.mjs.map +1 -1
- package/dist/validators/object.cjs +7 -4
- package/dist/validators/object.cjs.map +1 -1
- package/dist/validators/object.d.ts +6 -7
- package/dist/validators/object.mjs +7 -9
- package/dist/validators/object.mjs.map +1 -1
- package/dist/validators/optional.cjs.map +1 -1
- package/dist/validators/optional.d.ts +5 -4
- package/dist/validators/optional.mjs.map +1 -1
- package/dist/validators/string.cjs +6 -4
- package/dist/validators/string.cjs.map +1 -1
- package/dist/validators/string.d.ts +5 -6
- package/dist/validators/string.mjs +4 -3
- package/dist/validators/string.mjs.map +1 -1
- package/dist/validators/tuple.cjs +3 -2
- package/dist/validators/tuple.cjs.map +1 -1
- package/dist/validators/tuple.d.ts +3 -3
- package/dist/validators/tuple.mjs +3 -2
- package/dist/validators/tuple.mjs.map +1 -1
- package/dist/validators/union.cjs.map +1 -1
- package/dist/validators/union.d.ts +9 -7
- package/dist/validators/union.mjs.map +1 -1
- package/package.json +46 -6
- package/src/dts-generator.ts +17 -27
- package/src/extra/arn.ts +151 -0
- package/src/extra/ean13.ts +31 -0
- package/src/{validators → extra}/url.ts +6 -8
- package/src/extra/uuid.ts +18 -0
- package/src/index.ts +18 -19
- package/src/registry.ts +28 -0
- package/src/schema.ts +10 -11
- package/src/types.ts +80 -11
- package/src/utilities.ts +5 -9
- package/src/validators/array.ts +3 -3
- package/src/validators/boolean.ts +2 -2
- package/src/validators/constant.ts +3 -2
- package/src/validators/date.ts +9 -9
- package/src/validators/number.ts +6 -7
- package/src/validators/object.ts +15 -14
- package/src/validators/optional.ts +9 -7
- package/src/validators/string.ts +6 -6
- package/src/validators/tuple.ts +20 -6
- package/src/validators/union.ts +35 -10
- package/dist/validators/url.cjs.map +0 -6
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ used to ensure that an object is _**correct**_ and from which _**proper**_
|
|
|
15
15
|
typing can be inferred.
|
|
16
16
|
|
|
17
17
|
* [Quick Start](#quick-start)
|
|
18
|
+
* [Inferring Types](#inferring-types)
|
|
18
19
|
* Validators
|
|
19
20
|
* [Strings](#string-validator)
|
|
20
21
|
* [Numbers](#number-validator)
|
|
@@ -27,6 +28,7 @@ typing can be inferred.
|
|
|
27
28
|
* [Objects](#object-validator) (yes, this is the important one!!!)
|
|
28
29
|
* [Optionals](#optional-validator)
|
|
29
30
|
* [Any of, all of](#union-validators)
|
|
31
|
+
* [Extra Validators](#extra-validators)
|
|
30
32
|
* [Validation Options](#validation-options)
|
|
31
33
|
* [A (slightly more) complex example](#a-complex-example)
|
|
32
34
|
* [Generating DTS files](#generating-dts-files)
|
|
@@ -85,6 +87,62 @@ const validated = validate({
|
|
|
85
87
|
... you get the drill! See below in each _validator_ for their shorthand syntax.
|
|
86
88
|
|
|
87
89
|
|
|
90
|
+
Inferring Types
|
|
91
|
+
---------------
|
|
92
|
+
|
|
93
|
+
It is sometimes useful to have access to the inferred types produced by the
|
|
94
|
+
validation function. The `InferValidation` type does just that:
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
const myTypeValidator = object({
|
|
98
|
+
/* a required string, with minimum length of 1 character */
|
|
99
|
+
foo: string({ minLength: 1 }),
|
|
100
|
+
/* an optional number, defaulted to 12345 */
|
|
101
|
+
bar: optional(number, 12345),
|
|
102
|
+
/* an optional date, without default */
|
|
103
|
+
baz: optional(date),
|
|
104
|
+
} as const)
|
|
105
|
+
|
|
106
|
+
type MyValidatedType = InferValidation<typeof myTypeValidator>
|
|
107
|
+
// here "MyValidatedType" will have the following shape:
|
|
108
|
+
// {
|
|
109
|
+
// foo: string, // plain "string"
|
|
110
|
+
// bar: number, // optional _with_ a default
|
|
111
|
+
// baz?: Date | undefined , // optional _without_ a default
|
|
112
|
+
// }
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Similarly, it might be useful to have access to a minimal type required as a
|
|
116
|
+
validation input. This obviously differs from the input for several reasons,
|
|
117
|
+
like:
|
|
118
|
+
|
|
119
|
+
* optionals with default: on input we should represent `optional(type, default)`
|
|
120
|
+
as `type`, but on input this should be `type | undefined`
|
|
121
|
+
* type conversions: the `date` validator converts numbers or strings always
|
|
122
|
+
into `Date` objects, but the input type should be `Date | string | number`
|
|
123
|
+
|
|
124
|
+
The `InferInput` helps in this case:
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
const myTypeValidator = object({
|
|
128
|
+
/* a required string, with minimum length of 1 character */
|
|
129
|
+
foo: string({ minLength: 1 }),
|
|
130
|
+
/* an optional number, defaulted to 12345 */
|
|
131
|
+
bar: optional(number, 12345),
|
|
132
|
+
/* an optional date, without default */
|
|
133
|
+
baz: optional(date),
|
|
134
|
+
} as const)
|
|
135
|
+
|
|
136
|
+
type MyInputType = InferInput<typeof myTypeValidator>
|
|
137
|
+
// here "MyInputType" will have the following shape:
|
|
138
|
+
// {
|
|
139
|
+
// foo: string, // plain string
|
|
140
|
+
// bar?: number | undefined, // optional, as it has a default
|
|
141
|
+
// baz?: Date | string | number | undefined, // optional, also parsed from string, number
|
|
142
|
+
// }
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
|
|
88
146
|
String Validator
|
|
89
147
|
----------------
|
|
90
148
|
|
|
@@ -680,6 +738,26 @@ result // <-- its type will be "number | string"
|
|
|
680
738
|
```
|
|
681
739
|
|
|
682
740
|
|
|
741
|
+
Extra Validators
|
|
742
|
+
----------------
|
|
743
|
+
|
|
744
|
+
A number of _extra_ validators are also included, but not exported by default
|
|
745
|
+
in order to reduce the bundle size when Justus is bundled in client apps.
|
|
746
|
+
|
|
747
|
+
Those are:
|
|
748
|
+
|
|
749
|
+
* `arn`: Validate an ARN (Amazon Resource Name) as a string
|
|
750
|
+
* `import { arn } from 'justus/extra/arn'`
|
|
751
|
+
* `parseArn`: Validate an ARN (Amazon Resource Name) and parse its components
|
|
752
|
+
* `import { parseArn } from 'justus/extra/arn'`
|
|
753
|
+
* `ean13`: Validate a standard _EAN-13_ barcode number (as a string)
|
|
754
|
+
* `import { ean13 } from 'justus/extra/ean13'`
|
|
755
|
+
* `url`: Validate a string URL and converts it into a proper `URL` object
|
|
756
|
+
* `import { url } from 'justus/extra/url'`
|
|
757
|
+
* `uuid`: Validate a string UUID plain and simple
|
|
758
|
+
* `import { uuid } from 'justus/extra/uuid'`
|
|
759
|
+
|
|
760
|
+
|
|
683
761
|
Validation Options
|
|
684
762
|
------------------
|
|
685
763
|
|
package/dist/dts-generator.cjs
CHANGED
|
@@ -35,7 +35,21 @@ __export(dts_generator_exports, {
|
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(dts_generator_exports);
|
|
37
37
|
var import_typescript = __toESM(require("typescript"));
|
|
38
|
-
var
|
|
38
|
+
var import_errors = require("./errors.cjs");
|
|
39
|
+
var import_url = require("./extra/url.cjs");
|
|
40
|
+
var import_utilities = require("./utilities.cjs");
|
|
41
|
+
var import_any = require("./validators/any.cjs");
|
|
42
|
+
var import_array = require("./validators/array.cjs");
|
|
43
|
+
var import_boolean = require("./validators/boolean.cjs");
|
|
44
|
+
var import_constant = require("./validators/constant.cjs");
|
|
45
|
+
var import_date = require("./validators/date.cjs");
|
|
46
|
+
var import_never = require("./validators/never.cjs");
|
|
47
|
+
var import_number = require("./validators/number.cjs");
|
|
48
|
+
var import_object = require("./validators/object.cjs");
|
|
49
|
+
var import_optional = require("./validators/optional.cjs");
|
|
50
|
+
var import_string = require("./validators/string.cjs");
|
|
51
|
+
var import_tuple = require("./validators/tuple.cjs");
|
|
52
|
+
var import_union = require("./validators/union.cjs");
|
|
39
53
|
var generators = /* @__PURE__ */ new Map();
|
|
40
54
|
function registerTypeGenerator(validator, generator) {
|
|
41
55
|
generators.set(validator, generator);
|
|
@@ -44,7 +58,7 @@ function generateTypes(validations) {
|
|
|
44
58
|
const validators = /* @__PURE__ */ new Map();
|
|
45
59
|
const references = /* @__PURE__ */ new Map();
|
|
46
60
|
Object.entries(validations).forEach(([name, validation]) => {
|
|
47
|
-
const validator = (0,
|
|
61
|
+
const validator = (0, import_utilities.getValidator)(validation);
|
|
48
62
|
if (!references.has(validator))
|
|
49
63
|
references.set(validator, name);
|
|
50
64
|
validators.set(name, validator);
|
|
@@ -71,7 +85,7 @@ function generateTypeNode(validator, references) {
|
|
|
71
85
|
if (reference)
|
|
72
86
|
return import_typescript.default.factory.createTypeReferenceNode(reference);
|
|
73
87
|
const generator = generators.get(validator) || generators.get(validator.constructor);
|
|
74
|
-
(0,
|
|
88
|
+
(0, import_errors.assertSchema)(!!generator, `Type generator for "${validator.constructor.name}" not found`);
|
|
75
89
|
const type = generator(validator, references);
|
|
76
90
|
if (!validator.optional)
|
|
77
91
|
return type;
|
|
@@ -102,42 +116,42 @@ var recordType = import_typescript.default.factory.createMappedTypeNode(
|
|
|
102
116
|
void 0
|
|
103
117
|
);
|
|
104
118
|
var optionalKeyword = import_typescript.default.factory.createToken(import_typescript.default.SyntaxKind.QuestionToken);
|
|
105
|
-
registerTypeGenerator(
|
|
106
|
-
registerTypeGenerator(
|
|
107
|
-
registerTypeGenerator(
|
|
108
|
-
registerTypeGenerator(
|
|
109
|
-
registerTypeGenerator(
|
|
110
|
-
registerTypeGenerator(
|
|
111
|
-
registerTypeGenerator(
|
|
112
|
-
registerTypeGenerator(
|
|
113
|
-
registerTypeGenerator(
|
|
114
|
-
registerTypeGenerator(
|
|
119
|
+
registerTypeGenerator(import_any.AnyValidator, () => anyType);
|
|
120
|
+
registerTypeGenerator(import_array.AnyArrayValidator, () => anyArrayType);
|
|
121
|
+
registerTypeGenerator(import_number.AnyNumberValidator, () => numberType);
|
|
122
|
+
registerTypeGenerator(import_object.AnyObjectValidator, () => recordType);
|
|
123
|
+
registerTypeGenerator(import_string.AnyStringValidator, () => stringType);
|
|
124
|
+
registerTypeGenerator(import_boolean.BooleanValidator, () => booleanType);
|
|
125
|
+
registerTypeGenerator(import_never.NeverValidator, () => neverType);
|
|
126
|
+
registerTypeGenerator(import_date.DateValidator, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
|
|
127
|
+
registerTypeGenerator(import_url.URLValidator, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
|
|
128
|
+
registerTypeGenerator(import_array.ArrayValidator, (validator, references) => {
|
|
115
129
|
const itemType = generateTypeNode(validator.items, references);
|
|
116
130
|
return import_typescript.default.factory.createArrayTypeNode(itemType);
|
|
117
131
|
});
|
|
118
|
-
registerTypeGenerator(
|
|
132
|
+
registerTypeGenerator(import_constant.ConstantValidator, (validator) => {
|
|
119
133
|
const literal = typeof validator.constant === "number" ? import_typescript.default.factory.createNumericLiteral(validator.constant) : typeof validator.constant === "string" ? import_typescript.default.factory.createStringLiteral(validator.constant) : validator.constant === false ? import_typescript.default.factory.createFalse() : validator.constant === true ? import_typescript.default.factory.createTrue() : validator.constant === null ? import_typescript.default.factory.createNull() : void 0;
|
|
120
|
-
(0,
|
|
134
|
+
(0, import_errors.assertSchema)(!!literal, `Invalid constant "${validator.constant}"`);
|
|
121
135
|
return import_typescript.default.factory.createLiteralTypeNode(literal);
|
|
122
136
|
});
|
|
123
|
-
registerTypeGenerator(
|
|
137
|
+
registerTypeGenerator(import_number.NumberValidator, (validator) => {
|
|
124
138
|
if (!validator.brand)
|
|
125
139
|
return numberType;
|
|
126
140
|
const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
127
141
|
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
128
142
|
return import_typescript.default.factory.createIntersectionTypeNode([numberType, literal]);
|
|
129
143
|
});
|
|
130
|
-
registerTypeGenerator(
|
|
144
|
+
registerTypeGenerator(import_optional.OptionalValidator, (validator, references) => {
|
|
131
145
|
return generateTypeNode(validator.validator, references);
|
|
132
146
|
});
|
|
133
|
-
registerTypeGenerator(
|
|
147
|
+
registerTypeGenerator(import_string.StringValidator, (validator) => {
|
|
134
148
|
if (!validator.brand)
|
|
135
149
|
return stringType;
|
|
136
150
|
const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
137
151
|
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
138
152
|
return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
|
|
139
153
|
});
|
|
140
|
-
registerTypeGenerator(
|
|
154
|
+
registerTypeGenerator(import_tuple.TupleValidator, (validator, references) => {
|
|
141
155
|
const members = validator.members;
|
|
142
156
|
const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
|
|
143
157
|
if (!single) {
|
|
@@ -166,15 +180,15 @@ registerTypeGenerator(import_index.TupleValidator, (validator, references) => {
|
|
|
166
180
|
const rest = import_typescript.default.factory.createRestTypeNode(array);
|
|
167
181
|
return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
168
182
|
});
|
|
169
|
-
registerTypeGenerator(
|
|
183
|
+
registerTypeGenerator(import_union.AllOfValidator, (validator, references) => {
|
|
170
184
|
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
171
185
|
return import_typescript.default.factory.createIntersectionTypeNode(members);
|
|
172
186
|
});
|
|
173
|
-
registerTypeGenerator(
|
|
187
|
+
registerTypeGenerator(import_union.OneOfValidator, (validator, references) => {
|
|
174
188
|
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
175
189
|
return import_typescript.default.factory.createUnionTypeNode(members);
|
|
176
190
|
});
|
|
177
|
-
registerTypeGenerator(
|
|
191
|
+
registerTypeGenerator(import_object.ObjectValidator, (validator, references) => {
|
|
178
192
|
const properties = [];
|
|
179
193
|
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
180
194
|
const type = generateTypeNode(valueValidator, references);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dts-generator.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AAEf,oBAA6B;AAC7B,iBAA6B;AAC7B,uBAA6B;AAC7B,iBAA6B;AAC7B,mBAAkD;AAClD,qBAAiC;AACjC,sBAAkC;AAClC,kBAA8B;AAC9B,mBAA+B;AAC/B,oBAAoD;AACpD,oBAAoD;AACpD,sBAAkC;AAClC,oBAAoD;AACpD,mBAA+B;AAC/B,mBAA+C;AAwB/C,IAAM,aAAa,oBAAI,IAA8C;AAG9D,SAAS,sBACZ,WACA,WACI;AACN,aAAW,IAAI,WAAW,SAAS;AACrC;AAGO,SAAS,cAAc,aAAiD;AAK7E,QAAM,aAAa,oBAAI,IAAuB;AAC9C,QAAM,aAAa,oBAAI,IAAuB;AAE9C,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAE,MAAM,UAAW,MAAM;AAC5D,UAAM,gBAAY,+BAAa,UAAU;AAEzC,QAAI,CAAE,WAAW,IAAI,SAAS;AAAG,iBAAW,IAAI,WAAW,IAAI;AAC/D,eAAW,IAAI,MAAM,SAAS;AAAA,EAChC,CAAC;AAGD,QAAM,QAAmC,CAAC;AAC1C,aAAW,CAAE,MAAM,SAAU,KAAK,WAAW,QAAQ,GAAG;AAGtD,UAAM,gBAAgB,IAAI,IAAI,UAAU;AACxC,QAAI,cAAc,IAAI,SAAS,MAAM,MAAM;AACzC,oBAAc,OAAO,SAAS;AAAA,IAChC;AAGA,UAAM,OAAO,iBAAiB,WAAW,aAAa;AAGtD,UAAM,YAAY,CAAE,kBAAAA,QAAG,QAAQ,eAAe,kBAAAA,QAAG,WAAW,aAAa,CAAE;AAC3E,UAAM,OAAO,kBAAAA,QAAG,QAAQ,2BAA2B,WAAW,MAAM,CAAC,GAAG,IAAI;AAC5E,UAAM,KAAK,IAAI;AAAA,EACjB;AAGA,SAAO,kBAAAA,QAAG,cAAc,EAAE;AAAA,IACtB,kBAAAA,QAAG,WAAW;AAAA,IACd,kBAAAA,QAAG,QAAQ,gBAAgB,KAAK;AAAA,IAChC,kBAAAA,QAAG,iBAAiB,cAAc,IAAI,kBAAAA,QAAG,aAAa,MAAM;AAAA,EAAC;AACnE;AAOA,SAAS,iBACL,WACA,YACW;AACb,QAAM,YAAY,WAAW,IAAI,SAAS;AAC1C,MAAI;AAAW,WAAO,kBAAAA,QAAG,QAAQ,wBAAwB,SAAS;AAElE,QAAM,YAAY,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,WAAW;AACnF,kCAAa,CAAC,CAAE,WAAW,uBAAuB,UAAU,YAAY,IAAI,aAAa;AACzF,QAAM,OAAO,UAAU,WAAW,UAAU;AAG5C,MAAI,CAAE,UAAU;AAAU,WAAO;AAGjC,MAAI,SAAS;AAAW,WAAO;AAG/B,MAAI,kBAAAA,QAAG,gBAAgB,IAAI,GAAG;AAC5B,WAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,GAAG,KAAK,OAAO,aAAc,CAAC;AAAA,EACxE;AAGA,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,MAAM,aAAc,CAAC;AAC/D;AAMA,IAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,UAAU;AACzE,IAAM,eAAe,kBAAAA,QAAG,QAAQ,oBAAoB,OAAO;AAC3D,IAAM,cAAc,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,cAAc;AACjF,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,YAAY,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,YAAY;AAC7E,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,gBAAgB,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,gBAAgB;AACrF,IAAM,aAAa,kBAAAA,QAAG,QAAQ;AAAA,EAC1B;AAAA;AAAA,EACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,EAC/D;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAS;AAGb,IAAM,kBAAkB,kBAAAA,QAAG,QAAQ,YAAY,kBAAAA,QAAG,WAAW,aAAa;AAM1E,sBAAsB,yBAAc,MAAM,OAAO;AACjD,sBAAsB,gCAAmB,MAAM,YAAY;AAC3D,sBAAsB,kCAAoB,MAAM,UAAU;AAC1D,sBAAsB,kCAAoB,MAAM,UAAU;AAC1D,sBAAsB,kCAAoB,MAAM,UAAU;AAC1D,sBAAsB,iCAAkB,MAAM,WAAW;AACzD,sBAAsB,6BAAgB,MAAM,SAAS;AACrD,sBAAsB,2BAAe,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,MAAM,CAAC;AACrF,sBAAsB,yBAAc,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,KAAK,CAAC;AAMnF,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,WAAW,iBAAiB,UAAU,OAAO,UAAU;AAC7D,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,QAAQ;AAChD,CAAC;AAED,sBAAsB,mCAAmB,CAAC,cAAc;AACtD,QAAM,UACJ,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,qBAAqB,UAAU,QAAQ,IAC3F,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,oBAAoB,UAAU,QAAQ,IAC1F,UAAU,aAAa,QAAQ,kBAAAA,QAAG,QAAQ,YAAY,IACtD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD;AAEF,kCAAa,CAAC,CAAE,SAAS,qBAAqB,UAAU,QAAQ,GAAG;AACnE,SAAO,kBAAAA,QAAG,QAAQ,sBAAsB,OAAO;AACjD,CAAC;AAED,sBAAsB,+BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,KAAK,IAAI,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,mCAAmB,CAAC,WAA8B,eAAe;AAGrF,SAAO,iBAAiB,UAAU,WAAW,UAAU;AACzD,CAAC;AAED,sBAAsB,+BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,KAAK,IAAI,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAgC,eAAe;AACpF,QAAM,UAAU,UAAU;AAG1B,QAAM,EAAE,OAAO,OAAO,KAAK,IACvB,QAAQ,OAAO,CAAC,EAAE,OAAAC,QAAO,OAAAC,QAAO,MAAAC,MAAK,GAAG,EAAE,OAAO,GAAG,MAAM;AACxD,QAAI,CAAE,QAAQ;AACZ,UAAI,IAAID;AAAO,QAAAA,SAAQ;AACvB,MAAAC,QAAO,IAAI;AACX,MAAAF,UAAS;AAAA,IACX;AACA,WAAO,EAAE,OAAAA,QAAO,OAAAC,QAAO,MAAAC,MAAK;AAAA,EAC9B,GAAG,EAAE,OAAO,GAAG,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAGpD,MAAI,QAAQ,GAAG;AACb,UAAMC,SAAQ,QAAQ,IAAI,CAAC,EAAE,QAAQ,WAAAC,WAAU,MAAM;AACnD,YAAM,aAAa,iBAAiBA,YAAW,UAAU;AAEzD,UAAI;AAAQ,eAAO,iBAAiBA,YAAW,UAAU;AAEzD,YAAM,YAAY,kBAAAL,QAAG,QAAQ,oBAAoB,UAAU;AAC3D,aAAO,kBAAAA,QAAG,QAAQ,mBAAmB,SAAS;AAAA,IAChD,CAAC;AAED,WAAO,kBAAAA,QAAG,QAAQ,oBAAoBI,MAAK;AAAA,EAC7C;AAIA,QAAM,SAAS,QAAQ,MAAM,GAAG,KAAK,EAChC,IAAI,CAAC,EAAE,WAAAC,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI,EAClC,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,IAAI,EAC3B,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AAEnE,QAAM,QAAQ,kBAAAL,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,QAAQ,kBAAAA,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,OAAO,kBAAAA,QAAG,QAAQ,mBAAmB,KAAK;AAEhD,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,GAAG,QAAQ,MAAM,GAAG,KAAM,CAAC;AACrE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,2BAA2B,OAAO;AACtD,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,oBAAoB,OAAO;AAC/C,CAAC;AAED,sBAAsB,+BAAiB,CAAC,WAAW,eAAe;AAChE,QAAM,aAAqC,CAAC;AAE5C,aAAW,CAAE,KAAK,cAAe,KAAK,UAAU,WAAW,QAAQ,GAAG;AACpE,UAAM,OAAO,iBAAiB,gBAAgB,UAAU;AACxD,UAAM,WAAW,eAAe;AAEhC,UAAM,YAAY,kBAAAA,QAAG,QAAQ;AAAA,MACzB;AAAA,MACA;AAAA,MACA,WAAW,kBAAkB;AAAA,MAC7B;AAAA,IAAI;AAER,eAAW,KAAK,SAAS;AAAA,EAC3B;AAEA,MAAI,UAAU,sBAAsB;AAClC,UAAM,eAAe,iBAAiB,UAAU,sBAAsB,UAAU;AAEhF,UAAM,QAAQ,kBAAAA,QAAG,QAAQ;AAAA,MACrB;AAAA;AAAA,MACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,MAC/D;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA,IAAS;AAEb,QAAI,WAAW,UAAU;AAAG,aAAO;AAEnC,UAAM,OAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AACxD,WAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,MAAM,KAAM,CAAC;AAAA,EAC9D,OAAO;AACL,WAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AAAA,EACpD;AACF,CAAC;",
|
|
5
5
|
"names": ["ts", "count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/dts-generator.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import type { Validation, Validator } from './
|
|
2
|
+
import type { Validation, Validator } from './types';
|
|
3
3
|
/** A function taking a `Validator` and producing its `TypeNode`. */
|
|
4
4
|
type TypeGenerator<V extends Validator = Validator> = (validator: V, references: ReadonlyMap<Validator, string>) => ts.TypeNode;
|
|
5
5
|
/** The generic constructor of a `Validator` instance. */
|
package/dist/dts-generator.mjs
CHANGED
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
// dts-generator.ts
|
|
2
2
|
import ts from "typescript";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ObjectValidator,
|
|
19
|
-
OneOfValidator,
|
|
20
|
-
OptionalValidator,
|
|
21
|
-
StringValidator,
|
|
22
|
-
TupleValidator,
|
|
23
|
-
URLValidator
|
|
24
|
-
} from "./index.mjs";
|
|
3
|
+
import { assertSchema } from "./errors.mjs";
|
|
4
|
+
import { URLValidator } from "./extra/url.mjs";
|
|
5
|
+
import { getValidator } from "./utilities.mjs";
|
|
6
|
+
import { AnyValidator } from "./validators/any.mjs";
|
|
7
|
+
import { AnyArrayValidator, ArrayValidator } from "./validators/array.mjs";
|
|
8
|
+
import { BooleanValidator } from "./validators/boolean.mjs";
|
|
9
|
+
import { ConstantValidator } from "./validators/constant.mjs";
|
|
10
|
+
import { DateValidator } from "./validators/date.mjs";
|
|
11
|
+
import { NeverValidator } from "./validators/never.mjs";
|
|
12
|
+
import { AnyNumberValidator, NumberValidator } from "./validators/number.mjs";
|
|
13
|
+
import { AnyObjectValidator, ObjectValidator } from "./validators/object.mjs";
|
|
14
|
+
import { OptionalValidator } from "./validators/optional.mjs";
|
|
15
|
+
import { AnyStringValidator, StringValidator } from "./validators/string.mjs";
|
|
16
|
+
import { TupleValidator } from "./validators/tuple.mjs";
|
|
17
|
+
import { AllOfValidator, OneOfValidator } from "./validators/union.mjs";
|
|
25
18
|
var generators = /* @__PURE__ */ new Map();
|
|
26
19
|
function registerTypeGenerator(validator, generator) {
|
|
27
20
|
generators.set(validator, generator);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dts-generator.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO,QAAQ;AAEf
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/errors.cjs
CHANGED
|
@@ -33,7 +33,7 @@ function pathToString(path) {
|
|
|
33
33
|
return index === 0 ? key : `${string}.${key}`;
|
|
34
34
|
}, "");
|
|
35
35
|
}
|
|
36
|
-
var ValidationError = class extends Error {
|
|
36
|
+
var ValidationError = class _ValidationError extends Error {
|
|
37
37
|
/** An `Array` of validation errors encountered while validating */
|
|
38
38
|
errors;
|
|
39
39
|
/** Our stack, always present as we enforce it in the constructor */
|
|
@@ -46,12 +46,12 @@ var ValidationError = class extends Error {
|
|
|
46
46
|
constructor = builderOrCause.assert;
|
|
47
47
|
} else {
|
|
48
48
|
const path = Array.isArray(constructorOrPath) ? constructorOrPath : [];
|
|
49
|
-
if (builderOrCause instanceof
|
|
49
|
+
if (builderOrCause instanceof _ValidationError) {
|
|
50
50
|
errors = builderOrCause.errors.map(({ path: subpath, message: message2 }) => ({ path: [...path, ...subpath], message: message2 }));
|
|
51
51
|
} else {
|
|
52
52
|
errors = [{ path, message: `${builderOrCause}` }];
|
|
53
53
|
}
|
|
54
|
-
constructor = typeof maybeConstructor === "function" ? maybeConstructor : typeof constructorOrPath === "function" ? constructorOrPath :
|
|
54
|
+
constructor = typeof maybeConstructor === "function" ? maybeConstructor : typeof constructorOrPath === "function" ? constructorOrPath : _ValidationError;
|
|
55
55
|
}
|
|
56
56
|
const details = errors.map(({ path, message: message2 }) => ({ key: pathToString(path), message: message2 })).map(({ key, message: message2 }) => key ? `${key}: ${message2}` : message2).join("\n ");
|
|
57
57
|
const message = errors.length !== 1 ? `Found ${errors.length} validation errors` : "Found 1 validation error";
|
package/dist/errors.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/errors.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,aAAa,MAAmC;AACvD,SAAO,KAAK,OAAO,CAAC,QAAgB,KAAK,UAAkB;AACzD,QAAI,OAAO,QAAQ;AAAU,aAAO,GAAG,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,aAAa,MAAmC;AACvD,SAAO,KAAK,OAAO,CAAC,QAAgB,KAAK,UAAkB;AACzD,QAAI,OAAO,QAAQ;AAAU,aAAO,GAAG,MAAM,IAAI,GAAG;AACpD,WAAO,UAAU,IAAI,MAAM,GAAG,MAAM,IAAI,GAAG;AAAA,EAC7C,GAAG,EAAE;AACP;AAKO,IAAM,kBAAN,MAAM,yBAAwB,MAAM;AAAA;AAAA,EAEhC;AAAA;AAAA,EAEA;AAAA,EAaT,YACI,gBACA,mBACA,kBACF;AACA,QAAI;AACJ,QAAI;AAEJ,QAAI,0BAA0B,wBAAwB;AACpD,eAAS,eAAe;AACxB,oBAAc,eAAe;AAAA,IAC/B,OAAO;AACL,YAAM,OAAO,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAAC;AAErE,UAAI,0BAA0B,kBAAiB;AAC7C,iBAAS,eAAe,OAAO,IAAI,CAAC,EAAE,MAAM,SAAS,SAAAA,SAAQ,OAC1D,EAAE,MAAM,CAAE,GAAG,MAAM,GAAG,OAAQ,GAAG,SAAAA,SAAQ,EAAE;AAAA,MAChD,OAAO;AACL,iBAAS,CAAE,EAAE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAE;AAAA,MACpD;AAEA,oBACE,OAAO,qBAAqB,aAAa,mBACzC,OAAO,sBAAsB,aAAa,oBAC1C;AAAA,IACJ;AAEA,UAAM,UAAU,OACX,IAAI,CAAC,EAAE,MAAM,SAAAA,SAAQ,OAAO,EAAE,KAAK,aAAa,IAAI,GAAG,SAAAA,SAAQ,EAAE,EACjE,IAAI,CAAC,EAAE,KAAK,SAAAA,SAAQ,MAAM,MAAM,GAAG,GAAG,KAAKA,QAAO,KAAKA,QAAO,EAC9D,KAAK,MAAM;AAEhB,UAAM,UAAU,OAAO,WAAW,IAChC,SAAS,OAAO,MAAM,uBACtB;AAEF,UAAM,GAAG,OAAO;AAAA,IAAO,OAAO,EAAE;AAE/B,IAAC,MAAc,oBAAoB,MAAM,WAAW;AACrD,WAAO,eAAe,MAAM,UAAU,EAAE,OAAO,OAAO,CAAC;AAAA,EACzD;AACF;AAEA,gBAAgB,UAAU,OAAO;AAK1B,IAAM,yBAAN,MAA6B;AAAA;AAAA,EAEzB,SAA2B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUrC,OAAO,UAAe,KAAgC;AACpD,UAAM,OAAO,CAAE,GAAG,GAAI;AACtB,QAAI,iBAAiB,iBAAiB;AACpC,YAAM,OAAO,QAAQ,CAAC,EAAE,MAAM,SAAS,QAAQ,MAAM;AACnD,aAAK,OAAO,KAAK,EAAE,MAAM,CAAE,GAAG,MAAM,GAAG,OAAQ,GAAG,QAAQ,CAAC;AAAA,MAC7D,CAAC;AAAA,IACH,OAAO;AACL,WAAK,OAAO,KAAK,EAAE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;AAAA,IAChD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAU,OAAa;AACrB,QAAI,KAAK,OAAO,SAAS;AAAG,YAAM,IAAI,gBAAgB,IAAI;AAC1D,WAAO;AAAA,EACT;AACF;AAKO,SAAS,iBAAiB,MAA2B,SAA+B;AACzF,MAAI,CAAE;AAAM,UAAM,IAAI,gBAAgB,SAAS,gBAAgB;AACjE;AAMO,SAAS,aAAa,MAA2B,SAA+B;AACrF,MAAI,CAAE;AAAM,UAAM,IAAI,UAAU,OAAO;AACzC;",
|
|
5
5
|
"names": ["message"]
|
|
6
6
|
}
|
package/dist/errors.mjs
CHANGED
|
@@ -6,7 +6,7 @@ function pathToString(path) {
|
|
|
6
6
|
return index === 0 ? key : `${string}.${key}`;
|
|
7
7
|
}, "");
|
|
8
8
|
}
|
|
9
|
-
var ValidationError = class extends Error {
|
|
9
|
+
var ValidationError = class _ValidationError extends Error {
|
|
10
10
|
/** An `Array` of validation errors encountered while validating */
|
|
11
11
|
errors;
|
|
12
12
|
/** Our stack, always present as we enforce it in the constructor */
|
|
@@ -19,12 +19,12 @@ var ValidationError = class extends Error {
|
|
|
19
19
|
constructor = builderOrCause.assert;
|
|
20
20
|
} else {
|
|
21
21
|
const path = Array.isArray(constructorOrPath) ? constructorOrPath : [];
|
|
22
|
-
if (builderOrCause instanceof
|
|
22
|
+
if (builderOrCause instanceof _ValidationError) {
|
|
23
23
|
errors = builderOrCause.errors.map(({ path: subpath, message: message2 }) => ({ path: [...path, ...subpath], message: message2 }));
|
|
24
24
|
} else {
|
|
25
25
|
errors = [{ path, message: `${builderOrCause}` }];
|
|
26
26
|
}
|
|
27
|
-
constructor = typeof maybeConstructor === "function" ? maybeConstructor : typeof constructorOrPath === "function" ? constructorOrPath :
|
|
27
|
+
constructor = typeof maybeConstructor === "function" ? maybeConstructor : typeof constructorOrPath === "function" ? constructorOrPath : _ValidationError;
|
|
28
28
|
}
|
|
29
29
|
const details = errors.map(({ path, message: message2 }) => ({ key: pathToString(path), message: message2 })).map(({ key, message: message2 }) => key ? `${key}: ${message2}` : message2).join("\n ");
|
|
30
30
|
const message = errors.length !== 1 ? `Found ${errors.length} validation errors` : "Found 1 validation error";
|
package/dist/errors.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/errors.ts"],
|
|
4
|
-
"mappings": ";AAGA,SAAS,aAAa,MAAmC;AACvD,SAAO,KAAK,OAAO,CAAC,QAAgB,KAAK,UAAkB;AACzD,QAAI,OAAO,QAAQ;AAAU,aAAO,GAAG,
|
|
4
|
+
"mappings": ";AAGA,SAAS,aAAa,MAAmC;AACvD,SAAO,KAAK,OAAO,CAAC,QAAgB,KAAK,UAAkB;AACzD,QAAI,OAAO,QAAQ;AAAU,aAAO,GAAG,MAAM,IAAI,GAAG;AACpD,WAAO,UAAU,IAAI,MAAM,GAAG,MAAM,IAAI,GAAG;AAAA,EAC7C,GAAG,EAAE;AACP;AAKO,IAAM,kBAAN,MAAM,yBAAwB,MAAM;AAAA;AAAA,EAEhC;AAAA;AAAA,EAEA;AAAA,EAaT,YACI,gBACA,mBACA,kBACF;AACA,QAAI;AACJ,QAAI;AAEJ,QAAI,0BAA0B,wBAAwB;AACpD,eAAS,eAAe;AACxB,oBAAc,eAAe;AAAA,IAC/B,OAAO;AACL,YAAM,OAAO,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAAC;AAErE,UAAI,0BAA0B,kBAAiB;AAC7C,iBAAS,eAAe,OAAO,IAAI,CAAC,EAAE,MAAM,SAAS,SAAAA,SAAQ,OAC1D,EAAE,MAAM,CAAE,GAAG,MAAM,GAAG,OAAQ,GAAG,SAAAA,SAAQ,EAAE;AAAA,MAChD,OAAO;AACL,iBAAS,CAAE,EAAE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAE;AAAA,MACpD;AAEA,oBACE,OAAO,qBAAqB,aAAa,mBACzC,OAAO,sBAAsB,aAAa,oBAC1C;AAAA,IACJ;AAEA,UAAM,UAAU,OACX,IAAI,CAAC,EAAE,MAAM,SAAAA,SAAQ,OAAO,EAAE,KAAK,aAAa,IAAI,GAAG,SAAAA,SAAQ,EAAE,EACjE,IAAI,CAAC,EAAE,KAAK,SAAAA,SAAQ,MAAM,MAAM,GAAG,GAAG,KAAKA,QAAO,KAAKA,QAAO,EAC9D,KAAK,MAAM;AAEhB,UAAM,UAAU,OAAO,WAAW,IAChC,SAAS,OAAO,MAAM,uBACtB;AAEF,UAAM,GAAG,OAAO;AAAA,IAAO,OAAO,EAAE;AAE/B,IAAC,MAAc,oBAAoB,MAAM,WAAW;AACrD,WAAO,eAAe,MAAM,UAAU,EAAE,OAAO,OAAO,CAAC;AAAA,EACzD;AACF;AAEA,gBAAgB,UAAU,OAAO;AAK1B,IAAM,yBAAN,MAA6B;AAAA;AAAA,EAEzB,SAA2B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUrC,OAAO,UAAe,KAAgC;AACpD,UAAM,OAAO,CAAE,GAAG,GAAI;AACtB,QAAI,iBAAiB,iBAAiB;AACpC,YAAM,OAAO,QAAQ,CAAC,EAAE,MAAM,SAAS,QAAQ,MAAM;AACnD,aAAK,OAAO,KAAK,EAAE,MAAM,CAAE,GAAG,MAAM,GAAG,OAAQ,GAAG,QAAQ,CAAC;AAAA,MAC7D,CAAC;AAAA,IACH,OAAO;AACL,WAAK,OAAO,KAAK,EAAE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;AAAA,IAChD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAU,OAAa;AACrB,QAAI,KAAK,OAAO,SAAS;AAAG,YAAM,IAAI,gBAAgB,IAAI;AAC1D,WAAO;AAAA,EACT;AACF;AAKO,SAAS,iBAAiB,MAA2B,SAA+B;AACzF,MAAI,CAAE;AAAM,UAAM,IAAI,gBAAgB,SAAS,gBAAgB;AACjE;AAMO,SAAS,aAAa,MAA2B,SAA+B;AACrF,MAAI,CAAE;AAAM,UAAM,IAAI,UAAU,OAAO;AACzC;",
|
|
5
5
|
"names": ["message"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// extra/arn.ts
|
|
21
|
+
var arn_exports = {};
|
|
22
|
+
__export(arn_exports, {
|
|
23
|
+
ArnValidator: () => ArnValidator,
|
|
24
|
+
ParsedArnValidator: () => ParsedArnValidator,
|
|
25
|
+
arn: () => arn,
|
|
26
|
+
arnFactory: () => arnFactory,
|
|
27
|
+
parseArn: () => parseArn,
|
|
28
|
+
parseArnFactory: () => parseArnFactory
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(arn_exports);
|
|
31
|
+
var import_errors = require("../errors.cjs");
|
|
32
|
+
var import_types = require("../types.cjs");
|
|
33
|
+
function parse(value, service, type) {
|
|
34
|
+
(0, import_errors.assertValidation)(typeof value == "string", 'Value is not a "string"');
|
|
35
|
+
const segments = value.split(":");
|
|
36
|
+
(0, import_errors.assertValidation)(segments.length >= 6, "Invalid components in ARN");
|
|
37
|
+
const [pfx, prt, svc, rgn, act, ...res] = segments;
|
|
38
|
+
(0, import_errors.assertValidation)(pfx === "arn", 'ARN must start with "arn:"');
|
|
39
|
+
(0, import_errors.assertValidation)(!!prt, "Missing partition in ARN");
|
|
40
|
+
(0, import_errors.assertValidation)(!!svc, "Missing service in ARN");
|
|
41
|
+
(0, import_errors.assertValidation)(!!act, "Missing account ID in ARN");
|
|
42
|
+
(0, import_errors.assertValidation)(!!res[0], "Missing resource ID in ARN");
|
|
43
|
+
if (service !== void 0) {
|
|
44
|
+
(0, import_errors.assertValidation)(svc === service, `ARN Service "${svc}" mismatch (expected "${service}")`);
|
|
45
|
+
}
|
|
46
|
+
const [resArray, resString] = res[0].includes("/") ? [res[0].split("/"), res[0]] : [res, res.join(":")];
|
|
47
|
+
(0, import_errors.assertValidation)(!!resArray[0], "Invalid resource ID in ARN");
|
|
48
|
+
if (type !== void 0) {
|
|
49
|
+
(0, import_errors.assertValidation)(resArray[0] === type, `ARN Resource Type "${resArray[0]}" mismatch (expected "${type}")`);
|
|
50
|
+
}
|
|
51
|
+
const arn2 = `arn:${prt}:${svc}:${rgn}:${act}:${resString}`;
|
|
52
|
+
return {
|
|
53
|
+
Arn: arn2,
|
|
54
|
+
Partition: prt,
|
|
55
|
+
Service: svc,
|
|
56
|
+
Region: rgn || "",
|
|
57
|
+
Account: act,
|
|
58
|
+
Resource: resArray
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
var ParsedArnValidator = class extends import_types.AbstractValidator {
|
|
62
|
+
constructor(_service, _type) {
|
|
63
|
+
super();
|
|
64
|
+
this._service = _service;
|
|
65
|
+
this._type = _type;
|
|
66
|
+
}
|
|
67
|
+
validate(value) {
|
|
68
|
+
return parse(value, this._service, this._type);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var ArnValidator = class extends import_types.AbstractValidator {
|
|
72
|
+
constructor(_service, _type) {
|
|
73
|
+
super();
|
|
74
|
+
this._service = _service;
|
|
75
|
+
this._type = _type;
|
|
76
|
+
}
|
|
77
|
+
validate(value) {
|
|
78
|
+
return parse(value, this._service, this._type).Arn;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
function parseArnFactory(service, resourceType) {
|
|
82
|
+
return new ParsedArnValidator(service, resourceType);
|
|
83
|
+
}
|
|
84
|
+
function arnFactory(service, resourceType) {
|
|
85
|
+
return new ArnValidator(service, resourceType);
|
|
86
|
+
}
|
|
87
|
+
var parseArn = (0, import_types.makeValidatorFactory)(new ParsedArnValidator(), parseArnFactory);
|
|
88
|
+
var arn = (0, import_types.makeValidatorFactory)(new ArnValidator(), arnFactory);
|
|
89
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
90
|
+
0 && (module.exports = {
|
|
91
|
+
ArnValidator,
|
|
92
|
+
ParsedArnValidator,
|
|
93
|
+
arn,
|
|
94
|
+
arnFactory,
|
|
95
|
+
parseArn,
|
|
96
|
+
parseArnFactory
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=arn.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/extra/arn.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAwD;AAoBxD,SAAS,MACL,OACA,SACA,MACkB;AACpB,sCAAiB,OAAO,SAAS,UAAU,yBAAyB;AAEpE,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,sCAAiB,SAAS,UAAU,GAAG,2BAA2B;AAElE,QAAM,CAAE,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAI,IAAI;AAE5C,sCAAiB,QAAQ,OAAO,4BAA4B;AAC5D,sCAAiB,CAAC,CAAE,KAAK,0BAA0B;AACnD,sCAAiB,CAAC,CAAE,KAAK,wBAAwB;AACjD,sCAAiB,CAAC,CAAE,KAAK,2BAA2B;AACpD,sCAAiB,CAAC,CAAE,IAAI,CAAC,GAAG,4BAA4B;AAExD,MAAI,YAAY,QAAW;AACzB,wCAAiB,QAAQ,SAAS,gBAAgB,GAAG,yBAAyB,OAAO,IAAI;AAAA,EAC3F;AAEA,QAAM,CAAE,UAAU,SAAU,IAAI,IAAI,CAAC,EAAE,SAAS,GAAG,IACjD,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAE,IAC5B,CAAE,KAAK,IAAI,KAAK,GAAG,CAAE;AAEvB,sCAAiB,CAAC,CAAE,SAAS,CAAC,GAAG,4BAA4B;AAE7D,MAAI,SAAS,QAAW;AACtB,wCAAiB,SAAS,CAAC,MAAM,MAAM,sBAAsB,SAAS,CAAC,CAAC,yBAAyB,IAAI,IAAI;AAAA,EAC3G;AAEA,QAAMA,OAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS;AAExD,SAAO;AAAA,IACL,KAAKA;AAAA,IACL,WAAW;AAAA,IACX,SAAS;AAAA,IACT,QAAQ,OAAO;AAAA,IACf,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACF;AAKO,IAAM,qBAAN,cACG,+BAA8C;AAAA,EAWtD,YAAoB,UAA4B,OAAgB;AAC9D,UAAM;AADY;AAA4B;AAAA,EAEhD;AAAA,EAEA,SAAS,OAAoC;AAC3C,WAAO,MAAM,OAAO,KAAK,UAAU,KAAK,KAAK;AAAA,EAC/C;AACF;AAGO,IAAM,eAAN,cACG,+BAA8C;AAAA,EAWtD,YAAoB,UAA4B,OAAgB;AAC9D,UAAM;AADY;AAA4B;AAAA,EAEhD;AAAA,EAEA,SAAS,OAAoC;AAC3C,WAAO,MAAM,OAAO,KAAK,UAAU,KAAK,KAAK,EAAE;AAAA,EACjD;AACF;AAYO,SAAS,gBACZ,SACA,cAC2B;AAC7B,SAAO,IAAI,mBAAmB,SAAS,YAAY;AACrD;AAUO,SAAS,WACZ,SACA,cACqB;AACvB,SAAO,IAAI,aAAa,SAAS,YAAY;AAC/C;AAKO,IAAM,eAAW,mCAAqB,IAAI,mBAAmB,GAAG,eAAe;AAG/E,IAAM,UAAM,mCAAqB,IAAI,aAAa,GAAG,UAAU;",
|
|
5
|
+
"names": ["arn"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AbstractValidator } from '../types';
|
|
2
|
+
/** The type for a validated _string_ ARN (Amazon Resource Name) */
|
|
3
|
+
export type ArnString<Service extends string = string> = string & {
|
|
4
|
+
__arn: never;
|
|
5
|
+
} & (string extends Service ? string : {
|
|
6
|
+
[k in `__arn_${Service}`]: never;
|
|
7
|
+
});
|
|
8
|
+
/** The type for a _parsed_ ARN (Amazon Resource Name) */
|
|
9
|
+
export interface ParsedArn<Service extends string = string> {
|
|
10
|
+
/** The full */
|
|
11
|
+
Arn: ArnString<Service>;
|
|
12
|
+
Partition: string;
|
|
13
|
+
Service: Service;
|
|
14
|
+
Region: string;
|
|
15
|
+
Account: string;
|
|
16
|
+
Resource: [string, ...string[]];
|
|
17
|
+
}
|
|
18
|
+
/** Validator parsing an ARN (Amazon Resource Name) and returning its components */
|
|
19
|
+
export declare class ParsedArnValidator<Service extends string = string> extends AbstractValidator<ParsedArn<Service>, string> {
|
|
20
|
+
private _service?;
|
|
21
|
+
private _type?;
|
|
22
|
+
/**
|
|
23
|
+
* Create a new {@link ParsedArnValidator} instance.
|
|
24
|
+
*
|
|
25
|
+
* @param service The (optional) service the ARN should be pointing to
|
|
26
|
+
* (e.g. `iam` or `elasticloadbalancing`)
|
|
27
|
+
* @param resourceType The (optional) resource _type_ the ARN should be
|
|
28
|
+
* representing (e.g. `role` in the `iam` service, or
|
|
29
|
+
* `targetgroup` in the `elasticloadbalancing` service)
|
|
30
|
+
*/
|
|
31
|
+
constructor(service?: Service, resourceType?: string);
|
|
32
|
+
validate(value: unknown): ParsedArn<Service>;
|
|
33
|
+
}
|
|
34
|
+
/** Validator validating an ARN (Amazon Resource Name) _string_ */
|
|
35
|
+
export declare class ArnValidator<Service extends string = string> extends AbstractValidator<ArnString<Service>, string> {
|
|
36
|
+
private _service?;
|
|
37
|
+
private _type?;
|
|
38
|
+
/**
|
|
39
|
+
* Create a new {@link ArnValidator} instance.
|
|
40
|
+
*
|
|
41
|
+
* @param service The (optional) service the ARN should be pointing to
|
|
42
|
+
* (e.g. `iam` or `elasticloadbalancing`)
|
|
43
|
+
* @param resourceType The (optional) resource _type_ the ARN should be
|
|
44
|
+
* representing (e.g. `role` in the `iam` service, or
|
|
45
|
+
* `targetgroup` in the `elasticloadbalancing` service)
|
|
46
|
+
*/
|
|
47
|
+
constructor(service?: Service, resourceType?: string);
|
|
48
|
+
validate(value: unknown): ArnString<Service>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a new {@link ParsedArnValidator} parsing an ARN referring to the
|
|
52
|
+
* specified `service` (e.g. `iam` or `elasticloadbalancing`).
|
|
53
|
+
*
|
|
54
|
+
* An (optional) resource _type_ can be specified, and will validate the first
|
|
55
|
+
* component of the ARN's resource (e.g. `role` in the `iam` service, or
|
|
56
|
+
* `targetgroup` in the `elasticloadbalancing` service)
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseArnFactory<Service extends string = string>(service: Service, resourceType?: string): ParsedArnValidator<Service>;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new {@link ArnValidator} validating an ARN referring to the
|
|
61
|
+
* specified `service` (e.g. `iam` or `elasticloadbalancing`).
|
|
62
|
+
*
|
|
63
|
+
* An (optional) resource _type_ can be specified, and will validate the first
|
|
64
|
+
* component of the ARN's resource (e.g. `role` in the `iam` service, or
|
|
65
|
+
* `targetgroup` in the `elasticloadbalancing` service)
|
|
66
|
+
*/
|
|
67
|
+
export declare function arnFactory<Service extends string = string>(service: Service, resourceType?: string): ArnValidator<Service>;
|
|
68
|
+
/** Validate a string and parse it into into an {@link ParsedArn} */
|
|
69
|
+
export declare const parseArn: typeof parseArnFactory & ParsedArnValidator<string>;
|
|
70
|
+
/** Validate a ARN (Amazon Resource Name) string */
|
|
71
|
+
export declare const arn: typeof arnFactory & ArnValidator<string>;
|