@tsonic/frontend 0.0.64 → 0.0.66

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 (166) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/graph/extraction/imports.d.ts +0 -5
  7. package/dist/graph/extraction/imports.d.ts.map +1 -1
  8. package/dist/graph/extraction/imports.js +0 -35
  9. package/dist/graph/extraction/imports.js.map +1 -1
  10. package/dist/graph/extraction/index.d.ts +1 -1
  11. package/dist/graph/extraction/index.d.ts.map +1 -1
  12. package/dist/graph/extraction/index.js +1 -1
  13. package/dist/graph/extraction/index.js.map +1 -1
  14. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  15. package/dist/graph/extraction/orchestrator.js +1 -7
  16. package/dist/graph/extraction/orchestrator.js.map +1 -1
  17. package/dist/graph/extraction.d.ts +1 -1
  18. package/dist/graph/extraction.d.ts.map +1 -1
  19. package/dist/graph/extraction.js +1 -1
  20. package/dist/graph/extraction.js.map +1 -1
  21. package/dist/ir/binding/binding-types.d.ts +2 -2
  22. package/dist/ir/binding/binding-types.d.ts.map +1 -1
  23. package/dist/ir/binding-resolution.test.js +176 -48
  24. package/dist/ir/binding-resolution.test.js.map +1 -1
  25. package/dist/ir/bindings-disambiguation.test.js +149 -0
  26. package/dist/ir/bindings-disambiguation.test.js.map +1 -1
  27. package/dist/ir/builder/imports.d.ts.map +1 -1
  28. package/dist/ir/builder/imports.js +76 -52
  29. package/dist/ir/builder/imports.js.map +1 -1
  30. package/dist/ir/builder.test.js +118 -0
  31. package/dist/ir/builder.test.js.map +1 -1
  32. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/access/access-converter.js +1 -1
  34. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -1
  35. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +2 -2
  36. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
  37. package/dist/ir/converters/expressions/access/binding-resolution.js +122 -78
  38. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
  39. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -1
  40. package/dist/ir/converters/expressions/access/member-resolution.js +8 -0
  41. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -1
  42. package/dist/ir/converters/expressions/calls/call-converter.js +3 -3
  43. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -1
  44. package/dist/ir/converters/expressions/numeric-recovery.test.js +110 -2
  45. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  46. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +8 -0
  47. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -1
  48. package/dist/ir/type-system/internal/type-converter/references.js +10 -12
  49. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  50. package/dist/ir/type-system/internal/type-registry.d.ts +3 -2
  51. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  52. package/dist/ir/type-system/internal/type-registry.js +7 -3
  53. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  54. package/dist/ir/type-system/internal/universe/alias-table.js +2 -2
  55. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  56. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  57. package/dist/ir/type-system/internal/universe/clr-catalog.js +16 -2
  58. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  59. package/dist/ir/type-system/internal/universe/clr-catalog.test.d.ts +2 -0
  60. package/dist/ir/type-system/internal/universe/clr-catalog.test.d.ts.map +1 -0
  61. package/dist/ir/type-system/internal/universe/clr-catalog.test.js +55 -0
  62. package/dist/ir/type-system/internal/universe/clr-catalog.test.js.map +1 -0
  63. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -1
  64. package/dist/ir/type-system/type-system-call-resolution.js +134 -5
  65. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -1
  66. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
  67. package/dist/ir/type-system/type-system-inference.js +10 -2
  68. package/dist/ir/type-system/type-system-inference.js.map +1 -1
  69. package/dist/ir/type-system/type-system-state.d.ts +5 -0
  70. package/dist/ir/type-system/type-system-state.d.ts.map +1 -1
  71. package/dist/ir/type-system/type-system-state.js +33 -17
  72. package/dist/ir/type-system/type-system-state.js.map +1 -1
  73. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  74. package/dist/ir/type-system/type-system.js.map +1 -1
  75. package/dist/ir/types/expressions.d.ts +1 -0
  76. package/dist/ir/types/expressions.d.ts.map +1 -1
  77. package/dist/ir/validation/attribute-collection-pass.test.js +1 -0
  78. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  79. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  80. package/dist/ir/validation/soundness-gate.js +11 -2
  81. package/dist/ir/validation/soundness-gate.js.map +1 -1
  82. package/dist/ir/validation/soundness-gate.test.js +23 -0
  83. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  84. package/dist/program/binding-loader.d.ts +3 -3
  85. package/dist/program/binding-loader.d.ts.map +1 -1
  86. package/dist/program/binding-loader.js +41 -23
  87. package/dist/program/binding-loader.js.map +1 -1
  88. package/dist/program/binding-registry.d.ts +7 -0
  89. package/dist/program/binding-registry.d.ts.map +1 -1
  90. package/dist/program/binding-registry.js +52 -1
  91. package/dist/program/binding-registry.js.map +1 -1
  92. package/dist/program/binding-types.d.ts +1 -0
  93. package/dist/program/binding-types.d.ts.map +1 -1
  94. package/dist/program/binding-types.js.map +1 -1
  95. package/dist/program/bindings.test.js +210 -0
  96. package/dist/program/bindings.test.js.map +1 -1
  97. package/dist/program/creation.d.ts.map +1 -1
  98. package/dist/program/creation.js +292 -161
  99. package/dist/program/creation.js.map +1 -1
  100. package/dist/program/creation.test.js +276 -19
  101. package/dist/program/creation.test.js.map +1 -1
  102. package/dist/program/metadata.d.ts.map +1 -1
  103. package/dist/program/metadata.js +72 -15
  104. package/dist/program/metadata.js.map +1 -1
  105. package/dist/program/metadata.test.d.ts +2 -0
  106. package/dist/program/metadata.test.d.ts.map +1 -0
  107. package/dist/program/metadata.test.js +104 -0
  108. package/dist/program/metadata.test.js.map +1 -0
  109. package/dist/program/package-roots.d.ts +2 -0
  110. package/dist/program/package-roots.d.ts.map +1 -0
  111. package/dist/program/package-roots.js +88 -0
  112. package/dist/program/package-roots.js.map +1 -0
  113. package/dist/program/types.d.ts +1 -1
  114. package/dist/program/types.d.ts.map +1 -1
  115. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  116. package/dist/resolver/clr-bindings-resolver.js +42 -4
  117. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  118. package/dist/resolver/import-resolution.d.ts +0 -2
  119. package/dist/resolver/import-resolution.d.ts.map +1 -1
  120. package/dist/resolver/import-resolution.js +2 -9
  121. package/dist/resolver/import-resolution.js.map +1 -1
  122. package/dist/resolver.test.js +50 -78
  123. package/dist/resolver.test.js.map +1 -1
  124. package/dist/surface/profiles.d.ts +6 -3
  125. package/dist/surface/profiles.d.ts.map +1 -1
  126. package/dist/surface/profiles.js +177 -28
  127. package/dist/surface/profiles.js.map +1 -1
  128. package/dist/surface/profiles.test.js +98 -17
  129. package/dist/surface/profiles.test.js.map +1 -1
  130. package/dist/validation/features.d.ts.map +1 -1
  131. package/dist/validation/features.js +1 -23
  132. package/dist/validation/features.js.map +1 -1
  133. package/dist/validation/features.test.js +4 -4
  134. package/dist/validation/features.test.js.map +1 -1
  135. package/dist/validation/imports.d.ts.map +1 -1
  136. package/dist/validation/imports.js +7 -16
  137. package/dist/validation/imports.js.map +1 -1
  138. package/dist/validation/imports.test.js +74 -66
  139. package/dist/validation/imports.test.js.map +1 -1
  140. package/dist/validator.maximus.test.js +17 -5
  141. package/dist/validator.maximus.test.js.map +1 -1
  142. package/package.json +2 -2
  143. package/dist/ir/converters/context.d.ts +0 -40
  144. package/dist/ir/converters/context.d.ts.map +0 -1
  145. package/dist/ir/converters/context.js +0 -25
  146. package/dist/ir/converters/context.js.map +0 -1
  147. package/dist/resolver/node-module-aliases.d.ts +0 -6
  148. package/dist/resolver/node-module-aliases.d.ts.map +0 -1
  149. package/dist/resolver/node-module-aliases.js +0 -164
  150. package/dist/resolver/node-module-aliases.js.map +0 -1
  151. package/dist/resolver/node-module-aliases.test.d.ts +0 -2
  152. package/dist/resolver/node-module-aliases.test.d.ts.map +0 -1
  153. package/dist/resolver/node-module-aliases.test.js +0 -64
  154. package/dist/resolver/node-module-aliases.test.js.map +0 -1
  155. package/dist/surface/js-surface-shims.d.ts +0 -3
  156. package/dist/surface/js-surface-shims.d.ts.map +0 -1
  157. package/dist/surface/js-surface-shims.js +0 -332
  158. package/dist/surface/js-surface-shims.js.map +0 -1
  159. package/dist/surface/js-surface-shims.test.d.ts +0 -2
  160. package/dist/surface/js-surface-shims.test.d.ts.map +0 -1
  161. package/dist/surface/js-surface-shims.test.js +0 -53
  162. package/dist/surface/js-surface-shims.test.js.map +0 -1
  163. package/dist/validation/unsupported-utility-types.d.ts +0 -40
  164. package/dist/validation/unsupported-utility-types.d.ts.map +0 -1
  165. package/dist/validation/unsupported-utility-types.js +0 -43
  166. package/dist/validation/unsupported-utility-types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/graph/extraction/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/graph/extraction/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAA0B,EAC1B,UAAyB,EACzB,OAAsB,EACP,EAAE;IACjB,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,aAAa,CAC1B,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,OAAO,CAAC,OAAO,CAAC,UAAU,EAC1B;QACE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CACF,CAAC;IAEF,MAAM,aAAa,GACjB,EAAE,CAAC;IAEL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,iBAAiB;QACjB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI;aACnC,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1D,4BAA4B;gBAC5B,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI;iBACjD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9D,kCAAkC;gBAClC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxD,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;wBAC3C,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBACtD,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;oBAClB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,aAAa;YACnB,SAAS;YACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,SAAS;YACpD,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;YACzC,aAAa;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * Module extraction - Public API
3
3
  */
4
4
  export { extractModuleInfo } from "./orchestrator.js";
5
- export { extractImport, extractDynamicImport } from "./imports.js";
5
+ export { extractImport } from "./imports.js";
6
6
  export { extractExport } from "./exports.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * Module extraction - Public API
3
3
  */
4
4
  export { extractModuleInfo } from "./orchestrator.js";
5
- export { extractImport, extractDynamicImport } from "./imports.js";
5
+ export { extractImport } from "./imports.js";
6
6
  export { extractExport } from "./exports.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/extraction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAMnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,KACrB,UAmGF,CAAC"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAMnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,KACrB,UA4FF,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import * as ts from "typescript";
5
5
  import { getNamespaceFromPath, getClassNameFromPath } from "../../resolver.js";
6
6
  import { hasExportModifier, isTopLevelCode } from "../helpers.js";
7
- import { extractDynamicImport, extractImport } from "./imports.js";
7
+ import { extractImport } from "./imports.js";
8
8
  import { extractExport } from "./exports.js";
9
9
  /**
10
10
  * Extract module information from a TypeScript source file
@@ -29,12 +29,6 @@ export const extractModuleInfo = (sourceFile, program) => {
29
29
  addImport(imp);
30
30
  }
31
31
  }
32
- if (ts.isCallExpression(node)) {
33
- const dynamicImp = extractDynamicImport(node, sourceFile, program);
34
- if (dynamicImp) {
35
- addImport(dynamicImp);
36
- }
37
- }
38
32
  // Extract exports
39
33
  if (ts.isExportDeclaration(node)) {
40
34
  const exp = extractExport(node);
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/graph/extraction/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * Module information extraction from TypeScript source files
3
3
  * Main dispatcher - re-exports from extraction/ subdirectory
4
4
  */
5
- export { extractModuleInfo, extractImport, extractDynamicImport, extractExport, } from "./extraction/index.js";
5
+ export { extractModuleInfo, extractImport, extractExport, } from "./extraction/index.js";
6
6
  //# sourceMappingURL=extraction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC"}
@@ -2,5 +2,5 @@
2
2
  * Module information extraction from TypeScript source files
3
3
  * Main dispatcher - re-exports from extraction/ subdirectory
4
4
  */
5
- export { extractModuleInfo, extractImport, extractDynamicImport, extractExport, } from "./extraction/index.js";
5
+ export { extractModuleInfo, extractImport, extractExport, } from "./extraction/index.js";
6
6
  //# sourceMappingURL=extraction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,aAAa,GACd,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/graph/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import ts from "typescript";
9
9
  import type { DeclId, SignatureId, MemberId, TypeSyntaxId } from "../type-system/types.js";
10
- import type { DeclKind, ParameterNode, TypeParameterNode, SignatureTypePredicate, ClassMemberNames } from "../type-system/internal/handle-types.js";
10
+ import type { DeclKind, ParameterNode, TypeParameterNode, SignatureTypePredicate, ClassMemberNames, HandleRegistry } from "../type-system/internal/handle-types.js";
11
11
  /**
12
12
  * Binding interface — wraps TS symbol resolution APIs.
13
13
  *
@@ -147,7 +147,7 @@ export type BindingInternal = Binding & {
147
147
  * Only createTypeSystem() should call this to access declaration info.
148
148
  * All other code should use TypeSystem queries instead.
149
149
  */
150
- _getHandleRegistry(): import("../type-system/internal/handle-types.js").HandleRegistry;
150
+ _getHandleRegistry(): HandleRegistry;
151
151
  };
152
152
  /**
153
153
  * Type predicate information for `x is T` predicates.
@@ -1 +1 @@
1
- {"version":3,"file":"binding-types.d.ts","sourceRoot":"","sources":["../../../src/ir/binding/binding-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binding-types.d.ts","sourceRoot":"","sources":["../../../src/ir/binding/binding-types.ts"],"names":[],"mappings":"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"}
@@ -529,9 +529,161 @@ describe("Binding Resolution in IR", () => {
529
529
  // unknownMember is not in the bindings, so memberBinding should be undefined
530
530
  expect(memberExpr.memberBinding).to.equal(undefined);
531
531
  });
532
+ it("should resolve simple binding staticType for global static member access", () => {
533
+ const source = `
534
+ interface ArrayLike<T> {
535
+ readonly length: number;
536
+ readonly [n: number]: T;
537
+ }
538
+
539
+ interface ArrayConstructor {
540
+ from<T>(source: ArrayLike<T>): T[];
541
+ }
542
+
543
+ declare const Array: ArrayConstructor;
544
+
545
+ export function test(values: string[]): string[] {
546
+ return Array.from(values);
547
+ }
548
+ `;
549
+ const bindings = new BindingRegistry();
550
+ bindings.addBindings("/test/simple-array.json", {
551
+ bindings: {
552
+ Array: {
553
+ kind: "global",
554
+ assembly: "Acme.Runtime",
555
+ type: "Acme.Runtime.JSArray`1",
556
+ staticType: "Acme.Runtime.JSArrayStatics",
557
+ },
558
+ },
559
+ });
560
+ bindings.addBindings("/test/acme-array/bindings.json", {
561
+ namespace: "Acme.Runtime",
562
+ types: [
563
+ {
564
+ clrName: "Acme.Runtime.JSArray`1",
565
+ assemblyName: "Acme.Runtime",
566
+ methods: [
567
+ {
568
+ clrName: "map",
569
+ declaringClrType: "Acme.Runtime.JSArray`1",
570
+ declaringAssemblyName: "Acme.Runtime",
571
+ },
572
+ ],
573
+ properties: [],
574
+ fields: [],
575
+ },
576
+ {
577
+ clrName: "Acme.Runtime.JSArrayStatics",
578
+ assemblyName: "Acme.Runtime",
579
+ methods: [
580
+ {
581
+ clrName: "from",
582
+ declaringClrType: "Acme.Runtime.JSArrayStatics",
583
+ declaringAssemblyName: "Acme.Runtime",
584
+ },
585
+ ],
586
+ properties: [],
587
+ fields: [],
588
+ },
589
+ ],
590
+ });
591
+ const { testProgram, ctx, options } = createTestProgram(source, bindings);
592
+ const sourceFile = testProgram.sourceFiles[0];
593
+ if (!sourceFile)
594
+ throw new Error("Failed to create source file");
595
+ const result = buildIrModule(sourceFile, testProgram, options, ctx);
596
+ expect(result.ok).to.equal(true);
597
+ if (!result.ok)
598
+ return;
599
+ const module = result.value;
600
+ const funcDecl = module.body[0];
601
+ if (funcDecl?.kind !== "functionDeclaration")
602
+ return;
603
+ const returnStmt = funcDecl.body.statements[0];
604
+ if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
605
+ return;
606
+ const callExpr = returnStmt.expression;
607
+ if (callExpr.kind !== "call")
608
+ return;
609
+ const memberExpr = callExpr.callee;
610
+ if (memberExpr.kind !== "memberAccess")
611
+ return;
612
+ expect(memberExpr.memberBinding).to.not.equal(undefined);
613
+ expect(memberExpr.memberBinding?.type).to.equal("Acme.Runtime.JSArrayStatics");
614
+ expect(memberExpr.memberBinding?.member).to.equal("from");
615
+ });
532
616
  });
533
617
  describe("Extension Method Binding Resolution", () => {
534
- it("should resolve js-surface extension methods by receiver type fallback", () => {
618
+ it("should prefer surface wrapper bindings for numeric primitive instance methods", () => {
619
+ const source = `
620
+ interface Number { toString(): string; }
621
+
622
+ export function test(value: number): string {
623
+ return value.toString();
624
+ }
625
+ `;
626
+ const bindings = new BindingRegistry();
627
+ bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
628
+ bindings: {
629
+ Number: {
630
+ kind: "global",
631
+ assembly: "Tsonic.JSRuntime",
632
+ type: "Tsonic.JSRuntime.Number",
633
+ },
634
+ },
635
+ namespace: "Tsonic.JSRuntime",
636
+ types: [
637
+ {
638
+ clrName: "Tsonic.JSRuntime.Number",
639
+ assemblyName: "Tsonic.JSRuntime",
640
+ methods: [
641
+ {
642
+ clrName: "toString",
643
+ normalizedSignature: "toString|(System.Double):System.String|static=true",
644
+ parameterCount: 1,
645
+ declaringClrType: "Tsonic.JSRuntime.Number",
646
+ declaringAssemblyName: "Tsonic.JSRuntime",
647
+ isExtensionMethod: true,
648
+ },
649
+ ],
650
+ properties: [],
651
+ fields: [],
652
+ },
653
+ {
654
+ clrName: "System.Double",
655
+ assemblyName: "System.Private.CoreLib",
656
+ methods: [],
657
+ properties: [],
658
+ fields: [],
659
+ },
660
+ ],
661
+ });
662
+ const { testProgram, ctx, options } = createTestProgram(source, bindings);
663
+ const sourceFile = testProgram.sourceFiles[0];
664
+ if (!sourceFile)
665
+ throw new Error("Failed to create source file");
666
+ const result = buildIrModule(sourceFile, testProgram, options, ctx);
667
+ expect(result.ok).to.equal(true);
668
+ if (!result.ok)
669
+ return;
670
+ const module = result.value;
671
+ const funcDecl = module.body[0];
672
+ if (funcDecl?.kind !== "functionDeclaration")
673
+ return;
674
+ const returnStmt = funcDecl.body.statements[0];
675
+ if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
676
+ return;
677
+ if (returnStmt.expression.kind !== "call")
678
+ return;
679
+ if (returnStmt.expression.callee.kind !== "memberAccess")
680
+ return;
681
+ expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
682
+ expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
683
+ expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Number");
684
+ expect(returnStmt.expression.callee.memberBinding?.member).to.equal("toString");
685
+ });
686
+ it("should resolve primitive receiver extension methods via bindings", () => {
535
687
  const source = `
536
688
  interface String { trim(): string; }
537
689
 
@@ -544,14 +696,14 @@ describe("Binding Resolution in IR", () => {
544
696
  namespace: "Tsonic.JSRuntime",
545
697
  types: [
546
698
  {
547
- clrName: "Tsonic.JSRuntime.String",
699
+ clrName: "System.String",
548
700
  assemblyName: "Tsonic.JSRuntime",
549
701
  methods: [
550
702
  {
551
703
  clrName: "trim",
552
704
  normalizedSignature: "trim|(System.String):System.String|static=true",
553
705
  parameterCount: 1,
554
- declaringClrType: "Tsonic.JSRuntime.String",
706
+ declaringClrType: "Tsonic.JSRuntime.StringExtensions",
555
707
  declaringAssemblyName: "Tsonic.JSRuntime",
556
708
  isExtensionMethod: true,
557
709
  },
@@ -561,19 +713,11 @@ describe("Binding Resolution in IR", () => {
561
713
  },
562
714
  ],
563
715
  });
564
- const { testProgram, options } = createTestProgram(source, bindings);
716
+ const { testProgram, ctx, options } = createTestProgram(source, bindings);
565
717
  const sourceFile = testProgram.sourceFiles[0];
566
718
  if (!sourceFile)
567
719
  throw new Error("Failed to create source file");
568
- const jsProgram = {
569
- ...testProgram,
570
- options: {
571
- ...testProgram.options,
572
- surface: "js",
573
- },
574
- };
575
- const ctx = createProgramContext(jsProgram, options);
576
- const result = buildIrModule(sourceFile, jsProgram, options, ctx);
720
+ const result = buildIrModule(sourceFile, testProgram, options, ctx);
577
721
  expect(result.ok).to.equal(true);
578
722
  if (!result.ok)
579
723
  return;
@@ -590,10 +734,10 @@ describe("Binding Resolution in IR", () => {
590
734
  return;
591
735
  expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
592
736
  expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
593
- expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.String");
737
+ expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.StringExtensions");
594
738
  expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
595
739
  });
596
- it("should inherit js-surface extension fallback in nodejs surface", () => {
740
+ it("should resolve the same extension methods regardless of selected surface", () => {
597
741
  const source = `
598
742
  interface String { trim(): string; }
599
743
 
@@ -606,14 +750,14 @@ describe("Binding Resolution in IR", () => {
606
750
  namespace: "Tsonic.JSRuntime",
607
751
  types: [
608
752
  {
609
- clrName: "Tsonic.JSRuntime.String",
753
+ clrName: "System.String",
610
754
  assemblyName: "Tsonic.JSRuntime",
611
755
  methods: [
612
756
  {
613
757
  clrName: "trim",
614
758
  normalizedSignature: "trim|(System.String):System.String|static=true",
615
759
  parameterCount: 1,
616
- declaringClrType: "Tsonic.JSRuntime.String",
760
+ declaringClrType: "Tsonic.JSRuntime.StringExtensions",
617
761
  declaringAssemblyName: "Tsonic.JSRuntime",
618
762
  isExtensionMethod: true,
619
763
  },
@@ -631,7 +775,7 @@ describe("Binding Resolution in IR", () => {
631
775
  ...testProgram,
632
776
  options: {
633
777
  ...testProgram.options,
634
- surface: "nodejs",
778
+ surface: "@tsonic/nodejs",
635
779
  },
636
780
  };
637
781
  const ctx = createProgramContext(jsProgram, options);
@@ -652,7 +796,7 @@ describe("Binding Resolution in IR", () => {
652
796
  return;
653
797
  expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
654
798
  expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
655
- expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.String");
799
+ expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.StringExtensions");
656
800
  expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
657
801
  });
658
802
  it("should resolve instance-style tsbindgen extension methods via __Ext_* container", () => {
@@ -813,7 +957,7 @@ describe("Binding Resolution in IR", () => {
813
957
  "out",
814
958
  ]);
815
959
  });
816
- it("should resolve js-surface number receiver extensions by primitive fallback", () => {
960
+ it("should resolve numeric primitive extension methods via bindings", () => {
817
961
  const source = `
818
962
  interface Number { toFixed(fractionDigits?: number): string; }
819
963
 
@@ -826,14 +970,14 @@ describe("Binding Resolution in IR", () => {
826
970
  namespace: "Tsonic.JSRuntime",
827
971
  types: [
828
972
  {
829
- clrName: "Tsonic.JSRuntime.Number",
973
+ clrName: "System.Double",
830
974
  assemblyName: "Tsonic.JSRuntime",
831
975
  methods: [
832
976
  {
833
977
  clrName: "toFixed",
834
978
  normalizedSignature: "toFixed|(System.Double,System.Int32):System.String|static=true",
835
979
  parameterCount: 2,
836
- declaringClrType: "Tsonic.JSRuntime.Number",
980
+ declaringClrType: "Tsonic.JSRuntime.NumberExtensions",
837
981
  declaringAssemblyName: "Tsonic.JSRuntime",
838
982
  isExtensionMethod: true,
839
983
  },
@@ -843,19 +987,11 @@ describe("Binding Resolution in IR", () => {
843
987
  },
844
988
  ],
845
989
  });
846
- const { testProgram, options } = createTestProgram(source, bindings);
990
+ const { testProgram, ctx, options } = createTestProgram(source, bindings);
847
991
  const sourceFile = testProgram.sourceFiles[0];
848
992
  if (!sourceFile)
849
993
  throw new Error("Failed to create source file");
850
- const jsProgram = {
851
- ...testProgram,
852
- options: {
853
- ...testProgram.options,
854
- surface: "js",
855
- },
856
- };
857
- const ctx = createProgramContext(jsProgram, options);
858
- const result = buildIrModule(sourceFile, jsProgram, options, ctx);
994
+ const result = buildIrModule(sourceFile, testProgram, options, ctx);
859
995
  expect(result.ok).to.equal(true);
860
996
  if (!result.ok)
861
997
  return;
@@ -871,11 +1007,11 @@ describe("Binding Resolution in IR", () => {
871
1007
  if (ret.expression.callee.kind !== "memberAccess")
872
1008
  return;
873
1009
  expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
874
- expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Number");
1010
+ expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.NumberExtensions");
875
1011
  expect(ret.expression.callee.memberBinding?.member).to.equal("toFixed");
876
1012
  expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
877
1013
  });
878
- it("should resolve js-surface array receiver extensions by array fallback candidates", () => {
1014
+ it("should resolve array receiver extension methods via bindings", () => {
879
1015
  const source = `
880
1016
  interface Array<T> { join(separator?: string): string; }
881
1017
 
@@ -888,14 +1024,14 @@ describe("Binding Resolution in IR", () => {
888
1024
  namespace: "Tsonic.JSRuntime",
889
1025
  types: [
890
1026
  {
891
- clrName: "Tsonic.JSRuntime.Array",
1027
+ clrName: "System.Array",
892
1028
  assemblyName: "Tsonic.JSRuntime",
893
1029
  methods: [
894
1030
  {
895
1031
  clrName: "join",
896
- normalizedSignature: "join|(JSArray_1,System.String):System.String|static=true",
1032
+ normalizedSignature: "join|(System.Array,System.String):System.String|static=true",
897
1033
  parameterCount: 2,
898
- declaringClrType: "Tsonic.JSRuntime.Array",
1034
+ declaringClrType: "Tsonic.JSRuntime.ArrayExtensions",
899
1035
  declaringAssemblyName: "Tsonic.JSRuntime",
900
1036
  isExtensionMethod: true,
901
1037
  },
@@ -905,19 +1041,11 @@ describe("Binding Resolution in IR", () => {
905
1041
  },
906
1042
  ],
907
1043
  });
908
- const { testProgram, options } = createTestProgram(source, bindings);
1044
+ const { testProgram, ctx, options } = createTestProgram(source, bindings);
909
1045
  const sourceFile = testProgram.sourceFiles[0];
910
1046
  if (!sourceFile)
911
1047
  throw new Error("Failed to create source file");
912
- const jsProgram = {
913
- ...testProgram,
914
- options: {
915
- ...testProgram.options,
916
- surface: "js",
917
- },
918
- };
919
- const ctx = createProgramContext(jsProgram, options);
920
- const result = buildIrModule(sourceFile, jsProgram, options, ctx);
1048
+ const result = buildIrModule(sourceFile, testProgram, options, ctx);
921
1049
  expect(result.ok).to.equal(true);
922
1050
  if (!result.ok)
923
1051
  return;
@@ -933,7 +1061,7 @@ describe("Binding Resolution in IR", () => {
933
1061
  if (ret.expression.callee.kind !== "memberAccess")
934
1062
  return;
935
1063
  expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
936
- expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Array");
1064
+ expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.ArrayExtensions");
937
1065
  expect(ret.expression.callee.memberBinding?.member).to.equal("join");
938
1066
  expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
939
1067
  });