justus 0.5.1 → 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.
@@ -1,7 +1,9 @@
1
1
  // dts-generator.ts
2
2
  import ts from "typescript";
3
3
  import { assertSchema } from "./errors.mjs";
4
+ import { EAN13Validator } from "./extra/ean13.mjs";
4
5
  import { URLValidator } from "./extra/url.mjs";
6
+ import { UUIDValidator } from "./extra/uuid.mjs";
5
7
  import { getValidator } from "./utilities.mjs";
6
8
  import { AnyValidator } from "./validators/any.mjs";
7
9
  import { AnyArrayValidator, ArrayValidator } from "./validators/array.mjs";
@@ -15,45 +17,231 @@ import { OptionalValidator } from "./validators/optional.mjs";
15
17
  import { AnyStringValidator, StringValidator } from "./validators/string.mjs";
16
18
  import { TupleValidator } from "./validators/tuple.mjs";
17
19
  import { AllOfValidator, OneOfValidator } from "./validators/union.mjs";
20
+ function typeEqual(a, b) {
21
+ function eq(a2, b2) {
22
+ if (typeof a2 == "object" && a2 != null && (typeof b2 == "object" && b2 != null)) {
23
+ for (const key in a2) {
24
+ if (!eq(a2[key], b2[key]))
25
+ return false;
26
+ }
27
+ for (const key in b2) {
28
+ if (!eq(a2[key], b2[key]))
29
+ return false;
30
+ }
31
+ return true;
32
+ } else {
33
+ return a2 === b2;
34
+ }
35
+ }
36
+ return eq(a, b);
37
+ }
18
38
  var generators = /* @__PURE__ */ new Map();
19
39
  function registerTypeGenerator(validator, generator) {
20
40
  generators.set(validator, generator);
21
41
  }
22
- function generateTypes(validations) {
42
+ function generateTypes(validations, isInput = false) {
23
43
  const validators = /* @__PURE__ */ new Map();
24
44
  const references = /* @__PURE__ */ new Map();
25
- Object.entries(validations).forEach(([name, validation]) => {
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
- validators.set(name, validator);
30
- });
31
- const types = [];
32
- for (const [name, validator] of validators.entries()) {
33
- const referenceable = new Map(references);
34
- if (referenceable.get(validator) === name) {
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(types),
59
+ ts.factory.createNodeArray(aliases),
60
+ ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
61
+ );
62
+ }
63
+ function generateDeclarations(validations) {
64
+ const names = [];
65
+ const outputValidators = /* @__PURE__ */ new Map();
66
+ const outputReferences = /* @__PURE__ */ new Map();
67
+ const inputValidators = /* @__PURE__ */ new Map();
68
+ const inputReferences = /* @__PURE__ */ new Map();
69
+ for (const [name, validation] of Object.entries(validations)) {
70
+ const prefix = /validator$/i.test(name) ? name.slice(0, -9) : /validation$/i.test(name) ? name.slice(0, -10) : name;
71
+ const output = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}`;
72
+ const input = `${prefix.slice(0, 1).toUpperCase()}${prefix.slice(1)}Input`;
73
+ const validator = getValidator(validation);
74
+ names.push({ name, output, input });
75
+ outputValidators.set(output, validator);
76
+ inputValidators.set(input, validator);
77
+ if (!outputReferences.has(validator))
78
+ outputReferences.set(validator, output);
79
+ if (!inputReferences.has(validator))
80
+ inputReferences.set(validator, input);
81
+ }
82
+ const outputTypes = generateTypeNodes(outputValidators, outputReferences, false);
83
+ const inputTypes = generateTypeNodes(inputValidators, inputReferences, true);
84
+ const statements = [];
85
+ for (const { name, input, output } of names) {
86
+ const outputType = outputTypes.get(output);
87
+ const inputType = inputTypes.get(input);
88
+ const validation = validations[name];
89
+ const validator = outputValidators.get(output);
90
+ assertSchema(!!outputType, `No output type "${output}" generated for validation "${name}"`);
91
+ assertSchema(!!inputType, `No input type "${input}" generated for validation "${name}"`);
92
+ assertSchema(!!validator, `No validator for "${name}"`);
93
+ const sameType = typeEqual(inputType, outputType);
94
+ const inputAlias = sameType ? ts.factory.createTypeReferenceNode(output) : inputType;
95
+ const outputDeclaration = ts.factory.createTypeAliasDeclaration(exportModifiers, output, [], outputType);
96
+ const inputDeclaration = ts.factory.createTypeAliasDeclaration(exportModifiers, input, [], inputAlias);
97
+ const variableDeclarationType = generateVariableDeclarationType(validation, validator, outputReferences);
98
+ const variableDeclaration = ts.factory.createVariableStatement(
99
+ exportModifiers,
100
+ // "export"
101
+ ts.factory.createVariableDeclarationList([
102
+ ts.factory.createVariableDeclaration(
103
+ name,
104
+ // ..................................... "myTypeValidator"
105
+ void 0,
106
+ // no exclamation token
107
+ variableDeclarationType
108
+ )
109
+ ], ts.NodeFlags.Const)
110
+ // ......................... "const"
111
+ );
112
+ ts.addSyntheticLeadingComment(
113
+ outputDeclaration,
114
+ ts.SyntaxKind.MultiLineCommentTrivia,
115
+ ` ${`----- ${name} `.padEnd(74, "-")} `,
116
+ true
117
+ // newline
118
+ );
119
+ ts.addSyntheticLeadingComment(
120
+ outputDeclaration,
121
+ ts.SyntaxKind.MultiLineCommentTrivia,
122
+ `* Validated type for {@link ${name}} `,
123
+ true
124
+ // newline
125
+ );
126
+ ts.addSyntheticLeadingComment(
127
+ inputDeclaration,
128
+ ts.SyntaxKind.MultiLineCommentTrivia,
129
+ `* Input type for {@link ${name}} `,
130
+ true
131
+ // newline
132
+ );
133
+ ts.addSyntheticLeadingComment(
134
+ variableDeclaration,
135
+ ts.SyntaxKind.MultiLineCommentTrivia,
136
+ `* The \`${name}\` validator `,
137
+ true
138
+ // newline
139
+ );
140
+ statements.push(
141
+ outputDeclaration,
142
+ inputDeclaration,
143
+ variableDeclaration
144
+ );
145
+ }
146
+ const dts = ts.createPrinter().printList(
147
+ ts.ListFormat.SourceFileStatements,
148
+ ts.factory.createNodeArray(statements),
45
149
  ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
46
150
  );
151
+ return `// Generated on ${(/* @__PURE__ */ new Date()).toUTCString()}
152
+
153
+ ${dts}`;
154
+ }
155
+ function isValidator(validation) {
156
+ assertSchema(validation !== void 0, 'Found "undefined" validation in tree');
157
+ if (validation === null)
158
+ return false;
159
+ if (typeof validation !== "function" && typeof validation !== "object") {
160
+ return false;
161
+ }
162
+ if (Array.isArray(validation))
163
+ return false;
164
+ if ("validate" in validation && typeof validation.validate === "function") {
165
+ return !isValidator(validation.validate);
166
+ } else {
167
+ return false;
168
+ }
169
+ }
170
+ function generateJustusTypeImport(typeName, typeArguments = []) {
171
+ return ts.factory.createImportTypeNode(
172
+ // .................... "import"
173
+ ts.factory.createLiteralTypeNode(
174
+ ts.factory.createStringLiteral("justus")
175
+ // .......... "justus"
176
+ ),
177
+ void 0,
178
+ // import assertions
179
+ ts.factory.createIdentifier(typeName),
180
+ // ................. "JustusType"
181
+ typeArguments
182
+ );
183
+ }
184
+ function generateVariableDeclarationType(validation, validator, references) {
185
+ if (isValidator(validation)) {
186
+ const validatedType = generateTypeNode(validator, references, false);
187
+ return generateJustusTypeImport("Validator", [validatedType]);
188
+ }
189
+ if (validator instanceof ConstantValidator) {
190
+ return generateTypeNode(validator, references, false);
191
+ }
192
+ if (validator instanceof ObjectValidator) {
193
+ const properties = [];
194
+ for (const [key, valueValidator] of validator.validators.entries()) {
195
+ const value = validator.schema[key];
196
+ const type = generateVariableDeclarationType(value, valueValidator, references);
197
+ properties.push(ts.factory.createPropertySignature(
198
+ readonlyModifiers,
199
+ key,
200
+ void 0,
201
+ // no question mark
202
+ type
203
+ ));
204
+ }
205
+ if (validator.additionalProperties) {
206
+ const additional = validator.additionalProperties;
207
+ const type = generateVariableDeclarationType(additional, additional, references);
208
+ properties.push(ts.factory.createPropertySignature(
209
+ readonlyModifiers,
210
+ ts.factory.createComputedPropertyName(
211
+ ts.factory.createPropertyAccessExpression(
212
+ ts.factory.createIdentifier("Symbol"),
213
+ "justusAdditionalValidator"
214
+ )
215
+ ),
216
+ void 0,
217
+ // no question mark
218
+ type
219
+ ));
220
+ }
221
+ return ts.factory.createTypeLiteralNode(properties);
222
+ }
223
+ assertSchema(false, `Unable to generate variable declaration for ${validator.constructor.name}`);
47
224
  }
48
- function generateTypeNode(validator, references) {
225
+ function generateTypeNodes(validators, references, isInput) {
226
+ const types = /* @__PURE__ */ new Map();
227
+ for (const [name, validator] of validators.entries()) {
228
+ const referenceable = new Map(references);
229
+ if (referenceable.get(validator) === name)
230
+ referenceable.delete(validator);
231
+ types.set(name, generateTypeNode(validator, referenceable, isInput));
232
+ }
233
+ return types;
234
+ }
235
+ function generateTypeNode(validator, references, isInput) {
49
236
  const reference = references.get(validator);
50
237
  if (reference)
51
238
  return ts.factory.createTypeReferenceNode(reference);
52
239
  const generator = generators.get(validator) || generators.get(validator.constructor);
53
240
  assertSchema(!!generator, `Type generator for "${validator.constructor.name}" not found`);
54
- const type = generator(validator, references);
55
- if (!validator.optional)
241
+ const type = generator(validator, references, isInput);
242
+ if (!(validator.optional || isInput && validator.defaultValue !== void 0)) {
56
243
  return type;
244
+ }
57
245
  if (type === neverType)
58
246
  return undefinedType;
59
247
  if (ts.isUnionTypeNode(type)) {
@@ -64,6 +252,7 @@ function generateTypeNode(validator, references) {
64
252
  var anyType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
65
253
  var anyArrayType = ts.factory.createArrayTypeNode(anyType);
66
254
  var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
255
+ var dateType = ts.factory.createTypeReferenceNode("Date");
67
256
  var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
68
257
  var neverType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
69
258
  var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
@@ -81,42 +270,54 @@ var recordType = ts.factory.createMappedTypeNode(
81
270
  void 0
82
271
  );
83
272
  var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
273
+ var exportModifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
274
+ var readonlyModifiers = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
84
275
  registerTypeGenerator(AnyValidator, () => anyType);
85
276
  registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
86
277
  registerTypeGenerator(AnyNumberValidator, () => numberType);
87
278
  registerTypeGenerator(AnyObjectValidator, () => recordType);
88
279
  registerTypeGenerator(AnyStringValidator, () => stringType);
89
- registerTypeGenerator(BooleanValidator, () => booleanType);
90
280
  registerTypeGenerator(NeverValidator, () => neverType);
91
- registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode("Date"));
92
- registerTypeGenerator(URLValidator, () => ts.factory.createTypeReferenceNode("URL"));
93
- registerTypeGenerator(ArrayValidator, (validator, references) => {
94
- const itemType = generateTypeNode(validator.items, references);
281
+ registerTypeGenerator(ArrayValidator, (validator, references, isInput) => {
282
+ const itemType = generateTypeNode(validator.items, references, isInput);
95
283
  return ts.factory.createArrayTypeNode(itemType);
96
284
  });
285
+ registerTypeGenerator(BooleanValidator, (validator, _references, isInput) => {
286
+ return isInput && validator.fromString ? ts.factory.createUnionTypeNode([
287
+ booleanType,
288
+ ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("true")),
289
+ ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("false"))
290
+ ]) : booleanType;
291
+ });
97
292
  registerTypeGenerator(ConstantValidator, (validator) => {
98
293
  const literal = typeof validator.constant === "number" ? ts.factory.createNumericLiteral(validator.constant) : typeof validator.constant === "string" ? ts.factory.createStringLiteral(validator.constant) : validator.constant === false ? ts.factory.createFalse() : validator.constant === true ? ts.factory.createTrue() : validator.constant === null ? ts.factory.createNull() : void 0;
99
294
  assertSchema(!!literal, `Invalid constant "${validator.constant}"`);
100
295
  return ts.factory.createLiteralTypeNode(literal);
101
296
  });
102
- registerTypeGenerator(NumberValidator, (validator) => {
297
+ registerTypeGenerator(DateValidator, (validator, _references, isInput) => {
298
+ return isInput ? validator.format === "iso" ? stringType : validator.format === "timestamp" ? numberType : ts.factory.createUnionTypeNode([dateType, numberType, stringType]) : dateType;
299
+ });
300
+ registerTypeGenerator(NumberValidator, (validator, _references, isInput) => {
301
+ if (isInput) {
302
+ return validator.fromString ? ts.factory.createUnionTypeNode([numberType, stringType]) : numberType;
303
+ }
103
304
  if (!validator.brand)
104
305
  return numberType;
105
306
  const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
106
307
  const literal = ts.factory.createTypeLiteralNode([signature]);
107
308
  return ts.factory.createIntersectionTypeNode([numberType, literal]);
108
309
  });
109
- registerTypeGenerator(OptionalValidator, (validator, references) => {
110
- return generateTypeNode(validator.validator, references);
310
+ registerTypeGenerator(OptionalValidator, (validator, references, isInput) => {
311
+ return generateTypeNode(validator.validator, references, isInput);
111
312
  });
112
- registerTypeGenerator(StringValidator, (validator) => {
113
- if (!validator.brand)
313
+ registerTypeGenerator(StringValidator, (validator, _references, isInput) => {
314
+ if (!validator.brand || isInput)
114
315
  return stringType;
115
316
  const signature = ts.factory.createPropertySignature(void 0, `__brand_${validator.brand}`, void 0, neverType);
116
317
  const literal = ts.factory.createTypeLiteralNode([signature]);
117
318
  return ts.factory.createIntersectionTypeNode([stringType, literal]);
118
319
  });
119
- registerTypeGenerator(TupleValidator, (validator, references) => {
320
+ registerTypeGenerator(TupleValidator, (validator, references, isInput) => {
120
321
  const members = validator.members;
121
322
  const { count, first, next } = members.reduce(({ count: count2, first: first2, next: next2 }, { single }, i) => {
122
323
  if (!single) {
@@ -129,35 +330,35 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
129
330
  }, { count: 0, first: members.length, next: -1 });
130
331
  if (count < 2) {
131
332
  const types2 = members.map(({ single, validator: validator2 }) => {
132
- const memberType = generateTypeNode(validator2, references);
333
+ const memberType = generateTypeNode(validator2, references, isInput);
133
334
  if (single)
134
- return generateTypeNode(validator2, references);
335
+ return generateTypeNode(validator2, references, isInput);
135
336
  const arrayType = ts.factory.createArrayTypeNode(memberType);
136
337
  return ts.factory.createRestTypeNode(arrayType);
137
338
  });
138
339
  return ts.factory.createTupleTypeNode(types2);
139
340
  }
140
- const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
141
- const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
142
- const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
341
+ const before = members.slice(0, first).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
342
+ const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
343
+ const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references, isInput));
143
344
  const union = ts.factory.createUnionTypeNode(types);
144
345
  const array = ts.factory.createArrayTypeNode(union);
145
346
  const rest = ts.factory.createRestTypeNode(array);
146
347
  return ts.factory.createTupleTypeNode([...before, rest, ...after]);
147
348
  });
148
- registerTypeGenerator(AllOfValidator, (validator, references) => {
149
- const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
349
+ registerTypeGenerator(AllOfValidator, (validator, references, isInput) => {
350
+ const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
150
351
  return ts.factory.createIntersectionTypeNode(members);
151
352
  });
152
- registerTypeGenerator(OneOfValidator, (validator, references) => {
153
- const members = validator.validators.map((validator2) => generateTypeNode(validator2, references));
353
+ registerTypeGenerator(OneOfValidator, (validator, references, isInput) => {
354
+ const members = validator.validators.map((validator2) => generateTypeNode(validator2, references, isInput));
154
355
  return ts.factory.createUnionTypeNode(members);
155
356
  });
156
- registerTypeGenerator(ObjectValidator, (validator, references) => {
357
+ registerTypeGenerator(ObjectValidator, (validator, references, isInput) => {
157
358
  const properties = [];
158
359
  for (const [key, valueValidator] of validator.validators.entries()) {
159
- const type = generateTypeNode(valueValidator, references);
160
- const optional = valueValidator.optional;
360
+ const type = generateTypeNode(valueValidator, references, isInput);
361
+ const optional = isInput && valueValidator.defaultValue !== void 0 || valueValidator.optional;
161
362
  const signature = ts.factory.createPropertySignature(
162
363
  void 0,
163
364
  key,
@@ -167,7 +368,7 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
167
368
  properties.push(signature);
168
369
  }
169
370
  if (validator.additionalProperties) {
170
- const propertyType = generateTypeNode(validator.additionalProperties, references);
371
+ const propertyType = generateTypeNode(validator.additionalProperties, references, isInput);
171
372
  const extra = ts.factory.createMappedTypeNode(
172
373
  void 0,
173
374
  // readonly
@@ -188,7 +389,30 @@ registerTypeGenerator(ObjectValidator, (validator, references) => {
188
389
  return ts.factory.createTypeLiteralNode(properties);
189
390
  }
190
391
  });
392
+ registerTypeGenerator(EAN13Validator, (_validator, _references, isInput) => {
393
+ if (isInput)
394
+ return ts.factory.createUnionTypeNode([numberType, stringType]);
395
+ const signature = ts.factory.createPropertySignature(void 0, "__ean_13", void 0, neverType);
396
+ const literal = ts.factory.createTypeLiteralNode([signature]);
397
+ return ts.factory.createIntersectionTypeNode([stringType, literal]);
398
+ });
399
+ registerTypeGenerator(UUIDValidator, (_validator, _references, isInput) => {
400
+ if (isInput)
401
+ return stringType;
402
+ const signature = ts.factory.createPropertySignature(void 0, "__uuid", void 0, neverType);
403
+ const literal = ts.factory.createTypeLiteralNode([signature]);
404
+ return ts.factory.createIntersectionTypeNode([stringType, literal]);
405
+ });
406
+ registerTypeGenerator(URLValidator, (_validator, _references, isInput) => {
407
+ const urlType = ts.factory.createTypeReferenceNode("URL");
408
+ if (isInput) {
409
+ return ts.factory.createUnionTypeNode([urlType, stringType]);
410
+ } else {
411
+ return urlType;
412
+ }
413
+ });
191
414
  export {
415
+ generateDeclarations,
192
416
  generateTypes,
193
417
  registerTypeGenerator
194
418
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/dts-generator.ts"],
4
- "mappings": "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",
5
- "names": ["count", "first", "next", "types", "validator"]
4
+ "mappings": "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",
5
+ "names": ["a", "b", "count", "first", "next", "types", "validator"]
6
6
  }
@@ -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,8BAA4B;AAAA,EAC7D,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;",
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
  }
@@ -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
  }
@@ -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,gBAA4B;AAAA,EAC7D,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;",
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 = void 0;
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 };
@@ -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;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,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,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
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
- optional?: boolean;
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?: boolean;
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 */
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 = void 0;
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 };
@@ -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;AAwBO,SAAS,qBAGd,WAAc,SAAmB;AACjC,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,UAAU,UAAU;AAAA,IACpB,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,WAAqB;AAAA;AAAA,EAMrB,EAAG,OAAO,QAAQ,IAAyC;AACzD,UAAM,EAAE,CAAC,OAAO,mBAAmB,GAAG,KAAK;AAAA,EAC7C;AACF;",
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
  }
@@ -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]) {
@@ -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;AAalB,SAAS,aAAa,YAAmC;AAE9D,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;",
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
  }
@@ -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;
@@ -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]) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utilities.ts"],
4
- "mappings": ";AAAA,SAAS,gBAAgB;AAalB,SAAS,aAAa,YAAmC;AAE9D,MAAI,eAAe;AAAM,WAAO,KAAK,SAAS,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,SAAS,IAAI,UAAU,GAAG,UAAU;AAAA,IAGlD,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,KAAK,SAAS,IAAI,OAAO,GAAG,UAAU;AAE5E,aAAO,KAAK,SAAS,IAAI,QAAQ,GAAG,UAAoB;AAAA,IAG1D;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,UAAU,GAAG;AAAA,EACxE;AACF;",
4
+ "mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AASlB,SAAS,aAAa,YAAmC;AAC9D,eAAa,eAAe,QAAW,uCAAuC;AAG9E,MAAI,eAAe;AAAM,WAAO,KAAK,SAAS,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,SAAS,IAAI,UAAU,GAAG,UAAU;AAAA,IAGlD,KAAK;AAEH,UAAI,MAAM,QAAQ,UAAU;AAAG,eAAO,KAAK,SAAS,IAAI,OAAO,GAAG,UAAU;AAE5E,aAAO,KAAK,SAAS,IAAI,QAAQ,GAAG,UAAoB;AAAA,IAG1D;AACE,YAAM,IAAI,UAAU,4BAA4B,OAAO,UAAU,GAAG;AAAA,EACxE;AACF;",
5
5
  "names": []
6
6
  }