@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
@@ -13,7 +13,7 @@ describe("Program Creation", () => {
13
13
  projectRoot: "/tmp/app",
14
14
  sourceRoot: "/tmp/app/src",
15
15
  rootNamespace: "App",
16
- surface: "js",
16
+ surface: "@tsonic/js",
17
17
  });
18
18
  expect(options.noLib).to.equal(true);
19
19
  });
@@ -22,10 +22,33 @@ describe("Program Creation", () => {
22
22
  projectRoot: "/tmp/app",
23
23
  sourceRoot: "/tmp/app/src",
24
24
  rootNamespace: "App",
25
- surface: "nodejs",
25
+ surface: "@tsonic/nodejs",
26
26
  });
27
27
  expect(options.noLib).to.equal(true);
28
28
  });
29
+ it("should allow mutable array index writes in clr surface mode", () => {
30
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-clr-array-write-"));
31
+ try {
32
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
33
+ const srcDir = path.join(tempDir, "src");
34
+ fs.mkdirSync(srcDir, { recursive: true });
35
+ const entryPath = path.join(srcDir, "index.ts");
36
+ fs.writeFileSync(entryPath, [
37
+ "const values: number[] = [1, 2, 3];",
38
+ "values[0] = 42;",
39
+ "export const first = values[0];",
40
+ ].join("\n"));
41
+ const result = createProgram([entryPath], {
42
+ projectRoot: tempDir,
43
+ sourceRoot: srcDir,
44
+ rootNamespace: "Test",
45
+ });
46
+ expect(result.ok).to.equal(true);
47
+ }
48
+ finally {
49
+ fs.rmSync(tempDir, { recursive: true, force: true });
50
+ }
51
+ });
29
52
  it("should resolve @tsonic/* imports from the project root (global install)", () => {
30
53
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-creation-"));
31
54
  try {
@@ -56,7 +79,7 @@ describe("Program Creation", () => {
56
79
  fs.rmSync(tempDir, { recursive: true, force: true });
57
80
  }
58
81
  });
59
- it("should support node: module shims in nodejs surface mode", () => {
82
+ it("should resolve node module imports from package-provided declarations and bindings", () => {
60
83
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-js-surface-"));
61
84
  try {
62
85
  fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
@@ -65,21 +88,76 @@ describe("Program Creation", () => {
65
88
  const nodejsRoot = path.join(tempDir, "node_modules/@tsonic/nodejs");
66
89
  fs.mkdirSync(nodejsRoot, { recursive: true });
67
90
  fs.writeFileSync(path.join(nodejsRoot, "package.json"), JSON.stringify({ name: "@tsonic/nodejs", version: "0.0.0", type: "module" }, null, 2));
68
- fs.writeFileSync(path.join(nodejsRoot, "index.d.ts"), "export declare const fs: { readFileSync(path: string): string; };\n");
91
+ fs.writeFileSync(path.join(nodejsRoot, "index.d.ts"), 'declare module "node:fs" { export const readFileSync: (path: string) => string; }\n');
69
92
  fs.writeFileSync(path.join(nodejsRoot, "index.js"), "export const fs = {};\n");
93
+ const nodejsInternalDir = path.join(nodejsRoot, "index");
94
+ fs.mkdirSync(nodejsInternalDir, { recursive: true });
95
+ fs.writeFileSync(path.join(nodejsRoot, "bindings.json"), JSON.stringify({
96
+ bindings: {
97
+ "node:fs": {
98
+ kind: "module",
99
+ assembly: "nodejs",
100
+ type: "nodejs.fs",
101
+ },
102
+ fs: {
103
+ kind: "module",
104
+ assembly: "nodejs",
105
+ type: "nodejs.fs",
106
+ },
107
+ },
108
+ }, null, 2));
70
109
  const entryPath = path.join(srcDir, "index.ts");
71
- fs.writeFileSync(entryPath, 'import { fs } from "node:fs";\nexport const x = fs.readFileSync("a.txt");\n');
110
+ fs.writeFileSync(entryPath, 'import { readFileSync } from "node:fs";\nexport const x = readFileSync("a.txt");\n');
72
111
  const result = createProgram([entryPath], {
73
112
  projectRoot: tempDir,
74
113
  sourceRoot: srcDir,
75
114
  rootNamespace: "Test",
76
- surface: "nodejs",
115
+ surface: "@tsonic/nodejs",
77
116
  typeRoots: [],
78
117
  });
79
118
  expect(result.ok).to.equal(true);
80
119
  if (!result.ok)
81
120
  return;
82
- expect(result.value.bindings.getBinding("console")?.kind).to.equal("global");
121
+ const nodeFs = result.value.bindings.getBinding("node:fs");
122
+ expect(nodeFs?.kind).to.equal("module");
123
+ if (nodeFs?.kind === "module") {
124
+ expect(nodeFs.type).to.equal("nodejs.fs");
125
+ }
126
+ }
127
+ finally {
128
+ fs.rmSync(tempDir, { recursive: true, force: true });
129
+ }
130
+ });
131
+ it("should include declaration files from custom non-@tsonic surface packages", () => {
132
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-custom-surface-"));
133
+ try {
134
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
135
+ const srcDir = path.join(tempDir, "src");
136
+ fs.mkdirSync(srcDir, { recursive: true });
137
+ const surfaceRoot = path.join(tempDir, "node_modules", "@acme", "surface-web");
138
+ fs.mkdirSync(surfaceRoot, { recursive: true });
139
+ fs.writeFileSync(path.join(surfaceRoot, "package.json"), JSON.stringify({ name: "@acme/surface-web", version: "1.0.0", type: "module" }, null, 2));
140
+ fs.writeFileSync(path.join(surfaceRoot, "tsonic.surface.json"), JSON.stringify({
141
+ schemaVersion: 1,
142
+ id: "@acme/surface-web",
143
+ extends: [],
144
+ requiredTypeRoots: ["."],
145
+ }, null, 2));
146
+ fs.writeFileSync(path.join(surfaceRoot, "index.d.ts"), "declare global { interface String { shout(): string; } }\nexport {};\n");
147
+ fs.writeFileSync(path.join(surfaceRoot, "index.js"), "export {};\n");
148
+ const entryPath = path.join(srcDir, "index.ts");
149
+ fs.writeFileSync(entryPath, 'export const x = "hello".shout();\n');
150
+ const result = createProgram([entryPath], {
151
+ projectRoot: tempDir,
152
+ sourceRoot: srcDir,
153
+ rootNamespace: "Test",
154
+ surface: "@acme/surface-web",
155
+ });
156
+ expect(result.ok).to.equal(true);
157
+ if (!result.ok)
158
+ return;
159
+ const expectedDts = path.resolve(path.join(surfaceRoot, "index.d.ts"));
160
+ expect(result.value.declarationSourceFiles.some((sf) => path.resolve(sf.fileName) === expectedDts)).to.equal(true);
83
161
  }
84
162
  finally {
85
163
  fs.rmSync(tempDir, { recursive: true, force: true });
@@ -94,7 +172,7 @@ describe("Program Creation", () => {
94
172
  const jsRoot = path.join(tempDir, "node_modules/@tsonic/js");
95
173
  fs.mkdirSync(path.join(jsRoot, "index"), { recursive: true });
96
174
  fs.writeFileSync(path.join(jsRoot, "package.json"), JSON.stringify({ name: "@tsonic/js", version: "0.0.0", type: "module" }, null, 2));
97
- fs.writeFileSync(path.join(jsRoot, "index.d.ts"), "export {};\n");
175
+ fs.writeFileSync(path.join(jsRoot, "index.d.ts"), "declare global { interface String { trim(): string; } }\nexport {};\n");
98
176
  fs.writeFileSync(path.join(jsRoot, "index.js"), "export {};\n");
99
177
  fs.writeFileSync(path.join(jsRoot, "index", "bindings.json"), JSON.stringify({
100
178
  namespace: "Tsonic.JSRuntime",
@@ -123,7 +201,7 @@ describe("Program Creation", () => {
123
201
  projectRoot: tempDir,
124
202
  sourceRoot: srcDir,
125
203
  rootNamespace: "Test",
126
- surface: "js",
204
+ surface: "@tsonic/js",
127
205
  });
128
206
  expect(result.ok).to.equal(true);
129
207
  if (!result.ok)
@@ -134,35 +212,60 @@ describe("Program Creation", () => {
134
212
  fs.rmSync(tempDir, { recursive: true, force: true });
135
213
  }
136
214
  });
137
- it("should typecheck compiler-owned js globals in noLib mode", () => {
215
+ it("should typecheck package-provided js globals in noLib mode", () => {
138
216
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-js-globals-"));
139
217
  try {
140
218
  fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
141
219
  const srcDir = path.join(tempDir, "src");
142
220
  fs.mkdirSync(srcDir, { recursive: true });
221
+ const jsRoot = path.join(tempDir, "node_modules/@tsonic/js");
222
+ fs.mkdirSync(jsRoot, { recursive: true });
223
+ fs.writeFileSync(path.join(jsRoot, "package.json"), JSON.stringify({ name: "@tsonic/js", version: "0.0.0", type: "module" }, null, 2));
224
+ fs.writeFileSync(path.join(jsRoot, "index.d.ts"), `
225
+ declare global {
226
+ interface String {
227
+ trim(): string;
228
+ toUpperCase(): string;
229
+ includes(search: string): boolean;
230
+ }
231
+
232
+ interface Array<T> {
233
+ readonly length: number;
234
+ map<TResult>(callback: (value: T) => TResult): TResult[];
235
+ filter(callback: (value: T) => boolean): T[];
236
+ reduce<TResult>(
237
+ callback: (previousValue: TResult, currentValue: T) => TResult,
238
+ initialValue: TResult
239
+ ): TResult;
240
+ join(separator?: string): string;
241
+ }
242
+
243
+ const console: {
244
+ log(...data: unknown[]): void;
245
+ };
246
+
247
+ function parseInt(value: string): number;
248
+ }
249
+
250
+ export {};
251
+ `);
143
252
  const entryPath = path.join(srcDir, "index.ts");
144
253
  fs.writeFileSync(entryPath, [
145
254
  'const m = " hi ".trim().toUpperCase();',
146
255
  'const hasNeedle = m.includes("H");',
147
- "const when = new Date();",
148
- "const parsed = JSON.parse<{ ok: boolean }>('{\"ok\":true}');",
149
- "const s = new Set<string>();",
150
- "s.add(m);",
151
- "const mp = new Map<string, number>();",
152
- "mp.set(m, 42);",
153
256
  "const nums = [1, 2, 3, 4];",
154
257
  "const doubled = nums.map((x) => x * 2);",
155
258
  "const filtered = doubled.filter((x) => x > 2);",
156
259
  "const total = filtered.reduce((a, b) => a + b, 0);",
157
- "console.log(when.toISOString(), parsed.ok, hasNeedle, mp.get(m), s.has(m));",
158
- 'console.log(nums.length, doubled.join(","), total);',
260
+ "console.log(hasNeedle);",
261
+ 'console.log(nums.length, doubled.join(","), total, m);',
159
262
  'export const ok = parseInt("42");',
160
263
  ].join("\n"));
161
264
  const result = createProgram([entryPath], {
162
265
  projectRoot: tempDir,
163
266
  sourceRoot: srcDir,
164
267
  rootNamespace: "Test",
165
- surface: "js",
268
+ surface: "@tsonic/js",
166
269
  });
167
270
  expect(result.ok).to.equal(true);
168
271
  }
@@ -170,5 +273,159 @@ describe("Program Creation", () => {
170
273
  fs.rmSync(tempDir, { recursive: true, force: true });
171
274
  }
172
275
  });
276
+ it("should keep JS surface free of CLR string members", () => {
277
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-js-no-clr-"));
278
+ try {
279
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
280
+ const srcDir = path.join(tempDir, "src");
281
+ fs.mkdirSync(srcDir, { recursive: true });
282
+ const jsRoot = path.join(tempDir, "node_modules/@tsonic/js");
283
+ fs.mkdirSync(jsRoot, { recursive: true });
284
+ fs.writeFileSync(path.join(jsRoot, "package.json"), JSON.stringify({ name: "@tsonic/js", version: "0.0.0", type: "module" }, null, 2));
285
+ fs.writeFileSync(path.join(jsRoot, "index.d.ts"), "declare global { interface String { trim(): string; } }\nexport {};\n");
286
+ fs.writeFileSync(path.join(jsRoot, "index.js"), "export {};\n");
287
+ fs.writeFileSync(path.join(jsRoot, "tsonic.surface.json"), JSON.stringify({
288
+ schemaVersion: 1,
289
+ id: "@tsonic/js",
290
+ extends: [],
291
+ requiredTypeRoots: ["."],
292
+ useStandardLib: false,
293
+ }, null, 2));
294
+ const entryPath = path.join(srcDir, "index.ts");
295
+ fs.writeFileSync(entryPath, 'export const bad = " hi ".Trim();\n');
296
+ const result = createProgram([entryPath], {
297
+ projectRoot: tempDir,
298
+ sourceRoot: srcDir,
299
+ rootNamespace: "Test",
300
+ surface: "@tsonic/js",
301
+ });
302
+ expect(result.ok).to.equal(false);
303
+ if (result.ok)
304
+ return;
305
+ expect(result.error.hasErrors).to.equal(true);
306
+ expect(result.error.diagnostics.some((diagnostic) => diagnostic.message.includes("Property 'Trim' does not exist"))).to.equal(true);
307
+ }
308
+ finally {
309
+ fs.rmSync(tempDir, { recursive: true, force: true });
310
+ }
311
+ });
312
+ it("should expose Array.from and RangeError on js surface", () => {
313
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-js-array-from-"));
314
+ try {
315
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
316
+ const srcDir = path.join(tempDir, "src");
317
+ fs.mkdirSync(srcDir, { recursive: true });
318
+ const entryPath = path.join(srcDir, "index.ts");
319
+ fs.writeFileSync(entryPath, [
320
+ 'const chars = Array.from("abc");',
321
+ 'const err = new RangeError("bad range");',
322
+ 'export const ok = chars.join("") + err.message;',
323
+ ].join("\n"));
324
+ const result = createProgram([entryPath], {
325
+ projectRoot: tempDir,
326
+ sourceRoot: srcDir,
327
+ rootNamespace: "Test",
328
+ surface: "@tsonic/js",
329
+ });
330
+ expect(result.ok).to.equal(true);
331
+ if (!result.ok)
332
+ return;
333
+ expect(result.value.bindings.getBinding("Array")?.staticType).to.equal("Tsonic.JSRuntime.JSArrayStatics");
334
+ expect(result.value.bindings.getBinding("Error")?.type).to.equal("Tsonic.JSRuntime.Error");
335
+ }
336
+ finally {
337
+ fs.rmSync(tempDir, { recursive: true, force: true });
338
+ }
339
+ });
340
+ it("should expose js array mutators and numeric instance helpers on js surface", () => {
341
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-js-array-number-"));
342
+ try {
343
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
344
+ const srcDir = path.join(tempDir, "src");
345
+ fs.mkdirSync(srcDir, { recursive: true });
346
+ const entryPath = path.join(srcDir, "index.ts");
347
+ fs.writeFileSync(entryPath, [
348
+ "const xs = [1, 2];",
349
+ "xs.push(3);",
350
+ "const text = (42).toString();",
351
+ "const other = Array.of(1, 2, 3);",
352
+ "export const ok = Array.isArray(other) ? text + xs.join(',') : text;",
353
+ ].join("\n"));
354
+ const result = createProgram([entryPath], {
355
+ projectRoot: tempDir,
356
+ sourceRoot: srcDir,
357
+ rootNamespace: "Test",
358
+ surface: "@tsonic/js",
359
+ });
360
+ expect(result.ok).to.equal(true);
361
+ if (!result.ok)
362
+ return;
363
+ expect(result.value.bindings.getBinding("Array")?.staticType).to.equal("Tsonic.JSRuntime.JSArrayStatics");
364
+ expect(result.value.bindings.getBinding("Number")?.type).to.equal("Tsonic.JSRuntime.Number");
365
+ }
366
+ finally {
367
+ fs.rmSync(tempDir, { recursive: true, force: true });
368
+ }
369
+ });
370
+ it("should keep RangeError out of clr surface", () => {
371
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-clr-no-rangeerror-"));
372
+ try {
373
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
374
+ const srcDir = path.join(tempDir, "src");
375
+ fs.mkdirSync(srcDir, { recursive: true });
376
+ const entryPath = path.join(srcDir, "index.ts");
377
+ fs.writeFileSync(entryPath, 'export const bad = new RangeError("not clr");\n');
378
+ const result = createProgram([entryPath], {
379
+ projectRoot: tempDir,
380
+ sourceRoot: srcDir,
381
+ rootNamespace: "Test",
382
+ surface: "clr",
383
+ });
384
+ expect(result.ok).to.equal(false);
385
+ if (result.ok)
386
+ return;
387
+ expect(result.error.diagnostics.some((diagnostic) => diagnostic.message.includes("Cannot find name 'RangeError'"))).to.equal(true);
388
+ const errorEntryPath = path.join(srcDir, "error.ts");
389
+ fs.writeFileSync(errorEntryPath, 'export const err = new Error("core error");\n');
390
+ const okResult = createProgram([errorEntryPath], {
391
+ projectRoot: tempDir,
392
+ sourceRoot: srcDir,
393
+ rootNamespace: "Test",
394
+ surface: "clr",
395
+ });
396
+ expect(okResult.ok).to.equal(true);
397
+ if (!okResult.ok)
398
+ return;
399
+ expect(okResult.value.bindings.getBinding("Error")?.type).to.equal("System.Exception");
400
+ }
401
+ finally {
402
+ fs.rmSync(tempDir, { recursive: true, force: true });
403
+ }
404
+ });
405
+ it("should expose CLR string members on clr surface via @tsonic/globals", () => {
406
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tsonic-program-clr-members-"));
407
+ try {
408
+ fs.writeFileSync(path.join(tempDir, "package.json"), JSON.stringify({ name: "app", version: "1.0.0", type: "module" }, null, 2));
409
+ const srcDir = path.join(tempDir, "src");
410
+ fs.mkdirSync(srcDir, { recursive: true });
411
+ const entryPath = path.join(srcDir, "index.ts");
412
+ fs.writeFileSync(entryPath, 'export const ok = " hi ".Trim();\n');
413
+ const result = createProgram([entryPath], {
414
+ projectRoot: tempDir,
415
+ sourceRoot: srcDir,
416
+ rootNamespace: "Test",
417
+ surface: "clr",
418
+ });
419
+ expect(result.ok).to.equal(true);
420
+ if (!result.ok)
421
+ return;
422
+ expect(result.value.declarationSourceFiles.some((sourceFile) => sourceFile.fileName.endsWith("__clr_globals__.d.ts"))).to.equal(false);
423
+ expect(result.value.declarationSourceFiles.some((sourceFile) => sourceFile.fileName.includes("@tsonic/globals") ||
424
+ /[/\\]globals[/\\]versions[/\\]\d+[/\\]index\.d\.ts$/.test(sourceFile.fileName))).to.equal(true);
425
+ }
426
+ finally {
427
+ fs.rmSync(tempDir, { recursive: true, force: true });
428
+ }
429
+ });
173
430
  });
174
431
  //# sourceMappingURL=creation.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"creation.test.js","sourceRoot":"","sources":["../../src/program/creation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creation.test.js","sourceRoot":"","sources":["../../src/program/creation.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/program/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,sBAAsB,EAEvB,MAAM,uBAAuB,CAAC;AAyB/B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,MAAM,EAAE,KAC3B,sBAsBF,CAAC"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/program/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,sBAAsB,EAEvB,MAAM,uBAAuB,CAAC;AAgI/B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,MAAM,EAAE,KAC3B,sBASF,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import * as fs from "node:fs";
5
5
  import * as path from "node:path";
6
6
  import { DotnetMetadataRegistry, } from "../dotnet-metadata.js";
7
+ import { resolveDependencyPackageRoot } from "./package-roots.js";
7
8
  /**
8
9
  * Recursively scan a directory for tsbindgen `<Namespace>/bindings.json` files.
9
10
  */
@@ -16,6 +17,9 @@ const scanForBindingsFiles = (dir) => {
16
17
  for (const entry of entries) {
17
18
  const fullPath = path.join(dir, entry.name);
18
19
  if (entry.isDirectory()) {
20
+ if (entry.name === "node_modules" || entry.name === ".git") {
21
+ continue;
22
+ }
19
23
  results.push(...scanForBindingsFiles(fullPath));
20
24
  }
21
25
  else if (entry.name === "bindings.json") {
@@ -24,6 +28,72 @@ const scanForBindingsFiles = (dir) => {
24
28
  }
25
29
  return results;
26
30
  };
31
+ const loadMetadataFromPackage = (registry, packageRoot, visited, forceDependencyTraversal = false) => {
32
+ const absoluteRoot = path.resolve(packageRoot);
33
+ if (visited.has(absoluteRoot)) {
34
+ return;
35
+ }
36
+ visited.add(absoluteRoot);
37
+ if (!fs.existsSync(absoluteRoot)) {
38
+ return;
39
+ }
40
+ const bindingsFiles = scanForBindingsFiles(absoluteRoot);
41
+ let discoveredClrBindingsInPackage = false;
42
+ for (const bindingsPath of bindingsFiles) {
43
+ try {
44
+ const content = fs.readFileSync(bindingsPath, "utf-8");
45
+ const parsed = JSON.parse(content);
46
+ if (parsed &&
47
+ typeof parsed === "object" &&
48
+ typeof parsed.namespace ===
49
+ "string" &&
50
+ Array.isArray(parsed.types)) {
51
+ discoveredClrBindingsInPackage = true;
52
+ registry.loadBindingsFile(bindingsPath, parsed);
53
+ }
54
+ }
55
+ catch (err) {
56
+ console.warn(`Failed to load bindings from ${bindingsPath}:`, err);
57
+ }
58
+ }
59
+ const hasBindingsManifest = fs.existsSync(path.join(absoluteRoot, "tsonic.bindings.json"));
60
+ const hasSurfaceManifest = fs.existsSync(path.join(absoluteRoot, "tsonic.surface.json"));
61
+ const shouldTraverseDependencies = forceDependencyTraversal ||
62
+ discoveredClrBindingsInPackage ||
63
+ hasBindingsManifest ||
64
+ hasSurfaceManifest;
65
+ const packageJsonPath = path.join(absoluteRoot, "package.json");
66
+ if (!shouldTraverseDependencies || !fs.existsSync(packageJsonPath)) {
67
+ return;
68
+ }
69
+ try {
70
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
71
+ const dependencyNames = new Set();
72
+ const dependencyBuckets = [
73
+ packageJson.dependencies,
74
+ packageJson.optionalDependencies,
75
+ packageJson.peerDependencies,
76
+ ];
77
+ for (const bucket of dependencyBuckets) {
78
+ if (bucket !== null &&
79
+ typeof bucket === "object" &&
80
+ !Array.isArray(bucket)) {
81
+ for (const depName of Object.keys(bucket)) {
82
+ dependencyNames.add(depName);
83
+ }
84
+ }
85
+ }
86
+ for (const depName of dependencyNames) {
87
+ const dependencyRoot = resolveDependencyPackageRoot(absoluteRoot, depName);
88
+ if (dependencyRoot) {
89
+ loadMetadataFromPackage(registry, dependencyRoot, visited, false);
90
+ }
91
+ }
92
+ }
93
+ catch {
94
+ // Ignore unreadable or invalid package manifests.
95
+ }
96
+ };
27
97
  /**
28
98
  * Load .NET semantic info from configured type roots.
29
99
  *
@@ -32,22 +102,9 @@ const scanForBindingsFiles = (dir) => {
32
102
  */
33
103
  export const loadDotnetMetadata = (typeRoots) => {
34
104
  const registry = new DotnetMetadataRegistry();
35
- // Scan all type roots for bindings.json manifests
105
+ const visited = new Set();
36
106
  for (const typeRoot of typeRoots) {
37
- const absoluteRoot = path.resolve(typeRoot);
38
- const bindingsFiles = scanForBindingsFiles(absoluteRoot);
39
- for (const bindingsPath of bindingsFiles) {
40
- try {
41
- const content = fs.readFileSync(bindingsPath, "utf-8");
42
- const bindingsFile = JSON.parse(content);
43
- registry.loadBindingsFile(bindingsPath, bindingsFile);
44
- }
45
- catch (err) {
46
- // Silently skip files that can't be read or parsed
47
- // In production, we might want to emit a warning diagnostic
48
- console.warn(`Failed to load bindings from ${bindingsPath}:`, err);
49
- }
50
- }
107
+ loadMetadataFromPackage(registry, typeRoot, visited, true);
51
108
  }
52
109
  return registry;
53
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/program/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAqB,EAAE;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA4B,EACJ,EAAE;IAC1B,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAE9C,kDAAkD;IAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEzD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA0B,CAAC;gBAClE,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,mDAAmD;gBACnD,4DAA4D;gBAC5D,OAAO,CAAC,IAAI,CAAC,gCAAgC,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/program/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=metadata.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.test.d.ts","sourceRoot":"","sources":["../../src/program/metadata.test.ts"],"names":[],"mappings":""}