justus 0.5.1 → 0.5.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/dist/dts-generator.cjs +264 -42
- package/dist/dts-generator.cjs.map +2 -2
- package/dist/dts-generator.d.ts +32 -3
- package/dist/dts-generator.mjs +263 -42
- package/dist/dts-generator.mjs.map +2 -2
- 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 +17 -6
- 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 +5 -8
- package/src/dts-generator.ts +411 -55
- package/src/extra/uuid.ts +1 -1
- package/src/types.ts +18 -6
- 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,228 @@ 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),
|
|
45
60
|
ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
|
|
46
61
|
);
|
|
47
62
|
}
|
|
48
|
-
function
|
|
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
|
+
return ts.createPrinter().printList(
|
|
147
|
+
ts.ListFormat.SourceFileStatements,
|
|
148
|
+
ts.factory.createNodeArray(statements),
|
|
149
|
+
ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
function isValidator(validation) {
|
|
153
|
+
assertSchema(validation !== void 0, 'Found "undefined" validation in tree');
|
|
154
|
+
if (validation === null)
|
|
155
|
+
return false;
|
|
156
|
+
if (typeof validation !== "function" && typeof validation !== "object") {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
if (Array.isArray(validation))
|
|
160
|
+
return false;
|
|
161
|
+
if ("validate" in validation && typeof validation.validate === "function") {
|
|
162
|
+
return !isValidator(validation.validate);
|
|
163
|
+
} else {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function generateJustusTypeImport(typeName, typeArguments = []) {
|
|
168
|
+
return ts.factory.createImportTypeNode(
|
|
169
|
+
// .................... "import"
|
|
170
|
+
ts.factory.createLiteralTypeNode(
|
|
171
|
+
ts.factory.createStringLiteral("justus")
|
|
172
|
+
// .......... "justus"
|
|
173
|
+
),
|
|
174
|
+
void 0,
|
|
175
|
+
// import assertions
|
|
176
|
+
ts.factory.createIdentifier(typeName),
|
|
177
|
+
// ................. "JustusType"
|
|
178
|
+
typeArguments
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
function generateVariableDeclarationType(validation, validator, references) {
|
|
182
|
+
if (isValidator(validation)) {
|
|
183
|
+
const validatedType = generateTypeNode(validator, references, false);
|
|
184
|
+
return generateJustusTypeImport("Validator", [validatedType]);
|
|
185
|
+
}
|
|
186
|
+
if (validator instanceof ConstantValidator) {
|
|
187
|
+
return generateTypeNode(validator, references, false);
|
|
188
|
+
}
|
|
189
|
+
if (validator instanceof ObjectValidator) {
|
|
190
|
+
const properties = [];
|
|
191
|
+
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
192
|
+
const value = validator.schema[key];
|
|
193
|
+
const type = generateVariableDeclarationType(value, valueValidator, references);
|
|
194
|
+
properties.push(ts.factory.createPropertySignature(
|
|
195
|
+
readonlyModifiers,
|
|
196
|
+
key,
|
|
197
|
+
void 0,
|
|
198
|
+
// no question mark
|
|
199
|
+
type
|
|
200
|
+
));
|
|
201
|
+
}
|
|
202
|
+
if (validator.additionalProperties) {
|
|
203
|
+
const additional = validator.additionalProperties;
|
|
204
|
+
const type = generateVariableDeclarationType(additional, additional, references);
|
|
205
|
+
properties.push(ts.factory.createPropertySignature(
|
|
206
|
+
readonlyModifiers,
|
|
207
|
+
ts.factory.createComputedPropertyName(
|
|
208
|
+
ts.factory.createPropertyAccessExpression(
|
|
209
|
+
ts.factory.createIdentifier("Symbol"),
|
|
210
|
+
"justusAdditionalValidator"
|
|
211
|
+
)
|
|
212
|
+
),
|
|
213
|
+
void 0,
|
|
214
|
+
// no question mark
|
|
215
|
+
type
|
|
216
|
+
));
|
|
217
|
+
}
|
|
218
|
+
return ts.factory.createTypeLiteralNode(properties);
|
|
219
|
+
}
|
|
220
|
+
assertSchema(false, `Unable to generate variable declaration for ${validator.constructor.name}`);
|
|
221
|
+
}
|
|
222
|
+
function generateTypeNodes(validators, references, isInput) {
|
|
223
|
+
const types = /* @__PURE__ */ new Map();
|
|
224
|
+
for (const [name, validator] of validators.entries()) {
|
|
225
|
+
const referenceable = new Map(references);
|
|
226
|
+
if (referenceable.get(validator) === name)
|
|
227
|
+
referenceable.delete(validator);
|
|
228
|
+
types.set(name, generateTypeNode(validator, referenceable, isInput));
|
|
229
|
+
}
|
|
230
|
+
return types;
|
|
231
|
+
}
|
|
232
|
+
function generateTypeNode(validator, references, isInput) {
|
|
49
233
|
const reference = references.get(validator);
|
|
50
234
|
if (reference)
|
|
51
235
|
return ts.factory.createTypeReferenceNode(reference);
|
|
52
236
|
const generator = generators.get(validator) || generators.get(validator.constructor);
|
|
53
237
|
assertSchema(!!generator, `Type generator for "${validator.constructor.name}" not found`);
|
|
54
|
-
const type = generator(validator, references);
|
|
55
|
-
if (!validator.optional)
|
|
238
|
+
const type = generator(validator, references, isInput);
|
|
239
|
+
if (!(validator.optional || isInput && validator.defaultValue !== void 0)) {
|
|
56
240
|
return type;
|
|
241
|
+
}
|
|
57
242
|
if (type === neverType)
|
|
58
243
|
return undefinedType;
|
|
59
244
|
if (ts.isUnionTypeNode(type)) {
|
|
@@ -64,6 +249,7 @@ function generateTypeNode(validator, references) {
|
|
|
64
249
|
var anyType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
|
|
65
250
|
var anyArrayType = ts.factory.createArrayTypeNode(anyType);
|
|
66
251
|
var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
|
|
252
|
+
var dateType = ts.factory.createTypeReferenceNode("Date");
|
|
67
253
|
var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
|
|
68
254
|
var neverType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
|
|
69
255
|
var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
|
@@ -81,42 +267,54 @@ var recordType = ts.factory.createMappedTypeNode(
|
|
|
81
267
|
void 0
|
|
82
268
|
);
|
|
83
269
|
var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
|
|
270
|
+
var exportModifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
271
|
+
var readonlyModifiers = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
|
|
84
272
|
registerTypeGenerator(AnyValidator, () => anyType);
|
|
85
273
|
registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
|
|
86
274
|
registerTypeGenerator(AnyNumberValidator, () => numberType);
|
|
87
275
|
registerTypeGenerator(AnyObjectValidator, () => recordType);
|
|
88
276
|
registerTypeGenerator(AnyStringValidator, () => stringType);
|
|
89
|
-
registerTypeGenerator(BooleanValidator, () => booleanType);
|
|
90
277
|
registerTypeGenerator(NeverValidator, () => neverType);
|
|
91
|
-
registerTypeGenerator(
|
|
92
|
-
|
|
93
|
-
registerTypeGenerator(ArrayValidator, (validator, references) => {
|
|
94
|
-
const itemType = generateTypeNode(validator.items, references);
|
|
278
|
+
registerTypeGenerator(ArrayValidator, (validator, references, isInput) => {
|
|
279
|
+
const itemType = generateTypeNode(validator.items, references, isInput);
|
|
95
280
|
return ts.factory.createArrayTypeNode(itemType);
|
|
96
281
|
});
|
|
282
|
+
registerTypeGenerator(BooleanValidator, (validator, _references, isInput) => {
|
|
283
|
+
return isInput && validator.fromString ? ts.factory.createUnionTypeNode([
|
|
284
|
+
booleanType,
|
|
285
|
+
ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("true")),
|
|
286
|
+
ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("false"))
|
|
287
|
+
]) : booleanType;
|
|
288
|
+
});
|
|
97
289
|
registerTypeGenerator(ConstantValidator, (validator) => {
|
|
98
290
|
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
291
|
assertSchema(!!literal, `Invalid constant "${validator.constant}"`);
|
|
100
292
|
return ts.factory.createLiteralTypeNode(literal);
|
|
101
293
|
});
|
|
102
|
-
registerTypeGenerator(
|
|
294
|
+
registerTypeGenerator(DateValidator, (validator, _references, isInput) => {
|
|
295
|
+
return isInput ? validator.format === "iso" ? stringType : validator.format === "timestamp" ? numberType : ts.factory.createUnionTypeNode([dateType, numberType, stringType]) : dateType;
|
|
296
|
+
});
|
|
297
|
+
registerTypeGenerator(NumberValidator, (validator, _references, isInput) => {
|
|
298
|
+
if (isInput) {
|
|
299
|
+
return validator.fromString ? ts.factory.createUnionTypeNode([numberType, stringType]) : numberType;
|
|
300
|
+
}
|
|
103
301
|
if (!validator.brand)
|
|
104
302
|
return numberType;
|
|
105
303
|
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
106
304
|
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
107
305
|
return ts.factory.createIntersectionTypeNode([numberType, literal]);
|
|
108
306
|
});
|
|
109
|
-
registerTypeGenerator(OptionalValidator, (validator, references) => {
|
|
110
|
-
return generateTypeNode(validator.validator, references);
|
|
307
|
+
registerTypeGenerator(OptionalValidator, (validator, references, isInput) => {
|
|
308
|
+
return generateTypeNode(validator.validator, references, isInput);
|
|
111
309
|
});
|
|
112
|
-
registerTypeGenerator(StringValidator, (validator) => {
|
|
113
|
-
if (!validator.brand)
|
|
310
|
+
registerTypeGenerator(StringValidator, (validator, _references, isInput) => {
|
|
311
|
+
if (!validator.brand || isInput)
|
|
114
312
|
return stringType;
|
|
115
313
|
const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
116
314
|
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
117
315
|
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
118
316
|
});
|
|
119
|
-
registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
317
|
+
registerTypeGenerator(TupleValidator, (validator, references, isInput) => {
|
|
120
318
|
const members = validator.members;
|
|
121
319
|
const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
|
|
122
320
|
if (!single) {
|
|
@@ -129,35 +327,35 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
|
|
|
129
327
|
}, { count: 0, first: members.length, next: -1 });
|
|
130
328
|
if (count < 2) {
|
|
131
329
|
const types2 = members.map(({ single, validator: validator2 }) => {
|
|
132
|
-
const memberType = generateTypeNode(validator2, references);
|
|
330
|
+
const memberType = generateTypeNode(validator2, references, isInput);
|
|
133
331
|
if (single)
|
|
134
|
-
return generateTypeNode(validator2, references);
|
|
332
|
+
return generateTypeNode(validator2, references, isInput);
|
|
135
333
|
const arrayType = ts.factory.createArrayTypeNode(memberType);
|
|
136
334
|
return ts.factory.createRestTypeNode(arrayType);
|
|
137
335
|
});
|
|
138
336
|
return ts.factory.createTupleTypeNode(types2);
|
|
139
337
|
}
|
|
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));
|
|
338
|
+
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
339
|
+
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
340
|
+
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
143
341
|
const union = ts.factory.createUnionTypeNode(types);
|
|
144
342
|
const array = ts.factory.createArrayTypeNode(union);
|
|
145
343
|
const rest = ts.factory.createRestTypeNode(array);
|
|
146
344
|
return ts.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
147
345
|
});
|
|
148
|
-
registerTypeGenerator(AllOfValidator, (validator, references) => {
|
|
149
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
346
|
+
registerTypeGenerator(AllOfValidator, (validator, references, isInput) => {
|
|
347
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
150
348
|
return ts.factory.createIntersectionTypeNode(members);
|
|
151
349
|
});
|
|
152
|
-
registerTypeGenerator(OneOfValidator, (validator, references) => {
|
|
153
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
350
|
+
registerTypeGenerator(OneOfValidator, (validator, references, isInput) => {
|
|
351
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
154
352
|
return ts.factory.createUnionTypeNode(members);
|
|
155
353
|
});
|
|
156
|
-
registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
354
|
+
registerTypeGenerator(ObjectValidator, (validator, references, isInput) => {
|
|
157
355
|
const properties = [];
|
|
158
356
|
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
159
|
-
const type = generateTypeNode(valueValidator, references);
|
|
160
|
-
const optional = valueValidator.optional;
|
|
357
|
+
const type = generateTypeNode(valueValidator, references, isInput);
|
|
358
|
+
const optional = isInput && valueValidator.defaultValue !== void 0 || valueValidator.optional;
|
|
161
359
|
const signature = ts.factory.createPropertySignature(
|
|
162
360
|
void 0,
|
|
163
361
|
key,
|
|
@@ -167,7 +365,7 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
|
167
365
|
properties.push(signature);
|
|
168
366
|
}
|
|
169
367
|
if (validator.additionalProperties) {
|
|
170
|
-
const propertyType = generateTypeNode(validator.additionalProperties, references);
|
|
368
|
+
const propertyType = generateTypeNode(validator.additionalProperties, references, isInput);
|
|
171
369
|
const extra = ts.factory.createMappedTypeNode(
|
|
172
370
|
void 0,
|
|
173
371
|
// readonly
|
|
@@ -188,7 +386,30 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
|
|
|
188
386
|
return ts.factory.createTypeLiteralNode(properties);
|
|
189
387
|
}
|
|
190
388
|
});
|
|
389
|
+
registerTypeGenerator(EAN13Validator, (_validator, _references, isInput) => {
|
|
390
|
+
if (isInput)
|
|
391
|
+
return ts.factory.createUnionTypeNode([numberType, stringType]);
|
|
392
|
+
const signature = ts.factory.createPropertySignature(void 0, "__ean_13", void 0, neverType);
|
|
393
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
394
|
+
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
395
|
+
});
|
|
396
|
+
registerTypeGenerator(UUIDValidator, (_validator, _references, isInput) => {
|
|
397
|
+
if (isInput)
|
|
398
|
+
return stringType;
|
|
399
|
+
const signature = ts.factory.createPropertySignature(void 0, "__uuid", void 0, neverType);
|
|
400
|
+
const literal = ts.factory.createTypeLiteralNode([signature]);
|
|
401
|
+
return ts.factory.createIntersectionTypeNode([stringType, literal]);
|
|
402
|
+
});
|
|
403
|
+
registerTypeGenerator(URLValidator, (_validator, _references, isInput) => {
|
|
404
|
+
const urlType = ts.factory.createTypeReferenceNode("URL");
|
|
405
|
+
if (isInput) {
|
|
406
|
+
return ts.factory.createUnionTypeNode([urlType, stringType]);
|
|
407
|
+
} else {
|
|
408
|
+
return urlType;
|
|
409
|
+
}
|
|
410
|
+
});
|
|
191
411
|
export {
|
|
412
|
+
generateDeclarations,
|
|
192
413
|
generateTypes,
|
|
193
414
|
registerTypeGenerator
|
|
194
415
|
};
|
|
@@ -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/uuid.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extra/uuid.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAgC;AAEzB,IAAM,YAAY;AAIlB,IAAM,gBAAN,cAA4B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAgC;AAEzB,IAAM,YAAY;AAIlB,IAAM,gBAAN,cAA4B,8BAAoC;AAAA,EACrE,cAAc;AACZ,UAAM,EAAE,WAAW,IAAI,WAAW,IAAI,SAAS,UAAU,CAAC;AAAA,EAC5D;AAAA,EAGA,SAAS,OAAwB;AAC/B,WAAO,MAAM,SAAS,KAAK,EAAE,YAAY;AAAA,EAC3C;AACF;AAEO,IAAM,OAAO,IAAI,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/extra/uuid.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const UUID_EXPR: RegExp;
|
|
|
3
3
|
export type UUIDString = string & {
|
|
4
4
|
__uuid: never;
|
|
5
5
|
};
|
|
6
|
-
export declare class UUIDValidator extends StringValidator<UUIDString> {
|
|
6
|
+
export declare class UUIDValidator extends StringValidator<UUIDString, string> {
|
|
7
7
|
constructor();
|
|
8
8
|
validate(value: unknown): UUIDString;
|
|
9
9
|
}
|
package/dist/extra/uuid.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extra/uuid.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,uBAAuB;AAEzB,IAAM,YAAY;AAIlB,IAAM,gBAAN,cAA4B,
|
|
4
|
+
"mappings": ";AAAA,SAAS,uBAAuB;AAEzB,IAAM,YAAY;AAIlB,IAAM,gBAAN,cAA4B,gBAAoC;AAAA,EACrE,cAAc;AACZ,UAAM,EAAE,WAAW,IAAI,WAAW,IAAI,SAAS,UAAU,CAAC;AAAA,EAC5D;AAAA,EAGA,SAAS,OAAwB;AAC/B,WAAO,MAAM,SAAS,KAAK,EAAE,YAAY;AAAA,EAC3C;AACF;AAEO,IAAM,OAAO,IAAI,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/types.cjs
CHANGED
|
@@ -38,6 +38,7 @@ var defaultValidationOptions = {
|
|
|
38
38
|
function makeValidatorFactory(validator, factory) {
|
|
39
39
|
return Object.assign(factory, {
|
|
40
40
|
optional: validator.optional,
|
|
41
|
+
defaultValue: validator.defaultValue,
|
|
41
42
|
validate: validator.validate.bind(validator),
|
|
42
43
|
[Symbol.iterator]: validator[Symbol.iterator].bind(validator),
|
|
43
44
|
[Symbol.justusValidator]: validator
|
|
@@ -45,7 +46,8 @@ function makeValidatorFactory(validator, factory) {
|
|
|
45
46
|
}
|
|
46
47
|
var AbstractValidator = class {
|
|
47
48
|
[Symbol.justusValidator] = this;
|
|
48
|
-
optional =
|
|
49
|
+
optional = false;
|
|
50
|
+
defaultValue = void 0;
|
|
49
51
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
50
52
|
*[Symbol.iterator]() {
|
|
51
53
|
yield { [Symbol.justusRestValidator]: this };
|
package/dist/types.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/types.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAkCO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,cAAc,UAAU;AAAA,IACxB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACwD;AAAA,EAC7D,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAoB;AAAA,EACpB,eAA8B;AAAA;AAAA,EAM9B,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,7 +29,17 @@ export declare const defaultValidationOptions: Readonly<Required<ValidationOptio
|
|
|
29
29
|
*/
|
|
30
30
|
export interface Validator<T = any, I = T> extends Iterable<TupleRestParameter<T, I>> {
|
|
31
31
|
[Symbol.justusValidator]: this;
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* A flag indicating whether the type being validated is _optional_ (the input
|
|
34
|
+
* can be `undefined`) or not (default: `false`).
|
|
35
|
+
*/
|
|
36
|
+
optional: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* The _default_ replaced by this `Validator` when the input is `undefined`.
|
|
39
|
+
*
|
|
40
|
+
* This is used in conjunction with the `optional` flag.
|
|
41
|
+
*/
|
|
42
|
+
defaultValue: T | undefined;
|
|
33
43
|
/** Validate a _value_ and optionally convert it to the required `Type` */
|
|
34
44
|
validate(value: unknown, options?: ValidationOptions | undefined): T;
|
|
35
45
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
@@ -48,7 +58,8 @@ export declare function makeValidatorFactory<V extends Validator, F extends (...
|
|
|
48
58
|
*/
|
|
49
59
|
export declare abstract class AbstractValidator<T, I = T> implements Validator<T, I>, Iterable<TupleRestParameter<T, I>> {
|
|
50
60
|
[Symbol.justusValidator]: this;
|
|
51
|
-
optional
|
|
61
|
+
optional: boolean;
|
|
62
|
+
defaultValue: T | undefined;
|
|
52
63
|
/** Validate a _value_ and optionally convert it to the required `Type` */
|
|
53
64
|
abstract validate(value: unknown, options?: ValidationOptions | undefined): T;
|
|
54
65
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
@@ -144,9 +155,9 @@ export type InferSchema<S> = S extends AdditionalProperties<Validator<infer V>>
|
|
|
144
155
|
} & InferSchema2<S> : InferSchema2<S>;
|
|
145
156
|
/** Infer the property types described by a `Schema` */
|
|
146
157
|
export type InferSchema2<S> = {
|
|
147
|
-
[key in keyof S as key extends string ? key : never]?: InferValidation<S[key]>;
|
|
158
|
+
-readonly [key in keyof S as key extends string ? key : never]?: InferValidation<S[key]>;
|
|
148
159
|
} & {
|
|
149
|
-
[key in keyof S as key extends string ? undefined extends InferValidation<S[key]> ? never : key : never]-?: InferValidation<S[key]>;
|
|
160
|
+
-readonly [key in keyof S as key extends string ? undefined extends InferValidation<S[key]> ? never : key : never]-?: InferValidation<S[key]>;
|
|
150
161
|
};
|
|
151
162
|
/** Infer the input type compatible with a `Schema` */
|
|
152
163
|
export type InferInputSchema<S> = S extends AdditionalProperties<Validator<any, infer X>> ? {
|
|
@@ -154,9 +165,9 @@ export type InferInputSchema<S> = S extends AdditionalProperties<Validator<any,
|
|
|
154
165
|
} & InferInputSchema2<S> : InferInputSchema2<S>;
|
|
155
166
|
/** Infer the input type of the properties described by a `Schema` */
|
|
156
167
|
export type InferInputSchema2<S> = {
|
|
157
|
-
[key in keyof S as key extends string ? key : never]?: InferInput<S[key]>;
|
|
168
|
+
-readonly [key in keyof S as key extends string ? key : never]?: InferInput<S[key]>;
|
|
158
169
|
} & {
|
|
159
|
-
[key in keyof S as key extends string ? InferInput<S[key]> extends never ? never : undefined extends InferInput<S[key]> ? never : key : never]-?: InferInput<S[key]>;
|
|
170
|
+
-readonly [key in keyof S as key extends string ? InferInput<S[key]> extends never ? never : undefined extends InferInput<S[key]> ? never : key : never]-?: InferInput<S[key]>;
|
|
160
171
|
};
|
|
161
172
|
/** Utility type to infer primitive branding according to a string */
|
|
162
173
|
export type Branding<S extends string> = {
|
package/dist/types.mjs
CHANGED
|
@@ -12,6 +12,7 @@ var defaultValidationOptions = {
|
|
|
12
12
|
function makeValidatorFactory(validator, factory) {
|
|
13
13
|
return Object.assign(factory, {
|
|
14
14
|
optional: validator.optional,
|
|
15
|
+
defaultValue: validator.defaultValue,
|
|
15
16
|
validate: validator.validate.bind(validator),
|
|
16
17
|
[Symbol.iterator]: validator[Symbol.iterator].bind(validator),
|
|
17
18
|
[Symbol.justusValidator]: validator
|
|
@@ -19,7 +20,8 @@ function makeValidatorFactory(validator, factory) {
|
|
|
19
20
|
}
|
|
20
21
|
var AbstractValidator = class {
|
|
21
22
|
[Symbol.justusValidator] = this;
|
|
22
|
-
optional =
|
|
23
|
+
optional = false;
|
|
24
|
+
defaultValue = void 0;
|
|
23
25
|
/** Allow any `Validator` to be used as a rest parameter in `Tuple`s */
|
|
24
26
|
*[Symbol.iterator]() {
|
|
25
27
|
yield { [Symbol.justusRestValidator]: this };
|
package/dist/types.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/types.ts"],
|
|
4
|
-
"mappings": ";AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;
|
|
4
|
+
"mappings": ";AAgBA,OAAO,iBAAiB,QAAQ;AAAA,EAC9B,iBAAiB,EAAE,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,EACzD,qBAAqB,EAAE,OAAO,OAAO,IAAI,sBAAsB,EAAE;AAAA,EACjE,2BAA2B,EAAE,OAAO,OAAO,IAAI,4BAA4B,EAAE;AAC/E,CAAC;AAqBM,IAAM,2BAAkE;AAAA,EAC7E,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oBAAoB;AACtB;AAkCO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,cAAc,UAAU;AAAA,IACxB,UAAU,UAAU,SAAS,KAAK,SAAS;AAAA,IAC3C,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,QAAQ,EAAE,KAAK,SAAS;AAAA,IAC5D,CAAC,OAAO,eAAe,GAAG;AAAA,EAC5B,CAAC;AACH;AAMO,IAAe,oBAAf,MACwD;AAAA,EAC7D,CAAC,OAAO,eAAe,IAAI;AAAA,EAE3B,WAAoB;AAAA,EACpB,eAA8B;AAAA;AAAA,EAM9B,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utilities.cjs
CHANGED
|
@@ -23,8 +23,10 @@ __export(utilities_exports, {
|
|
|
23
23
|
getValidator: () => getValidator
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(utilities_exports);
|
|
26
|
+
var import_errors = require("./errors.cjs");
|
|
26
27
|
var import_registry = require("./registry.cjs");
|
|
27
28
|
function getValidator(validation) {
|
|
29
|
+
(0, import_errors.assertSchema)(validation !== void 0, "No validator for undefined validation");
|
|
28
30
|
if (validation === null)
|
|
29
31
|
return new (import_registry.registry.get("constant"))(null);
|
|
30
32
|
if (validation[Symbol.justusValidator]) {
|
package/dist/utilities.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utilities.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAC7B,sBAAyB;AASlB,SAAS,aAAa,YAAmC;AAC9D,kCAAa,eAAe,QAAW,uCAAuC;AAG9E,MAAI,eAAe;AAAM,WAAO,KAAK,yBAAS,IAAI,UAAU,GAAG,IAAI;AAGnE,MAAW,WAAY,OAAO,eAAe,GAAG;AAC9C,WAAc,WAAY,OAAO,eAAe;AAAA,EAClD;AAGA,UAAQ,OAAO,YAAY;AAAA,IAEzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,KAAK,yBAAS,IAAI,UAAU,GAAG,UAAU;AAAA,IAGlD,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,KAAK,yBAAS,IAAI,OAAO,GAAG,UAAU;AAE5E,aAAO,KAAK,yBAAS,IAAI,QAAQ,GAAG,UAAoB;AAAA,IAG1D;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,UAAU,GAAG;AAAA,EACxE;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utilities.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
import type { Validation, Validator } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Return the `Validator` for the given `Validation`.
|
|
4
|
-
*
|
|
5
|
-
* When `validation` is `undefined` it will return a `Validator<any>`,
|
|
6
|
-
*/
|
|
2
|
+
/** Return the `Validator` for the given `Validation` */
|
|
7
3
|
export declare function getValidator(validation: Validation): Validator;
|
package/dist/utilities.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// utilities.ts
|
|
2
|
+
import { assertSchema } from "./errors.mjs";
|
|
2
3
|
import { registry } from "./registry.mjs";
|
|
3
4
|
function getValidator(validation) {
|
|
5
|
+
assertSchema(validation !== void 0, "No validator for undefined validation");
|
|
4
6
|
if (validation === null)
|
|
5
7
|
return new (registry.get("constant"))(null);
|
|
6
8
|
if (validation[Symbol.justusValidator]) {
|