justus 0.0.6 → 0.1.0

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/NOTICE.md CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2021 Juit GmbH
1
+ # Copyright 2021-2023 Juit GmbH
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
package/README.md CHANGED
@@ -25,6 +25,7 @@ typing can be inferred.
25
25
  * [Dates](#date-validator)
26
26
  * [Tuples](#tuple-validator)
27
27
  * [Objects](#object-validator) (yes, this is the important one!!!)
28
+ * [Optionals](#optional-validator)
28
29
  * [Any of, all of](#union-validators)
29
30
  * [Validation Options](#validation-options)
30
31
  * [A (slightly more) complex example](#a-complex-example)
@@ -548,7 +549,7 @@ const o2 = object({
548
549
 
549
550
  When allowing extra properties, or extending objects, we might want to validate
550
551
  the _non-existance_ of a specific property. We can do this setting a property
551
- to `never`:
552
+ to `never`.
552
553
 
553
554
  ```typescript
554
555
  import { allowAdditionalProperties, never, number, object, string } from 'justus'
@@ -570,19 +571,25 @@ const o3 = object({
570
571
  } as const)
571
572
  ```
572
573
 
573
- #### Optional and read-only properties
574
+ Optional Validator
575
+ ------------------
574
576
 
575
- Optional and read-only properties can also be declared in objects:
577
+ Optional properties properties can also be declared in objects, arrays, ...:
576
578
 
577
579
  ```typescript
578
- import { object, readonly, optional, string, number, boolean } from 'justus'
580
+ import { object, arrayOf, optional, string } from 'justus'
579
581
 
580
582
  const o1 = object({
581
583
  foo: string, // any string, but must be a string
582
584
  bar: optional(number), // optional property as "number | undefined"
583
- baz: readonly(boolean), // read-only property as "readonly boolean"
584
- xxx: readonly(optional(string)) // ... guess what it'll be?
585
585
  })
586
+
587
+ const r1 = validate(o1, something)
588
+ // here "r1" will have a shape like "{ foo: string, bar?: number | undefined }"
589
+
590
+ const o2 = arrayOf(optional(string)) // array members will be "string | undefined"
591
+ const r2 = validate(o2, something)
592
+ // here "r2" will have a shape like "(string | undefined)[]"
586
593
  ```
587
594
 
588
595
 
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -16,7 +17,14 @@ var __copyProps = (to, from, except, desc) => {
16
17
  }
17
18
  return to;
18
19
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
20
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
29
 
22
30
  // src/dts-generator.ts
@@ -30,7 +38,6 @@ var import_typescript = __toESM(require("typescript"));
30
38
  var import_index = require("./index.js");
31
39
  var generators = /* @__PURE__ */ new Map();
32
40
  function registerTypeGenerator(validator, generator) {
33
- (0, import_index.assertSchema)(validator.prototype instanceof import_index.Validator, "Not a `Validator` class");
34
41
  generators.set(validator, generator);
35
42
  }
36
43
  function generateTypes(validations) {
@@ -50,16 +57,20 @@ function generateTypes(validations) {
50
57
  }
51
58
  const type = generateTypeNode(validator, referenceable);
52
59
  const modifiers = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ExportKeyword)];
53
- const decl = import_typescript.default.factory.createTypeAliasDeclaration(void 0, modifiers, name, [], type);
60
+ const decl = import_typescript.default.factory.createTypeAliasDeclaration(modifiers, name, [], type);
54
61
  types.push(decl);
55
62
  }
56
- return import_typescript.default.createPrinter().printList(import_typescript.default.ListFormat.SourceFileStatements, import_typescript.default.factory.createNodeArray(types), import_typescript.default.createSourceFile("types.d.ts", "", import_typescript.default.ScriptTarget.Latest));
63
+ return import_typescript.default.createPrinter().printList(
64
+ import_typescript.default.ListFormat.SourceFileStatements,
65
+ import_typescript.default.factory.createNodeArray(types),
66
+ import_typescript.default.createSourceFile("types.d.ts", "", import_typescript.default.ScriptTarget.Latest)
67
+ );
57
68
  }
58
69
  function generateTypeNode(validator, references) {
59
70
  const reference = references.get(validator);
60
71
  if (reference)
61
72
  return import_typescript.default.factory.createTypeReferenceNode(reference);
62
- const generator = generators.get(validator.constructor);
73
+ const generator = generators.get(validator) || generators.get(validator.constructor);
63
74
  (0, import_index.assertSchema)(!!generator, `Type generator for "${validator.constructor.name}" not found`);
64
75
  return generator(validator, references);
65
76
  }
@@ -69,8 +80,19 @@ var booleanType = import_typescript.default.factory.createKeywordTypeNode(import
69
80
  var numberType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NumberKeyword);
70
81
  var neverType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.NeverKeyword);
71
82
  var stringType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.StringKeyword);
72
- var recordType = import_typescript.default.factory.createMappedTypeNode(void 0, import_typescript.default.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, anyType, void 0);
73
- var readonlyKeyword = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ReadonlyKeyword)];
83
+ var undefinedType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.UndefinedKeyword);
84
+ var recordType = import_typescript.default.factory.createMappedTypeNode(
85
+ void 0,
86
+ // readonly
87
+ import_typescript.default.factory.createTypeParameterDeclaration([], "key", stringType),
88
+ void 0,
89
+ // name type
90
+ void 0,
91
+ // question token
92
+ anyType,
93
+ // type of the mapped key
94
+ void 0
95
+ );
74
96
  var optionalKeyword = import_typescript.default.factory.createToken(import_typescript.default.SyntaxKind.QuestionToken);
75
97
  registerTypeGenerator(import_index.AnyValidator, () => anyType);
76
98
  registerTypeGenerator(import_index.AnyArrayValidator, () => anyArrayType);
@@ -78,8 +100,17 @@ registerTypeGenerator(import_index.AnyNumberValidator, () => numberType);
78
100
  registerTypeGenerator(import_index.AnyObjectValidator, () => recordType);
79
101
  registerTypeGenerator(import_index.AnyStringValidator, () => stringType);
80
102
  registerTypeGenerator(import_index.BooleanValidator, () => booleanType);
103
+ registerTypeGenerator(import_index.NeverValidator, () => neverType);
81
104
  registerTypeGenerator(import_index.DateValidator, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
82
105
  registerTypeGenerator(import_index.URLValidator, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
106
+ registerTypeGenerator(import_index.any, () => anyType);
107
+ registerTypeGenerator(import_index.array, () => anyArrayType);
108
+ registerTypeGenerator(import_index.number, () => numberType);
109
+ registerTypeGenerator(import_index.object, () => recordType);
110
+ registerTypeGenerator(import_index.string, () => stringType);
111
+ registerTypeGenerator(import_index.boolean, () => booleanType);
112
+ registerTypeGenerator(import_index.date, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
113
+ registerTypeGenerator(import_index.url, () => import_typescript.default.factory.createTypeReferenceNode("URL"));
83
114
  registerTypeGenerator(import_index.ArrayValidator, (validator, references) => {
84
115
  const itemType = generateTypeNode(validator.items, references);
85
116
  return import_typescript.default.factory.createArrayTypeNode(itemType);
@@ -96,6 +127,10 @@ registerTypeGenerator(import_index.NumberValidator, (validator) => {
96
127
  const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
97
128
  return import_typescript.default.factory.createIntersectionTypeNode([numberType, literal]);
98
129
  });
130
+ registerTypeGenerator(import_index.OptionalValidator, (validator, references) => {
131
+ const type = generateTypeNode(validator.validator, references);
132
+ return import_typescript.default.factory.createUnionTypeNode([type, undefinedType]);
133
+ });
99
134
  registerTypeGenerator(import_index.StringValidator, (validator) => {
100
135
  if (!validator.brand)
101
136
  return stringType;
@@ -128,8 +163,8 @@ registerTypeGenerator(import_index.TupleValidator, (validator, references) => {
128
163
  const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
129
164
  const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
130
165
  const union = import_typescript.default.factory.createUnionTypeNode(types);
131
- const array = import_typescript.default.factory.createArrayTypeNode(union);
132
- const rest = import_typescript.default.factory.createRestTypeNode(array);
166
+ const array2 = import_typescript.default.factory.createArrayTypeNode(union);
167
+ const rest = import_typescript.default.factory.createRestTypeNode(array2);
133
168
  return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
134
169
  });
135
170
  registerTypeGenerator(import_index.AllOfValidator, (validator, references) => {
@@ -142,14 +177,32 @@ registerTypeGenerator(import_index.OneOfValidator, (validator, references) => {
142
177
  });
143
178
  registerTypeGenerator(import_index.ObjectValidator, (validator, references) => {
144
179
  const properties = [];
145
- for (const [key, property] of validator.properties.entries()) {
146
- const { validator: validator2, readonly, optional } = property || { optional: true };
147
- const type = validator2 ? generateTypeNode(validator2, references) : neverType;
148
- const signature = import_typescript.default.factory.createPropertySignature(readonly ? readonlyKeyword : void 0, key, optional ? optionalKeyword : void 0, type);
180
+ for (const [key, valueValidator] of validator.validators.entries()) {
181
+ const type = generateTypeNode(valueValidator, references);
182
+ const optional = valueValidator.optional;
183
+ const signature = import_typescript.default.factory.createPropertySignature(
184
+ void 0,
185
+ key,
186
+ optional ? optionalKeyword : void 0,
187
+ type
188
+ );
149
189
  properties.push(signature);
150
190
  }
151
191
  if (validator.additionalProperties) {
152
- const extra = import_typescript.default.factory.createMappedTypeNode(void 0, import_typescript.default.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, generateTypeNode(validator.additionalProperties, references), void 0);
192
+ const propertyType = generateTypeNode(validator.additionalProperties, references);
193
+ const optionalPropertyType = import_typescript.default.factory.createUnionTypeNode([propertyType, undefinedType]);
194
+ const extra = import_typescript.default.factory.createMappedTypeNode(
195
+ void 0,
196
+ // readonly
197
+ import_typescript.default.factory.createTypeParameterDeclaration([], "key", stringType),
198
+ void 0,
199
+ // name type
200
+ void 0,
201
+ // question token
202
+ optionalPropertyType,
203
+ // (type | undefined)
204
+ void 0
205
+ );
153
206
  if (properties.length == 0)
154
207
  return extra;
155
208
  const type = import_typescript.default.factory.createTypeLiteralNode(properties);
@@ -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": []
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAe;AACf,mBA+BO;AAsBP,IAAM,aAAa,oBAAI,IAA8C;AAG9D,SAAS,sBACZ,WACA,WACI;AACN,aAAW,IAAI,WAAW,SAAS;AACrC;AAGO,SAAS,cAAc,aAAiD;AAK7E,QAAM,aAAa,oBAAI,IAAuB;AAC9C,QAAM,aAAa,oBAAI,IAAuB;AAE9C,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAE,MAAM,UAAW,MAAM;AAC5D,UAAM,gBAAY,2BAAa,UAAU;AAEzC,QAAI,CAAE,WAAW,IAAI,SAAS;AAAG,iBAAW,IAAI,WAAW,IAAI;AAC/D,eAAW,IAAI,MAAM,SAAS;AAAA,EAChC,CAAC;AAGD,QAAM,QAAmC,CAAC;AAC1C,aAAW,CAAE,MAAM,SAAU,KAAK,WAAW,QAAQ,GAAG;AAGtD,UAAM,gBAAgB,IAAI,IAAI,UAAU;AACxC,QAAI,cAAc,IAAI,SAAS,MAAM,MAAM;AACzC,oBAAc,OAAO,SAAS;AAAA,IAChC;AAGA,UAAM,OAAO,iBAAiB,WAAW,aAAa;AAGtD,UAAM,YAAY,CAAE,kBAAAA,QAAG,QAAQ,eAAe,kBAAAA,QAAG,WAAW,aAAa,CAAE;AAC3E,UAAM,OAAO,kBAAAA,QAAG,QAAQ,2BAA2B,WAAW,MAAM,CAAC,GAAG,IAAI;AAC5E,UAAM,KAAK,IAAI;AAAA,EACjB;AAGA,SAAO,kBAAAA,QAAG,cAAc,EAAE;AAAA,IACtB,kBAAAA,QAAG,WAAW;AAAA,IACd,kBAAAA,QAAG,QAAQ,gBAAgB,KAAK;AAAA,IAChC,kBAAAA,QAAG,iBAAiB,cAAc,IAAI,kBAAAA,QAAG,aAAa,MAAM;AAAA,EAAC;AACnE;AAOA,SAAS,iBACL,WACA,YACW;AACb,QAAM,YAAY,WAAW,IAAI,SAAS;AAC1C,MAAI;AAAW,WAAO,kBAAAA,QAAG,QAAQ,wBAAwB,SAAS;AAElE,QAAM,YAAY,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,WAAW;AACnF,iCAAa,CAAC,CAAE,WAAW,uBAAuB,UAAU,YAAY,iBAAiB;AACzF,SAAO,UAAU,WAAW,UAAU;AACxC;AAMA,IAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,UAAU;AACzE,IAAM,eAAe,kBAAAA,QAAG,QAAQ,oBAAoB,OAAO;AAC3D,IAAM,cAAc,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,cAAc;AACjF,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,YAAY,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,YAAY;AAC7E,IAAM,aAAa,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,aAAa;AAC/E,IAAM,gBAAgB,kBAAAA,QAAG,QAAQ,sBAAsB,kBAAAA,QAAG,WAAW,gBAAgB;AACrF,IAAM,aAAa,kBAAAA,QAAG,QAAQ;AAAA,EAC1B;AAAA;AAAA,EACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,EAC/D;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAS;AAGb,IAAM,kBAAkB,kBAAAA,QAAG,QAAQ,YAAY,kBAAAA,QAAG,WAAW,aAAa;AAO1E,sBAAsB,2BAAc,MAAM,OAAO;AACjD,sBAAsB,gCAAmB,MAAM,YAAY;AAC3D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,iCAAoB,MAAM,UAAU;AAC1D,sBAAsB,+BAAkB,MAAM,WAAW;AACzD,sBAAsB,6BAAgB,MAAM,SAAS;AACrD,sBAAsB,4BAAe,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,MAAM,CAAC;AACrF,sBAAsB,2BAAc,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,KAAK,CAAC;AAEnF,sBAAsB,kBAAK,MAAM,OAAO;AACxC,sBAAsB,oBAAO,MAAM,YAAY;AAC/C,sBAAsB,qBAAQ,MAAM,UAAU;AAC9C,sBAAsB,qBAAQ,MAAM,UAAU;AAC9C,sBAAsB,qBAAQ,MAAM,UAAU;AAC9C,sBAAsB,sBAAS,MAAM,WAAW;AAChD,sBAAsB,mBAAM,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,MAAM,CAAC;AAC5E,sBAAsB,kBAAK,MAAM,kBAAAA,QAAG,QAAQ,wBAAwB,KAAK,CAAC;AAM1E,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,WAAW,iBAAiB,UAAU,OAAO,UAAU;AAC7D,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,QAAQ;AAChD,CAAC;AAED,sBAAsB,gCAAmB,CAAC,cAAc;AACtD,QAAM,UACJ,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,qBAAqB,UAAU,QAAQ,IAC3F,OAAO,UAAU,aAAa,WAAW,kBAAAA,QAAG,QAAQ,oBAAoB,UAAU,QAAQ,IAC1F,UAAU,aAAa,QAAQ,kBAAAA,QAAG,QAAQ,YAAY,IACtD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD,UAAU,aAAa,OAAO,kBAAAA,QAAG,QAAQ,WAAW,IACpD;AAEF,iCAAa,CAAC,CAAE,SAAS,qBAAqB,UAAU,WAAW;AACnE,SAAO,kBAAAA,QAAG,QAAQ,sBAAsB,OAAO;AACjD,CAAC;AAED,sBAAsB,8BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,gCAAmB,CAAC,WAA8B,eAAe;AACrF,QAAM,OAAO,iBAAiB,UAAU,WAAW,UAAU;AAC7D,SAAO,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,MAAM,aAAc,CAAC;AAC/D,CAAC;AAED,sBAAsB,8BAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,kBAAAA,QAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,kBAAAA,QAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAgC,eAAe;AACpF,QAAM,UAAU,UAAU;AAG1B,QAAM,EAAE,OAAO,OAAO,KAAK,IACvB,QAAQ,OAAO,CAAC,EAAE,OAAAC,QAAO,OAAAC,QAAO,MAAAC,MAAK,GAAG,EAAE,OAAO,GAAG,MAAM;AACxD,QAAI,CAAE,QAAQ;AACZ,UAAI,IAAID;AAAO,QAAAA,SAAQ;AACvB,MAAAC,QAAO,IAAI;AACX,MAAAF,UAAS;AAAA,IACX;AACA,WAAO,EAAE,OAAAA,QAAO,OAAAC,QAAO,MAAAC,MAAK;AAAA,EAC9B,GAAG,EAAE,OAAO,GAAG,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAGpD,MAAI,QAAQ,GAAG;AACb,UAAMC,SAAQ,QAAQ,IAAI,CAAC,EAAE,QAAQ,WAAAC,WAAU,MAAM;AACnD,YAAM,aAAa,iBAAiBA,YAAW,UAAU;AAEzD,UAAI;AAAQ,eAAO,iBAAiBA,YAAW,UAAU;AAEzD,YAAM,YAAY,kBAAAL,QAAG,QAAQ,oBAAoB,UAAU;AAC3D,aAAO,kBAAAA,QAAG,QAAQ,mBAAmB,SAAS;AAAA,IAChD,CAAC;AAED,WAAO,kBAAAA,QAAG,QAAQ,oBAAoBI,MAAK;AAAA,EAC7C;AAIA,QAAM,SAAS,QAAQ,MAAM,GAAG,KAAK,EAChC,IAAI,CAAC,EAAE,WAAAC,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI,EAClC,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,IAAI,EAC3B,IAAI,CAAC,EAAE,WAAAA,WAAU,MAAM,iBAAiBA,YAAW,UAAU,CAAC;AAEnE,QAAM,QAAQ,kBAAAL,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAMM,SAAQ,kBAAAN,QAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,OAAO,kBAAAA,QAAG,QAAQ,mBAAmBM,MAAK;AAEhD,SAAO,kBAAAN,QAAG,QAAQ,oBAAoB,CAAE,GAAG,QAAQ,MAAM,GAAG,KAAM,CAAC;AACrE,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,2BAA2B,OAAO;AACtD,CAAC;AAED,sBAAsB,6BAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAACK,eAAc,iBAAiBA,YAAW,UAAU,CAAC;AAC/F,SAAO,kBAAAL,QAAG,QAAQ,oBAAoB,OAAO;AAC/C,CAAC;AAED,sBAAsB,8BAAiB,CAAC,WAAW,eAAe;AAChE,QAAM,aAAqC,CAAC;AAE5C,aAAW,CAAE,KAAK,cAAe,KAAK,UAAU,WAAW,QAAQ,GAAG;AACpE,UAAM,OAAO,iBAAiB,gBAAgB,UAAU;AACxD,UAAM,WAAW,eAAe;AAEhC,UAAM,YAAY,kBAAAA,QAAG,QAAQ;AAAA,MACzB;AAAA,MACA;AAAA,MACA,WAAW,kBAAkB;AAAA,MAC7B;AAAA,IAAI;AAER,eAAW,KAAK,SAAS;AAAA,EAC3B;AAEA,MAAI,UAAU,sBAAsB;AAClC,UAAM,eAAe,iBAAiB,UAAU,sBAAsB,UAAU;AAChF,UAAM,uBAAuB,kBAAAA,QAAG,QAAQ,oBAAoB,CAAE,cAAc,aAAc,CAAC;AAE3F,UAAM,QAAQ,kBAAAA,QAAG,QAAQ;AAAA,MACrB;AAAA;AAAA,MACA,kBAAAA,QAAG,QAAQ,+BAA+B,CAAC,GAAG,OAAO,UAAU;AAAA,MAC/D;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA,IAAS;AAEb,QAAI,WAAW,UAAU;AAAG,aAAO;AAEnC,UAAM,OAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AACxD,WAAO,kBAAAA,QAAG,QAAQ,2BAA2B,CAAE,MAAM,KAAM,CAAC;AAAA,EAC9D,OAAO;AACL,WAAO,kBAAAA,QAAG,QAAQ,sBAAsB,UAAU;AAAA,EACpD;AACF,CAAC;",
5
+ "names": ["ts", "count", "first", "next", "types", "validator", "array"]
6
6
  }
@@ -2,28 +2,36 @@
2
2
  import ts from "typescript";
3
3
  import {
4
4
  AllOfValidator,
5
+ any,
5
6
  AnyArrayValidator,
6
7
  AnyNumberValidator,
7
8
  AnyObjectValidator,
8
9
  AnyStringValidator,
9
10
  AnyValidator,
11
+ array,
10
12
  ArrayValidator,
11
13
  assertSchema,
14
+ boolean,
12
15
  BooleanValidator,
13
16
  ConstantValidator,
17
+ date,
14
18
  DateValidator,
15
19
  getValidator,
20
+ NeverValidator,
21
+ number,
16
22
  NumberValidator,
23
+ object,
17
24
  ObjectValidator,
18
25
  OneOfValidator,
26
+ OptionalValidator,
27
+ string,
19
28
  StringValidator,
20
29
  TupleValidator,
21
- URLValidator,
22
- Validator
30
+ url,
31
+ URLValidator
23
32
  } from "./index.mjs";
24
33
  var generators = /* @__PURE__ */ new Map();
25
34
  function registerTypeGenerator(validator, generator) {
26
- assertSchema(validator.prototype instanceof Validator, "Not a `Validator` class");
27
35
  generators.set(validator, generator);
28
36
  }
29
37
  function generateTypes(validations) {
@@ -43,16 +51,20 @@ function generateTypes(validations) {
43
51
  }
44
52
  const type = generateTypeNode(validator, referenceable);
45
53
  const modifiers = [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)];
46
- const decl = ts.factory.createTypeAliasDeclaration(void 0, modifiers, name, [], type);
54
+ const decl = ts.factory.createTypeAliasDeclaration(modifiers, name, [], type);
47
55
  types.push(decl);
48
56
  }
49
- return ts.createPrinter().printList(ts.ListFormat.SourceFileStatements, ts.factory.createNodeArray(types), ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest));
57
+ return ts.createPrinter().printList(
58
+ ts.ListFormat.SourceFileStatements,
59
+ ts.factory.createNodeArray(types),
60
+ ts.createSourceFile("types.d.ts", "", ts.ScriptTarget.Latest)
61
+ );
50
62
  }
51
63
  function generateTypeNode(validator, references) {
52
64
  const reference = references.get(validator);
53
65
  if (reference)
54
66
  return ts.factory.createTypeReferenceNode(reference);
55
- const generator = generators.get(validator.constructor);
67
+ const generator = generators.get(validator) || generators.get(validator.constructor);
56
68
  assertSchema(!!generator, `Type generator for "${validator.constructor.name}" not found`);
57
69
  return generator(validator, references);
58
70
  }
@@ -62,8 +74,19 @@ var booleanType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword)
62
74
  var numberType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
63
75
  var neverType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
64
76
  var stringType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
65
- var recordType = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, anyType, void 0);
66
- var readonlyKeyword = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
77
+ var undefinedType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
78
+ var recordType = ts.factory.createMappedTypeNode(
79
+ void 0,
80
+ // readonly
81
+ ts.factory.createTypeParameterDeclaration([], "key", stringType),
82
+ void 0,
83
+ // name type
84
+ void 0,
85
+ // question token
86
+ anyType,
87
+ // type of the mapped key
88
+ void 0
89
+ );
67
90
  var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
68
91
  registerTypeGenerator(AnyValidator, () => anyType);
69
92
  registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
@@ -71,8 +94,17 @@ registerTypeGenerator(AnyNumberValidator, () => numberType);
71
94
  registerTypeGenerator(AnyObjectValidator, () => recordType);
72
95
  registerTypeGenerator(AnyStringValidator, () => stringType);
73
96
  registerTypeGenerator(BooleanValidator, () => booleanType);
97
+ registerTypeGenerator(NeverValidator, () => neverType);
74
98
  registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode("Date"));
75
99
  registerTypeGenerator(URLValidator, () => ts.factory.createTypeReferenceNode("URL"));
100
+ registerTypeGenerator(any, () => anyType);
101
+ registerTypeGenerator(array, () => anyArrayType);
102
+ registerTypeGenerator(number, () => numberType);
103
+ registerTypeGenerator(object, () => recordType);
104
+ registerTypeGenerator(string, () => stringType);
105
+ registerTypeGenerator(boolean, () => booleanType);
106
+ registerTypeGenerator(date, () => ts.factory.createTypeReferenceNode("Date"));
107
+ registerTypeGenerator(url, () => ts.factory.createTypeReferenceNode("URL"));
76
108
  registerTypeGenerator(ArrayValidator, (validator, references) => {
77
109
  const itemType = generateTypeNode(validator.items, references);
78
110
  return ts.factory.createArrayTypeNode(itemType);
@@ -89,6 +121,10 @@ registerTypeGenerator(NumberValidator, (validator) => {
89
121
  const literal = ts.factory.createTypeLiteralNode([signature]);
90
122
  return ts.factory.createIntersectionTypeNode([numberType, literal]);
91
123
  });
124
+ registerTypeGenerator(OptionalValidator, (validator, references) => {
125
+ const type = generateTypeNode(validator.validator, references);
126
+ return ts.factory.createUnionTypeNode([type, undefinedType]);
127
+ });
92
128
  registerTypeGenerator(StringValidator, (validator) => {
93
129
  if (!validator.brand)
94
130
  return stringType;
@@ -121,8 +157,8 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
121
157
  const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
122
158
  const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
123
159
  const union = ts.factory.createUnionTypeNode(types);
124
- const array = ts.factory.createArrayTypeNode(union);
125
- const rest = ts.factory.createRestTypeNode(array);
160
+ const array2 = ts.factory.createArrayTypeNode(union);
161
+ const rest = ts.factory.createRestTypeNode(array2);
126
162
  return ts.factory.createTupleTypeNode([...before, rest, ...after]);
127
163
  });
128
164
  registerTypeGenerator(AllOfValidator, (validator, references) => {
@@ -135,14 +171,32 @@ registerTypeGenerator(OneOfValidator, (validator, references) => {
135
171
  });
136
172
  registerTypeGenerator(ObjectValidator, (validator, references) => {
137
173
  const properties = [];
138
- for (const [key, property] of validator.properties.entries()) {
139
- const { validator: validator2, readonly, optional } = property || { optional: true };
140
- const type = validator2 ? generateTypeNode(validator2, references) : neverType;
141
- const signature = ts.factory.createPropertySignature(readonly ? readonlyKeyword : void 0, key, optional ? optionalKeyword : void 0, type);
174
+ for (const [key, valueValidator] of validator.validators.entries()) {
175
+ const type = generateTypeNode(valueValidator, references);
176
+ const optional = valueValidator.optional;
177
+ const signature = ts.factory.createPropertySignature(
178
+ void 0,
179
+ key,
180
+ optional ? optionalKeyword : void 0,
181
+ type
182
+ );
142
183
  properties.push(signature);
143
184
  }
144
185
  if (validator.additionalProperties) {
145
- const extra = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, generateTypeNode(validator.additionalProperties, references), void 0);
186
+ const propertyType = generateTypeNode(validator.additionalProperties, references);
187
+ const optionalPropertyType = ts.factory.createUnionTypeNode([propertyType, undefinedType]);
188
+ const extra = ts.factory.createMappedTypeNode(
189
+ void 0,
190
+ // readonly
191
+ ts.factory.createTypeParameterDeclaration([], "key", stringType),
192
+ void 0,
193
+ // name type
194
+ void 0,
195
+ // question token
196
+ optionalPropertyType,
197
+ // (type | undefined)
198
+ void 0
199
+ );
146
200
  if (properties.length == 0)
147
201
  return extra;
148
202
  const type = ts.factory.createTypeLiteralNode(properties);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/dts-generator.ts"],
4
- "mappings": ";AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CA,IAAM,aAAa,oBAAI,IAAkC;AAGlD,+BACH,WACA,WACI;AACN,eAAa,UAAU,qBAAqB,WAAW,yBAAyB;AAChF,aAAW,IAAI,WAAW,SAAS;AACrC;AAGO,uBAAuB,aAAiD;AAK7E,QAAM,aAAa,oBAAI,IAAuB;AAC9C,QAAM,aAAa,oBAAI,IAAuB;AAE9C,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAE,MAAM,gBAAiB;AAC5D,UAAM,YAAY,aAAa,UAAU;AAEzC,QAAI,CAAE,WAAW,IAAI,SAAS;AAAG,iBAAW,IAAI,WAAW,IAAI;AAC/D,eAAW,IAAI,MAAM,SAAS;AAAA,EAChC,CAAC;AAGD,QAAM,QAAmC,CAAC;AAC1C,aAAW,CAAE,MAAM,cAAe,WAAW,QAAQ,GAAG;AAGtD,UAAM,gBAAgB,IAAI,IAAI,UAAU;AACxC,QAAI,cAAc,IAAI,SAAS,MAAM,MAAM;AACzC,oBAAc,OAAO,SAAS;AAAA,IAChC;AAGA,UAAM,OAAO,iBAAiB,WAAW,aAAa;AAGtD,UAAM,YAAY,CAAE,GAAG,QAAQ,eAAe,GAAG,WAAW,aAAa,CAAE;AAC3E,UAAM,OAAO,GAAG,QAAQ,2BAA2B,QAAW,WAAW,MAAM,CAAC,GAAG,IAAI;AACvF,UAAM,KAAK,IAAI;AAAA,EACjB;AAGA,SAAO,GAAG,cAAc,EAAE,UACtB,GAAG,WAAW,sBACd,GAAG,QAAQ,gBAAgB,KAAK,GAChC,GAAG,iBAAiB,cAAc,IAAI,GAAG,aAAa,MAAM,CAAC;AACnE;AAOA,0BACI,WACA,YACW;AACb,QAAM,YAAY,WAAW,IAAI,SAAS;AAC1C,MAAI;AAAW,WAAO,GAAG,QAAQ,wBAAwB,SAAS;AAElE,QAAM,YAAY,WAAW,IAAI,UAAU,WAAW;AACtD,eAAa,CAAC,CAAE,WAAW,uBAAuB,UAAU,YAAY,iBAAiB;AACzF,SAAO,UAAU,WAAW,UAAU;AACxC;AAMA,IAAM,UAAU,GAAG,QAAQ,sBAAsB,GAAG,WAAW,UAAU;AACzE,IAAM,eAAe,GAAG,QAAQ,oBAAoB,OAAO;AAC3D,IAAM,cAAc,GAAG,QAAQ,sBAAsB,GAAG,WAAW,cAAc;AACjF,IAAM,aAAa,GAAG,QAAQ,sBAAsB,GAAG,WAAW,aAAa;AAC/E,IAAM,YAAY,GAAG,QAAQ,sBAAsB,GAAG,WAAW,YAAY;AAC7E,IAAM,aAAa,GAAG,QAAQ,sBAAsB,GAAG,WAAW,aAAa;AAC/E,IAAM,aAAa,GAAG,QAAQ,qBAC1B,QACA,GAAG,QAAQ,+BAA+B,OAAO,UAAU,GAC3D,QACA,QACA,SACA,MAAS;AAIb,IAAM,kBAAkB,CAAE,GAAG,QAAQ,eAAe,GAAG,WAAW,eAAe,CAAE;AACnF,IAAM,kBAAkB,GAAG,QAAQ,YAAY,GAAG,WAAW,aAAa;AAO1E,sBAAsB,cAAc,MAAM,OAAO;AACjD,sBAAsB,mBAAmB,MAAM,YAAY;AAC3D,sBAAsB,oBAAoB,MAAM,UAAU;AAC1D,sBAAsB,oBAAoB,MAAM,UAAU;AAC1D,sBAAsB,oBAAoB,MAAM,UAAU;AAC1D,sBAAsB,kBAAkB,MAAM,WAAW;AACzD,sBAAsB,eAAe,MAAM,GAAG,QAAQ,wBAAwB,MAAM,CAAC;AACrF,sBAAsB,cAAc,MAAM,GAAG,QAAQ,wBAAwB,KAAK,CAAC;AAMnF,sBAAsB,gBAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,WAAW,iBAAiB,UAAU,OAAO,UAAU;AAC7D,SAAO,GAAG,QAAQ,oBAAoB,QAAQ;AAChD,CAAC;AAED,sBAAsB,mBAAmB,CAAC,cAAc;AACtD,QAAM,UACJ,OAAO,UAAU,aAAa,WAAW,GAAG,QAAQ,qBAAqB,UAAU,QAAQ,IAC3F,OAAO,UAAU,aAAa,WAAW,GAAG,QAAQ,oBAAoB,UAAU,QAAQ,IAC1F,UAAU,aAAa,QAAQ,GAAG,QAAQ,YAAY,IACtD,UAAU,aAAa,OAAO,GAAG,QAAQ,WAAW,IACpD,UAAU,aAAa,OAAO,GAAG,QAAQ,WAAW,IACpD;AAEF,eAAa,CAAC,CAAE,SAAS,qBAAqB,UAAU,WAAW;AACnE,SAAO,GAAG,QAAQ,sBAAsB,OAAO;AACjD,CAAC;AAED,sBAAsB,iBAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,GAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,GAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,GAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,iBAAiB,CAAC,cAA+B;AACrE,MAAI,CAAE,UAAU;AAAO,WAAO;AAE9B,QAAM,YAAY,GAAG,QAAQ,wBAAwB,QAAW,WAAW,UAAU,SAAS,QAAW,SAAS;AAClH,QAAM,UAAU,GAAG,QAAQ,sBAAsB,CAAE,SAAU,CAAC;AAC9D,SAAO,GAAG,QAAQ,2BAA2B,CAAE,YAAY,OAAQ,CAAC;AACtE,CAAC;AAED,sBAAsB,gBAAgB,CAAC,WAAgC,eAAe;AACpF,QAAM,UAAU,UAAU;AAG1B,QAAM,EAAE,OAAO,OAAO,SAClB,QAAQ,OAAO,CAAC,EAAE,eAAO,eAAO,eAAQ,EAAE,UAAU,MAAM;AACxD,QAAI,CAAE,QAAQ;AACZ,UAAI,IAAI;AAAO,iBAAQ;AACvB,cAAO,IAAI;AACX,gBAAS;AAAA,IACX;AACA,WAAO,EAAE,eAAO,eAAO,YAAK;AAAA,EAC9B,GAAG,EAAE,OAAO,GAAG,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAGpD,MAAI,QAAQ,GAAG;AACb,UAAM,SAAQ,QAAQ,IAAI,CAAC,EAAE,QAAQ,4BAAgB;AACnD,YAAM,aAAa,iBAAiB,YAAW,UAAU;AAEzD,UAAI;AAAQ,eAAO,iBAAiB,YAAW,UAAU;AAEzD,YAAM,YAAY,GAAG,QAAQ,oBAAoB,UAAU;AAC3D,aAAO,GAAG,QAAQ,mBAAmB,SAAS;AAAA,IAChD,CAAC;AAED,WAAO,GAAG,QAAQ,oBAAoB,MAAK;AAAA,EAC7C;AAIA,QAAM,SAAS,QAAQ,MAAM,GAAG,KAAK,EAChC,IAAI,CAAC,EAAE,4BAAgB,iBAAiB,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI,EAClC,IAAI,CAAC,EAAE,4BAAgB,iBAAiB,YAAW,UAAU,CAAC;AACnE,QAAM,QAAQ,QAAQ,MAAM,IAAI,EAC3B,IAAI,CAAC,EAAE,4BAAgB,iBAAiB,YAAW,UAAU,CAAC;AAEnE,QAAM,QAAQ,GAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,QAAQ,GAAG,QAAQ,oBAAoB,KAAK;AAClD,QAAM,OAAO,GAAG,QAAQ,mBAAmB,KAAK;AAEhD,SAAO,GAAG,QAAQ,oBAAoB,CAAE,GAAG,QAAQ,MAAM,GAAG,KAAM,CAAC;AACrE,CAAC;AAED,sBAAsB,gBAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAAC,eAAc,iBAAiB,YAAW,UAAU,CAAC;AAC/F,SAAO,GAAG,QAAQ,2BAA2B,OAAO;AACtD,CAAC;AAED,sBAAsB,gBAAgB,CAAC,WAAW,eAAe;AAC/D,QAAM,UAAU,UAAU,WAAW,IAAI,CAAC,eAAc,iBAAiB,YAAW,UAAU,CAAC;AAC/F,SAAO,GAAG,QAAQ,oBAAoB,OAAO;AAC/C,CAAC;AAED,sBAAsB,iBAAiB,CAAC,WAAW,eAAe;AAChE,QAAM,aAAqC,CAAC;AAE5C,aAAW,CAAE,KAAK,aAAc,UAAU,WAAW,QAAQ,GAAG;AAC9D,UAAM,EAAE,uBAAW,UAAU,aAAa,YAAY,EAAE,UAAU,KAAK;AACvE,UAAM,OAAO,aAAY,iBAAiB,YAAW,UAAU,IAAI;AAEnE,UAAM,YAAY,GAAG,QAAQ,wBACvB,WAAW,kBAAkB,QAC7B,KACA,WAAW,kBAAkB,QAC7B,IAAI;AAEV,eAAW,KAAK,SAAS;AAAA,EAC3B;AAEA,MAAI,UAAU,sBAAsB;AAClC,UAAM,QAAQ,GAAG,QAAQ,qBACrB,QACA,GAAG,QAAQ,+BAA+B,OAAO,UAAU,GAC3D,QACA,QACA,iBAAiB,UAAU,sBAAsB,UAAU,GAC3D,MAAS;AAEb,QAAI,WAAW,UAAU;AAAG,aAAO;AAEnC,UAAM,OAAO,GAAG,QAAQ,sBAAsB,UAAU;AACxD,WAAO,GAAG,QAAQ,2BAA2B,CAAE,MAAM,KAAM,CAAC;AAAA,EAC9D,OAAO;AACL,WAAO,GAAG,QAAQ,sBAAsB,UAAU;AAAA,EACpD;AACF,CAAC;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["count", "first", "next", "types", "validator", "array"]
6
6
  }