@scriptc/compiler 0.2.10 → 0.3.1

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 (584) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +7 -38
  2. package/ambient/scriptc-overrides.d.ts +1 -25
  3. package/ambient/scriptc.d.ts +1 -9
  4. package/dist/backend/cycle-analysis.test.js +1 -1
  5. package/dist/backend/cycle-mutability.d.ts +1 -1
  6. package/dist/backend/cycle-mutability.js +1 -18
  7. package/dist/backend/cycle-mutability.js.map +1 -1
  8. package/dist/backend/executable-features.d.ts +1 -1
  9. package/dist/backend/executable-features.js +3 -8
  10. package/dist/backend/executable-features.js.map +1 -1
  11. package/dist/backend/immutability.d.ts +1 -1
  12. package/dist/backend/immutability.js +1 -1
  13. package/dist/backend/immutability.test.js +1 -1
  14. package/dist/backend/library-pack.js +0 -2
  15. package/dist/backend/library-pack.js.map +1 -1
  16. package/dist/backend/linker.js +1 -1
  17. package/dist/backend/linker.js.map +1 -1
  18. package/dist/backend/llvm/bigint-wrap.d.ts +4 -0
  19. package/dist/backend/llvm/bigint-wrap.js +590 -0
  20. package/dist/backend/llvm/bigint-wrap.js.map +1 -0
  21. package/dist/backend/llvm/blocks.d.ts +2 -0
  22. package/dist/backend/llvm/blocks.js +4 -0
  23. package/dist/backend/llvm/blocks.js.map +1 -1
  24. package/dist/backend/llvm/call-lifetimes.js +15 -4
  25. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  26. package/dist/backend/llvm/call-lifetimes.test.js +14 -3
  27. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  28. package/dist/backend/llvm/checked-narrows.test.js +2 -2
  29. package/dist/backend/llvm/checked-narrows.test.js.map +1 -1
  30. package/dist/backend/llvm/classes.js +60 -21
  31. package/dist/backend/llvm/classes.js.map +1 -1
  32. package/dist/backend/llvm/classes.test.js +11 -11
  33. package/dist/backend/llvm/classes.test.js.map +1 -1
  34. package/dist/backend/llvm/common.d.ts +7 -5
  35. package/dist/backend/llvm/common.js +7 -5
  36. package/dist/backend/llvm/common.js.map +1 -1
  37. package/dist/backend/llvm/constant-callbacks.d.ts +1 -1
  38. package/dist/backend/llvm/constant-callbacks.js +13 -31
  39. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  40. package/dist/backend/llvm/constant-callbacks.test.js +1 -1
  41. package/dist/backend/llvm/dense-array-access.js +133 -45
  42. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  43. package/dist/backend/llvm/dense-array-access.test.js +54 -2
  44. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  45. package/dist/backend/llvm/dyn.d.ts +2 -1
  46. package/dist/backend/llvm/dyn.js +4 -73
  47. package/dist/backend/llvm/dyn.js.map +1 -1
  48. package/dist/backend/llvm/emitter.d.ts +123 -23
  49. package/dist/backend/llvm/emitter.js +729 -258
  50. package/dist/backend/llvm/emitter.js.map +1 -1
  51. package/dist/backend/llvm/emitter.test.js +17 -10
  52. package/dist/backend/llvm/emitter.test.js.map +1 -1
  53. package/dist/backend/llvm/expr-async.js +120 -43
  54. package/dist/backend/llvm/expr-async.js.map +1 -1
  55. package/dist/backend/llvm/expr-async.test.js +2 -2
  56. package/dist/backend/llvm/expr-async.test.js.map +1 -1
  57. package/dist/backend/llvm/expr-bytes.js +51 -36
  58. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  59. package/dist/backend/llvm/expr-callbacks.js +72 -3
  60. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  61. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  62. package/dist/backend/llvm/expr-calls.js +159 -30
  63. package/dist/backend/llvm/expr-calls.js.map +1 -1
  64. package/dist/backend/llvm/expr-calls.test.js +132 -0
  65. package/dist/backend/llvm/expr-calls.test.js.map +1 -0
  66. package/dist/backend/llvm/expr-containers.js +25 -8
  67. package/dist/backend/llvm/expr-containers.js.map +1 -1
  68. package/dist/backend/llvm/expr-context.d.ts +2 -0
  69. package/dist/backend/llvm/expr-control.js +4 -107
  70. package/dist/backend/llvm/expr-control.js.map +1 -1
  71. package/dist/backend/llvm/expr-dispatch.d.ts +1 -2
  72. package/dist/backend/llvm/expr-dispatch.js +3 -41
  73. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  74. package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
  75. package/dist/backend/llvm/expr-dynamic.js +39 -31
  76. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  77. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  78. package/dist/backend/llvm/expr-primitives.js +80 -22
  79. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  80. package/dist/backend/llvm/expr-primitives.test.js +97 -7
  81. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  82. package/dist/backend/llvm/expr-records.d.ts +9 -0
  83. package/dist/backend/llvm/expr-records.js +134 -16
  84. package/dist/backend/llvm/expr-records.js.map +1 -1
  85. package/dist/backend/llvm/expr-stream-bridges.d.ts +1 -1
  86. package/dist/backend/llvm/expr-stream-bridges.js +80 -1
  87. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  88. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -2
  89. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  90. package/dist/backend/llvm/int32-abi.d.ts +31 -0
  91. package/dist/backend/llvm/int32-abi.js +62 -0
  92. package/dist/backend/llvm/int32-abi.js.map +1 -0
  93. package/dist/backend/llvm/int32-abi.test.js +107 -0
  94. package/dist/backend/llvm/int32-abi.test.js.map +1 -0
  95. package/dist/backend/llvm/int32-locals.d.ts +30 -0
  96. package/dist/backend/llvm/int32-locals.js +95 -0
  97. package/dist/backend/llvm/int32-locals.js.map +1 -0
  98. package/dist/backend/llvm/integer-values.d.ts +4 -0
  99. package/dist/backend/llvm/integer-values.js +30 -1
  100. package/dist/backend/llvm/integer-values.js.map +1 -1
  101. package/dist/backend/llvm/integer-views.d.ts +8 -1
  102. package/dist/backend/llvm/integer-views.js +47 -2
  103. package/dist/backend/llvm/integer-views.js.map +1 -1
  104. package/dist/backend/llvm/lazy-captures.d.ts +16 -0
  105. package/dist/backend/llvm/lazy-captures.js +88 -2
  106. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  107. package/dist/backend/llvm/lazy-captures.test.js +48 -0
  108. package/dist/backend/llvm/lazy-captures.test.js.map +1 -1
  109. package/dist/backend/llvm/lib-dispatch.js +14 -1
  110. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  111. package/dist/backend/llvm/lib-filesystem.js +3 -13
  112. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  113. package/dist/backend/llvm/lib-shared.js +7 -8
  114. package/dist/backend/llvm/lib-shared.js.map +1 -1
  115. package/dist/backend/llvm/local-array-reads.js +21 -2
  116. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  117. package/dist/backend/llvm/local-array-reads.test.js +4 -3
  118. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  119. package/dist/backend/llvm/local-union-storage.test.js +3 -3
  120. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  121. package/dist/backend/llvm/map-number-lookup.d.ts +7 -0
  122. package/dist/backend/llvm/map-number-lookup.js +16 -2
  123. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  124. package/dist/backend/llvm/map-read-lifetimes.js +7 -1
  125. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  126. package/dist/backend/llvm/map-read-lifetimes.test.js +25 -8
  127. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  128. package/dist/backend/llvm/reference-effects.js +2 -0
  129. package/dist/backend/llvm/reference-effects.js.map +1 -1
  130. package/dist/backend/llvm/reference-writes.d.ts +3 -0
  131. package/dist/backend/llvm/reference-writes.js +10 -2
  132. package/dist/backend/llvm/reference-writes.js.map +1 -1
  133. package/dist/backend/llvm/regex-matchers.d.ts +39 -0
  134. package/dist/backend/llvm/regex-matchers.js +1649 -0
  135. package/dist/backend/llvm/regex-matchers.js.map +1 -0
  136. package/dist/backend/llvm/regex-matchers.test.js +96 -0
  137. package/dist/backend/llvm/regex-matchers.test.js.map +1 -0
  138. package/dist/backend/llvm/shapes.d.ts +36 -1
  139. package/dist/backend/llvm/shapes.js +128 -16
  140. package/dist/backend/llvm/shapes.js.map +1 -1
  141. package/dist/backend/llvm/shapes.test.js +3 -3
  142. package/dist/backend/llvm/stack-unions.test.js +2 -2
  143. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  144. package/dist/backend/llvm/string-construction.test.js +3 -3
  145. package/dist/backend/llvm/string-construction.test.js.map +1 -1
  146. package/dist/backend/llvm/string-lifetimes.test.js +6 -6
  147. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  148. package/dist/backend/llvm/string-literal-equality.d.ts +22 -0
  149. package/dist/backend/llvm/string-literal-equality.js +78 -0
  150. package/dist/backend/llvm/string-literal-equality.js.map +1 -0
  151. package/dist/backend/llvm/switch-dispatch.js +59 -13
  152. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  153. package/dist/backend/llvm/switch-dispatch.test.js +72 -7
  154. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  155. package/dist/backend/llvm/union-retype.test.d.ts +1 -0
  156. package/dist/backend/llvm/union-retype.test.js +229 -0
  157. package/dist/backend/llvm/union-retype.test.js.map +1 -0
  158. package/dist/backend/llvm/wrapping-sums.d.ts +17 -0
  159. package/dist/backend/llvm/wrapping-sums.js +113 -0
  160. package/dist/backend/llvm/wrapping-sums.js.map +1 -0
  161. package/dist/backend/loop-polls.js +1 -0
  162. package/dist/backend/loop-polls.js.map +1 -1
  163. package/dist/backend/mangle.d.ts +9 -0
  164. package/dist/backend/mangle.js +15 -0
  165. package/dist/backend/mangle.js.map +1 -1
  166. package/dist/backend/may-throw.js +6 -12
  167. package/dist/backend/may-throw.js.map +1 -1
  168. package/dist/backend/may-throw.test.js +1 -1
  169. package/dist/backend/native/artifact-stamps.js +0 -2
  170. package/dist/backend/native/artifact-stamps.js.map +1 -1
  171. package/dist/backend/native/cache-warm.d.ts +1 -1
  172. package/dist/backend/native/cache-warm.js +2 -3
  173. package/dist/backend/native/cache-warm.js.map +1 -1
  174. package/dist/backend/native/compiler-fingerprint.d.ts +1 -1
  175. package/dist/backend/native/compiler-fingerprint.js +4 -7
  176. package/dist/backend/native/compiler-fingerprint.js.map +1 -1
  177. package/dist/backend/native/contracts.d.ts +3 -28
  178. package/dist/backend/native/driver.js +1 -3
  179. package/dist/backend/native/driver.js.map +1 -1
  180. package/dist/backend/native/executable.d.ts +0 -15
  181. package/dist/backend/native/executable.js +17 -172
  182. package/dist/backend/native/executable.js.map +1 -1
  183. package/dist/backend/native/tool-identity.js +0 -1
  184. package/dist/backend/native/tool-identity.js.map +1 -1
  185. package/dist/backend/native/vendor.d.ts +1 -1
  186. package/dist/backend/native/vendor.js +1 -1
  187. package/dist/backend/native/vendor.js.map +1 -1
  188. package/dist/backend/native-link-info-core.d.ts +0 -2
  189. package/dist/backend/native-link-info-core.js.map +1 -1
  190. package/dist/backend/native-toolchain.test.js +23 -33
  191. package/dist/backend/native-toolchain.test.js.map +1 -1
  192. package/dist/backend/publication.test.js +1 -1
  193. package/dist/backend/runtime-abi.d.ts +2 -2
  194. package/dist/backend/runtime-abi.js +2 -2
  195. package/dist/backend/runtime-pack-core.d.ts +1 -2
  196. package/dist/backend/runtime-pack-core.js +5 -14
  197. package/dist/backend/runtime-pack-core.js.map +1 -1
  198. package/dist/backend/runtime-pack-targets.test.js +3 -8
  199. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  200. package/dist/backend/runtime-pack.test.js +22 -19
  201. package/dist/backend/runtime-pack.test.js.map +1 -1
  202. package/dist/backend/target-diagnostics.d.ts +0 -5
  203. package/dist/backend/target-diagnostics.js +1 -11
  204. package/dist/backend/target-diagnostics.js.map +1 -1
  205. package/dist/backend/target-diagnostics.test.js +1 -1
  206. package/dist/backend/vendor-archives.d.ts +1 -7
  207. package/dist/backend/vendor-archives.js +9 -189
  208. package/dist/backend/vendor-archives.js.map +1 -1
  209. package/dist/backend/vendor-inputs.d.ts +0 -1
  210. package/dist/backend/vendor-inputs.js +0 -1
  211. package/dist/backend/vendor-inputs.js.map +1 -1
  212. package/dist/backend/warm-cache.js +3 -5
  213. package/dist/backend/warm-cache.js.map +1 -1
  214. package/dist/cli/command.js +4 -8
  215. package/dist/cli/command.js.map +1 -1
  216. package/dist/cli/host.d.ts +1 -1
  217. package/dist/cli/usage.d.ts +1 -5
  218. package/dist/cli/usage.js +4 -9
  219. package/dist/cli/usage.js.map +1 -1
  220. package/dist/compat/fetch-profile.d.ts +2 -2
  221. package/dist/compat/fetch-profile.js +16 -25
  222. package/dist/compat/fetch-profile.js.map +1 -1
  223. package/dist/compile-types.d.ts +2 -17
  224. package/dist/contracts/check.js +6 -6
  225. package/dist/contracts/check.js.map +1 -1
  226. package/dist/coverage/report.d.ts +5 -22
  227. package/dist/coverage/report.js +12 -76
  228. package/dist/coverage/report.js.map +1 -1
  229. package/dist/coverage/surface-manifest.d.ts +3 -3
  230. package/dist/coverage/surface-manifest.js +22 -27
  231. package/dist/coverage/surface-manifest.js.map +1 -1
  232. package/dist/coverage/verdict-cache.d.ts +1 -3
  233. package/dist/coverage/verdict-cache.js +2 -7
  234. package/dist/coverage/verdict-cache.js.map +1 -1
  235. package/dist/diagnostics/diagnostic.d.ts +11 -60
  236. package/dist/diagnostics/diagnostic.js +39 -118
  237. package/dist/diagnostics/diagnostic.js.map +1 -1
  238. package/dist/diagnostics/envelope.d.ts +3 -4
  239. package/dist/diagnostics/envelope.js +0 -9
  240. package/dist/diagnostics/envelope.js.map +1 -1
  241. package/dist/diagnostics/envelope.test.js +1 -1
  242. package/dist/diagnostics/envelope.test.js.map +1 -1
  243. package/dist/executable/executable-cache.d.ts +0 -3
  244. package/dist/executable/executable-cache.js +2 -4
  245. package/dist/executable/executable-cache.js.map +1 -1
  246. package/dist/executable/executable-cache.test.js +0 -4
  247. package/dist/executable/executable-cache.test.js.map +1 -1
  248. package/dist/executable/prepare.js +5 -2
  249. package/dist/executable/prepare.js.map +1 -1
  250. package/dist/frontend/analysis.js +10 -10
  251. package/dist/frontend/analysis.js.map +1 -1
  252. package/dist/frontend/cjs-syntax.js +0 -88
  253. package/dist/frontend/cjs-syntax.js.map +1 -1
  254. package/dist/frontend/dts-paths.d.ts +1 -1
  255. package/dist/frontend/dts-paths.js +1 -1
  256. package/dist/frontend/lowering/abstract-equality.js +1 -4
  257. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  258. package/dist/frontend/lowering/array-values.d.ts +14 -0
  259. package/dist/frontend/lowering/array-values.js +33 -11
  260. package/dist/frontend/lowering/array-values.js.map +1 -1
  261. package/dist/frontend/lowering/builtins/arguments.js +0 -13
  262. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  263. package/dist/frontend/lowering/builtins/crypto.d.ts +0 -4
  264. package/dist/frontend/lowering/builtins/crypto.js +0 -4
  265. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  266. package/dist/frontend/lowering/builtins/json.js +1 -39
  267. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  268. package/dist/frontend/lowering/builtins/module-resolution.d.ts +0 -15
  269. package/dist/frontend/lowering/builtins/module-resolution.js +5 -44
  270. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  271. package/dist/frontend/lowering/builtins/numbers.d.ts +0 -6
  272. package/dist/frontend/lowering/builtins/numbers.js +6 -57
  273. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  274. package/dist/frontend/lowering/builtins/promises.js +4 -67
  275. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  276. package/dist/frontend/lowering/builtins/workers.js +1 -1
  277. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  278. package/dist/frontend/lowering/call-arguments.d.ts +1 -37
  279. package/dist/frontend/lowering/call-arguments.js +11 -94
  280. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  281. package/dist/frontend/lowering/call-signatures.d.ts +1 -6
  282. package/dist/frontend/lowering/call-signatures.js +16 -68
  283. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  284. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +19 -4
  285. package/dist/frontend/lowering/class-dynamic-dispatch.js +168 -98
  286. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  287. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +44 -4
  288. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  289. package/dist/frontend/lowering/class-method-mutations.js +0 -2
  290. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  291. package/dist/frontend/lowering/class-protocols.js +1 -1
  292. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  293. package/dist/frontend/lowering/coercions/function-adapters.js +5 -35
  294. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  295. package/dist/frontend/lowering/coercions/state.d.ts +0 -1
  296. package/dist/frontend/lowering/coercions/state.js +0 -1
  297. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  298. package/dist/frontend/lowering/coercions/structural-plans.js +2 -4
  299. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  300. package/dist/frontend/lowering/coercions/structural.js +2 -12
  301. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  302. package/dist/frontend/lowering/coercions/unions.js +0 -1
  303. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  304. package/dist/frontend/lowering/containers/array-callbacks.js +49 -28
  305. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  306. package/dist/frontend/lowering/containers/array-construction.js +2 -3
  307. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  308. package/dist/frontend/lowering/containers/array-methods.js +10 -54
  309. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  310. package/dist/frontend/lowering/containers/array-pipelines.d.ts +54 -0
  311. package/dist/frontend/lowering/containers/array-pipelines.js +1827 -0
  312. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -0
  313. package/dist/frontend/lowering/containers/bytes.js +0 -1
  314. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  315. package/dist/frontend/lowering/containers/callback-arguments.js +2 -10
  316. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  317. package/dist/frontend/lowering/containers/collection-methods.js +1 -6
  318. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  319. package/dist/frontend/lowering/containers/exec-result-uses.d.ts +10 -0
  320. package/dist/frontend/lowering/containers/exec-result-uses.js +88 -0
  321. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -0
  322. package/dist/frontend/lowering/containers/indexed-objects.js +0 -2
  323. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  324. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +0 -6
  325. package/dist/frontend/lowering/containers/string-and-regexp.js +17 -17
  326. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  327. package/dist/frontend/lowering/containers/string-replacement.d.ts +2 -1
  328. package/dist/frontend/lowering/containers/string-replacement.js +32 -136
  329. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  330. package/dist/frontend/lowering/devirtualize.d.ts +33 -0
  331. package/dist/frontend/lowering/devirtualize.js +199 -0
  332. package/dist/frontend/lowering/devirtualize.js.map +1 -0
  333. package/dist/frontend/lowering/expressions/evaluation-safety.js +0 -3
  334. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  335. package/dist/frontend/lowering/expressions/native-proxy.js +1 -1
  336. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  337. package/dist/frontend/lowering/expressions/nullish-assignment.js +55 -8
  338. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  339. package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -8
  340. package/dist/frontend/lowering/expressions/object-literals.js +8 -35
  341. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  342. package/dist/frontend/lowering/expressions/optional-chains.d.ts +0 -4
  343. package/dist/frontend/lowering/expressions/optional-chains.js +3 -66
  344. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  345. package/dist/frontend/lowering/function-context.js +0 -1
  346. package/dist/frontend/lowering/function-context.js.map +1 -1
  347. package/dist/frontend/lowering/generic-functions.js +0 -1
  348. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  349. package/dist/frontend/lowering/identifier-uses.d.ts +7 -0
  350. package/dist/frontend/lowering/identifier-uses.js +23 -0
  351. package/dist/frontend/lowering/identifier-uses.js.map +1 -0
  352. package/dist/frontend/lowering/iterator-adapters.js +51 -3
  353. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  354. package/dist/frontend/lowering/lib-boundary.js +10 -77
  355. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  356. package/dist/frontend/lowering/lower-array-sort.js +14 -10
  357. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  358. package/dist/frontend/lowering/lower-array-sort.test.js +2 -2
  359. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  360. package/dist/frontend/lowering/lower-assert.js +2 -3
  361. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  362. package/dist/frontend/lowering/lower-async-iteration.js +1 -1
  363. package/dist/frontend/lowering/lower-calls.d.ts +2 -27
  364. package/dist/frontend/lowering/lower-calls.js +111 -493
  365. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  366. package/dist/frontend/lowering/lower-classes.js +12 -60
  367. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  368. package/dist/frontend/lowering/lower-comptime.js +2 -3
  369. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  370. package/dist/frontend/lowering/lower-console.d.ts +14 -0
  371. package/dist/frontend/lowering/lower-console.js +195 -0
  372. package/dist/frontend/lowering/lower-console.js.map +1 -0
  373. package/dist/frontend/lowering/lower-enums.js +5 -8
  374. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  375. package/dist/frontend/lowering/lower-event-emitter.js +3 -4
  376. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  377. package/dist/frontend/lowering/lower-expando.js +3 -5
  378. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  379. package/dist/frontend/lowering/lower-exprs.d.ts +0 -8
  380. package/dist/frontend/lowering/lower-exprs.js +180 -905
  381. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  382. package/dist/frontend/lowering/lower-functions.js +9 -8
  383. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  384. package/dist/frontend/lowering/lower-generators.d.ts +10 -0
  385. package/dist/frontend/lowering/lower-generators.js +108 -41
  386. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  387. package/dist/frontend/lowering/lower-inspect.js +1 -50
  388. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  389. package/dist/frontend/lowering/lower-modules.d.ts +0 -43
  390. package/dist/frontend/lowering/lower-modules.js +29 -329
  391. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  392. package/dist/frontend/lowering/lower-modules.test.js +5 -5
  393. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  394. package/dist/frontend/lowering/lower-server.js +0 -30
  395. package/dist/frontend/lowering/lower-server.js.map +1 -1
  396. package/dist/frontend/lowering/lower-stdlib.d.ts +98 -0
  397. package/dist/frontend/lowering/{lower-island.js → lower-stdlib.js} +97 -1160
  398. package/dist/frontend/lowering/lower-stdlib.js.map +1 -0
  399. package/dist/frontend/lowering/lower-stmts.d.ts +0 -16
  400. package/dist/frontend/lowering/lower-stmts.js +58 -1016
  401. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  402. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  403. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  404. package/dist/frontend/lowering/lower-stream.js +14 -13
  405. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  406. package/dist/frontend/lowering/lowerer.d.ts +42 -155
  407. package/dist/frontend/lowering/lowerer.js +192 -816
  408. package/dist/frontend/lowering/lowerer.js.map +1 -1
  409. package/dist/frontend/lowering/lowerer.test.js +4 -51
  410. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  411. package/dist/frontend/lowering/nan-coded-reads.d.ts +16 -0
  412. package/dist/frontend/lowering/nan-coded-reads.js +108 -1
  413. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  414. package/dist/frontend/lowering/narrowing-stability.js +1 -1
  415. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  416. package/dist/frontend/lowering/optional-arguments.js +0 -2
  417. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  418. package/dist/frontend/lowering/runtime-optional-bounds.d.ts +4 -0
  419. package/dist/frontend/lowering/runtime-optional-bounds.js +2 -0
  420. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  421. package/dist/frontend/lowering/runtime-optional-bounds.test.js +27 -0
  422. package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -1
  423. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  424. package/dist/frontend/lowering/split-consumers.js +2 -18
  425. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  426. package/dist/frontend/lowering/strict-equality.js +1 -1
  427. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  428. package/dist/frontend/lowering/surfaces.d.ts +6 -45
  429. package/dist/frontend/lowering/surfaces.js +8 -73
  430. package/dist/frontend/lowering/surfaces.js.map +1 -1
  431. package/dist/frontend/lowering/union-retag.d.ts +6 -1
  432. package/dist/frontend/lowering/union-retag.js +64 -1
  433. package/dist/frontend/lowering/union-retag.js.map +1 -1
  434. package/dist/frontend/lowering/union-retag.test.js +46 -0
  435. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  436. package/dist/frontend/module-syntax.d.ts +0 -3
  437. package/dist/frontend/module-syntax.js.map +1 -1
  438. package/dist/frontend/npm-node.d.ts +0 -7
  439. package/dist/frontend/npm-node.js +0 -7
  440. package/dist/frontend/npm-node.js.map +1 -1
  441. package/dist/frontend/npm-static-rewrite-syntax.d.ts +1 -1
  442. package/dist/frontend/npm-static-rewrite-syntax.js +6 -82
  443. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  444. package/dist/frontend/npm-static.d.ts +1 -1
  445. package/dist/frontend/npm-static.js +6 -71
  446. package/dist/frontend/npm-static.js.map +1 -1
  447. package/dist/frontend/npm.d.ts +3 -319
  448. package/dist/frontend/npm.js +6 -1007
  449. package/dist/frontend/npm.js.map +1 -1
  450. package/dist/frontend/npm.test.js +2 -197
  451. package/dist/frontend/npm.test.js.map +1 -1
  452. package/dist/frontend/pipeline-native.js +1 -2
  453. package/dist/frontend/pipeline-native.js.map +1 -1
  454. package/dist/frontend/pipeline.d.ts +3 -11
  455. package/dist/frontend/pipeline.js +37 -56
  456. package/dist/frontend/pipeline.js.map +1 -1
  457. package/dist/frontend/pipeline.test.js +12 -6
  458. package/dist/frontend/pipeline.test.js.map +1 -1
  459. package/dist/frontend/program.d.ts +0 -34
  460. package/dist/frontend/program.js +12 -97
  461. package/dist/frontend/program.js.map +1 -1
  462. package/dist/frontend/provenance-core.d.ts +0 -4
  463. package/dist/frontend/provenance-core.js +4 -37
  464. package/dist/frontend/provenance-core.js.map +1 -1
  465. package/dist/frontend/provenance-registry.d.ts +0 -4
  466. package/dist/frontend/provenance-registry.js +0 -20
  467. package/dist/frontend/provenance-registry.js.map +1 -1
  468. package/dist/frontend/resolve.d.ts +0 -12
  469. package/dist/frontend/resolve.js +0 -34
  470. package/dist/frontend/resolve.js.map +1 -1
  471. package/dist/frontend/runtime-resolve.js +2 -2
  472. package/dist/frontend/runtime-resolve.js.map +1 -1
  473. package/dist/frontend/services-node.js +2 -3
  474. package/dist/frontend/services-node.js.map +1 -1
  475. package/dist/frontend/services.d.ts +1 -8
  476. package/dist/frontend/services.js +2 -22
  477. package/dist/frontend/services.js.map +1 -1
  478. package/dist/frontend/services.test.js +0 -38
  479. package/dist/frontend/services.test.js.map +1 -1
  480. package/dist/frontend/tsc-codes.js +0 -11
  481. package/dist/frontend/tsc-codes.js.map +1 -1
  482. package/dist/frontend/type-mapper.d.ts +2 -27
  483. package/dist/frontend/type-mapper.js +58 -156
  484. package/dist/frontend/type-mapper.js.map +1 -1
  485. package/dist/index.d.ts +1 -1
  486. package/dist/index.js +7 -10
  487. package/dist/index.js.map +1 -1
  488. package/dist/ir/api.d.ts +1 -1
  489. package/dist/ir/api.js +1 -1
  490. package/dist/ir/api.js.map +1 -1
  491. package/dist/ir/builtin-effects.js +2 -5
  492. package/dist/ir/builtin-effects.js.map +1 -1
  493. package/dist/ir/builtin-signatures.d.ts +1 -1
  494. package/dist/ir/builtin-signatures.js +13 -56
  495. package/dist/ir/builtin-signatures.js.map +1 -1
  496. package/dist/ir/constant-globals.test.js +1 -1
  497. package/dist/ir/constant-tables.test.js +1 -1
  498. package/dist/ir/final-fields.test.js +1 -1
  499. package/dist/ir/function-references.d.ts +12 -0
  500. package/dist/ir/function-references.js +29 -0
  501. package/dist/ir/function-references.js.map +1 -0
  502. package/dist/ir/function-references.test.d.ts +1 -0
  503. package/dist/ir/function-references.test.js +276 -0
  504. package/dist/ir/function-references.test.js.map +1 -0
  505. package/dist/ir/initializer-bindings.test.js +1 -1
  506. package/dist/ir/int32-slots.d.ts +10 -7
  507. package/dist/ir/int32-slots.js +219 -68
  508. package/dist/ir/int32-slots.js.map +1 -1
  509. package/dist/ir/int32-slots.test.js +39 -2
  510. package/dist/ir/int32-slots.test.js.map +1 -1
  511. package/dist/ir/integer-ranges.d.ts +4 -4
  512. package/dist/ir/integer-ranges.js +89 -64
  513. package/dist/ir/integer-ranges.js.map +1 -1
  514. package/dist/ir/integer-ranges.test.js +71 -9
  515. package/dist/ir/integer-ranges.test.js.map +1 -1
  516. package/dist/ir/intrinsic-signatures.js +1 -0
  517. package/dist/ir/intrinsic-signatures.js.map +1 -1
  518. package/dist/ir/ir.d.ts +64 -290
  519. package/dist/ir/ir.js +11 -259
  520. package/dist/ir/ir.js.map +1 -1
  521. package/dist/ir/ir.test.js +2 -7
  522. package/dist/ir/ir.test.js.map +1 -1
  523. package/dist/ir/runtime-features.d.ts +3 -30
  524. package/dist/ir/runtime-features.js +8 -43
  525. package/dist/ir/runtime-features.js.map +1 -1
  526. package/dist/ir/scalar-records.test.js +1 -1
  527. package/dist/ir/serialize.d.ts +1 -1
  528. package/dist/ir/serialize.js +3 -3
  529. package/dist/ir/serialize.js.map +1 -1
  530. package/dist/ir/traverse.js +4 -21
  531. package/dist/ir/traverse.js.map +1 -1
  532. package/dist/ir/unshare.test.js +1 -1
  533. package/dist/ir/validate.js +66 -213
  534. package/dist/ir/validate.js.map +1 -1
  535. package/dist/ir/validate.test.js +31 -13
  536. package/dist/ir/validate.test.js.map +1 -1
  537. package/dist/library/fence-eval.test.js +1 -1
  538. package/dist/library/int-infer.test.js +4 -4
  539. package/dist/library/library-cache.test.js +5 -5
  540. package/dist/library/prepare.js +5 -20
  541. package/dist/library/prepare.js.map +1 -1
  542. package/dist/native/cli.js +0 -2
  543. package/dist/native/cli.js.map +1 -1
  544. package/dist/native/compiler.test.js +2 -4
  545. package/dist/native/compiler.test.js.map +1 -1
  546. package/dist/native/prepare.js +2 -4
  547. package/dist/native/prepare.js.map +1 -1
  548. package/dist/native/sanitizer.js +2 -16
  549. package/dist/native/sanitizer.js.map +1 -1
  550. package/dist/native/sanitizer.test.js +0 -3
  551. package/dist/native/sanitizer.test.js.map +1 -1
  552. package/dist/startup-cache.js +0 -2
  553. package/dist/startup-cache.js.map +1 -1
  554. package/package.json +20 -20
  555. package/surface-manifest.json +80 -104
  556. package/dist/backend/llvm/expr-island.d.ts +0 -15
  557. package/dist/backend/llvm/expr-island.js +0 -709
  558. package/dist/backend/llvm/expr-island.js.map +0 -1
  559. package/dist/frontend/lowering/coercions/island.d.ts +0 -37
  560. package/dist/frontend/lowering/coercions/island.js +0 -350
  561. package/dist/frontend/lowering/coercions/island.js.map +0 -1
  562. package/dist/frontend/lowering/lower-island.d.ts +0 -229
  563. package/dist/frontend/lowering/lower-island.js.map +0 -1
  564. package/dist/frontend/lowering/lower-island.test.js +0 -56
  565. package/dist/frontend/lowering/lower-island.test.js.map +0 -1
  566. package/dist/frontend/npm-fetch-analysis.d.ts +0 -17
  567. package/dist/frontend/npm-fetch-analysis.js +0 -109
  568. package/dist/frontend/npm-fetch-analysis.js.map +0 -1
  569. package/dist/frontend/npm-fetch-analysis.test.js +0 -130
  570. package/dist/frontend/npm-fetch-analysis.test.js.map +0 -1
  571. package/dist/frontend/npm-fetch-node.d.ts +0 -2
  572. package/dist/frontend/npm-fetch-node.js +0 -12
  573. package/dist/frontend/npm-fetch-node.js.map +0 -1
  574. package/dist/frontend/npm-fetch-syntax.d.ts +0 -6
  575. package/dist/frontend/npm-fetch-syntax.js +0 -202
  576. package/dist/frontend/npm-fetch-syntax.js.map +0 -1
  577. package/dist/native/runtime-typescript.d.ts +0 -4
  578. package/dist/native/runtime-typescript.js +0 -74
  579. package/dist/native/runtime-typescript.js.map +0 -1
  580. package/dist/native/runtime-typescript.test.js +0 -41
  581. package/dist/native/runtime-typescript.test.js.map +0 -1
  582. /package/dist/{frontend/lowering/lower-island.test.d.ts → backend/llvm/expr-calls.test.d.ts} +0 -0
  583. /package/dist/{frontend/npm-fetch-analysis.test.d.ts → backend/llvm/int32-abi.test.d.ts} +0 -0
  584. /package/dist/{native/runtime-typescript.test.d.ts → backend/llvm/regex-matchers.test.d.ts} +0 -0
@@ -8,17 +8,17 @@ import { InternalCompilerError } from "../../errors.js";
8
8
  * the module artifacts (globals, embedded npm tables) the IR module carries. */
9
9
  import * as ts from "../ts7/adapter.js";
10
10
  import { bindingSource } from "../binding-source.js";
11
- import { dirname as dirnamePath, isAbsolute, resolve as resolvePath } from "node:path";
12
- import { NpmGraphBuilder, packageNameOfPath, probeNodeImportRefusal, probeNodeRequireRefusal, } from "../npm.js";
11
+ import { dirname as dirnamePath, resolve as resolvePath } from "node:path";
12
+ import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
13
13
  import { isNpmStaticPackage } from "../npm-static.js";
14
14
  import { isJsSourceFileName } from "../tsc-codes.js";
15
15
  import { isRelativeSpecifier } from "../workspace-registry.js";
16
16
  import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
17
17
  import { markCycleEarlyBindings, withCycleInitFlags } from "./cycle-initialization.js";
18
- import { invalidJsonModuleDiag, npmEmbedFailedDiag, requiresDynamicImportDiag, } from "../../diagnostics/diagnostic.js";
19
- import { BOOL, CAUGHT, DYN, F64, JSVAL, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
20
- import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, importCallHandleType, newFnCtx, staticImportNamespaceType, uncheckedOverloadHandleCall, } from "./lowerer.js";
21
- import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, createRequireSpecOf, } from "./builtins/module-bindings.js";
18
+ import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
19
+ import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
20
+ import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
21
+ import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
22
22
  import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
23
23
  import { stripTypeCasts } from "./builtins/arguments.js";
24
24
  import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
@@ -170,22 +170,6 @@ function dynamicProgramImportsOf(program, sf) {
170
170
  });
171
171
  return out;
172
172
  }
173
- /** --dynamic builds: program modules reachable ONLY through dynamic
174
- * `import()` join the compiled module graph — appended to `order` (before
175
- * the entry, which stays last) in depth-first postorder over their own
176
- * static import edges, exactly like preflight ordered the static graph.
177
- * NOTHING calls their %init at startup (%main runs only the entry's init,
178
- * and no static import header names these), so a dynamic-only module
179
- * still evaluates exactly when Node evaluates it: the import() site's
180
- * namespace builder calls the guarded init on the engine microtask.
181
- * Fixpoint: an added module's own import() sites are scanned too. Static
182
- * cycles inside the added subgraph ride preflight's own admission engine
183
- * (makeCycleAdmission — preflight only walked the entry's static graph,
184
- * so it never judged these): benign back edges are Node cache hits the
185
- * run-once init guards reproduce, and inadmissible ones get preflight's
186
- * SC1016 with the same narrowed reason via `onCycle`. Idempotent —
187
- * re-running on an already-extended order adds nothing (both lowering
188
- * passes share one array). */
189
173
  export function appendDynamicImportModules(program, order, onCycle) {
190
174
  if (order.length === 0)
191
175
  return; // no preflight order — sites keep their fences
@@ -390,33 +374,12 @@ export function collectProgram(lowerer, parts) {
390
374
  }
391
375
  markCycleEarlyBindings(lowerer);
392
376
  }
393
- /** The npm-import chokepoint, run once per pass during collection (so
394
- * bodies lowered in ANY pass resolve the bindings). In a static build
395
- * every value-importing npm import reports the requires-dynamic
396
- * diagnostic naming the package — the package's shipped JS has exactly
397
- * one execution home, the embedded engine. Under --dynamic each value
398
- * binding becomes a jsval GLOBAL, registered by ALIASED symbol (modules
399
- * importing the same export share one global) and initialized at the
400
- * top of the importing module's %init by island.import — the engine's
401
- * module registry caches, so re-imports are lookups, not re-evaluations.
402
- * The runtime graph (the package entry plus everything it reaches)
403
- * builds here too; its failures are ordinary diagnostics at the import
404
- * site. Type-only imports are free either way: the .d.ts is a type
405
- * surface, not code. */
406
377
  export function collectNpmImports(lowerer, parts) {
407
- const services = lowerer.frontendServices;
408
- if (lowerer.dynamic && services === undefined)
409
- throw new Error("dynamic lowering requires frontend services");
410
- const builder = lowerer.dynamic && services !== undefined ? new NpmGraphBuilder(services) : null;
411
378
  const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
412
379
  for (const fp of parts) {
413
380
  for (const stmt of fp.sf.statements) {
414
381
  // NAMED re-exports from npm packages (`export { isUrl } from
415
- // "url-or-path"` — preflight admitted them): import-plus-export
416
- // plumbing — the island load registers at this statement's
417
- // position, and each binding keys the same aliased symbol a
418
- // direct import would, so consumers' alias chains land on the
419
- // same storage.
382
+ // "url-or-path"`): use the same package bindings as direct imports.
420
383
  const reexport = ts.isExportDeclaration(stmt) &&
421
384
  !stmt.isTypeOnly &&
422
385
  stmt.moduleSpecifier !== undefined &&
@@ -447,16 +410,13 @@ export function collectNpmImports(lowerer, parts) {
447
410
  const spec = specNode.text;
448
411
  // --external-types owns this exact module interpretation. Even when
449
412
  // an install happens to resolve the same name (or --npm-static auto
450
- // selects its package), the declaration mapping promises no npm or
451
- // island runtime implementation; the preflight/import-use SC1010
452
- // fences are the whole story.
413
+ // selects its package), the declaration mapping owns this boundary.
453
414
  if (lowerer.externalTypes.has(spec))
454
415
  continue;
455
416
  // A source-only workspace package is part of the program module
456
417
  // graph: resolveImport follows its node_modules link to the loaded
457
418
  // TypeScript entry. Its internal `.js` spellings have already been
458
- // resolved to `.ts` by that graph, and no source may be handed to
459
- // the JavaScript island.
419
+ // resolved to `.ts` by that graph.
460
420
  if (!isRelativeSpecifier(spec) && resolveImport(lowerer.program, fp.sf, spec) !== null) {
461
421
  continue;
462
422
  }
@@ -465,7 +425,6 @@ export function collectNpmImports(lowerer, parts) {
465
425
  // is a PROGRAM-MODULE dependency — its entry sits in the module
466
426
  // order, orderedImportsOf answers it for the %init header, and the
467
427
  // checker's alias chains bind the imports to its own exports. The
468
- // island owns nothing here, in static and --dynamic builds alike.
469
428
  if (npm !== null &&
470
429
  isNpmStaticPackage(npm.packageName) &&
471
430
  isJsSourceFileName(npm.typesFile) &&
@@ -474,12 +433,8 @@ export function collectNpmImports(lowerer, parts) {
474
433
  }
475
434
  // A RELATIVE specifier resolving INTO node_modules (the e2e driver
476
435
  // shape: `import "../node_modules/vercel/dist/index.js"`) is
477
- // package code too — tsc pulls the FILE into the program under
478
- // allowJs, but shipped JS has exactly one execution home, the
479
- // embedded engine, so it takes the same island path as a bare
480
- // specifier (previously it lowered to NOTHING: not an npm import,
481
- // and node_modules files never lower as program modules — the
482
- // import silently dropped).
436
+ // package code too. Attribute it to the package so unselected source
437
+ // receives a diagnostic instead of silently dropping the import.
483
438
  const relPkg = npm === null && isRelativeSpecifier(spec)
484
439
  ? packageNameOfPath(resolvePath(dirnamePath(fp.sf.fileName), spec))
485
440
  : null;
@@ -491,7 +446,6 @@ export function collectNpmImports(lowerer, parts) {
491
446
  if (relIsJs) {
492
447
  // An explicitly selected installed entry owns its package's
493
448
  // source graph. Preflight included these modules for native
494
- // initialization; do not also embed them in the island.
495
449
  const dep = resolveImport(lowerer.program, fp.sf, spec);
496
450
  if (dep !== null && entryPackageFile(dep.fileName) && lowerer.fileTag.has(dep))
497
451
  continue;
@@ -506,105 +460,16 @@ export function collectNpmImports(lowerer, parts) {
506
460
  // resolved, but the exports target ships no JS — the types-only
507
461
  // package shape): preflight registered Node's startup crash for
508
462
  // it, %main throws before any init runs, and the bindings never
509
- // link — nothing to embed, no island requirement, in EITHER mode.
510
463
  if (npm !== null && probeNodeImportRefusal(fp.sf.fileName, spec) !== null)
511
464
  continue;
512
- if (!builder) {
513
- lowerer.pushDiag(requiresDynamicImportDiag(npm?.packageName ?? relPkg, locOf(stmt)));
514
- continue;
515
- }
516
- const before = builder.errors.length;
517
- const entryKey = npm
518
- ? (builder.addImport(fp.sf.fileName, spec), builder.entryOf(fp.sf.fileName, spec))
519
- : builder.addFileImport(fp.sf.fileName, spec);
520
- for (const err of builder.errors.slice(before)) {
521
- lowerer.pushDiag(npmEmbedFailedDiag(err.message, locOf(stmt)));
522
- }
523
- if (entryKey === null)
524
- continue; // resolution failed — reported above
525
- const loc = locOf(stmt);
526
- const byStmt = lowerer.npmInitActions.get(fp.sf) ?? new Map();
527
- lowerer.npmInitActions.set(fp.sf, byStmt);
528
- const actions = byStmt.get(stmt) ?? [];
529
- byStmt.set(stmt, actions);
530
- const importExpr = (exportName) => ({
531
- kind: "libCall",
532
- fn: "island.import",
533
- args: [
534
- { kind: "strLit", value: entryKey, type: STRING, loc },
535
- { kind: "strLit", value: exportName, type: STRING, loc },
536
- // The specifier as WRITTEN — Node's missing-export SyntaxError
537
- // names it ("The requested module 'x' does not provide an
538
- // export named 'y'"), and the runtime check reproduces that
539
- // message exactly (scr_jsval_import).
540
- { kind: "strLit", value: spec, type: STRING, loc },
541
- ],
542
- type: JSVAL,
543
- loc,
544
- });
545
- const bind = (nameNode, exportName) => {
546
- let symbol = lowerer.checker.getSymbolAtLocation(nameNode);
547
- if (symbol && symbol.flags & ts.SymbolFlags.Alias) {
548
- symbol = lowerer.checker.getAliasedSymbol(symbol);
549
- }
550
- if (!symbol)
551
- return;
552
- let g = lowerer.globalsBySymbol.get(symbol);
553
- if (!g) {
554
- g = {
555
- id: `%g.npm.${lowerer.globalsList.length}`,
556
- name: nameNode.text,
557
- type: JSVAL,
558
- mutable: false,
559
- };
560
- lowerer.globalsBySymbol.set(symbol, g);
561
- lowerer.globalsList.push(g);
562
- }
563
- actions.push({ kind: "assign", localId: g.id, value: importExpr(exportName), loc });
564
- };
565
- if (reexport !== null) {
566
- for (const el of reexport.elements) {
567
- if (el.isTypeOnly)
568
- continue;
569
- bind(el.name, el.propertyName?.text ?? el.name.text);
570
- }
571
- continue;
572
- }
573
- if (!clause) {
574
- // Side-effect import: load for its top-level effects, keep nothing.
575
- actions.push({ kind: "exprStmt", expr: importExpr("*"), loc });
465
+ {
466
+ lowerer.pushDiag(unsupportedPackageImportDiag(npm?.packageName ?? relPkg, locOf(stmt)));
576
467
  continue;
577
468
  }
578
- if (clause.name)
579
- bind(clause.name, "default");
580
- if (clause.namedBindings) {
581
- if (ts.isNamespaceImport(clause.namedBindings)) {
582
- bind(clause.namedBindings.name, "*");
583
- }
584
- else {
585
- for (const el of clause.namedBindings.elements) {
586
- if (el.isTypeOnly)
587
- continue;
588
- bind(el.name, el.propertyName?.text ?? el.name.text);
589
- }
590
- }
591
- }
592
469
  }
593
470
  }
594
471
  for (const fp of parts)
595
- collectDynamicImports(lowerer, builder, fp.sf);
596
- if (builder) {
597
- for (const fp of parts)
598
- collectCreateRequires(lowerer, builder, fp.sf);
599
- const graph = builder.finish();
600
- if (graph.modules.length > 0) {
601
- lowerer.npmEmbedded = { modules: graph.modules, edges: graph.edges };
602
- }
603
- if (graph.builtins.length > 0)
604
- lowerer.npmBuiltins = graph.builtins;
605
- if (graph.lazyTraps.length > 0)
606
- lowerer.npmLazyTraps = graph.lazyTraps;
607
- }
472
+ collectDynamicImports(lowerer, fp.sf);
608
473
  }
609
474
  /** Literal dynamic-import collection: every
610
475
  * `import("literal")` in the file — whatever body it sits in — resolves
@@ -619,7 +484,7 @@ export function collectNpmImports(lowerer, parts) {
619
484
  * specifiers are skipped — the lowering owns that fence (the module
620
485
  * graph is a build-time artifact; there is nothing to embed for a
621
486
  * runtime-computed name). */
622
- function collectDynamicImports(lowerer, builder, sf) {
487
+ function collectDynamicImports(lowerer, sf) {
623
488
  ts.walkPreorder(sf, (node) => {
624
489
  if (ts.isCallExpression(node) &&
625
490
  node.expression.kind === ts.SyntaxKind.ImportKeyword &&
@@ -645,65 +510,18 @@ function collectDynamicImports(lowerer, builder, sf) {
645
510
  const builtin = canonicalBuiltinModule(spec);
646
511
  const res = ownModule
647
512
  ? { kind: "program-module" }
648
- : !lowerer.dynamic && builtin !== null
513
+ : builtin !== null
649
514
  ? { kind: "static-builtin", module: builtin }
650
- : builder?.addDynamicImport(sf.fileName, spec);
515
+ : undefined;
651
516
  if (res === undefined) {
652
517
  return undefined;
653
518
  }
654
519
  lowerer.dynImports.set(mapKey, res);
655
- if (res.kind === "unsupported-builtin") {
656
- lowerer.pushDiag(npmEmbedFailedDiag(`'${spec}' is a Node builtin the island does not provide a shim for`, locOf(node)));
657
- }
658
- else if (res.kind === "unresolved") {
659
- lowerer.pushDiag(npmEmbedFailedDiag(res.message, locOf(node)));
660
- }
661
520
  }
662
521
  }
663
522
  return undefined;
664
523
  });
665
524
  }
666
- /** The createRequire half of the npm chokepoint (--dynamic only): every
667
- * `require("bare-literal")` through a createRequire binding — whatever
668
- * body it sits in — resolves under Node's "require" condition and
669
- * embeds AT COLLECTION time, so the per-site lowering later just looks
670
- * its entry up (lowerCreateRequireCall). Builtins, relative documents,
671
- * "#" specifiers, --npm-static opt-ins, and Node-refused bare names
672
- * are the lowering's own arms — only resolvable installed packages
673
- * register here; resolution failures are diagnostics at the call
674
- * expression, exactly like static npm imports at their statements. */
675
- function collectCreateRequires(lowerer, builder, sf) {
676
- const visit = (node) => {
677
- if (ts.isCallExpression(node)) {
678
- const cr = createRequireSpecOf(lowerer, node);
679
- const spec = cr?.spec ?? null;
680
- if (cr !== null &&
681
- spec !== null &&
682
- canonicalBuiltinModule(spec) === null &&
683
- !isRelativeSpecifier(spec) &&
684
- !isAbsolute(spec) &&
685
- !spec.startsWith("#") &&
686
- probeNodeRequireRefusal(cr.baseFile.fileName, spec) === null) {
687
- const pkgName = spec.startsWith("@")
688
- ? spec.split("/").slice(0, 2).join("/")
689
- : spec.split("/")[0];
690
- const mapKey = `${cr.baseFile.fileName}\u0000${spec}`;
691
- if (!lowerer.createRequireImports.has(mapKey) && !isNpmStaticPackage(pkgName)) {
692
- const before = builder.errors.length;
693
- const entryKey = builder.addRequire(cr.baseFile.fileName, spec);
694
- for (const err of builder.errors.slice(before)) {
695
- lowerer.pushDiag(npmEmbedFailedDiag(err.message, locOf(node)));
696
- }
697
- lowerer.createRequireImports.set(mapKey, entryKey === null
698
- ? ""
699
- : { entryKey, format: builder.moduleFormatOf(entryKey) ?? "cjs" });
700
- }
701
- }
702
- }
703
- ts.forEachChild(node, visit);
704
- };
705
- visit(sf);
706
- }
707
525
  /** JSON module default imports (`import pkg from "../package.json"`):
708
526
  * the document is DATA known at build time, so the binding bakes into a
709
527
  * record global — the checker's structural type for the module (thanks
@@ -885,6 +703,10 @@ export function moduleArtifacts(lowerer, functions) {
885
703
  case "fieldAbsent":
886
704
  visitUnion(node.unionId);
887
705
  break;
706
+ case "unionRetype":
707
+ visitUnion(node.fromId);
708
+ visitUnion(node.unionId);
709
+ break;
888
710
  case "yieldExpr":
889
711
  if (node.captureCompletion !== undefined)
890
712
  visitType(node.captureCompletion.returnType);
@@ -1866,7 +1688,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1866
1688
  (!decl.type &&
1867
1689
  !hasJsTypeAnnotation(decl) &&
1868
1690
  checkedGlobalReference(lowerer, initializer)) ||
1869
- (!lowerer.dynamic && stdlibGlobalNameOf(lowerer, initializer) === "globalThis"))) {
1691
+ stdlibGlobalNameOf(lowerer, initializer) === "globalThis")) {
1870
1692
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1871
1693
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1872
1694
  const g = {
@@ -2030,35 +1852,6 @@ export function collectGlobals(lowerer, sf, topStmts) {
2030
1852
  }
2031
1853
  continue;
2032
1854
  }
2033
- // A JS file-scope object literal carrying GET accessors whose
2034
- // strict type has no mapping (the doc-printer root-indent
2035
- // shape — a self-referential getter): the literal builds
2036
- // ISLAND-NATIVE (the getter defines through the engine), so
2037
- // the binding holds the HANDLE — a jsval global, so exports
2038
- // and separately-declared functions reach the same engine
2039
- // object.
2040
- if (lowerer.dynamic &&
2041
- isJsSourceFile(sf) &&
2042
- !lowerer.mapTypeOf(lowerer.typeOf(nameNode)) &&
2043
- ts.isIdentifier(decl.name) &&
2044
- nameNode === decl.name &&
2045
- decl.initializer !== undefined &&
2046
- ts.isObjectLiteralExpression(decl.initializer) &&
2047
- decl.initializer.properties.some((p) => ts.isGetAccessorDeclaration(p))) {
2048
- const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
2049
- if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
2050
- const g = {
2051
- id: `%g.${tag}${nsPrefix}${nameNode.text}`,
2052
- name: nameNode.text,
2053
- type: JSVAL,
2054
- mutable: isLet,
2055
- source: bindingSource(nameNode),
2056
- };
2057
- lowerer.globalsBySymbol.set(symbol, g);
2058
- lowerer.globalsList.push(g);
2059
- }
2060
- continue;
2061
- }
2062
1855
  // A function initializer can have a native calling convention
2063
1856
  // even when its inferred return/parameter pieces need DYN. Keep
2064
1857
  // that closure in a checked-value global so class methods and
@@ -2122,23 +1915,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
2122
1915
  ts.isNewExpression(decl.initializer)
2123
1916
  ? (objectFactoryGlobalType(lowerer, decl.initializer) ?? undefined)
2124
1917
  : undefined;
2125
- // `var p1 = import("./m")` at file scope: the global holds the
2126
- // island promise/handle — the import expression's only
2127
- // production — whatever the checker's namespace type mapped to
2128
- // (lowerVarDecl's rule at module scope; the init body assigns
2129
- // it).
1918
+ // Prefer the initializer's native namespace or proxy storage
1919
+ // where it is more precise than the declaration's checker type.
2130
1920
  const handleT = ts.isIdentifier(decl.name) && nameNode === decl.name
2131
1921
  ? ((isNativeProxyInitializer(lowerer, decl.initializer) ? DYN : null) ??
2132
- (lowerer.dynamic
2133
- ? importCallHandleType(decl.initializer)
2134
- : staticImportNamespaceType(lowerer, decl.initializer)) ??
2135
- (lowerer.dynamic
2136
- ? // An unchecked-overload call result stores the handle,
2137
- // exactly the local rule (uncheckedOverloadHandleCall).
2138
- uncheckedOverloadHandleCall(lowerer, decl.initializer)
2139
- ? JSVAL
2140
- : null
2141
- : null))
1922
+ staticImportNamespaceType(lowerer, decl.initializer) ??
1923
+ null)
2142
1924
  : null;
2143
1925
  // JavaScript factory results with unmappable annotations still
2144
1926
  // need shared storage. Unannotated callable unions also use a
@@ -2257,8 +2039,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
2257
2039
  decl.initializer &&
2258
2040
  ts.isCallExpression(decl.initializer))
2259
2041
  type = DYN;
2260
- if (!lowerer.dynamic &&
2261
- isJsSourceFile(sf) &&
2042
+ if (isJsSourceFile(sf) &&
2262
2043
  !decl.type &&
2263
2044
  !hasJsTypeAnnotation(decl) &&
2264
2045
  decl.initializer &&
@@ -2291,26 +2072,6 @@ export function collectGlobals(lowerer, sf, topStmts) {
2291
2072
  !hasJsTypeAnnotation(decl)) {
2292
2073
  type = DYN;
2293
2074
  }
2294
- // An evolving-`any` array's DERIVED file-scope binding under
2295
- // --dynamic (`const kept = fns.filter(...)` where `fns`
2296
- // registered array<jsval> at its `any[]` declaration): the
2297
- // receiver-type-preserving methods answer the receiver's
2298
- // handle-element array, while tsc's evolving-array analysis
2299
- // spells the pushed element type here — the value's element
2300
- // type is the truth, so the global slot takes the handle-
2301
- // element array (lowerVarDecl's adoption, the file-scope
2302
- // face). Annotated declarations keep the validated-boundary
2303
- // fence.
2304
- if (lowerer.dynamic &&
2305
- ts.isIdentifier(decl.name) &&
2306
- nameNode === decl.name &&
2307
- decl.type === undefined &&
2308
- decl.initializer !== undefined &&
2309
- type.kind === "array" &&
2310
- type.elem.kind !== "jsval" &&
2311
- handleArrayPreservingCall(lowerer, decl.initializer)) {
2312
- type = arrayOf(JSVAL);
2313
- }
2314
2075
  // An exact class behind a generic interface keeps its native
2315
2076
  // representation so generic calls can specialize against its body.
2316
2077
  if ((type.kind === "record" || type.kind === "dyn") &&
@@ -2321,25 +2082,6 @@ export function collectGlobals(lowerer, sf, topStmts) {
2321
2082
  if (initT?.kind === "object")
2322
2083
  type = initT;
2323
2084
  }
2324
- // A file-scope PATTERN over an ISLAND-bound source (`export
2325
- // let { toString } = 1;` — the engine reads the wrapper's
2326
- // prototype member): the bound value follows the island
2327
- // property-read rule, so the global slot must too — declared
2328
- // primitives exit eagerly to their static type, everything
2329
- // else stores the HANDLE (a func-typed slot could never take
2330
- // the engine value the desugar assigns).
2331
- if (lowerer.dynamic && !ts.isIdentifier(decl.name) && decl.initializer !== undefined) {
2332
- const srcT = lowerer.mapTypeOf(lowerer.typeOf(decl.initializer));
2333
- const island = srcT !== null &&
2334
- (srcT.kind === "jsval" ||
2335
- srcT.kind === "f64" ||
2336
- srcT.kind === "bool" ||
2337
- srcT.kind === "string" ||
2338
- isUnitType(srcT));
2339
- if (island && type.kind !== "f64" && type.kind !== "bool" && type.kind !== "string") {
2340
- type = JSVAL;
2341
- }
2342
- }
2343
2085
  // File-scope unit-only bindings (`var x: undefined`, `const
2344
2086
  // y: void = undefined`) ride the unit-only union, exactly
2345
2087
  // like function-scope locals (lowerVarDecl's rule).
@@ -2437,33 +2179,6 @@ export function collectGlobals(lowerer, sf, topStmts) {
2437
2179
  }
2438
2180
  }
2439
2181
  }
2440
- /** True iff this initializer's VALUE is a jsval-element array from a
2441
- * module global already registered as one (the evolving-`any` binding
2442
- * under --dynamic): the global itself, or a receiver-TYPE-PRESERVING
2443
- * array-method call chain over it (filter/slice/splice/concat — each
2444
- * answers the receiver's own array type). Registration runs in source
2445
- * order, so the root's global — declared above, TDZ-guaranteed — is
2446
- * already in the table. */
2447
- function handleArrayPreservingCall(lowerer, e) {
2448
- const PRESERVING = new Set(["filter", "slice", "splice", "concat"]);
2449
- let cur = e;
2450
- for (;;) {
2451
- while (ts.isParenthesizedExpression(cur))
2452
- cur = cur.expression;
2453
- if (ts.isCallExpression(cur) &&
2454
- ts.isPropertyAccessExpression(cur.expression) &&
2455
- PRESERVING.has(cur.expression.name.text)) {
2456
- cur = cur.expression.expression;
2457
- continue;
2458
- }
2459
- break;
2460
- }
2461
- if (!ts.isIdentifier(cur))
2462
- return false;
2463
- const sym = lowerer.checker.getSymbolAtLocation(cur);
2464
- const g = sym ? lowerer.globalsBySymbol.get(sym) : undefined;
2465
- return g?.type.kind === "array" && g.type.elem.kind === "jsval";
2466
- }
2467
2182
  /** Registers the entry-init note for a `var` module global: JS hoists
2468
2183
  * module vars to `undefined` at module entry, so an undefined-armed slot
2469
2184
  * must hold the interned undefined arm BEFORE the body runs (a function
@@ -2476,11 +2191,10 @@ function handleArrayPreservingCall(lowerer, e) {
2476
2191
  function noteVarGlobalEntryInit(lowerer, sf, g) {
2477
2192
  // 'any' globals need the entry init exactly like undefined-armed
2478
2193
  // unions: tsc never guards `any` reads, so `var x: any;` is readable
2479
- // before any assignment and its slot must hold its world's undefined
2480
- // — the ENGINE's for jsval (--dynamic), the checked-dynamic tree's for dyn (static) —
2194
+ // before any assignment and its slot must hold native undefined
2481
2195
  // rather than a C-level NULL (an op or validated exit on NULL is
2482
2196
  // memory-unsafe, not a TypeError).
2483
- if (g.type.kind !== "union" && g.type.kind !== "jsval" && g.type.kind !== "dyn")
2197
+ if (g.type.kind !== "union" && g.type.kind !== "dyn")
2484
2198
  return;
2485
2199
  const inits = lowerer.varGlobalEntryInits.get(sf) ?? [];
2486
2200
  inits.push(g);
@@ -2638,20 +2352,6 @@ export function lowerDefaultExport(lowerer, stmt) {
2638
2352
  const value = lowerer.lowerExprExpecting(stmt.expression, g.type);
2639
2353
  return { kind: "assign", localId: g.id, value, loc: locOf(stmt) };
2640
2354
  }
2641
- /** One file's top-level statements as its init function — RUN-ONCE like a
2642
- * Node module body: non-entry inits open with a guard flag test (already
2643
- * ran → return) and set the flag before anything else, so every caller —
2644
- * hoisted import headers, inline require statements, diamonds, cache-hit
2645
- * re-requires — gets Node's module-cache semantics from the same call.
2646
- * After the guard comes the file's HOISTED module-edge header: one
2647
- * guarded %init call per imported user module and the island loads for
2648
- * npm imports, in import order (Node evaluates every imported module
2649
- * before the importer's body — depth-first postorder falls out of the
2650
- * nesting). CommonJS requires are NOT in the header: Node runs them at
2651
- * their statements, so the statement lowering emits their %init calls
2652
- * inline in the body. JSON-import bindings (pure data) load next; then
2653
- * the body. Top-level var statements assign the pre-registered globals
2654
- * instead of declaring locals. */
2655
2355
  export function lowerFileInit(lowerer, sf, stmts, name) {
2656
2356
  const isAsync = lowerer.asyncInitFiles.has(sf);
2657
2357
  const ctx = newFnCtx(false, null, null, VOID);