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.
@@ -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
- Object.entries(validations).forEach(([name, validation]) => {
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
- validators.set(name, validator);
65
- });
66
- const types = [];
67
- for (const [name, validator] of validators.entries()) {
68
- const referenceable = new Map(references);
69
- if (referenceable.get(validator) === name) {
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(types),
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 generateTypeNode(validator, references) {
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(import_date.DateValidator, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
127
- registerTypeGenerator(import_url.URLValidator, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
128
- registerTypeGenerator(import_array.ArrayValidator, (validator, references) => {
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(import_number.NumberValidator, (validator) => {
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
  }
@@ -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>) => ts.TypeNode;
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
- /** Generate typings for the given `Validation`s. */
12
- export declare function generateTypes(validations: Record<string, Validation>): string;
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 {};