@scriptc/compiler 0.4.6 → 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 (1082) 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 +29 -6
  4. package/ambient/node-fallback/fs-promises.d.ts +1 -1
  5. package/ambient/node-fallback/fs.d.ts +57 -12
  6. package/ambient/node-fallback/http.d.ts +26 -18
  7. package/ambient/node-fallback/https.d.ts +5 -2
  8. package/ambient/node-fallback/net.d.ts +25 -0
  9. package/ambient/node-fallback/os.d.ts +11 -1
  10. package/ambient/node-fallback/path-posix.d.ts +6 -0
  11. package/ambient/node-fallback/path-win32.d.ts +5 -0
  12. package/ambient/node-fallback/path.d.ts +2 -0
  13. package/ambient/node-fallback/querystring.d.ts +3 -3
  14. package/ambient/node-fallback/zlib.d.ts +31 -2
  15. package/ambient/scriptc-node-fallback.d.ts +95 -20
  16. package/ambient/scriptc.d.ts +7 -2
  17. package/dist/backend/executable-features.js +22 -1
  18. package/dist/backend/executable-features.js.map +1 -1
  19. package/dist/backend/immutability.d.ts +12 -1
  20. package/dist/backend/immutability.js +50 -4
  21. package/dist/backend/immutability.js.map +1 -1
  22. package/dist/backend/immutability.test.js +95 -1
  23. package/dist/backend/immutability.test.js.map +1 -1
  24. package/dist/backend/library-pack.d.ts +6 -0
  25. package/dist/backend/library-pack.js +18 -5
  26. package/dist/backend/library-pack.js.map +1 -1
  27. package/dist/backend/library-pack.test.d.ts +1 -0
  28. package/dist/backend/library-pack.test.js +28 -0
  29. package/dist/backend/library-pack.test.js.map +1 -0
  30. package/dist/backend/linker.d.ts +20 -2
  31. package/dist/backend/linker.js +221 -35
  32. package/dist/backend/linker.js.map +1 -1
  33. package/dist/backend/lld.d.ts +15 -6
  34. package/dist/backend/lld.js +24 -16
  35. package/dist/backend/lld.js.map +1 -1
  36. package/dist/backend/lld.test.js +13 -5
  37. package/dist/backend/lld.test.js.map +1 -1
  38. package/dist/backend/llvm/alloc.d.ts +15 -2
  39. package/dist/backend/llvm/alloc.js +172 -36
  40. package/dist/backend/llvm/alloc.js.map +1 -1
  41. package/dist/backend/llvm/alloc.test.js +69 -1
  42. package/dist/backend/llvm/alloc.test.js.map +1 -1
  43. package/dist/backend/llvm/arenas.d.ts +17 -4
  44. package/dist/backend/llvm/arenas.js +105 -10
  45. package/dist/backend/llvm/arenas.js.map +1 -1
  46. package/dist/backend/llvm/arenas.test.js +229 -0
  47. package/dist/backend/llvm/arenas.test.js.map +1 -1
  48. package/dist/backend/llvm/bytes-alias.js +10 -1
  49. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  50. package/dist/backend/llvm/bytes-headers.js +6 -0
  51. package/dist/backend/llvm/bytes-headers.js.map +1 -1
  52. package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
  53. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  54. package/dist/backend/llvm/call-lifetimes.js +10 -0
  55. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  56. package/dist/backend/llvm/classes.d.ts +16 -9
  57. package/dist/backend/llvm/classes.js +142 -37
  58. package/dist/backend/llvm/classes.js.map +1 -1
  59. package/dist/backend/llvm/classes.test.js +42 -0
  60. package/dist/backend/llvm/classes.test.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.test.js +50 -1
  62. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  63. package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
  64. package/dist/backend/llvm/cpu-dispatch.js +34 -9
  65. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  66. package/dist/backend/llvm/dyn.d.ts +64 -3
  67. package/dist/backend/llvm/dyn.js +251 -15
  68. package/dist/backend/llvm/dyn.js.map +1 -1
  69. package/dist/backend/llvm/emit-function.js +68 -5
  70. package/dist/backend/llvm/emit-function.js.map +1 -1
  71. package/dist/backend/llvm/emit-module.js +226 -77
  72. package/dist/backend/llvm/emit-module.js.map +1 -1
  73. package/dist/backend/llvm/emit-module.test.d.ts +1 -0
  74. package/dist/backend/llvm/emit-module.test.js +52 -0
  75. package/dist/backend/llvm/emit-module.test.js.map +1 -0
  76. package/dist/backend/llvm/emit-statements.js +138 -34
  77. package/dist/backend/llvm/emit-statements.js.map +1 -1
  78. package/dist/backend/llvm/emitter.d.ts +142 -10
  79. package/dist/backend/llvm/emitter.js +523 -73
  80. package/dist/backend/llvm/emitter.js.map +1 -1
  81. package/dist/backend/llvm/emitter.test.js +31 -3
  82. package/dist/backend/llvm/emitter.test.js.map +1 -1
  83. package/dist/backend/llvm/expr-async.js +19 -1
  84. package/dist/backend/llvm/expr-async.js.map +1 -1
  85. package/dist/backend/llvm/expr-bytes.js +16 -1
  86. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  87. package/dist/backend/llvm/expr-calls.d.ts +4 -1
  88. package/dist/backend/llvm/expr-calls.js +38 -6
  89. package/dist/backend/llvm/expr-calls.js.map +1 -1
  90. package/dist/backend/llvm/expr-dynamic.js +237 -23
  91. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  92. package/dist/backend/llvm/expr-primitives.js +123 -12
  93. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  94. package/dist/backend/llvm/expr-records.d.ts +1 -1
  95. package/dist/backend/llvm/expr-records.js +124 -56
  96. package/dist/backend/llvm/expr-records.js.map +1 -1
  97. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  98. package/dist/backend/llvm/expr-stream-bridges.js +59 -2
  99. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  100. package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
  101. package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
  102. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  103. package/dist/backend/llvm/integer-values.d.ts +2 -0
  104. package/dist/backend/llvm/integer-values.js +6 -0
  105. package/dist/backend/llvm/integer-values.js.map +1 -1
  106. package/dist/backend/llvm/js-groups.d.ts +21 -0
  107. package/dist/backend/llvm/js-groups.js +277 -0
  108. package/dist/backend/llvm/js-groups.js.map +1 -0
  109. package/dist/backend/llvm/js-ic.d.ts +57 -1
  110. package/dist/backend/llvm/js-ic.js +389 -22
  111. package/dist/backend/llvm/js-ic.js.map +1 -1
  112. package/dist/backend/llvm/lib-dispatch.js +152 -1
  113. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  114. package/dist/backend/llvm/lib-filesystem.js +116 -11
  115. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  116. package/dist/backend/llvm/lib-network.js +33 -6
  117. package/dist/backend/llvm/lib-network.js.map +1 -1
  118. package/dist/backend/llvm/lib-process.js +180 -27
  119. package/dist/backend/llvm/lib-process.js.map +1 -1
  120. package/dist/backend/llvm/lib-shared.js +139 -2
  121. package/dist/backend/llvm/lib-shared.js.map +1 -1
  122. package/dist/backend/llvm/lib-stream.js +67 -0
  123. package/dist/backend/llvm/lib-stream.js.map +1 -1
  124. package/dist/backend/llvm/local-union-storage.test.js +32 -0
  125. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  126. package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
  127. package/dist/backend/llvm/loop-entry-versions.js +43 -21
  128. package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
  129. package/dist/backend/llvm/loop-state.d.ts +7 -1
  130. package/dist/backend/llvm/loop-state.js +26 -3
  131. package/dist/backend/llvm/loop-state.js.map +1 -1
  132. package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
  133. package/dist/backend/llvm/map-entry-fusion.js +3 -3
  134. package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
  135. package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
  136. package/dist/backend/llvm/map-number-lookup.js +7 -3
  137. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  138. package/dist/backend/llvm/map-number-lookup.test.js +58 -17
  139. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  140. package/dist/backend/llvm/nullable-unions.js +7 -6
  141. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  142. package/dist/backend/llvm/nullable-unions.test.js +4 -1
  143. package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
  144. package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
  145. package/dist/backend/llvm/receiver-brackets.test.js +68 -0
  146. package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
  147. package/dist/backend/llvm/receivers.js +3 -0
  148. package/dist/backend/llvm/receivers.js.map +1 -1
  149. package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
  150. package/dist/backend/llvm/record-entry-fusion.js +217 -0
  151. package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
  152. package/dist/backend/llvm/record-results.d.ts +5 -2
  153. package/dist/backend/llvm/record-results.js +13 -12
  154. package/dist/backend/llvm/record-results.js.map +1 -1
  155. package/dist/backend/llvm/record-views.d.ts +22 -2
  156. package/dist/backend/llvm/record-views.js +147 -12
  157. package/dist/backend/llvm/record-views.js.map +1 -1
  158. package/dist/backend/llvm/record-views.test.js +76 -0
  159. package/dist/backend/llvm/record-views.test.js.map +1 -1
  160. package/dist/backend/llvm/reference-effects.js +1 -0
  161. package/dist/backend/llvm/reference-effects.js.map +1 -1
  162. package/dist/backend/llvm/reference-writes.js +4 -0
  163. package/dist/backend/llvm/reference-writes.js.map +1 -1
  164. package/dist/backend/llvm/region-ir.js +1 -0
  165. package/dist/backend/llvm/region-ir.js.map +1 -1
  166. package/dist/backend/llvm/region-sites.d.ts +18 -0
  167. package/dist/backend/llvm/region-sites.js +79 -1
  168. package/dist/backend/llvm/region-sites.js.map +1 -1
  169. package/dist/backend/llvm/runtime-registries.test.js +53 -6
  170. package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
  171. package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
  172. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  173. package/dist/backend/llvm/shapes.d.ts +36 -3
  174. package/dist/backend/llvm/shapes.js +201 -16
  175. package/dist/backend/llvm/shapes.js.map +1 -1
  176. package/dist/backend/llvm/shapes.test.js +4 -0
  177. package/dist/backend/llvm/shapes.test.js.map +1 -1
  178. package/dist/backend/llvm/speculative-integers.d.ts +10 -1
  179. package/dist/backend/llvm/speculative-integers.js +59 -8
  180. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  181. package/dist/backend/llvm/stack-objects.d.ts +1 -2
  182. package/dist/backend/llvm/stack-objects.js +8 -5
  183. package/dist/backend/llvm/stack-objects.js.map +1 -1
  184. package/dist/backend/llvm/unwind-abi.d.ts +3 -3
  185. package/dist/backend/llvm/unwind-abi.js +8 -3
  186. package/dist/backend/llvm/unwind-abi.js.map +1 -1
  187. package/dist/backend/llvm/walkers.d.ts +12 -0
  188. package/dist/backend/llvm/walkers.js +47 -3
  189. package/dist/backend/llvm/walkers.js.map +1 -1
  190. package/dist/backend/may-throw.js +12 -2
  191. package/dist/backend/may-throw.js.map +1 -1
  192. package/dist/backend/may-throw.test.js +13 -0
  193. package/dist/backend/may-throw.test.js.map +1 -1
  194. package/dist/backend/native/contracts.d.ts +94 -0
  195. package/dist/backend/native/executable.js +134 -10
  196. package/dist/backend/native/executable.js.map +1 -1
  197. package/dist/backend/native/helper-identity-record.d.ts +11 -0
  198. package/dist/backend/native/helper-identity-record.js +76 -0
  199. package/dist/backend/native/helper-identity-record.js.map +1 -0
  200. package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
  201. package/dist/backend/native/helper-identity-record.test.js +101 -0
  202. package/dist/backend/native/helper-identity-record.test.js.map +1 -0
  203. package/dist/backend/native/library.js +10 -2
  204. package/dist/backend/native/library.js.map +1 -1
  205. package/dist/backend/native/runtime-inputs.js +8 -1
  206. package/dist/backend/native/runtime-inputs.js.map +1 -1
  207. package/dist/backend/native/vendor.d.ts +1 -1
  208. package/dist/backend/native/vendor.js +1 -1
  209. package/dist/backend/native/vendor.js.map +1 -1
  210. package/dist/backend/native-codegen-core.d.ts +13 -10
  211. package/dist/backend/native-codegen-core.js +26 -13
  212. package/dist/backend/native-codegen-core.js.map +1 -1
  213. package/dist/backend/native-codegen.js +30 -8
  214. package/dist/backend/native-codegen.js.map +1 -1
  215. package/dist/backend/native-codegen.test.js +110 -14
  216. package/dist/backend/native-codegen.test.js.map +1 -1
  217. package/dist/backend/native-link-info-core.d.ts +72 -0
  218. package/dist/backend/native-link-info-core.js.map +1 -1
  219. package/dist/backend/native-link-info.js +1 -0
  220. package/dist/backend/native-link-info.js.map +1 -1
  221. package/dist/backend/native-profile.d.ts +4 -1
  222. package/dist/backend/native-profile.js +12 -1
  223. package/dist/backend/native-profile.js.map +1 -1
  224. package/dist/backend/native-profile.test.js +10 -0
  225. package/dist/backend/native-profile.test.js.map +1 -1
  226. package/dist/backend/publication.d.ts +4 -1
  227. package/dist/backend/publication.js +4 -2
  228. package/dist/backend/publication.js.map +1 -1
  229. package/dist/backend/runtime-abi.d.ts +2 -2
  230. package/dist/backend/runtime-abi.js +2 -2
  231. package/dist/backend/runtime-pack-core.d.ts +46 -7
  232. package/dist/backend/runtime-pack-core.js +37 -2
  233. package/dist/backend/runtime-pack-core.js.map +1 -1
  234. package/dist/backend/runtime-pack-native.d.ts +18 -1
  235. package/dist/backend/runtime-pack-native.js +138 -29
  236. package/dist/backend/runtime-pack-native.js.map +1 -1
  237. package/dist/backend/runtime-pack-native.test.js +166 -4
  238. package/dist/backend/runtime-pack-native.test.js.map +1 -1
  239. package/dist/backend/runtime-pack-targets.test.js +3 -1
  240. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  241. package/dist/backend/runtime-pack.d.ts +7 -0
  242. package/dist/backend/runtime-pack.js +25 -3
  243. package/dist/backend/runtime-pack.js.map +1 -1
  244. package/dist/backend/runtime-pack.test.js +213 -12
  245. package/dist/backend/runtime-pack.test.js.map +1 -1
  246. package/dist/backend/tree-classes.d.ts +42 -0
  247. package/dist/backend/tree-classes.js +723 -0
  248. package/dist/backend/tree-classes.js.map +1 -0
  249. package/dist/backend/tree-classes.test.d.ts +1 -0
  250. package/dist/backend/tree-classes.test.js +338 -0
  251. package/dist/backend/tree-classes.test.js.map +1 -0
  252. package/dist/backend/vendor-archives.d.ts +8 -1
  253. package/dist/backend/vendor-archives.js +313 -8
  254. package/dist/backend/vendor-archives.js.map +1 -1
  255. package/dist/backend/vendor-inputs.d.ts +60 -3
  256. package/dist/backend/vendor-inputs.js +109 -3
  257. package/dist/backend/vendor-inputs.js.map +1 -1
  258. package/dist/backend/vendor-inputs.test.js +62 -1
  259. package/dist/backend/vendor-inputs.test.js.map +1 -1
  260. package/dist/backend/warm-cache.js +2 -0
  261. package/dist/backend/warm-cache.js.map +1 -1
  262. package/dist/compat/fetch-profile.d.ts +7 -1
  263. package/dist/compat/fetch-profile.js +25 -12
  264. package/dist/compat/fetch-profile.js.map +1 -1
  265. package/dist/compile-types.d.ts +7 -0
  266. package/dist/contracts/check.d.ts +3 -0
  267. package/dist/contracts/check.js +18 -5
  268. package/dist/contracts/check.js.map +1 -1
  269. package/dist/coverage/report.js +47 -0
  270. package/dist/coverage/report.js.map +1 -1
  271. package/dist/coverage/surface-manifest.js +1 -1
  272. package/dist/coverage/surface-manifest.js.map +1 -1
  273. package/dist/diagnostics/codes.d.ts +14 -0
  274. package/dist/diagnostics/codes.js +14 -0
  275. package/dist/diagnostics/codes.js.map +1 -1
  276. package/dist/diagnostics/diagnostic.d.ts +68 -0
  277. package/dist/diagnostics/diagnostic.js +186 -6
  278. package/dist/diagnostics/diagnostic.js.map +1 -1
  279. package/dist/diagnostics/dynamic-tier.js +3 -1
  280. package/dist/diagnostics/dynamic-tier.js.map +1 -1
  281. package/dist/diagnostics/envelope.d.ts +18 -0
  282. package/dist/diagnostics/envelope.js.map +1 -1
  283. package/dist/executable/executable-cache.d.ts +48 -0
  284. package/dist/executable/executable-cache.js +38 -0
  285. package/dist/executable/executable-cache.js.map +1 -1
  286. package/dist/executable/executable-cache.test.js +127 -1
  287. package/dist/executable/executable-cache.test.js.map +1 -1
  288. package/dist/executable/prepare.d.ts +13 -3
  289. package/dist/executable/prepare.js +438 -234
  290. package/dist/executable/prepare.js.map +1 -1
  291. package/dist/frontend/analysis.js +200 -18
  292. package/dist/frontend/analysis.js.map +1 -1
  293. package/dist/frontend/builtin-modules.d.ts +4 -0
  294. package/dist/frontend/builtin-modules.js +10 -0
  295. package/dist/frontend/builtin-modules.js.map +1 -1
  296. package/dist/frontend/early-errors.d.ts +24 -0
  297. package/dist/frontend/early-errors.js +836 -0
  298. package/dist/frontend/early-errors.js.map +1 -0
  299. package/dist/frontend/early-errors.test.d.ts +1 -0
  300. package/dist/frontend/early-errors.test.js +207 -0
  301. package/dist/frontend/early-errors.test.js.map +1 -0
  302. package/dist/frontend/inferred-js-diagnostics.test.js +88 -0
  303. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  304. package/dist/frontend/input-tracker.d.ts +47 -0
  305. package/dist/frontend/input-tracker.js +173 -36
  306. package/dist/frontend/input-tracker.js.map +1 -1
  307. package/dist/frontend/input-tracker.test.js +86 -2
  308. package/dist/frontend/input-tracker.test.js.map +1 -1
  309. package/dist/frontend/js-inference.d.ts +2 -0
  310. package/dist/frontend/js-inference.js +18 -0
  311. package/dist/frontend/js-inference.js.map +1 -0
  312. package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
  313. package/dist/frontend/jsx-opinion-sites.test.js +86 -0
  314. package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
  315. package/dist/frontend/lib-exports.d.ts +23 -4
  316. package/dist/frontend/lib-exports.js +98 -26
  317. package/dist/frontend/lib-exports.js.map +1 -1
  318. package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
  319. package/dist/frontend/lowering/binding-analysis.js +86 -4
  320. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  321. package/dist/frontend/lowering/buffers.d.ts +8 -0
  322. package/dist/frontend/lowering/buffers.js +43 -0
  323. package/dist/frontend/lowering/buffers.js.map +1 -0
  324. package/dist/frontend/lowering/builtin-calls.js +13 -0
  325. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  326. package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
  327. package/dist/frontend/lowering/builtin-namespaces.js +41 -3
  328. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  329. package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
  330. package/dist/frontend/lowering/builtin-statics.js +407 -0
  331. package/dist/frontend/lowering/builtin-statics.js.map +1 -0
  332. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  333. package/dist/frontend/lowering/builtins/arguments.js +12 -0
  334. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  335. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
  336. package/dist/frontend/lowering/builtins/atomics.js +87 -1
  337. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  338. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
  339. package/dist/frontend/lowering/builtins/child-process-methods.js +52 -12
  340. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  341. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
  342. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
  343. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  344. package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
  345. package/dist/frontend/lowering/builtins/child-process.js +565 -28
  346. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  347. package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
  348. package/dist/frontend/lowering/builtins/compression.js +41 -21
  349. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  350. package/dist/frontend/lowering/builtins/constants.js +7 -2
  351. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  352. package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
  353. package/dist/frontend/lowering/builtins/dates.js +23 -1
  354. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  355. package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
  356. package/dist/frontend/lowering/builtins/environment.js +213 -2
  357. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  358. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
  359. package/dist/frontend/lowering/builtins/filesystem-calls.js +75 -18
  360. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  361. package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
  362. package/dist/frontend/lowering/builtins/filesystem.js +185 -16
  363. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  364. package/dist/frontend/lowering/builtins/json.js +4 -0
  365. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  366. package/dist/frontend/lowering/builtins/module-calls.js +42 -3
  367. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  368. package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
  369. package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
  370. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  371. package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
  372. package/dist/frontend/lowering/builtins/numbers.js +10 -2
  373. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  374. package/dist/frontend/lowering/builtins/operating-system.d.ts +9 -5
  375. package/dist/frontend/lowering/builtins/operating-system.js +101 -20
  376. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  377. package/dist/frontend/lowering/builtins/process.d.ts +18 -2
  378. package/dist/frontend/lowering/builtins/process.js +386 -25
  379. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  380. package/dist/frontend/lowering/builtins/promises.js +169 -8
  381. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  382. package/dist/frontend/lowering/builtins/properties.js +6 -2
  383. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  384. package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
  385. package/dist/frontend/lowering/builtins/querystring.js +202 -18
  386. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  387. package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
  388. package/dist/frontend/lowering/builtins/readline.js +200 -38
  389. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  390. package/dist/frontend/lowering/builtins/reflection.js +60 -1
  391. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  392. package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
  393. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  394. package/dist/frontend/lowering/builtins/url.js +55 -13
  395. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  396. package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
  397. package/dist/frontend/lowering/builtins/v8.js +7 -5
  398. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  399. package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
  400. package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
  401. package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
  402. package/dist/frontend/lowering/builtins/webassembly.js +2 -0
  403. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  404. package/dist/frontend/lowering/call-arguments.d.ts +10 -0
  405. package/dist/frontend/lowering/call-arguments.js +37 -2
  406. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  407. package/dist/frontend/lowering/call-signatures.d.ts +10 -0
  408. package/dist/frontend/lowering/call-signatures.js +180 -0
  409. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  410. package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
  411. package/dist/frontend/lowering/cjs-exports-object.js +1 -1
  412. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  413. package/dist/frontend/lowering/cjs-inline-require.js +5 -0
  414. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  415. package/dist/frontend/lowering/class-construction.d.ts +14 -2
  416. package/dist/frontend/lowering/class-construction.js +99 -5
  417. package/dist/frontend/lowering/class-construction.js.map +1 -1
  418. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +14 -0
  419. package/dist/frontend/lowering/class-dynamic-dispatch.js +1376 -1009
  420. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  421. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
  422. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  423. package/dist/frontend/lowering/class-protocols.js +59 -10
  424. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  425. package/dist/frontend/lowering/class-prototypes.js +20 -15
  426. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  427. package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
  428. package/dist/frontend/lowering/class-runtime-statics.js +35 -1
  429. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  430. package/dist/frontend/lowering/class-unions.js +21 -4
  431. package/dist/frontend/lowering/class-unions.js.map +1 -1
  432. package/dist/frontend/lowering/class-views.d.ts +13 -0
  433. package/dist/frontend/lowering/class-views.js +51 -0
  434. package/dist/frontend/lowering/class-views.js.map +1 -0
  435. package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
  436. package/dist/frontend/lowering/coercions/function-adapters.js +63 -10
  437. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  438. package/dist/frontend/lowering/coercions/state.d.ts +15 -0
  439. package/dist/frontend/lowering/coercions/state.js +24 -0
  440. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  441. package/dist/frontend/lowering/coercions/structural-plans.js +75 -3
  442. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  443. package/dist/frontend/lowering/coercions/structural.js +39 -2
  444. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  445. package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
  446. package/dist/frontend/lowering/coercions/unions.js +54 -10
  447. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  448. package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
  449. package/dist/frontend/lowering/constructor-returns.js +284 -58
  450. package/dist/frontend/lowering/constructor-returns.js.map +1 -1
  451. package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
  452. package/dist/frontend/lowering/containers/array-callbacks.js +288 -90
  453. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  454. package/dist/frontend/lowering/containers/array-construction.js +37 -8
  455. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  456. package/dist/frontend/lowering/containers/array-from-async.js +139 -3
  457. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  458. package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
  459. package/dist/frontend/lowering/containers/array-iteration.js +24 -7
  460. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
  461. package/dist/frontend/lowering/containers/array-methods.js +30 -11
  462. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  463. package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
  464. package/dist/frontend/lowering/containers/bytes.js +450 -86
  465. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  466. package/dist/frontend/lowering/containers/callback-arguments.d.ts +16 -0
  467. package/dist/frontend/lowering/containers/callback-arguments.js +74 -12
  468. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  469. package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
  470. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  471. package/dist/frontend/lowering/containers/collection-methods.js +52 -17
  472. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  473. package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
  474. package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
  475. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
  476. package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
  477. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  478. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
  479. package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
  480. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  481. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
  482. package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
  483. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  484. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  485. package/dist/frontend/lowering/crypto-tables.js +5 -5
  486. package/dist/frontend/lowering/dispatch-sites.js +3 -0
  487. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  488. package/dist/frontend/lowering/divergences.d.ts +40 -0
  489. package/dist/frontend/lowering/divergences.js +239 -20
  490. package/dist/frontend/lowering/divergences.js.map +1 -1
  491. package/dist/frontend/lowering/effect-free.d.ts +12 -0
  492. package/dist/frontend/lowering/effect-free.js +44 -0
  493. package/dist/frontend/lowering/effect-free.js.map +1 -0
  494. package/dist/frontend/lowering/expressions/array-literals.d.ts +24 -0
  495. package/dist/frontend/lowering/expressions/array-literals.js +88 -10
  496. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  497. package/dist/frontend/lowering/expressions/binary.js +216 -14
  498. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  499. package/dist/frontend/lowering/expressions/element-access.js +272 -11
  500. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  501. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
  502. package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
  503. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
  504. package/dist/frontend/lowering/expressions/identifiers.js +173 -4
  505. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  506. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
  507. package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
  508. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  509. package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
  510. package/dist/frontend/lowering/expressions/narrowing.js +195 -18
  511. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  512. package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
  513. package/dist/frontend/lowering/expressions/object-literals.js +951 -240
  514. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  515. package/dist/frontend/lowering/expressions/optional-chains.js +71 -21
  516. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  517. package/dist/frontend/lowering/expressions/property-access.d.ts +39 -0
  518. package/dist/frontend/lowering/expressions/property-access.js +1141 -87
  519. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  520. package/dist/frontend/lowering/expressions/relational.js +262 -4
  521. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  522. package/dist/frontend/lowering/expressions/typeof.js +25 -0
  523. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  524. package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
  525. package/dist/frontend/lowering/expressions/union-fields.js +103 -13
  526. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  527. package/dist/frontend/lowering/expressions/updates.js +156 -22
  528. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  529. package/dist/frontend/lowering/frozen-records.d.ts +6 -0
  530. package/dist/frontend/lowering/frozen-records.js +10 -4
  531. package/dist/frontend/lowering/frozen-records.js.map +1 -1
  532. package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
  533. package/dist/frontend/lowering/frozen-records.test.js +44 -0
  534. package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
  535. package/dist/frontend/lowering/function-names.d.ts +9 -0
  536. package/dist/frontend/lowering/function-names.js +95 -0
  537. package/dist/frontend/lowering/function-names.js.map +1 -0
  538. package/dist/frontend/lowering/function-returns.js +42 -13
  539. package/dist/frontend/lowering/function-returns.js.map +1 -1
  540. package/dist/frontend/lowering/general-streams.js +5 -0
  541. package/dist/frontend/lowering/general-streams.js.map +1 -1
  542. package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
  543. package/dist/frontend/lowering/generator-delegation.js +301 -118
  544. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  545. package/dist/frontend/lowering/generic-functions.d.ts +75 -0
  546. package/dist/frontend/lowering/generic-functions.js +790 -18
  547. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  548. package/dist/frontend/lowering/global-function-values.d.ts +25 -0
  549. package/dist/frontend/lowering/global-function-values.js +193 -0
  550. package/dist/frontend/lowering/global-function-values.js.map +1 -0
  551. package/dist/frontend/lowering/global-values.d.ts +15 -4
  552. package/dist/frontend/lowering/global-values.js +67 -9
  553. package/dist/frontend/lowering/global-values.js.map +1 -1
  554. package/dist/frontend/lowering/handle-properties.js +34 -1
  555. package/dist/frontend/lowering/handle-properties.js.map +1 -1
  556. package/dist/frontend/lowering/host-global-values.d.ts +31 -0
  557. package/dist/frontend/lowering/host-global-values.js +121 -0
  558. package/dist/frontend/lowering/host-global-values.js.map +1 -0
  559. package/dist/frontend/lowering/host-globals.d.ts +74 -0
  560. package/dist/frontend/lowering/host-globals.js +344 -0
  561. package/dist/frontend/lowering/host-globals.js.map +1 -0
  562. package/dist/frontend/lowering/http2-constants.js +1 -1
  563. package/dist/frontend/lowering/iterator-adapters.js +46 -17
  564. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  565. package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
  566. package/dist/frontend/lowering/iterator-prototype.js +160 -0
  567. package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
  568. package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
  569. package/dist/frontend/lowering/key-order-witness.js +571 -9
  570. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  571. package/dist/frontend/lowering/key-order-witness.test.js +1 -0
  572. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  573. package/dist/frontend/lowering/lib-boundary.js +25 -3
  574. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  575. package/dist/frontend/lowering/lower-assert.js +140 -16
  576. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  577. package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
  578. package/dist/frontend/lowering/lower-async-iteration.js +15 -0
  579. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  580. package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
  581. package/dist/frontend/lowering/lower-builtin-values.js +342 -58
  582. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  583. package/dist/frontend/lowering/lower-calls.d.ts +47 -1
  584. package/dist/frontend/lowering/lower-calls.js +1354 -273
  585. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  586. package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
  587. package/dist/frontend/lowering/lower-calls.test.js +121 -0
  588. package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
  589. package/dist/frontend/lowering/lower-classes.d.ts +36 -5
  590. package/dist/frontend/lowering/lower-classes.js +630 -89
  591. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  592. package/dist/frontend/lowering/lower-event-emitter.d.ts +15 -2
  593. package/dist/frontend/lowering/lower-event-emitter.js +610 -98
  594. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  595. package/dist/frontend/lowering/lower-exprs.d.ts +15 -1
  596. package/dist/frontend/lowering/lower-exprs.js +96 -20
  597. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  598. package/dist/frontend/lowering/lower-functions.js +27 -6
  599. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  600. package/dist/frontend/lowering/lower-generators.js +57 -10
  601. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  602. package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
  603. package/dist/frontend/lowering/lower-global-value.js +14 -5
  604. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  605. package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
  606. package/dist/frontend/lowering/lower-inspect.js +713 -92
  607. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  608. package/dist/frontend/lowering/lower-modules.js +135 -27
  609. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  610. package/dist/frontend/lowering/lower-namespaces.js +18 -0
  611. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  612. package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
  613. package/dist/frontend/lowering/lower-node-island.js +472 -67
  614. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  615. package/dist/frontend/lowering/lower-server.js +463 -96
  616. package/dist/frontend/lowering/lower-server.js.map +1 -1
  617. package/dist/frontend/lowering/lower-shared-modules.js +13 -1
  618. package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
  619. package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
  620. package/dist/frontend/lowering/lower-stdlib.js +77 -18
  621. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  622. package/dist/frontend/lowering/lower-stmts.d.ts +24 -4
  623. package/dist/frontend/lowering/lower-stmts.js +831 -136
  624. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  625. package/dist/frontend/lowering/lower-stream.js +126 -8
  626. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  627. package/dist/frontend/lowering/lower-timers.js +243 -48
  628. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  629. package/dist/frontend/lowering/lower-url.js +6 -3
  630. package/dist/frontend/lowering/lower-url.js.map +1 -1
  631. package/dist/frontend/lowering/lowerer.d.ts +363 -21
  632. package/dist/frontend/lowering/lowerer.js +1224 -129
  633. package/dist/frontend/lowering/lowerer.js.map +1 -1
  634. package/dist/frontend/lowering/lowerer.test.js +19 -1
  635. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  636. package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
  637. package/dist/frontend/lowering/lowering-facts.js +323 -0
  638. package/dist/frontend/lowering/lowering-facts.js.map +1 -0
  639. package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
  640. package/dist/frontend/lowering/lowering-facts.test.js +100 -0
  641. package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
  642. package/dist/frontend/lowering/module-namespace-elements.js +15 -0
  643. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  644. package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
  645. package/dist/frontend/lowering/nan-coded-reads.js +112 -9
  646. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  647. package/dist/frontend/lowering/new-target.js +2 -2
  648. package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
  649. package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
  650. package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
  651. package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
  652. package/dist/frontend/lowering/optional-arguments.js +26 -2
  653. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  654. package/dist/frontend/lowering/partial-assertions.d.ts +36 -0
  655. package/dist/frontend/lowering/partial-assertions.js +189 -0
  656. package/dist/frontend/lowering/partial-assertions.js.map +1 -0
  657. package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
  658. package/dist/frontend/lowering/primitive-throws.js +241 -0
  659. package/dist/frontend/lowering/primitive-throws.js.map +1 -0
  660. package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
  661. package/dist/frontend/lowering/primitive-wrappers.js +221 -0
  662. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
  663. package/dist/frontend/lowering/private-statics.d.ts +46 -0
  664. package/dist/frontend/lowering/private-statics.js +322 -0
  665. package/dist/frontend/lowering/private-statics.js.map +1 -0
  666. package/dist/frontend/lowering/record-inherited.d.ts +17 -1
  667. package/dist/frontend/lowering/record-inherited.js +16 -2
  668. package/dist/frontend/lowering/record-inherited.js.map +1 -1
  669. package/dist/frontend/lowering/record-links.d.ts +73 -0
  670. package/dist/frontend/lowering/record-links.js +797 -0
  671. package/dist/frontend/lowering/record-links.js.map +1 -0
  672. package/dist/frontend/lowering/record-sources.d.ts +12 -1
  673. package/dist/frontend/lowering/record-sources.js +60 -0
  674. package/dist/frontend/lowering/record-sources.js.map +1 -1
  675. package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
  676. package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
  677. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  678. package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
  679. package/dist/frontend/lowering/runtime-optional-report.js +300 -0
  680. package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
  681. package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
  682. package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
  683. package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
  684. package/dist/frontend/lowering/static-typeof.d.ts +3 -1
  685. package/dist/frontend/lowering/static-typeof.js +6 -1
  686. package/dist/frontend/lowering/static-typeof.js.map +1 -1
  687. package/dist/frontend/lowering/strict-equality.d.ts +4 -0
  688. package/dist/frontend/lowering/strict-equality.js +14 -0
  689. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  690. package/dist/frontend/lowering/strict-mode.d.ts +1 -5
  691. package/dist/frontend/lowering/strict-mode.js +4 -30
  692. package/dist/frontend/lowering/strict-mode.js.map +1 -1
  693. package/dist/frontend/lowering/structural-instances.d.ts +7 -0
  694. package/dist/frontend/lowering/structural-instances.js +23 -0
  695. package/dist/frontend/lowering/structural-instances.js.map +1 -1
  696. package/dist/frontend/lowering/surfaces.d.ts +42 -1
  697. package/dist/frontend/lowering/surfaces.js +212 -71
  698. package/dist/frontend/lowering/surfaces.js.map +1 -1
  699. package/dist/frontend/lowering/union-retag.d.ts +13 -1
  700. package/dist/frontend/lowering/union-retag.js +55 -1
  701. package/dist/frontend/lowering/union-retag.js.map +1 -1
  702. package/dist/frontend/lowering/union-retag.test.js +51 -0
  703. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  704. package/dist/frontend/lowering/unit-journal.d.ts +136 -17
  705. package/dist/frontend/lowering/unit-journal.js +324 -53
  706. package/dist/frontend/lowering/unit-journal.js.map +1 -1
  707. package/dist/frontend/lowering/unit-journal.test.js +126 -3
  708. package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
  709. package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
  710. package/dist/frontend/lowering/unit-reuse.js +1008 -0
  711. package/dist/frontend/lowering/unit-reuse.js.map +1 -0
  712. package/dist/frontend/lowering/width-lift.d.ts +12 -0
  713. package/dist/frontend/lowering/zlib-constants.js +3 -2
  714. package/dist/frontend/lowering/zlib-constants.js.map +1 -1
  715. package/dist/frontend/npm-file-import.test.d.ts +1 -0
  716. package/dist/frontend/npm-file-import.test.js +76 -0
  717. package/dist/frontend/npm-file-import.test.js.map +1 -0
  718. package/dist/frontend/npm-static.js +95 -11
  719. package/dist/frontend/npm-static.js.map +1 -1
  720. package/dist/frontend/npm-static.test.js +95 -2
  721. package/dist/frontend/npm-static.test.js.map +1 -1
  722. package/dist/frontend/npm.d.ts +9 -0
  723. package/dist/frontend/npm.js +82 -0
  724. package/dist/frontend/npm.js.map +1 -1
  725. package/dist/frontend/pipeline-native.js +2 -1
  726. package/dist/frontend/pipeline-native.js.map +1 -1
  727. package/dist/frontend/pipeline.d.ts +9 -4
  728. package/dist/frontend/pipeline.js +162 -38
  729. package/dist/frontend/pipeline.js.map +1 -1
  730. package/dist/frontend/pipeline.test.js +68 -11
  731. package/dist/frontend/pipeline.test.js.map +1 -1
  732. package/dist/frontend/program-node.d.ts +3 -0
  733. package/dist/frontend/program-node.js +13 -6
  734. package/dist/frontend/program-node.js.map +1 -1
  735. package/dist/frontend/program.d.ts +71 -2
  736. package/dist/frontend/program.js +836 -411
  737. package/dist/frontend/program.js.map +1 -1
  738. package/dist/frontend/program.test.js +37 -1
  739. package/dist/frontend/program.test.js.map +1 -1
  740. package/dist/frontend/provenance-core.js +4 -0
  741. package/dist/frontend/provenance-core.js.map +1 -1
  742. package/dist/frontend/services-node.d.ts +7 -0
  743. package/dist/frontend/services-node.js +32 -1
  744. package/dist/frontend/services-node.js.map +1 -1
  745. package/dist/frontend/services-node.test.js +51 -0
  746. package/dist/frontend/services-node.test.js.map +1 -1
  747. package/dist/frontend/services.d.ts +14 -0
  748. package/dist/frontend/services.js +52 -2
  749. package/dist/frontend/services.js.map +1 -1
  750. package/dist/frontend/services.test.js +61 -1
  751. package/dist/frontend/services.test.js.map +1 -1
  752. package/dist/frontend/shape-inference/analyze.d.ts +5 -0
  753. package/dist/frontend/shape-inference/analyze.js +104 -4
  754. package/dist/frontend/shape-inference/analyze.js.map +1 -1
  755. package/dist/frontend/shape-inference/domain.js +0 -1
  756. package/dist/frontend/shape-inference/domain.js.map +1 -1
  757. package/dist/frontend/shape-inference/index.js +5 -1
  758. package/dist/frontend/shape-inference/index.js.map +1 -1
  759. package/dist/frontend/shape-inference/memo.d.ts +2 -1
  760. package/dist/frontend/shape-inference/memo.js +6 -2
  761. package/dist/frontend/shape-inference/memo.js.map +1 -1
  762. package/dist/frontend/shape-inference/overlay.d.ts +1 -1
  763. package/dist/frontend/shape-inference/overlay.js +184 -4
  764. package/dist/frontend/shape-inference/overlay.js.map +1 -1
  765. package/dist/frontend/shape-inference/static-objects.js +11 -6
  766. package/dist/frontend/shape-inference/static-objects.js.map +1 -1
  767. package/dist/frontend/source-phase-imports.test.d.ts +1 -0
  768. package/dist/frontend/source-phase-imports.test.js +37 -0
  769. package/dist/frontend/source-phase-imports.test.js.map +1 -0
  770. package/dist/frontend/tier-analysis.d.ts +9 -0
  771. package/dist/frontend/tier-analysis.js +1 -0
  772. package/dist/frontend/tier-analysis.js.map +1 -1
  773. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  774. package/dist/frontend/ts7/ast-node.js +12 -0
  775. package/dist/frontend/ts7/ast-node.js.map +1 -1
  776. package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
  777. package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
  778. package/dist/frontend/ts7/ast-wire.js +3 -5
  779. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  780. package/dist/frontend/ts7/checker-backend.d.ts +13 -0
  781. package/dist/frontend/ts7/checker-backend.js +84 -2
  782. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  783. package/dist/frontend/ts7/checker-backend.test.js +126 -2
  784. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  785. package/dist/frontend/ts7/program-host.d.ts +22 -1
  786. package/dist/frontend/ts7/program-host.js +49 -4
  787. package/dist/frontend/ts7/program-host.js.map +1 -1
  788. package/dist/frontend/ts7/program-host.test.js +83 -0
  789. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  790. package/dist/frontend/ts7/rpc-process.d.ts +16 -1
  791. package/dist/frontend/ts7/rpc-process.js +170 -92
  792. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  793. package/dist/frontend/ts7/rpc-process.test.js +49 -21
  794. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  795. package/dist/frontend/tsc-codes.d.ts +57 -3
  796. package/dist/frontend/tsc-codes.js +956 -101
  797. package/dist/frontend/tsc-codes.js.map +1 -1
  798. package/dist/frontend/tsc-codes.test.js +221 -12
  799. package/dist/frontend/tsc-codes.test.js.map +1 -1
  800. package/dist/frontend/type-mapper.d.ts +98 -11
  801. package/dist/frontend/type-mapper.js +770 -182
  802. package/dist/frontend/type-mapper.js.map +1 -1
  803. package/dist/index.d.ts +1 -1
  804. package/dist/index.js +224 -15
  805. package/dist/index.js.map +1 -1
  806. package/dist/index.test.d.ts +1 -0
  807. package/dist/index.test.js +60 -0
  808. package/dist/index.test.js.map +1 -0
  809. package/dist/ir/api.d.ts +1 -1
  810. package/dist/ir/api.js +1 -1
  811. package/dist/ir/api.js.map +1 -1
  812. package/dist/ir/build.d.ts +3 -2
  813. package/dist/ir/build.js +4 -2
  814. package/dist/ir/build.js.map +1 -1
  815. package/dist/ir/builtin-effects.js +96 -0
  816. package/dist/ir/builtin-effects.js.map +1 -1
  817. package/dist/ir/builtin-signatures.d.ts +1 -1
  818. package/dist/ir/builtin-signatures.js +453 -26
  819. package/dist/ir/builtin-signatures.js.map +1 -1
  820. package/dist/ir/callback-specialization.d.ts +3 -2
  821. package/dist/ir/callback-specialization.js +35 -25
  822. package/dist/ir/callback-specialization.js.map +1 -1
  823. package/dist/ir/capture-values.d.ts +8 -4
  824. package/dist/ir/capture-values.js +9 -6
  825. package/dist/ir/capture-values.js.map +1 -1
  826. package/dist/ir/char-unit-locals.d.ts +6 -2
  827. package/dist/ir/char-unit-locals.js +11 -2
  828. package/dist/ir/char-unit-locals.js.map +1 -1
  829. package/dist/ir/class-key-index.d.ts +18 -0
  830. package/dist/ir/class-key-index.js +29 -0
  831. package/dist/ir/class-key-index.js.map +1 -0
  832. package/dist/ir/class-key-index.test.d.ts +1 -0
  833. package/dist/ir/class-key-index.test.js +25 -0
  834. package/dist/ir/class-key-index.test.js.map +1 -0
  835. package/dist/ir/codec.d.ts +82 -0
  836. package/dist/ir/codec.generated.d.ts +13 -0
  837. package/dist/ir/codec.generated.js +5350 -0
  838. package/dist/ir/codec.generated.js.map +1 -0
  839. package/dist/ir/codec.js +325 -0
  840. package/dist/ir/codec.js.map +1 -0
  841. package/dist/ir/codec.test.d.ts +1 -0
  842. package/dist/ir/codec.test.js +225 -0
  843. package/dist/ir/codec.test.js.map +1 -0
  844. package/dist/ir/constant-globals.d.ts +5 -2
  845. package/dist/ir/constant-globals.js +25 -27
  846. package/dist/ir/constant-globals.js.map +1 -1
  847. package/dist/ir/expression-inlining.d.ts +4 -2
  848. package/dist/ir/expression-inlining.js +8 -2
  849. package/dist/ir/expression-inlining.js.map +1 -1
  850. package/dist/ir/field-values.d.ts +5 -2
  851. package/dist/ir/field-values.js +32 -21
  852. package/dist/ir/field-values.js.map +1 -1
  853. package/dist/ir/fields.generated.d.ts +29 -10
  854. package/dist/ir/fields.generated.js +1039 -11
  855. package/dist/ir/fields.generated.js.map +1 -1
  856. package/dist/ir/fields.test.js +46 -2
  857. package/dist/ir/fields.test.js.map +1 -1
  858. package/dist/ir/final-fields.js +1 -1
  859. package/dist/ir/final-fields.js.map +1 -1
  860. package/dist/ir/function-references.d.ts +6 -4
  861. package/dist/ir/function-references.js +11 -4
  862. package/dist/ir/function-references.js.map +1 -1
  863. package/dist/ir/function-references.test.js +14 -0
  864. package/dist/ir/function-references.test.js.map +1 -1
  865. package/dist/ir/init-only-globals.d.ts +4 -2
  866. package/dist/ir/init-only-globals.js +17 -18
  867. package/dist/ir/init-only-globals.js.map +1 -1
  868. package/dist/ir/inline-array-sources.js +4 -1
  869. package/dist/ir/inline-array-sources.js.map +1 -1
  870. package/dist/ir/inline-array-views.d.ts +13 -0
  871. package/dist/ir/inline-array-views.js +945 -0
  872. package/dist/ir/inline-array-views.js.map +1 -0
  873. package/dist/ir/inline-arrays.d.ts +7 -0
  874. package/dist/ir/inline-arrays.js +190 -55
  875. package/dist/ir/inline-arrays.js.map +1 -1
  876. package/dist/ir/inline-arrays.test.js +140 -2
  877. package/dist/ir/inline-arrays.test.js.map +1 -1
  878. package/dist/ir/int32-slots.js +7 -0
  879. package/dist/ir/int32-slots.js.map +1 -1
  880. package/dist/ir/integer-ranges.js +16 -6
  881. package/dist/ir/integer-ranges.js.map +1 -1
  882. package/dist/ir/ir.d.ts +130 -44
  883. package/dist/ir/ir.js +7 -0
  884. package/dist/ir/ir.js.map +1 -1
  885. package/dist/ir/js-groups.d.ts +51 -0
  886. package/dist/ir/js-groups.js +394 -0
  887. package/dist/ir/js-groups.js.map +1 -0
  888. package/dist/ir/js-groups.test.d.ts +1 -0
  889. package/dist/ir/js-groups.test.js +555 -0
  890. package/dist/ir/js-groups.test.js.map +1 -0
  891. package/dist/ir/js-ic.d.ts +10 -9
  892. package/dist/ir/js-ic.js +58 -25
  893. package/dist/ir/js-ic.js.map +1 -1
  894. package/dist/ir/js-ic.test.js +37 -3
  895. package/dist/ir/js-ic.test.js.map +1 -1
  896. package/dist/ir/jsval.js +374 -63
  897. package/dist/ir/jsval.js.map +1 -1
  898. package/dist/ir/jsval.test.js +96 -2
  899. package/dist/ir/jsval.test.js.map +1 -1
  900. package/dist/ir/loop-entry-ranges.js +112 -9
  901. package/dist/ir/loop-entry-ranges.js.map +1 -1
  902. package/dist/ir/loop-entry-ranges.test.js +40 -0
  903. package/dist/ir/loop-entry-ranges.test.js.map +1 -1
  904. package/dist/ir/node-index.d.ts +23 -6
  905. package/dist/ir/node-index.js +126 -49
  906. package/dist/ir/node-index.js.map +1 -1
  907. package/dist/ir/numeric-call-specialization.d.ts +4 -2
  908. package/dist/ir/numeric-call-specialization.js +40 -26
  909. package/dist/ir/numeric-call-specialization.js.map +1 -1
  910. package/dist/ir/paired-while-loops.d.ts +4 -2
  911. package/dist/ir/paired-while-loops.js +8 -2
  912. package/dist/ir/paired-while-loops.js.map +1 -1
  913. package/dist/ir/parameter-versions.d.ts +13 -3
  914. package/dist/ir/parameter-versions.js +63 -40
  915. package/dist/ir/parameter-versions.js.map +1 -1
  916. package/dist/ir/property-bags.d.ts +4 -2
  917. package/dist/ir/property-bags.js +22 -17
  918. package/dist/ir/property-bags.js.map +1 -1
  919. package/dist/ir/receiver-readers.js +58 -2
  920. package/dist/ir/receiver-readers.js.map +1 -1
  921. package/dist/ir/row-pairs.d.ts +4 -2
  922. package/dist/ir/row-pairs.js +12 -11
  923. package/dist/ir/row-pairs.js.map +1 -1
  924. package/dist/ir/runtime-features.d.ts +139 -5
  925. package/dist/ir/runtime-features.js +397 -19
  926. package/dist/ir/runtime-features.js.map +1 -1
  927. package/dist/ir/runtime-features.test.js +135 -1
  928. package/dist/ir/runtime-features.test.js.map +1 -1
  929. package/dist/ir/runtime-jam-loops.d.ts +35 -0
  930. package/dist/ir/runtime-jam-loops.js +604 -0
  931. package/dist/ir/runtime-jam-loops.js.map +1 -0
  932. package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
  933. package/dist/ir/runtime-jam-loops.test.js +565 -0
  934. package/dist/ir/runtime-jam-loops.test.js.map +1 -0
  935. package/dist/ir/saturating-loop-jams.d.ts +11 -2
  936. package/dist/ir/saturating-loop-jams.js +56 -16
  937. package/dist/ir/saturating-loop-jams.js.map +1 -1
  938. package/dist/ir/saturating-loop-jams.test.js +39 -1
  939. package/dist/ir/saturating-loop-jams.test.js.map +1 -1
  940. package/dist/ir/scalar-records.d.ts +5 -2
  941. package/dist/ir/scalar-records.js +12 -2
  942. package/dist/ir/scalar-records.js.map +1 -1
  943. package/dist/ir/self-captures.d.ts +4 -2
  944. package/dist/ir/self-captures.js +40 -28
  945. package/dist/ir/self-captures.js.map +1 -1
  946. package/dist/ir/self-captures.test.js +15 -0
  947. package/dist/ir/self-captures.test.js.map +1 -1
  948. package/dist/ir/serialize.d.ts +8 -2
  949. package/dist/ir/serialize.js +92 -24
  950. package/dist/ir/serialize.js.map +1 -1
  951. package/dist/ir/serialize.test.js +26 -0
  952. package/dist/ir/serialize.test.js.map +1 -1
  953. package/dist/ir/tiers.js +1 -0
  954. package/dist/ir/tiers.js.map +1 -1
  955. package/dist/ir/traverse.js +4 -0
  956. package/dist/ir/traverse.js.map +1 -1
  957. package/dist/ir/typed-argument-clones.d.ts +30 -0
  958. package/dist/ir/typed-argument-clones.js +789 -0
  959. package/dist/ir/typed-argument-clones.js.map +1 -0
  960. package/dist/ir/union-arm-loops.d.ts +3 -0
  961. package/dist/ir/union-arm-loops.js +373 -0
  962. package/dist/ir/union-arm-loops.js.map +1 -0
  963. package/dist/ir/union-arm-loops.test.d.ts +1 -0
  964. package/dist/ir/union-arm-loops.test.js +230 -0
  965. package/dist/ir/union-arm-loops.test.js.map +1 -0
  966. package/dist/ir/validate.js +170 -22
  967. package/dist/ir/validate.js.map +1 -1
  968. package/dist/ir/validate.test.js +46 -0
  969. package/dist/ir/validate.test.js.map +1 -1
  970. package/dist/library/compiler-self-identity.d.ts +8 -2
  971. package/dist/library/compiler-self-identity.js +92 -18
  972. package/dist/library/compiler-self-identity.js.map +1 -1
  973. package/dist/library/compiler-self-identity.test.js +150 -3
  974. package/dist/library/compiler-self-identity.test.js.map +1 -1
  975. package/dist/library/int-infer.d.ts +5 -0
  976. package/dist/library/int-infer.js +15 -3
  977. package/dist/library/int-infer.js.map +1 -1
  978. package/dist/library/ir-policy.js +4 -0
  979. package/dist/library/ir-policy.js.map +1 -1
  980. package/dist/library/library-cache.d.ts +4 -0
  981. package/dist/library/library-cache.js +2 -0
  982. package/dist/library/library-cache.js.map +1 -1
  983. package/dist/library/library-cache.test.js +26 -0
  984. package/dist/library/library-cache.test.js.map +1 -1
  985. package/dist/library/prepare.js +99 -31
  986. package/dist/library/prepare.js.map +1 -1
  987. package/dist/native/cache.d.ts +7 -0
  988. package/dist/native/cache.js +49 -0
  989. package/dist/native/cache.js.map +1 -1
  990. package/dist/native/cache.test.js +13 -1
  991. package/dist/native/cache.test.js.map +1 -1
  992. package/dist/native/cli.js +2 -0
  993. package/dist/native/cli.js.map +1 -1
  994. package/dist/native/compiler.js +26 -5
  995. package/dist/native/compiler.js.map +1 -1
  996. package/dist/native/executable-cache-open.test.js +31 -5
  997. package/dist/native/executable-cache-open.test.js.map +1 -1
  998. package/dist/native/executable-cache.d.ts +6 -1
  999. package/dist/native/executable-cache.js +7 -1
  1000. package/dist/native/executable-cache.js.map +1 -1
  1001. package/dist/native/prepare.d.ts +3 -0
  1002. package/dist/native/prepare.js +74 -28
  1003. package/dist/native/prepare.js.map +1 -1
  1004. package/dist/native/prepare.test.js +25 -3
  1005. package/dist/native/prepare.test.js.map +1 -1
  1006. package/dist/native/sanitizer.js +63 -4
  1007. package/dist/native/sanitizer.js.map +1 -1
  1008. package/dist/native/sanitizer.test.js +93 -2
  1009. package/dist/native/sanitizer.test.js.map +1 -1
  1010. package/dist/native/toolchain.js +9 -2
  1011. package/dist/native/toolchain.js.map +1 -1
  1012. package/dist/node-islands/boundary.d.ts +37 -1
  1013. package/dist/node-islands/boundary.js +65 -7
  1014. package/dist/node-islands/boundary.js.map +1 -1
  1015. package/dist/node-islands/boundary.test.d.ts +1 -0
  1016. package/dist/node-islands/boundary.test.js +76 -0
  1017. package/dist/node-islands/boundary.test.js.map +1 -0
  1018. package/dist/node-islands/detect.d.ts +27 -1
  1019. package/dist/node-islands/detect.js +475 -40
  1020. package/dist/node-islands/detect.js.map +1 -1
  1021. package/dist/node-islands/detect.test.js +175 -4
  1022. package/dist/node-islands/detect.test.js.map +1 -1
  1023. package/dist/node-islands/effect-gate.js +30 -20
  1024. package/dist/node-islands/effect-gate.js.map +1 -1
  1025. package/dist/node-islands/effect-gate.test.js +4 -1
  1026. package/dist/node-islands/effect-gate.test.js.map +1 -1
  1027. package/dist/node-islands/graph-islands.d.ts +40 -0
  1028. package/dist/node-islands/graph-islands.js +128 -0
  1029. package/dist/node-islands/graph-islands.js.map +1 -0
  1030. package/dist/node-islands/growth.d.ts +57 -0
  1031. package/dist/node-islands/growth.js +205 -0
  1032. package/dist/node-islands/growth.js.map +1 -0
  1033. package/dist/node-islands/libnode.d.ts +1 -1
  1034. package/dist/node-islands/libnode.js +1 -1
  1035. package/dist/node-islands/libnode.js.map +1 -1
  1036. package/dist/node-islands/modules.d.ts +28 -0
  1037. package/dist/node-islands/modules.js +156 -0
  1038. package/dist/node-islands/modules.js.map +1 -1
  1039. package/dist/node-islands/modules.test.js +105 -1
  1040. package/dist/node-islands/modules.test.js.map +1 -1
  1041. package/dist/node-islands/policy.js +2 -3
  1042. package/dist/node-islands/policy.js.map +1 -1
  1043. package/dist/node-islands/probe-recorder.d.ts +1 -0
  1044. package/dist/node-islands/probe-recorder.js +596 -0
  1045. package/dist/node-islands/probe-recorder.js.map +1 -0
  1046. package/dist/node-islands/probe-recorder.test.d.ts +1 -0
  1047. package/dist/node-islands/probe-recorder.test.js +80 -0
  1048. package/dist/node-islands/probe-recorder.test.js.map +1 -0
  1049. package/dist/node-islands/report.d.ts +12 -0
  1050. package/dist/node-islands/report.js +28 -0
  1051. package/dist/node-islands/report.js.map +1 -1
  1052. package/dist/node-islands/report.test.js +4 -0
  1053. package/dist/node-islands/report.test.js.map +1 -1
  1054. package/dist/node-islands/rules.js +9 -0
  1055. package/dist/node-islands/rules.js.map +1 -1
  1056. package/dist/node-islands/scan.d.ts +16 -1
  1057. package/dist/node-islands/scan.js +110 -9
  1058. package/dist/node-islands/scan.js.map +1 -1
  1059. package/dist/node-islands/snapshot.d.ts +38 -1
  1060. package/dist/node-islands/snapshot.js +165 -161
  1061. package/dist/node-islands/snapshot.js.map +1 -1
  1062. package/dist/node-islands/snapshot.test.js +63 -2
  1063. package/dist/node-islands/snapshot.test.js.map +1 -1
  1064. package/dist/node-islands/summary.js +8 -0
  1065. package/dist/node-islands/summary.js.map +1 -1
  1066. package/dist/node-islands/type-strip.d.ts +11 -0
  1067. package/dist/node-islands/type-strip.js +157 -0
  1068. package/dist/node-islands/type-strip.js.map +1 -0
  1069. package/dist/node-islands/type-strip.test.d.ts +1 -0
  1070. package/dist/node-islands/type-strip.test.js +31 -0
  1071. package/dist/node-islands/type-strip.test.js.map +1 -0
  1072. package/dist/project-config.d.ts +4 -0
  1073. package/dist/project-config.js +19 -0
  1074. package/dist/project-config.js.map +1 -1
  1075. package/dist/project-config.test.js +10 -0
  1076. package/dist/project-config.test.js.map +1 -1
  1077. package/dist/wasm/translate.js +11 -5
  1078. package/dist/wasm/translate.js.map +1 -1
  1079. package/dist/wasm/translate.test.js +35 -0
  1080. package/dist/wasm/translate.test.js.map +1 -1
  1081. package/package.json +20 -20
  1082. package/surface-manifest.json +221 -122
@@ -1,18 +1,22 @@
1
+ import { readFileSync, realpathSync } from "node:fs";
1
2
  import { frontendDisposed } from "../frontend/dispose-hook.js";
2
- import { checkerPanicDiag, nodeIslandNoteDiag, nodeIslandRetryFailedDiag, npmStaticRefusalDiag, iceDiag, isCheckerPanic, } from "../diagnostics/diagnostic.js";
3
+ import { checkerPanicDiag, nodeIslandEntryPatchDiag, nodeIslandEntryReadDiag, nodeIslandImplicitGlobalReadDiag, nodeIslandModuleNoteDiag, nodeIslandNoteDiag, nodeIslandReaderStripDiag, nodeIslandStripDiag, nodeIslandRetryFailedDiag, npmStaticRefusalDiag, nativePackageDiag, iceDiag, isCheckerPanic, stdioPatchAcrossIslandsDiag, } from "../diagnostics/diagnostic.js";
3
4
  import { validateModule } from "../ir/validate.js";
4
5
  import { checkContracts } from "../contracts/check.js";
5
6
  import { fenceSpeculativeWasiFunctions, moduleWasiUnavailableSurface, targetRefusalDiag, } from "../backend/target-diagnostics.js";
6
7
  import { readProjectConfig } from "../project-config.js";
7
- import { nodeIslandPolicy } from "../node-islands/policy.js";
8
+ import { isMarkedUserModule, nodeIslandPolicy, } from "../node-islands/policy.js";
8
9
  import { buildNodeIslandReport } from "../node-islands/report.js";
9
- import { classifyDiagnostic, isIslandReasonCode } from "../node-islands/classify.js";
10
+ import { classifyDiagnostic, classifyMarker, isIslandReasonCode, } from "../node-islands/classify.js";
10
11
  import { packageDirOf, packageVersionOf } from "../node-islands/origin.js";
11
12
  import { describe } from "../node-islands/summary.js";
12
13
  import { resolveBareModule } from "../frontend/resolve.js";
13
- import { isEsmFile } from "../frontend/lowering/lower-node-island.js";
14
- /** Release the parser/checker before native object generation begins. */
15
- export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing = () => { }, lowerIslands = new Map(), retryFences = true) {
14
+ import { growIslandSet } from "../node-islands/growth.js";
15
+ import { isJsSourceFileName } from "../frontend/tsc-codes.js";
16
+ /** Release the parser/checker before native object generation begins.
17
+ * `unitStore` keeps the lowered units of this build for the next one
18
+ * (unit-reuse.ts). */
19
+ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing = () => { }, lowerIslands = new Map(), retryFences = true, unitStore = null, lowerModules = new Map()) {
16
20
  // The island decision reads the detector's scan unless islands are off.
17
21
  const islandScan = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands).mode !== "off";
18
22
  let fe = createFrontend(entryPath, opts.npmStatic, undefined, undefined, { islandScan });
@@ -20,20 +24,44 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
20
24
  // Node islands (scope-B NI-4): packages refused natively run in Node,
21
25
  // unless the policy says otherwise. The frontend reloads without them,
22
26
  // so their declarations type the program.
23
- const islandDecision = decideNodeIslands(entryPath, opts, fe, lowerIslands);
27
+ const islandDecision = decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules);
28
+ // A patched builtin the native build cannot represent (an entry module
29
+ // patch, or a native read of a patched member) fails here.
30
+ if (islandDecision !== null && islandDecision.errors.length > 0) {
31
+ const diagnostics = islandDecision.errors;
32
+ const sourceTexts = fe.sourceTexts();
33
+ fe.dispose();
34
+ return { ok: false, diagnostics, sourceTexts };
35
+ }
24
36
  if (islandDecision !== null) {
25
37
  fe.dispose();
26
38
  fe = createFrontend(entryPath, opts.npmStatic, undefined, undefined, {
27
39
  islandPackages: new Set(islandDecision.packages.keys()),
40
+ ...(islandDecision.modules.size > 0
41
+ ? { islandModules: new Set(islandDecision.modules.keys()) }
42
+ : {}),
28
43
  islandScan,
29
44
  });
30
45
  timing("frontend-island-reload");
31
46
  }
32
47
  let lowered;
33
48
  let sourceTexts;
49
+ let contractWarnings = [];
34
50
  let disposed = false;
35
51
  let fenceGrown = null;
36
52
  const fenceSure = new Set();
53
+ // The growth inputs this build's frontend offers (node-islands/growth.ts).
54
+ // Built once: the frontend does not change inside a build, and its scan is
55
+ // a whole-program walk.
56
+ let growthInputs = null;
57
+ let growthBuilt = false;
58
+ const growthOf = () => {
59
+ if (!growthBuilt) {
60
+ growthInputs = islandGrowth(entryPath, opts, fe);
61
+ growthBuilt = true;
62
+ }
63
+ return growthInputs;
64
+ };
37
65
  // The frontend (and its tsgo server) is released as soon as lowering
38
66
  // ends — clang and the link never hold it open.
39
67
  try {
@@ -50,12 +78,13 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
50
78
  // An import of a natively compiled package that preflight refuses
51
79
  // in the importer (a CommonJS namespace import) is that package's
52
80
  // refusal: it runs in a Node island instead.
53
- const grown = preflightIslands(entryPath, opts, fe, lowerIslands);
81
+ const growth = growthOf();
82
+ const grown = growth === null ? null : growIslandSet(growth, lowerIslands, { preflight: fe.preflight });
54
83
  if (grown !== null) {
55
84
  fe.dispose();
56
85
  frontendDisposed();
57
86
  disposed = true;
58
- return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences);
87
+ return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences, unitStore, lowerModules);
59
88
  }
60
89
  return fail(fe.preflight);
61
90
  }
@@ -65,6 +94,7 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
65
94
  targetPlatform: buildPlatform,
66
95
  ...(ffi !== null ? { ffiImports: ffi.functions } : {}),
67
96
  ...(opts.tier !== undefined ? { tierMode: opts.tier } : {}),
97
+ ...(unitStore !== null ? { unitStore } : {}),
68
98
  }, (module) => validateModule(module).length === 0);
69
99
  timing("lower");
70
100
  }
@@ -82,12 +112,19 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
82
112
  // Packages whose own modules refused to lower run in Node islands
83
113
  // too (the authoritative lowering, DESIGN.md §1.4): build again with
84
114
  // them as islands.
85
- const grown = loweringIslands(entryPath, opts, fe, lowered.diagnostics, lowerIslands, fe.nodeIslandScan?.({ userJs: false }).edges);
86
- if (grown !== null) {
115
+ const growth = growthOf();
116
+ const grown = growth === null
117
+ ? null
118
+ : growIslandSet(growth, lowerIslands, { diagnostics: lowered.diagnostics });
119
+ // Sloppy user modules the lowering refused join the same retry
120
+ // (DESIGN.md note 1 §3.2): one reload with every island at once,
121
+ // never one round per module.
122
+ const grownModules = loweringModules(entryPath, opts, lowered.diagnostics, lowerModules);
123
+ if (grown !== null || grownModules !== null) {
87
124
  fe.dispose();
88
125
  frontendDisposed();
89
126
  disposed = true;
90
- return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences);
127
+ return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown ?? lowerIslands, retryFences, unitStore, grownModules ?? lowerModules);
91
128
  }
92
129
  // A failed program whose compiled packages need the runtime or a
93
130
  // mutable object model (NI-2's report): try them as islands. If that
@@ -96,17 +133,28 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
96
133
  // declare (interfaces, aliases such as `Static<T>`) are `any`, so its
97
134
  // diagnostics describe a program the island build does not compile:
98
135
  // there the packages' declarations type the user code.
99
- const marked = retryFences
100
- ? fenceIslands(entryPath, opts, fe, lowered, lowerIslands, false)
136
+ const marked = retryFences && growth !== null
137
+ ? growIslandSet(growth, lowerIslands, {
138
+ diagnostics: lowered.diagnostics,
139
+ fences: lowered.runtimeFences,
140
+ fenceMode: "report",
141
+ })
101
142
  : null;
102
143
  if (marked !== null) {
103
144
  fe.dispose();
104
145
  frontendDisposed();
105
146
  disposed = true;
106
- return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, marked, false);
147
+ return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, marked, false, undefined, lowerModules);
107
148
  }
108
149
  return fail(lowered.diagnostics);
109
150
  }
151
+ // A program that replaces a process output stream's write method has
152
+ // nowhere to route an island's writes: the island's process.stdout is
153
+ // its own object. Until islands share the native stream object (H2),
154
+ // refuse the combination instead of silently missing the patch.
155
+ if (islandDecision !== null && lowered.stdioPatches !== undefined) {
156
+ return fail(lowered.stdioPatches.map((p) => stdioPatchAcrossIslandsDiag(p.stream, p.loc)));
157
+ }
110
158
  const validation = validateModule(lowered.module);
111
159
  timing("ir-validate");
112
160
  if (validation.length > 0) {
@@ -134,9 +182,20 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
134
182
  return fail(checked.diagnostics);
135
183
  if (checked.contracts)
136
184
  lowered.module.contracts = checked.contracts;
185
+ contractWarnings = checked.warnings;
186
+ }
187
+ if (retryFences) {
188
+ const growth = growthOf();
189
+ fenceGrown =
190
+ growth === null
191
+ ? null
192
+ : growIslandSet(growth, lowerIslands, {
193
+ diagnostics: lowered.diagnostics,
194
+ fences: lowered.runtimeFences,
195
+ fenceMode: "sure",
196
+ sure: fenceSure,
197
+ });
137
198
  }
138
- if (retryFences)
139
- fenceGrown = fenceIslands(entryPath, opts, fe, lowered, lowerIslands, true, fenceSure);
140
199
  }
141
200
  finally {
142
201
  if (!disposed) {
@@ -155,7 +214,16 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
155
214
  ...(fe.warnings ?? []),
156
215
  ...(lowered.divergences ?? []),
157
216
  ...(lowered.performance ?? []),
217
+ ...contractWarnings,
158
218
  ],
219
+ ...(islandDecision === null
220
+ ? {}
221
+ : {
222
+ islands: {
223
+ packages: [...islandDecision.packages.keys()].sort(),
224
+ modules: [...islandDecision.modules.keys()].sort(),
225
+ },
226
+ }),
159
227
  };
160
228
  // Packages compiled with runtime fences that need the JavaScript
161
229
  // runtime or a mutable object model (fenceIslands): build again with
@@ -171,7 +239,7 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
171
239
  attempts.push(sure);
172
240
  let firstError = null;
173
241
  for (const islands of attempts) {
174
- const islanded = prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, islands, false);
242
+ const islanded = prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, islands, false, unitStore, lowerModules);
175
243
  if (islanded.ok)
176
244
  return islanded;
177
245
  firstError ??= islanded.diagnostics[0] ?? null;
@@ -183,12 +251,84 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
183
251
  }
184
252
  return prepared;
185
253
  }
186
- /** The packages a build runs in Node islands, or null for none: under
187
- * `--node-islands=auto` (the default) every npm package the native
188
- * pipeline refused, plus packages marked `node`; under `explicit` only the
254
+ /** Whether two spellings name the same file (the checker resolves through
255
+ * symlinks; a CLI argument may not). */
256
+ function sameFile(a, b) {
257
+ if (samePath(a, b))
258
+ return true;
259
+ try {
260
+ const real = realpathSync(a);
261
+ const other = realpathSync(b);
262
+ return samePath(real, other);
263
+ }
264
+ catch {
265
+ return false;
266
+ }
267
+ }
268
+ function samePath(a, b) {
269
+ return a.replaceAll("\\", "/") === b.replaceAll("\\", "/");
270
+ }
271
+ /** The pre-scan reasons that make a user module a sloppy-semantics island
272
+ * by themselves (DESIGN.md note 1 §3.1): the constructs whose behavior
273
+ * needs the JavaScript engine and that a syntax scan decides exactly, plus
274
+ * the conservative `this` marker (decision S2). */
275
+ const SLOPPY_REASONS = new Set([
276
+ "with",
277
+ "direct-eval",
278
+ "annexb-block-function",
279
+ "sloppy-this",
280
+ ]);
281
+ /** A module that patches a builtin module's CommonJS object (the user's
282
+ * decision, 2026-10-29): its patch is meant for code that shares Node's
283
+ * builtin, so it runs in Node, where an island consumer sees it. */
284
+ const PATCH_REASONS = new Set(["builtin-patch"]);
285
+ function moduleIslands(entryPath, policy, scan) {
286
+ const modules = new Map();
287
+ let entryPatch = null;
288
+ const stripProblems = [];
289
+ for (const m of scan.modules) {
290
+ if (m.origin !== "user")
291
+ continue;
292
+ const patches = m.markers.filter((marker) => PATCH_REASONS.has(marker.reason));
293
+ // A TypeScript module islands only for a builtin patch (H3.2).
294
+ if (!isJsSourceFileName(m.file) && patches.length === 0)
295
+ continue;
296
+ if (sameFile(m.file, entryPath)) {
297
+ if (patches.length > 0 && entryPatch === null)
298
+ entryPatch = { file: m.file, marker: patches[0] };
299
+ continue;
300
+ }
301
+ if (m.stripProblem !== null) {
302
+ stripProblems.push({ file: m.file, ...m.stripProblem });
303
+ continue;
304
+ }
305
+ const marked = isMarkedUserModule(policy, m.file);
306
+ const sloppy = m.markers.filter((marker) => SLOPPY_REASONS.has(marker.reason));
307
+ if (marked === null &&
308
+ (policy.mode !== "auto" || (sloppy.length === 0 && patches.length === 0)))
309
+ continue;
310
+ const first = sloppy[0] ?? patches[0];
311
+ const reason = first === undefined ? null : classifyMarker(first);
312
+ modules.set(m.file, {
313
+ file: m.file,
314
+ class: reason === null ? "marked" : reason.class,
315
+ reason: reason === null
316
+ ? marked === "cli"
317
+ ? "marked with --node-island"
318
+ : 'marked "node" in scriptc.nodeIslands.modules'
319
+ : describe(reason),
320
+ decision: marked === null ? "auto" : "marked",
321
+ });
322
+ }
323
+ return { modules, entryPatch, stripProblems };
324
+ }
325
+ /** The packages and modules a build runs in Node islands, or null for none:
326
+ * under `--node-islands=auto` (the default) every npm package the native
327
+ * pipeline refused plus the user modules the pre-scan found a sloppy
328
+ * construct in, and packages marked `node`; under `explicit` only the
189
329
  * marked ones; under `off`, none (refusals stay SC2013). Each island is
190
330
  * reported once as an SC8001 note. */
191
- function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
331
+ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
192
332
  const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
193
333
  if (policy.mode === "off" || fe.nodeIslandScan === undefined)
194
334
  return null;
@@ -201,11 +341,168 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
201
341
  : []);
202
342
  for (const name of lowerIslands.keys())
203
343
  refused.add(name);
204
- if (refused.size === 0 && policy.forcedNode.size === 0)
344
+ // The pre-scan's user-JavaScript markers exist only where a build may act
345
+ // on them.
346
+ const scan = fe.nodeIslandScan({ userJs: policy.mode === "auto" });
347
+ const moduleDecision = moduleIslands(entryPath, policy, scan);
348
+ const modules = moduleDecision.modules;
349
+ // A sloppy write to an undeclared name creates a global — a sloppy-only
350
+ // semantic the native tier does not implement, so the module runs in
351
+ // Node (the user's policy, 2026-10-31). The checker decides this one, not
352
+ // the syntax pre-scan: a write target needs bindings, and its sloppiness
353
+ // depends on the enclosing function and file strictness. Preflight
354
+ // reports it as SC1091 carrying the R2.4 reason. The entry stays native
355
+ // (a whole-file island is a different feature), and a strict-mode write
356
+ // is an ordinary lowering gap, so neither joins here.
357
+ if (policy.mode === "auto") {
358
+ for (const d of fe.preflight) {
359
+ if (d.code !== "SC1091" || d.reason !== "implicit-global-write")
360
+ continue;
361
+ const file = d.loc.file;
362
+ if (modules.has(file) || sameFile(file, entryPath))
363
+ continue;
364
+ if (!isJsSourceFileName(file) || file.includes("/node_modules/"))
365
+ continue;
366
+ const reason = classifyDiagnostic(d, "refusal");
367
+ modules.set(file, {
368
+ file,
369
+ class: reason.class,
370
+ reason: describe(reason),
371
+ decision: "auto",
372
+ });
373
+ }
374
+ }
375
+ // Modules the lowering refused keep their first reason (the reload no
376
+ // longer compiles them).
377
+ for (const [file, island] of lowerModules)
378
+ if (!modules.has(file))
379
+ modules.set(file, island);
380
+ const errors = [];
381
+ if (moduleDecision.entryPatch !== null) {
382
+ const { file, marker } = moduleDecision.entryPatch;
383
+ errors.push(nodeIslandEntryPatchDiag(file, marker.member ?? marker.construct, builtinModuleOf(marker.member), marker.loc));
384
+ }
385
+ for (const problem of moduleDecision.stripProblems)
386
+ errors.push(nodeIslandStripDiag(problem.file, problem.construct, problem.loc));
387
+ // Who else must see the patch (H3.4): every module that reads a patched
388
+ // member through the builtin's CommonJS object joins the island set, npm
389
+ // package or user module alike — the patch lives in the islands' Node, and
390
+ // only sharing the builtin shows the read the patch, as in Node. The entry
391
+ // stays native, and a user TypeScript module Node cannot strip cannot run
392
+ // in Node at all: both are SC8006.
393
+ const patchedMembers = new Map();
394
+ for (const m of scan.modules) {
395
+ if (!modules.has(m.file))
396
+ continue;
397
+ for (const marker of m.markers) {
398
+ if (!PATCH_REASONS.has(marker.reason) || marker.member === undefined)
399
+ continue;
400
+ if (!patchedMembers.has(marker.member))
401
+ patchedMembers.set(marker.member, m.file);
402
+ }
403
+ }
404
+ const readerPackages = new Map();
405
+ // A package the build marks native stays native: a read that only an
406
+ // island could satisfy is SC8003, once per package and construct.
407
+ const forcedNativeReads = new Set();
408
+ const readerModules = new Map();
409
+ if (policy.mode === "auto" && patchedMembers.size > 0) {
410
+ for (const m of scan.modules) {
411
+ if (modules.has(m.file))
412
+ continue;
413
+ for (const read of m.cjsReads) {
414
+ const patchFile = patchFileOf(patchedMembers, read.member);
415
+ if (patchFile === undefined)
416
+ continue;
417
+ if (m.origin === "npm" && m.packageName !== null && m.packageDir !== null) {
418
+ if (policy.forcedNative.has(m.packageName)) {
419
+ const key = `${m.packageName}:${read.member}`;
420
+ if (!forcedNativeReads.has(key)) {
421
+ forcedNativeReads.add(key);
422
+ errors.push(nativePackageDiag(m.packageName, `it reads '${read.member}' through the CommonJS ${builtinModuleOf(read.member)} object, which island module ${patchFile} patches; a native read cannot see the patch`, fe.npmImportSites.get(m.packageName) ?? read.loc));
423
+ }
424
+ continue;
425
+ }
426
+ if (!readerPackages.has(m.packageName) && !refused.has(m.packageName))
427
+ readerPackages.set(m.packageName, {
428
+ packageDir: m.packageDir,
429
+ member: read.member,
430
+ patchFile,
431
+ });
432
+ }
433
+ else if (m.origin === "user") {
434
+ if (sameFile(m.file, entryPath)) {
435
+ errors.push(nodeIslandEntryReadDiag(m.file, read.member, builtinModuleOf(read.member), patchFile, read.loc));
436
+ continue;
437
+ }
438
+ if (m.stripProblem !== null) {
439
+ errors.push(nodeIslandReaderStripDiag(m.file, read.member, patchFile, m.stripProblem.construct, m.stripProblem.loc));
440
+ continue;
441
+ }
442
+ if (!readerModules.has(m.file))
443
+ readerModules.set(m.file, { member: read.member, patchFile });
444
+ }
445
+ }
446
+ }
447
+ }
448
+ // Who else must see an implicit global (H3.4): a sloppy write creates the
449
+ // name on Node's global object when its island module runs, and native
450
+ // code has no global object to read it from. An npm package that reads
451
+ // the name joins the island set (its Node sees the global); a user module
452
+ // or the entry is SC8020.
453
+ const readerGlobals = new Map();
454
+ const createdGlobals = policy.mode === "auto" ? implicitGlobalWrites(fe, modules) : new Map();
455
+ if (createdGlobals.size > 0) {
456
+ for (const m of scan.modules) {
457
+ if (modules.has(m.file))
458
+ continue;
459
+ for (const read of m.globalReads) {
460
+ const writerFile = createdGlobals.get(read.name);
461
+ if (writerFile === undefined)
462
+ continue;
463
+ if (m.origin === "npm" && m.packageName !== null && m.packageDir !== null) {
464
+ if (policy.forcedNative.has(m.packageName)) {
465
+ const key = `${m.packageName}:${read.name}`;
466
+ if (!forcedNativeReads.has(key)) {
467
+ forcedNativeReads.add(key);
468
+ errors.push(nativePackageDiag(m.packageName, `it reads '${read.name}', which island module ${writerFile} creates as an implicit global; the native build has no global object, so the read cannot see it`, fe.npmImportSites.get(m.packageName) ?? read.loc));
469
+ }
470
+ continue;
471
+ }
472
+ if (!readerGlobals.has(m.packageName) && !refused.has(m.packageName))
473
+ readerGlobals.set(m.packageName, {
474
+ packageDir: m.packageDir,
475
+ global: read.name,
476
+ writerFile,
477
+ });
478
+ }
479
+ else if (m.origin === "user") {
480
+ errors.push(nodeIslandImplicitGlobalReadDiag(read.name, writerFile, read.loc));
481
+ }
482
+ }
483
+ }
484
+ }
485
+ if (errors.length > 0)
486
+ return { packages: new Map(), modules: new Map(), notes: [], errors };
487
+ // A user module that reads a patched member runs in a Node island, so its
488
+ // read goes through the patched object exactly as in Node (H3.4).
489
+ for (const [file, reader] of readerModules) {
490
+ modules.set(file, {
491
+ file,
492
+ class: "object-model",
493
+ reason: `it reads '${reader.member}' through the CommonJS ${builtinModuleOf(reader.member)} object, which island module ${reader.patchFile} patches`,
494
+ decision: "auto",
495
+ });
496
+ }
497
+ if (refused.size === 0 &&
498
+ policy.forcedNode.size === 0 &&
499
+ modules.size === 0 &&
500
+ readerPackages.size === 0 &&
501
+ readerGlobals.size === 0)
205
502
  return null;
206
503
  const report = buildNodeIslandReport({
207
504
  entry: entryPath,
208
- scan: fe.nodeIslandScan({ userJs: false }),
505
+ scan,
209
506
  npm: fe.npmStatic,
210
507
  diagnostics: [],
211
508
  fences: [],
@@ -264,240 +561,147 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
264
561
  packages.set(name, island);
265
562
  notes.push(nodeIslandNoteDiag(island.name, island.version, island.class, island.reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
266
563
  }
267
- return packages.size === 0 ? null : { packages, notes };
268
- }
269
- /** The island set grown by the npm packages whose own modules refused to
270
- * lower (`--node-islands=auto` only), or null when there are none. */
271
- function loweringIslands(entryPath, opts, fe, diagnostics, known, edges) {
272
- const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
273
- if (policy.mode !== "auto" || known.size > 16)
274
- return null;
275
- const compiled = new Set(fe.npmStatic.filter((e) => e.status === "static").map((e) => e.package));
276
- const grown = new Map(known);
277
- for (const d of diagnostics) {
278
- // A use of a package outside the compiled module graph (an import()
279
- // the frontend did not compile): that package runs in an island.
280
- const named = d.code === "SC2013" ? /npm package '([^']+)'/.exec(d.message) : null;
281
- if (named !== null) {
282
- const name = named[1];
283
- if (grown.has(name) || policy.forcedNative.has(name) || policy.unloaded.has(name))
284
- continue;
285
- const js = resolveBareModule(d.loc.file, name, "js-only") ??
286
- resolveBareModule(d.loc.file, name, "js-only", "require");
287
- const at = js === null ? null : packageDirOf(js.typesFile);
288
- if (at === null || at.name !== name)
289
- continue;
290
- grown.set(name, {
291
- name,
292
- version: packageVersionOf(at.dir),
293
- dir: at.dir,
294
- class: "packaging",
295
- reason: `${d.code}: ${d.message}`,
296
- });
297
- continue;
298
- }
299
- if (!isIslandReasonCode(d.code))
564
+ // npm packages that read a patched member join the island set: their
565
+ // patch lives in the island's Node, and only a shared builtin shows it.
566
+ for (const [name, reader] of readerPackages) {
567
+ if (packages.has(name))
300
568
  continue;
301
- const at = packageDirOf(d.loc.file);
302
- if (at === null || !compiled.has(at.name) || grown.has(at.name))
303
- continue;
304
- if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
305
- continue;
306
- const reason = classifyDiagnostic(d, "refusal");
307
- grown.set(at.name, {
308
- name: at.name,
309
- version: packageVersionOf(at.dir),
310
- dir: at.dir,
311
- class: reason.class,
312
- reason: describe(reason),
569
+ const version = packageVersionOf(reader.packageDir);
570
+ const reason = `it reads '${reader.member}' through the CommonJS ${builtinModuleOf(reader.member)} object, which island module ${reader.patchFile} patches`;
571
+ packages.set(name, {
572
+ name,
573
+ version,
574
+ dir: reader.packageDir,
575
+ class: "object-model",
576
+ reason,
313
577
  });
578
+ notes.push(nodeIslandNoteDiag(name, version, "object-model", reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
314
579
  }
315
- // A native ES module that imports an island CommonJS module would read
316
- // its bindings from the module's exports object, where Node gives it the
317
- // namespace its CommonJS facade builds (the lexed names, module.exports
318
- // as the default): the importing package runs in the island too.
319
- for (let added = edges !== undefined; added;) {
320
- added = false;
321
- for (const edge of edges) {
322
- const name = edge.to;
323
- if (!grown.has(name) || edge.fromDir === null || edge.shim)
324
- continue;
325
- const at = packageDirOf(edge.fromFile);
326
- if (at === null || grown.has(at.name) || !compiled.has(at.name))
327
- continue;
328
- if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
329
- continue;
330
- if (!isEsmFile(edge.fromFile))
331
- continue;
332
- const target = resolveBareModule(edge.fromFile, name, "js-only") ??
333
- resolveBareModule(edge.fromFile, name, "js-only", "require");
334
- if (target === null || isEsmFile(target.typesFile))
335
- continue;
336
- grown.set(at.name, {
337
- name: at.name,
338
- version: packageVersionOf(at.dir),
339
- dir: at.dir,
340
- class: "packaging",
341
- reason: `an ES module of the package imports the CommonJS island package '${name}'`,
342
- });
343
- added = true;
344
- }
580
+ // npm packages that read an implicit global an island module creates join
581
+ // the island set: the global lives on their Node's global object.
582
+ for (const [name, reader] of readerGlobals) {
583
+ if (packages.has(name))
584
+ continue;
585
+ const version = packageVersionOf(reader.packageDir);
586
+ const reason = `it reads '${reader.global}', the implicit global island module ${reader.writerFile} creates`;
587
+ packages.set(name, {
588
+ name,
589
+ version,
590
+ dir: reader.packageDir,
591
+ class: "object-model",
592
+ reason,
593
+ });
594
+ notes.push(nodeIslandNoteDiag(name, version, "object-model", reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
345
595
  }
346
- return grown.size === known.size ? null : grown;
596
+ for (const island of [...modules.values()].sort((a, b) => a.file < b.file ? -1 : a.file > b.file ? 1 : 0))
597
+ notes.push(nodeIslandModuleNoteDiag(island.file, island.class, island.reason, {
598
+ file: island.file,
599
+ start: 0,
600
+ end: 0,
601
+ }));
602
+ return packages.size === 0 && modules.size === 0 ? null : { packages, modules, notes, errors };
347
603
  }
348
- /** Preflight refusals at import statements of natively compiled npm
349
- * packages (`--node-islands=auto` only): those packages become islands. */
350
- function preflightIslands(entryPath, opts, fe, known) {
351
- const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
352
- if (policy.mode !== "auto" || known.size > 16)
353
- return null;
354
- const compiled = new Set(fe.npmStatic.filter((e) => e.status === "static").map((e) => e.package));
355
- if (compiled.size === 0)
356
- return null;
357
- const texts = fe.sourceTexts();
358
- const grown = new Map(known);
604
+ /** The names the island modules' sloppy implicit-global writes create, each
605
+ * with the file that creates it. Preflight reports each write as an SC1091
606
+ * whose range is the write target. */
607
+ function implicitGlobalWrites(fe, modules) {
608
+ const globals = new Map();
609
+ const sources = new Map();
359
610
  for (const d of fe.preflight) {
360
- if (d.code !== "SC1013")
361
- continue;
362
- const text = texts.get(d.loc.file);
363
- if (text === undefined)
364
- continue;
365
- // The import statement around the diagnostic: its module specifier.
366
- const start = text.lastIndexOf("import", d.loc.start);
367
- const end = text.indexOf(";", d.loc.end);
368
- const stmt = text.slice(start < 0 ? d.loc.start : start, end < 0 ? text.length : end);
369
- const m = /\bfrom\s*["']([^"']+)["']/.exec(stmt);
370
- if (m === null)
611
+ if (d.code !== "SC1091" || d.reason !== "implicit-global-write")
371
612
  continue;
372
- const spec = m[1];
373
- const name = spec.startsWith("@") ? spec.split("/").slice(0, 2).join("/") : spec.split("/")[0];
374
- if (!compiled.has(name) || grown.has(name))
613
+ const file = d.loc.file;
614
+ if (!modules.has(file))
375
615
  continue;
376
- if (policy.forcedNative.has(name) || policy.unloaded.has(name))
377
- continue;
378
- const site = fe.npmImportSites.get(name);
379
- const jsEntry = site === undefined ? null : resolveBareModule(site.file, spec, "js-only");
380
- const at = jsEntry === null ? null : packageDirOf(jsEntry.typesFile);
381
- if (at === null)
382
- continue;
383
- grown.set(name, {
384
- name,
385
- version: packageVersionOf(at.dir),
386
- dir: at.dir,
387
- class: "gap",
388
- reason: `${d.code}: ${d.message}`,
389
- });
616
+ let source = sources.get(file);
617
+ if (source === undefined) {
618
+ source = readFileSync(file, "utf8");
619
+ sources.set(file, source);
620
+ }
621
+ const name = source.slice(d.loc.start, d.loc.end);
622
+ if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) && !globals.has(name))
623
+ globals.set(name, file);
390
624
  }
391
- return grown.size === known.size ? null : grown;
625
+ return globals;
392
626
  }
393
- /** Packages compiled natively with runtime fences (refusals deferred to the
394
- * operation that reaches them) that should run in islands instead: those
395
- * with a fence that surely fires (one in top-level module code, which runs
396
- * when the module evaluates) or that itself needs the runtime (R1). Other
397
- * fences stay deferred refusals until decision 8 (D6) retires them, so
398
- * typed packages like jose stay native. With `requireFence` false (after a
399
- * failed build) the package's island class by NI-2's report decides
400
- * instead: runtime (R1) or object-model (R2). `--node-islands=auto` only;
401
- * null for none. */
402
- function fenceIslands(entryPath, opts, fe, lowered, known, requireFence = true, sure) {
403
- if (fe.nodeIslandScan === undefined)
404
- return null;
405
- if (requireFence && lowered.runtimeFences.length === 0)
406
- return null;
407
- const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
408
- if (policy.mode !== "auto" || known.size > 32)
409
- return null;
410
- // An explicit --npm-static request keeps its package native.
411
- const explicit = new Set(Array.isArray(opts.npmStatic) ? opts.npmStatic.map((n) => n.replace(/\.\.\.$/, "")) : []);
412
- const compiled = new Set(fe.npmStatic
413
- .filter((e) => e.status === "static" && !explicit.has(e.package))
414
- .map((e) => e.package));
415
- const fenced = new Map();
416
- for (const d of lowered.runtimeFences) {
417
- const at = packageDirOf(d.loc.file);
418
- if (at === null || !compiled.has(at.name) || known.has(at.name))
419
- continue;
420
- if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
627
+ /** The builtin module a patched member belongs to ("fs" of
628
+ * "fs.readFileSync"). */
629
+ function builtinModuleOf(member) {
630
+ if (member === undefined)
631
+ return "";
632
+ const end = /[.[]/.exec(member);
633
+ return end === null ? member : member.slice(0, end.index);
634
+ }
635
+ /** The island module that patches `member`, matching an exact member or a
636
+ * whole-module patch ("fs.*"). A read the scan cannot name ("fs.*", a
637
+ * computed key or a rest element) matches every patch of its module, and so
638
+ * does a patch through a computed key ("fs[…]"). */
639
+ function patchFileOf(patched, member) {
640
+ const module = builtinModuleOf(member);
641
+ const exact = patched.get(member) ?? patched.get(`${module}.*`);
642
+ if (exact !== undefined)
643
+ return exact;
644
+ const unnamedRead = member === `${module}.*`;
645
+ for (const [patch, file] of patched) {
646
+ if (builtinModuleOf(patch) !== module)
421
647
  continue;
422
- // A fence in top-level module code throws when the module evaluates:
423
- // it counts like one that needs the runtime.
424
- const runtime = d.moduleInit === true || classifyDiagnostic(d, "fence").class === "runtime";
425
- fenced.set(at.name, (fenced.get(at.name) ?? false) || runtime);
426
- if (runtime)
427
- sure?.add(at.name);
648
+ if (unnamedRead || patch.includes("["))
649
+ return file;
428
650
  }
429
- if (requireFence && fenced.size === 0)
651
+ return undefined;
652
+ }
653
+ /** The growth inputs this build's frontend offers the shared island-growth
654
+ * rules (node-islands/growth.ts), or null when the frontend holds no island
655
+ * scan: the rules then grow nothing. `npmStatic` keeps a `"auto"` request
656
+ * out: only an explicit list names the packages to keep native. */
657
+ function islandGrowth(entryPath, opts, fe) {
658
+ const scan = fe.nodeIslandScan?.({ userJs: false });
659
+ if (scan === undefined)
430
660
  return null;
431
- const scan = fe.nodeIslandScan({ userJs: false });
432
- const report = buildNodeIslandReport({
661
+ return {
433
662
  entry: entryPath,
663
+ policy: nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands),
434
664
  scan,
435
665
  npm: fe.npmStatic,
436
- diagnostics: lowered.diagnostics,
437
- fences: lowered.runtimeFences,
438
- policy,
439
- });
666
+ npmImportSites: fe.npmImportSites,
667
+ ...(Array.isArray(opts.npmStatic) ? { explicitNpmStatic: opts.npmStatic } : {}),
668
+ sourceTexts: () => fe.sourceTexts(),
669
+ };
670
+ }
671
+ /** The island modules grown by the lowering's refusals in user JavaScript
672
+ * (`--node-islands=auto` only), or null when there are none: a sloppy
673
+ * module whose semantics the native pipeline refuses (an implicit global,
674
+ * a mapped `arguments`, a `with` the pre-scan could not decide) runs in
675
+ * Node. One retry adds every one of them at once. */
676
+ function loweringModules(entryPath, opts, diagnostics, known) {
677
+ const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
678
+ if (policy.mode !== "auto" || known.size > 16)
679
+ return null;
440
680
  const grown = new Map(known);
441
- for (const island of report.islands) {
442
- const runtimeFence = requireFence
443
- ? fenced.get(island.package)
444
- : (fenced.get(island.package) ?? false);
445
- if (runtimeFence === undefined || island.path === null)
681
+ for (const d of diagnostics) {
682
+ if (!isIslandReasonCode(d.code))
446
683
  continue;
447
- if (!compiled.has(island.package) || known.has(island.package))
684
+ const file = d.loc.file;
685
+ // Packages run in Node through their own decision
686
+ // (node-islands/growth.ts).
687
+ if (file.includes("/node_modules/") || packageDirOf(file) !== null)
448
688
  continue;
449
- if (policy.forcedNative.has(island.package) || policy.unloaded.has(island.package))
689
+ if (!isJsSourceFileName(file) || sameFile(file, entryPath))
450
690
  continue;
451
- // With fences (requireFence), only fences that surely fire count: a
452
- // gap fence inside a function body may never run (jose's typed paths
453
- // stay native, DECISIONS.md 2026-10-21). After a failed build
454
- // (!requireFence), the package's report class decides.
455
- if (requireFence && !runtimeFence)
691
+ if (grown.has(file))
456
692
  continue;
457
- if (!runtimeFence && island.class !== "runtime" && island.class !== "object-model")
693
+ const reason = classifyDiagnostic(d, "refusal");
694
+ // A gap is a construct scriptc does not implement, not a sloppy
695
+ // semantic: running it in Node would hide a compiler limitation.
696
+ if (reason.class === "gap")
458
697
  continue;
459
- grown.set(island.package, {
460
- name: island.package,
461
- version: island.version,
462
- dir: island.path,
463
- class: island.class,
464
- reason: island.reason,
698
+ grown.set(file, {
699
+ file,
700
+ class: reason.class,
701
+ reason: describe(reason),
702
+ decision: "auto",
465
703
  });
466
704
  }
467
- // A native ES module that imports an island CommonJS module would read
468
- // its bindings from the module's exports object, where Node gives it the
469
- // namespace its CommonJS facade builds (the lexed names, module.exports
470
- // as the default): the importing package runs in the island too.
471
- for (let added = true; added;) {
472
- added = false;
473
- for (const edge of scan.edges) {
474
- const name = edge.to;
475
- if (!grown.has(name) || edge.fromDir === null || edge.shim)
476
- continue;
477
- const at = packageDirOf(edge.fromFile);
478
- if (at === null || grown.has(at.name) || !compiled.has(at.name))
479
- continue;
480
- if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
481
- continue;
482
- if (!isEsmFile(edge.fromFile))
483
- continue;
484
- const target = resolveBareModule(edge.fromFile, name, "js-only") ??
485
- resolveBareModule(edge.fromFile, name, "js-only", "require");
486
- if (target === null || isEsmFile(target.typesFile))
487
- continue;
488
- grown.set(at.name, {
489
- name: at.name,
490
- version: packageVersionOf(at.dir),
491
- dir: at.dir,
492
- class: "packaging",
493
- reason: `an ES module of the package imports the CommonJS island package '${name}'`,
494
- });
495
- // It goes wherever that island goes, the sure-fence retry included.
496
- if (known.has(name) || sure?.has(name) === true)
497
- sure?.add(at.name);
498
- added = true;
499
- }
500
- }
501
705
  return grown.size === known.size ? null : grown;
502
706
  }
503
707
  //# sourceMappingURL=prepare.js.map