@mirascript/typed 0.1.65 → 0.1.70

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 CHANGED
@@ -1,10 +1,13 @@
1
- import type { JSONSchema } from 'json-schema-typed';
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
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAmD,IAAI,EAAE,MAAM,aAAa,CAAC;AA4HzF,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,UAAU,CA+JlF"}
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
- export function toJSONSchema(type, options) {
128
- const loose = options?.loose ?? false;
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: toJSONSchema(simplified.element, options),
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
- else {
150
- anyOf.push(toJSONSchema(t, options));
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) => toJSONSchema(t, options));
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] = toJSONSchema(field.type, options);
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 = toJSONSchema(simplified.value, options);
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 toJSONSchema(t, options);
252
+ return toJSONSchemaImpl(t, options);
243
253
  if (typeof t == 'object' && t.kind === 'array') {
244
- return toJSONSchema(t.element, options);
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":"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"}
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -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;CAChC;AA4SD,4FAA4F;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAGpE"}
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"}
@@ -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 && simplifiedTypes.length === 1) {
229
- return simplifiedTypes[0];
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
  }
@@ -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.65",
3
+ "version": "0.1.70",
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.65"
31
+ "@mirascript/mirascript": "~0.1.70"
32
32
  },
33
33
  "dependencies": {
34
34
  "json-schema-typed": "^8.0.2",
35
- "@mirascript/constants": "~0.1.65"
35
+ "@mirascript/constants": "~0.1.70"
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 { JSONSchema } from 'json-schema-typed';
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
- export function toJSONSchema(type: Type, options?: ToJSONSchemaOptions): JSONSchema {
136
- const loose = options?.loose ?? false;
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: toJSONSchema(simplified.element, options),
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
- } else {
157
- anyOf.push(toJSONSchema(t, options));
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) => toJSONSchema(t, options));
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] = toJSONSchema(field.type, options);
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 = toJSONSchema(simplified.value, options);
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 toJSONSchema(t, options);
260
+ if (!e.spread) return toJSONSchemaImpl(t, options);
249
261
  if (typeof t == 'object' && t.kind === 'array') {
250
- return toJSONSchema(t.element, options);
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 && simplifiedTypes.length === 1) {
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
  }