@mirascript/typed 0.1.78 → 0.1.80

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.
Files changed (99) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/json/impl.d.ts +8 -0
  6. package/dist/json/impl.d.ts.map +1 -0
  7. package/dist/json/impl.js +51 -0
  8. package/dist/json/impl.js.map +1 -0
  9. package/dist/{json.d.ts → json/index.d.ts} +2 -2
  10. package/dist/json/index.d.ts.map +1 -0
  11. package/dist/json/index.js +17 -0
  12. package/dist/json/index.js.map +1 -0
  13. package/dist/json/literal.d.ts +9 -0
  14. package/dist/json/literal.d.ts.map +1 -0
  15. package/dist/json/literal.js +16 -0
  16. package/dist/json/literal.js.map +1 -0
  17. package/dist/json/record.d.ts +6 -0
  18. package/dist/json/record.d.ts.map +1 -0
  19. package/dist/json/record.js +66 -0
  20. package/dist/json/record.js.map +1 -0
  21. package/dist/json/string.d.ts +5 -0
  22. package/dist/json/string.d.ts.map +1 -0
  23. package/dist/json/string.js +28 -0
  24. package/dist/json/string.js.map +1 -0
  25. package/dist/json/template.d.ts +8 -0
  26. package/dist/json/template.d.ts.map +1 -0
  27. package/dist/json/template.js +72 -0
  28. package/dist/json/template.js.map +1 -0
  29. package/dist/json/tuple.d.ts +8 -0
  30. package/dist/json/tuple.d.ts.map +1 -0
  31. package/dist/json/tuple.js +52 -0
  32. package/dist/json/tuple.js.map +1 -0
  33. package/dist/json/union-intersection.d.ts +8 -0
  34. package/dist/json/union-intersection.d.ts.map +1 -0
  35. package/dist/json/union-intersection.js +40 -0
  36. package/dist/json/union-intersection.js.map +1 -0
  37. package/dist/simplifier/dedup.d.ts +4 -0
  38. package/dist/simplifier/dedup.d.ts.map +1 -0
  39. package/dist/simplifier/dedup.js +61 -0
  40. package/dist/simplifier/dedup.js.map +1 -0
  41. package/dist/simplifier/impl.d.ts +7 -0
  42. package/dist/simplifier/impl.d.ts.map +1 -0
  43. package/dist/simplifier/impl.js +51 -0
  44. package/dist/simplifier/impl.js.map +1 -0
  45. package/dist/{simplifier.d.ts → simplifier/index.d.ts} +3 -5
  46. package/dist/simplifier/index.d.ts.map +1 -0
  47. package/dist/simplifier/index.js +22 -0
  48. package/dist/simplifier/index.js.map +1 -0
  49. package/dist/simplifier/intersection.d.ts +5 -0
  50. package/dist/simplifier/intersection.d.ts.map +1 -0
  51. package/dist/simplifier/intersection.js +126 -0
  52. package/dist/simplifier/intersection.js.map +1 -0
  53. package/dist/simplifier/record.d.ts +5 -0
  54. package/dist/simplifier/record.d.ts.map +1 -0
  55. package/dist/simplifier/record.js +24 -0
  56. package/dist/simplifier/record.js.map +1 -0
  57. package/dist/simplifier/top-type.d.ts +5 -0
  58. package/dist/simplifier/top-type.d.ts.map +1 -0
  59. package/dist/simplifier/top-type.js +9 -0
  60. package/dist/simplifier/top-type.js.map +1 -0
  61. package/dist/simplifier/tuple.d.ts +5 -0
  62. package/dist/simplifier/tuple.d.ts.map +1 -0
  63. package/dist/simplifier/tuple.js +17 -0
  64. package/dist/simplifier/tuple.js.map +1 -0
  65. package/dist/simplifier/union.d.ts +5 -0
  66. package/dist/simplifier/union.d.ts.map +1 -0
  67. package/dist/simplifier/union.js +47 -0
  68. package/dist/simplifier/union.js.map +1 -0
  69. package/dist/simplifier/utils.d.ts +12 -0
  70. package/dist/simplifier/utils.d.ts.map +1 -0
  71. package/dist/simplifier/utils.js +17 -0
  72. package/dist/simplifier/utils.js.map +1 -0
  73. package/package.json +5 -5
  74. package/src/index.ts +2 -2
  75. package/src/json/impl.ts +57 -0
  76. package/src/json/index.ts +28 -0
  77. package/src/json/literal.ts +20 -0
  78. package/src/json/record.ts +70 -0
  79. package/src/json/string.ts +30 -0
  80. package/src/json/template.ts +71 -0
  81. package/src/json/tuple.ts +52 -0
  82. package/src/json/union-intersection.ts +43 -0
  83. package/src/simplifier/dedup.ts +61 -0
  84. package/src/simplifier/impl.ts +64 -0
  85. package/src/simplifier/index.ts +67 -0
  86. package/src/simplifier/intersection.ts +129 -0
  87. package/src/simplifier/record.ts +24 -0
  88. package/src/simplifier/top-type.ts +9 -0
  89. package/src/simplifier/tuple.ts +20 -0
  90. package/src/simplifier/union.ts +45 -0
  91. package/src/simplifier/utils.ts +21 -0
  92. package/dist/json.d.ts.map +0 -1
  93. package/dist/json.js +0 -314
  94. package/dist/json.js.map +0 -1
  95. package/dist/simplifier.d.ts.map +0 -1
  96. package/dist/simplifier.js +0 -332
  97. package/dist/simplifier.js.map +0 -1
  98. package/src/json.ts +0 -323
  99. package/src/simplifier.ts +0 -404
@@ -0,0 +1,45 @@
1
+ import type { Type, UnionType } from '../parser.js';
2
+ import { deduplicateTypeMembers } from './dedup.js';
3
+ import { simplifyImpl, type SimplifyImplOptions } from './impl.js';
4
+ import { resolveTopTypes } from './top-type.js';
5
+ import { isTypeObject } from './utils.js';
6
+
7
+ /** Flattens nested union nodes when the corresponding option is enabled. */
8
+ function flattenUnionTypes(type: UnionType, options: SimplifyImplOptions): Type[] {
9
+ const types = type.types.map((item) => simplifyImpl(item, options));
10
+ if (!options.flattenUnions) return types;
11
+ const result: Type[] = [];
12
+ for (const type of types) {
13
+ if (isTypeObject(type) && type.kind === 'union') {
14
+ result.push(...flattenUnionTypes(type, options));
15
+ } else {
16
+ result.push(type);
17
+ }
18
+ }
19
+ return result;
20
+ }
21
+
22
+ /** Simplifies a union recursively. */
23
+ export function simplifyUnion(type: UnionType, options: SimplifyImplOptions): Type {
24
+ let simplifiedTypes = flattenUnionTypes(type, options);
25
+
26
+ // Top-type elimination: unknown | T → unknown, any | T → any, T | never → T
27
+ const topTypes = resolveTopTypes(options.simplifyTopTypesInUnions);
28
+ if (topTypes.length > 0) {
29
+ if (topTypes.includes('any') && simplifiedTypes.includes('any')) return 'any';
30
+ if (topTypes.includes('unknown') && simplifiedTypes.includes('unknown')) return 'unknown';
31
+ if (topTypes.includes('never')) {
32
+ simplifiedTypes = simplifiedTypes.filter((t) => t !== 'never');
33
+ }
34
+ }
35
+
36
+ if (options.deduplicateUnions) {
37
+ simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
38
+ }
39
+ if (options.unwrapSingleUnion) {
40
+ if (simplifiedTypes.length === 1) return simplifiedTypes[0]!;
41
+ if (simplifiedTypes.length === 0) return 'never';
42
+ }
43
+ type.types = simplifiedTypes;
44
+ return type;
45
+ }
@@ -0,0 +1,21 @@
1
+ import type { Type, GenericType, RecordField, RecordType, UnionType, IntersectionType } from '../parser.js';
2
+
3
+ /** Checks whether a type is represented by an object node. */
4
+ export function isTypeObject(type: Type): type is Exclude<Type, GenericType | string> {
5
+ return typeof type === 'object';
6
+ }
7
+
8
+ /** Checks whether a type is union. */
9
+ export function isUnionType(type: Type): type is UnionType {
10
+ return isTypeObject(type) && type.kind === 'union';
11
+ }
12
+
13
+ /** Checks whether a type is intersection. */
14
+ export function isIntersectionType(type: Type): type is IntersectionType {
15
+ return isTypeObject(type) && type.kind === 'intersection';
16
+ }
17
+
18
+ /** Checks whether a record type uses the explicit fields form. */
19
+ export function isFieldRecordType(type: Type): type is Extract<RecordType, { fields: RecordField[] }> {
20
+ return isTypeObject(type) && type.kind === 'record' && 'fields' in type;
21
+ }
@@ -1 +0,0 @@
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 DELETED
@@ -1,314 +0,0 @@
1
- import { $schema } from 'json-schema-typed';
2
- import { REG_NUMBER } from '@mirascript/constants';
3
- import { simplify } from './simplifier.js';
4
- /** Converts a KnownType or NamedType into JSON Schema */
5
- function string(type) {
6
- switch (type) {
7
- case 'string':
8
- return { type: 'string' };
9
- case 'number':
10
- return { type: 'number' };
11
- case 'boolean':
12
- return { type: 'boolean' };
13
- case 'nil':
14
- return { type: 'null' };
15
- case 'array':
16
- return { type: 'array', items: true };
17
- case 'record':
18
- return { type: 'object' };
19
- case 'extern':
20
- return true;
21
- case 'any':
22
- return true;
23
- case 'unknown':
24
- return true;
25
- case 'never':
26
- return false;
27
- default:
28
- return true;
29
- }
30
- }
31
- /** Escapes a literal string for use in a regular expression */
32
- function escapeRegex(value) {
33
- return value.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
34
- }
35
- const RE_ANY = '.*?';
36
- const RE_NUMBER = REG_NUMBER.source;
37
- const RE_BOOLEAN = 'true|false';
38
- /** Converts a template interpolation part into a regex pattern fragment */
39
- function templatePartPattern(part, grouping) {
40
- let result;
41
- if (typeof part === 'symbol') {
42
- result = RE_ANY;
43
- }
44
- else if (typeof part === 'string') {
45
- switch (part) {
46
- case 'number':
47
- result = RE_NUMBER;
48
- break;
49
- case 'boolean':
50
- result = RE_BOOLEAN;
51
- break;
52
- case 'nil':
53
- case 'never':
54
- result = '';
55
- break;
56
- case 'array':
57
- case 'record':
58
- case 'extern':
59
- case 'any':
60
- case 'unknown':
61
- case 'string':
62
- default:
63
- result = RE_ANY;
64
- break;
65
- }
66
- }
67
- else if (part.kind === 'literal') {
68
- if (typeof part.value === 'boolean') {
69
- result = String(part.value);
70
- }
71
- else {
72
- result = escapeRegex(part.value);
73
- }
74
- }
75
- else if (part.kind === 'union') {
76
- const patterns = new Set(part.types.map((p) => templatePartPattern(p, false)));
77
- if (patterns.has(RE_ANY)) {
78
- result = RE_ANY;
79
- }
80
- else {
81
- const hasEmpty = patterns.delete('');
82
- result = Array.from(patterns).join('|');
83
- if (hasEmpty) {
84
- result = `(${result})?`;
85
- }
86
- }
87
- }
88
- else if (part.kind === 'intersection') {
89
- // Regex intersection is not representable in general; keep behavior conservative.
90
- result = RE_ANY;
91
- }
92
- else {
93
- result = RE_ANY;
94
- }
95
- if (!grouping)
96
- return result;
97
- if (result.startsWith('('))
98
- return result;
99
- return `(${result})`;
100
- }
101
- /** Converts a TemplateType into a JSON Schema pattern */
102
- function templatePattern(type) {
103
- return `^${type.parts
104
- .map((p) => {
105
- if (typeof p == 'object' && p.kind === 'literal' && typeof p.value === 'string') {
106
- return templatePartPattern(p, false);
107
- }
108
- return templatePartPattern(p, true);
109
- })
110
- .join('')}$`;
111
- }
112
- /** Converts a LiteralType into JSON Schema */
113
- function literal(type) {
114
- return { const: type.value };
115
- }
116
- /** Converts a union of LiteralTypes into a single JSON Schema enum */
117
- function literalEnum(types) {
118
- const schema = {
119
- enum: types.map((t) => t.value),
120
- };
121
- return schema;
122
- }
123
- /** Type guard for LiteralType */
124
- function isLiteralType(type) {
125
- return typeof type == 'object' && type.kind === 'literal';
126
- }
127
- /** Converts a Type object into JSON Schema */
128
- function toJSONSchemaImpl(type, options) {
129
- const { loose } = options;
130
- const simplified = simplify(type);
131
- if (typeof simplified == 'symbol') {
132
- return {};
133
- }
134
- if (typeof simplified == 'string') {
135
- return string(simplified);
136
- }
137
- if (simplified.kind === 'array') {
138
- return {
139
- type: 'array',
140
- items: toJSONSchemaImpl(simplified.element, options),
141
- };
142
- }
143
- if (simplified.kind === 'union') {
144
- const anyOf = [];
145
- const literals = [];
146
- for (const t of simplified.types) {
147
- if (isLiteralType(t)) {
148
- literals.push(t);
149
- continue;
150
- }
151
- const child = toJSONSchemaImpl(t, options);
152
- if (child === true) {
153
- return true;
154
- }
155
- if (child === false) {
156
- continue;
157
- }
158
- anyOf.push(child);
159
- }
160
- if (literals.length > 0) {
161
- anyOf.push(literalEnum(literals));
162
- }
163
- if (anyOf.length === 0) {
164
- return false;
165
- }
166
- if (anyOf.length === 1) {
167
- return anyOf[0];
168
- }
169
- return { anyOf };
170
- }
171
- if (simplified.kind === 'intersection') {
172
- const allOf = simplified.types.map((t) => toJSONSchemaImpl(t, options));
173
- if (allOf.length === 1) {
174
- return allOf[0];
175
- }
176
- return { allOf };
177
- }
178
- if (simplified.kind === 'record') {
179
- if ('fields' in simplified) {
180
- const properties = {};
181
- const required = [];
182
- for (const field of simplified.fields) {
183
- properties[field.name] = toJSONSchemaImpl(field.type, options);
184
- if (!loose && !field.optional) {
185
- required.push(field.name);
186
- }
187
- }
188
- const schema = {
189
- type: 'object',
190
- properties,
191
- additionalProperties: loose,
192
- };
193
- if (required.length > 0) {
194
- schema.required = required;
195
- }
196
- return schema;
197
- }
198
- const valueSchema = toJSONSchemaImpl(simplified.value, options);
199
- if (simplified.key == null) {
200
- return {
201
- type: 'object',
202
- additionalProperties: valueSchema,
203
- };
204
- }
205
- if (typeof simplified.key == 'object') {
206
- if (isLiteralType(simplified.key)) {
207
- const schema = {
208
- type: 'object',
209
- properties: { [String(simplified.key.value)]: valueSchema },
210
- additionalProperties: loose,
211
- };
212
- return schema;
213
- }
214
- else if (simplified.key.kind === 'union' && simplified.key.types.every(isLiteralType)) {
215
- const schema = {
216
- type: 'object',
217
- properties: Object.fromEntries(simplified.key.types.map((t) => [String(t.value), valueSchema])),
218
- additionalProperties: loose,
219
- };
220
- return schema;
221
- }
222
- }
223
- const pattern = templatePartPattern(simplified.key, false);
224
- if (pattern === RE_ANY) {
225
- return {
226
- type: 'object',
227
- additionalProperties: valueSchema,
228
- };
229
- }
230
- const schema = {
231
- type: 'object',
232
- patternProperties: { [`^${pattern}$`]: valueSchema },
233
- additionalProperties: loose,
234
- };
235
- return schema;
236
- }
237
- if (simplified.kind === 'literal') {
238
- return literal(simplified);
239
- }
240
- if (simplified.kind === 'function') {
241
- return false;
242
- }
243
- if (simplified.kind === 'template') {
244
- return { type: 'string', pattern: templatePattern(simplified) };
245
- }
246
- if (simplified.kind === 'tuple') {
247
- // Collect element schemas, unwrapping array from rest elements (..T[] → T).
248
- // Non-array rest (e.g. ..string) is treated as any ({}).
249
- const elementSchemas = simplified.elements.map((e) => {
250
- const t = e.type;
251
- if (!e.spread)
252
- return toJSONSchemaImpl(t, options);
253
- if (typeof t == 'object' && t.kind === 'array') {
254
- return toJSONSchemaImpl(t.element, options);
255
- }
256
- return true;
257
- });
258
- const prefixItems = [];
259
- let i = 0;
260
- for (; i < elementSchemas.length; i++) {
261
- const el = simplified.elements[i];
262
- if (el.spread)
263
- break;
264
- prefixItems.push(elementSchemas[i]);
265
- }
266
- const items = [];
267
- let hasAny = false;
268
- for (; i < elementSchemas.length; i++) {
269
- const schema = elementSchemas[i];
270
- items.push(schema);
271
- if (schema === true) {
272
- hasAny = true;
273
- }
274
- }
275
- const schema = { type: 'array' };
276
- if (prefixItems.length > 0) {
277
- schema.prefixItems = prefixItems;
278
- }
279
- if (hasAny) {
280
- schema.items = true;
281
- }
282
- else if (items.length > 1) {
283
- schema.items = { anyOf: items };
284
- }
285
- else if (items.length === 1) {
286
- schema.items = items[0];
287
- }
288
- else {
289
- schema.items = loose;
290
- }
291
- return schema;
292
- }
293
- if (simplified.kind === 'reflection') {
294
- return true;
295
- }
296
- /* c8 ignore next 3 */
297
- simplified;
298
- return true;
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
- }
314
- //# sourceMappingURL=json.js.map
package/dist/json.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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"}