justus 0.0.7 → 0.1.1

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)
@@ -92,7 +93,7 @@ String validators are created using the `string` function:
92
93
  ```typescript
93
94
  import { string } from 'justus'
94
95
 
95
- const s1 = string() // validates any string
96
+ const s1 = string // validates any string
96
97
  const s2 = string({ minLength: 1 }) // validate non empty strings
97
98
  ```
98
99
 
@@ -164,8 +165,9 @@ Number validators are created using the `number` function:
164
165
  ```typescript
165
166
  import { number } from 'justus'
166
167
 
167
- const n1 = number() // validates any number
168
+ const n1 = number // validates any number
168
169
  const n2 = number({ minimum: 123 }) // validate numbers 123 and greater
170
+ const n3 = number({ fromString: true }) // parse strings like "12.34" or "0x0CAFE"
169
171
  ```
170
172
 
171
173
  #### Options
@@ -176,6 +178,7 @@ const n2 = number({ minimum: 123 }) // validate numbers 123 and greater
176
178
  * `exclusiveMaximum?: number`: The _exclusive_ maximum value for a valid `number`
177
179
  * `exclusiveMinimum?: number`: The _exclusive_ minimum value for a valid `number`
178
180
  * `allowNaN?: boolean`: Whether to allow `NaN` or not (default: `false`)
181
+ * `fromString?: boolean`: Whether to parse numbers from strings or not (default: `false`)
179
182
 
180
183
  #### Branded numbers
181
184
 
@@ -242,6 +245,21 @@ const validator = object({
242
245
  })
243
246
  ```
244
247
 
248
+ To validate the string `true` or `false` as booleans, simply create the
249
+ validator with the `fromString` option (defaults to `false`):
250
+
251
+ ```typescript
252
+ import { boolean, object } from 'justus'
253
+
254
+ const validator = object({
255
+ foo: boolean({ fromString: 'true' })
256
+ })
257
+
258
+ // Here myValue can be a boolean or the string "true" or "false" (case insensitive)
259
+ const bool = validate(validator, myValue)
260
+ ```
261
+
262
+
245
263
 
246
264
  Constant Validator
247
265
  ------------------
@@ -309,7 +327,7 @@ Array validators are created using the `array` or `arrayOf` functions:
309
327
  ```typescript
310
328
  import { array, arrayOf, number, string } from 'justus'
311
329
 
312
- const a1 = array() // validates any array
330
+ const a1 = array // validates any array
313
331
  const a2 = array({ maxItems: 10, items: string }) // array of strings
314
332
  const a3 = arrayOf(number) // array of numbers
315
333
  ```
@@ -353,7 +371,7 @@ Date validators are created using the `date` function:
353
371
  ```typescript
354
372
  import { date } from 'justus'
355
373
 
356
- const d1 = date() // validates any date
374
+ const d1 = date // validates any date
357
375
  const d2 = date({ format: 'iso' }) // validate ISO dates
358
376
  ```
359
377
 
@@ -434,7 +452,7 @@ As seen in the examples above, object validators are created using the
434
452
  ```typescript
435
453
  import { object, string, number, boolean } from 'justus'
436
454
 
437
- const o1 = object() // any object (excluding null - darn JavaScript)
455
+ const o1 = object // any object (excluding null - darn JavaScript)
438
456
  const o2 = object({
439
457
  foo: string, // any string
440
458
  bar: number, // any number
@@ -548,7 +566,7 @@ const o2 = object({
548
566
 
549
567
  When allowing extra properties, or extending objects, we might want to validate
550
568
  the _non-existance_ of a specific property. We can do this setting a property
551
- to `never`:
569
+ to `never`.
552
570
 
553
571
  ```typescript
554
572
  import { allowAdditionalProperties, never, number, object, string } from 'justus'
@@ -570,19 +588,25 @@ const o3 = object({
570
588
  } as const)
571
589
  ```
572
590
 
573
- #### Optional and read-only properties
591
+ Optional Validator
592
+ ------------------
574
593
 
575
- Optional and read-only properties can also be declared in objects:
594
+ Optional properties properties can also be declared in objects, arrays, ...:
576
595
 
577
596
  ```typescript
578
- import { object, readonly, optional, string, number, boolean } from 'justus'
597
+ import { object, arrayOf, optional, string } from 'justus'
579
598
 
580
599
  const o1 = object({
581
600
  foo: string, // any string, but must be a string
582
601
  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
602
  })
603
+
604
+ const r1 = validate(o1, something)
605
+ // here "r1" will have a shape like "{ foo: string, bar?: number | undefined }"
606
+
607
+ const o2 = arrayOf(optional(string)) // array members will be "string | undefined"
608
+ const r2 = validate(o2, something)
609
+ // here "r2" will have a shape like "(string | undefined)[]"
586
610
  ```
587
611
 
588
612
 
@@ -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
  }
@@ -70,8 +81,18 @@ var numberType = import_typescript.default.factory.createKeywordTypeNode(import_
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
83
  var undefinedType = import_typescript.default.factory.createKeywordTypeNode(import_typescript.default.SyntaxKind.UndefinedKeyword);
73
- var recordType = import_typescript.default.factory.createMappedTypeNode(void 0, import_typescript.default.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, anyType, void 0);
74
- var readonlyKeyword = [import_typescript.default.factory.createModifier(import_typescript.default.SyntaxKind.ReadonlyKeyword)];
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
+ );
75
96
  var optionalKeyword = import_typescript.default.factory.createToken(import_typescript.default.SyntaxKind.QuestionToken);
76
97
  registerTypeGenerator(import_index.AnyValidator, () => anyType);
77
98
  registerTypeGenerator(import_index.AnyArrayValidator, () => anyArrayType);
@@ -79,8 +100,17 @@ registerTypeGenerator(import_index.AnyNumberValidator, () => numberType);
79
100
  registerTypeGenerator(import_index.AnyObjectValidator, () => recordType);
80
101
  registerTypeGenerator(import_index.AnyStringValidator, () => stringType);
81
102
  registerTypeGenerator(import_index.BooleanValidator, () => booleanType);
103
+ registerTypeGenerator(import_index.NeverValidator, () => neverType);
82
104
  registerTypeGenerator(import_index.DateValidator, () => import_typescript.default.factory.createTypeReferenceNode("Date"));
83
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"));
84
114
  registerTypeGenerator(import_index.ArrayValidator, (validator, references) => {
85
115
  const itemType = generateTypeNode(validator.items, references);
86
116
  return import_typescript.default.factory.createArrayTypeNode(itemType);
@@ -97,6 +127,10 @@ registerTypeGenerator(import_index.NumberValidator, (validator) => {
97
127
  const literal = import_typescript.default.factory.createTypeLiteralNode([signature]);
98
128
  return import_typescript.default.factory.createIntersectionTypeNode([numberType, literal]);
99
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
+ });
100
134
  registerTypeGenerator(import_index.StringValidator, (validator) => {
101
135
  if (!validator.brand)
102
136
  return stringType;
@@ -129,8 +163,8 @@ registerTypeGenerator(import_index.TupleValidator, (validator, references) => {
129
163
  const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
130
164
  const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
131
165
  const union = import_typescript.default.factory.createUnionTypeNode(types);
132
- const array = import_typescript.default.factory.createArrayTypeNode(union);
133
- 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);
134
168
  return import_typescript.default.factory.createTupleTypeNode([...before, rest, ...after]);
135
169
  });
136
170
  registerTypeGenerator(import_index.AllOfValidator, (validator, references) => {
@@ -143,16 +177,32 @@ registerTypeGenerator(import_index.OneOfValidator, (validator, references) => {
143
177
  });
144
178
  registerTypeGenerator(import_index.ObjectValidator, (validator, references) => {
145
179
  const properties = [];
146
- for (const [key, property] of validator.properties.entries()) {
147
- const { validator: validator2, readonly, optional } = property || { optional: true };
148
- const type = validator2 ? generateTypeNode(validator2, references) : neverType;
149
- 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
+ );
150
189
  properties.push(signature);
151
190
  }
152
191
  if (validator.additionalProperties) {
153
192
  const propertyType = generateTypeNode(validator.additionalProperties, references);
154
193
  const optionalPropertyType = import_typescript.default.factory.createUnionTypeNode([propertyType, undefinedType]);
155
- const extra = import_typescript.default.factory.createMappedTypeNode(void 0, import_typescript.default.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, optionalPropertyType, void 0);
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
+ );
156
206
  if (properties.length == 0)
157
207
  return extra;
158
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": "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",
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
  }
@@ -63,8 +75,18 @@ 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
77
  var undefinedType = ts.factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
66
- var recordType = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, anyType, void 0);
67
- var readonlyKeyword = [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)];
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
+ );
68
90
  var optionalKeyword = ts.factory.createToken(ts.SyntaxKind.QuestionToken);
69
91
  registerTypeGenerator(AnyValidator, () => anyType);
70
92
  registerTypeGenerator(AnyArrayValidator, () => anyArrayType);
@@ -72,8 +94,17 @@ registerTypeGenerator(AnyNumberValidator, () => numberType);
72
94
  registerTypeGenerator(AnyObjectValidator, () => recordType);
73
95
  registerTypeGenerator(AnyStringValidator, () => stringType);
74
96
  registerTypeGenerator(BooleanValidator, () => booleanType);
97
+ registerTypeGenerator(NeverValidator, () => neverType);
75
98
  registerTypeGenerator(DateValidator, () => ts.factory.createTypeReferenceNode("Date"));
76
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"));
77
108
  registerTypeGenerator(ArrayValidator, (validator, references) => {
78
109
  const itemType = generateTypeNode(validator.items, references);
79
110
  return ts.factory.createArrayTypeNode(itemType);
@@ -90,6 +121,10 @@ registerTypeGenerator(NumberValidator, (validator) => {
90
121
  const literal = ts.factory.createTypeLiteralNode([signature]);
91
122
  return ts.factory.createIntersectionTypeNode([numberType, literal]);
92
123
  });
124
+ registerTypeGenerator(OptionalValidator, (validator, references) => {
125
+ const type = generateTypeNode(validator.validator, references);
126
+ return ts.factory.createUnionTypeNode([type, undefinedType]);
127
+ });
93
128
  registerTypeGenerator(StringValidator, (validator) => {
94
129
  if (!validator.brand)
95
130
  return stringType;
@@ -122,8 +157,8 @@ registerTypeGenerator(TupleValidator, (validator, references) => {
122
157
  const types = members.slice(first, next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
123
158
  const after = members.slice(next).map(({ validator: validator2 }) => generateTypeNode(validator2, references));
124
159
  const union = ts.factory.createUnionTypeNode(types);
125
- const array = ts.factory.createArrayTypeNode(union);
126
- const rest = ts.factory.createRestTypeNode(array);
160
+ const array2 = ts.factory.createArrayTypeNode(union);
161
+ const rest = ts.factory.createRestTypeNode(array2);
127
162
  return ts.factory.createTupleTypeNode([...before, rest, ...after]);
128
163
  });
129
164
  registerTypeGenerator(AllOfValidator, (validator, references) => {
@@ -136,16 +171,32 @@ registerTypeGenerator(OneOfValidator, (validator, references) => {
136
171
  });
137
172
  registerTypeGenerator(ObjectValidator, (validator, references) => {
138
173
  const properties = [];
139
- for (const [key, property] of validator.properties.entries()) {
140
- const { validator: validator2, readonly, optional } = property || { optional: true };
141
- const type = validator2 ? generateTypeNode(validator2, references) : neverType;
142
- 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
+ );
143
183
  properties.push(signature);
144
184
  }
145
185
  if (validator.additionalProperties) {
146
186
  const propertyType = generateTypeNode(validator.additionalProperties, references);
147
187
  const optionalPropertyType = ts.factory.createUnionTypeNode([propertyType, undefinedType]);
148
- const extra = ts.factory.createMappedTypeNode(void 0, ts.factory.createTypeParameterDeclaration("key", stringType), void 0, void 0, optionalPropertyType, void 0);
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
+ );
149
200
  if (properties.length == 0)
150
201
  return extra;
151
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,gBAAgB,GAAG,QAAQ,sBAAsB,GAAG,WAAW,gBAAgB;AACrF,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,eAAe,iBAAiB,UAAU,sBAAsB,UAAU;AAChF,UAAM,uBAAuB,GAAG,QAAQ,oBAAoB,CAAE,cAAc,aAAc,CAAC;AAE3F,UAAM,QAAQ,GAAG,QAAQ,qBACrB,QACA,GAAG,QAAQ,+BAA+B,OAAO,UAAU,GAC3D,QACA,QACA,sBACA,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
  }