justus 0.5.0 → 0.5.2
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/dist/dts-generator.cjs +267 -42
- package/dist/dts-generator.cjs.map +2 -2
- package/dist/dts-generator.d.ts +32 -3
- package/dist/dts-generator.mjs +266 -42
- package/dist/dts-generator.mjs.map +2 -2
- package/dist/extra/arn.cjs +12 -9
- package/dist/extra/arn.cjs.map +1 -1
- package/dist/extra/arn.d.ts +17 -15
- package/dist/extra/arn.mjs +12 -9
- package/dist/extra/arn.mjs.map +1 -1
- package/dist/extra/uuid.cjs.map +1 -1
- package/dist/extra/uuid.d.ts +1 -1
- package/dist/extra/uuid.mjs.map +1 -1
- package/dist/types.cjs +3 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +13 -2
- package/dist/types.mjs +3 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utilities.cjs +2 -0
- package/dist/utilities.cjs.map +1 -1
- package/dist/utilities.d.ts +1 -5
- package/dist/utilities.mjs +2 -0
- package/dist/utilities.mjs.map +1 -1
- package/package.json +4 -4
- package/src/dts-generator.ts +414 -56
- package/src/extra/arn.ts +61 -40
- package/src/extra/uuid.ts +1 -1
- package/src/types.ts +14 -2
- package/src/utilities.ts +4 -5
package/dist/dts-generator.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// dts-generator.ts
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
import { assertSchema } from "./errors.mjs";
|
|
4
|
+
import { EAN13Validator } from "./extra/ean13.mjs";
|
|
4
5
|
import { URLValidator } from "./extra/url.mjs";
|
|
6
|
+
import { UUIDValidator } from "./extra/uuid.mjs";
|
|
5
7
|
import { getValidator } from "./utilities.mjs";
|
|
6
8
|
import { AnyValidator } from "./validators/any.mjs";
|
|
7
9
|
import { AnyArrayValidator, ArrayValidator } from "./validators/array.mjs";
|
|
@@ -15,45 +17,231 @@ import { OptionalValidator } from "./validators/optional.mjs";
|
|
|
15
17
|
import { AnyStringValidator, StringValidator } from "./validators/string.mjs";
|
|
16
18
|
import { TupleValidator } from "./validators/tuple.mjs";
|
|
17
19
|
import { AllOfValidator, OneOfValidator } from "./validators/union.mjs";
|
|
20
|
+
function typeEqual(a, b) {
|
|
21
|
+
function eq(a2, b2) {
|
|
22
|
+
if (typeof a2 == "object" && a2 != null && (typeof b2 == "object" && b2 != null)) {
|
|
23
|
+
for (const key in a2) {
|
|
24
|
+
if (!eq(a2[key], b2[key]))
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
for (const key in b2) {
|
|
28
|
+
if (!eq(a2[key], b2[key]))
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
} else {
|
|
33
|
+
return a2 === b2;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return eq(a, b);
|
|
37
|
+
}
|
|
18
38
|
var generators = /* @__PURE__ */ new Map();
|
|
19
39
|
function registerTypeGenerator(validator, generator) {
|
|
20
40
|
generators.set(validator, generator);
|
|
21
41
|
}
|
|
22
|
-
function generateTypes(validations) {
|
|
42
|
+
function generateTypes(validations, isInput = false) {
|
|
23
43
|
const validators = /* @__PURE__ */ new Map();
|
|
24
44
|
const references = /* @__PURE__ */ new Map();
|
|
25
|
-
|
|
45
|
+
for (const [name, validation] of Object.entries(validations)) {
|
|
26
46
|
const validator = getValidator(validation);
|
|
47
|
+
validators.set(name, validator);
|
|
27
48
|
if (!references.has(validator))
|
|
28
49
|
references.set(validator, name);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
for (const [name,
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
referenceable.delete(validator);
|
|
36
|
-
}
|
|
37
|
-
const type = generateTypeNode(validator, referenceable);
|
|
38
|
-
const modifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
39
|
-
const decl = ts.factory.createTypeAliasDeclaration(modifiers, name, [], type);
|
|
40
|
-
types.push(decl);
|
|
50
|
+
}
|
|
51
|
+
const types = generateTypeNodes(validators, references, isInput);
|
|
52
|
+
const aliases = [];
|
|
53
|
+
for (const [name, type] of types.entries()) {
|
|
54
|
+
const alias = ts.factory.createTypeAliasDeclaration(exportModifiers, name, [], type);
|
|
55
|
+
aliases.push(alias);
|
|
41
56
|
}
|
|
42
57
|
return ts.createPrinter().printList(
|
|
43
58
|
ts.ListFormat.SourceFileStatements,
|
|
44
|
-
ts.factory.createNodeArray(
|
|
59
|
+
ts.factory.createNodeArray(aliases),
|
|
60
|
+
ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
function generateDeclarations(validations) {
|
|
64
|
+
const names = [];
|
|
65
|
+
const outputValidators = /* @__PURE__ */ new Map();
|
|
66
|
+
const outputReferences = /* @__PURE__ */ new Map();
|
|
67
|
+
const inputValidators = /* @__PURE__ */ new Map();
|
|
68
|
+
const inputReferences = /* @__PURE__ */ new Map();
|
|
69
|
+
for (const [name, validation] of Object.entries(validations)) {
|
|
70
|
+
const prefix = /validator$/i.test(name) ? name.slice(0, -9) : /validation$/i.test(name) ? name.slice(0, -10) : name;
|
|
71
|
+
const output = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}`;
|
|
72
|
+
const input = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}Input`;
|
|
73
|
+
const validator = getValidator(validation);
|
|
74
|
+
names.push({ name, output, input });
|
|
75
|
+
outputValidators.set(output, validator);
|
|
76
|
+
inputValidators.set(input, validator);
|
|
77
|
+
if (!outputReferences.has(validator))
|
|
78
|
+
outputReferences.set(validator, output);
|
|
79
|
+
if (!inputReferences.has(validator))
|
|
80
|
+
inputReferences.set(validator, input);
|
|
81
|
+
}
|
|
82
|
+
const outputTypes = generateTypeNodes(outputValidators, outputReferences, false);
|
|
83
|
+
const inputTypes = generateTypeNodes(inputValidators, inputReferences, true);
|
|
84
|
+
const statements = [];
|
|
85
|
+
for (const { name, input, output } of names) {
|
|
86
|
+
const outputType = outputTypes.get(output);
|
|
87
|
+
const inputType = inputTypes.get(input);
|
|
88
|
+
const validation = validations[name];
|
|
89
|
+
const validator = outputValidators.get(output);
|
|
90
|
+
assertSchema(!!outputType, `No output type "${output}" generated for validation "${name}"`);
|
|
91
|
+
assertSchema(!!inputType, `No input type "${input}" generated for validation "${name}"`);
|
|
92
|
+
assertSchema(!!validator, `No validator for "${name}"`);
|
|
93
|
+
const sameType = typeEqual(inputType, outputType);
|
|
94
|
+
const inputAlias = sameType ? ts.factory.createTypeReferenceNode(output) : inputType;
|
|
95
|
+
const outputDeclaration = ts.factory.createTypeAliasDeclaration(exportModifiers, output, [], outputType);
|
|
96
|
+
const inputDeclaration = ts.factory.createTypeAliasDeclaration(exportModifiers, input, [], inputAlias);
|
|
97
|
+
const variableDeclarationType = generateVariableDeclarationType(validation, validator, outputReferences);
|
|
98
|
+
const variableDeclaration = ts.factory.createVariableStatement(
|
|
99
|
+
exportModifiers,
|
|
100
|
+
// "export"
|
|
101
|
+
ts.factory.createVariableDeclarationList([
|
|
102
|
+
ts.factory.createVariableDeclaration(
|
|
103
|
+
name,
|
|
104
|
+
// ..................................... "myTypeValidator"
|
|
105
|
+
void 0,
|
|
106
|
+
// no exclamation token
|
|
107
|
+
variableDeclarationType
|
|
108
|
+
)
|
|
109
|
+
], ts.NodeFlags.Const)
|
|
110
|
+
// ......................... "const"
|
|
111
|
+
);
|
|
112
|
+
ts.addSyntheticLeadingComment(
|
|
113
|
+
outputDeclaration,
|
|
114
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
115
|
+
` ${`----- ${name} `.padEnd(74, "-")} `,
|
|
116
|
+
true
|
|
117
|
+
// newline
|
|
118
|
+
);
|
|
119
|
+
ts.addSyntheticLeadingComment(
|
|
120
|
+
outputDeclaration,
|
|
121
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
122
|
+
`* Validated type for {@link ${name}} `,
|
|
123
|
+
true
|
|
124
|
+
// newline
|
|
125
|
+
);
|
|
126
|
+
ts.addSyntheticLeadingComment(
|
|
127
|
+
inputDeclaration,
|
|
128
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
129
|
+
`* Input type for {@link ${name}} `,
|
|
130
|
+
true
|
|
131
|
+
// newline
|
|
132
|
+
);
|
|
133
|
+
ts.addSyntheticLeadingComment(
|
|
134
|
+
variableDeclaration,
|
|
135
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
136
|
+
`* The \`${name}\` validator `,
|
|
137
|
+
true
|
|
138
|
+
// newline
|
|
139
|
+
);
|
|
140
|
+
statements.push(
|
|
141
|
+
outputDeclaration,
|
|
142
|
+
inputDeclaration,
|
|
143
|
+
variableDeclaration
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
const dts = ts.createPrinter().printList(
|
|
147
|
+
ts.ListFormat.SourceFileStatements,
|
|
148
|
+
ts.factory.createNodeArray(statements),
|
|
45
149
|
ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
|
|
46
150
|
);
|
|
151
|
+
return `// Generated on ${(/* @__PURE__ */ new Date()).toUTCString()}
|
|
152
|
+
|
|
153
|
+
${dts}`;
|
|
154
|
+
}
|
|
155
|
+
function isValidator(validation) {
|
|
156
|
+
assertSchema(validation !== void 0, 'Found "undefined" validation in tree');
|
|
157
|
+
if (validation === null)
|
|
158
|
+
return false;
|
|
159
|
+
if (typeof validation !== "function" && typeof validation !== "object") {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
if (Array.isArray(validation))
|
|
163
|
+
return false;
|
|
164
|
+
if ("validate" in validation && typeof validation.validate === "function") {
|
|
165
|
+
return !isValidator(validation.validate);
|
|
166
|
+
} else {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function generateJustusTypeImport(typeName, typeArguments = []) {
|
|
171
|
+
return ts.factory.createImportTypeNode(
|
|
172
|
+
// .................... "import"
|
|
173
|
+
ts.factory.createLiteralTypeNode(
|
|
174
|
+
ts.factory.createStringLiteral("justus")
|
|
175
|
+
// .......... "justus"
|
|
176
|
+
),
|
|
177
|
+
void 0,
|
|
178
|
+
// import assertions
|
|
179
|
+
ts.factory.createIdentifier(typeName),
|
|
180
|
+
// ................. "JustusType"
|
|
181
|
+
typeArguments
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
function generateVariableDeclarationType(validation, validator, references) {
|
|
185
|
+
if (isValidator(validation)) {
|
|
186
|
+
const validatedType = generateTypeNode(validator, references, false);
|
|
187
|
+
return generateJustusTypeImport("Validator", [validatedType]);
|
|
188
|
+
}
|
|
189
|
+
if (validator instanceof ConstantValidator) {
|
|
190
|
+
return generateTypeNode(validator, references, false);
|
|
191
|
+
}
|
|
192
|
+
if (validator instanceof ObjectValidator) {
|
|
193
|
+
const properties = [];
|
|
194
|
+
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
195
|
+
const value = validator.schema[key];
|
|
196
|
+
const type = generateVariableDeclarationType(value, valueValidator, references);
|
|
197
|
+
properties.push(ts.factory.createPropertySignature(
|
|
198
|
+
readonlyModifiers,
|
|
199
|
+
key,
|
|
200
|
+
void 0,
|
|
201
|
+
// no question mark
|
|
202
|
+
type
|
|
203
|
+
));
|
|
204
|
+
}
|
|
205
|
+
if (validator.additionalProperties) {
|
|
206
|
+
const additional = validator.additionalProperties;
|
|
207
|
+
const type = generateVariableDeclarationType(additional, additional, references);
|
|
208
|
+
properties.push(ts.factory.createPropertySignature(
|
|
209
|
+
readonlyModifiers,
|
|
210
|
+
ts.factory.createComputedPropertyName(
|
|
211
|
+
ts.factory.createPropertyAccessExpression(
|
|
212
|
+
ts.factory.createIdentifier("Symbol"),
|
|
213
|
+
"justusAdditionalValidator"
|
|
214
|
+
)
|
|
215
|
+
),
|
|
216
|
+
void 0,
|
|
217
|
+
// no question mark
|
|
218
|
+
type
|
|
219
|
+
));
|
|
220
|
+
}
|
|
221
|
+
return ts.factory.createTypeLiteralNode(properties);
|
|
222
|
+
}
|
|
223
|
+
assertSchema(false, `Unable to generate variable declaration for ${validator.constructor.name}`);
|
|
47
224
|
}
|
|
48
|
-
function
|
|
225
|
+
function generateTypeNodes(validators, references, isInput) {
|
|
226
|
+
const types = /* @__PURE__ */ new Map();
|
|
227
|
+
for (const [name, validator] of validators.entries()) {
|
|
228
|
+
const referenceable = new Map(references);
|
|
229
|
+
if (referenceable.get(validator) === name)
|
|
230
|
+
referenceable.delete(validator);
|
|
231
|
+
types.set(name, generateTypeNode(validator, referenceable, isInput));
|
|
232
|
+
}
|
|
233
|
+
return types;
|
|
234
|
+
}
|
|
235
|
+
function generateTypeNode(validator, references, isInput) {
|
|
49
236
|
const reference = references.get(validator);
|
|
50
237
|
if (reference)
|
|
51
238
|
return ts.factory.createTypeReferenceNode(reference);
|
|
52
239
|
const generator = generators.get(validator) || generators.get(validator.constructor);
|
|
53
240
|
assertSchema(!!generator, `Type generator for "${validator.constructor.name}" not found`);
|
|
54
|
-
const type = generator(validator, references);
|
|
55
|
-
if (!validator.optional)
|
|
241
|
+
const type = generator(validator, references, isInput);
|
|
242
|
+
if (!(validator.optional || isInput && validator.defaultValue !== void 0)) {
|
|
56
243
|
return type;
|
|
244
|
+
}
|
|
57
245
|
if (type === neverType)
|
|
58
246
|
return undefinedType;
|
|
59
247
|
if (ts.isUnionTypeNode(type)) {
|
|
@@ -64,6 +252,7 @@ function generateTypeNode(validator, references) {
|
|
|
64
252
|
var anyType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
|
|
65
253
|
var anyArrayType = ts.factory.createArrayTypeNode(anyType);
|
|
66
254
|
var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
|
|
255
|
+
var dateType = ts.factory.createTypeReferenceNode("Date");
|
|
67
256
|
var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
|
|
68
257
|
var neverType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
|
|
69
258
|
var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
|
@@ -81,42 +270,54 @@ var recordType = ts.factory.createMappedTypeNode(
|
|
|
81
270
|
void 0
|
|
82
271
|
);
|
|
83
272
|
var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
|
|
273
|
+
var exportModifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
274
|
+
var readonlyModifiers = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
|
|
84
275
|
registerTypeGenerator(AnyValidator, () => anyType);
|
|
85
276
|
registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
|
|
86
277
|
registerTypeGenerator(AnyNumberValidator, () => numberType);
|
|
87
278
|
registerTypeGenerator(AnyObjectValidator, () => recordType);
|
|
88
279
|
registerTypeGenerator(AnyStringValidator, () => stringType);
|
|
89
|
-
registerTypeGenerator(BooleanValidator, () => booleanType);
|
|
90
280
|
registerTypeGenerator(NeverValidator, () => neverType);
|
|
91
|
-
registerTypeGenerator(
|
|
92
|
-
|
|
93
|
-
registerTypeGenerator(ArrayValidator, (validator, references) => {
|
|
94
|
-
const itemType = generateTypeNode(validator.items, references);
|
|
281
|
+
registerTypeGenerator(ArrayValidator, (validator, references, isInput) => {
|
|
282
|
+
const itemType = generateTypeNode(validator.items, references, isInput);
|
|
95
283
|
return ts.factory.createArrayTypeNode(itemType);
|
|
96
284
|
});
|
|
285
|
+
registerTypeGenerator(BooleanValidator, (validator, _references, isInput) => {
|
|
286
|
+
return isInput && validator.fromString ? ts.factory.createUnionTypeNode([
|
|
287
|
+
booleanType,
|
|
288
|
+
ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("true")),
|
|
289
|
+
ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("false"))
|
|
290
|
+
]) : booleanType;
|
|
291
|
+
});
|
|
97
292
|
registerTypeGenerator(ConstantValidator, (validator) => {
|
|
98
293
|
const literal = typeof validator.constant === "number" ? ts.factory.createNumericLiteral(validator.constant) : typeof validator.constant === "string" ? ts.factory.createStringLiteral(validator.constant) : validator.constant === false ? ts.factory.createFalse() : validator.constant === true ? ts.factory.createTrue() : validator.constant === null ? ts.factory.createNull() : void 0;
|
|
99
294
|
assertSchema(!!literal, `Invalid constant "${validator.constant}"`);
|
|
100
295
|
return ts.factory.createLiteralTypeNode(literal);
|
|
101
296
|
});
|
|
102
|
-
registerTypeGenerator(
|
|
297
|
+
registerTypeGenerator(DateValidator, (validator, _references, isInput) => {
|
|
298
|
+
return isInput ? validator.format === "iso" ? stringType : validator.format === "timestamp" ? numberType : ts.factory.createUnionTypeNode([dateType, numberType, stringType]) : dateType;
|
|
299
|
+
});
|
|
300
|
+
registerTypeGenerator(NumberValidator, (validator, _references, isInput) => {
|
|
301
|
+
if (isInput) {
|
|
302
|
+
return validator.fromString ? ts.factory.createUnionTypeNode([numberType, stringType]) : numberType;
|
|
303
|
+
}
|
|
103
304
|
if (!validator.brand)
|
|
104
305
|
return numberType;
|
|
105
306
|
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
106
307
|
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
107
308
|
return ts.factory.createIntersectionTypeNode([numberType, literal]);
|
|
108
309
|
});
|
|
109
|
-
registerTypeGenerator(OptionalValidator, (validator, references) => {
|
|
110
|
-
return generateTypeNode(validator.validator, references);
|
|
310
|
+
registerTypeGenerator(OptionalValidator, (validator, references, isInput) => {
|
|
311
|
+
return generateTypeNode(validator.validator, references, isInput);
|
|
111
312
|
});
|
|
112
|
-
registerTypeGenerator(StringValidator, (validator) => {
|
|
113
|
-
if (!validator.brand)
|
|
313
|
+
registerTypeGenerator(StringValidator, (validator, _references, isInput) => {
|
|
314
|
+
if (!validator.brand || isInput)
|
|
114
315
|
return stringType;
|
|
115
316
|
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
116
317
|
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
117
318
|
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
118
319
|
});
|
|
119
|
-
registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
320
|
+
registerTypeGenerator(TupleValidator, (validator, references, isInput) => {
|
|
120
321
|
const members = validator.members;
|
|
121
322
|
const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
|
|
122
323
|
if (!single) {
|
|
@@ -129,35 +330,35 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
|
129
330
|
}, { count: 0, first: members.length, next: -1 });
|
|
130
331
|
if (count < 2) {
|
|
131
332
|
const types2 = members.map(({ single, validator: validator2 }) => {
|
|
132
|
-
const memberType = generateTypeNode(validator2, references);
|
|
333
|
+
const memberType = generateTypeNode(validator2, references, isInput);
|
|
133
334
|
if (single)
|
|
134
|
-
return generateTypeNode(validator2, references);
|
|
335
|
+
return generateTypeNode(validator2, references, isInput);
|
|
135
336
|
const arrayType = ts.factory.createArrayTypeNode(memberType);
|
|
136
337
|
return ts.factory.createRestTypeNode(arrayType);
|
|
137
338
|
});
|
|
138
339
|
return ts.factory.createTupleTypeNode(types2);
|
|
139
340
|
}
|
|
140
|
-
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
141
|
-
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
142
|
-
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
341
|
+
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
342
|
+
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
343
|
+
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
143
344
|
const union = ts.factory.createUnionTypeNode(types);
|
|
144
345
|
const array = ts.factory.createArrayTypeNode(union);
|
|
145
346
|
const rest = ts.factory.createRestTypeNode(array);
|
|
146
347
|
return ts.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
147
348
|
});
|
|
148
|
-
registerTypeGenerator(AllOfValidator, (validator, references) => {
|
|
149
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
349
|
+
registerTypeGenerator(AllOfValidator, (validator, references, isInput) => {
|
|
350
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
150
351
|
return ts.factory.createIntersectionTypeNode(members);
|
|
151
352
|
});
|
|
152
|
-
registerTypeGenerator(OneOfValidator, (validator, references) => {
|
|
153
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
353
|
+
registerTypeGenerator(OneOfValidator, (validator, references, isInput) => {
|
|
354
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
154
355
|
return ts.factory.createUnionTypeNode(members);
|
|
155
356
|
});
|
|
156
|
-
registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
357
|
+
registerTypeGenerator(ObjectValidator, (validator, references, isInput) => {
|
|
157
358
|
const properties = [];
|
|
158
359
|
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
159
|
-
const type = generateTypeNode(valueValidator, references);
|
|
160
|
-
const optional = valueValidator.optional;
|
|
360
|
+
const type = generateTypeNode(valueValidator, references, isInput);
|
|
361
|
+
const optional = isInput && valueValidator.defaultValue !== void 0 || valueValidator.optional;
|
|
161
362
|
const signature = ts.factory.createPropertySignature(
|
|
162
363
|
void 0,
|
|
163
364
|
key,
|
|
@@ -167,7 +368,7 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
|
167
368
|
properties.push(signature);
|
|
168
369
|
}
|
|
169
370
|
if (validator.additionalProperties) {
|
|
170
|
-
const propertyType = generateTypeNode(validator.additionalProperties, references);
|
|
371
|
+
const propertyType = generateTypeNode(validator.additionalProperties, references, isInput);
|
|
171
372
|
const extra = ts.factory.createMappedTypeNode(
|
|
172
373
|
void 0,
|
|
173
374
|
// readonly
|
|
@@ -188,7 +389,30 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
|
188
389
|
return ts.factory.createTypeLiteralNode(properties);
|
|
189
390
|
}
|
|
190
391
|
});
|
|
392
|
+
registerTypeGenerator(EAN13Validator, (_validator, _references, isInput) => {
|
|
393
|
+
if (isInput)
|
|
394
|
+
return ts.factory.createUnionTypeNode([numberType, stringType]);
|
|
395
|
+
const signature = ts.factory.createPropertySignature(void 0, "__ean_13", void 0, neverType);
|
|
396
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
397
|
+
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
398
|
+
});
|
|
399
|
+
registerTypeGenerator(UUIDValidator, (_validator, _references, isInput) => {
|
|
400
|
+
if (isInput)
|
|
401
|
+
return stringType;
|
|
402
|
+
const signature = ts.factory.createPropertySignature(void 0, "__uuid", void 0, neverType);
|
|
403
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
404
|
+
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
405
|
+
});
|
|
406
|
+
registerTypeGenerator(URLValidator, (_validator, _references, isInput) => {
|
|
407
|
+
const urlType = ts.factory.createTypeReferenceNode("URL");
|
|
408
|
+
if (isInput) {
|
|
409
|
+
return ts.factory.createUnionTypeNode([urlType, stringType]);
|
|
410
|
+
} else {
|
|
411
|
+
return urlType;
|
|
412
|
+
}
|
|
413
|
+
});
|
|
191
414
|
export {
|
|
415
|
+
generateDeclarations,
|
|
192
416
|
generateTypes,
|
|
193
417
|
registerTypeGenerator
|
|
194
418
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dts-generator.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["count", "first", "next", "types", "validator"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["a", "b", "count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/extra/arn.cjs
CHANGED
|
@@ -30,6 +30,11 @@ __export(arn_exports, {
|
|
|
30
30
|
module.exports = __toCommonJS(arn_exports);
|
|
31
31
|
var import_errors = require("../errors.cjs");
|
|
32
32
|
var import_types = require("../types.cjs");
|
|
33
|
+
function assertComponent(actual, expected, kind) {
|
|
34
|
+
if (expected === void 0)
|
|
35
|
+
return;
|
|
36
|
+
(0, import_errors.assertValidation)(actual === expected, `ARN ${kind} "${actual}" mismatch (expected "${expected}")`);
|
|
37
|
+
}
|
|
33
38
|
function parse(value, service, type) {
|
|
34
39
|
(0, import_errors.assertValidation)(typeof value == "string", 'Value is not a "string"');
|
|
35
40
|
const segments = value.split(":");
|
|
@@ -40,22 +45,20 @@ function parse(value, service, type) {
|
|
|
40
45
|
(0, import_errors.assertValidation)(!!svc, "Missing service in ARN");
|
|
41
46
|
(0, import_errors.assertValidation)(!!act, "Missing account ID in ARN");
|
|
42
47
|
(0, import_errors.assertValidation)(!!res[0], "Missing resource ID in ARN");
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
}
|
|
48
|
+
const [[resType, ...resArray], resString] = res[0].includes("/") ? [res[0].split("/"), res[0]] : [res, res.join(":")];
|
|
49
|
+
(0, import_errors.assertValidation)(!!resType, "Invalid resource ID in ARN");
|
|
50
|
+
assertComponent(svc, service, "Service");
|
|
51
|
+
assertComponent(resType, type, "Resource Type");
|
|
51
52
|
const arn2 = `arn:${prt}:${svc}:${rgn}:${act}:${resString}`;
|
|
52
53
|
return {
|
|
53
54
|
Arn: arn2,
|
|
54
55
|
Partition: prt,
|
|
55
56
|
Service: svc,
|
|
57
|
+
// as Service,
|
|
56
58
|
Region: rgn || "",
|
|
57
59
|
Account: act,
|
|
58
|
-
Resource: resArray
|
|
60
|
+
Resource: [resType, ...resArray]
|
|
61
|
+
// as [ ResourceType, ...string[] ],
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
var ParsedArnValidator = class extends import_types.AbstractValidator {
|
package/dist/extra/arn.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extra/arn.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAwD;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAiC;AACjC,mBAAwD;AA4BxD,SAAS,gBACL,QACA,UACA,MACmB;AACrB,MAAI,aAAa;AAAW;AAC5B,sCAAiB,WAAW,UAAU,OAAO,IAAI,KAAK,MAAM,yBAAyB,QAAQ,IAAI;AACnG;AAGA,SAAS,MACL,OACA,SACA,MACgC;AAClC,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,QAAM,CAAE,CAAE,SAAS,GAAG,QAAS,GAAG,SAAU,IAAI,IAAI,CAAC,EAAE,SAAS,GAAG,IACjE,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAE,IAC5B,CAAE,KAAK,IAAI,KAAK,GAAG,CAAE;AAEvB,sCAAiB,CAAC,CAAE,SAAS,4BAA4B;AAEzD,kBAAgB,KAAK,SAAS,SAAS;AACvC,kBAAgB,SAAS,MAAM,eAAe;AAE9C,QAAMA,OAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS;AAExD,SAAO;AAAA,IACL,KAAKA;AAAA,IACL,WAAW;AAAA,IACX,SAAS;AAAA;AAAA,IACT,QAAQ,OAAO;AAAA,IACf,SAAS;AAAA,IACT,UAAU,CAAE,SAAS,GAAG,QAAS;AAAA;AAAA,EACnC;AACF;AAKO,IAAM,qBAAN,cAGG,+BAA4D;AAAA,EAWpE,YAAoB,UAA4B,OAAsB;AACpE,UAAM;AADY;AAA4B;AAAA,EAEhD;AAAA,EAEA,SAAS,OAAkD;AACzD,WAAO,MAAM,OAAO,KAAK,UAAU,KAAK,KAAK;AAAA,EAC/C;AACF;AAGO,IAAM,eAAN,cAGG,+BAA4D;AAAA,EAWpE,YAAoB,UAA4B,OAAsB;AACpE,UAAM;AADY;AAA4B;AAAA,EAEhD;AAAA,EAEA,SAAS,OAAkD;AACzD,WAAO,MAAM,OAAO,KAAK,UAAU,KAAK,KAAK,EAAE;AAAA,EACjD;AACF;AAYO,SAAS,gBAGZ,SACA,cACyC;AAC3C,SAAO,IAAI,mBAAmB,SAAS,YAAY;AACrD;AAUO,SAAS,WAGZ,SACA,cACmC;AACrC,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
5
|
"names": ["arn"]
|
|
6
6
|
}
|
package/dist/extra/arn.d.ts
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { AbstractValidator } from '../types';
|
|
2
2
|
/** The type for a validated _string_ ARN (Amazon Resource Name) */
|
|
3
|
-
export type ArnString<Service extends string = string> = string & {
|
|
3
|
+
export type ArnString<Service extends string = string, ResourceType extends string = string> = string & {
|
|
4
4
|
__arn: never;
|
|
5
5
|
} & (string extends Service ? string : {
|
|
6
|
-
[k in `
|
|
6
|
+
[k in `__arn_service_${Service}`]: never;
|
|
7
|
+
}) & (string extends ResourceType ? string : {
|
|
8
|
+
[k in `__arn_resource_${ResourceType}`]: never;
|
|
7
9
|
});
|
|
8
10
|
/** The type for a _parsed_ ARN (Amazon Resource Name) */
|
|
9
|
-
export interface ParsedArn<Service extends string = string> {
|
|
11
|
+
export interface ParsedArn<Service extends string = string, ResourceType extends string = string> {
|
|
10
12
|
/** The full */
|
|
11
|
-
Arn: ArnString<Service>;
|
|
13
|
+
Arn: ArnString<Service, ResourceType>;
|
|
12
14
|
Partition: string;
|
|
13
15
|
Service: Service;
|
|
14
16
|
Region: string;
|
|
15
17
|
Account: string;
|
|
16
|
-
Resource: [
|
|
18
|
+
Resource: [ResourceType, ...string[]];
|
|
17
19
|
}
|
|
18
20
|
/** 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> {
|
|
21
|
+
export declare class ParsedArnValidator<Service extends string = string, ResourceType extends string = string> extends AbstractValidator<ParsedArn<Service, ResourceType>, string> {
|
|
20
22
|
private _service?;
|
|
21
23
|
private _type?;
|
|
22
24
|
/**
|
|
@@ -28,11 +30,11 @@ export declare class ParsedArnValidator<Service extends string = string> extends
|
|
|
28
30
|
* representing (e.g. `role` in the `iam` service, or
|
|
29
31
|
* `targetgroup` in the `elasticloadbalancing` service)
|
|
30
32
|
*/
|
|
31
|
-
constructor(service?: Service, resourceType?:
|
|
32
|
-
validate(value: unknown): ParsedArn<Service>;
|
|
33
|
+
constructor(service?: Service, resourceType?: ResourceType);
|
|
34
|
+
validate(value: unknown): ParsedArn<Service, ResourceType>;
|
|
33
35
|
}
|
|
34
36
|
/** Validator validating an ARN (Amazon Resource Name) _string_ */
|
|
35
|
-
export declare class ArnValidator<Service extends string = string> extends AbstractValidator<ArnString<Service>, string> {
|
|
37
|
+
export declare class ArnValidator<Service extends string = string, ResourceType extends string = string> extends AbstractValidator<ArnString<Service, ResourceType>, string> {
|
|
36
38
|
private _service?;
|
|
37
39
|
private _type?;
|
|
38
40
|
/**
|
|
@@ -44,8 +46,8 @@ export declare class ArnValidator<Service extends string = string> extends Abstr
|
|
|
44
46
|
* representing (e.g. `role` in the `iam` service, or
|
|
45
47
|
* `targetgroup` in the `elasticloadbalancing` service)
|
|
46
48
|
*/
|
|
47
|
-
constructor(service?: Service, resourceType?:
|
|
48
|
-
validate(value: unknown): ArnString<Service>;
|
|
49
|
+
constructor(service?: Service, resourceType?: ResourceType);
|
|
50
|
+
validate(value: unknown): ArnString<Service, ResourceType>;
|
|
49
51
|
}
|
|
50
52
|
/**
|
|
51
53
|
* Create a new {@link ParsedArnValidator} parsing an ARN referring to the
|
|
@@ -55,7 +57,7 @@ export declare class ArnValidator<Service extends string = string> extends Abstr
|
|
|
55
57
|
* component of the ARN's resource (e.g. `role` in the `iam` service, or
|
|
56
58
|
* `targetgroup` in the `elasticloadbalancing` service)
|
|
57
59
|
*/
|
|
58
|
-
export declare function parseArnFactory<Service extends string = string>(service: Service, resourceType?:
|
|
60
|
+
export declare function parseArnFactory<Service extends string = string, ResourceType extends string = string>(service: Service, resourceType?: ResourceType): ParsedArnValidator<Service, ResourceType>;
|
|
59
61
|
/**
|
|
60
62
|
* Create a new {@link ArnValidator} validating an ARN referring to the
|
|
61
63
|
* specified `service` (e.g. `iam` or `elasticloadbalancing`).
|
|
@@ -64,8 +66,8 @@ export declare function parseArnFactory<Service extends string = string>(service
|
|
|
64
66
|
* component of the ARN's resource (e.g. `role` in the `iam` service, or
|
|
65
67
|
* `targetgroup` in the `elasticloadbalancing` service)
|
|
66
68
|
*/
|
|
67
|
-
export declare function arnFactory<Service extends string = string>(service: Service, resourceType?:
|
|
69
|
+
export declare function arnFactory<Service extends string = string, ResourceType extends string = string>(service: Service, resourceType?: ResourceType): ArnValidator<Service, ResourceType>;
|
|
68
70
|
/** Validate a string and parse it into into an {@link ParsedArn} */
|
|
69
|
-
export declare const parseArn: typeof parseArnFactory & ParsedArnValidator<string>;
|
|
71
|
+
export declare const parseArn: typeof parseArnFactory & ParsedArnValidator<string, string>;
|
|
70
72
|
/** Validate a ARN (Amazon Resource Name) string */
|
|
71
|
-
export declare const arn: typeof arnFactory & ArnValidator<string>;
|
|
73
|
+
export declare const arn: typeof arnFactory & ArnValidator<string, string>;
|
package/dist/extra/arn.mjs
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
// extra/arn.ts
|
|
2
2
|
import { assertValidation } from "../errors.mjs";
|
|
3
3
|
import { AbstractValidator, makeValidatorFactory } from "../types.mjs";
|
|
4
|
+
function assertComponent(actual, expected, kind) {
|
|
5
|
+
if (expected === void 0)
|
|
6
|
+
return;
|
|
7
|
+
assertValidation(actual === expected, `ARN ${kind} "${actual}" mismatch (expected "${expected}")`);
|
|
8
|
+
}
|
|
4
9
|
function parse(value, service, type) {
|
|
5
10
|
assertValidation(typeof value == "string", 'Value is not a "string"');
|
|
6
11
|
const segments = value.split(":");
|
|
@@ -11,22 +16,20 @@ function parse(value, service, type) {
|
|
|
11
16
|
assertValidation(!!svc, "Missing service in ARN");
|
|
12
17
|
assertValidation(!!act, "Missing account ID in ARN");
|
|
13
18
|
assertValidation(!!res[0], "Missing resource ID in ARN");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
assertValidation(!!resArray[0], "Invalid resource ID in ARN");
|
|
19
|
-
if (type !== void 0) {
|
|
20
|
-
assertValidation(resArray[0] === type, `ARN Resource Type "${resArray[0]}" mismatch (expected "${type}")`);
|
|
21
|
-
}
|
|
19
|
+
const [[resType, ...resArray], resString] = res[0].includes("/") ? [res[0].split("/"), res[0]] : [res, res.join(":")];
|
|
20
|
+
assertValidation(!!resType, "Invalid resource ID in ARN");
|
|
21
|
+
assertComponent(svc, service, "Service");
|
|
22
|
+
assertComponent(resType, type, "Resource Type");
|
|
22
23
|
const arn2 = `arn:${prt}:${svc}:${rgn}:${act}:${resString}`;
|
|
23
24
|
return {
|
|
24
25
|
Arn: arn2,
|
|
25
26
|
Partition: prt,
|
|
26
27
|
Service: svc,
|
|
28
|
+
// as Service,
|
|
27
29
|
Region: rgn || "",
|
|
28
30
|
Account: act,
|
|
29
|
-
Resource: resArray
|
|
31
|
+
Resource: [resType, ...resArray]
|
|
32
|
+
// as [ ResourceType, ...string[] ],
|
|
30
33
|
};
|
|
31
34
|
}
|
|
32
35
|
var ParsedArnValidator = class extends AbstractValidator {
|