@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
@@ -14,9 +14,182 @@ 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
16
  import { resolveSurfaceCapabilities } from "../surface/profiles.js";
17
- import { JS_SURFACE_GLOBALS_SHIMS, JS_SURFACE_NODE_MODULE_SHIMS, } from "../surface/js-surface-shims.js";
18
- const JS_SURFACE_GLOBALS_SHIM_FILE = "__tsonic_surface_globals__.d.ts";
19
- const JS_SURFACE_NODE_SHIM_FILE = "__tsonic_surface_node_modules__.d.ts";
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();
20
193
  /**
21
194
  * Recursively scan a directory for .d.ts files
22
195
  */
@@ -38,7 +211,8 @@ const scanForDeclarationFiles = (dir) => {
38
211
  }
39
212
  results.push(...scanForDeclarationFiles(fullPath));
40
213
  }
41
- else if (entry.name.endsWith(".d.ts")) {
214
+ else if (entry.name.endsWith(".d.ts") &&
215
+ entry.name !== "core-globals.d.ts") {
42
216
  results.push(fullPath);
43
217
  }
44
218
  }
@@ -49,7 +223,7 @@ const scanForDeclarationFiles = (dir) => {
49
223
  * Exported for use by dependency graph builder
50
224
  */
51
225
  export const createCompilerOptions = (options) => {
52
- const surfaceCapabilities = resolveSurfaceCapabilities(options.surface ?? "clr");
226
+ const surfaceCapabilities = resolveSurfaceCapabilities(options.surface ?? "clr", { projectRoot: options.projectRoot });
53
227
  const baseConfig = {
54
228
  ...defaultTsConfig,
55
229
  ...(options.strict === undefined ? {} : { strict: options.strict }),
@@ -69,28 +243,64 @@ export const createCompilerOptions = (options) => {
69
243
  */
70
244
  export const createProgram = (filePaths, options) => {
71
245
  const surface = options.surface ?? "clr";
72
- const surfaceCapabilities = resolveSurfaceCapabilities(surface);
73
- const jsRuntimeSurface = surfaceCapabilities.enableJsBuiltins;
74
- const nodeAliasSurface = surfaceCapabilities.enableNodeModuleAliases;
246
+ const surfaceCapabilities = resolveSurfaceCapabilities(surface, {
247
+ projectRoot: options.projectRoot,
248
+ });
75
249
  const absolutePaths = filePaths.map((fp) => path.resolve(fp));
76
250
  const compilerContainingFile = fileURLToPath(import.meta.url);
77
251
  // creation.ts lives at: <repoRoot>/packages/frontend/src/program/creation.ts
78
252
  // repoRoot is 4 levels up from this file's directory.
79
253
  const repoRoot = path.resolve(path.join(path.dirname(compilerContainingFile), "../../../.."));
80
254
  const require = createRequire(import.meta.url);
81
- const resolveTsonicPackageRoot = (pkgDirName) => {
82
- const siblingRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
83
- const pkgJson = path.join(siblingRoot, "package.json");
84
- if (fs.existsSync(pkgJson)) {
85
- try {
86
- const parsed = JSON.parse(fs.readFileSync(pkgJson, "utf-8"));
87
- if (parsed.name === `@tsonic/${pkgDirName}`)
88
- return siblingRoot;
89
- }
90
- catch {
91
- // Ignore invalid package.json.
92
- }
255
+ const readPackageName = (pkgJsonPath) => {
256
+ if (!fs.existsSync(pkgJsonPath))
257
+ return undefined;
258
+ try {
259
+ const parsed = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
260
+ return typeof parsed.name === "string" ? parsed.name : undefined;
261
+ }
262
+ catch {
263
+ return undefined;
93
264
  }
265
+ };
266
+ const resolveSiblingTsonicPackageRoot = (pkgDirName) => {
267
+ const expectedName = `@tsonic/${pkgDirName}`;
268
+ const siblingRepoRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
269
+ const repoPackageName = readPackageName(path.join(siblingRepoRoot, "package.json"));
270
+ if (repoPackageName === expectedName)
271
+ return siblingRepoRoot;
272
+ const versionsRoot = path.join(siblingRepoRoot, "versions");
273
+ if (!fs.existsSync(versionsRoot))
274
+ return undefined;
275
+ const versionDirs = fs
276
+ .readdirSync(versionsRoot, { withFileTypes: true })
277
+ .filter((entry) => entry.isDirectory())
278
+ .map((entry) => entry.name)
279
+ .sort((left, right) => {
280
+ const leftNum = Number.parseInt(left, 10);
281
+ const rightNum = Number.parseInt(right, 10);
282
+ const leftIsNum = Number.isFinite(leftNum);
283
+ const rightIsNum = Number.isFinite(rightNum);
284
+ if (leftIsNum && rightIsNum)
285
+ return rightNum - leftNum;
286
+ if (leftIsNum)
287
+ return -1;
288
+ if (rightIsNum)
289
+ return 1;
290
+ return right.localeCompare(left);
291
+ });
292
+ for (const versionDir of versionDirs) {
293
+ const candidateRoot = path.join(versionsRoot, versionDir);
294
+ const candidateName = readPackageName(path.join(candidateRoot, "package.json"));
295
+ if (candidateName === expectedName)
296
+ return candidateRoot;
297
+ }
298
+ return undefined;
299
+ };
300
+ const resolveTsonicPackageRoot = (pkgDirName) => {
301
+ const siblingRoot = resolveSiblingTsonicPackageRoot(pkgDirName);
302
+ if (siblingRoot)
303
+ return siblingRoot;
94
304
  // Fall back to compiler-owned installation (keeps stdlib typings coherent)
95
305
  try {
96
306
  const installedPkgJson = require.resolve(`@tsonic/${pkgDirName}/package.json`);
@@ -101,9 +311,6 @@ export const createProgram = (filePaths, options) => {
101
311
  }
102
312
  return undefined;
103
313
  };
104
- // Mandatory, compiler-owned type root (never optional).
105
- // Prefer sibling checkout (dev) or fall back to installed package.
106
- const mandatoryTypeRoot = resolveTsonicPackageRoot("globals");
107
314
  // Get declaration files from type roots.
108
315
  const userTypeRoots = options.typeRoots ?? [];
109
316
  const requestedTypeRoots = Array.from(new Set([
@@ -114,21 +321,26 @@ export const createProgram = (filePaths, options) => {
114
321
  const absoluteRoot = path.isAbsolute(typeRoot)
115
322
  ? typeRoot
116
323
  : path.resolve(options.projectRoot, typeRoot);
117
- if (fs.existsSync(absoluteRoot))
118
- return absoluteRoot;
119
- // If the typeRoot points at a missing @tsonic package under node_modules,
120
- // try to resolve it from the compiler install or a sibling checkout.
324
+ // For @tsonic/* type roots, prefer compiler-owned package roots (sibling
325
+ // checkout or compiler installation) so the active compiler and language
326
+ // surfaces stay coherent during development and test runs.
327
+ //
328
+ // If no compiler-owned package is available, fall back to the project's
329
+ // resolved node_modules path.
121
330
  const match = typeRoot.match(/(?:^|[/\\\\])node_modules[/\\\\]@tsonic[/\\\\]([^/\\\\]+)[/\\\\]?$/);
122
- if (!match)
123
- return absoluteRoot;
124
- const pkgDirName = match[1];
125
- if (!pkgDirName)
331
+ if (match) {
332
+ const pkgDirName = match[1];
333
+ if (pkgDirName) {
334
+ const compilerOwned = resolveTsonicPackageRoot(pkgDirName);
335
+ if (compilerOwned)
336
+ return compilerOwned;
337
+ }
338
+ }
339
+ if (fs.existsSync(absoluteRoot))
126
340
  return absoluteRoot;
127
- return resolveTsonicPackageRoot(pkgDirName) ?? absoluteRoot;
341
+ return absoluteRoot;
128
342
  });
129
- const typeRoots = mandatoryTypeRoot
130
- ? Array.from(new Set([mandatoryTypeRoot, ...resolvedRequestedTypeRoots]))
131
- : resolvedRequestedTypeRoots;
343
+ const typeRoots = resolvedRequestedTypeRoots;
132
344
  // Debug log typeRoots
133
345
  if (options.verbose && typeRoots.length > 0) {
134
346
  console.log(`TypeRoots: ${typeRoots.join(", ")}`);
@@ -162,20 +374,40 @@ export const createProgram = (filePaths, options) => {
162
374
  }
163
375
  }
164
376
  }
165
- // Combine source files, declaration files, and namespace index files
166
- // Note: globals.d.ts should be in the BCL bindings directory (typeRoots)
167
- const syntheticJsSurfaceGlobalsShim = path.resolve(options.projectRoot, JS_SURFACE_GLOBALS_SHIM_FILE);
168
- const syntheticJsSurfaceNodeShim = path.resolve(options.projectRoot, JS_SURFACE_NODE_SHIM_FILE);
377
+ const coreGlobalsVirtualPath = path.join(options.projectRoot, ".tsonic", "__core_globals__.d.ts");
378
+ const virtualDeclarationSources = new Map([
379
+ [path.resolve(coreGlobalsVirtualPath), CORE_GLOBALS_DECLARATIONS],
380
+ ]);
381
+ const virtualDeclarationFiles = Array.from(virtualDeclarationSources.keys());
382
+ // Combine source files, declaration files, namespace index files, and
383
+ // compiler-owned virtual declarations.
169
384
  const allFiles = [
170
385
  ...absolutePaths,
171
386
  ...declarationFiles,
172
387
  ...namespaceIndexFiles,
173
- ...(jsRuntimeSurface ? [syntheticJsSurfaceGlobalsShim] : []),
174
- ...(nodeAliasSurface ? [syntheticJsSurfaceNodeShim] : []),
388
+ ...virtualDeclarationFiles,
175
389
  ];
176
390
  const tsOptions = createCompilerOptions(options);
177
391
  // Create custom compiler host with virtual .NET module declarations
178
392
  const host = ts.createCompilerHost(tsOptions);
393
+ const normalizeVirtualFilePath = (filePath) => path.resolve(filePath);
394
+ const isPackageCoreGlobalsFile = (filePath) => path.basename(filePath) === "core-globals.d.ts";
395
+ const getVirtualDeclarationText = (filePath) => virtualDeclarationSources.get(normalizeVirtualFilePath(filePath));
396
+ const originalFileExists = host.fileExists;
397
+ host.fileExists = (fileName) => {
398
+ if (getVirtualDeclarationText(fileName) !== undefined)
399
+ return true;
400
+ return originalFileExists(fileName);
401
+ };
402
+ const originalReadFile = host.readFile;
403
+ host.readFile = (fileName) => {
404
+ const virtualText = getVirtualDeclarationText(fileName);
405
+ if (virtualText !== undefined)
406
+ return virtualText;
407
+ if (isPackageCoreGlobalsFile(fileName))
408
+ return "export {};\n";
409
+ return originalReadFile(fileName);
410
+ };
179
411
  // Map of .NET namespace names to their declaration file paths
180
412
  const namespaceFiles = new Map();
181
413
  for (const indexFile of namespaceIndexFiles) {
@@ -193,11 +425,12 @@ export const createProgram = (filePaths, options) => {
193
425
  // Override getSourceFile to provide virtual module declarations
194
426
  const originalGetSourceFile = host.getSourceFile;
195
427
  host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
196
- if (jsRuntimeSurface && fileName === syntheticJsSurfaceGlobalsShim) {
197
- return ts.createSourceFile(fileName, JS_SURFACE_GLOBALS_SHIMS, languageVersion, true, ts.ScriptKind.TS);
428
+ const virtualText = getVirtualDeclarationText(fileName);
429
+ if (virtualText !== undefined) {
430
+ return ts.createSourceFile(fileName, virtualText, languageVersion, true);
198
431
  }
199
- if (nodeAliasSurface && fileName === syntheticJsSurfaceNodeShim) {
200
- return ts.createSourceFile(fileName, JS_SURFACE_NODE_MODULE_SHIMS, languageVersion, true, ts.ScriptKind.TS);
432
+ if (isPackageCoreGlobalsFile(fileName)) {
433
+ return ts.createSourceFile(fileName, "export {};\n", languageVersion, true);
201
434
  }
202
435
  // Check if this is a .NET namespace being imported
203
436
  const baseName = path.basename(fileName, path.extname(fileName));
@@ -248,7 +481,9 @@ export const createProgram = (filePaths, options) => {
248
481
  const subpath = match[2];
249
482
  if (!pkgDirName || !subpath)
250
483
  return undefined;
251
- const siblingRoot = path.resolve(path.join(repoRoot, "..", pkgDirName));
484
+ const siblingRoot = resolveSiblingTsonicPackageRoot(pkgDirName);
485
+ if (!siblingRoot)
486
+ return undefined;
252
487
  const jsPath = path.join(siblingRoot, subpath);
253
488
  const dtsPath = jsPath.endsWith(".js")
254
489
  ? jsPath.replace(/\.js$/, ".d.ts")
@@ -289,45 +524,14 @@ export const createProgram = (filePaths, options) => {
289
524
  const sourceFiles = program
290
525
  .getSourceFiles()
291
526
  .filter((sf) => !sf.isDeclarationFile && absolutePaths.includes(sf.fileName));
292
- // Declaration files for TypeRegistry - include all @tsonic/* package declarations
293
- // This includes:
294
- // - @tsonic/globals (globals like String, Array, Promise)
295
- // - @tsonic/dotnet (BCL type definitions like String$instance, Array$instance)
296
- // - @tsonic/core (type aliases like int, long, etc.)
297
- // - Any other @tsonic/* dependencies
298
- // We need all of these for proper heritage chain resolution (e.g., String extends String$instance)
299
- const packageRootCache = new Map();
300
- const isInTsonicPackage = (filePath) => {
301
- let dir = path.dirname(filePath);
302
- while (true) {
303
- const cached = packageRootCache.get(dir);
304
- if (cached !== undefined)
305
- return cached;
306
- const pkgJson = path.join(dir, "package.json");
307
- if (fs.existsSync(pkgJson)) {
308
- try {
309
- const parsed = JSON.parse(fs.readFileSync(pkgJson, "utf-8"));
310
- const ok = typeof parsed.name === "string" &&
311
- parsed.name.startsWith("@tsonic/");
312
- packageRootCache.set(dir, ok);
313
- return ok;
314
- }
315
- catch {
316
- packageRootCache.set(dir, false);
317
- return false;
318
- }
319
- }
320
- const parent = path.dirname(dir);
321
- if (parent === dir) {
322
- packageRootCache.set(dir, false);
323
- return false;
324
- }
325
- dir = parent;
326
- }
327
- };
527
+ // Declaration files for TypeRegistry:
528
+ // include all declarations in the program. ProgramContext later filters out
529
+ // CLR metadata packages that are represented in the CLR catalog.
530
+ // This keeps surface support generic: custom non-@tsonic surface packages are
531
+ // available to the frontend without any package-name allowlist.
328
532
  const declarationSourceFiles = program
329
533
  .getSourceFiles()
330
- .filter((sf) => sf.isDeclarationFile && isInTsonicPackage(sf.fileName));
534
+ .filter((sf) => sf.isDeclarationFile);
331
535
  // Load .NET metadata files
332
536
  const metadata = loadDotnetMetadata(typeRoots);
333
537
  // Load binding manifests (from typeRoots - for ambient globals)
@@ -335,86 +539,13 @@ export const createProgram = (filePaths, options) => {
335
539
  // Compiler-owned builtin: map TS `Error` to CLR `System.Exception`.
336
540
  // This keeps `throw new Error(...)` usable in noLib mode without requiring
337
541
  // consumers to import Exception explicitly.
338
- bindings.addBindings("tsonic:builtins", {
339
- bindings: {
340
- Error: {
341
- kind: "global",
342
- assembly: "System.Private.CoreLib",
343
- type: "System.Exception",
344
- },
345
- },
346
- });
347
- if (jsRuntimeSurface) {
348
- bindings.addBindings("tsonic:js-surface-builtins", {
542
+ if (!bindings.getBinding("Error")) {
543
+ bindings.addBindings("tsonic:builtins", {
349
544
  bindings: {
350
- console: {
351
- kind: "global",
352
- assembly: "Tsonic.JSRuntime",
353
- type: "Tsonic.JSRuntime.console",
354
- },
355
- Math: {
356
- kind: "global",
357
- assembly: "Tsonic.JSRuntime",
358
- type: "Tsonic.JSRuntime.Math",
359
- },
360
- JSON: {
361
- kind: "global",
362
- assembly: "Tsonic.JSRuntime",
363
- type: "Tsonic.JSRuntime.JSON",
364
- },
365
- Date: {
366
- kind: "global",
367
- assembly: "Tsonic.JSRuntime",
368
- type: "Tsonic.JSRuntime.Date",
369
- },
370
- RegExp: {
371
- kind: "global",
372
- assembly: "Tsonic.JSRuntime",
373
- type: "Tsonic.JSRuntime.RegExp",
374
- },
375
- Map: {
376
- kind: "global",
377
- assembly: "Tsonic.JSRuntime",
378
- type: "Tsonic.JSRuntime.Map",
379
- },
380
- Set: {
381
- kind: "global",
382
- assembly: "Tsonic.JSRuntime",
383
- type: "Tsonic.JSRuntime.Set",
384
- },
385
- WeakMap: {
386
- kind: "global",
387
- assembly: "Tsonic.JSRuntime",
388
- type: "Tsonic.JSRuntime.WeakMap",
389
- },
390
- WeakSet: {
391
- kind: "global",
392
- assembly: "Tsonic.JSRuntime",
393
- type: "Tsonic.JSRuntime.WeakSet",
394
- },
395
- parseInt: {
396
- kind: "global",
397
- assembly: "Tsonic.JSRuntime",
398
- type: "Tsonic.JSRuntime.Globals",
399
- csharpName: "Globals.parseInt",
400
- },
401
- parseFloat: {
402
- kind: "global",
403
- assembly: "Tsonic.JSRuntime",
404
- type: "Tsonic.JSRuntime.Globals",
405
- csharpName: "Globals.parseFloat",
406
- },
407
- isFinite: {
408
- kind: "global",
409
- assembly: "Tsonic.JSRuntime",
410
- type: "Tsonic.JSRuntime.Globals",
411
- csharpName: "Globals.isFinite",
412
- },
413
- isNaN: {
545
+ Error: {
414
546
  kind: "global",
415
- assembly: "Tsonic.JSRuntime",
416
- type: "Tsonic.JSRuntime.Globals",
417
- csharpName: "Globals.isNaN",
547
+ assembly: "System.Private.CoreLib",
548
+ type: "System.Exception",
418
549
  },
419
550
  },
420
551
  });
@@ -1 +1 @@
1
- {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAU,EAAE,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,MAAM,4BAA4B,GAAG,iCAAiC,CAAC;AACvE,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;AAEzE;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAqB,EAAE;IACjE,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,uEAAuE;YACvE,2EAA2E;YAC3E,qEAAqE;YACrE,iFAAiF;YACjF,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAwB,EACJ,EAAE;IACtB,MAAM,mBAAmB,GAAG,0BAA0B,CACpD,OAAO,CAAC,OAAO,IAAI,KAAK,CACzB,CAAC;IACF,MAAM,UAAU,GAAuB;QACrC,GAAG,eAAe;QAClB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,EAAE,OAAO,CAAC,UAAU;KAC5B,CAAC;IAEF,IAAI,OAAO,CAAC,cAAc,IAAI,mBAAmB,CAAC,cAAc,EAAE,CAAC;QACjE,OAAO;YACL,GAAG,UAAU;YACb,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,SAAS,EAAE,8BAA8B;SACjD,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAA4B,EAC5B,OAAwB,EACqB,EAAE;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;IAC9D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,uBAAuB,CAAC;IACrE,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,aAAa,CAAC,CAC/D,CAAC;IAEF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/C,MAAM,wBAAwB,GAAG,CAAC,UAAkB,EAAsB,EAAE;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1D,CAAC;gBACF,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,UAAU,EAAE;oBAAE,OAAO,WAAW,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CACtC,WAAW,UAAU,eAAe,CACrC,CAAC;YACF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,wDAAwD;IACxD,mEAAmE;IACnE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAE9D,yCAAyC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC9C,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CACnC,IAAI,GAAG,CAAS;QACd,GAAG,aAAa;QAChB,GAAG,mBAAmB,CAAC,iBAAiB;KACzC,CAAC,CACH,CAAC;IACF,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QAErD,0EAA0E;QAC1E,qEAAqE;QACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAC1B,oEAAoE,CACrE,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,YAAY,CAAC;QAEhC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU;YAAE,OAAO,YAAY,CAAC;QAErC,OAAO,wBAAwB,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,iBAAiB;QACjC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,GAAG,0BAA0B,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,0BAA0B,CAAC;IAE/B,sBAAsB;IACtB,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,gBAAgB,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,8EAA8E;IAC9E,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,sBAAsB,YAAY,aAAa,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IACE,KAAK,CAAC,WAAW,EAAE;oBACnB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC3B,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAClC,CAAC;oBACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;oBACpE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7B,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACpC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,OAAO,SAAS,EAAE,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAChD,OAAO,CAAC,WAAW,EACnB,4BAA4B,CAC7B,CAAC;IACF,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAC7C,OAAO,CAAC,WAAW,EACnB,yBAAyB,CAC1B,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,GAAG,aAAa;QAChB,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;QACtB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;IAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEjD,oEAAoE;IACpE,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE9C,8DAA8D;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,gFAAgF;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,IAAI,8BAA8B,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,IAAI,CAAC,aAAa,GAAG,CACnB,QAAgB,EAChB,eAAgC,EAChC,OAAmC,EACnC,yBAAmC,EACR,EAAE;QAC7B,IAAI,gBAAgB,IAAI,QAAQ,KAAK,6BAA6B,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC,gBAAgB,CACxB,QAAQ,EACR,wBAAwB,EACxB,eAAe,EACf,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;YAChE,OAAO,EAAE,CAAC,gBAAgB,CACxB,QAAQ,EACR,4BAA4B,EAC5B,eAAe,EACf,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,eAAe,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,wEAAwE;YACxE,MAAM,cAAc,GAAG,kBAAkB,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC;YACrF,OAAO,EAAE,CAAC,gBAAgB,CACxB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,IAAI,CACL,CAAC;QACJ,CAAC;QAED,OAAO,qBAAqB,CAAC,IAAI,CAC/B,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,OAAO,EACP,yBAAyB,CAC1B,CAAC;IACJ,CAAC,CAAC;IAEF,qDAAqD;IACrD,MAAM,eAAe,GAAG,IAKvB,CAAC;IACF,eAAe,CAAC,kBAAkB,GAAG,CACnC,WAAqB,EACrB,cAAsB,EACa,EAAE;QACrC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACpC,YAAY;YACZ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,SAAS,cAAc,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,oCAAoC;YACpC,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,OAAO,YAAY,EAAE,CAC7D,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,gBAAgB,EAAE,YAAY;oBAC9B,uBAAuB,EAAE,IAAI;iBAC9B,CAAC;YACJ,CAAC;YAED,6EAA6E;YAC7E,sEAAsE;YACtE,mEAAmE;YACnE,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,+DAA+D;gBAC/D,uEAAuE;gBACvE,0EAA0E;gBAC1E,uCAAuC;gBACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,OAAO,CAAC,WAAW,EACnB,wBAAwB,CACzB,CAAC;gBACF,MAAM,aAAa,GAAG,EAAE,CAAC,iBAAiB,CACxC,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,IAAI,CACL,CAAC;gBACF,IAAI,aAAa,CAAC,cAAc;oBAAE,OAAO,aAAa,CAAC,cAAc,CAAC;gBAEtE,+DAA+D;gBAC/D,0CAA0C;gBAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC3D,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;wBAAE,OAAO,SAAS,CAAC;oBAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CACtC,CAAC;oBAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;wBAClC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC;oBAErB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,OAAO;4BACL,gBAAgB,EAAE,OAAO;4BACzB,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG;4BAC3B,uBAAuB,EAAE,IAAI;yBAC9B,CAAC;oBACJ,CAAC;oBACD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC1B,OAAO;4BACL,gBAAgB,EAAE,MAAM;4BACxB,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE;4BAC1B,uBAAuB,EAAE,IAAI;yBAC9B,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,qEAAqE;gBACrE,qDAAqD;gBACrD,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CACjC,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,IAAI,CACL,CAAC;gBACF,IAAI,MAAM,CAAC,cAAc;oBAAE,OAAO,MAAM,CAAC,cAAc,CAAC;gBAExD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,2CAA2C;YAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CACjC,UAAU,EACV,cAAc,EACd,SAAS,EACT,IAAI,CACL,CAAC;YACF,OAAO,MAAM,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,6DAA6D;IAC7D,MAAM,WAAW,GAAG,OAAO;SACxB,cAAc,EAAE;SAChB,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CACrE,CAAC;IAEJ,kFAAkF;IAClF,iBAAiB;IACjB,0DAA0D;IAC1D,+EAA+E;IAC/E,qDAAqD;IACrD,qCAAqC;IACrC,mGAAmG;IACnG,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmB,CAAC;IACpD,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAW,EAAE;QACtD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1D,CAAC;oBACF,MAAM,EAAE,GACN,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;wBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC9B,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACjC,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,OAAO;SACnC,cAAc,EAAE;SAChB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1E,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE/C,gEAAgE;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,oEAAoE;IACpE,2EAA2E;IAC3E,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE;QACtC,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,wBAAwB;gBAClC,IAAI,EAAE,kBAAkB;aACzB;SACF;KACF,CAAC,CAAC;IAEH,IAAI,gBAAgB,EAAE,CAAC;QACrB,QAAQ,CAAC,WAAW,CAAC,4BAA4B,EAAE;YACjD,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;iBACjC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,uBAAuB;iBAC9B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,uBAAuB;iBAC9B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,uBAAuB;iBAC9B;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,yBAAyB;iBAChC;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,sBAAsB;iBAC7B;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,sBAAsB;iBAC7B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;iBACjC;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;iBACjC;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAE,kBAAkB;iBAC/B;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAE,oBAAoB;iBACjC;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAE,kBAAkB;iBAC/B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAE,eAAe;iBAC5B;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,0EAA0E;IAC1E,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnE,6CAA6C;IAC7C,iEAAiE;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO,EAAE,CAAC;QACR,OAAO;QACP,OAAO;QACP,OAAO;QACP,WAAW;QACX,sBAAsB;QACtB,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../src/program/creation.ts"],"names":[],"mappings":"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"}