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.cjs
CHANGED
|
@@ -30,13 +30,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// dts-generator.ts
|
|
31
31
|
var dts_generator_exports = {};
|
|
32
32
|
__export(dts_generator_exports, {
|
|
33
|
+
generateDeclarations: () => generateDeclarations,
|
|
33
34
|
generateTypes: () => generateTypes,
|
|
34
35
|
registerTypeGenerator: () => registerTypeGenerator
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(dts_generator_exports);
|
|
37
38
|
var import_typescript = __toESM(require("typescript"));
|
|
38
39
|
var import_errors = require("./errors.cjs");
|
|
40
|
+
var import_ean13 = require("./extra/ean13.cjs");
|
|
39
41
|
var import_url = require("./extra/url.cjs");
|
|
42
|
+
var import_uuid = require("./extra/uuid.cjs");
|
|
40
43
|
var import_utilities = require("./utilities.cjs");
|
|
41
44
|
var import_any = require("./validators/any.cjs");
|
|
42
45
|
var import_array = require("./validators/array.cjs");
|
|
@@ -50,45 +53,231 @@ var import_optional = require("./validators/optional.cjs");
|
|
|
50
53
|
var import_string = require("./validators/string.cjs");
|
|
51
54
|
var import_tuple = require("./validators/tuple.cjs");
|
|
52
55
|
var import_union = require("./validators/union.cjs");
|
|
56
|
+
function typeEqual(a, b) {
|
|
57
|
+
function eq(a2, b2) {
|
|
58
|
+
if (typeof a2 == "object" && a2 != null && (typeof b2 == "object" && b2 != null)) {
|
|
59
|
+
for (const key in a2) {
|
|
60
|
+
if (!eq(a2[key], b2[key]))
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
for (const key in b2) {
|
|
64
|
+
if (!eq(a2[key], b2[key]))
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
} else {
|
|
69
|
+
return a2 === b2;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return eq(a, b);
|
|
73
|
+
}
|
|
53
74
|
var generators = /* @__PURE__ */ new Map();
|
|
54
75
|
function registerTypeGenerator(validator, generator) {
|
|
55
76
|
generators.set(validator, generator);
|
|
56
77
|
}
|
|
57
|
-
function generateTypes(validations) {
|
|
78
|
+
function generateTypes(validations, isInput = false) {
|
|
58
79
|
const validators = /* @__PURE__ */ new Map();
|
|
59
80
|
const references = /* @__PURE__ */ new Map();
|
|
60
|
-
|
|
81
|
+
for (const [name, validation] of Object.entries(validations)) {
|
|
61
82
|
const validator = (0, import_utilities.getValidator)(validation);
|
|
83
|
+
validators.set(name, validator);
|
|
62
84
|
if (!references.has(validator))
|
|
63
85
|
references.set(validator, name);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
for (const [name,
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
referenceable.delete(validator);
|
|
71
|
-
}
|
|
72
|
-
const type = generateTypeNode(validator, referenceable);
|
|
73
|
-
const modifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ExportKeyword)];
|
|
74
|
-
const decl = import_typescript.default.factory.createTypeAliasDeclaration(modifiers, name, [], type);
|
|
75
|
-
types.push(decl);
|
|
86
|
+
}
|
|
87
|
+
const types = generateTypeNodes(validators, references, isInput);
|
|
88
|
+
const aliases = [];
|
|
89
|
+
for (const [name, type] of types.entries()) {
|
|
90
|
+
const alias = import_typescript.default.factory.createTypeAliasDeclaration(exportModifiers, name, [], type);
|
|
91
|
+
aliases.push(alias);
|
|
76
92
|
}
|
|
77
93
|
return import_typescript.default.createPrinter().printList(
|
|
78
94
|
import_typescript.default.ListFormat.SourceFileStatements,
|
|
79
|
-
import_typescript.default.factory.createNodeArray(
|
|
95
|
+
import_typescript.default.factory.createNodeArray(aliases),
|
|
80
96
|
import_typescript.default.createSourceFile("types.d.ts", "", import_typescript.default.ScriptTarget.Latest)
|
|
81
97
|
);
|
|
82
98
|
}
|
|
83
|
-
function
|
|
99
|
+
function generateDeclarations(validations) {
|
|
100
|
+
const names = [];
|
|
101
|
+
const outputValidators = /* @__PURE__ */ new Map();
|
|
102
|
+
const outputReferences = /* @__PURE__ */ new Map();
|
|
103
|
+
const inputValidators = /* @__PURE__ */ new Map();
|
|
104
|
+
const inputReferences = /* @__PURE__ */ new Map();
|
|
105
|
+
for (const [name, validation] of Object.entries(validations)) {
|
|
106
|
+
const prefix = /validator$/i.test(name) ? name.slice(0, -9) : /validation$/i.test(name) ? name.slice(0, -10) : name;
|
|
107
|
+
const output = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}`;
|
|
108
|
+
const input = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}Input`;
|
|
109
|
+
const validator = (0, import_utilities.getValidator)(validation);
|
|
110
|
+
names.push({ name, output, input });
|
|
111
|
+
outputValidators.set(output, validator);
|
|
112
|
+
inputValidators.set(input, validator);
|
|
113
|
+
if (!outputReferences.has(validator))
|
|
114
|
+
outputReferences.set(validator, output);
|
|
115
|
+
if (!inputReferences.has(validator))
|
|
116
|
+
inputReferences.set(validator, input);
|
|
117
|
+
}
|
|
118
|
+
const outputTypes = generateTypeNodes(outputValidators, outputReferences, false);
|
|
119
|
+
const inputTypes = generateTypeNodes(inputValidators, inputReferences, true);
|
|
120
|
+
const statements = [];
|
|
121
|
+
for (const { name, input, output } of names) {
|
|
122
|
+
const outputType = outputTypes.get(output);
|
|
123
|
+
const inputType = inputTypes.get(input);
|
|
124
|
+
const validation = validations[name];
|
|
125
|
+
const validator = outputValidators.get(output);
|
|
126
|
+
(0, import_errors.assertSchema)(!!outputType, `No output type "${output}" generated for validation "${name}"`);
|
|
127
|
+
(0, import_errors.assertSchema)(!!inputType, `No input type "${input}" generated for validation "${name}"`);
|
|
128
|
+
(0, import_errors.assertSchema)(!!validator, `No validator for "${name}"`);
|
|
129
|
+
const sameType = typeEqual(inputType, outputType);
|
|
130
|
+
const inputAlias = sameType ? import_typescript.default.factory.createTypeReferenceNode(output) : inputType;
|
|
131
|
+
const outputDeclaration = import_typescript.default.factory.createTypeAliasDeclaration(exportModifiers, output, [], outputType);
|
|
132
|
+
const inputDeclaration = import_typescript.default.factory.createTypeAliasDeclaration(exportModifiers, input, [], inputAlias);
|
|
133
|
+
const variableDeclarationType = generateVariableDeclarationType(validation, validator, outputReferences);
|
|
134
|
+
const variableDeclaration = import_typescript.default.factory.createVariableStatement(
|
|
135
|
+
exportModifiers,
|
|
136
|
+
// "export"
|
|
137
|
+
import_typescript.default.factory.createVariableDeclarationList([
|
|
138
|
+
import_typescript.default.factory.createVariableDeclaration(
|
|
139
|
+
name,
|
|
140
|
+
// ..................................... "myTypeValidator"
|
|
141
|
+
void 0,
|
|
142
|
+
// no exclamation token
|
|
143
|
+
variableDeclarationType
|
|
144
|
+
)
|
|
145
|
+
], import_typescript.default.NodeFlags.Const)
|
|
146
|
+
// ......................... "const"
|
|
147
|
+
);
|
|
148
|
+
import_typescript.default.addSyntheticLeadingComment(
|
|
149
|
+
outputDeclaration,
|
|
150
|
+
import_typescript.default.SyntaxKind.MultiLineCommentTrivia,
|
|
151
|
+
` ${`----- ${name} `.padEnd(74, "-")} `,
|
|
152
|
+
true
|
|
153
|
+
// newline
|
|
154
|
+
);
|
|
155
|
+
import_typescript.default.addSyntheticLeadingComment(
|
|
156
|
+
outputDeclaration,
|
|
157
|
+
import_typescript.default.SyntaxKind.MultiLineCommentTrivia,
|
|
158
|
+
`* Validated type for {@link ${name}} `,
|
|
159
|
+
true
|
|
160
|
+
// newline
|
|
161
|
+
);
|
|
162
|
+
import_typescript.default.addSyntheticLeadingComment(
|
|
163
|
+
inputDeclaration,
|
|
164
|
+
import_typescript.default.SyntaxKind.MultiLineCommentTrivia,
|
|
165
|
+
`* Input type for {@link ${name}} `,
|
|
166
|
+
true
|
|
167
|
+
// newline
|
|
168
|
+
);
|
|
169
|
+
import_typescript.default.addSyntheticLeadingComment(
|
|
170
|
+
variableDeclaration,
|
|
171
|
+
import_typescript.default.SyntaxKind.MultiLineCommentTrivia,
|
|
172
|
+
`* The \`${name}\` validator `,
|
|
173
|
+
true
|
|
174
|
+
// newline
|
|
175
|
+
);
|
|
176
|
+
statements.push(
|
|
177
|
+
outputDeclaration,
|
|
178
|
+
inputDeclaration,
|
|
179
|
+
variableDeclaration
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
const dts = import_typescript.default.createPrinter().printList(
|
|
183
|
+
import_typescript.default.ListFormat.SourceFileStatements,
|
|
184
|
+
import_typescript.default.factory.createNodeArray(statements),
|
|
185
|
+
import_typescript.default.createSourceFile("types.d.ts", "", import_typescript.default.ScriptTarget.Latest)
|
|
186
|
+
);
|
|
187
|
+
return `// Generated on ${(/* @__PURE__ */ new Date()).toUTCString()}
|
|
188
|
+
|
|
189
|
+
${dts}`;
|
|
190
|
+
}
|
|
191
|
+
function isValidator(validation) {
|
|
192
|
+
(0, import_errors.assertSchema)(validation !== void 0, 'Found "undefined" validation in tree');
|
|
193
|
+
if (validation === null)
|
|
194
|
+
return false;
|
|
195
|
+
if (typeof validation !== "function" && typeof validation !== "object") {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
if (Array.isArray(validation))
|
|
199
|
+
return false;
|
|
200
|
+
if ("validate" in validation && typeof validation.validate === "function") {
|
|
201
|
+
return !isValidator(validation.validate);
|
|
202
|
+
} else {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function generateJustusTypeImport(typeName, typeArguments = []) {
|
|
207
|
+
return import_typescript.default.factory.createImportTypeNode(
|
|
208
|
+
// .................... "import"
|
|
209
|
+
import_typescript.default.factory.createLiteralTypeNode(
|
|
210
|
+
import_typescript.default.factory.createStringLiteral("justus")
|
|
211
|
+
// .......... "justus"
|
|
212
|
+
),
|
|
213
|
+
void 0,
|
|
214
|
+
// import assertions
|
|
215
|
+
import_typescript.default.factory.createIdentifier(typeName),
|
|
216
|
+
// ................. "JustusType"
|
|
217
|
+
typeArguments
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
function generateVariableDeclarationType(validation, validator, references) {
|
|
221
|
+
if (isValidator(validation)) {
|
|
222
|
+
const validatedType = generateTypeNode(validator, references, false);
|
|
223
|
+
return generateJustusTypeImport("Validator", [validatedType]);
|
|
224
|
+
}
|
|
225
|
+
if (validator instanceof import_constant.ConstantValidator) {
|
|
226
|
+
return generateTypeNode(validator, references, false);
|
|
227
|
+
}
|
|
228
|
+
if (validator instanceof import_object.ObjectValidator) {
|
|
229
|
+
const properties = [];
|
|
230
|
+
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
231
|
+
const value = validator.schema[key];
|
|
232
|
+
const type = generateVariableDeclarationType(value, valueValidator, references);
|
|
233
|
+
properties.push(import_typescript.default.factory.createPropertySignature(
|
|
234
|
+
readonlyModifiers,
|
|
235
|
+
key,
|
|
236
|
+
void 0,
|
|
237
|
+
// no question mark
|
|
238
|
+
type
|
|
239
|
+
));
|
|
240
|
+
}
|
|
241
|
+
if (validator.additionalProperties) {
|
|
242
|
+
const additional = validator.additionalProperties;
|
|
243
|
+
const type = generateVariableDeclarationType(additional, additional, references);
|
|
244
|
+
properties.push(import_typescript.default.factory.createPropertySignature(
|
|
245
|
+
readonlyModifiers,
|
|
246
|
+
import_typescript.default.factory.createComputedPropertyName(
|
|
247
|
+
import_typescript.default.factory.createPropertyAccessExpression(
|
|
248
|
+
import_typescript.default.factory.createIdentifier("Symbol"),
|
|
249
|
+
"justusAdditionalValidator"
|
|
250
|
+
)
|
|
251
|
+
),
|
|
252
|
+
void 0,
|
|
253
|
+
// no question mark
|
|
254
|
+
type
|
|
255
|
+
));
|
|
256
|
+
}
|
|
257
|
+
return import_typescript.default.factory.createTypeLiteralNode(properties);
|
|
258
|
+
}
|
|
259
|
+
(0, import_errors.assertSchema)(false, `Unable to generate variable declaration for ${validator.constructor.name}`);
|
|
260
|
+
}
|
|
261
|
+
function generateTypeNodes(validators, references, isInput) {
|
|
262
|
+
const types = /* @__PURE__ */ new Map();
|
|
263
|
+
for (const [name, validator] of validators.entries()) {
|
|
264
|
+
const referenceable = new Map(references);
|
|
265
|
+
if (referenceable.get(validator) === name)
|
|
266
|
+
referenceable.delete(validator);
|
|
267
|
+
types.set(name, generateTypeNode(validator, referenceable, isInput));
|
|
268
|
+
}
|
|
269
|
+
return types;
|
|
270
|
+
}
|
|
271
|
+
function generateTypeNode(validator, references, isInput) {
|
|
84
272
|
const reference = references.get(validator);
|
|
85
273
|
if (reference)
|
|
86
274
|
return import_typescript.default.factory.createTypeReferenceNode(reference);
|
|
87
275
|
const generator = generators.get(validator) || generators.get(validator.constructor);
|
|
88
276
|
(0, import_errors.assertSchema)(!!generator, `Type generator for "${validator.constructor.name}" not found`);
|
|
89
|
-
const type = generator(validator, references);
|
|
90
|
-
if (!validator.optional)
|
|
277
|
+
const type = generator(validator, references, isInput);
|
|
278
|
+
if (!(validator.optional || isInput && validator.defaultValue !== void 0)) {
|
|
91
279
|
return type;
|
|
280
|
+
}
|
|
92
281
|
if (type === neverType)
|
|
93
282
|
return undefinedType;
|
|
94
283
|
if (import_typescript.default.isUnionTypeNode(type)) {
|
|
@@ -99,6 +288,7 @@ function generateTypeNode(validator, references) {
|
|
|
99
288
|
var anyType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.AnyKeyword);
|
|
100
289
|
var anyArrayType = import_typescript.default.factory.createArrayTypeNode(anyType);
|
|
101
290
|
var booleanType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.BooleanKeyword);
|
|
291
|
+
var dateType = import_typescript.default.factory.createTypeReferenceNode("Date");
|
|
102
292
|
var numberType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NumberKeyword);
|
|
103
293
|
var neverType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NeverKeyword);
|
|
104
294
|
var stringType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.StringKeyword);
|
|
@@ -116,42 +306,54 @@ var recordType = import_typescript.default.factory.createMappedTypeNode(
|
|
|
116
306
|
void 0
|
|
117
307
|
);
|
|
118
308
|
var optionalKeyword = import_typescript.default.factory.createToken(import_typescript.default.SyntaxKind.QuestionToken);
|
|
309
|
+
var exportModifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ExportKeyword)];
|
|
310
|
+
var readonlyModifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ReadonlyKeyword)];
|
|
119
311
|
registerTypeGenerator(import_any.AnyValidator, () => anyType);
|
|
120
312
|
registerTypeGenerator(import_array.AnyArrayValidator, () => anyArrayType);
|
|
121
313
|
registerTypeGenerator(import_number.AnyNumberValidator, () => numberType);
|
|
122
314
|
registerTypeGenerator(import_object.AnyObjectValidator, () => recordType);
|
|
123
315
|
registerTypeGenerator(import_string.AnyStringValidator, () => stringType);
|
|
124
|
-
registerTypeGenerator(import_boolean.BooleanValidator, () => booleanType);
|
|
125
316
|
registerTypeGenerator(import_never.NeverValidator, () => neverType);
|
|
126
|
-
registerTypeGenerator(
|
|
127
|
-
|
|
128
|
-
registerTypeGenerator(import_array.ArrayValidator, (validator, references) => {
|
|
129
|
-
const itemType = generateTypeNode(validator.items, references);
|
|
317
|
+
registerTypeGenerator(import_array.ArrayValidator, (validator, references, isInput) => {
|
|
318
|
+
const itemType = generateTypeNode(validator.items, references, isInput);
|
|
130
319
|
return import_typescript.default.factory.createArrayTypeNode(itemType);
|
|
131
320
|
});
|
|
321
|
+
registerTypeGenerator(import_boolean.BooleanValidator, (validator, _references, isInput) => {
|
|
322
|
+
return isInput && validator.fromString ? import_typescript.default.factory.createUnionTypeNode([
|
|
323
|
+
booleanType,
|
|
324
|
+
import_typescript.default.factory.createLiteralTypeNode(import_typescript.default.factory.createStringLiteral("true")),
|
|
325
|
+
import_typescript.default.factory.createLiteralTypeNode(import_typescript.default.factory.createStringLiteral("false"))
|
|
326
|
+
]) : booleanType;
|
|
327
|
+
});
|
|
132
328
|
registerTypeGenerator(import_constant.ConstantValidator, (validator) => {
|
|
133
329
|
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;
|
|
134
330
|
(0, import_errors.assertSchema)(!!literal, `Invalid constant "${validator.constant}"`);
|
|
135
331
|
return import_typescript.default.factory.createLiteralTypeNode(literal);
|
|
136
332
|
});
|
|
137
|
-
registerTypeGenerator(
|
|
333
|
+
registerTypeGenerator(import_date.DateValidator, (validator, _references, isInput) => {
|
|
334
|
+
return isInput ? validator.format === "iso" ? stringType : validator.format === "timestamp" ? numberType : import_typescript.default.factory.createUnionTypeNode([dateType, numberType, stringType]) : dateType;
|
|
335
|
+
});
|
|
336
|
+
registerTypeGenerator(import_number.NumberValidator, (validator, _references, isInput) => {
|
|
337
|
+
if (isInput) {
|
|
338
|
+
return validator.fromString ? import_typescript.default.factory.createUnionTypeNode([numberType, stringType]) : numberType;
|
|
339
|
+
}
|
|
138
340
|
if (!validator.brand)
|
|
139
341
|
return numberType;
|
|
140
342
|
const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
141
343
|
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
142
344
|
return import_typescript.default.factory.createIntersectionTypeNode([numberType, literal]);
|
|
143
345
|
});
|
|
144
|
-
registerTypeGenerator(import_optional.OptionalValidator, (validator, references) => {
|
|
145
|
-
return generateTypeNode(validator.validator, references);
|
|
346
|
+
registerTypeGenerator(import_optional.OptionalValidator, (validator, references, isInput) => {
|
|
347
|
+
return generateTypeNode(validator.validator, references, isInput);
|
|
146
348
|
});
|
|
147
|
-
registerTypeGenerator(import_string.StringValidator, (validator) => {
|
|
148
|
-
if (!validator.brand)
|
|
349
|
+
registerTypeGenerator(import_string.StringValidator, (validator, _references, isInput) => {
|
|
350
|
+
if (!validator.brand || isInput)
|
|
149
351
|
return stringType;
|
|
150
352
|
const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
|
|
151
353
|
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
152
354
|
return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
|
|
153
355
|
});
|
|
154
|
-
registerTypeGenerator(import_tuple.TupleValidator, (validator, references) => {
|
|
356
|
+
registerTypeGenerator(import_tuple.TupleValidator, (validator, references, isInput) => {
|
|
155
357
|
const members = validator.members;
|
|
156
358
|
const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
|
|
157
359
|
if (!single) {
|
|
@@ -164,35 +366,35 @@ registerTypeGenerator(import_tuple.TupleValidator, (validator, references) => {
|
|
|
164
366
|
}, { count: 0, first: members.length, next: -1 });
|
|
165
367
|
if (count < 2) {
|
|
166
368
|
const types2 = members.map(({ single, validator: validator2 }) => {
|
|
167
|
-
const memberType = generateTypeNode(validator2, references);
|
|
369
|
+
const memberType = generateTypeNode(validator2, references, isInput);
|
|
168
370
|
if (single)
|
|
169
|
-
return generateTypeNode(validator2, references);
|
|
371
|
+
return generateTypeNode(validator2, references, isInput);
|
|
170
372
|
const arrayType = import_typescript.default.factory.createArrayTypeNode(memberType);
|
|
171
373
|
return import_typescript.default.factory.createRestTypeNode(arrayType);
|
|
172
374
|
});
|
|
173
375
|
return import_typescript.default.factory.createTupleTypeNode(types2);
|
|
174
376
|
}
|
|
175
|
-
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
176
|
-
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
177
|
-
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
|
|
377
|
+
const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
378
|
+
const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
379
|
+
const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
|
|
178
380
|
const union = import_typescript.default.factory.createUnionTypeNode(types);
|
|
179
381
|
const array = import_typescript.default.factory.createArrayTypeNode(union);
|
|
180
382
|
const rest = import_typescript.default.factory.createRestTypeNode(array);
|
|
181
383
|
return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
|
|
182
384
|
});
|
|
183
|
-
registerTypeGenerator(import_union.AllOfValidator, (validator, references) => {
|
|
184
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
385
|
+
registerTypeGenerator(import_union.AllOfValidator, (validator, references, isInput) => {
|
|
386
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
185
387
|
return import_typescript.default.factory.createIntersectionTypeNode(members);
|
|
186
388
|
});
|
|
187
|
-
registerTypeGenerator(import_union.OneOfValidator, (validator, references) => {
|
|
188
|
-
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
|
|
389
|
+
registerTypeGenerator(import_union.OneOfValidator, (validator, references, isInput) => {
|
|
390
|
+
const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
|
|
189
391
|
return import_typescript.default.factory.createUnionTypeNode(members);
|
|
190
392
|
});
|
|
191
|
-
registerTypeGenerator(import_object.ObjectValidator, (validator, references) => {
|
|
393
|
+
registerTypeGenerator(import_object.ObjectValidator, (validator, references, isInput) => {
|
|
192
394
|
const properties = [];
|
|
193
395
|
for (const [key, valueValidator] of validator.validators.entries()) {
|
|
194
|
-
const type = generateTypeNode(valueValidator, references);
|
|
195
|
-
const optional = valueValidator.optional;
|
|
396
|
+
const type = generateTypeNode(valueValidator, references, isInput);
|
|
397
|
+
const optional = isInput && valueValidator.defaultValue !== void 0 || valueValidator.optional;
|
|
196
398
|
const signature = import_typescript.default.factory.createPropertySignature(
|
|
197
399
|
void 0,
|
|
198
400
|
key,
|
|
@@ -202,7 +404,7 @@ registerTypeGenerator(import_object.ObjectValidator, (validator, references) =>
|
|
|
202
404
|
properties.push(signature);
|
|
203
405
|
}
|
|
204
406
|
if (validator.additionalProperties) {
|
|
205
|
-
const propertyType = generateTypeNode(validator.additionalProperties, references);
|
|
407
|
+
const propertyType = generateTypeNode(validator.additionalProperties, references, isInput);
|
|
206
408
|
const extra = import_typescript.default.factory.createMappedTypeNode(
|
|
207
409
|
void 0,
|
|
208
410
|
// readonly
|
|
@@ -223,8 +425,31 @@ registerTypeGenerator(import_object.ObjectValidator, (validator, references) =>
|
|
|
223
425
|
return import_typescript.default.factory.createTypeLiteralNode(properties);
|
|
224
426
|
}
|
|
225
427
|
});
|
|
428
|
+
registerTypeGenerator(import_ean13.EAN13Validator, (_validator, _references, isInput) => {
|
|
429
|
+
if (isInput)
|
|
430
|
+
return import_typescript.default.factory.createUnionTypeNode([numberType, stringType]);
|
|
431
|
+
const signature = import_typescript.default.factory.createPropertySignature(void 0, "__ean_13", void 0, neverType);
|
|
432
|
+
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
433
|
+
return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
|
|
434
|
+
});
|
|
435
|
+
registerTypeGenerator(import_uuid.UUIDValidator, (_validator, _references, isInput) => {
|
|
436
|
+
if (isInput)
|
|
437
|
+
return stringType;
|
|
438
|
+
const signature = import_typescript.default.factory.createPropertySignature(void 0, "__uuid", void 0, neverType);
|
|
439
|
+
const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
|
|
440
|
+
return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
|
|
441
|
+
});
|
|
442
|
+
registerTypeGenerator(import_url.URLValidator, (_validator, _references, isInput) => {
|
|
443
|
+
const urlType = import_typescript.default.factory.createTypeReferenceNode("URL");
|
|
444
|
+
if (isInput) {
|
|
445
|
+
return import_typescript.default.factory.createUnionTypeNode([urlType, stringType]);
|
|
446
|
+
} else {
|
|
447
|
+
return urlType;
|
|
448
|
+
}
|
|
449
|
+
});
|
|
226
450
|
// Annotate the CommonJS export names for ESM import in node:
|
|
227
451
|
0 && (module.exports = {
|
|
452
|
+
generateDeclarations,
|
|
228
453
|
generateTypes,
|
|
229
454
|
registerTypeGenerator
|
|
230
455
|
});
|
|
@@ -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": ["ts", "count", "first", "next", "types", "validator"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["a", "b", "ts", "count", "first", "next", "types", "validator"]
|
|
6
6
|
}
|
package/dist/dts-generator.d.ts
CHANGED
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import type { Validation, Validator } from './types';
|
|
3
3
|
/** A function taking a `Validator` and producing its `TypeNode`. */
|
|
4
|
-
type TypeGenerator<V extends Validator = Validator> = (validator: V, references: ReadonlyMap<Validator, string
|
|
4
|
+
type TypeGenerator<V extends Validator = Validator> = (validator: V, references: ReadonlyMap<Validator, string>, isInput: boolean) => ts.TypeNode;
|
|
5
5
|
/** The generic constructor of a `Validator` instance. */
|
|
6
6
|
type ValidatorConstructor<V extends Validator = Validator> = {
|
|
7
7
|
new (...args: any[]): V;
|
|
8
8
|
};
|
|
9
9
|
/** Register a `TypeGenerator` function for a `Validator`. */
|
|
10
10
|
export declare function registerTypeGenerator<V extends Validator>(validator: V | ValidatorConstructor<V>, generator: TypeGenerator<V>): void;
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Generate typings (validated or input type) for the given `Validation`s.
|
|
13
|
+
*
|
|
14
|
+
* When `isInput` is `false` (the default) then the _validated_ type will be
|
|
15
|
+
* generated (that is, optional fields with default values will be considered
|
|
16
|
+
* as defined).
|
|
17
|
+
*
|
|
18
|
+
* When `isInput` is `true` then the _input_ type will be generated (that is,
|
|
19
|
+
* optional fields will be considered as optional).
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateTypes(validations: Record<string, Validation>, isInput?: boolean): string;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a full declaration map for the specified validations.
|
|
24
|
+
*
|
|
25
|
+
* The full declaration map will include validated and input types and the
|
|
26
|
+
* declaration of the validator itself. For example:
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* const testValidator = object({ test: optional(string, 'myValue' ) })
|
|
30
|
+
* generateDeclarations({ testValidator })
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* Will result in the following declaration to be emitted:
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* export type Test: { test: string }
|
|
37
|
+
* export type TestInput: { test?: string }
|
|
38
|
+
* export const testValidator: Validator<Test, TestInput>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function generateDeclarations(validations: Record<string, Validation>): string;
|
|
13
42
|
export {};
|