@scriptc/compiler 0.4.7 → 0.4.8

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 (776) hide show
  1. package/ambient/node-fallback/child_process.d.ts +71 -22
  2. package/ambient/node-fallback/crypto.d.ts +15 -7
  3. package/ambient/node-fallback/events.d.ts +23 -5
  4. package/ambient/node-fallback/fs.d.ts +3 -2
  5. package/ambient/node-fallback/http.d.ts +23 -17
  6. package/ambient/node-fallback/https.d.ts +5 -2
  7. package/ambient/node-fallback/net.d.ts +6 -0
  8. package/ambient/node-fallback/os.d.ts +11 -1
  9. package/ambient/node-fallback/path-posix.d.ts +6 -0
  10. package/ambient/node-fallback/path-win32.d.ts +5 -0
  11. package/ambient/node-fallback/path.d.ts +2 -0
  12. package/ambient/node-fallback/zlib.d.ts +31 -2
  13. package/ambient/scriptc-node-fallback.d.ts +37 -7
  14. package/ambient/scriptc.d.ts +7 -2
  15. package/dist/backend/executable-features.js +11 -3
  16. package/dist/backend/executable-features.js.map +1 -1
  17. package/dist/backend/library-pack.d.ts +6 -0
  18. package/dist/backend/library-pack.js +17 -6
  19. package/dist/backend/library-pack.js.map +1 -1
  20. package/dist/backend/library-pack.test.d.ts +1 -0
  21. package/dist/backend/library-pack.test.js +28 -0
  22. package/dist/backend/library-pack.test.js.map +1 -0
  23. package/dist/backend/linker.d.ts +9 -2
  24. package/dist/backend/linker.js +190 -32
  25. package/dist/backend/linker.js.map +1 -1
  26. package/dist/backend/lld.d.ts +8 -4
  27. package/dist/backend/lld.js +19 -13
  28. package/dist/backend/lld.js.map +1 -1
  29. package/dist/backend/lld.test.js +3 -1
  30. package/dist/backend/lld.test.js.map +1 -1
  31. package/dist/backend/llvm/alloc.d.ts +15 -2
  32. package/dist/backend/llvm/alloc.js +172 -36
  33. package/dist/backend/llvm/alloc.js.map +1 -1
  34. package/dist/backend/llvm/alloc.test.js +69 -1
  35. package/dist/backend/llvm/alloc.test.js.map +1 -1
  36. package/dist/backend/llvm/arenas.d.ts +17 -4
  37. package/dist/backend/llvm/arenas.js +105 -10
  38. package/dist/backend/llvm/arenas.js.map +1 -1
  39. package/dist/backend/llvm/arenas.test.js +229 -0
  40. package/dist/backend/llvm/arenas.test.js.map +1 -1
  41. package/dist/backend/llvm/bytes-alias.js +10 -1
  42. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  43. package/dist/backend/llvm/bytes-headers.js +6 -0
  44. package/dist/backend/llvm/bytes-headers.js.map +1 -1
  45. package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
  46. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  47. package/dist/backend/llvm/call-lifetimes.js +10 -0
  48. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  49. package/dist/backend/llvm/classes.d.ts +16 -9
  50. package/dist/backend/llvm/classes.js +142 -37
  51. package/dist/backend/llvm/classes.js.map +1 -1
  52. package/dist/backend/llvm/classes.test.js +42 -0
  53. package/dist/backend/llvm/classes.test.js.map +1 -1
  54. package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
  55. package/dist/backend/llvm/cpu-dispatch.js +31 -7
  56. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  57. package/dist/backend/llvm/dyn.d.ts +12 -3
  58. package/dist/backend/llvm/dyn.js +31 -7
  59. package/dist/backend/llvm/dyn.js.map +1 -1
  60. package/dist/backend/llvm/emit-function.js +67 -4
  61. package/dist/backend/llvm/emit-function.js.map +1 -1
  62. package/dist/backend/llvm/emit-module.js +90 -39
  63. package/dist/backend/llvm/emit-module.js.map +1 -1
  64. package/dist/backend/llvm/emit-module.test.d.ts +1 -0
  65. package/dist/backend/llvm/emit-module.test.js +52 -0
  66. package/dist/backend/llvm/emit-module.test.js.map +1 -0
  67. package/dist/backend/llvm/emit-statements.js +99 -15
  68. package/dist/backend/llvm/emit-statements.js.map +1 -1
  69. package/dist/backend/llvm/emitter.d.ts +113 -8
  70. package/dist/backend/llvm/emitter.js +438 -67
  71. package/dist/backend/llvm/emitter.js.map +1 -1
  72. package/dist/backend/llvm/emitter.test.js +31 -3
  73. package/dist/backend/llvm/emitter.test.js.map +1 -1
  74. package/dist/backend/llvm/expr-async.js +19 -1
  75. package/dist/backend/llvm/expr-async.js.map +1 -1
  76. package/dist/backend/llvm/expr-bytes.js +16 -1
  77. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  78. package/dist/backend/llvm/expr-calls.js +18 -2
  79. package/dist/backend/llvm/expr-calls.js.map +1 -1
  80. package/dist/backend/llvm/expr-dynamic.js +31 -10
  81. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  82. package/dist/backend/llvm/expr-primitives.js +31 -3
  83. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  84. package/dist/backend/llvm/expr-records.d.ts +1 -1
  85. package/dist/backend/llvm/expr-records.js +124 -56
  86. package/dist/backend/llvm/expr-records.js.map +1 -1
  87. package/dist/backend/llvm/expr-stream-bridges.js +17 -0
  88. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  89. package/dist/backend/llvm/js-groups.d.ts +21 -0
  90. package/dist/backend/llvm/js-groups.js +277 -0
  91. package/dist/backend/llvm/js-groups.js.map +1 -0
  92. package/dist/backend/llvm/js-ic.d.ts +19 -1
  93. package/dist/backend/llvm/js-ic.js +96 -23
  94. package/dist/backend/llvm/js-ic.js.map +1 -1
  95. package/dist/backend/llvm/lib-dispatch.js +132 -1
  96. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  97. package/dist/backend/llvm/lib-network.js +33 -6
  98. package/dist/backend/llvm/lib-network.js.map +1 -1
  99. package/dist/backend/llvm/lib-process.js +44 -3
  100. package/dist/backend/llvm/lib-process.js.map +1 -1
  101. package/dist/backend/llvm/lib-shared.js +69 -2
  102. package/dist/backend/llvm/lib-shared.js.map +1 -1
  103. package/dist/backend/llvm/local-union-storage.test.js +32 -0
  104. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  105. package/dist/backend/llvm/loop-state.js +7 -2
  106. package/dist/backend/llvm/loop-state.js.map +1 -1
  107. package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
  108. package/dist/backend/llvm/map-entry-fusion.js +3 -3
  109. package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
  110. package/dist/backend/llvm/map-number-lookup.test.js +6 -6
  111. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  112. package/dist/backend/llvm/nullable-unions.js +7 -6
  113. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  114. package/dist/backend/llvm/nullable-unions.test.js +4 -1
  115. package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
  116. package/dist/backend/llvm/receivers.js +3 -0
  117. package/dist/backend/llvm/receivers.js.map +1 -1
  118. package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
  119. package/dist/backend/llvm/record-entry-fusion.js +217 -0
  120. package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
  121. package/dist/backend/llvm/record-results.d.ts +5 -2
  122. package/dist/backend/llvm/record-results.js +13 -12
  123. package/dist/backend/llvm/record-results.js.map +1 -1
  124. package/dist/backend/llvm/record-views.js +12 -6
  125. package/dist/backend/llvm/record-views.js.map +1 -1
  126. package/dist/backend/llvm/reference-effects.js +1 -0
  127. package/dist/backend/llvm/reference-effects.js.map +1 -1
  128. package/dist/backend/llvm/reference-writes.js +3 -0
  129. package/dist/backend/llvm/reference-writes.js.map +1 -1
  130. package/dist/backend/llvm/region-ir.js +1 -0
  131. package/dist/backend/llvm/region-ir.js.map +1 -1
  132. package/dist/backend/llvm/region-sites.d.ts +18 -0
  133. package/dist/backend/llvm/region-sites.js +79 -1
  134. package/dist/backend/llvm/region-sites.js.map +1 -1
  135. package/dist/backend/llvm/runtime-registries.test.js +53 -6
  136. package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
  137. package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
  138. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  139. package/dist/backend/llvm/shapes.d.ts +33 -3
  140. package/dist/backend/llvm/shapes.js +183 -13
  141. package/dist/backend/llvm/shapes.js.map +1 -1
  142. package/dist/backend/llvm/stack-objects.d.ts +1 -2
  143. package/dist/backend/llvm/stack-objects.js +8 -5
  144. package/dist/backend/llvm/stack-objects.js.map +1 -1
  145. package/dist/backend/llvm/walkers.d.ts +12 -0
  146. package/dist/backend/llvm/walkers.js +46 -2
  147. package/dist/backend/llvm/walkers.js.map +1 -1
  148. package/dist/backend/may-throw.js +12 -2
  149. package/dist/backend/may-throw.js.map +1 -1
  150. package/dist/backend/may-throw.test.js +13 -0
  151. package/dist/backend/may-throw.test.js.map +1 -1
  152. package/dist/backend/native/contracts.d.ts +48 -8
  153. package/dist/backend/native/executable.js +55 -13
  154. package/dist/backend/native/executable.js.map +1 -1
  155. package/dist/backend/native/helper-identity-record.d.ts +11 -0
  156. package/dist/backend/native/helper-identity-record.js +76 -0
  157. package/dist/backend/native/helper-identity-record.js.map +1 -0
  158. package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
  159. package/dist/backend/native/helper-identity-record.test.js +101 -0
  160. package/dist/backend/native/helper-identity-record.test.js.map +1 -0
  161. package/dist/backend/native/library.js +9 -1
  162. package/dist/backend/native/library.js.map +1 -1
  163. package/dist/backend/native/runtime-inputs.js +4 -1
  164. package/dist/backend/native/runtime-inputs.js.map +1 -1
  165. package/dist/backend/native/vendor.d.ts +1 -1
  166. package/dist/backend/native/vendor.js +1 -1
  167. package/dist/backend/native/vendor.js.map +1 -1
  168. package/dist/backend/native-codegen-core.d.ts +13 -10
  169. package/dist/backend/native-codegen-core.js +26 -13
  170. package/dist/backend/native-codegen-core.js.map +1 -1
  171. package/dist/backend/native-codegen.js +27 -8
  172. package/dist/backend/native-codegen.js.map +1 -1
  173. package/dist/backend/native-codegen.test.js +110 -14
  174. package/dist/backend/native-codegen.test.js.map +1 -1
  175. package/dist/backend/native-link-info-core.d.ts +37 -8
  176. package/dist/backend/native-link-info-core.js.map +1 -1
  177. package/dist/backend/runtime-pack-core.d.ts +17 -2
  178. package/dist/backend/runtime-pack-core.js +18 -3
  179. package/dist/backend/runtime-pack-core.js.map +1 -1
  180. package/dist/backend/runtime-pack-targets.test.js +1 -1
  181. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  182. package/dist/backend/runtime-pack.test.js +211 -2
  183. package/dist/backend/runtime-pack.test.js.map +1 -1
  184. package/dist/backend/tree-classes.d.ts +42 -0
  185. package/dist/backend/tree-classes.js +723 -0
  186. package/dist/backend/tree-classes.js.map +1 -0
  187. package/dist/backend/tree-classes.test.d.ts +1 -0
  188. package/dist/backend/tree-classes.test.js +338 -0
  189. package/dist/backend/tree-classes.test.js.map +1 -0
  190. package/dist/backend/vendor-archives.d.ts +5 -1
  191. package/dist/backend/vendor-archives.js +51 -7
  192. package/dist/backend/vendor-archives.js.map +1 -1
  193. package/dist/backend/vendor-inputs.d.ts +25 -4
  194. package/dist/backend/vendor-inputs.js +68 -4
  195. package/dist/backend/vendor-inputs.js.map +1 -1
  196. package/dist/backend/vendor-inputs.test.js +35 -1
  197. package/dist/backend/vendor-inputs.test.js.map +1 -1
  198. package/dist/backend/warm-cache.js +1 -1
  199. package/dist/backend/warm-cache.js.map +1 -1
  200. package/dist/compat/fetch-profile.js +2 -2
  201. package/dist/coverage/report.js +47 -0
  202. package/dist/coverage/report.js.map +1 -1
  203. package/dist/coverage/surface-manifest.js +1 -1
  204. package/dist/diagnostics/codes.d.ts +8 -0
  205. package/dist/diagnostics/codes.js +8 -0
  206. package/dist/diagnostics/codes.js.map +1 -1
  207. package/dist/diagnostics/diagnostic.d.ts +27 -9
  208. package/dist/diagnostics/diagnostic.js +60 -19
  209. package/dist/diagnostics/diagnostic.js.map +1 -1
  210. package/dist/diagnostics/envelope.d.ts +18 -0
  211. package/dist/diagnostics/envelope.js.map +1 -1
  212. package/dist/executable/executable-cache.d.ts +21 -2
  213. package/dist/executable/executable-cache.js +21 -1
  214. package/dist/executable/executable-cache.js.map +1 -1
  215. package/dist/executable/executable-cache.test.js +123 -1
  216. package/dist/executable/executable-cache.test.js.map +1 -1
  217. package/dist/executable/prepare.js +199 -248
  218. package/dist/executable/prepare.js.map +1 -1
  219. package/dist/frontend/analysis.js +200 -18
  220. package/dist/frontend/analysis.js.map +1 -1
  221. package/dist/frontend/builtin-modules.d.ts +4 -0
  222. package/dist/frontend/builtin-modules.js +10 -0
  223. package/dist/frontend/builtin-modules.js.map +1 -1
  224. package/dist/frontend/early-errors.d.ts +12 -2
  225. package/dist/frontend/early-errors.js +535 -4
  226. package/dist/frontend/early-errors.js.map +1 -1
  227. package/dist/frontend/early-errors.test.js +165 -0
  228. package/dist/frontend/early-errors.test.js.map +1 -1
  229. package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
  230. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  231. package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
  232. package/dist/frontend/jsx-opinion-sites.test.js +86 -0
  233. package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
  234. package/dist/frontend/lib-exports.d.ts +23 -4
  235. package/dist/frontend/lib-exports.js +98 -26
  236. package/dist/frontend/lib-exports.js.map +1 -1
  237. package/dist/frontend/lowering/binding-analysis.js +21 -3
  238. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  239. package/dist/frontend/lowering/buffers.d.ts +8 -0
  240. package/dist/frontend/lowering/buffers.js +43 -0
  241. package/dist/frontend/lowering/buffers.js.map +1 -0
  242. package/dist/frontend/lowering/builtin-calls.js +4 -0
  243. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  244. package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
  245. package/dist/frontend/lowering/builtin-namespaces.js +24 -3
  246. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  247. package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
  248. package/dist/frontend/lowering/builtin-statics.js +407 -0
  249. package/dist/frontend/lowering/builtin-statics.js.map +1 -0
  250. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  251. package/dist/frontend/lowering/builtins/arguments.js +12 -0
  252. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  253. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
  254. package/dist/frontend/lowering/builtins/atomics.js +87 -1
  255. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  256. package/dist/frontend/lowering/builtins/child-process-methods.js +2 -2
  257. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  258. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
  259. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
  260. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  261. package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
  262. package/dist/frontend/lowering/builtins/child-process.js +560 -27
  263. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  264. package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
  265. package/dist/frontend/lowering/builtins/compression.js +41 -21
  266. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  267. package/dist/frontend/lowering/builtins/constants.js +7 -2
  268. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  269. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
  270. package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
  271. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  272. package/dist/frontend/lowering/builtins/json.js +4 -0
  273. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  274. package/dist/frontend/lowering/builtins/module-calls.js +3 -1
  275. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  276. package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
  277. package/dist/frontend/lowering/builtins/numbers.js +10 -2
  278. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  279. package/dist/frontend/lowering/builtins/operating-system.d.ts +6 -3
  280. package/dist/frontend/lowering/builtins/operating-system.js +96 -16
  281. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  282. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  283. package/dist/frontend/lowering/builtins/process.js +103 -8
  284. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  285. package/dist/frontend/lowering/builtins/promises.js +169 -8
  286. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  287. package/dist/frontend/lowering/builtins/properties.js +6 -2
  288. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  289. package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
  290. package/dist/frontend/lowering/builtins/readline.js +180 -36
  291. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  292. package/dist/frontend/lowering/builtins/url.js +35 -12
  293. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  294. package/dist/frontend/lowering/builtins/webassembly.js +2 -0
  295. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  296. package/dist/frontend/lowering/call-arguments.d.ts +10 -0
  297. package/dist/frontend/lowering/call-arguments.js +37 -2
  298. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  299. package/dist/frontend/lowering/call-signatures.d.ts +10 -0
  300. package/dist/frontend/lowering/call-signatures.js +103 -0
  301. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  302. package/dist/frontend/lowering/class-construction.d.ts +14 -2
  303. package/dist/frontend/lowering/class-construction.js +99 -5
  304. package/dist/frontend/lowering/class-construction.js.map +1 -1
  305. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +9 -0
  306. package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
  307. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  308. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
  309. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  310. package/dist/frontend/lowering/class-prototypes.js +20 -15
  311. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  312. package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
  313. package/dist/frontend/lowering/class-runtime-statics.js +20 -1
  314. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  315. package/dist/frontend/lowering/class-unions.js +21 -4
  316. package/dist/frontend/lowering/class-unions.js.map +1 -1
  317. package/dist/frontend/lowering/coercions/function-adapters.js +9 -0
  318. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  319. package/dist/frontend/lowering/coercions/state.d.ts +8 -0
  320. package/dist/frontend/lowering/coercions/state.js +17 -0
  321. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  322. package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
  323. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  324. package/dist/frontend/lowering/coercions/structural.js +10 -1
  325. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  326. package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
  327. package/dist/frontend/lowering/coercions/unions.js +54 -10
  328. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  329. package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
  330. package/dist/frontend/lowering/constructor-returns.js +284 -58
  331. package/dist/frontend/lowering/constructor-returns.js.map +1 -1
  332. package/dist/frontend/lowering/containers/array-callbacks.js +156 -62
  333. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  334. package/dist/frontend/lowering/containers/array-construction.js +21 -3
  335. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  336. package/dist/frontend/lowering/containers/array-from-async.js +139 -3
  337. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  338. package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
  339. package/dist/frontend/lowering/containers/array-iteration.js +24 -7
  340. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
  341. package/dist/frontend/lowering/containers/array-methods.js +14 -11
  342. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  343. package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
  344. package/dist/frontend/lowering/containers/bytes.js +446 -86
  345. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  346. package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
  347. package/dist/frontend/lowering/containers/callback-arguments.js +21 -12
  348. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  349. package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
  350. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  351. package/dist/frontend/lowering/containers/collection-methods.js +52 -17
  352. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  353. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
  354. package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
  355. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  356. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
  357. package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
  358. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  359. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  360. package/dist/frontend/lowering/crypto-tables.js +5 -5
  361. package/dist/frontend/lowering/dispatch-sites.js +3 -0
  362. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  363. package/dist/frontend/lowering/divergences.d.ts +40 -0
  364. package/dist/frontend/lowering/divergences.js +239 -20
  365. package/dist/frontend/lowering/divergences.js.map +1 -1
  366. package/dist/frontend/lowering/effect-free.d.ts +12 -0
  367. package/dist/frontend/lowering/effect-free.js +44 -0
  368. package/dist/frontend/lowering/effect-free.js.map +1 -0
  369. package/dist/frontend/lowering/expressions/array-literals.d.ts +10 -0
  370. package/dist/frontend/lowering/expressions/array-literals.js +62 -0
  371. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  372. package/dist/frontend/lowering/expressions/binary.js +115 -5
  373. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  374. package/dist/frontend/lowering/expressions/element-access.js +151 -7
  375. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  376. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
  377. package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
  378. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
  379. package/dist/frontend/lowering/expressions/identifiers.js +31 -2
  380. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  381. package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
  382. package/dist/frontend/lowering/expressions/narrowing.js +175 -22
  383. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  384. package/dist/frontend/lowering/expressions/object-literals.js +173 -11
  385. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  386. package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
  387. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  388. package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
  389. package/dist/frontend/lowering/expressions/property-access.js +379 -109
  390. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  391. package/dist/frontend/lowering/expressions/relational.js +237 -7
  392. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  393. package/dist/frontend/lowering/expressions/typeof.js +8 -0
  394. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  395. package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
  396. package/dist/frontend/lowering/expressions/union-fields.js +103 -13
  397. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  398. package/dist/frontend/lowering/expressions/updates.js +74 -55
  399. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  400. package/dist/frontend/lowering/function-returns.js +37 -10
  401. package/dist/frontend/lowering/function-returns.js.map +1 -1
  402. package/dist/frontend/lowering/general-streams.js +5 -0
  403. package/dist/frontend/lowering/general-streams.js.map +1 -1
  404. package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
  405. package/dist/frontend/lowering/generator-delegation.js +301 -118
  406. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  407. package/dist/frontend/lowering/generic-functions.d.ts +27 -1
  408. package/dist/frontend/lowering/generic-functions.js +432 -18
  409. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  410. package/dist/frontend/lowering/global-function-values.d.ts +25 -0
  411. package/dist/frontend/lowering/global-function-values.js +193 -0
  412. package/dist/frontend/lowering/global-function-values.js.map +1 -0
  413. package/dist/frontend/lowering/global-values.d.ts +6 -4
  414. package/dist/frontend/lowering/global-values.js +24 -10
  415. package/dist/frontend/lowering/global-values.js.map +1 -1
  416. package/dist/frontend/lowering/host-global-values.d.ts +31 -0
  417. package/dist/frontend/lowering/host-global-values.js +121 -0
  418. package/dist/frontend/lowering/host-global-values.js.map +1 -0
  419. package/dist/frontend/lowering/host-globals.d.ts +74 -0
  420. package/dist/frontend/lowering/host-globals.js +344 -0
  421. package/dist/frontend/lowering/host-globals.js.map +1 -0
  422. package/dist/frontend/lowering/http2-constants.js +1 -1
  423. package/dist/frontend/lowering/iterator-adapters.js +46 -17
  424. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  425. package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
  426. package/dist/frontend/lowering/iterator-prototype.js +160 -0
  427. package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
  428. package/dist/frontend/lowering/key-order-witness.js +43 -22
  429. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  430. package/dist/frontend/lowering/key-order-witness.test.js +1 -0
  431. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  432. package/dist/frontend/lowering/lib-boundary.js +11 -3
  433. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  434. package/dist/frontend/lowering/lower-assert.js +30 -15
  435. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  436. package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
  437. package/dist/frontend/lowering/lower-async-iteration.js +15 -0
  438. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  439. package/dist/frontend/lowering/lower-builtin-values.js +11 -1
  440. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  441. package/dist/frontend/lowering/lower-calls.d.ts +25 -0
  442. package/dist/frontend/lowering/lower-calls.js +929 -227
  443. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  444. package/dist/frontend/lowering/lower-calls.test.js +59 -16
  445. package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
  446. package/dist/frontend/lowering/lower-classes.d.ts +20 -0
  447. package/dist/frontend/lowering/lower-classes.js +468 -44
  448. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  449. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
  450. package/dist/frontend/lowering/lower-event-emitter.js +253 -83
  451. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  452. package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
  453. package/dist/frontend/lowering/lower-exprs.js +71 -20
  454. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  455. package/dist/frontend/lowering/lower-functions.js +25 -6
  456. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  457. package/dist/frontend/lowering/lower-generators.js +57 -10
  458. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  459. package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
  460. package/dist/frontend/lowering/lower-global-value.js +14 -5
  461. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  462. package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
  463. package/dist/frontend/lowering/lower-inspect.js +638 -64
  464. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  465. package/dist/frontend/lowering/lower-modules.js +48 -2
  466. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  467. package/dist/frontend/lowering/lower-namespaces.js +18 -0
  468. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  469. package/dist/frontend/lowering/lower-node-island.js +16 -6
  470. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  471. package/dist/frontend/lowering/lower-server.js +303 -87
  472. package/dist/frontend/lowering/lower-server.js.map +1 -1
  473. package/dist/frontend/lowering/lower-stdlib.js +45 -0
  474. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  475. package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
  476. package/dist/frontend/lowering/lower-stmts.js +270 -52
  477. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  478. package/dist/frontend/lowering/lower-timers.js +110 -27
  479. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  480. package/dist/frontend/lowering/lower-url.js +6 -3
  481. package/dist/frontend/lowering/lower-url.js.map +1 -1
  482. package/dist/frontend/lowering/lowerer.d.ts +227 -21
  483. package/dist/frontend/lowering/lowerer.js +651 -92
  484. package/dist/frontend/lowering/lowerer.js.map +1 -1
  485. package/dist/frontend/lowering/lowerer.test.js +18 -0
  486. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  487. package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
  488. package/dist/frontend/lowering/lowering-facts.js +323 -0
  489. package/dist/frontend/lowering/lowering-facts.js.map +1 -0
  490. package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
  491. package/dist/frontend/lowering/lowering-facts.test.js +100 -0
  492. package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
  493. package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
  494. package/dist/frontend/lowering/nan-coded-reads.js +112 -9
  495. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  496. package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
  497. package/dist/frontend/lowering/optional-arguments.js +26 -2
  498. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  499. package/dist/frontend/lowering/partial-assertions.d.ts +0 -3
  500. package/dist/frontend/lowering/partial-assertions.js +9 -15
  501. package/dist/frontend/lowering/partial-assertions.js.map +1 -1
  502. package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
  503. package/dist/frontend/lowering/primitive-throws.js +241 -0
  504. package/dist/frontend/lowering/primitive-throws.js.map +1 -0
  505. package/dist/frontend/lowering/primitive-wrappers.js +1 -0
  506. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
  507. package/dist/frontend/lowering/record-inherited.d.ts +17 -1
  508. package/dist/frontend/lowering/record-inherited.js +16 -2
  509. package/dist/frontend/lowering/record-inherited.js.map +1 -1
  510. package/dist/frontend/lowering/record-links.d.ts +73 -0
  511. package/dist/frontend/lowering/record-links.js +797 -0
  512. package/dist/frontend/lowering/record-links.js.map +1 -0
  513. package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
  514. package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
  515. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  516. package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
  517. package/dist/frontend/lowering/runtime-optional-report.js +300 -0
  518. package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
  519. package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
  520. package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
  521. package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
  522. package/dist/frontend/lowering/static-typeof.d.ts +3 -1
  523. package/dist/frontend/lowering/static-typeof.js +6 -1
  524. package/dist/frontend/lowering/static-typeof.js.map +1 -1
  525. package/dist/frontend/lowering/strict-mode.d.ts +1 -5
  526. package/dist/frontend/lowering/strict-mode.js +4 -30
  527. package/dist/frontend/lowering/strict-mode.js.map +1 -1
  528. package/dist/frontend/lowering/structural-instances.d.ts +7 -0
  529. package/dist/frontend/lowering/structural-instances.js +23 -0
  530. package/dist/frontend/lowering/structural-instances.js.map +1 -1
  531. package/dist/frontend/lowering/surfaces.d.ts +15 -1
  532. package/dist/frontend/lowering/surfaces.js +78 -10
  533. package/dist/frontend/lowering/surfaces.js.map +1 -1
  534. package/dist/frontend/lowering/union-retag.d.ts +13 -1
  535. package/dist/frontend/lowering/union-retag.js +55 -1
  536. package/dist/frontend/lowering/union-retag.js.map +1 -1
  537. package/dist/frontend/lowering/union-retag.test.js +51 -0
  538. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  539. package/dist/frontend/lowering/unit-journal.d.ts +8 -0
  540. package/dist/frontend/lowering/unit-journal.js +14 -0
  541. package/dist/frontend/lowering/unit-journal.js.map +1 -1
  542. package/dist/frontend/lowering/unit-journal.test.js +36 -1
  543. package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
  544. package/dist/frontend/lowering/zlib-constants.js +3 -2
  545. package/dist/frontend/lowering/zlib-constants.js.map +1 -1
  546. package/dist/frontend/npm-static.js +78 -9
  547. package/dist/frontend/npm-static.js.map +1 -1
  548. package/dist/frontend/npm-static.test.js +95 -2
  549. package/dist/frontend/npm-static.test.js.map +1 -1
  550. package/dist/frontend/pipeline.d.ts +5 -4
  551. package/dist/frontend/pipeline.js +94 -31
  552. package/dist/frontend/pipeline.js.map +1 -1
  553. package/dist/frontend/pipeline.test.js +68 -11
  554. package/dist/frontend/pipeline.test.js.map +1 -1
  555. package/dist/frontend/program.d.ts +62 -2
  556. package/dist/frontend/program.js +695 -422
  557. package/dist/frontend/program.js.map +1 -1
  558. package/dist/frontend/program.test.js +37 -1
  559. package/dist/frontend/program.test.js.map +1 -1
  560. package/dist/frontend/services-node.d.ts +7 -0
  561. package/dist/frontend/services-node.js +32 -1
  562. package/dist/frontend/services-node.js.map +1 -1
  563. package/dist/frontend/services-node.test.js +51 -0
  564. package/dist/frontend/services-node.test.js.map +1 -1
  565. package/dist/frontend/shape-inference/overlay.js +68 -2
  566. package/dist/frontend/shape-inference/overlay.js.map +1 -1
  567. package/dist/frontend/tier-analysis.d.ts +9 -0
  568. package/dist/frontend/tier-analysis.js +1 -0
  569. package/dist/frontend/tier-analysis.js.map +1 -1
  570. package/dist/frontend/tsc-codes.d.ts +57 -3
  571. package/dist/frontend/tsc-codes.js +935 -150
  572. package/dist/frontend/tsc-codes.js.map +1 -1
  573. package/dist/frontend/tsc-codes.test.js +221 -12
  574. package/dist/frontend/tsc-codes.test.js.map +1 -1
  575. package/dist/frontend/type-mapper.d.ts +91 -9
  576. package/dist/frontend/type-mapper.js +622 -181
  577. package/dist/frontend/type-mapper.js.map +1 -1
  578. package/dist/index.d.ts +1 -1
  579. package/dist/index.js +80 -15
  580. package/dist/index.js.map +1 -1
  581. package/dist/index.test.d.ts +1 -0
  582. package/dist/index.test.js +60 -0
  583. package/dist/index.test.js.map +1 -0
  584. package/dist/ir/builtin-effects.js +43 -0
  585. package/dist/ir/builtin-effects.js.map +1 -1
  586. package/dist/ir/builtin-signatures.d.ts +1 -1
  587. package/dist/ir/builtin-signatures.js +242 -16
  588. package/dist/ir/builtin-signatures.js.map +1 -1
  589. package/dist/ir/callback-specialization.d.ts +3 -2
  590. package/dist/ir/callback-specialization.js +35 -25
  591. package/dist/ir/callback-specialization.js.map +1 -1
  592. package/dist/ir/capture-values.d.ts +8 -4
  593. package/dist/ir/capture-values.js +9 -6
  594. package/dist/ir/capture-values.js.map +1 -1
  595. package/dist/ir/char-unit-locals.d.ts +6 -2
  596. package/dist/ir/char-unit-locals.js +11 -2
  597. package/dist/ir/char-unit-locals.js.map +1 -1
  598. package/dist/ir/class-key-index.d.ts +18 -0
  599. package/dist/ir/class-key-index.js +29 -0
  600. package/dist/ir/class-key-index.js.map +1 -0
  601. package/dist/ir/class-key-index.test.d.ts +1 -0
  602. package/dist/ir/class-key-index.test.js +25 -0
  603. package/dist/ir/class-key-index.test.js.map +1 -0
  604. package/dist/ir/codec.generated.d.ts +1 -1
  605. package/dist/ir/codec.generated.js +724 -648
  606. package/dist/ir/codec.generated.js.map +1 -1
  607. package/dist/ir/constant-globals.d.ts +5 -2
  608. package/dist/ir/constant-globals.js +25 -27
  609. package/dist/ir/constant-globals.js.map +1 -1
  610. package/dist/ir/expression-inlining.d.ts +4 -2
  611. package/dist/ir/expression-inlining.js +8 -2
  612. package/dist/ir/expression-inlining.js.map +1 -1
  613. package/dist/ir/field-values.d.ts +5 -2
  614. package/dist/ir/field-values.js +32 -21
  615. package/dist/ir/field-values.js.map +1 -1
  616. package/dist/ir/fields.generated.d.ts +11 -2
  617. package/dist/ir/fields.generated.js +8 -0
  618. package/dist/ir/fields.generated.js.map +1 -1
  619. package/dist/ir/final-fields.js +1 -1
  620. package/dist/ir/final-fields.js.map +1 -1
  621. package/dist/ir/function-references.d.ts +5 -4
  622. package/dist/ir/function-references.js +7 -4
  623. package/dist/ir/function-references.js.map +1 -1
  624. package/dist/ir/function-references.test.js +7 -0
  625. package/dist/ir/function-references.test.js.map +1 -1
  626. package/dist/ir/init-only-globals.d.ts +4 -2
  627. package/dist/ir/init-only-globals.js +17 -18
  628. package/dist/ir/init-only-globals.js.map +1 -1
  629. package/dist/ir/inline-array-views.js +1 -0
  630. package/dist/ir/inline-array-views.js.map +1 -1
  631. package/dist/ir/int32-slots.js +7 -0
  632. package/dist/ir/int32-slots.js.map +1 -1
  633. package/dist/ir/ir.d.ts +59 -4
  634. package/dist/ir/ir.js +7 -0
  635. package/dist/ir/ir.js.map +1 -1
  636. package/dist/ir/js-groups.d.ts +51 -0
  637. package/dist/ir/js-groups.js +394 -0
  638. package/dist/ir/js-groups.js.map +1 -0
  639. package/dist/ir/js-groups.test.d.ts +1 -0
  640. package/dist/ir/js-groups.test.js +555 -0
  641. package/dist/ir/js-groups.test.js.map +1 -0
  642. package/dist/ir/js-ic.js +30 -5
  643. package/dist/ir/js-ic.js.map +1 -1
  644. package/dist/ir/js-ic.test.js +27 -1
  645. package/dist/ir/js-ic.test.js.map +1 -1
  646. package/dist/ir/node-index.d.ts +23 -6
  647. package/dist/ir/node-index.js +126 -49
  648. package/dist/ir/node-index.js.map +1 -1
  649. package/dist/ir/numeric-call-specialization.d.ts +4 -2
  650. package/dist/ir/numeric-call-specialization.js +40 -26
  651. package/dist/ir/numeric-call-specialization.js.map +1 -1
  652. package/dist/ir/paired-while-loops.d.ts +4 -2
  653. package/dist/ir/paired-while-loops.js +8 -2
  654. package/dist/ir/paired-while-loops.js.map +1 -1
  655. package/dist/ir/parameter-versions.d.ts +13 -4
  656. package/dist/ir/parameter-versions.js +63 -42
  657. package/dist/ir/parameter-versions.js.map +1 -1
  658. package/dist/ir/property-bags.d.ts +4 -2
  659. package/dist/ir/property-bags.js +22 -17
  660. package/dist/ir/property-bags.js.map +1 -1
  661. package/dist/ir/row-pairs.d.ts +4 -2
  662. package/dist/ir/row-pairs.js +12 -11
  663. package/dist/ir/row-pairs.js.map +1 -1
  664. package/dist/ir/runtime-features.d.ts +87 -12
  665. package/dist/ir/runtime-features.js +263 -160
  666. package/dist/ir/runtime-features.js.map +1 -1
  667. package/dist/ir/runtime-features.test.js +109 -139
  668. package/dist/ir/runtime-features.test.js.map +1 -1
  669. package/dist/ir/runtime-jam-loops.d.ts +35 -0
  670. package/dist/ir/runtime-jam-loops.js +604 -0
  671. package/dist/ir/runtime-jam-loops.js.map +1 -0
  672. package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
  673. package/dist/ir/runtime-jam-loops.test.js +565 -0
  674. package/dist/ir/runtime-jam-loops.test.js.map +1 -0
  675. package/dist/ir/saturating-loop-jams.d.ts +4 -2
  676. package/dist/ir/saturating-loop-jams.js +11 -10
  677. package/dist/ir/saturating-loop-jams.js.map +1 -1
  678. package/dist/ir/scalar-records.d.ts +5 -2
  679. package/dist/ir/scalar-records.js +12 -2
  680. package/dist/ir/scalar-records.js.map +1 -1
  681. package/dist/ir/self-captures.d.ts +4 -2
  682. package/dist/ir/self-captures.js +32 -27
  683. package/dist/ir/self-captures.js.map +1 -1
  684. package/dist/ir/serialize.d.ts +6 -1
  685. package/dist/ir/serialize.js +87 -23
  686. package/dist/ir/serialize.js.map +1 -1
  687. package/dist/ir/serialize.test.js +26 -0
  688. package/dist/ir/serialize.test.js.map +1 -1
  689. package/dist/ir/tiers.js +1 -0
  690. package/dist/ir/tiers.js.map +1 -1
  691. package/dist/ir/traverse.js +4 -0
  692. package/dist/ir/traverse.js.map +1 -1
  693. package/dist/ir/typed-argument-clones.d.ts +30 -0
  694. package/dist/ir/typed-argument-clones.js +789 -0
  695. package/dist/ir/typed-argument-clones.js.map +1 -0
  696. package/dist/ir/union-arm-loops.d.ts +3 -0
  697. package/dist/ir/union-arm-loops.js +373 -0
  698. package/dist/ir/union-arm-loops.js.map +1 -0
  699. package/dist/ir/union-arm-loops.test.d.ts +1 -0
  700. package/dist/ir/union-arm-loops.test.js +230 -0
  701. package/dist/ir/union-arm-loops.test.js.map +1 -0
  702. package/dist/ir/validate.js +88 -18
  703. package/dist/ir/validate.js.map +1 -1
  704. package/dist/library/compiler-self-identity.d.ts +8 -2
  705. package/dist/library/compiler-self-identity.js +92 -18
  706. package/dist/library/compiler-self-identity.js.map +1 -1
  707. package/dist/library/compiler-self-identity.test.js +150 -3
  708. package/dist/library/compiler-self-identity.test.js.map +1 -1
  709. package/dist/library/int-infer.d.ts +5 -0
  710. package/dist/library/int-infer.js +15 -3
  711. package/dist/library/int-infer.js.map +1 -1
  712. package/dist/library/ir-policy.js +1 -0
  713. package/dist/library/ir-policy.js.map +1 -1
  714. package/dist/library/library-cache.d.ts +4 -0
  715. package/dist/library/library-cache.js +2 -0
  716. package/dist/library/library-cache.js.map +1 -1
  717. package/dist/library/library-cache.test.js +26 -0
  718. package/dist/library/library-cache.test.js.map +1 -1
  719. package/dist/library/prepare.js +99 -31
  720. package/dist/library/prepare.js.map +1 -1
  721. package/dist/native/cache.d.ts +7 -0
  722. package/dist/native/cache.js +47 -0
  723. package/dist/native/cache.js.map +1 -1
  724. package/dist/native/cache.test.js +13 -1
  725. package/dist/native/cache.test.js.map +1 -1
  726. package/dist/native/cli.js +1 -1
  727. package/dist/native/cli.js.map +1 -1
  728. package/dist/native/compiler.js +18 -3
  729. package/dist/native/compiler.js.map +1 -1
  730. package/dist/native/executable-cache-open.test.js +31 -5
  731. package/dist/native/executable-cache-open.test.js.map +1 -1
  732. package/dist/native/executable-cache.d.ts +6 -1
  733. package/dist/native/executable-cache.js +7 -1
  734. package/dist/native/executable-cache.js.map +1 -1
  735. package/dist/native/prepare.d.ts +3 -0
  736. package/dist/native/prepare.js +43 -26
  737. package/dist/native/prepare.js.map +1 -1
  738. package/dist/native/prepare.test.js +25 -3
  739. package/dist/native/prepare.test.js.map +1 -1
  740. package/dist/native/sanitizer.js +10 -1
  741. package/dist/native/sanitizer.js.map +1 -1
  742. package/dist/native/sanitizer.test.js +7 -2
  743. package/dist/native/sanitizer.test.js.map +1 -1
  744. package/dist/node-islands/boundary.d.ts +12 -0
  745. package/dist/node-islands/boundary.js +38 -6
  746. package/dist/node-islands/boundary.js.map +1 -1
  747. package/dist/node-islands/boundary.test.d.ts +1 -0
  748. package/dist/node-islands/boundary.test.js +76 -0
  749. package/dist/node-islands/boundary.test.js.map +1 -0
  750. package/dist/node-islands/detect.d.ts +9 -0
  751. package/dist/node-islands/detect.js +110 -0
  752. package/dist/node-islands/detect.js.map +1 -1
  753. package/dist/node-islands/detect.test.js +24 -0
  754. package/dist/node-islands/detect.test.js.map +1 -1
  755. package/dist/node-islands/graph-islands.d.ts +40 -0
  756. package/dist/node-islands/graph-islands.js +128 -0
  757. package/dist/node-islands/graph-islands.js.map +1 -0
  758. package/dist/node-islands/growth.d.ts +57 -0
  759. package/dist/node-islands/growth.js +205 -0
  760. package/dist/node-islands/growth.js.map +1 -0
  761. package/dist/node-islands/report.d.ts +12 -0
  762. package/dist/node-islands/report.js +28 -0
  763. package/dist/node-islands/report.js.map +1 -1
  764. package/dist/node-islands/report.test.js +2 -0
  765. package/dist/node-islands/report.test.js.map +1 -1
  766. package/dist/node-islands/rules.js +5 -0
  767. package/dist/node-islands/rules.js.map +1 -1
  768. package/dist/node-islands/scan.d.ts +11 -2
  769. package/dist/node-islands/scan.js +61 -9
  770. package/dist/node-islands/scan.js.map +1 -1
  771. package/dist/wasm/translate.js +11 -5
  772. package/dist/wasm/translate.js.map +1 -1
  773. package/dist/wasm/translate.test.js +35 -0
  774. package/dist/wasm/translate.test.js.map +1 -1
  775. package/package.json +20 -20
  776. package/surface-manifest.json +184 -117
@@ -0,0 +1,193 @@
1
+ /** Builtin global functions JavaScript sources read as values (`const p =
2
+ * parseInt`, `globalThis[name]`) beyond the interned function and
3
+ * constructor values (builtinGlobalValue):
4
+ * - parseInt and parseFloat are the Number statics' function values, as in
5
+ * Node (`parseInt === Number.parseInt`).
6
+ * - isNaN and isFinite convert their argument with ToNumber.
7
+ * - Symbol makes a symbol whose description is its argument's ToString, or
8
+ * one without a description when the argument is undefined.
9
+ * - eval throws the EvalError a direct call throws (code-generation.ts).
10
+ * - escape, unescape, WeakRef and AsyncDisposableStack have no lowering:
11
+ * their values have Node's name and length and throw SC2020 when called
12
+ * or constructed, as their direct uses refuse. */
13
+ import { BOOL, DYN, F64, STRING, SYMBOL_T, } from "../../ir/ir.js";
14
+ import { dynUndefinedExpr, nodeThrowExpr, varRef } from "../../ir/build.js";
15
+ import { noLoweringDiag } from "../../diagnostics/diagnostic.js";
16
+ import { lowerNumberParserValue } from "./lower-builtin-values.js";
17
+ import { CODE_GENERATION_DISALLOWED } from "./code-generation.js";
18
+ /** The globals without a lowering, with Node's length for each. */
19
+ const UNLOWERED = new Map([
20
+ ["escape", 1],
21
+ ["unescape", 1],
22
+ ["WeakRef", 1],
23
+ ["AsyncDisposableStack", 0],
24
+ ]);
25
+ /** Whether `name` is a global without a lowering, whose value throws the
26
+ * fence. TypeScript sources keep the compile-time refusal for these. */
27
+ export function isUnloweredGlobal(name) {
28
+ return UNLOWERED.has(name);
29
+ }
30
+ /** The globals function values are built for: the ones read below, and the
31
+ * ones without a lowering. */
32
+ const GLOBAL_VALUE_NAMES = new Set([
33
+ "parseInt",
34
+ "parseFloat",
35
+ "isNaN",
36
+ "isFinite",
37
+ "Symbol",
38
+ "eval",
39
+ ...UNLOWERED.keys(),
40
+ ]);
41
+ /** Whether a JavaScript source reads `name` as one of the function values
42
+ * this file builds (never as a class value). */
43
+ export function hasGlobalFunctionValue(name) {
44
+ return GLOBAL_VALUE_NAMES.has(name);
45
+ }
46
+ /** The value a JavaScript source reads for the global function `name`, or
47
+ * null when it has none here. `reportFences` is false for the program's
48
+ * global lookup, which holds every declared global's value whether or not
49
+ * the program reads it: only a read reports the value's fence. */
50
+ export function globalFunctionValue(lowerer, name, loc, reportFences = true) {
51
+ switch (name) {
52
+ case "parseInt":
53
+ case "parseFloat":
54
+ return lowerNumberParserValue(lowerer, name, loc);
55
+ case "isNaN":
56
+ case "isFinite":
57
+ return numberTestValue(lowerer, name, loc);
58
+ case "Symbol":
59
+ return symbolValue(lowerer, loc);
60
+ case "eval":
61
+ return evalValue(lowerer, loc);
62
+ default: {
63
+ const length = UNLOWERED.get(name);
64
+ return length === undefined ? null : unloweredValue(lowerer, name, length, loc, reportFences);
65
+ }
66
+ }
67
+ }
68
+ /** A lifted function `%builtin.global.<name>` of one checked-dynamic
69
+ * parameter, defined once, boxed under Node's name and, when it differs
70
+ * from 1, Node's length. */
71
+ function oneArgumentValue(lowerer, name, ret, body, loc, length) {
72
+ const fnName = `%builtin.global.${name}`;
73
+ if (!lowerer.liftedFns.some((fn) => fn.name === fnName))
74
+ lowerer.liftedFns.push({
75
+ name: fnName,
76
+ params: [{ localId: "value.0", name: "value", type: DYN }],
77
+ locals: [{ id: "value.0", name: "value", type: DYN, mutable: false }],
78
+ returnType: ret,
79
+ body: body(varRef("value.0", DYN, loc)),
80
+ loc,
81
+ });
82
+ return {
83
+ kind: "dynFrom",
84
+ value: {
85
+ kind: "closure",
86
+ fnName,
87
+ captures: [],
88
+ type: { kind: "func", params: [DYN], ret },
89
+ loc,
90
+ },
91
+ fnName: name,
92
+ ...(length !== undefined ? { fnLength: length } : {}),
93
+ type: DYN,
94
+ loc,
95
+ };
96
+ }
97
+ /** isNaN and isFinite: ToNumber, then the test. */
98
+ function numberTestValue(lowerer, name, loc) {
99
+ return oneArgumentValue(lowerer, name, BOOL, (argument) => [
100
+ {
101
+ kind: "return",
102
+ value: {
103
+ kind: "libCall",
104
+ fn: name === "isNaN" ? "num.isNaN" : "number.isFinite",
105
+ args: [{ kind: "libCall", fn: "dyn.toNumberCoerce", args: [argument], type: F64, loc }],
106
+ type: BOOL,
107
+ loc,
108
+ },
109
+ loc,
110
+ },
111
+ ], loc);
112
+ }
113
+ /** Symbol(description). */
114
+ function symbolValue(lowerer, loc) {
115
+ return oneArgumentValue(lowerer, "Symbol", SYMBOL_T, (argument) => [
116
+ {
117
+ kind: "if",
118
+ cond: { kind: "dynTest", test: "undefined", value: argument, type: BOOL, loc },
119
+ then: [
120
+ {
121
+ kind: "return",
122
+ value: { kind: "libCall", fn: "sym.newAnon", args: [], type: SYMBOL_T, loc },
123
+ loc,
124
+ },
125
+ ],
126
+ else_: null,
127
+ loc,
128
+ },
129
+ {
130
+ kind: "return",
131
+ value: {
132
+ kind: "libCall",
133
+ fn: "sym.new",
134
+ args: [
135
+ { kind: "libCall", fn: "dyn.toStringCoerce", args: [argument], type: STRING, loc },
136
+ ],
137
+ type: SYMBOL_T,
138
+ loc,
139
+ },
140
+ loc,
141
+ },
142
+ ], loc,
143
+ // Node's Symbol declares no parameters.
144
+ 0);
145
+ }
146
+ /** eval: the EvalError every code-generation call throws. */
147
+ function evalValue(lowerer, loc) {
148
+ return oneArgumentValue(lowerer, "eval", DYN, () => [
149
+ {
150
+ kind: "exprStmt",
151
+ expr: nodeThrowExpr(6, "", CODE_GENERATION_DISALLOWED, F64, loc),
152
+ loc,
153
+ },
154
+ { kind: "return", value: dynUndefinedExpr(loc), loc },
155
+ ], loc);
156
+ }
157
+ /** A global without a lowering: calling or constructing it throws the
158
+ * SC2020 fence its direct use reports. Each read that reaches the value
159
+ * reports the fence; the program's lookup holds the value without
160
+ * reporting one. */
161
+ function unloweredValue(lowerer, name, length, loc, reportFences) {
162
+ const fnName = `%builtin.fence.global.${name}`;
163
+ const diag = noLoweringDiag(name, loc);
164
+ if (!lowerer.liftedFns.some((fn) => fn.name === fnName)) {
165
+ lowerer.liftedFns.push({
166
+ name: fnName,
167
+ params: [],
168
+ locals: [],
169
+ returnType: DYN,
170
+ body: [
171
+ { kind: "runtimeFence", code: diag.code, message: `${diag.message} [${diag.code}]`, loc },
172
+ ],
173
+ loc,
174
+ });
175
+ }
176
+ if (reportFences)
177
+ lowerer.runtimeFences.push(diag);
178
+ return {
179
+ kind: "dynFrom",
180
+ value: {
181
+ kind: "closure",
182
+ fnName,
183
+ captures: [],
184
+ type: { kind: "func", params: [], ret: DYN },
185
+ loc,
186
+ },
187
+ fnName: name,
188
+ fnLength: length,
189
+ type: DYN,
190
+ loc,
191
+ };
192
+ }
193
+ //# sourceMappingURL=global-function-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-function-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/global-function-values.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@ export declare function computedGlobalReadOf(lowerer: Lowerer, sf: ts.SourceFile
8
8
  /** The value a JavaScript source reads for the declared global `name`
9
9
  * taken as a value, whatever its spelling (`name`, `globalThis.name`,
10
10
  * `const { name } = globalThis`, `globalThis[name]`), or null when it
11
- * reads the opaque identity token. `reportFences` (builtinNamespaceValue)
12
- * is false for the program's lookup. */
11
+ * reads the opaque identity token. `reportFences` is false for the
12
+ * program's lookup, which holds every declared global's value whether or
13
+ * not the program reads it. */
13
14
  export declare function jsGlobalValueByName(lowerer: Lowerer, name: string, loc: SrcLoc, reportFences?: boolean): IrExpr | null;
14
15
  /** The value a TypeScript source reads for the declared global `name` at
15
16
  * `node` when the checker types the slot it flows into as any or unknown
@@ -21,8 +22,9 @@ export declare function jsGlobalValueByName(lowerer: Lowerer, name: string, loc:
21
22
  * signature (lowerIdentifierExpr), and `{ String }` must equal it. */
22
23
  export declare function tsUntypedGlobalValue(lowerer: Lowerer, node: ts.Expression, name: string, loc: SrcLoc): IrExpr | null;
23
24
  /** jsGlobalValueByName for the globals other than the interned builtin
24
- * functions and constructors (builtinGlobalValue). */
25
- export declare function jsSpecialGlobalValue(lowerer: Lowerer, name: string, loc: SrcLoc): IrExpr | null;
25
+ * functions and constructors (builtinGlobalValue). `reportFences` is false
26
+ * for the program's lookup (jsGlobalValueByName). */
27
+ export declare function jsSpecialGlobalValue(lowerer: Lowerer, name: string, loc: SrcLoc, reportFences?: boolean): IrExpr | null;
26
28
  /** The builtin globals that sloppy-mode functions of the JavaScript source
27
29
  * `sf` read through their `this` (`this.Array`, `this["Array"]`) or through
28
30
  * a variable it initializes (`var root = this; root.Array`); every declared
@@ -16,13 +16,14 @@ import * as ts from "../ts7/adapter.js";
16
16
  import { BYTES_ELEMENT_NAME, DYN, F64, STRING, UNDEFINED_T, } from "../../ir/ir.js";
17
17
  import { isJsSourceFile } from "../program.js";
18
18
  import { isStrictCode } from "./strict-mode.js";
19
- import { TEMPORAL_GLOBAL } from "../builtin-modules.js";
19
+ import { COMMONJS_MODULE_BINDINGS, TEMPORAL_GLOBAL } from "../builtin-modules.js";
20
20
  import { stdlibGlobalNameOf } from "./surfaces.js";
21
21
  import { builtinGlobalValue } from "./expressions/property-access.js";
22
22
  import { builtinNamespaceValue } from "./builtin-namespaces.js";
23
23
  import { uriFunctionValue } from "./expressions/identifiers.js";
24
24
  import { navigatorValue } from "./builtins/navigator.js";
25
25
  import { primitiveCtorClosure } from "./lower-exprs.js";
26
+ import { globalFunctionValue, isUnloweredGlobal } from "./global-function-values.js";
26
27
  import { WEB_STREAM_CLASSES, programNamesWebStreamClass, webStreamClassValue, } from "./builtins/web-streams-dyn.js";
27
28
  const LOOKUP_FN = "%global.builtinValue";
28
29
  /** Names the runtime answers before the lookup runs. */
@@ -103,10 +104,11 @@ function readsBuiltinByName(lowerer, node) {
103
104
  /** The value a JavaScript source reads for the declared global `name`
104
105
  * taken as a value, whatever its spelling (`name`, `globalThis.name`,
105
106
  * `const { name } = globalThis`, `globalThis[name]`), or null when it
106
- * reads the opaque identity token. `reportFences` (builtinNamespaceValue)
107
- * is false for the program's lookup. */
107
+ * reads the opaque identity token. `reportFences` is false for the
108
+ * program's lookup, which holds every declared global's value whether or
109
+ * not the program reads it. */
108
110
  export function jsGlobalValueByName(lowerer, name, loc, reportFences = true) {
109
- return (jsSpecialGlobalValue(lowerer, name, loc) ??
111
+ return (jsSpecialGlobalValue(lowerer, name, loc, reportFences) ??
110
112
  builtinNamespaceValue(lowerer, name, loc, reportFences) ??
111
113
  builtinGlobalValue(name, loc, true));
112
114
  }
@@ -124,7 +126,9 @@ const UNTYPED_UNMODELED = new Set(["Array", "setTimeout", "setImmediate"]);
124
126
  * String, Number, Boolean or BigInt is the closure with the typed
125
127
  * signature (lowerIdentifierExpr), and `{ String }` must equal it. */
126
128
  export function tsUntypedGlobalValue(lowerer, node, name, loc) {
127
- if (isJsSourceFile(ts.getSourceFileOfNode(node)) || UNTYPED_UNMODELED.has(name))
129
+ if (isJsSourceFile(ts.getSourceFileOfNode(node)) ||
130
+ UNTYPED_UNMODELED.has(name) ||
131
+ isUnloweredGlobal(name))
128
132
  return null;
129
133
  if (name === "String" || name === "Number" || name === "Boolean" || name === "BigInt")
130
134
  return null;
@@ -155,8 +159,9 @@ function flowsIntoUntypedSlot(lowerer, node) {
155
159
  }
156
160
  }
157
161
  /** jsGlobalValueByName for the globals other than the interned builtin
158
- * functions and constructors (builtinGlobalValue). */
159
- export function jsSpecialGlobalValue(lowerer, name, loc) {
162
+ * functions and constructors (builtinGlobalValue). `reportFences` is false
163
+ * for the program's lookup (jsGlobalValueByName). */
164
+ export function jsSpecialGlobalValue(lowerer, name, loc, reportFences = true) {
160
165
  if (name === "NaN" || name === "Infinity")
161
166
  return { kind: "numLit", value: name === "NaN" ? NaN : Infinity, type: F64, loc };
162
167
  if (name === "String" || name === "Number" || name === "Boolean" || name === "BigInt")
@@ -185,7 +190,7 @@ export function jsSpecialGlobalValue(lowerer, name, loc) {
185
190
  return { kind: "libCall", fn: "fetch.function", args: [], type: DYN, loc };
186
191
  if (name === "console")
187
192
  return { kind: "libCall", fn: "console.native", args: [], type: DYN, loc };
188
- return null;
193
+ return globalFunctionValue(lowerer, name, loc, reportFences);
189
194
  }
190
195
  const URI_FUNCTIONS = new Set([
191
196
  "encodeURIComponent",
@@ -298,7 +303,9 @@ function declaredGlobalNames(lowerer, at) {
298
303
  return lowerer.checker
299
304
  .getPropertiesOfType(lowerer.checker.getTypeOfSymbol(symbol))
300
305
  .map((property) => ts.symbolName(property))
301
- .filter((name) => name !== TEMPORAL_GLOBAL && !RUNTIME_ANSWERED.has(name));
306
+ .filter((name) => name !== TEMPORAL_GLOBAL &&
307
+ !RUNTIME_ANSWERED.has(name) &&
308
+ !COMMONJS_MODULE_BINDINGS.has(name));
302
309
  }
303
310
  /** The names the program's lookup answers: every declared global when a
304
311
  * module reads the global object by computed names, else the ones its
@@ -337,6 +344,13 @@ export function globalValuesInstall(lowerer, loc) {
337
344
  : jsGlobalValueByName(lowerer, global, loc, false);
338
345
  if (value === null)
339
346
  continue;
347
+ // A function boxed here has no source spelling to take its name from
348
+ // (the identifier read's rule): it takes the global's name, as
349
+ // `globalThis.String.name` is "String".
350
+ const boxed = lowerer.coerceToExpected(value, DYN);
351
+ const named = boxed.kind === "dynFrom" && boxed.value.type.kind === "func" && boxed.fnName === undefined
352
+ ? { ...boxed, fnName: global }
353
+ : boxed;
340
354
  body.push({
341
355
  kind: "if",
342
356
  cond: {
@@ -347,7 +361,7 @@ export function globalValuesInstall(lowerer, loc) {
347
361
  type: { kind: "bool" },
348
362
  loc,
349
363
  },
350
- then: [{ kind: "return", value: lowerer.coerceToExpected(value, DYN), loc }],
364
+ then: [{ kind: "return", value: named, loc }],
351
365
  else_: null,
352
366
  loc,
353
367
  });
@@ -1 +1 @@
1
- {"version":3,"file":"global-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/global-values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/global-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /** The value a read of a Node 24 global native code does not provide
2
+ * answers (host-globals.ts). Node has the constructor, so a read must answer
3
+ * a constructor: the eager read at module init (`export const FormData =
4
+ * instanceOf(globalThis.FormData, …)` in effect's Schema) is a value read,
5
+ * not a use, and refusing it rejects the module before its capability probe
6
+ * ever runs.
7
+ *
8
+ * The value is what Node's class is to native code: `typeof` answers
9
+ * "function", `name` and `length` are Node's, `instanceof` answers false for
10
+ * every value native code can produce (the constructor's `prototype` is an
11
+ * object no value's prototype chain reaches), and constructing or calling it
12
+ * throws the SC2020 fence its direct use reports — native code can never
13
+ * produce an instance. Reads that ARE a use (`new WebSocket(url)`,
14
+ * `FormData()`) keep the compile fence, which a JavaScript source defers to
15
+ * exactly that throw.
16
+ *
17
+ * The constructor is a zero-parameter closure whose function is marked
18
+ * `ownsPrototype`: the runtime gives every such function its own
19
+ * `prototype` object with `constructor` on it (scr_dyn_fn_table), the same
20
+ * shape a program's function declaration has, so `FormData.prototype`,
21
+ * `FormData.prototype.constructor === FormData` and `x instanceof FormData`
22
+ * all answer what Node answers without any property definition here. */
23
+ import * as ts from "../ts7/adapter.js";
24
+ import { type IrExpr } from "../../ir/ir.js";
25
+ import type { Lowerer } from "./lowerer.js";
26
+ /** The constructor value the global `name` reads as. Built once per program
27
+ * (the helper answers the same value every time, as the global object does).
28
+ * A read reports no fence: it does not throw. The value throws the SC2020
29
+ * fence when it is constructed or called, and the call and `new` sites that
30
+ * can see the global report it there (lowerer.hostGlobalFence). */
31
+ export declare function hostGlobalValue(lowerer: Lowerer, name: string, node: ts.Node): IrExpr;
@@ -0,0 +1,121 @@
1
+ /** The value a read of a Node 24 global native code does not provide
2
+ * answers (host-globals.ts). Node has the constructor, so a read must answer
3
+ * a constructor: the eager read at module init (`export const FormData =
4
+ * instanceOf(globalThis.FormData, …)` in effect's Schema) is a value read,
5
+ * not a use, and refusing it rejects the module before its capability probe
6
+ * ever runs.
7
+ *
8
+ * The value is what Node's class is to native code: `typeof` answers
9
+ * "function", `name` and `length` are Node's, `instanceof` answers false for
10
+ * every value native code can produce (the constructor's `prototype` is an
11
+ * object no value's prototype chain reaches), and constructing or calling it
12
+ * throws the SC2020 fence its direct use reports — native code can never
13
+ * produce an instance. Reads that ARE a use (`new WebSocket(url)`,
14
+ * `FormData()`) keep the compile fence, which a JavaScript source defers to
15
+ * exactly that throw.
16
+ *
17
+ * The constructor is a zero-parameter closure whose function is marked
18
+ * `ownsPrototype`: the runtime gives every such function its own
19
+ * `prototype` object with `constructor` on it (scr_dyn_fn_table), the same
20
+ * shape a program's function declaration has, so `FormData.prototype`,
21
+ * `FormData.prototype.constructor === FormData` and `x instanceof FormData`
22
+ * all answer what Node answers without any property definition here. */
23
+ import * as ts from "../ts7/adapter.js";
24
+ import { BOOL, DYN } from "../../ir/ir.js";
25
+ import { boolLit, varRef } from "../../ir/build.js";
26
+ import { hostGlobalDiag } from "../../diagnostics/diagnostic.js";
27
+ import { hostGlobalLength } from "./host-globals.js";
28
+ import { locOf } from "../program.js";
29
+ /** The constructor value the global `name` reads as. Built once per program
30
+ * (the helper answers the same value every time, as the global object does).
31
+ * A read reports no fence: it does not throw. The value throws the SC2020
32
+ * fence when it is constructed or called, and the call and `new` sites that
33
+ * can see the global report it there (lowerer.hostGlobalFence). */
34
+ export function hostGlobalValue(lowerer, name, node) {
35
+ const loc = locOf(node);
36
+ const helper = `%builtin.hostGlobal.${name}`;
37
+ if (!lowerer.liftedFns.some((fn) => fn.name === helper))
38
+ defineHostGlobalBuilder(lowerer, name, helper, node);
39
+ lowerer.noteEdge(helper);
40
+ return { kind: "call", callee: helper, args: [], type: DYN, loc };
41
+ }
42
+ /** The lifted function that builds the constructor once and answers the same
43
+ * value afterwards. */
44
+ function defineHostGlobalBuilder(lowerer, name, helper, node) {
45
+ const loc = locOf(node);
46
+ const fence = `%builtin.fence.global.${name}`;
47
+ if (!lowerer.liftedFns.some((fn) => fn.name === fence)) {
48
+ const diag = hostGlobalDiag(name, loc);
49
+ lowerer.liftedFns.push({
50
+ name: fence,
51
+ ownsPrototype: true,
52
+ params: [],
53
+ locals: [],
54
+ returnType: DYN,
55
+ body: [{ kind: "runtimeFence", code: diag.code, message: fenceMessage(diag, node), loc }],
56
+ loc,
57
+ });
58
+ }
59
+ const storage = `%g.${helper}`;
60
+ const ready = `${storage}%ready`;
61
+ lowerer.globalsList.push({ id: storage, name: `${name} global value`, type: DYN, mutable: true }, { id: ready, name: "%ready", type: BOOL, mutable: true });
62
+ const length = hostGlobalLength(name);
63
+ const body = [
64
+ {
65
+ kind: "if",
66
+ cond: varRef(ready, BOOL, loc),
67
+ then: [{ kind: "return", value: varRef(storage, DYN, loc), loc }],
68
+ else_: null,
69
+ loc,
70
+ },
71
+ {
72
+ kind: "assign",
73
+ localId: storage,
74
+ value: {
75
+ kind: "dynFrom",
76
+ value: {
77
+ kind: "closure",
78
+ fnName: fence,
79
+ captures: [],
80
+ type: { kind: "func", params: [], ret: DYN },
81
+ loc,
82
+ },
83
+ fnName: name,
84
+ ...(length !== undefined ? { fnLength: length } : {}),
85
+ type: DYN,
86
+ loc,
87
+ },
88
+ loc,
89
+ },
90
+ // The constructor's own [[Prototype]]: a plain object, so the `instanceof`
91
+ // prototype walk over a FUNCTION value ends at null instead of throwing
92
+ // the runtime's unsupported-getPrototypeOf refusal (the walk starts at the
93
+ // value's [[Prototype]]). Nothing native code produces reaches it, so
94
+ // `x instanceof FormData` answers false for every value native code can
95
+ // produce, functions included.
96
+ {
97
+ kind: "exprStmt",
98
+ expr: {
99
+ kind: "libCall",
100
+ fn: "dyn.setPrototype",
101
+ args: [varRef(storage, DYN, loc), { kind: "dynObjLit", fields: [], type: DYN, loc }],
102
+ type: DYN,
103
+ loc,
104
+ },
105
+ loc,
106
+ },
107
+ { kind: "assign", localId: ready, value: boolLit(true, loc), loc },
108
+ { kind: "return", value: varRef(storage, DYN, loc), loc },
109
+ ];
110
+ const locals = [];
111
+ lowerer.liftedFns.push({ name: helper, params: [], locals, returnType: DYN, body, loc });
112
+ lowerer.shareHelper(helper);
113
+ }
114
+ /** The thrown message, in the shape every deferred fence throws: the
115
+ * diagnostic's message at the site that first read the value. */
116
+ function fenceMessage(diag, node) {
117
+ const source = ts.getSourceFileOfNode(node);
118
+ const pos = ts.getLineAndCharacterOfPosition(source, diag.loc.start);
119
+ return `${diag.message} [${diag.code} at ${diag.loc.file}:${pos.line + 1}]`;
120
+ }
121
+ //# sourceMappingURL=host-global-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-global-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/host-global-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import * as ts from "../ts7/adapter.js";
2
+ import { type IrExpr, type SrcLoc } from "../../ir/ir.js";
3
+ import type { Lowerer } from "./lowerer.js";
4
+ export declare const NODE_GLOBALS_WITHOUT_NATIVE: ReadonlySet<string>;
5
+ /** Node's `length` for the listed global `name`, or undefined when the table
6
+ * does not know it (the value is then built with the closure's own arity). */
7
+ export declare function hostGlobalLength(name: string): number | undefined;
8
+ /** Whether the read is the callee of a call or `new` — the one use a listed
9
+ * global's value refuses. A bare read answers the constructor (see
10
+ * host-global-values.ts); constructing or calling it can only produce an
11
+ * instance native code does not have, so the compile fence stays (and a
12
+ * JavaScript source defers it to the throw at that statement). */
13
+ export declare function hostGlobalCallTarget(node: ts.Expression): boolean;
14
+ /** Whether `id` reads one of those globals. Own bindings — imports, locals
15
+ * with an initializer, program classes and functions — keep their ordinary
16
+ * lowering; a declaration-file binding (the bundled lib, @types/node) or a
17
+ * program's ambient `declare var` is the global, and an unresolvable name
18
+ * (JavaScript) is Node's. */
19
+ export declare function hostGlobalNameOfIdentifier(lowerer: Lowerer, id: ts.Identifier): string | null;
20
+ /** Whether `receiver` is the global object: `globalThis`, a cast of it
21
+ * (`(globalThis as T)`), or a `const` initialized with either (`const g =
22
+ * globalThis as Record<string, unknown>`). The last shape is how most
23
+ * programs spell the global object, and the runtime's dynamic global object
24
+ * answers undefined for these names. A `let` is not followed: it can be
25
+ * reassigned to another object. */
26
+ export declare function isGlobalObjectRead(lowerer: Lowerer, receiver: ts.Expression, seen?: Set<ts.Symbol>, name?: string | null): boolean;
27
+ /** Whether `access` reads one of those globals off the global object —
28
+ * `globalThis.X`, `(globalThis as T).X`, `alias.X` (`const alias =
29
+ * globalThis`), through parentheses and type casts. */
30
+ export declare function hostGlobalNameOfMember(lowerer: Lowerer, access: ts.PropertyAccessExpression): string | null;
31
+ /** `globalThis["X"]` with a static string key: the same read as `globalThis.X`
32
+ * (the runtime's dynamic path cannot tell the name is Node's). */
33
+ export declare function hostGlobalNameOfElement(lowerer: Lowerer, access: ts.ElementAccessExpression): string | null;
34
+ /** The members a read of a listed global's value answers: the function
35
+ * intrinsics every constructor carries. Node also has the class's own
36
+ * static members (`WebSocket.OPEN`, `FormData.prototype.append`) and its
37
+ * instances' methods, which native code does not provide; reading one is a
38
+ * use of that surface and refuses (SC2020, host-global) rather than
39
+ * answering undefined. */
40
+ export declare const HOST_GLOBAL_VALUE_MEMBERS: ReadonlySet<string>;
41
+ /** The members the value's `prototype` object answers: `constructor`, the
42
+ * link back to the value, which is the same in Node. Node's prototype also
43
+ * carries the class's instance methods (`FormData.prototype.append`), which
44
+ * native code does not have; reading one refuses (SC2020, host-global). */
45
+ export declare const HOST_GLOBAL_PROTOTYPE_MEMBERS: ReadonlySet<string>;
46
+ /** The listed global whose `prototype` object `node` reads — a member read's
47
+ * receiver (`FormData.prototype.append`), a `const` holding that object
48
+ * (`const proto = FormData.prototype; proto.append`), or the
49
+ * `Object.setPrototypeOf` target shape. Null for every other expression. */
50
+ export declare function hostGlobalPrototypeOf(lowerer: Lowerer, node: ts.Expression): string | null;
51
+ /** The listed global whose constructor value `node` holds through the
52
+ * prototype object (`FormData.prototype.constructor`), which is the same
53
+ * value the read answers. Null for every other expression. */
54
+ export declare function hostGlobalConstructorOfPrototype(lowerer: Lowerer, node: ts.Expression): string | null;
55
+ /** The listed global whose prototype member a call reads —
56
+ * `FormData.prototype.append(...)`, `globalThis.WebSocket["send"](...)`.
57
+ * A call reaches lowering without the member-read hook seeing the callee,
58
+ * so the call site asks the same question. Null for `constructor` and for
59
+ * every other expression. */
60
+ export declare function hostGlobalPrototypeMemberOf(lowerer: Lowerer, callee: ts.Expression): string | null;
61
+ /** The listed global an operand reads, in any of the read forms — the
62
+ * expression itself (`typeof X`, a `new` callee, a call callee) — or the
63
+ * one a `const` holding the read answers (`const Ctor = WebSocket;
64
+ * Ctor.OPEN`). A `let` is not followed: it can be reassigned. */
65
+ export declare function hostGlobalNameOfRead(lowerer: Lowerer, operand: ts.Expression): string | null;
66
+ /** The listed global a `typeof` operand reads, in any of the read forms. */
67
+ export declare function hostGlobalNameOfTypeofOperand(lowerer: Lowerer, operand: ts.Expression): string | null;
68
+ /** The compiler's derived name table as the runtime's immortal
69
+ * `templateStrings` array (one per program): the runtime never carries a
70
+ * hand-copied list of host globals. */
71
+ export declare function hostAbsentNamesArg(loc: SrcLoc): IrExpr;
72
+ /** Arms the runtime check at a dynamic site (idempotent): the runtime's
73
+ * global-object read and `in` answers throw for exactly these names. */
74
+ export declare function hostAbsentInstall(loc: SrcLoc): IrExpr;