@tsonic/frontend 0.0.15 → 0.0.16

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 (184) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  3. package/dist/graph/extraction/orchestrator.js +3 -2
  4. package/dist/graph/extraction/orchestrator.js.map +1 -1
  5. package/dist/ir/binding/index.d.ts +21 -0
  6. package/dist/ir/binding/index.d.ts.map +1 -1
  7. package/dist/ir/binding/index.js +316 -6
  8. package/dist/ir/binding/index.js.map +1 -1
  9. package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
  10. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
  11. package/dist/ir/bindings-disambiguation.test.js +416 -0
  12. package/dist/ir/bindings-disambiguation.test.js.map +1 -0
  13. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  14. package/dist/ir/builder/orchestrator.js +8 -2
  15. package/dist/ir/builder/orchestrator.js.map +1 -1
  16. package/dist/ir/builder/types.d.ts +2 -3
  17. package/dist/ir/builder/types.d.ts.map +1 -1
  18. package/dist/ir/builder.test.js +1 -1
  19. package/dist/ir/converters/context.d.ts.map +1 -1
  20. package/dist/ir/converters/context.js +1 -0
  21. package/dist/ir/converters/context.js.map +1 -1
  22. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  23. package/dist/ir/converters/expressions/access.js +161 -39
  24. package/dist/ir/converters/expressions/access.js.map +1 -1
  25. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/calls.js +256 -19
  27. package/dist/ir/converters/expressions/calls.js.map +1 -1
  28. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  29. package/dist/ir/converters/expressions/functions.js +30 -12
  30. package/dist/ir/converters/expressions/functions.js.map +1 -1
  31. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  32. package/dist/ir/converters/expressions/operators.js +5 -1
  33. package/dist/ir/converters/expressions/operators.js.map +1 -1
  34. package/dist/ir/converters/flow-narrowing.d.ts +27 -0
  35. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
  36. package/dist/ir/converters/flow-narrowing.js +73 -0
  37. package/dist/ir/converters/flow-narrowing.js.map +1 -0
  38. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  39. package/dist/ir/converters/statements/control/conditionals.js +19 -2
  40. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  41. package/dist/ir/expression-converter.d.ts.map +1 -1
  42. package/dist/ir/expression-converter.js +11 -4
  43. package/dist/ir/expression-converter.js.map +1 -1
  44. package/dist/ir/program-context.d.ts +17 -4
  45. package/dist/ir/program-context.d.ts.map +1 -1
  46. package/dist/ir/program-context.js +3 -0
  47. package/dist/ir/program-context.js.map +1 -1
  48. package/dist/ir/thisarg-inference.test.js +18 -18
  49. package/dist/ir/thisarg-inference.test.js.map +1 -1
  50. package/dist/ir/type-system/internal/handle-types.d.ts +7 -0
  51. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  52. package/dist/ir/type-system/internal/type-converter/primitives.d.ts +3 -3
  53. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  54. package/dist/ir/type-system/internal/type-converter/primitives.js +2 -2
  55. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  56. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  57. package/dist/ir/type-system/internal/type-converter/references.js +5 -11
  58. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  59. package/dist/ir/type-system/internal/type-registry.d.ts +6 -1
  60. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  61. package/dist/ir/type-system/internal/type-registry.js +11 -10
  62. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  63. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  64. package/dist/ir/type-system/internal/universe/clr-catalog.js +20 -4
  65. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  66. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +2 -0
  67. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -1
  68. package/dist/ir/type-system/internal/universe/source-catalog.js +8 -3
  69. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  70. package/dist/ir/type-system/internal/universe/types.d.ts +1 -1
  71. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  72. package/dist/ir/type-system/type-system.js +192 -33
  73. package/dist/ir/type-system/type-system.js.map +1 -1
  74. package/dist/ir/types/expressions.d.ts +2 -0
  75. package/dist/ir/types/expressions.d.ts.map +1 -1
  76. package/dist/ir/types/ir-types.d.ts +1 -1
  77. package/dist/ir/types/statements.d.ts +9 -0
  78. package/dist/ir/types/statements.d.ts.map +1 -1
  79. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  80. package/dist/ir/validation/anonymous-type-lowering-pass.js +1 -0
  81. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  82. package/dist/ir/validation/char-validation-pass.d.ts +26 -0
  83. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
  84. package/dist/ir/validation/char-validation-pass.js +495 -0
  85. package/dist/ir/validation/char-validation-pass.js.map +1 -0
  86. package/dist/program/bindings.d.ts +16 -0
  87. package/dist/program/bindings.d.ts.map +1 -1
  88. package/dist/program/bindings.js +44 -0
  89. package/dist/program/bindings.js.map +1 -1
  90. package/dist/program/creation.d.ts.map +1 -1
  91. package/dist/program/creation.js +11 -104
  92. package/dist/program/creation.js.map +1 -1
  93. package/dist/program/dependency-graph.d.ts.map +1 -1
  94. package/dist/program/dependency-graph.js +8 -1
  95. package/dist/program/dependency-graph.js.map +1 -1
  96. package/dist/program/diagnostics.d.ts.map +1 -1
  97. package/dist/program/diagnostics.js +0 -6
  98. package/dist/program/diagnostics.js.map +1 -1
  99. package/dist/program/types.d.ts +2 -3
  100. package/dist/program/types.d.ts.map +1 -1
  101. package/dist/resolver/clr-bindings-resolver.d.ts +5 -0
  102. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  103. package/dist/resolver/clr-bindings-resolver.js +121 -31
  104. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  105. package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
  106. package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
  107. package/dist/resolver/clr-bindings-resolver.test.js +161 -0
  108. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
  109. package/dist/resolver/namespace.d.ts +2 -1
  110. package/dist/resolver/namespace.d.ts.map +1 -1
  111. package/dist/resolver/namespace.js +5 -2
  112. package/dist/resolver/namespace.js.map +1 -1
  113. package/dist/resolver/namespace.test.js +6 -6
  114. package/dist/resolver/naming-policy.d.ts +20 -0
  115. package/dist/resolver/naming-policy.d.ts.map +1 -0
  116. package/dist/resolver/naming-policy.js +40 -0
  117. package/dist/resolver/naming-policy.js.map +1 -0
  118. package/dist/resolver/naming.d.ts +2 -5
  119. package/dist/resolver/naming.d.ts.map +1 -1
  120. package/dist/resolver/naming.js +2 -30
  121. package/dist/resolver/naming.js.map +1 -1
  122. package/dist/resolver.d.ts +2 -0
  123. package/dist/resolver.d.ts.map +1 -1
  124. package/dist/resolver.js +1 -0
  125. package/dist/resolver.js.map +1 -1
  126. package/dist/resolver.test.js +7 -6
  127. package/dist/resolver.test.js.map +1 -1
  128. package/dist/types/diagnostic.d.ts +1 -1
  129. package/dist/types/diagnostic.d.ts.map +1 -1
  130. package/dist/types/diagnostic.js.map +1 -1
  131. package/dist/validation/core-intrinsics.d.ts +18 -0
  132. package/dist/validation/core-intrinsics.d.ts.map +1 -0
  133. package/dist/validation/core-intrinsics.js +186 -0
  134. package/dist/validation/core-intrinsics.js.map +1 -0
  135. package/dist/validation/index.d.ts +1 -0
  136. package/dist/validation/index.d.ts.map +1 -1
  137. package/dist/validation/index.js +1 -0
  138. package/dist/validation/index.js.map +1 -1
  139. package/dist/validation/orchestrator.d.ts.map +1 -1
  140. package/dist/validation/orchestrator.js +2 -0
  141. package/dist/validation/orchestrator.js.map +1 -1
  142. package/dist/validator.test.js +52 -6
  143. package/dist/validator.test.js.map +1 -1
  144. package/package.json +1 -1
  145. package/dist/ir/clr-type-mappings.d.ts +0 -42
  146. package/dist/ir/clr-type-mappings.d.ts.map +0 -1
  147. package/dist/ir/clr-type-mappings.js +0 -139
  148. package/dist/ir/clr-type-mappings.js.map +0 -1
  149. package/dist/ir/type-converter.d.ts +0 -9
  150. package/dist/ir/type-converter.d.ts.map +0 -1
  151. package/dist/ir/type-converter.js +0 -9
  152. package/dist/ir/type-converter.js.map +0 -1
  153. package/dist/ir/type-system/core.d.ts +0 -29
  154. package/dist/ir/type-system/core.d.ts.map +0 -1
  155. package/dist/ir/type-system/core.js +0 -456
  156. package/dist/ir/type-system/core.js.map +0 -1
  157. package/dist/ir/type-system/internal/type-converter/patterns.d.ts +0 -12
  158. package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +0 -1
  159. package/dist/ir/type-system/internal/type-converter/patterns.js +0 -82
  160. package/dist/ir/type-system/internal/type-converter/patterns.js.map +0 -1
  161. package/dist/ir/type-universe/assembly-catalog.d.ts +0 -44
  162. package/dist/ir/type-universe/assembly-catalog.d.ts.map +0 -1
  163. package/dist/ir/type-universe/assembly-catalog.js +0 -532
  164. package/dist/ir/type-universe/assembly-catalog.js.map +0 -1
  165. package/dist/ir/type-universe/assembly-catalog.test.d.ts +0 -7
  166. package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +0 -1
  167. package/dist/ir/type-universe/assembly-catalog.test.js +0 -105
  168. package/dist/ir/type-universe/assembly-catalog.test.js.map +0 -1
  169. package/dist/ir/type-universe/index.d.ts +0 -19
  170. package/dist/ir/type-universe/index.d.ts.map +0 -1
  171. package/dist/ir/type-universe/index.js +0 -21
  172. package/dist/ir/type-universe/index.js.map +0 -1
  173. package/dist/ir/type-universe/types.d.ts +0 -436
  174. package/dist/ir/type-universe/types.d.ts.map +0 -1
  175. package/dist/ir/type-universe/types.js +0 -69
  176. package/dist/ir/type-universe/types.js.map +0 -1
  177. package/dist/ir/type-universe/unified-catalog.d.ts +0 -70
  178. package/dist/ir/type-universe/unified-catalog.d.ts.map +0 -1
  179. package/dist/ir/type-universe/unified-catalog.js +0 -319
  180. package/dist/ir/type-universe/unified-catalog.js.map +0 -1
  181. package/dist/ir/type-universe/unified-catalog.test.d.ts +0 -7
  182. package/dist/ir/type-universe/unified-catalog.test.d.ts.map +0 -1
  183. package/dist/ir/type-universe/unified-catalog.test.js +0 -135
  184. package/dist/ir/type-universe/unified-catalog.test.js.map +0 -1
@@ -1,456 +0,0 @@
1
- /**
2
- * TypeSystem Core Implementation
3
- *
4
- * Implements the TypeSystem interface using TypeRegistry, NominalEnv,
5
- * and HandleRegistry. This is the single source of truth for all type queries.
6
- *
7
- * INVARIANT INV-0: No ts.Type or computed type APIs are used here.
8
- * All type information comes from:
9
- * 1. HandleRegistry (declaration TypeNodes from Binding layer)
10
- * 2. TypeRegistry (nominal type declarations)
11
- * 3. NominalEnv (inheritance chain + substitution)
12
- */
13
- import { substituteIrType, typesEqual } from "../types/index.js";
14
- import { typeOk, typeError, signatureOk, unknownType, voidType, } from "./types.js";
15
- import { createDiagnostic } from "../../types/diagnostic.js";
16
- /**
17
- * Create a TypeSystem instance.
18
- */
19
- export const createTypeSystem = (config) => {
20
- const { registry, nominalEnv, handleRegistry, convertTypeNode, binding } = config;
21
- // ─────────────────────────────────────────────────────────────────────────
22
- // CORE QUERIES
23
- // ─────────────────────────────────────────────────────────────────────────
24
- const getDeclType = (decl) => {
25
- const info = handleRegistry.getDecl(decl);
26
- if (!info) {
27
- return typeError([
28
- createDiagnostic("TSN5203", "error", "Cannot resolve declaration type"),
29
- ]);
30
- }
31
- // If we have an explicit type annotation, convert it
32
- if (info.typeNode) {
33
- const irType = convertTypeNode(info.typeNode, binding);
34
- return typeOk(irType);
35
- }
36
- // For declarations without explicit type, return unknownType with diagnostic
37
- return typeError([
38
- createDiagnostic("TSN5201", "error", `Declaration '${info.fqName ?? "unknown"}' requires explicit type annotation`),
39
- ]);
40
- };
41
- const getSignature = (sig) => {
42
- const info = handleRegistry.getSignature(sig);
43
- if (!info) {
44
- return {
45
- parameters: [],
46
- returnType: unknownType,
47
- diagnostics: [
48
- createDiagnostic("TSN5203", "error", "Cannot resolve signature"),
49
- ],
50
- };
51
- }
52
- // Convert parameters
53
- const parameters = info.parameters.map((p) => ({
54
- name: p.name,
55
- type: p.typeNode
56
- ? convertTypeNode(p.typeNode, binding)
57
- : unknownType,
58
- isOptional: p.isOptional,
59
- isRest: p.isRest,
60
- }));
61
- // Convert return type
62
- const returnType = info.returnTypeNode
63
- ? convertTypeNode(info.returnTypeNode, binding)
64
- : voidType;
65
- // Convert type parameters
66
- const typeParameters = info.typeParameters?.map((tp) => ({
67
- name: tp.name,
68
- constraint: tp.constraintNode
69
- ? convertTypeNode(tp.constraintNode, binding)
70
- : undefined,
71
- defaultType: tp.defaultNode
72
- ? convertTypeNode(tp.defaultNode, binding)
73
- : undefined,
74
- }));
75
- return signatureOk(parameters, returnType, typeParameters);
76
- };
77
- const getMemberType = (_type, member) => {
78
- const info = handleRegistry.getMember(member);
79
- if (!info) {
80
- return typeError([
81
- createDiagnostic("TSN5203", "error", `Cannot resolve member '${member.name}'`),
82
- ]);
83
- }
84
- if (!info.typeNode) {
85
- return typeError([
86
- createDiagnostic("TSN5201", "error", `Member '${member.name}' requires explicit type annotation`),
87
- ]);
88
- }
89
- const irType = convertTypeNode(info.typeNode, binding);
90
- return typeOk(irType);
91
- };
92
- const instantiate = (type, args) => {
93
- if (type.kind !== "referenceType") {
94
- return typeOk(type); // Non-reference types don't have type parameters
95
- }
96
- // Look up the type in registry to get its type parameters
97
- const entry = registry.resolveBySimpleName(type.name);
98
- if (!entry) {
99
- // Type not in registry - just attach type arguments
100
- return typeOk({
101
- ...type,
102
- typeArguments: args,
103
- });
104
- }
105
- // Build substitution map
106
- const subst = new Map();
107
- entry.typeParameters.forEach((param, i) => {
108
- const arg = args[i];
109
- if (arg !== undefined) {
110
- subst.set(param.name, arg);
111
- }
112
- });
113
- // Substitute in structural members if present
114
- const substitutedMembers = type.structuralMembers?.map((m) => substituteIrMember(m, subst));
115
- return typeOk({
116
- ...type,
117
- typeArguments: args,
118
- structuralMembers: substitutedMembers,
119
- });
120
- };
121
- const getExpectedType = (_position) => {
122
- // This is a simplified implementation
123
- // The full implementation would walk up the AST to find contextual type
124
- // For now, return unknownType - the actual implementation is in helpers.ts
125
- return typeOk(unknownType);
126
- };
127
- // ─────────────────────────────────────────────────────────────────────────
128
- // UTILITY TYPE EXPANSION
129
- // ─────────────────────────────────────────────────────────────────────────
130
- const expandUtilityType = (utilityName, typeArgs, _sourceTypeArgs) => {
131
- const firstArg = typeArgs[0];
132
- if (!firstArg) {
133
- return typeError([
134
- createDiagnostic("TSN7414", "error", `Utility type '${utilityName}' requires a type argument`),
135
- ]);
136
- }
137
- switch (utilityName) {
138
- case "NonNullable":
139
- return expandNonNullable(firstArg);
140
- case "Partial":
141
- case "Required":
142
- case "Readonly":
143
- return expandMappedUtility(utilityName, firstArg);
144
- default:
145
- return typeError([
146
- createDiagnostic("TSN7414", "error", `Utility type '${utilityName}' expansion not yet implemented in TypeSystem`),
147
- ]);
148
- }
149
- };
150
- // ─────────────────────────────────────────────────────────────────────────
151
- // STRUCTURAL OPERATIONS
152
- // ─────────────────────────────────────────────────────────────────────────
153
- const getStructuralMembers = (type) => {
154
- if (type.kind === "objectType") {
155
- return type.members.map((m) => memberToResult(m, type));
156
- }
157
- if (type.kind === "referenceType" && type.structuralMembers) {
158
- return type.structuralMembers.map((m) => memberToResult(m, type));
159
- }
160
- if (type.kind === "referenceType") {
161
- // Look up in registry and get members
162
- const entry = registry.resolveBySimpleName(type.name);
163
- if (!entry)
164
- return [];
165
- const members = [];
166
- entry.members.forEach((info, name) => {
167
- if (info.kind === "property" && info.type) {
168
- // MemberInfo.type is now pure IrType - no conversion needed
169
- members.push({
170
- name,
171
- type: info.type,
172
- isOptional: info.isOptional,
173
- isReadonly: info.isReadonly,
174
- declaringType: type,
175
- });
176
- }
177
- });
178
- // Include inherited members via NominalEnv
179
- const fqName = registry.getFQName(type.name);
180
- if (fqName) {
181
- const chain = nominalEnv.getInheritanceChain(fqName);
182
- for (const parentFqName of chain.slice(1)) {
183
- const parentEntry = registry.resolveNominal(parentFqName);
184
- if (!parentEntry)
185
- continue;
186
- // Get substitution for this parent
187
- const subst = nominalEnv.getInstantiation(fqName, type.typeArguments ?? [], parentFqName);
188
- parentEntry.members.forEach((info, name) => {
189
- // Skip if already have this member (child overrides)
190
- if (members.some((m) => m.name === name))
191
- return;
192
- if (info.kind === "property" && info.type) {
193
- // MemberInfo.type is now pure IrType - apply substitution directly
194
- const memberType = subst
195
- ? substituteIrType(info.type, subst)
196
- : info.type;
197
- members.push({
198
- name,
199
- type: memberType,
200
- isOptional: info.isOptional,
201
- isReadonly: info.isReadonly,
202
- declaringType: {
203
- kind: "referenceType",
204
- name: parentEntry.name,
205
- },
206
- });
207
- }
208
- });
209
- }
210
- }
211
- return members;
212
- }
213
- return [];
214
- };
215
- const resolvePropertyAccess = (type, propertyName) => {
216
- // Handle arrays
217
- if (type.kind === "arrayType") {
218
- if (propertyName === "length") {
219
- return typeOk({ kind: "primitiveType", name: "int" });
220
- }
221
- return typeError([
222
- createDiagnostic("TSN5203", "error", `Property '${propertyName}' not found on array type`),
223
- ]);
224
- }
225
- // Handle tuples
226
- if (type.kind === "tupleType") {
227
- const index = parseInt(propertyName, 10);
228
- const element = type.elementTypes[index];
229
- if (!isNaN(index) && index >= 0 && element !== undefined) {
230
- return typeOk(element);
231
- }
232
- if (propertyName === "length") {
233
- return typeOk({
234
- kind: "literalType",
235
- value: type.elementTypes.length,
236
- });
237
- }
238
- }
239
- // Handle objects and references
240
- const members = getStructuralMembers(type);
241
- const member = members.find((m) => m.name === propertyName);
242
- if (member) {
243
- return typeOk(member.type);
244
- }
245
- return typeError([
246
- createDiagnostic("TSN5203", "error", `Property '${propertyName}' not found on type`),
247
- ]);
248
- };
249
- const synthesizeObjectType = (properties) => {
250
- const members = properties.map((p) => ({
251
- kind: "propertySignature",
252
- name: p.name,
253
- type: p.value,
254
- isOptional: p.isOptional ?? false,
255
- isReadonly: false,
256
- }));
257
- return typeOk({
258
- kind: "objectType",
259
- members,
260
- });
261
- };
262
- // ─────────────────────────────────────────────────────────────────────────
263
- // SUBSTITUTION & INHERITANCE
264
- // ─────────────────────────────────────────────────────────────────────────
265
- const substitute = (type, substitutions) => {
266
- return substituteIrType(type, substitutions);
267
- };
268
- const getInheritanceChain = (type) => {
269
- const fqName = registry.getFQName(type.name);
270
- if (!fqName)
271
- return [type];
272
- const chain = nominalEnv.getInheritanceChain(fqName);
273
- return chain.map((name) => {
274
- const entry = registry.resolveNominal(name);
275
- return {
276
- kind: "referenceType",
277
- name: entry?.name ?? name,
278
- };
279
- });
280
- };
281
- // ─────────────────────────────────────────────────────────────────────────
282
- // TYPE COMPARISON
283
- // ─────────────────────────────────────────────────────────────────────────
284
- const typesEqualFn = (a, b) => {
285
- return typesEqual(a, b);
286
- };
287
- const isAssignableTo = (source, target) => {
288
- // Simple structural check for now
289
- if (typesEqual(source, target))
290
- return true;
291
- // any is assignable to anything
292
- if (source.kind === "anyType")
293
- return true;
294
- // anything is assignable to any
295
- if (target.kind === "anyType")
296
- return true;
297
- // unknown accepts anything
298
- if (target.kind === "unknownType")
299
- return true;
300
- // null/undefined assignable to optional types
301
- if (source.kind === "primitiveType") {
302
- if (source.name === "null" || source.name === "undefined") {
303
- if (target.kind === "unionType") {
304
- return target.types.some((t) => t.kind === "primitiveType" &&
305
- (t.name === "null" || t.name === "undefined"));
306
- }
307
- }
308
- }
309
- // TODO: More complex subtype checks
310
- return false;
311
- };
312
- return {
313
- getDeclType,
314
- getSignature,
315
- getMemberType,
316
- instantiate,
317
- getExpectedType,
318
- expandUtilityType,
319
- getStructuralMembers,
320
- resolvePropertyAccess,
321
- synthesizeObjectType,
322
- substitute,
323
- getInheritanceChain,
324
- typesEqual: typesEqualFn,
325
- isAssignableTo,
326
- };
327
- };
328
- // ═══════════════════════════════════════════════════════════════════════════
329
- // HELPER FUNCTIONS
330
- // ═══════════════════════════════════════════════════════════════════════════
331
- const substituteIrMember = (member, subst) => {
332
- if (member.kind === "propertySignature") {
333
- return {
334
- ...member,
335
- type: substituteIrType(member.type, subst),
336
- };
337
- }
338
- if (member.kind === "methodSignature") {
339
- return {
340
- ...member,
341
- parameters: member.parameters.map((p) => ({
342
- ...p,
343
- type: p.type ? substituteIrType(p.type, subst) : undefined,
344
- })),
345
- returnType: member.returnType
346
- ? substituteIrType(member.returnType, subst)
347
- : undefined,
348
- };
349
- }
350
- return member;
351
- };
352
- const memberToResult = (member, declaringType) => {
353
- if (member.kind === "propertySignature") {
354
- return {
355
- name: member.name,
356
- type: member.type,
357
- isOptional: member.isOptional,
358
- isReadonly: member.isReadonly,
359
- declaringType,
360
- };
361
- }
362
- // Method signature
363
- return {
364
- name: member.name,
365
- type: getFunctionTypeForMethod(member),
366
- isOptional: false,
367
- isReadonly: false,
368
- declaringType,
369
- };
370
- };
371
- const getFunctionTypeForMethod = (method) => {
372
- return {
373
- kind: "functionType",
374
- parameters: method.parameters.map((p) => ({
375
- kind: "parameter",
376
- pattern: {
377
- kind: "identifierPattern",
378
- name: getParameterName(p),
379
- },
380
- type: p.type,
381
- isOptional: p.isOptional,
382
- isRest: p.isRest,
383
- passing: p.passing,
384
- })),
385
- returnType: method.returnType ?? voidType,
386
- };
387
- };
388
- const getParameterName = (p) => {
389
- if (p.pattern.kind === "identifierPattern" && p.pattern.name) {
390
- return p.pattern.name;
391
- }
392
- return "param";
393
- };
394
- // ─────────────────────────────────────────────────────────────────────────
395
- // UTILITY TYPE HELPERS
396
- // ─────────────────────────────────────────────────────────────────────────
397
- const expandNonNullable = (type) => {
398
- if (type.kind !== "unionType") {
399
- // Not a union, check if it's null/undefined directly
400
- if (type.kind === "primitiveType") {
401
- if (type.name === "null" || type.name === "undefined") {
402
- return typeOk({ kind: "neverType" });
403
- }
404
- }
405
- return typeOk(type);
406
- }
407
- // Filter out null and undefined from union
408
- const filtered = type.types.filter((t) => {
409
- if (t.kind === "primitiveType") {
410
- return t.name !== "null" && t.name !== "undefined";
411
- }
412
- return true;
413
- });
414
- if (filtered.length === 0) {
415
- return typeOk({ kind: "neverType" });
416
- }
417
- const first = filtered[0];
418
- if (filtered.length === 1 && first !== undefined) {
419
- return typeOk(first);
420
- }
421
- return typeOk({ kind: "unionType", types: filtered });
422
- };
423
- const expandMappedUtility = (utilityName, type) => {
424
- // Only works on object/reference types
425
- if (type.kind !== "objectType" && type.kind !== "referenceType") {
426
- return typeError([
427
- createDiagnostic("TSN7414", "error", `${utilityName} requires an object type argument`),
428
- ]);
429
- }
430
- // For reference types without structural members, we can't expand
431
- if (type.kind === "referenceType" && !type.structuralMembers) {
432
- return typeError([
433
- createDiagnostic("TSN7414", "error", `${utilityName} requires a concrete object type, not a type parameter`),
434
- ]);
435
- }
436
- const members = type.kind === "objectType" ? type.members : (type.structuralMembers ?? []);
437
- const transformedMembers = members.map((m) => {
438
- if (m.kind !== "propertySignature")
439
- return m;
440
- const prop = m;
441
- return {
442
- ...prop,
443
- isOptional: utilityName === "Partial"
444
- ? true
445
- : utilityName === "Required"
446
- ? false
447
- : prop.isOptional,
448
- isReadonly: utilityName === "Readonly" ? true : prop.isReadonly,
449
- };
450
- });
451
- return typeOk({
452
- kind: "objectType",
453
- members: transformedMembers,
454
- });
455
- };
456
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/ir/type-system/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAuBjE,OAAO,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAc7D;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAc,EAAE;IACvE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,GACtE,MAAM,CAAC;IAET,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E,MAAM,WAAW,GAAG,CAAC,IAAY,EAAc,EAAE;QAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;gBACf,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,iCAAiC,CAAC;aACxE,CAAC,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAO,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,6EAA6E;QAC7E,OAAO,SAAS,CAAC;YACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,gBAAgB,IAAI,CAAC,MAAM,IAAI,SAAS,qCAAqC,CAC9E;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,GAAgB,EAAmB,EAAE;QACzD,MAAM,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE;oBACX,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC;iBACjE;aACF,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAoB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,QAAQ;gBACd,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAuB,EAAE,OAAO,CAAC;gBACrD,CAAC,CAAC,WAAW;YACf,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;QAEJ,sBAAsB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc;YACpC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,cAA6B,EAAE,OAAO,CAAC;YAC9D,CAAC,CAAC,QAAQ,CAAC;QAEb,0BAA0B;QAC1B,MAAM,cAAc,GAClB,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,UAAU,EAAE,EAAE,CAAC,cAAc;gBAC3B,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,cAA6B,EAAE,OAAO,CAAC;gBAC5D,CAAC,CAAC,SAAS;YACb,WAAW,EAAE,EAAE,CAAC,WAAW;gBACzB,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,WAA0B,EAAE,OAAO,CAAC;gBACzD,CAAC,CAAC,SAAS;SACd,CAAC,CAAC,CAAC;QAEN,OAAO,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,MAAgB,EAAc,EAAE;QACpE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;gBACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,0BAA0B,MAAM,CAAC,IAAI,GAAG,CACzC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;gBACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,WAAW,MAAM,CAAC,IAAI,qCAAqC,CAC5D;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,IAAuB,EAAc,EAAE;QACxE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iDAAiD;QACxE,CAAC;QAED,0DAA0D;QAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,oDAAoD;YACpD,OAAO,MAAM,CAAC;gBACZ,GAAG,IAAI;gBACP,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3D,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAC7B,CAAC;QAEF,OAAO,MAAM,CAAC;YACZ,GAAG,IAAI;YACP,aAAa,EAAE,IAAI;YACnB,iBAAiB,EAAE,kBAAkB;SACtC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAyB,EAAc,EAAE;QAChE,sCAAsC;QACtC,wEAAwE;QACxE,2EAA2E;QAC3E,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E,MAAM,iBAAiB,GAAG,CACxB,WAA4B,EAC5B,QAA2B,EAC3B,eAAyB,EACb,EAAE;QACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;gBACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,iBAAiB,WAAW,4BAA4B,CACzD;aACF,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,aAAa;gBAChB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAErC,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEpD;gBACE,OAAO,SAAS,CAAC;oBACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,iBAAiB,WAAW,+CAA+C,CAC5E;iBACF,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAC;IAEF,4EAA4E;IAC5E,wBAAwB;IACxB,4EAA4E;IAE5E,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAA2B,EAAE;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,sCAAsC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YAEtB,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC1C,4DAA4D;oBAC5D,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,aAAa,EAAE,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACrD,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC1D,IAAI,CAAC,WAAW;wBAAE,SAAS;oBAE3B,mCAAmC;oBACnC,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CACvC,MAAM,EACN,IAAI,CAAC,aAAa,IAAI,EAAE,EACxB,YAAY,CACb,CAAC;oBAEF,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;wBACzC,qDAAqD;wBACrD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;4BAAE,OAAO;wBAEjD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;4BAC1C,mEAAmE;4BACnE,MAAM,UAAU,GAAG,KAAK;gCACtB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;gCACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;4BACd,OAAO,CAAC,IAAI,CAAC;gCACX,IAAI;gCACJ,IAAI,EAAE,UAAU;gCAChB,UAAU,EAAE,IAAI,CAAC,UAAU;gCAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;gCAC3B,aAAa,EAAE;oCACb,IAAI,EAAE,eAAe;oCACrB,IAAI,EAAE,WAAW,CAAC,IAAI;iCACvB;6BACF,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAC5B,IAAY,EACZ,YAAoB,EACR,EAAE;QACd,gBAAgB;QAChB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,SAAS,CAAC;gBACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,aAAa,YAAY,2BAA2B,CACrD;aACF,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC;oBACZ,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC5D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;YACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,aAAa,YAAY,qBAAqB,CAC/C;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAC3B,UAAmC,EACvB,EAAE;QACd,MAAM,OAAO,GAAwB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,IAAI,EAAE,mBAA4B;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK;YACjC,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC,CAAC;QAEJ,OAAO,MAAM,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,4EAA4E;IAC5E,6BAA6B;IAC7B,4EAA4E;IAE5E,MAAM,UAAU,GAAG,CACjB,IAAY,EACZ,aAA+B,EACvB,EAAE;QACV,OAAO,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,IAAqB,EAAqB,EAAE;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,eAAwB;gBAC9B,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;QACrD,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,MAAc,EAAW,EAAE;QACjE,kCAAkC;QAClC,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5C,gCAAgC;QAChC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE3C,gCAAgC;QAChC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE3C,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,IAAI,CAAC;QAE/C,8CAA8C;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,eAAe;wBAC1B,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAChD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,YAAY;QACZ,aAAa;QACb,WAAW;QACX,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,qBAAqB;QACrB,oBAAoB;QACpB,UAAU;QACV,mBAAmB;QACnB,UAAU,EAAE,YAAY;QACxB,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,CACzB,MAAyB,EACzB,KAAuB,EACJ,EAAE;IACrB,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,CAAC;gBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D,CAAC,CAAC;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC3B,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC5C,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,MAAyB,EACzB,aAAqB,EACP,EAAE;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,aAAa;SACd,CAAC;IACJ,CAAC;IACD,mBAAmB;IACnB,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC;QACtC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,MAAyB,EAAU,EAAE;IACrE,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE;gBACP,IAAI,EAAE,mBAA4B;gBAClC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;aAC1B;YACD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;QACH,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,QAAQ;KAC1C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,CAEzB,EAAU,EAAE;IACX,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,uBAAuB;AACvB,4EAA4E;AAE5E,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAc,EAAE;IACrD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,qDAAqD;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAgD,EAChD,IAAY,EACA,EAAE;IACd,uCAAuC;IACvC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;YACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,GAAG,WAAW,mCAAmC,CAClD;SACF,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;YACf,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,GAAG,WAAW,wDAAwD,CACvE;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAE7E,MAAM,kBAAkB,GAAwB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChE,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;YAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAwB,CAAC;QACtC,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EACR,WAAW,KAAK,SAAS;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,WAAW,KAAK,UAAU;oBAC1B,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,IAAI,CAAC,UAAU;YACvB,UAAU,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Binding pattern converter - TypeScript patterns to IR patterns
3
- */
4
- import * as ts from "typescript";
5
- import { IrPattern } from "../../../types/helpers.js";
6
- import type { Binding } from "../../../binding/index.js";
7
- /**
8
- * Convert TypeScript binding name to IR pattern.
9
- * Optionally accepts a Binding for expression conversion (defaults, etc.)
10
- */
11
- export declare const convertBindingName: (name: ts.BindingName, binding?: Binding) => IrPattern;
12
- //# sourceMappingURL=patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,SAAS,EAGV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,EAAE,CAAC,WAAW,EACpB,UAAU,OAAO,KAChB,SAgFF,CAAC"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Binding pattern converter - TypeScript patterns to IR patterns
3
- */
4
- import * as ts from "typescript";
5
- import { convertExpression } from "../../../expression-converter.js";
6
- /**
7
- * Convert TypeScript binding name to IR pattern.
8
- * Optionally accepts a Binding for expression conversion (defaults, etc.)
9
- */
10
- export const convertBindingName = (name, binding) => {
11
- if (ts.isIdentifier(name)) {
12
- return {
13
- kind: "identifierPattern",
14
- name: name.text,
15
- };
16
- }
17
- if (ts.isArrayBindingPattern(name)) {
18
- return {
19
- kind: "arrayPattern",
20
- elements: name.elements.map((elem) => {
21
- if (ts.isOmittedExpression(elem)) {
22
- return undefined; // Hole in array pattern
23
- }
24
- if (ts.isBindingElement(elem)) {
25
- const isRest = !!elem.dotDotDotToken;
26
- const defaultExpr = elem.initializer && binding
27
- ? convertExpression(elem.initializer, binding, undefined)
28
- : undefined;
29
- return {
30
- pattern: convertBindingName(elem.name, binding),
31
- defaultExpr,
32
- isRest: isRest || undefined,
33
- };
34
- }
35
- return undefined;
36
- }),
37
- };
38
- }
39
- if (ts.isObjectBindingPattern(name)) {
40
- const properties = [];
41
- name.elements.forEach((elem) => {
42
- if (elem.dotDotDotToken) {
43
- // Rest property: { ...rest }
44
- // Note: restShapeMembers and restSynthTypeName are computed later
45
- // during rest type synthesis pass
46
- properties.push({
47
- kind: "rest",
48
- pattern: convertBindingName(elem.name, binding),
49
- });
50
- }
51
- else {
52
- const key = elem.propertyName
53
- ? ts.isIdentifier(elem.propertyName)
54
- ? elem.propertyName.text
55
- : elem.propertyName.getText()
56
- : ts.isIdentifier(elem.name)
57
- ? elem.name.text
58
- : "[computed]";
59
- const defaultExpr = elem.initializer && binding
60
- ? convertExpression(elem.initializer, binding, undefined)
61
- : undefined;
62
- properties.push({
63
- kind: "property",
64
- key,
65
- value: convertBindingName(elem.name, binding),
66
- shorthand: !elem.propertyName,
67
- defaultExpr,
68
- });
69
- }
70
- });
71
- return {
72
- kind: "objectPattern",
73
- properties,
74
- };
75
- }
76
- // Default to identifier pattern (should not reach here normally)
77
- return {
78
- kind: "identifierPattern",
79
- name: "_unknown",
80
- };
81
- };
82
- //# sourceMappingURL=patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/patterns.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Assembly Type Catalog Loader
3
- *
4
- * Loads CLR type metadata from bindings.json and metadata.json files
5
- * into a queryable catalog structure.
6
- *
7
- * INVARIANT INV-CLR: All assembly types loaded here become part of the
8
- * unified type catalog. No parallel lookup paths allowed.
9
- *
10
- * The loader:
11
- * 1. Scans node_modules/@tsonic/* packages for metadata files
12
- * 2. Parses metadata.json for type definitions, members, signatures
13
- * 3. Parses bindings.json for TS ↔ CLR name mappings
14
- * 4. Converts to NominalEntry structures with proper IrType members
15
- */
16
- import type { AssemblyTypeCatalog, NominalEntry, MemberEntry } from "./types.js";
17
- /**
18
- * Load all assembly types from node_modules/@tsonic packages.
19
- *
20
- * @param nodeModulesPath - Path to node_modules directory
21
- * @returns AssemblyTypeCatalog with all loaded types
22
- */
23
- export declare const loadAssemblyTypeCatalog: (nodeModulesPath: string) => AssemblyTypeCatalog;
24
- /**
25
- * Load assembly catalog from a specific package (for testing).
26
- */
27
- export declare const loadSinglePackageMetadata: (metadataPath: string) => AssemblyTypeCatalog;
28
- /**
29
- * Get a type entry by stableId.
30
- */
31
- export declare const getTypeByStableId: (catalog: AssemblyTypeCatalog, stableId: string) => NominalEntry | undefined;
32
- /**
33
- * Get a type entry by TS name.
34
- */
35
- export declare const getTypeByTsName: (catalog: AssemblyTypeCatalog, tsName: string) => NominalEntry | undefined;
36
- /**
37
- * Get a type entry by CLR name.
38
- */
39
- export declare const getTypeByClrName: (catalog: AssemblyTypeCatalog, clrName: string) => NominalEntry | undefined;
40
- /**
41
- * Get a member from a type by TS name.
42
- */
43
- export declare const getMemberByTsName: (catalog: AssemblyTypeCatalog, typeStableId: string, memberTsName: string) => MemberEntry | undefined;
44
- //# sourceMappingURL=assembly-catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assembly-catalog.d.ts","sourceRoot":"","sources":["../../../src/ir/type-universe/assembly-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EAEZ,WAAW,EAUZ,MAAM,YAAY,CAAC;AAudpB;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,iBAAiB,MAAM,KACtB,mBA8CF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,MAAM,KACnB,mBA2BF,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,mBAAmB,EAC5B,UAAU,MAAM,KACf,YAAY,GAAG,SAEjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,EAC5B,QAAQ,MAAM,KACb,YAAY,GAAG,SAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,mBAAmB,EAC5B,SAAS,MAAM,KACd,YAAY,GAAG,SAGjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,mBAAmB,EAC5B,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,WAAW,GAAG,SAGhB,CAAC"}