@mirascript/typed 0.1.65 → 0.1.73
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/dist/json.d.ts +5 -2
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +34 -10
- package/dist/json.js.map +1 -1
- package/dist/simplifier.d.ts +23 -0
- package/dist/simplifier.d.ts.map +1 -1
- package/dist/simplifier.js +60 -2
- package/dist/simplifier.js.map +1 -1
- package/package.json +3 -3
- package/src/json.ts +40 -11
- package/src/simplifier.ts +79 -2
package/dist/json.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type JSONSchema, $schema } from 'json-schema-typed';
|
|
2
2
|
import type { Type } from './parser.js';
|
|
3
|
+
export type { JSONSchema } from 'json-schema-typed';
|
|
3
4
|
/** Options for toJSONSchema */
|
|
4
5
|
export interface ToJSONSchemaOptions {
|
|
5
6
|
/** When true, object schemas allow arbitrary additional properties */
|
|
6
7
|
loose?: boolean;
|
|
7
8
|
}
|
|
8
9
|
/** Converts a Type object into JSON Schema */
|
|
9
|
-
export declare function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSchema
|
|
10
|
+
export declare function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSchema.Interface & {
|
|
11
|
+
$schema: typeof $schema;
|
|
12
|
+
};
|
|
10
13
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,KAAK,EAAmD,IAAI,EAAE,MAAM,aAAa,CAAC;AAEzF,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA4HpD,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AA8KD,8CAA8C;AAC9C,wBAAgB,YAAY,CACxB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,mBAAmB,GAC9B,UAAU,CAAC,SAAS,GAAG;IAAE,OAAO,EAAE,OAAO,OAAO,CAAA;CAAE,CAWpD"}
|
package/dist/json.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { $schema } from 'json-schema-typed';
|
|
1
2
|
import { REG_NUMBER } from '@mirascript/constants';
|
|
2
3
|
import { simplify } from './simplifier.js';
|
|
3
4
|
/** Converts a KnownType or NamedType into JSON Schema */
|
|
@@ -124,8 +125,8 @@ function isLiteralType(type) {
|
|
|
124
125
|
return typeof type == 'object' && type.kind === 'literal';
|
|
125
126
|
}
|
|
126
127
|
/** Converts a Type object into JSON Schema */
|
|
127
|
-
|
|
128
|
-
const loose = options
|
|
128
|
+
function toJSONSchemaImpl(type, options) {
|
|
129
|
+
const { loose } = options;
|
|
129
130
|
const simplified = simplify(type);
|
|
130
131
|
if (typeof simplified == 'symbol') {
|
|
131
132
|
return {};
|
|
@@ -136,7 +137,7 @@ export function toJSONSchema(type, options) {
|
|
|
136
137
|
if (simplified.kind === 'array') {
|
|
137
138
|
return {
|
|
138
139
|
type: 'array',
|
|
139
|
-
items:
|
|
140
|
+
items: toJSONSchemaImpl(simplified.element, options),
|
|
140
141
|
};
|
|
141
142
|
}
|
|
142
143
|
if (simplified.kind === 'union') {
|
|
@@ -145,21 +146,30 @@ export function toJSONSchema(type, options) {
|
|
|
145
146
|
for (const t of simplified.types) {
|
|
146
147
|
if (isLiteralType(t)) {
|
|
147
148
|
literals.push(t);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const child = toJSONSchemaImpl(t, options);
|
|
152
|
+
if (child === true) {
|
|
153
|
+
return true;
|
|
148
154
|
}
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
if (child === false) {
|
|
156
|
+
continue;
|
|
151
157
|
}
|
|
158
|
+
anyOf.push(child);
|
|
152
159
|
}
|
|
153
160
|
if (literals.length > 0) {
|
|
154
161
|
anyOf.push(literalEnum(literals));
|
|
155
162
|
}
|
|
163
|
+
if (anyOf.length === 0) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
156
166
|
if (anyOf.length === 1) {
|
|
157
167
|
return anyOf[0];
|
|
158
168
|
}
|
|
159
169
|
return { anyOf };
|
|
160
170
|
}
|
|
161
171
|
if (simplified.kind === 'intersection') {
|
|
162
|
-
const allOf = simplified.types.map((t) =>
|
|
172
|
+
const allOf = simplified.types.map((t) => toJSONSchemaImpl(t, options));
|
|
163
173
|
if (allOf.length === 1) {
|
|
164
174
|
return allOf[0];
|
|
165
175
|
}
|
|
@@ -170,7 +180,7 @@ export function toJSONSchema(type, options) {
|
|
|
170
180
|
const properties = {};
|
|
171
181
|
const required = [];
|
|
172
182
|
for (const field of simplified.fields) {
|
|
173
|
-
properties[field.name] =
|
|
183
|
+
properties[field.name] = toJSONSchemaImpl(field.type, options);
|
|
174
184
|
if (!field.optional && !loose) {
|
|
175
185
|
required.push(field.name);
|
|
176
186
|
}
|
|
@@ -185,7 +195,7 @@ export function toJSONSchema(type, options) {
|
|
|
185
195
|
}
|
|
186
196
|
return schema;
|
|
187
197
|
}
|
|
188
|
-
const valueSchema =
|
|
198
|
+
const valueSchema = toJSONSchemaImpl(simplified.value, options);
|
|
189
199
|
if (simplified.key == null) {
|
|
190
200
|
return {
|
|
191
201
|
type: 'object',
|
|
@@ -239,9 +249,9 @@ export function toJSONSchema(type, options) {
|
|
|
239
249
|
const elementSchemas = simplified.elements.map((e) => {
|
|
240
250
|
const t = e.type;
|
|
241
251
|
if (!e.spread)
|
|
242
|
-
return
|
|
252
|
+
return toJSONSchemaImpl(t, options);
|
|
243
253
|
if (typeof t == 'object' && t.kind === 'array') {
|
|
244
|
-
return
|
|
254
|
+
return toJSONSchemaImpl(t.element, options);
|
|
245
255
|
}
|
|
246
256
|
return true;
|
|
247
257
|
});
|
|
@@ -287,4 +297,18 @@ export function toJSONSchema(type, options) {
|
|
|
287
297
|
simplified;
|
|
288
298
|
return true;
|
|
289
299
|
}
|
|
300
|
+
/** Converts a Type object into JSON Schema */
|
|
301
|
+
export function toJSONSchema(type, options) {
|
|
302
|
+
let schema = toJSONSchemaImpl(type, { loose: options?.loose ?? false });
|
|
303
|
+
if (schema === true) {
|
|
304
|
+
schema = {};
|
|
305
|
+
}
|
|
306
|
+
else if (schema === false) {
|
|
307
|
+
schema = { not: true };
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
...schema,
|
|
311
|
+
$schema,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
290
314
|
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
|
package/dist/simplifier.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Type } from './parser.js';
|
|
2
|
+
/** Top types that can be absorbed / eliminated in simplification. */
|
|
3
|
+
type TopType = 'unknown' | 'never' | 'any';
|
|
2
4
|
/** Controls which type simplifications are applied. */
|
|
3
5
|
export interface SimplifyOptions {
|
|
4
6
|
/** Flatten nested union nodes. */
|
|
@@ -19,7 +21,28 @@ export interface SimplifyOptions {
|
|
|
19
21
|
mergeRecordIntersections?: boolean;
|
|
20
22
|
/** Inline tuple spread elements (..[A, B] → A, B). */
|
|
21
23
|
expandTupleSpreads?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Eliminate / absorb top types in unions.
|
|
26
|
+
* - `unknown | T` → `unknown`
|
|
27
|
+
* - `any | T` → `any`
|
|
28
|
+
* - `T | never` → `T`
|
|
29
|
+
* `true` enables all, or pass a subset of `'unknown' | 'never' | 'any'`.
|
|
30
|
+
*/
|
|
31
|
+
simplifyTopTypesInUnions?: boolean | TopType[];
|
|
32
|
+
/**
|
|
33
|
+
* Eliminate / absorb top types in intersections.
|
|
34
|
+
* - `never & T` → `never`
|
|
35
|
+
* - `T & unknown` → `T`
|
|
36
|
+
* - `T & any` → `T`
|
|
37
|
+
* `true` enables all, or pass a subset of `'unknown' | 'never' | 'any'`.
|
|
38
|
+
*/
|
|
39
|
+
simplifyTopTypesInIntersections?: boolean | TopType[];
|
|
40
|
+
/** `record<string, V>` → `record<V>` (string is the default key). */
|
|
41
|
+
normalizeGenericRecord?: boolean;
|
|
42
|
+
/** `array<any | unknown>` → `array` (no element constraint). */
|
|
43
|
+
normalizeGenericArray?: boolean;
|
|
22
44
|
}
|
|
23
45
|
/** Simplifies a Type AST in place, optionally disabling individual normalization passes. */
|
|
24
46
|
export declare function simplify(type: Type, options?: SimplifyOptions): Type;
|
|
47
|
+
export {};
|
|
25
48
|
//# sourceMappingURL=simplifier.d.ts.map
|
package/dist/simplifier.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplifier.d.ts","sourceRoot":"","sources":["../src/simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9E,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC5B,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,4CAA4C;IAC5C,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"simplifier.d.ts","sourceRoot":"","sources":["../src/simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9E,qEAAqE;AACrE,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE3C,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC5B,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,4CAA4C;IAC5C,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC/C;;;;;;OAMG;IACH,+BAA+B,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IACtD,qEAAqE;IACrE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAkWD,4FAA4F;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAGpE"}
|
package/dist/simplifier.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/** Resolves the top types option into an array of top types. */
|
|
2
|
+
function resolveTopTypes(value) {
|
|
3
|
+
if (value === false || value == null)
|
|
4
|
+
return [];
|
|
5
|
+
if (value === true)
|
|
6
|
+
return ['unknown', 'never', 'any'];
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
1
9
|
const DEFAULT_OPTIONS = {
|
|
2
10
|
flattenUnions: true,
|
|
3
11
|
flattenIntersections: true,
|
|
@@ -8,6 +16,10 @@ const DEFAULT_OPTIONS = {
|
|
|
8
16
|
distributeIntersectionsOverUnions: true,
|
|
9
17
|
mergeRecordIntersections: true,
|
|
10
18
|
expandTupleSpreads: true,
|
|
19
|
+
simplifyTopTypesInUnions: true,
|
|
20
|
+
simplifyTopTypesInIntersections: true,
|
|
21
|
+
normalizeGenericRecord: true,
|
|
22
|
+
normalizeGenericArray: true,
|
|
11
23
|
};
|
|
12
24
|
/** Fills in default simplification options. */
|
|
13
25
|
function normalizeOptions(options) {
|
|
@@ -67,6 +79,8 @@ function getTypeDedupKey(type, symbols) {
|
|
|
67
79
|
}
|
|
68
80
|
/** Removes duplicate members from union/intersection type member lists. */
|
|
69
81
|
function deduplicateTypeMembers(types) {
|
|
82
|
+
if (types.length <= 1)
|
|
83
|
+
return types;
|
|
70
84
|
const symbols = new Map();
|
|
71
85
|
const seen = new Set();
|
|
72
86
|
const result = [];
|
|
@@ -175,6 +189,9 @@ function simplifyImpl(type, config) {
|
|
|
175
189
|
}
|
|
176
190
|
if (type.kind === 'array') {
|
|
177
191
|
type.element = simplifyImpl(type.element, config);
|
|
192
|
+
if (config.normalizeGenericArray && (type.element === 'any' || type.element === 'unknown')) {
|
|
193
|
+
return 'array';
|
|
194
|
+
}
|
|
178
195
|
return type;
|
|
179
196
|
}
|
|
180
197
|
if (type.kind === 'function') {
|
|
@@ -217,22 +234,63 @@ function simplifyImpl(type, config) {
|
|
|
217
234
|
if (type.key != null)
|
|
218
235
|
type.key = simplifyImpl(type.key, config);
|
|
219
236
|
type.value = simplifyImpl(type.value, config);
|
|
237
|
+
if (config.normalizeGenericRecord && type.key === 'string') {
|
|
238
|
+
delete type.key;
|
|
239
|
+
}
|
|
220
240
|
}
|
|
221
241
|
return type;
|
|
222
242
|
}
|
|
223
243
|
if (type.kind === 'union') {
|
|
224
244
|
let simplifiedTypes = flattenUnionTypes(type.types.map((item) => simplifyImpl(item, config)), config);
|
|
245
|
+
// Top-type elimination: unknown | T → unknown, any | T → any, T | never → T
|
|
246
|
+
const topTypes = resolveTopTypes(config.simplifyTopTypesInUnions);
|
|
247
|
+
if (topTypes.length > 0) {
|
|
248
|
+
if (topTypes.includes('any') && simplifiedTypes.includes('any'))
|
|
249
|
+
return 'any';
|
|
250
|
+
if (topTypes.includes('unknown') && simplifiedTypes.includes('unknown'))
|
|
251
|
+
return 'unknown';
|
|
252
|
+
if (topTypes.includes('never')) {
|
|
253
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'never');
|
|
254
|
+
}
|
|
255
|
+
}
|
|
225
256
|
if (config.deduplicateUnions) {
|
|
226
257
|
simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
|
|
227
258
|
}
|
|
228
|
-
if (config.unwrapSingleUnion
|
|
229
|
-
|
|
259
|
+
if (config.unwrapSingleUnion) {
|
|
260
|
+
if (simplifiedTypes.length === 1)
|
|
261
|
+
return simplifiedTypes[0];
|
|
262
|
+
if (simplifiedTypes.length === 0)
|
|
263
|
+
return 'never';
|
|
230
264
|
}
|
|
231
265
|
type.types = simplifiedTypes;
|
|
232
266
|
return type;
|
|
233
267
|
}
|
|
234
268
|
if (type.kind === 'intersection') {
|
|
235
269
|
let simplifiedTypes = flattenIntersectionTypes(type.types.map((item) => simplifyImpl(item, config)), config);
|
|
270
|
+
// Top-type elimination: never & T → never, T & unknown → T, T & any → T
|
|
271
|
+
const topTypes = resolveTopTypes(config.simplifyTopTypesInIntersections);
|
|
272
|
+
if (topTypes.length > 0) {
|
|
273
|
+
const typeNames = new Set(simplifiedTypes.filter((t) => typeof t === 'string'));
|
|
274
|
+
if (topTypes.includes('never') && typeNames.has('never'))
|
|
275
|
+
return 'never';
|
|
276
|
+
let filtered = false;
|
|
277
|
+
if (topTypes.includes('unknown') && typeNames.has('unknown')) {
|
|
278
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'unknown');
|
|
279
|
+
filtered = true;
|
|
280
|
+
}
|
|
281
|
+
if (topTypes.includes('any') && typeNames.has('any')) {
|
|
282
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'any');
|
|
283
|
+
filtered = true;
|
|
284
|
+
}
|
|
285
|
+
if (filtered) {
|
|
286
|
+
if (simplifiedTypes.length === 1)
|
|
287
|
+
return simplifiedTypes[0];
|
|
288
|
+
if (simplifiedTypes.length === 0) {
|
|
289
|
+
// All members were the same eliminated top type
|
|
290
|
+
return typeNames.has('any') ? 'any' : 'unknown';
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
236
294
|
if (config.deduplicateIntersections) {
|
|
237
295
|
simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
|
|
238
296
|
}
|
package/dist/simplifier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplifier.js","sourceRoot":"","sources":["../src/simplifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"simplifier.js","sourceRoot":"","sources":["../src/simplifier.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirascript/typed",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.73",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Parse MiraScript type definitions and generate TypeScript types / JSON schemas.",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"c8": "^11.0.0",
|
|
29
29
|
"js-yaml": "^5.2.1",
|
|
30
30
|
"peggy": "^5.1.0",
|
|
31
|
-
"@mirascript/mirascript": "~0.1.
|
|
31
|
+
"@mirascript/mirascript": "~0.1.73"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"json-schema-typed": "^8.0.2",
|
|
35
|
-
"@mirascript/constants": "~0.1.
|
|
35
|
+
"@mirascript/constants": "~0.1.73"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "peggy src/type.peggy --multi-output ./dist --dts --format es --source-map && tsc",
|
package/src/json.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type JSONSchema, $schema } from 'json-schema-typed';
|
|
2
2
|
import { REG_NUMBER } from '@mirascript/constants';
|
|
3
3
|
import { simplify } from './simplifier.js';
|
|
4
4
|
import type { KnownType, LiteralType, NamedType, TemplateType, Type } from './parser.js';
|
|
5
5
|
|
|
6
|
+
export type { JSONSchema } from 'json-schema-typed';
|
|
7
|
+
|
|
6
8
|
/** Converts a KnownType or NamedType into JSON Schema */
|
|
7
9
|
function string(type: KnownType | NamedType): JSONSchema {
|
|
8
10
|
switch (type) {
|
|
@@ -132,8 +134,8 @@ export interface ToJSONSchemaOptions {
|
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
/** Converts a Type object into JSON Schema */
|
|
135
|
-
|
|
136
|
-
const loose = options
|
|
137
|
+
function toJSONSchemaImpl(type: Type, options: Required<ToJSONSchemaOptions>): JSONSchema {
|
|
138
|
+
const { loose } = options;
|
|
137
139
|
const simplified = simplify(type);
|
|
138
140
|
if (typeof simplified == 'symbol') {
|
|
139
141
|
return {};
|
|
@@ -144,7 +146,7 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
144
146
|
if (simplified.kind === 'array') {
|
|
145
147
|
return {
|
|
146
148
|
type: 'array',
|
|
147
|
-
items:
|
|
149
|
+
items: toJSONSchemaImpl(simplified.element, options),
|
|
148
150
|
};
|
|
149
151
|
}
|
|
150
152
|
if (simplified.kind === 'union') {
|
|
@@ -153,20 +155,30 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
153
155
|
for (const t of simplified.types) {
|
|
154
156
|
if (isLiteralType(t)) {
|
|
155
157
|
literals.push(t);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const child = toJSONSchemaImpl(t, options);
|
|
161
|
+
if (child === true) {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
if (child === false) {
|
|
165
|
+
continue;
|
|
158
166
|
}
|
|
167
|
+
anyOf.push(child);
|
|
159
168
|
}
|
|
160
169
|
if (literals.length > 0) {
|
|
161
170
|
anyOf.push(literalEnum(literals));
|
|
162
171
|
}
|
|
172
|
+
if (anyOf.length === 0) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
163
175
|
if (anyOf.length === 1) {
|
|
164
176
|
return anyOf[0]!;
|
|
165
177
|
}
|
|
166
178
|
return { anyOf };
|
|
167
179
|
}
|
|
168
180
|
if (simplified.kind === 'intersection') {
|
|
169
|
-
const allOf = simplified.types.map((t) =>
|
|
181
|
+
const allOf = simplified.types.map((t) => toJSONSchemaImpl(t, options));
|
|
170
182
|
if (allOf.length === 1) {
|
|
171
183
|
return allOf[0]!;
|
|
172
184
|
}
|
|
@@ -177,7 +189,7 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
177
189
|
const properties: Record<string, JSONSchema> = {};
|
|
178
190
|
const required: string[] = [];
|
|
179
191
|
for (const field of simplified.fields) {
|
|
180
|
-
properties[field.name] =
|
|
192
|
+
properties[field.name] = toJSONSchemaImpl(field.type, options);
|
|
181
193
|
if (!field.optional && !loose) {
|
|
182
194
|
required.push(field.name);
|
|
183
195
|
}
|
|
@@ -193,7 +205,7 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
193
205
|
return schema;
|
|
194
206
|
}
|
|
195
207
|
|
|
196
|
-
const valueSchema =
|
|
208
|
+
const valueSchema = toJSONSchemaImpl(simplified.value, options);
|
|
197
209
|
if (simplified.key == null) {
|
|
198
210
|
return {
|
|
199
211
|
type: 'object',
|
|
@@ -245,9 +257,9 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
245
257
|
// Non-array rest (e.g. ..string) is treated as any ({}).
|
|
246
258
|
const elementSchemas = simplified.elements.map((e) => {
|
|
247
259
|
const t = e.type;
|
|
248
|
-
if (!e.spread) return
|
|
260
|
+
if (!e.spread) return toJSONSchemaImpl(t, options);
|
|
249
261
|
if (typeof t == 'object' && t.kind === 'array') {
|
|
250
|
-
return
|
|
262
|
+
return toJSONSchemaImpl(t.element, options);
|
|
251
263
|
}
|
|
252
264
|
return true;
|
|
253
265
|
});
|
|
@@ -292,3 +304,20 @@ export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSch
|
|
|
292
304
|
simplified satisfies never;
|
|
293
305
|
return true;
|
|
294
306
|
}
|
|
307
|
+
|
|
308
|
+
/** Converts a Type object into JSON Schema */
|
|
309
|
+
export function toJSONSchema(
|
|
310
|
+
type: Type,
|
|
311
|
+
options?: ToJSONSchemaOptions,
|
|
312
|
+
): JSONSchema.Interface & { $schema: typeof $schema } {
|
|
313
|
+
let schema = toJSONSchemaImpl(type, { loose: options?.loose ?? false });
|
|
314
|
+
if (schema === true) {
|
|
315
|
+
schema = {};
|
|
316
|
+
} else if (schema === false) {
|
|
317
|
+
schema = { not: true };
|
|
318
|
+
}
|
|
319
|
+
return {
|
|
320
|
+
...schema,
|
|
321
|
+
$schema,
|
|
322
|
+
};
|
|
323
|
+
}
|
package/src/simplifier.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { GenericType, RecordField, RecordType, Type } from './parser.js';
|
|
2
2
|
|
|
3
|
+
/** Top types that can be absorbed / eliminated in simplification. */
|
|
4
|
+
type TopType = 'unknown' | 'never' | 'any';
|
|
5
|
+
|
|
3
6
|
/** Controls which type simplifications are applied. */
|
|
4
7
|
export interface SimplifyOptions {
|
|
5
8
|
/** Flatten nested union nodes. */
|
|
@@ -20,6 +23,33 @@ export interface SimplifyOptions {
|
|
|
20
23
|
mergeRecordIntersections?: boolean;
|
|
21
24
|
/** Inline tuple spread elements (..[A, B] → A, B). */
|
|
22
25
|
expandTupleSpreads?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Eliminate / absorb top types in unions.
|
|
28
|
+
* - `unknown | T` → `unknown`
|
|
29
|
+
* - `any | T` → `any`
|
|
30
|
+
* - `T | never` → `T`
|
|
31
|
+
* `true` enables all, or pass a subset of `'unknown' | 'never' | 'any'`.
|
|
32
|
+
*/
|
|
33
|
+
simplifyTopTypesInUnions?: boolean | TopType[];
|
|
34
|
+
/**
|
|
35
|
+
* Eliminate / absorb top types in intersections.
|
|
36
|
+
* - `never & T` → `never`
|
|
37
|
+
* - `T & unknown` → `T`
|
|
38
|
+
* - `T & any` → `T`
|
|
39
|
+
* `true` enables all, or pass a subset of `'unknown' | 'never' | 'any'`.
|
|
40
|
+
*/
|
|
41
|
+
simplifyTopTypesInIntersections?: boolean | TopType[];
|
|
42
|
+
/** `record<string, V>` → `record<V>` (string is the default key). */
|
|
43
|
+
normalizeGenericRecord?: boolean;
|
|
44
|
+
/** `array<any | unknown>` → `array` (no element constraint). */
|
|
45
|
+
normalizeGenericArray?: boolean;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Resolves the top types option into an array of top types. */
|
|
49
|
+
function resolveTopTypes(value: boolean | TopType[] | undefined): TopType[] {
|
|
50
|
+
if (value === false || value == null) return [];
|
|
51
|
+
if (value === true) return ['unknown', 'never', 'any'];
|
|
52
|
+
return value;
|
|
23
53
|
}
|
|
24
54
|
|
|
25
55
|
const DEFAULT_OPTIONS: Required<SimplifyOptions> = {
|
|
@@ -32,6 +62,10 @@ const DEFAULT_OPTIONS: Required<SimplifyOptions> = {
|
|
|
32
62
|
distributeIntersectionsOverUnions: true,
|
|
33
63
|
mergeRecordIntersections: true,
|
|
34
64
|
expandTupleSpreads: true,
|
|
65
|
+
simplifyTopTypesInUnions: true,
|
|
66
|
+
simplifyTopTypesInIntersections: true,
|
|
67
|
+
normalizeGenericRecord: true,
|
|
68
|
+
normalizeGenericArray: true,
|
|
35
69
|
};
|
|
36
70
|
|
|
37
71
|
/** Fills in default simplification options. */
|
|
@@ -96,6 +130,7 @@ function getTypeDedupKey(type: Type, symbols: Map<symbol, number>): string {
|
|
|
96
130
|
|
|
97
131
|
/** Removes duplicate members from union/intersection type member lists. */
|
|
98
132
|
function deduplicateTypeMembers(types: Type[]): Type[] {
|
|
133
|
+
if (types.length <= 1) return types;
|
|
99
134
|
const symbols = new Map<symbol, number>();
|
|
100
135
|
const seen = new Set<string>();
|
|
101
136
|
const result: Type[] = [];
|
|
@@ -212,6 +247,9 @@ function simplifyImpl(type: Type, config: Required<SimplifyOptions>): Type {
|
|
|
212
247
|
|
|
213
248
|
if (type.kind === 'array') {
|
|
214
249
|
type.element = simplifyImpl(type.element, config);
|
|
250
|
+
if (config.normalizeGenericArray && (type.element === 'any' || type.element === 'unknown')) {
|
|
251
|
+
return 'array';
|
|
252
|
+
}
|
|
215
253
|
return type;
|
|
216
254
|
}
|
|
217
255
|
|
|
@@ -259,6 +297,9 @@ function simplifyImpl(type: Type, config: Required<SimplifyOptions>): Type {
|
|
|
259
297
|
} else {
|
|
260
298
|
if (type.key != null) type.key = simplifyImpl(type.key, config);
|
|
261
299
|
type.value = simplifyImpl(type.value, config);
|
|
300
|
+
if (config.normalizeGenericRecord && type.key === 'string') {
|
|
301
|
+
delete type.key;
|
|
302
|
+
}
|
|
262
303
|
}
|
|
263
304
|
return type;
|
|
264
305
|
}
|
|
@@ -268,11 +309,23 @@ function simplifyImpl(type: Type, config: Required<SimplifyOptions>): Type {
|
|
|
268
309
|
type.types.map((item) => simplifyImpl(item, config)),
|
|
269
310
|
config,
|
|
270
311
|
);
|
|
312
|
+
|
|
313
|
+
// Top-type elimination: unknown | T → unknown, any | T → any, T | never → T
|
|
314
|
+
const topTypes = resolveTopTypes(config.simplifyTopTypesInUnions);
|
|
315
|
+
if (topTypes.length > 0) {
|
|
316
|
+
if (topTypes.includes('any') && simplifiedTypes.includes('any')) return 'any';
|
|
317
|
+
if (topTypes.includes('unknown') && simplifiedTypes.includes('unknown')) return 'unknown';
|
|
318
|
+
if (topTypes.includes('never')) {
|
|
319
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'never');
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
271
323
|
if (config.deduplicateUnions) {
|
|
272
324
|
simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
|
|
273
325
|
}
|
|
274
|
-
if (config.unwrapSingleUnion
|
|
275
|
-
return simplifiedTypes[0]!;
|
|
326
|
+
if (config.unwrapSingleUnion) {
|
|
327
|
+
if (simplifiedTypes.length === 1) return simplifiedTypes[0]!;
|
|
328
|
+
if (simplifiedTypes.length === 0) return 'never';
|
|
276
329
|
}
|
|
277
330
|
type.types = simplifiedTypes;
|
|
278
331
|
return type;
|
|
@@ -283,6 +336,30 @@ function simplifyImpl(type: Type, config: Required<SimplifyOptions>): Type {
|
|
|
283
336
|
type.types.map((item) => simplifyImpl(item, config)),
|
|
284
337
|
config,
|
|
285
338
|
);
|
|
339
|
+
|
|
340
|
+
// Top-type elimination: never & T → never, T & unknown → T, T & any → T
|
|
341
|
+
const topTypes = resolveTopTypes(config.simplifyTopTypesInIntersections);
|
|
342
|
+
if (topTypes.length > 0) {
|
|
343
|
+
const typeNames = new Set(simplifiedTypes.filter((t): t is string => typeof t === 'string'));
|
|
344
|
+
if (topTypes.includes('never') && typeNames.has('never')) return 'never';
|
|
345
|
+
let filtered = false;
|
|
346
|
+
if (topTypes.includes('unknown') && typeNames.has('unknown')) {
|
|
347
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'unknown');
|
|
348
|
+
filtered = true;
|
|
349
|
+
}
|
|
350
|
+
if (topTypes.includes('any') && typeNames.has('any')) {
|
|
351
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'any');
|
|
352
|
+
filtered = true;
|
|
353
|
+
}
|
|
354
|
+
if (filtered) {
|
|
355
|
+
if (simplifiedTypes.length === 1) return simplifiedTypes[0]!;
|
|
356
|
+
if (simplifiedTypes.length === 0) {
|
|
357
|
+
// All members were the same eliminated top type
|
|
358
|
+
return typeNames.has('any') ? 'any' : 'unknown';
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
286
363
|
if (config.deduplicateIntersections) {
|
|
287
364
|
simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
|
|
288
365
|
}
|