@tsonic/frontend 0.0.63 → 0.0.65

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 (144) 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 +4 -31
  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 +224 -0
  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 +7 -4
  29. package/dist/ir/builder/imports.js.map +1 -1
  30. package/dist/ir/builder.test.js +193 -0
  31. package/dist/ir/builder.test.js.map +1 -1
  32. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/access/binding-resolution.js +55 -14
  34. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
  35. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -1
  36. package/dist/ir/converters/expressions/access/member-resolution.js +5 -0
  37. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -1
  38. package/dist/ir/converters/expressions/calls/call-converter.js +3 -3
  39. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -1
  40. package/dist/ir/program-context.d.ts +5 -0
  41. package/dist/ir/program-context.d.ts.map +1 -1
  42. package/dist/ir/program-context.js +1 -0
  43. package/dist/ir/program-context.js.map +1 -1
  44. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  45. package/dist/ir/type-system/internal/type-converter/orchestrator.js +12 -5
  46. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  47. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  48. package/dist/ir/type-system/internal/type-converter/references.js +6 -9
  49. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  50. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -1
  51. package/dist/ir/type-system/internal/universe/clr-type-parser.js +66 -0
  52. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -1
  53. package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts +2 -0
  54. package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts.map +1 -0
  55. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js +55 -0
  56. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js.map +1 -0
  57. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -1
  58. package/dist/ir/type-system/type-system-call-resolution.js +109 -3
  59. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -1
  60. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
  61. package/dist/ir/type-system/type-system-inference.js +38 -0
  62. package/dist/ir/type-system/type-system-inference.js.map +1 -1
  63. package/dist/ir/type-system/type-system-state.d.ts.map +1 -1
  64. package/dist/ir/type-system/type-system-state.js +33 -17
  65. package/dist/ir/type-system/type-system-state.js.map +1 -1
  66. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  67. package/dist/ir/type-system/type-system.js.map +1 -1
  68. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  69. package/dist/ir/validation/anonymous-type-lowering-pass.js +34 -0
  70. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  71. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts +2 -0
  72. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts.map +1 -0
  73. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js +121 -0
  74. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js.map +1 -0
  75. package/dist/ir/validation/numeric-invariants.test.js +29 -0
  76. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  77. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  78. package/dist/ir/validation/numeric-proof-pass.js +21 -0
  79. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  80. package/dist/program/binding-loader.d.ts +3 -3
  81. package/dist/program/binding-loader.d.ts.map +1 -1
  82. package/dist/program/binding-loader.js +47 -23
  83. package/dist/program/binding-loader.js.map +1 -1
  84. package/dist/program/binding-registry.d.ts +7 -0
  85. package/dist/program/binding-registry.d.ts.map +1 -1
  86. package/dist/program/binding-registry.js +52 -1
  87. package/dist/program/binding-registry.js.map +1 -1
  88. package/dist/program/bindings.test.js +168 -0
  89. package/dist/program/bindings.test.js.map +1 -1
  90. package/dist/program/creation.d.ts.map +1 -1
  91. package/dist/program/creation.js +337 -77
  92. package/dist/program/creation.js.map +1 -1
  93. package/dist/program/creation.test.js +312 -1
  94. package/dist/program/creation.test.js.map +1 -1
  95. package/dist/program/diagnostics.d.ts +1 -1
  96. package/dist/program/diagnostics.d.ts.map +1 -1
  97. package/dist/program/diagnostics.js +47 -2
  98. package/dist/program/diagnostics.js.map +1 -1
  99. package/dist/program/diagnostics.test.d.ts +2 -0
  100. package/dist/program/diagnostics.test.d.ts.map +1 -0
  101. package/dist/program/diagnostics.test.js +58 -0
  102. package/dist/program/diagnostics.test.js.map +1 -0
  103. package/dist/program/metadata.d.ts.map +1 -1
  104. package/dist/program/metadata.js +8 -2
  105. package/dist/program/metadata.js.map +1 -1
  106. package/dist/program/types.d.ts +2 -0
  107. package/dist/program/types.d.ts.map +1 -1
  108. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  109. package/dist/resolver/clr-bindings-resolver.js +42 -4
  110. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  111. package/dist/resolver/import-resolution.d.ts.map +1 -1
  112. package/dist/resolver/import-resolution.js +6 -5
  113. package/dist/resolver/import-resolution.js.map +1 -1
  114. package/dist/resolver.test.js +75 -0
  115. package/dist/resolver.test.js.map +1 -1
  116. package/dist/surface/profiles.d.ts +13 -0
  117. package/dist/surface/profiles.d.ts.map +1 -0
  118. package/dist/surface/profiles.js +214 -0
  119. package/dist/surface/profiles.js.map +1 -0
  120. package/dist/surface/profiles.test.d.ts +2 -0
  121. package/dist/surface/profiles.test.d.ts.map +1 -0
  122. package/dist/surface/profiles.test.js +125 -0
  123. package/dist/surface/profiles.test.js.map +1 -0
  124. package/dist/validation/features.d.ts.map +1 -1
  125. package/dist/validation/features.js +1 -23
  126. package/dist/validation/features.js.map +1 -1
  127. package/dist/validation/features.test.js +4 -4
  128. package/dist/validation/features.test.js.map +1 -1
  129. package/dist/validation/imports.d.ts.map +1 -1
  130. package/dist/validation/imports.js +19 -5
  131. package/dist/validation/imports.js.map +1 -1
  132. package/dist/validation/imports.test.js +112 -5
  133. package/dist/validation/imports.test.js.map +1 -1
  134. package/dist/validator.maximus.test.js +4 -5
  135. package/dist/validator.maximus.test.js.map +1 -1
  136. package/package.json +2 -2
  137. package/dist/ir/converters/context.d.ts +0 -40
  138. package/dist/ir/converters/context.d.ts.map +0 -1
  139. package/dist/ir/converters/context.js +0 -25
  140. package/dist/ir/converters/context.js.map +0 -1
  141. package/dist/validation/unsupported-utility-types.d.ts +0 -40
  142. package/dist/validation/unsupported-utility-types.d.ts.map +0 -1
  143. package/dist/validation/unsupported-utility-types.js +0 -43
  144. package/dist/validation/unsupported-utility-types.js.map +0 -1
@@ -13,6 +13,226 @@ import { loadBindings } from "./bindings.js";
13
13
  import { collectTsDiagnostics } from "./diagnostics.js";
14
14
  import { createClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
15
15
  import { createBinding } from "../ir/binding/index.js";
16
+ import { resolveSurfaceCapabilities } from "../surface/profiles.js";
17
+ const CORE_GLOBALS_DECLARATIONS = `
18
+ declare global {
19
+ class Error {
20
+ name: string;
21
+ message: string;
22
+ stack?: string;
23
+ constructor(message?: string);
24
+ }
25
+
26
+ interface Function {
27
+ prototype: any;
28
+ }
29
+
30
+ interface CallableFunction extends Function {}
31
+ interface NewableFunction extends Function {}
32
+ interface IArguments {}
33
+ interface RegExp {}
34
+ interface ImportMeta {}
35
+
36
+ interface String {}
37
+ interface Number {}
38
+ interface Boolean {}
39
+
40
+ interface Object {
41
+ constructor: Function;
42
+ }
43
+
44
+ interface SymbolConstructor {
45
+ readonly iterator: symbol;
46
+ readonly asyncIterator: symbol;
47
+ readonly hasInstance: symbol;
48
+ readonly isConcatSpreadable: symbol;
49
+ readonly species: symbol;
50
+ readonly toPrimitive: symbol;
51
+ readonly toStringTag: symbol;
52
+ }
53
+
54
+ const Symbol: SymbolConstructor;
55
+
56
+ type PropertyKey = string | number | symbol;
57
+
58
+ interface Array<T> {
59
+ [n: number]: T;
60
+ readonly length: number;
61
+ [Symbol.iterator](): IterableIterator<T>;
62
+ }
63
+
64
+ interface ReadonlyArray<T> {
65
+ readonly [n: number]: T;
66
+ readonly length: number;
67
+ [Symbol.iterator](): IterableIterator<T>;
68
+ }
69
+
70
+ interface ArrayConstructor {
71
+ new <T>(size?: number): T[];
72
+ }
73
+
74
+ const Array: ArrayConstructor;
75
+
76
+ type Partial<T> = { [P in keyof T]?: T[P] };
77
+ type Required<T> = { [P in keyof T]-?: T[P] };
78
+ type Readonly<T> = { readonly [P in keyof T]: T[P] };
79
+ type Pick<T, K extends keyof T> = { [P in K]: T[P] };
80
+ type Record<K extends keyof any, T> = { [P in K]: T };
81
+ type Exclude<T, U> = T extends U ? never : T;
82
+ type Extract<T, U> = T extends U ? T : never;
83
+ type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
84
+ type NonNullable<T> = T extends null | undefined ? never : T;
85
+ type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;
86
+ type ConstructorParameters<T extends new (...args: any) => any> = T extends new (...args: infer P) => any ? P : never;
87
+ type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
88
+ type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;
89
+ type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T;
90
+
91
+ interface Promise<T> {
92
+ then<TResult1 = T, TResult2 = never>(
93
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
94
+ onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null
95
+ ): Promise<TResult1 | TResult2>;
96
+ catch<TResult = never>(
97
+ onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null
98
+ ): Promise<T | TResult>;
99
+ finally(onfinally?: (() => void) | undefined | null): Promise<T>;
100
+ }
101
+
102
+ interface PromiseLike<T> {
103
+ then<TResult1 = T, TResult2 = never>(
104
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
105
+ onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null
106
+ ): PromiseLike<TResult1 | TResult2>;
107
+ }
108
+
109
+ interface PromiseConstructor {
110
+ new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
111
+ resolve(): Promise<void>;
112
+ resolve<T>(value: T | PromiseLike<T>): Promise<T>;
113
+ reject<T = never>(reason?: any): Promise<T>;
114
+ all<T>(values: readonly (T | PromiseLike<T>)[]): Promise<T[]>;
115
+ race<T>(values: readonly (T | PromiseLike<T>)[]): Promise<T>;
116
+ }
117
+
118
+ const Promise: PromiseConstructor;
119
+
120
+ interface Iterator<T, TReturn = any, TNext = undefined> {
121
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
122
+ return?(value?: TReturn): IteratorResult<T, TReturn>;
123
+ throw?(e?: any): IteratorResult<T, TReturn>;
124
+ }
125
+
126
+ interface IteratorResult<T, TReturn = any> {
127
+ done: boolean;
128
+ value: T | TReturn;
129
+ }
130
+
131
+ interface IteratorYieldResult<T> {
132
+ done: false;
133
+ value: T;
134
+ }
135
+
136
+ interface IteratorReturnResult<TReturn> {
137
+ done: true;
138
+ value: TReturn;
139
+ }
140
+
141
+ interface Iterable<T, TReturn = any, TNext = undefined> {
142
+ [Symbol.iterator](): Iterator<T, TReturn, TNext>;
143
+ }
144
+
145
+ interface IterableIterator<T, TReturn = any, TNext = undefined>
146
+ extends Iterator<T, TReturn, TNext> {
147
+ [Symbol.iterator](): IterableIterator<T, TReturn, TNext>;
148
+ }
149
+
150
+ interface AsyncIterator<T, TReturn = any, TNext = undefined> {
151
+ next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
152
+ return?(value?: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
153
+ throw?(e?: any): Promise<IteratorResult<T, TReturn>>;
154
+ }
155
+
156
+ interface AsyncIterable<T, TReturn = any, TNext = undefined> {
157
+ [Symbol.asyncIterator](): AsyncIterator<T, TReturn, TNext>;
158
+ }
159
+
160
+ interface AsyncIterableIterator<T, TReturn = any, TNext = undefined>
161
+ extends AsyncIterator<T, TReturn, TNext> {
162
+ [Symbol.asyncIterator](): AsyncIterableIterator<T, TReturn, TNext>;
163
+ }
164
+
165
+ interface Generator<T = unknown, TReturn = any, TNext = unknown>
166
+ extends Iterator<T, TReturn, TNext> {
167
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
168
+ return(value: TReturn): IteratorResult<T, TReturn>;
169
+ throw(e: any): IteratorResult<T, TReturn>;
170
+ [Symbol.iterator](): Generator<T, TReturn, TNext>;
171
+ }
172
+
173
+ interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown>
174
+ extends AsyncIterator<T, TReturn, TNext> {
175
+ next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
176
+ return(value: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
177
+ throw(e: any): Promise<IteratorResult<T, TReturn>>;
178
+ [Symbol.asyncIterator](): AsyncGenerator<T, TReturn, TNext>;
179
+ }
180
+
181
+ interface TemplateStringsArray extends ReadonlyArray<string> {
182
+ readonly raw: readonly string[];
183
+ }
184
+
185
+ type Uppercase<S extends string> = intrinsic;
186
+ type Lowercase<S extends string> = intrinsic;
187
+ type Capitalize<S extends string> = intrinsic;
188
+ type Uncapitalize<S extends string> = intrinsic;
189
+ }
190
+
191
+ export {};
192
+ `.trim();
193
+ const CLR_GLOBALS_DECLARATIONS = `
194
+ import type { char } from "@tsonic/core/types.js";
195
+ import {
196
+ Array$instance, __Array$views,
197
+ String$instance, __String$views,
198
+ Double$instance, __Double$views,
199
+ Boolean$instance, __Boolean$views,
200
+ Object$instance
201
+ } from "@tsonic/dotnet/System/internal/index.js";
202
+ import type { IEnumerator } from "@tsonic/dotnet/System.Collections.js";
203
+ import type {
204
+ IEnumerable,
205
+ IEnumerator as IEnumeratorT
206
+ } from "@tsonic/dotnet/System.Collections.Generic.js";
207
+
208
+ declare global {
209
+ interface Array<T> extends Array$instance, __Array$views, IEnumerable<T> {
210
+ [n: number]: T;
211
+ [Symbol.iterator](): IterableIterator<T>;
212
+ GetEnumerator(): IEnumeratorT<T>;
213
+ }
214
+
215
+ interface ReadonlyArray<T> extends Array$instance, __Array$views, IEnumerable<T> {
216
+ readonly [n: number]: T;
217
+ [Symbol.iterator](): IterableIterator<T>;
218
+ GetEnumerator(): IEnumeratorT<T>;
219
+ }
220
+
221
+ interface ArrayConstructor {
222
+ new <T>(size?: number): T[];
223
+ }
224
+
225
+ interface String extends String$instance, __String$views {
226
+ readonly [index: number]: char;
227
+ }
228
+
229
+ interface Number extends Double$instance, __Double$views {}
230
+ interface Boolean extends Boolean$instance, __Boolean$views {}
231
+ interface Object extends Object$instance {}
232
+ }
233
+
234
+ export {};
235
+ `.trim();
16
236
  /**
17
237
  * Recursively scan a directory for .d.ts files
18
238
  */
@@ -45,14 +265,13 @@ const scanForDeclarationFiles = (dir) => {
45
265
  * Exported for use by dependency graph builder
46
266
  */
47
267
  export const createCompilerOptions = (options) => {
268
+ const surfaceCapabilities = resolveSurfaceCapabilities(options.surface ?? "clr", { projectRoot: options.projectRoot });
48
269
  const baseConfig = {
49
270
  ...defaultTsConfig,
50
271
  ...(options.strict === undefined ? {} : { strict: options.strict }),
51
272
  rootDir: options.sourceRoot,
52
273
  };
53
- // When useStandardLib is true, disable noLib to use TypeScript's built-in types
54
- // This is useful for tests that don't have access to BCL bindings
55
- if (options.useStandardLib) {
274
+ if (options.useStandardLib || surfaceCapabilities.useStandardLib) {
56
275
  return {
57
276
  ...baseConfig,
58
277
  noLib: false,
@@ -65,25 +284,65 @@ export const createCompilerOptions = (options) => {
65
284
  * Create a Tsonic program from TypeScript source files
66
285
  */
67
286
  export const createProgram = (filePaths, options) => {
287
+ const surface = options.surface ?? "clr";
288
+ const surfaceCapabilities = resolveSurfaceCapabilities(surface, {
289
+ projectRoot: options.projectRoot,
290
+ });
68
291
  const absolutePaths = filePaths.map((fp) => path.resolve(fp));
69
292
  const compilerContainingFile = fileURLToPath(import.meta.url);
70
293
  // creation.ts lives at: <repoRoot>/packages/frontend/src/program/creation.ts
71
294
  // repoRoot is 4 levels up from this file's directory.
72
295
  const repoRoot = path.resolve(path.join(path.dirname(compilerContainingFile), "../../../.."));
73
296
  const require = createRequire(import.meta.url);
74
- const resolveTsonicPackageRoot = (pkgDirName) => {
75
- const siblingRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
76
- const pkgJson = path.join(siblingRoot, "package.json");
77
- if (fs.existsSync(pkgJson)) {
78
- try {
79
- const parsed = JSON.parse(fs.readFileSync(pkgJson, "utf-8"));
80
- if (parsed.name === `@tsonic/${pkgDirName}`)
81
- return siblingRoot;
82
- }
83
- catch {
84
- // Ignore invalid package.json.
85
- }
297
+ const readPackageName = (pkgJsonPath) => {
298
+ if (!fs.existsSync(pkgJsonPath))
299
+ return undefined;
300
+ try {
301
+ const parsed = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
302
+ return typeof parsed.name === "string" ? parsed.name : undefined;
303
+ }
304
+ catch {
305
+ return undefined;
86
306
  }
307
+ };
308
+ const resolveSiblingTsonicPackageRoot = (pkgDirName) => {
309
+ const expectedName = `@tsonic/${pkgDirName}`;
310
+ const siblingRepoRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
311
+ const repoPackageName = readPackageName(path.join(siblingRepoRoot, "package.json"));
312
+ if (repoPackageName === expectedName)
313
+ return siblingRepoRoot;
314
+ const versionsRoot = path.join(siblingRepoRoot, "versions");
315
+ if (!fs.existsSync(versionsRoot))
316
+ return undefined;
317
+ const versionDirs = fs
318
+ .readdirSync(versionsRoot, { withFileTypes: true })
319
+ .filter((entry) => entry.isDirectory())
320
+ .map((entry) => entry.name)
321
+ .sort((left, right) => {
322
+ const leftNum = Number.parseInt(left, 10);
323
+ const rightNum = Number.parseInt(right, 10);
324
+ const leftIsNum = Number.isFinite(leftNum);
325
+ const rightIsNum = Number.isFinite(rightNum);
326
+ if (leftIsNum && rightIsNum)
327
+ return rightNum - leftNum;
328
+ if (leftIsNum)
329
+ return -1;
330
+ if (rightIsNum)
331
+ return 1;
332
+ return right.localeCompare(left);
333
+ });
334
+ for (const versionDir of versionDirs) {
335
+ const candidateRoot = path.join(versionsRoot, versionDir);
336
+ const candidateName = readPackageName(path.join(candidateRoot, "package.json"));
337
+ if (candidateName === expectedName)
338
+ return candidateRoot;
339
+ }
340
+ return undefined;
341
+ };
342
+ const resolveTsonicPackageRoot = (pkgDirName) => {
343
+ const siblingRoot = resolveSiblingTsonicPackageRoot(pkgDirName);
344
+ if (siblingRoot)
345
+ return siblingRoot;
87
346
  // Fall back to compiler-owned installation (keeps stdlib typings coherent)
88
347
  try {
89
348
  const installedPkgJson = require.resolve(`@tsonic/${pkgDirName}/package.json`);
@@ -94,35 +353,36 @@ export const createProgram = (filePaths, options) => {
94
353
  }
95
354
  return undefined;
96
355
  };
97
- // Mandatory, compiler-owned type root (never optional).
98
- // Prefer sibling checkout (dev) or fall back to installed package.
99
- const mandatoryTypeRoot = resolveTsonicPackageRoot("globals");
100
- // Get declaration files from type roots
101
- // Inject mandatory type root first, then user-provided roots
356
+ // Get declaration files from type roots.
102
357
  const userTypeRoots = options.typeRoots ?? [];
103
- const resolvedUserTypeRoots = userTypeRoots.map((typeRoot) => {
358
+ const requestedTypeRoots = Array.from(new Set([
359
+ ...userTypeRoots,
360
+ ...surfaceCapabilities.requiredTypeRoots,
361
+ ]));
362
+ const resolvedRequestedTypeRoots = requestedTypeRoots.map((typeRoot) => {
104
363
  const absoluteRoot = path.isAbsolute(typeRoot)
105
364
  ? typeRoot
106
365
  : path.resolve(options.projectRoot, typeRoot);
107
- if (fs.existsSync(absoluteRoot))
108
- return absoluteRoot;
109
- // If the typeRoot points at a missing @tsonic package under node_modules,
110
- // try to resolve it from the compiler install or a sibling checkout.
366
+ // For @tsonic/* type roots, prefer compiler-owned package roots (sibling
367
+ // checkout or compiler installation) so the active compiler and language
368
+ // surfaces stay coherent during development and test runs.
369
+ //
370
+ // If no compiler-owned package is available, fall back to the project's
371
+ // resolved node_modules path.
111
372
  const match = typeRoot.match(/(?:^|[/\\\\])node_modules[/\\\\]@tsonic[/\\\\]([^/\\\\]+)[/\\\\]?$/);
112
- if (!match)
113
- return absoluteRoot;
114
- const pkgDirName = match[1];
115
- if (!pkgDirName)
373
+ if (match) {
374
+ const pkgDirName = match[1];
375
+ if (pkgDirName) {
376
+ const compilerOwned = resolveTsonicPackageRoot(pkgDirName);
377
+ if (compilerOwned)
378
+ return compilerOwned;
379
+ }
380
+ }
381
+ if (fs.existsSync(absoluteRoot))
116
382
  return absoluteRoot;
117
- return resolveTsonicPackageRoot(pkgDirName) ?? absoluteRoot;
383
+ return absoluteRoot;
118
384
  });
119
- const typeRoots = options.useStandardLib
120
- ? resolvedUserTypeRoots
121
- : mandatoryTypeRoot
122
- ? Array.from(new Set([mandatoryTypeRoot, ...resolvedUserTypeRoots]))
123
- : resolvedUserTypeRoots.length > 0
124
- ? resolvedUserTypeRoots
125
- : ["node_modules/@tsonic/globals"];
385
+ const typeRoots = resolvedRequestedTypeRoots;
126
386
  // Debug log typeRoots
127
387
  if (options.verbose && typeRoots.length > 0) {
128
388
  console.log(`TypeRoots: ${typeRoots.join(", ")}`);
@@ -156,16 +416,41 @@ export const createProgram = (filePaths, options) => {
156
416
  }
157
417
  }
158
418
  }
159
- // Combine source files, declaration files, and namespace index files
160
- // Note: globals.d.ts should be in the BCL bindings directory (typeRoots)
419
+ const coreGlobalsVirtualPath = path.join(options.projectRoot, ".tsonic", "__core_globals__.d.ts");
420
+ const clrGlobalsVirtualPath = path.join(options.projectRoot, ".tsonic", "__clr_globals__.d.ts");
421
+ const virtualDeclarationSources = new Map([
422
+ [path.resolve(coreGlobalsVirtualPath), CORE_GLOBALS_DECLARATIONS],
423
+ ]);
424
+ if (surfaceCapabilities.includesClr) {
425
+ virtualDeclarationSources.set(path.resolve(clrGlobalsVirtualPath), CLR_GLOBALS_DECLARATIONS);
426
+ }
427
+ const virtualDeclarationFiles = Array.from(virtualDeclarationSources.keys());
428
+ // Combine source files, declaration files, namespace index files, and
429
+ // compiler-owned virtual declarations.
161
430
  const allFiles = [
162
431
  ...absolutePaths,
163
432
  ...declarationFiles,
164
433
  ...namespaceIndexFiles,
434
+ ...virtualDeclarationFiles,
165
435
  ];
166
436
  const tsOptions = createCompilerOptions(options);
167
437
  // Create custom compiler host with virtual .NET module declarations
168
438
  const host = ts.createCompilerHost(tsOptions);
439
+ const normalizeVirtualFilePath = (filePath) => path.resolve(filePath);
440
+ const getVirtualDeclarationText = (filePath) => virtualDeclarationSources.get(normalizeVirtualFilePath(filePath));
441
+ const originalFileExists = host.fileExists;
442
+ host.fileExists = (fileName) => {
443
+ if (getVirtualDeclarationText(fileName) !== undefined)
444
+ return true;
445
+ return originalFileExists(fileName);
446
+ };
447
+ const originalReadFile = host.readFile;
448
+ host.readFile = (fileName) => {
449
+ const virtualText = getVirtualDeclarationText(fileName);
450
+ if (virtualText !== undefined)
451
+ return virtualText;
452
+ return originalReadFile(fileName);
453
+ };
169
454
  // Map of .NET namespace names to their declaration file paths
170
455
  const namespaceFiles = new Map();
171
456
  for (const indexFile of namespaceIndexFiles) {
@@ -183,6 +468,10 @@ export const createProgram = (filePaths, options) => {
183
468
  // Override getSourceFile to provide virtual module declarations
184
469
  const originalGetSourceFile = host.getSourceFile;
185
470
  host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
471
+ const virtualText = getVirtualDeclarationText(fileName);
472
+ if (virtualText !== undefined) {
473
+ return ts.createSourceFile(fileName, virtualText, languageVersion, true);
474
+ }
186
475
  // Check if this is a .NET namespace being imported
187
476
  const baseName = path.basename(fileName, path.extname(fileName));
188
477
  const declarationPath = namespaceFiles.get(baseName);
@@ -232,7 +521,9 @@ export const createProgram = (filePaths, options) => {
232
521
  const subpath = match[2];
233
522
  if (!pkgDirName || !subpath)
234
523
  return undefined;
235
- const siblingRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
524
+ const siblingRoot = resolveSiblingTsonicPackageRoot(pkgDirName);
525
+ if (!siblingRoot)
526
+ return undefined;
236
527
  const jsPath = path.join(siblingRoot, subpath);
237
528
  const dtsPath = jsPath.endsWith(".js")
238
529
  ? jsPath.replace(/\.js$/, ".d.ts")
@@ -273,45 +564,14 @@ export const createProgram = (filePaths, options) => {
273
564
  const sourceFiles = program
274
565
  .getSourceFiles()
275
566
  .filter((sf) => !sf.isDeclarationFile && absolutePaths.includes(sf.fileName));
276
- // Declaration files for TypeRegistry - include all @tsonic/* package declarations
277
- // This includes:
278
- // - @tsonic/globals (globals like String, Array, Promise)
279
- // - @tsonic/dotnet (BCL type definitions like String$instance, Array$instance)
280
- // - @tsonic/core (type aliases like int, long, etc.)
281
- // - Any other @tsonic/* dependencies
282
- // We need all of these for proper heritage chain resolution (e.g., String extends String$instance)
283
- const packageRootCache = new Map();
284
- const isInTsonicPackage = (filePath) => {
285
- let dir = path.dirname(filePath);
286
- while (true) {
287
- const cached = packageRootCache.get(dir);
288
- if (cached !== undefined)
289
- return cached;
290
- const pkgJson = path.join(dir, "package.json");
291
- if (fs.existsSync(pkgJson)) {
292
- try {
293
- const parsed = JSON.parse(fs.readFileSync(pkgJson, "utf-8"));
294
- const ok = typeof parsed.name === "string" &&
295
- parsed.name.startsWith("@tsonic/");
296
- packageRootCache.set(dir, ok);
297
- return ok;
298
- }
299
- catch {
300
- packageRootCache.set(dir, false);
301
- return false;
302
- }
303
- }
304
- const parent = path.dirname(dir);
305
- if (parent === dir) {
306
- packageRootCache.set(dir, false);
307
- return false;
308
- }
309
- dir = parent;
310
- }
311
- };
567
+ // Declaration files for TypeRegistry:
568
+ // include all declarations in the program. ProgramContext later filters out
569
+ // CLR metadata packages that are represented in the CLR catalog.
570
+ // This keeps surface support generic: custom non-@tsonic surface packages are
571
+ // available to the frontend without any package-name allowlist.
312
572
  const declarationSourceFiles = program
313
573
  .getSourceFiles()
314
- .filter((sf) => sf.isDeclarationFile && isInTsonicPackage(sf.fileName));
574
+ .filter((sf) => sf.isDeclarationFile);
315
575
  // Load .NET metadata files
316
576
  const metadata = loadDotnetMetadata(typeRoots);
317
577
  // Load binding manifests (from typeRoots - for ambient globals)
@@ -1 +1 @@
1
- {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"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"}