@scriptc/compiler 0.0.0 → 0.0.2

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 (206) hide show
  1. package/LICENSE +202 -0
  2. package/ambient/package.json +3 -0
  3. package/ambient/scriptc-node-fallback.d.ts +3001 -0
  4. package/ambient/scriptc-overrides.d.ts +95 -0
  5. package/ambient/scriptc.d.ts +74 -0
  6. package/dist/backend/cc.d.ts +169 -0
  7. package/dist/backend/cc.js +897 -0
  8. package/dist/backend/cc.js.map +1 -0
  9. package/dist/backend/emission/emit-async.d.ts +145 -0
  10. package/dist/backend/emission/emit-async.js +996 -0
  11. package/dist/backend/emission/emit-async.js.map +1 -0
  12. package/dist/backend/emission/emit-exprs.d.ts +3 -0
  13. package/dist/backend/emission/emit-exprs.js +5949 -0
  14. package/dist/backend/emission/emit-exprs.js.map +1 -0
  15. package/dist/backend/emission/emit-island.d.ts +45 -0
  16. package/dist/backend/emission/emit-island.js +271 -0
  17. package/dist/backend/emission/emit-island.js.map +1 -0
  18. package/dist/backend/emission/emit-shapes.d.ts +142 -0
  19. package/dist/backend/emission/emit-shapes.js +575 -0
  20. package/dist/backend/emission/emit-shapes.js.map +1 -0
  21. package/dist/backend/emission/emit-stmts.d.ts +78 -0
  22. package/dist/backend/emission/emit-stmts.js +960 -0
  23. package/dist/backend/emission/emit-stmts.js.map +1 -0
  24. package/dist/backend/emission/emit-types.d.ts +65 -0
  25. package/dist/backend/emission/emit-types.js +652 -0
  26. package/dist/backend/emission/emit-types.js.map +1 -0
  27. package/dist/backend/emission/emit-walkers.d.ts +154 -0
  28. package/dist/backend/emission/emit-walkers.js +1587 -0
  29. package/dist/backend/emission/emit-walkers.js.map +1 -0
  30. package/dist/backend/emission/emitter.d.ts +452 -0
  31. package/dist/backend/emission/emitter.js +1249 -0
  32. package/dist/backend/emission/emitter.js.map +1 -0
  33. package/dist/backend/emission/may-throw.d.ts +15 -0
  34. package/dist/backend/emission/may-throw.js +250 -0
  35. package/dist/backend/emission/may-throw.js.map +1 -0
  36. package/dist/backend/llvm/blocks.d.ts +21 -0
  37. package/dist/backend/llvm/blocks.js +68 -0
  38. package/dist/backend/llvm/blocks.js.map +1 -0
  39. package/dist/backend/llvm/classes.d.ts +84 -0
  40. package/dist/backend/llvm/classes.js +438 -0
  41. package/dist/backend/llvm/classes.js.map +1 -0
  42. package/dist/backend/llvm/dyn.d.ts +123 -0
  43. package/dist/backend/llvm/dyn.js +2624 -0
  44. package/dist/backend/llvm/dyn.js.map +1 -0
  45. package/dist/backend/llvm/emitter.d.ts +3 -0
  46. package/dist/backend/llvm/emitter.js +10102 -0
  47. package/dist/backend/llvm/emitter.js.map +1 -0
  48. package/dist/backend/llvm/shapes.d.ts +78 -0
  49. package/dist/backend/llvm/shapes.js +754 -0
  50. package/dist/backend/llvm/shapes.js.map +1 -0
  51. package/dist/backend/llvm/unsupported.d.ts +6 -0
  52. package/dist/backend/llvm/unsupported.js +12 -0
  53. package/dist/backend/llvm/unsupported.js.map +1 -0
  54. package/dist/backend/llvm/walkers.d.ts +58 -0
  55. package/dist/backend/llvm/walkers.js +793 -0
  56. package/dist/backend/llvm/walkers.js.map +1 -0
  57. package/dist/backend/mangle.d.ts +124 -0
  58. package/dist/backend/mangle.js +232 -0
  59. package/dist/backend/mangle.js.map +1 -0
  60. package/dist/coverage/report.d.ts +65 -0
  61. package/dist/coverage/report.js +238 -0
  62. package/dist/coverage/report.js.map +1 -0
  63. package/dist/diagnostics/diagnostic.d.ts +140 -0
  64. package/dist/diagnostics/diagnostic.js +458 -0
  65. package/dist/diagnostics/diagnostic.js.map +1 -0
  66. package/dist/diagnostics/render.d.ts +11 -0
  67. package/dist/diagnostics/render.js +58 -0
  68. package/dist/diagnostics/render.js.map +1 -0
  69. package/dist/frontend/cjs-lexer.d.ts +20 -0
  70. package/dist/frontend/cjs-lexer.js +813 -0
  71. package/dist/frontend/cjs-lexer.js.map +1 -0
  72. package/dist/frontend/lowering/http2-constants.d.ts +1 -0
  73. package/dist/frontend/lowering/http2-constants.js +251 -0
  74. package/dist/frontend/lowering/http2-constants.js.map +1 -0
  75. package/dist/frontend/lowering/lib-boundary.d.ts +6 -0
  76. package/dist/frontend/lowering/lib-boundary.js +143 -0
  77. package/dist/frontend/lowering/lib-boundary.js.map +1 -0
  78. package/dist/frontend/lowering/lower-assert.d.ts +18 -0
  79. package/dist/frontend/lowering/lower-assert.js +1269 -0
  80. package/dist/frontend/lowering/lower-assert.js.map +1 -0
  81. package/dist/frontend/lowering/lower-builtins.d.ts +511 -0
  82. package/dist/frontend/lowering/lower-builtins.js +5249 -0
  83. package/dist/frontend/lowering/lower-builtins.js.map +1 -0
  84. package/dist/frontend/lowering/lower-calls.d.ts +581 -0
  85. package/dist/frontend/lowering/lower-calls.js +6286 -0
  86. package/dist/frontend/lowering/lower-calls.js.map +1 -0
  87. package/dist/frontend/lowering/lower-classes.d.ts +727 -0
  88. package/dist/frontend/lowering/lower-classes.js +4701 -0
  89. package/dist/frontend/lowering/lower-classes.js.map +1 -0
  90. package/dist/frontend/lowering/lower-comptime.d.ts +53 -0
  91. package/dist/frontend/lowering/lower-comptime.js +244 -0
  92. package/dist/frontend/lowering/lower-comptime.js.map +1 -0
  93. package/dist/frontend/lowering/lower-containers.d.ts +486 -0
  94. package/dist/frontend/lowering/lower-containers.js +6345 -0
  95. package/dist/frontend/lowering/lower-containers.js.map +1 -0
  96. package/dist/frontend/lowering/lower-dgram.d.ts +20 -0
  97. package/dist/frontend/lowering/lower-dgram.js +319 -0
  98. package/dist/frontend/lowering/lower-dgram.js.map +1 -0
  99. package/dist/frontend/lowering/lower-emitter.d.ts +10 -0
  100. package/dist/frontend/lowering/lower-emitter.js +688 -0
  101. package/dist/frontend/lowering/lower-emitter.js.map +1 -0
  102. package/dist/frontend/lowering/lower-enums.d.ts +22 -0
  103. package/dist/frontend/lowering/lower-enums.js +235 -0
  104. package/dist/frontend/lowering/lower-enums.js.map +1 -0
  105. package/dist/frontend/lowering/lower-expando.d.ts +35 -0
  106. package/dist/frontend/lowering/lower-expando.js +276 -0
  107. package/dist/frontend/lowering/lower-expando.js.map +1 -0
  108. package/dist/frontend/lowering/lower-exprs.d.ts +524 -0
  109. package/dist/frontend/lowering/lower-exprs.js +8111 -0
  110. package/dist/frontend/lowering/lower-exprs.js.map +1 -0
  111. package/dist/frontend/lowering/lower-generators.d.ts +50 -0
  112. package/dist/frontend/lowering/lower-generators.js +421 -0
  113. package/dist/frontend/lowering/lower-generators.js.map +1 -0
  114. package/dist/frontend/lowering/lower-inspect.d.ts +20 -0
  115. package/dist/frontend/lowering/lower-inspect.js +1074 -0
  116. package/dist/frontend/lowering/lower-inspect.js.map +1 -0
  117. package/dist/frontend/lowering/lower-island.d.ts +108 -0
  118. package/dist/frontend/lowering/lower-island.js +650 -0
  119. package/dist/frontend/lowering/lower-island.js.map +1 -0
  120. package/dist/frontend/lowering/lower-mixins.d.ts +96 -0
  121. package/dist/frontend/lowering/lower-mixins.js +534 -0
  122. package/dist/frontend/lowering/lower-mixins.js.map +1 -0
  123. package/dist/frontend/lowering/lower-modules.d.ts +135 -0
  124. package/dist/frontend/lowering/lower-modules.js +1613 -0
  125. package/dist/frontend/lowering/lower-modules.js.map +1 -0
  126. package/dist/frontend/lowering/lower-namespaces.d.ts +168 -0
  127. package/dist/frontend/lowering/lower-namespaces.js +706 -0
  128. package/dist/frontend/lowering/lower-namespaces.js.map +1 -0
  129. package/dist/frontend/lowering/lower-server.d.ts +90 -0
  130. package/dist/frontend/lowering/lower-server.js +3471 -0
  131. package/dist/frontend/lowering/lower-server.js.map +1 -0
  132. package/dist/frontend/lowering/lower-stmts.d.ts +361 -0
  133. package/dist/frontend/lowering/lower-stmts.js +5341 -0
  134. package/dist/frontend/lowering/lower-stmts.js.map +1 -0
  135. package/dist/frontend/lowering/lower-stream.d.ts +88 -0
  136. package/dist/frontend/lowering/lower-stream.js +1533 -0
  137. package/dist/frontend/lowering/lower-stream.js.map +1 -0
  138. package/dist/frontend/lowering/lower-test.d.ts +27 -0
  139. package/dist/frontend/lowering/lower-test.js +353 -0
  140. package/dist/frontend/lowering/lower-test.js.map +1 -0
  141. package/dist/frontend/lowering/lowerer.d.ts +1748 -0
  142. package/dist/frontend/lowering/lowerer.js +6257 -0
  143. package/dist/frontend/lowering/lowerer.js.map +1 -0
  144. package/dist/frontend/lowering/surfaces.d.ts +272 -0
  145. package/dist/frontend/lowering/surfaces.js +1096 -0
  146. package/dist/frontend/lowering/surfaces.js.map +1 -0
  147. package/dist/frontend/npm-static.d.ts +55 -0
  148. package/dist/frontend/npm-static.js +300 -0
  149. package/dist/frontend/npm-static.js.map +1 -0
  150. package/dist/frontend/npm.d.ts +330 -0
  151. package/dist/frontend/npm.js +1259 -0
  152. package/dist/frontend/npm.js.map +1 -0
  153. package/dist/frontend/program.d.ts +186 -0
  154. package/dist/frontend/program.js +2255 -0
  155. package/dist/frontend/program.js.map +1 -0
  156. package/dist/frontend/provenance-registry.d.ts +48 -0
  157. package/dist/frontend/provenance-registry.js +87 -0
  158. package/dist/frontend/provenance-registry.js.map +1 -0
  159. package/dist/frontend/provenance.d.ts +6 -0
  160. package/dist/frontend/provenance.js +459 -0
  161. package/dist/frontend/provenance.js.map +1 -0
  162. package/dist/frontend/resolve.d.ts +56 -0
  163. package/dist/frontend/resolve.js +682 -0
  164. package/dist/frontend/resolve.js.map +1 -0
  165. package/dist/frontend/shared.d.ts +67 -0
  166. package/dist/frontend/shared.js +241 -0
  167. package/dist/frontend/shared.js.map +1 -0
  168. package/dist/frontend/ts7/adapter.d.ts +7 -0
  169. package/dist/frontend/ts7/adapter.js +54 -0
  170. package/dist/frontend/ts7/adapter.js.map +1 -0
  171. package/dist/frontend/ts7/ast.d.ts +50 -0
  172. package/dist/frontend/ts7/ast.js +211 -0
  173. package/dist/frontend/ts7/ast.js.map +1 -0
  174. package/dist/frontend/ts7/census-check.d.ts +1 -0
  175. package/dist/frontend/ts7/census-check.js +12 -0
  176. package/dist/frontend/ts7/census-check.js.map +1 -0
  177. package/dist/frontend/ts7/checker.d.ts +140 -0
  178. package/dist/frontend/ts7/checker.js +544 -0
  179. package/dist/frontend/ts7/checker.js.map +1 -0
  180. package/dist/frontend/ts7/enums.d.ts +18 -0
  181. package/dist/frontend/ts7/enums.js +43 -0
  182. package/dist/frontend/ts7/enums.js.map +1 -0
  183. package/dist/frontend/ts7/program.d.ts +99 -0
  184. package/dist/frontend/ts7/program.js +278 -0
  185. package/dist/frontend/ts7/program.js.map +1 -0
  186. package/dist/frontend/ts7/world-check.d.ts +3 -0
  187. package/dist/frontend/ts7/world-check.js +34 -0
  188. package/dist/frontend/ts7/world-check.js.map +1 -0
  189. package/dist/frontend/types.d.ts +205 -0
  190. package/dist/frontend/types.js +2485 -0
  191. package/dist/frontend/types.js.map +1 -0
  192. package/dist/index.d.ts +85 -0
  193. package/dist/index.js +429 -0
  194. package/dist/index.js.map +1 -0
  195. package/dist/ir/nodes.d.ts +4334 -0
  196. package/dist/ir/nodes.js +1906 -0
  197. package/dist/ir/nodes.js.map +1 -0
  198. package/dist/ir/serialize.d.ts +4 -0
  199. package/dist/ir/serialize.js +34 -0
  200. package/dist/ir/serialize.js.map +1 -0
  201. package/dist/ir/validate.d.ts +36 -0
  202. package/dist/ir/validate.js +4885 -0
  203. package/dist/ir/validate.js.map +1 -0
  204. package/package.json +30 -6
  205. package/README.md +0 -3
  206. package/index.js +0 -2
@@ -0,0 +1,544 @@
1
+ /* The checker facade: 5.9.3-shaped TypeChecker methods over 7.0.2's sync
2
+ * client, built around the survey's feasibility verdict. Naive per-call use
3
+ * of the 7.0.2 client costs 0.1-0.3 ms of IPC per query; the census counted
4
+ * 32,226 checker calls lowering mock-gateway, so a transparent adapter would
5
+ * add seconds. Batched, the same queries run at ~0.005 ms/call — parity with
6
+ * 5.9.3. Three mechanisms make batching and reuse the DEFAULT path:
7
+ *
8
+ * 1. IDENTITY MEMOS. One WeakMap per query kind, keyed on the client-side
9
+ * node/type/symbol object. Safe because the 7.0.2 client registry dedupes
10
+ * by server handle id (probe-verified: the same symbol/type from any two
11
+ * queries is the same object), and a snapshot is immutable — an answer
12
+ * never changes for the life of the program. The client itself does NOT
13
+ * memoize (warm re-query of 21 nodes costs 2.5-3.8 ms; the survey's
14
+ * finding), so this layer is where reuse lives.
15
+ *
16
+ * 2. PER-FILE BATCH PREFETCH. The first getTypeAtLocation/getSymbolAtLocation
17
+ * miss in a source file walks the whole file client-side (free — the AST
18
+ * is local) and issues the ARRAY overloads for every node, chunked, then
19
+ * answers all later queries for that file from the memo. The lowering's
20
+ * walk touches most of a file anyway, so prefetching the file is the
21
+ * batching lever without changing a single call site. prefetchSourceFile()
22
+ * exposes the same hook explicitly. Symbol prefetch also batch-fetches
23
+ * getTypeOfSymbol over every symbol the file mentions (5,333 calls of the
24
+ * mock-gateway census ride that pattern).
25
+ *
26
+ * 3. CLIENT-SIDE FAST PATHS. getBaseTypeOfLiteralType — the census's single
27
+ * hottest method (9,059 calls on mock-gateway) — is answered locally from
28
+ * type.flags plus the intrinsic-type singletons for the literal kinds
29
+ * 5.9.3 maps to intrinsics (string/number/bigint/boolean literals), with
30
+ * IPC only for enum-ish and union types. isTupleType answers shape-true
31
+ * and non-object-false locally and round-trips (memoized) only for
32
+ * object types. Both verified against the raw checker AND against 5.9.3
33
+ * by the adapter's suites. */
34
+ import { walkPreorder } from "./ast.js";
35
+ import { SignatureKind, TypeFlags } from "./enums.js";
36
+ /** Array-overload chunk size: large enough that per-request overhead
37
+ * vanishes, small enough to keep any single JSON-RPC payload modest. */
38
+ const BATCH_CHUNK = 2048;
39
+ /** The bisecting panic fence for batch queries. The prefetch sweeps query
40
+ * nodes/symbols the lowering itself may never ask about, and tsgo can PANIC
41
+ * on some of them (a server-side failure the sync channel surfaces as a
42
+ * thrown Error, server intact). A batch must not turn a node nobody needs
43
+ * into a build crash: on failure, bisect — healthy items keep their real
44
+ * answers, and the panicking ITEM alone memoizes undefined (anyType through
45
+ * the facade), which is exactly what the pinned type-position finding maps
46
+ * such answers to. */
47
+ function withPanicFence(chunk, call) {
48
+ try {
49
+ return [...call(chunk)];
50
+ }
51
+ catch {
52
+ if (chunk.length === 1)
53
+ return [undefined];
54
+ const mid = chunk.length >> 1;
55
+ return [
56
+ ...withPanicFence(chunk.slice(0, mid), call),
57
+ ...withPanicFence(chunk.slice(mid), call),
58
+ ];
59
+ }
60
+ }
61
+ function chunked(items, fetch) {
62
+ const out = [];
63
+ for (let i = 0; i < items.length; i += BATCH_CHUNK) {
64
+ out.push(...fetch(items.slice(i, i + BATCH_CHUNK)));
65
+ }
66
+ return out;
67
+ }
68
+ /** The prefetch sweep's depth floor. The lowering fences expressions at 200
69
+ * nesting levels (SC1090) and never queries below its fence, so nodes much
70
+ * deeper than that can only belong to a program the build is about to
71
+ * refuse — and batch-querying them is where a pathological file's cost
72
+ * lives (the ~6500-term binderBinaryExpressionStress chains spent minutes
73
+ * in server-side per-node queries). Skipped subtrees stay CORRECT: any
74
+ * query the lowering does make below the floor falls through to a direct,
75
+ * memoized per-node call. */
76
+ const PREFETCH_MAX_DEPTH = 512;
77
+ /** Preorder sweep of the whole file, ITERATIVE (walkPreorder): the obvious
78
+ * recursive forEachChild walk overflowed the stack HERE, in the prefetch
79
+ * sweep, on the binderBinaryExpressionStress chains — before lowering could
80
+ * answer with its SC1090 nesting fence. */
81
+ function collectNodes(sf) {
82
+ const nodes = [];
83
+ walkPreorder(sf, (n, depth) => {
84
+ nodes.push(n);
85
+ if (depth >= PREFETCH_MAX_DEPTH)
86
+ return "skip";
87
+ return undefined;
88
+ });
89
+ return nodes;
90
+ }
91
+ export class CheckerFacade {
92
+ raw;
93
+ options;
94
+ /** Node-keyed memos. `undefined` results are represented by map presence
95
+ * (WeakMap.has), so misses and cached-undefined are distinguishable. */
96
+ typeAtLocation = new WeakMap();
97
+ symbolAtLocation = new WeakMap();
98
+ contextualType = new WeakMap();
99
+ typeFromTypeNode = new WeakMap();
100
+ shorthandValueSymbol = new WeakMap();
101
+ resolvedSignature = new WeakMap();
102
+ signatureFromDeclaration = new WeakMap();
103
+ /** Symbol-keyed memos. */
104
+ typeOfSymbol = new WeakMap();
105
+ aliasedSymbol = new WeakMap();
106
+ declaredTypeOfSymbol = new WeakMap();
107
+ /** Type-keyed memos. */
108
+ baseTypeOfLiteral = new WeakMap();
109
+ nonNullableType = new WeakMap();
110
+ propertiesOfType = new WeakMap();
111
+ indexInfosOfType = new WeakMap();
112
+ typeArgumentsOf = new WeakMap();
113
+ arrayTypeAnswer = new WeakMap();
114
+ arrayLikeAnswer = new WeakMap();
115
+ typeStringOf = new WeakMap();
116
+ awaitedTypeOf = new WeakMap();
117
+ /** Signature-keyed memos. */
118
+ returnTypeOf = new WeakMap();
119
+ typePredicateOf = new WeakMap();
120
+ /** Files whose nodes have been batch-prefetched, per query kind. */
121
+ prefetchedTypes = new WeakSet();
122
+ prefetchedSymbols = new WeakSet();
123
+ unknownType = null;
124
+ /** Intrinsic singletons (string/number/bigint/boolean), fetched once. */
125
+ intrinsics = new Map();
126
+ tupleTypeAnswer = new WeakMap();
127
+ constructor(
128
+ /** The underlying 7.0.2 sync checker — exposed for methods the facade
129
+ * does not shim; going around the facade forfeits memoization only. */
130
+ raw, options = {}) {
131
+ this.raw = raw;
132
+ this.options = options;
133
+ }
134
+ /* ── the symbol-declaration surface (phase 3) ─────────────────────────
135
+ * 7's Symbol carries declarations as NodeHandles (server references),
136
+ * where 5.9.3 handed out the nodes themselves. The lowering reads
137
+ * symbol.declarations/valueDeclaration pervasively, so the facade owns
138
+ * the resolve step (NodeHandle.resolve into the client AST — identity-
139
+ * stable, probe-verified) and memoizes per symbol. Requires the project
140
+ * the symbols came from (options.project — Ts7Program supplies it). */
141
+ declsOf = new WeakMap();
142
+ valueDeclOf = new WeakMap();
143
+ requireProject() {
144
+ const project = this.options.project;
145
+ if (!project)
146
+ throw new Error("CheckerFacade built without a project cannot resolve declarations");
147
+ return project;
148
+ }
149
+ /** 5.9.3's symbol.declarations (never undefined here: 7 answers an empty
150
+ * array where 5.9.3 answered undefined — callers treat them alike). */
151
+ declarationsOf(symbol) {
152
+ let decls = this.declsOf.get(symbol);
153
+ if (decls === undefined) {
154
+ const project = this.requireProject();
155
+ decls = symbol.declarations
156
+ .map((h) => h.resolve(project))
157
+ .filter((n) => n !== undefined);
158
+ this.declsOf.set(symbol, decls);
159
+ }
160
+ return decls;
161
+ }
162
+ /** 5.9.3's symbol.valueDeclaration. */
163
+ valueDeclarationOf(symbol) {
164
+ if (this.valueDeclOf.has(symbol))
165
+ return this.valueDeclOf.get(symbol);
166
+ const decl = symbol.valueDeclaration?.resolve(this.requireProject());
167
+ this.valueDeclOf.set(symbol, decl);
168
+ return decl;
169
+ }
170
+ /** 5.9.3's signature.getDeclaration() (undefined for synthesized
171
+ * signatures — same contract as sig.declaration there). */
172
+ signatureDeclaration(signature) {
173
+ if (this.sigDeclOf.has(signature))
174
+ return this.sigDeclOf.get(signature);
175
+ const decl = signature.declaration?.resolve(this.requireProject());
176
+ this.sigDeclOf.set(signature, decl);
177
+ return decl;
178
+ }
179
+ sigDeclOf = new WeakMap();
180
+ /** 5.9.3's type.getCallSignatures(). */
181
+ getCallSignatures(type) {
182
+ let sigs = this.callSigsOf.get(type);
183
+ if (sigs === undefined) {
184
+ sigs = this.raw.getSignaturesOfType(type, SignatureKind.Call);
185
+ this.callSigsOf.set(type, sigs);
186
+ }
187
+ return sigs;
188
+ }
189
+ callSigsOf = new WeakMap();
190
+ /** 5.9.3's type.getConstructSignatures(). */
191
+ getConstructSignatures(type) {
192
+ let sigs = this.ctorSigsOf.get(type);
193
+ if (sigs === undefined) {
194
+ sigs = this.raw.getSignaturesOfType(type, SignatureKind.Construct);
195
+ this.ctorSigsOf.set(type, sigs);
196
+ }
197
+ return sigs;
198
+ }
199
+ ctorSigsOf = new WeakMap();
200
+ /** 5.9.3's type.getProperty(name). */
201
+ getPropertyOfType(type, name) {
202
+ return this.raw.getPropertyOfType(type, name);
203
+ }
204
+ /** The 5.9.3 checker never answered undefined from getTypeAtLocation-
205
+ * family queries (errorType/anyType stood in); the 7 client loosens them
206
+ * to `T | undefined`. The lowering is written against the 5.9.3 contract,
207
+ * so the facade restores it: undefined becomes anyType — exactly the
208
+ * equivalence the parity battery pinned (a 7-side undefined renders as
209
+ * "any" wherever 5.9.3 said any). */
210
+ anyType() {
211
+ return this.intrinsic("any", () => this.raw.getAnyType());
212
+ }
213
+ /** Batch-prefetches getTypeAtLocation and getSymbolAtLocation for every
214
+ * node of the file, plus getTypeOfSymbol for every symbol those answers
215
+ * surfaced — the per-file hook that turns the lowering's walk into three
216
+ * array requests instead of thousands of round trips. */
217
+ prefetchSourceFile(sf) {
218
+ this.prefetchTypes(sf);
219
+ this.prefetchSymbols(sf);
220
+ }
221
+ prefetchTypes(sf) {
222
+ if (this.prefetchedTypes.has(sf))
223
+ return;
224
+ this.prefetchedTypes.add(sf);
225
+ const nodes = collectNodes(sf).filter((n) => !this.typeAtLocation.has(n));
226
+ const types = chunked(nodes, (chunk) => this.typesWithPanicFence(chunk));
227
+ nodes.forEach((n, i) => this.typeAtLocation.set(n, types[i]));
228
+ }
229
+ /** withPanicFence over the type sweep (observed panic: GetTypeAtLocation
230
+ * over an unresolved npm import's clause — a server-side nil deref). */
231
+ typesWithPanicFence(chunk) {
232
+ return withPanicFence(chunk, (c) => this.raw.getTypeAtLocation(c));
233
+ }
234
+ prefetchSymbols(sf) {
235
+ if (this.prefetchedSymbols.has(sf))
236
+ return;
237
+ this.prefetchedSymbols.add(sf);
238
+ const nodes = collectNodes(sf).filter((n) => !this.symbolAtLocation.has(n));
239
+ // The same bisecting panic fence as the type sweep: tsgo panics on
240
+ // SYMBOL queries too (observed: GetSymbolAtLocation over an
241
+ // `import.defer(...)` callee — the sweep's batch must not turn one
242
+ // poisonous node into a build crash).
243
+ const symbols = chunked(nodes, (chunk) => withPanicFence(chunk, (c) => this.raw.getSymbolAtLocation(c)));
244
+ nodes.forEach((n, i) => this.symbolAtLocation.set(n, symbols[i]));
245
+ // The walk's companion query: types of the symbols the file mentions.
246
+ const distinct = [...new Set(symbols.filter((s) => s !== undefined))].filter((s) => !this.typeOfSymbol.has(s));
247
+ const symbolTypes = chunked(distinct, (chunk) => withPanicFence(chunk, (c) => this.raw.getTypeOfSymbol(c)));
248
+ distinct.forEach((s, i) => this.typeOfSymbol.set(s, symbolTypes[i]));
249
+ }
250
+ autoPrefetch(node, kind) {
251
+ if (this.options.autoPrefetch === false)
252
+ return;
253
+ const sf = node.getSourceFile();
254
+ if (kind === "types")
255
+ this.prefetchTypes(sf);
256
+ else
257
+ this.prefetchSymbols(sf);
258
+ }
259
+ getTypeAtLocation(node) {
260
+ if (this.typeAtLocation.has(node))
261
+ return this.typeAtLocation.get(node) ?? this.anyType();
262
+ this.autoPrefetch(node, "types");
263
+ if (this.typeAtLocation.has(node))
264
+ return this.typeAtLocation.get(node) ?? this.anyType();
265
+ const type = this.raw.getTypeAtLocation(node);
266
+ this.typeAtLocation.set(node, type);
267
+ return type ?? this.anyType();
268
+ }
269
+ getSymbolAtLocation(node) {
270
+ if (this.symbolAtLocation.has(node))
271
+ return this.symbolAtLocation.get(node);
272
+ this.autoPrefetch(node, "symbols");
273
+ if (this.symbolAtLocation.has(node))
274
+ return this.symbolAtLocation.get(node);
275
+ const symbol = this.raw.getSymbolAtLocation(node);
276
+ this.symbolAtLocation.set(node, symbol);
277
+ return symbol;
278
+ }
279
+ getTypeOfSymbol(symbol) {
280
+ if (this.typeOfSymbol.has(symbol))
281
+ return this.typeOfSymbol.get(symbol) ?? this.anyType();
282
+ // The direct (memo-miss) path wears the same panic fence as the
283
+ // prefetch sweep: symbols the sweep never saw (members resolved from
284
+ // other files' d.ts) can hit the identical server panics (observed:
285
+ // GetTypeOfSymbol's TypeReference/TupleType conversion on prettier's
286
+ // engine graph), and the fence's answer is the sweep's — undefined,
287
+ // presented as `any`.
288
+ const [type] = withPanicFence([symbol], (c) => this.raw.getTypeOfSymbol(c));
289
+ this.typeOfSymbol.set(symbol, type);
290
+ return type ?? this.anyType();
291
+ }
292
+ getAliasedSymbol(symbol) {
293
+ let aliased = this.aliasedSymbol.get(symbol);
294
+ if (aliased === undefined) {
295
+ aliased = this.raw.getAliasedSymbol(symbol);
296
+ this.aliasedSymbol.set(symbol, aliased);
297
+ }
298
+ return aliased;
299
+ }
300
+ getDeclaredTypeOfSymbol(symbol) {
301
+ let type = this.declaredTypeOfSymbol.get(symbol);
302
+ if (type === undefined) {
303
+ type = this.raw.getDeclaredTypeOfSymbol(symbol);
304
+ this.declaredTypeOfSymbol.set(symbol, type);
305
+ }
306
+ return type;
307
+ }
308
+ getContextualType(node) {
309
+ if (this.contextualType.has(node))
310
+ return this.contextualType.get(node);
311
+ const type = this.raw.getContextualType(node);
312
+ this.contextualType.set(node, type);
313
+ return type;
314
+ }
315
+ getTypeFromTypeNode(node) {
316
+ if (this.typeFromTypeNode.has(node))
317
+ return this.typeFromTypeNode.get(node) ?? this.anyType();
318
+ const type = this.raw.getTypeFromTypeNode(node);
319
+ this.typeFromTypeNode.set(node, type);
320
+ return type ?? this.anyType();
321
+ }
322
+ getShorthandAssignmentValueSymbol(node) {
323
+ if (this.shorthandValueSymbol.has(node))
324
+ return this.shorthandValueSymbol.get(node);
325
+ const symbol = this.raw.getShorthandAssignmentValueSymbol(node);
326
+ this.shorthandValueSymbol.set(node, symbol);
327
+ return symbol;
328
+ }
329
+ getResolvedSignature(node) {
330
+ if (this.resolvedSignature.has(node))
331
+ return this.resolvedSignature.get(node);
332
+ const signature = this.raw.getResolvedSignature(node);
333
+ this.resolvedSignature.set(node, signature);
334
+ return signature;
335
+ }
336
+ getSignatureFromDeclaration(node) {
337
+ if (this.signatureFromDeclaration.has(node))
338
+ return this.signatureFromDeclaration.get(node);
339
+ const signature = this.raw.getSignatureFromDeclaration(node);
340
+ this.signatureFromDeclaration.set(node, signature);
341
+ return signature;
342
+ }
343
+ getReturnTypeOfSignature(signature) {
344
+ if (this.returnTypeOf.has(signature))
345
+ return this.returnTypeOf.get(signature) ?? this.anyType();
346
+ const type = this.raw.getReturnTypeOfSignature(signature);
347
+ this.returnTypeOf.set(signature, type);
348
+ return type ?? this.anyType();
349
+ }
350
+ getTypePredicateOfSignature(signature) {
351
+ if (this.typePredicateOf.has(signature))
352
+ return this.typePredicateOf.get(signature);
353
+ const predicate = this.raw.getTypePredicateOfSignature(signature);
354
+ this.typePredicateOf.set(signature, predicate);
355
+ return predicate;
356
+ }
357
+ /** 5.9.3 semantics, answered client-side wherever type.flags suffices:
358
+ * string/number/bigint/boolean literals map to the intrinsic singletons
359
+ * (one IPC ever per intrinsic); enum-ish and union types round-trip
360
+ * (memoized); everything else is itself. */
361
+ getBaseTypeOfLiteralType(type) {
362
+ const memo = this.baseTypeOfLiteral.get(type);
363
+ if (memo !== undefined)
364
+ return memo;
365
+ const flags = type.flags;
366
+ let base;
367
+ if (flags & (TypeFlags.EnumLiteral | TypeFlags.Enum) || flags & TypeFlags.Union) {
368
+ base = this.raw.getBaseTypeOfLiteralType(type) ?? type;
369
+ }
370
+ else if (flags & (TypeFlags.StringLiteral | TypeFlags.TemplateLiteral)) {
371
+ base = this.intrinsic("string", () => this.raw.getStringType());
372
+ }
373
+ else if (flags & TypeFlags.NumberLiteral) {
374
+ base = this.intrinsic("number", () => this.raw.getNumberType());
375
+ }
376
+ else if (flags & TypeFlags.BigIntLiteral) {
377
+ base = this.intrinsic("bigint", () => this.raw.getBigIntType());
378
+ }
379
+ else if (flags & TypeFlags.BooleanLiteral) {
380
+ base = this.intrinsic("boolean", () => this.raw.getBooleanType());
381
+ }
382
+ else {
383
+ base = type;
384
+ }
385
+ this.baseTypeOfLiteral.set(type, base);
386
+ return base;
387
+ }
388
+ intrinsic(name, fetch) {
389
+ let type = this.intrinsics.get(name);
390
+ if (type === undefined) {
391
+ type = fetch();
392
+ this.intrinsics.set(name, type);
393
+ }
394
+ return type;
395
+ }
396
+ /** 5.9.3's checker.getConstantValue, memoized per node. The one caller
397
+ * (enum lowering) passes ENUM MEMBER declaration nodes only: 7 answers
398
+ * the member's computed constant there for const and regular enums alike
399
+ * (access-expression queries answer const enums only — same as 5.9.3 —
400
+ * so the lowering resolves the member symbol and asks its declaration). */
401
+ getConstantValue(node) {
402
+ if (this.constantValueOf.has(node))
403
+ return this.constantValueOf.get(node);
404
+ const value = this.raw.getConstantValue(node);
405
+ this.constantValueOf.set(node, value);
406
+ return value;
407
+ }
408
+ constantValueOf = new WeakMap();
409
+ getNonNullableType(type) {
410
+ if (this.nonNullableType.has(type))
411
+ return this.nonNullableType.get(type) ?? type;
412
+ const result = this.raw.getNonNullableType(type);
413
+ this.nonNullableType.set(type, result);
414
+ return result ?? type;
415
+ }
416
+ getPropertiesOfType(type) {
417
+ let props = this.propertiesOfType.get(type);
418
+ if (props === undefined) {
419
+ props = this.raw.getPropertiesOfType(type);
420
+ this.propertiesOfType.set(type, props);
421
+ }
422
+ return props;
423
+ }
424
+ getIndexInfosOfType(type) {
425
+ let infos = this.indexInfosOfType.get(type);
426
+ if (infos === undefined) {
427
+ infos = this.raw.getIndexInfosOfType(type);
428
+ this.indexInfosOfType.set(type, infos);
429
+ }
430
+ return infos;
431
+ }
432
+ getTypeArguments(type) {
433
+ let args = this.typeArgumentsOf.get(type);
434
+ if (args === undefined) {
435
+ // 5.9.3 answered [] for a non-reference passed by cast (the lowering
436
+ // leans on that — a concretely-declared interface takes the same
437
+ // path as its generic @types twin); tsgo PANICS on it, so the
438
+ // reference check happens client-side (free — objectFlags).
439
+ args = type.isTypeReference() ? this.raw.getTypeArguments(type) : [];
440
+ this.typeArgumentsOf.set(type, args);
441
+ }
442
+ return args;
443
+ }
444
+ isArrayType(type) {
445
+ let answer = this.arrayTypeAnswer.get(type);
446
+ if (answer === undefined) {
447
+ answer = this.raw.isArrayType(type);
448
+ this.arrayTypeAnswer.set(type, answer);
449
+ }
450
+ return answer;
451
+ }
452
+ /** 5.9.3's checker.isTupleType answers true for tuple SHAPES and for
453
+ * REFERENCES to them (Pair<number>, a readonly [T, T] instantiation).
454
+ * The 7.0.2 client-side Type.isTupleType() sees only the shape — a
455
+ * reference answers false there (measured; the facade suite pins it) —
456
+ * so shape-true and non-object-false resolve locally and only object
457
+ * types that are not visibly tuples round-trip, memoized. */
458
+ isTupleType(type) {
459
+ if (type.isTupleType())
460
+ return true;
461
+ if (!(type.flags & TypeFlags.Object))
462
+ return false;
463
+ let answer = this.tupleTypeAnswer.get(type);
464
+ if (answer === undefined) {
465
+ answer = this.raw.isTupleType(type);
466
+ this.tupleTypeAnswer.set(type, answer);
467
+ }
468
+ return answer;
469
+ }
470
+ isArrayLikeType(type) {
471
+ let answer = this.arrayLikeAnswer.get(type);
472
+ if (answer === undefined) {
473
+ answer = this.raw.isArrayLikeType(type);
474
+ this.arrayLikeAnswer.set(type, answer);
475
+ }
476
+ return answer;
477
+ }
478
+ typeToString(type, enclosingDeclaration, flags) {
479
+ if (enclosingDeclaration === undefined && flags === undefined) {
480
+ let text = this.typeStringOf.get(type);
481
+ if (text === undefined) {
482
+ text = this.raw.typeToString(type);
483
+ this.typeStringOf.set(type, text);
484
+ }
485
+ return text;
486
+ }
487
+ return this.raw.typeToString(type, enclosingDeclaration, flags);
488
+ }
489
+ getTypeOfSymbolAtLocation(symbol, location) {
490
+ // Two-key query with one census call site: no memo, straight through.
491
+ return this.raw.getTypeOfSymbolAtLocation(symbol, location);
492
+ }
493
+ getUnknownType() {
494
+ this.unknownType ??= this.raw.getUnknownType();
495
+ return this.unknownType;
496
+ }
497
+ /** 7.0.2 dropped getAwaitedType (the census's one MISSING checker method).
498
+ * Shimmed per the survey: unwrap Promise/PromiseLike references through
499
+ * their type argument, distributing over unions. The client cannot BUILD
500
+ * union types, so a union whose arms unwrap to more than one distinct type
501
+ * returns undefined (callers fall back to the input; the census's one call
502
+ * site does exactly that) — a union like `T | PromiseLike<T>` collapses by
503
+ * object identity to T, which is the pattern that call site exists for. */
504
+ getAwaitedType(type) {
505
+ if (this.awaitedTypeOf.has(type))
506
+ return this.awaitedTypeOf.get(type);
507
+ const awaited = this.computeAwaitedType(type, 0);
508
+ this.awaitedTypeOf.set(type, awaited);
509
+ return awaited;
510
+ }
511
+ computeAwaitedType(type, depth) {
512
+ if (depth > 8)
513
+ return undefined; // matches 5.9.3's unwrap depth fence
514
+ if (type.isUnionType()) {
515
+ const arms = type.getTypes();
516
+ const awaited = arms.map((arm) => this.computeAwaitedType(arm, depth + 1));
517
+ if (awaited.some((arm) => arm === undefined))
518
+ return undefined;
519
+ // No arm was a promise: awaiting the union is the union itself
520
+ // (5.9.3 answers the input type — string | null stays string | null).
521
+ if (awaited.every((arm, i) => arm === arms[i]))
522
+ return type;
523
+ const distinct = [...new Set(awaited)];
524
+ return distinct.length === 1 ? distinct[0] : undefined;
525
+ }
526
+ const unwrapped = this.promiseArgumentOf(type);
527
+ if (unwrapped === null)
528
+ return type;
529
+ return this.computeAwaitedType(unwrapped, depth + 1);
530
+ }
531
+ /** The type argument of a Promise/PromiseLike reference, or null when the
532
+ * type is not one. Global-ness is approximated by symbol name — scriptc
533
+ * programs see the es2025 lib's Promise (the ambient world forces it). */
534
+ promiseArgumentOf(type) {
535
+ if (!type.isTypeReference())
536
+ return null;
537
+ const name = type.getTarget().getSymbol()?.name;
538
+ if (name !== "Promise" && name !== "PromiseLike")
539
+ return null;
540
+ const args = this.getTypeArguments(type);
541
+ return args[0] ?? null;
542
+ }
543
+ }
544
+ //# sourceMappingURL=checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/frontend/ts7/checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export { InternalSymbolName, ModifierFlags, NodeFlags, ScriptKind, ScriptTarget, SyntaxKind, TokenFlags, } from "typescript/unstable/ast";
2
+ export { DiagnosticCategory, ElementFlags, ModuleKind, NodeBuilderFlags, ObjectFlags, SignatureFlags, SignatureKind, SymbolFlags, TypeFlags, TypePredicateKind, } from "typescript/unstable/sync";
3
+ interface ModuleResolutionKindEnum {
4
+ readonly Unknown: number;
5
+ readonly Classic: number;
6
+ readonly Node10: number;
7
+ readonly Node16: number;
8
+ readonly NodeNext: number;
9
+ readonly Bundler: number;
10
+ readonly [key: string | number]: string | number;
11
+ }
12
+ export declare const ModuleResolutionKind: ModuleResolutionKindEnum;
13
+ export type ModuleResolutionKind = number;
14
+ /** Reverse-maps a numeric enum value to its TS7 key name ("ESNext",
15
+ * "Bundler") — the spelling tsgo's tsconfig JSON parser accepts (lowercased
16
+ * by the caller where needed). Symbolic by construction: the name comes from
17
+ * the enum object's own reverse mapping. */
18
+ export declare function enumKeyOf(enumObject: Record<string | number, string | number>, value: number): string | undefined;
@@ -0,0 +1,43 @@
1
+ /* The census's enum surface over typescript@7.0.2 (the plain "typescript"
2
+ * dependency — 5.9.3 lives under the "typescript5" alias, islands only; see
3
+ * adapter.ts for the two-world rules). Everything here re-exports
4
+ * SYMBOLICALLY from 7: the two
5
+ * worlds renumbered their enums (SyntaxKind 218/396 keys differ, TypeFlags
6
+ * 64/71, NodeFlags 33/41 — the survey's census), so a numeric constant copied
7
+ * from either world is a silent lie in the other. No numeric values appear in
8
+ * this module.
9
+ *
10
+ * Placement in 7.0.2 (probed): the AST-world enums ship from unstable/ast,
11
+ * the checker-world enums from unstable/sync. ModuleResolutionKind is the one
12
+ * census enum the package does not re-export from any public entry point —
13
+ * it lives in dist/enums (the #enums/* internal imports), which the exports
14
+ * map hides from bare-specifier imports but NOT from a direct file require;
15
+ * loadHiddenEnum resolves the package root and requires the enum module by
16
+ * path, so the values are still TypeScript 7's own, never copied numbers. */
17
+ import { createRequire } from "node:module";
18
+ import { dirname, join } from "node:path";
19
+ export { InternalSymbolName, ModifierFlags, NodeFlags, ScriptKind, ScriptTarget, SyntaxKind, TokenFlags, } from "typescript/unstable/ast";
20
+ export { DiagnosticCategory, ElementFlags, ModuleKind, NodeBuilderFlags, ObjectFlags, SignatureFlags, SignatureKind, SymbolFlags, TypeFlags, TypePredicateKind, } from "typescript/unstable/sync";
21
+ const require = createRequire(import.meta.url);
22
+ /** Loads one of typescript(7)'s dist/enums modules by file path (the exports
23
+ * map hides them; a path require does not go through it). The enum files are
24
+ * ESM, so this leans on Node's require(esm) — the repo floor is Node 24,
25
+ * where that is always available. */
26
+ function loadHiddenEnum(basename, key) {
27
+ const packageRoot = dirname(require.resolve("typescript/package.json"));
28
+ const mod = require(join(packageRoot, "dist", "enums", `${basename}.js`));
29
+ const value = mod[key];
30
+ if (value === undefined)
31
+ throw new Error(`typescript enum module ${basename} has no export ${key}`);
32
+ return value;
33
+ }
34
+ export const ModuleResolutionKind = loadHiddenEnum("moduleResolutionKind", "ModuleResolutionKind");
35
+ /** Reverse-maps a numeric enum value to its TS7 key name ("ESNext",
36
+ * "Bundler") — the spelling tsgo's tsconfig JSON parser accepts (lowercased
37
+ * by the caller where needed). Symbolic by construction: the name comes from
38
+ * the enum object's own reverse mapping. */
39
+ export function enumKeyOf(enumObject, value) {
40
+ const key = enumObject[value];
41
+ return typeof key === "string" ? key : undefined;
42
+ }
43
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/frontend/ts7/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;6EAe6E;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;qCAGqC;AACrC,SAAS,cAAc,CAAI,QAAgB,EAAE,GAAW;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAsB,CAAC;IAC/F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,kBAAkB,GAAG,EAAE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC;AACf,CAAC;AAiBD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,cAAc,CAA2B,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AAG3F;;;4CAG4C;AAC5C,MAAM,UAAU,SAAS,CAAC,UAAoD,EAAE,KAAa;IAC3F,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}