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.
@@ -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,228 @@ 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
+ return 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
+ }
188
+ function isValidator(validation) {
189
+ (0, import_errors.assertSchema)(validation !== void 0, 'Found "undefined" validation in tree');
190
+ if (validation === null)
191
+ return false;
192
+ if (typeof validation !== "function" && typeof validation !== "object") {
193
+ return false;
194
+ }
195
+ if (Array.isArray(validation))
196
+ return false;
197
+ if ("validate" in validation && typeof validation.validate === "function") {
198
+ return !isValidator(validation.validate);
199
+ } else {
200
+ return false;
201
+ }
202
+ }
203
+ function generateJustusTypeImport(typeName, typeArguments = []) {
204
+ return import_typescript.default.factory.createImportTypeNode(
205
+ // .................... "import"
206
+ import_typescript.default.factory.createLiteralTypeNode(
207
+ import_typescript.default.factory.createStringLiteral("justus")
208
+ // .......... "justus"
209
+ ),
210
+ void 0,
211
+ // import assertions
212
+ import_typescript.default.factory.createIdentifier(typeName),
213
+ // ................. "JustusType"
214
+ typeArguments
215
+ );
216
+ }
217
+ function generateVariableDeclarationType(validation, validator, references) {
218
+ if (isValidator(validation)) {
219
+ const validatedType = generateTypeNode(validator, references, false);
220
+ return generateJustusTypeImport("Validator", [validatedType]);
221
+ }
222
+ if (validator instanceof import_constant.ConstantValidator) {
223
+ return generateTypeNode(validator, references, false);
224
+ }
225
+ if (validator instanceof import_object.ObjectValidator) {
226
+ const properties = [];
227
+ for (const [key, valueValidator] of validator.validators.entries()) {
228
+ const value = validator.schema[key];
229
+ const type = generateVariableDeclarationType(value, valueValidator, references);
230
+ properties.push(import_typescript.default.factory.createPropertySignature(
231
+ readonlyModifiers,
232
+ key,
233
+ void 0,
234
+ // no question mark
235
+ type
236
+ ));
237
+ }
238
+ if (validator.additionalProperties) {
239
+ const additional = validator.additionalProperties;
240
+ const type = generateVariableDeclarationType(additional, additional, references);
241
+ properties.push(import_typescript.default.factory.createPropertySignature(
242
+ readonlyModifiers,
243
+ import_typescript.default.factory.createComputedPropertyName(
244
+ import_typescript.default.factory.createPropertyAccessExpression(
245
+ import_typescript.default.factory.createIdentifier("Symbol"),
246
+ "justusAdditionalValidator"
247
+ )
248
+ ),
249
+ void 0,
250
+ // no question mark
251
+ type
252
+ ));
253
+ }
254
+ return import_typescript.default.factory.createTypeLiteralNode(properties);
255
+ }
256
+ (0, import_errors.assertSchema)(false, `Unable to generate variable declaration for ${validator.constructor.name}`);
257
+ }
258
+ function generateTypeNodes(validators, references, isInput) {
259
+ const types = /* @__PURE__ */ new Map();
260
+ for (const [name, validator] of validators.entries()) {
261
+ const referenceable = new Map(references);
262
+ if (referenceable.get(validator) === name)
263
+ referenceable.delete(validator);
264
+ types.set(name, generateTypeNode(validator, referenceable, isInput));
265
+ }
266
+ return types;
267
+ }
268
+ function generateTypeNode(validator, references, isInput) {
84
269
  const reference = references.get(validator);
85
270
  if (reference)
86
271
  return import_typescript.default.factory.createTypeReferenceNode(reference);
87
272
  const generator = generators.get(validator) || generators.get(validator.constructor);
88
273
  (0, import_errors.assertSchema)(!!generator, `Type generator for "${validator.constructor.name}" not found`);
89
- const type = generator(validator, references);
90
- if (!validator.optional)
274
+ const type = generator(validator, references, isInput);
275
+ if (!(validator.optional || isInput && validator.defaultValue !== void 0)) {
91
276
  return type;
277
+ }
92
278
  if (type === neverType)
93
279
  return undefinedType;
94
280
  if (import_typescript.default.isUnionTypeNode(type)) {
@@ -99,6 +285,7 @@ function generateTypeNode(validator, references) {
99
285
  var anyType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.AnyKeyword);
100
286
  var anyArrayType = import_typescript.default.factory.createArrayTypeNode(anyType);
101
287
  var booleanType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.BooleanKeyword);
288
+ var dateType = import_typescript.default.factory.createTypeReferenceNode("Date");
102
289
  var numberType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NumberKeyword);
103
290
  var neverType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NeverKeyword);
104
291
  var stringType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.StringKeyword);
@@ -116,42 +303,54 @@ var recordType = import_typescript.default.factory.createMappedTypeNode(
116
303
  void 0
117
304
  );
118
305
  var optionalKeyword = import_typescript.default.factory.createToken(import_typescript.default.SyntaxKind.QuestionToken);
306
+ var exportModifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ExportKeyword)];
307
+ var readonlyModifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ReadonlyKeyword)];
119
308
  registerTypeGenerator(import_any.AnyValidator, () => anyType);
120
309
  registerTypeGenerator(import_array.AnyArrayValidator, () => anyArrayType);
121
310
  registerTypeGenerator(import_number.AnyNumberValidator, () => numberType);
122
311
  registerTypeGenerator(import_object.AnyObjectValidator, () => recordType);
123
312
  registerTypeGenerator(import_string.AnyStringValidator, () => stringType);
124
- registerTypeGenerator(import_boolean.BooleanValidator, () => booleanType);
125
313
  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);
314
+ registerTypeGenerator(import_array.ArrayValidator, (validator, references, isInput) => {
315
+ const itemType = generateTypeNode(validator.items, references, isInput);
130
316
  return import_typescript.default.factory.createArrayTypeNode(itemType);
131
317
  });
318
+ registerTypeGenerator(import_boolean.BooleanValidator, (validator, _references, isInput) => {
319
+ return isInput && validator.fromString ? import_typescript.default.factory.createUnionTypeNode([
320
+ booleanType,
321
+ import_typescript.default.factory.createLiteralTypeNode(import_typescript.default.factory.createStringLiteral("true")),
322
+ import_typescript.default.factory.createLiteralTypeNode(import_typescript.default.factory.createStringLiteral("false"))
323
+ ]) : booleanType;
324
+ });
132
325
  registerTypeGenerator(import_constant.ConstantValidator, (validator) => {
133
326
  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
327
  (0, import_errors.assertSchema)(!!literal, `Invalid constant "${validator.constant}"`);
135
328
  return import_typescript.default.factory.createLiteralTypeNode(literal);
136
329
  });
137
- registerTypeGenerator(import_number.NumberValidator, (validator) => {
330
+ registerTypeGenerator(import_date.DateValidator, (validator, _references, isInput) => {
331
+ return isInput ? validator.format === "iso" ? stringType : validator.format === "timestamp" ? numberType : import_typescript.default.factory.createUnionTypeNode([dateType, numberType, stringType]) : dateType;
332
+ });
333
+ registerTypeGenerator(import_number.NumberValidator, (validator, _references, isInput) => {
334
+ if (isInput) {
335
+ return validator.fromString ? import_typescript.default.factory.createUnionTypeNode([numberType, stringType]) : numberType;
336
+ }
138
337
  if (!validator.brand)
139
338
  return numberType;
140
339
  const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
141
340
  const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
142
341
  return import_typescript.default.factory.createIntersectionTypeNode([numberType, literal]);
143
342
  });
144
- registerTypeGenerator(import_optional.OptionalValidator, (validator, references) => {
145
- return generateTypeNode(validator.validator, references);
343
+ registerTypeGenerator(import_optional.OptionalValidator, (validator, references, isInput) => {
344
+ return generateTypeNode(validator.validator, references, isInput);
146
345
  });
147
- registerTypeGenerator(import_string.StringValidator, (validator) => {
148
- if (!validator.brand)
346
+ registerTypeGenerator(import_string.StringValidator, (validator, _references, isInput) => {
347
+ if (!validator.brand || isInput)
149
348
  return stringType;
150
349
  const signature = import_typescript.default.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
151
350
  const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
152
351
  return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
153
352
  });
154
- registerTypeGenerator(import_tuple.TupleValidator, (validator, references) => {
353
+ registerTypeGenerator(import_tuple.TupleValidator, (validator, references, isInput) => {
155
354
  const members = validator.members;
156
355
  const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
157
356
  if (!single) {
@@ -164,35 +363,35 @@ registerTypeGenerator(import_tuple.TupleValidator, (validator, references) => {
164
363
  }, { count: 0, first: members.length, next: -1 });
165
364
  if (count < 2) {
166
365
  const types2 = members.map(({ single, validator: validator2 }) => {
167
- const memberType = generateTypeNode(validator2, references);
366
+ const memberType = generateTypeNode(validator2, references, isInput);
168
367
  if (single)
169
- return generateTypeNode(validator2, references);
368
+ return generateTypeNode(validator2, references, isInput);
170
369
  const arrayType = import_typescript.default.factory.createArrayTypeNode(memberType);
171
370
  return import_typescript.default.factory.createRestTypeNode(arrayType);
172
371
  });
173
372
  return import_typescript.default.factory.createTupleTypeNode(types2);
174
373
  }
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));
374
+ const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
375
+ const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
376
+ const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
178
377
  const union = import_typescript.default.factory.createUnionTypeNode(types);
179
378
  const array = import_typescript.default.factory.createArrayTypeNode(union);
180
379
  const rest = import_typescript.default.factory.createRestTypeNode(array);
181
380
  return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
182
381
  });
183
- registerTypeGenerator(import_union.AllOfValidator, (validator, references) => {
184
- const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
382
+ registerTypeGenerator(import_union.AllOfValidator, (validator, references, isInput) => {
383
+ const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
185
384
  return import_typescript.default.factory.createIntersectionTypeNode(members);
186
385
  });
187
- registerTypeGenerator(import_union.OneOfValidator, (validator, references) => {
188
- const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
386
+ registerTypeGenerator(import_union.OneOfValidator, (validator, references, isInput) => {
387
+ const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
189
388
  return import_typescript.default.factory.createUnionTypeNode(members);
190
389
  });
191
- registerTypeGenerator(import_object.ObjectValidator, (validator, references) => {
390
+ registerTypeGenerator(import_object.ObjectValidator, (validator, references, isInput) => {
192
391
  const properties = [];
193
392
  for (const [key, valueValidator] of validator.validators.entries()) {
194
- const type = generateTypeNode(valueValidator, references);
195
- const optional = valueValidator.optional;
393
+ const type = generateTypeNode(valueValidator, references, isInput);
394
+ const optional = isInput && valueValidator.defaultValue !== void 0 || valueValidator.optional;
196
395
  const signature = import_typescript.default.factory.createPropertySignature(
197
396
  void 0,
198
397
  key,
@@ -202,7 +401,7 @@ registerTypeGenerator(import_object.ObjectValidator, (validator, references) =>
202
401
  properties.push(signature);
203
402
  }
204
403
  if (validator.additionalProperties) {
205
- const propertyType = generateTypeNode(validator.additionalProperties, references);
404
+ const propertyType = generateTypeNode(validator.additionalProperties, references, isInput);
206
405
  const extra = import_typescript.default.factory.createMappedTypeNode(
207
406
  void 0,
208
407
  // readonly
@@ -223,8 +422,31 @@ registerTypeGenerator(import_object.ObjectValidator, (validator, references) =>
223
422
  return import_typescript.default.factory.createTypeLiteralNode(properties);
224
423
  }
225
424
  });
425
+ registerTypeGenerator(import_ean13.EAN13Validator, (_validator, _references, isInput) => {
426
+ if (isInput)
427
+ return import_typescript.default.factory.createUnionTypeNode([numberType, stringType]);
428
+ const signature = import_typescript.default.factory.createPropertySignature(void 0, "__ean_13", void 0, neverType);
429
+ const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
430
+ return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
431
+ });
432
+ registerTypeGenerator(import_uuid.UUIDValidator, (_validator, _references, isInput) => {
433
+ if (isInput)
434
+ return stringType;
435
+ const signature = import_typescript.default.factory.createPropertySignature(void 0, "__uuid", void 0, neverType);
436
+ const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
437
+ return import_typescript.default.factory.createIntersectionTypeNode([stringType, literal]);
438
+ });
439
+ registerTypeGenerator(import_url.URLValidator, (_validator, _references, isInput) => {
440
+ const urlType = import_typescript.default.factory.createTypeReferenceNode("URL");
441
+ if (isInput) {
442
+ return import_typescript.default.factory.createUnionTypeNode([urlType, stringType]);
443
+ } else {
444
+ return urlType;
445
+ }
446
+ });
226
447
  // Annotate the CommonJS export names for ESM import in node:
227
448
  0 && (module.exports = {
449
+ generateDeclarations,
228
450
  generateTypes,
229
451
  registerTypeGenerator
230
452
  });
@@ -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 {};