@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,3 +1,4 @@
1
+ import { BIGINT_BYTES_NAMES, } from "./ir.js";
1
2
  import { isDirentShape, recordHandleCodecClass, recordTextCodecClass, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_STREAM_CLASSES, } from "./ir.js";
2
3
  import { everyModuleNode, everyStmtList } from "./traverse.js";
3
4
  import { eachNodeOfKinds } from "./node-index.js";
@@ -16,12 +17,16 @@ const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) => [
16
17
  "DoubleBE",
17
18
  ].map((n) => `${rw}${n}`),
18
19
  ]));
19
- /** Buffer.prototype members scr_bytes_dyn.c refuses on Buffer receivers. */
20
- const DYN_BUFFER_REFUSED_METHODS = [
21
- ...["read", "write"].flatMap((rw) => [
22
- ...["UIntLE", "UIntBE", "UintLE", "UintBE", "IntLE", "IntBE"].map((n) => `${rw}${n}`),
23
- ...["BigUInt64", "BigUint64", "BigInt64"].flatMap((n) => [`${rw}${n}LE`, `${rw}${n}BE`]),
24
- ]),
20
+ /** The variable-width and BigInt reads and writes, which
21
+ * scr_dyn_invoke_buffer_wide runs. */
22
+ const DYN_BUFFER_WIDE_METHODS = ["read", "write"].flatMap((rw) => [
23
+ ...["UIntLE", "UIntBE", "UintLE", "UintBE", "IntLE", "IntBE"].map((n) => `${rw}${n}`),
24
+ ...["BigUInt64", "BigUint64", "BigInt64"].flatMap((n) => [`${rw}${n}LE`, `${rw}${n}BE`]),
25
+ ]);
26
+ /** The Buffer.prototype members scr_dyn_invoke_buffer refuses on Buffer
27
+ * receivers besides running the named ones: the per-encoding slices and
28
+ * writes, and inspect. */
29
+ const DYN_BUFFER_FAMILY_METHODS = [
25
30
  ...["ascii", "base64", "base64url", "latin1", "hex", "ucs2", "utf8"].flatMap((enc) => [
26
31
  `${enc}Slice`,
27
32
  `${enc}Write`,
@@ -30,11 +35,13 @@ const DYN_BUFFER_REFUSED_METHODS = [
30
35
  ];
31
36
  /** The scr_bytes_dyn.c entry, one per method family, that a checked-dynamic
32
37
  * call of a Buffer.prototype method name routes to: the fixed-width reads and
33
- * writes (both "UInt" and "Uint" spellings), write, fill, toString, the
34
- * searches, and the other Buffer-only members. Each runs the method on a
35
- * Buffer receiver and gives any other receiver the ordinary dispatch. */
38
+ * writes (both "UInt" and "Uint" spellings), the variable-width and BigInt
39
+ * ones, write, fill, toString, the searches, and the other Buffer-only
40
+ * members. Each runs the method on a Buffer receiver and gives any other
41
+ * receiver the ordinary dispatch. */
36
42
  export const DYN_BUFFER_METHODS = new Map([
37
43
  ...[...DYN_BUFFER_NUM_METHODS].map((m) => [m, "scr_dyn_invoke_buffer_num"]),
44
+ ...DYN_BUFFER_WIDE_METHODS.map((m) => [m, "scr_dyn_invoke_buffer_wide"]),
38
45
  ["write", "scr_dyn_invoke_buffer_write"],
39
46
  ["fill", "scr_dyn_invoke_buffer_fill"],
40
47
  ["toString", "scr_dyn_invoke_buffer_to_string"],
@@ -50,12 +57,14 @@ export const DYN_BUFFER_METHODS = new Map([
50
57
  "swap16",
51
58
  "swap32",
52
59
  "swap64",
53
- ...DYN_BUFFER_REFUSED_METHODS,
60
+ ...DYN_BUFFER_FAMILY_METHODS,
54
61
  ].map((m) => [m, "scr_dyn_invoke_buffer"]),
55
62
  ]);
56
63
  const DYN_ASYNC_LIB_FNS = new Set([
57
64
  // DEP0040 rides the dyn-async unit's warning machinery.
58
65
  "async.awaitDyn",
66
+ // So does SlowBuffer's DEP0030.
67
+ "buffer.slowBuffer",
59
68
  // The child property table adopts thenables through the dyn-async unit.
60
69
  "child.propsInstall",
61
70
  "child.propsResolve",
@@ -70,6 +79,9 @@ const DYN_ASYNC_LIB_FNS = new Set([
70
79
  "dyn.promiseAllSettled",
71
80
  "dyn.promiseAny",
72
81
  "dyn.promiseResolve",
82
+ // The generic Promise statics build and settle their capability's promise
83
+ // with dyn values (scr_dyn_new_promise, scr_dyn_promise_resolve).
84
+ "promise.genericStatic",
73
85
  "fs.callbackCall",
74
86
  "fs.callbackGlob",
75
87
  "fs.callbackValue",
@@ -82,6 +94,7 @@ const DYN_ASYNC_LIB_FNS = new Set([
82
94
  "process.offWarning",
83
95
  "process.onRejectionHandled",
84
96
  "process.onUncaughtException",
97
+ "process.prependUncaughtException",
85
98
  "process.onUnhandledRejection",
86
99
  "process.onWarning",
87
100
  "process.setDeprecationFlag",
@@ -95,6 +108,8 @@ const DYN_ASYNC_LIB_FNS = new Set([
95
108
  "util.debounce",
96
109
  "util.throttle",
97
110
  "timers.immediatePromise",
111
+ // A timer callback bound to its handle as `this`.
112
+ "timers.thisCallback",
98
113
  // The performance timeline (scr_perf.c, linked with this unit for its
99
114
  // MaxPerformanceEntryBufferExceededWarning).
100
115
  "perf.clearMarks",
@@ -203,6 +218,10 @@ const ABORT_SIGNAL_LIB_FNS = new Set([
203
218
  "http.requestDynCb",
204
219
  "https.requestDyn",
205
220
  "https.requestDynCb",
221
+ "http.requestUrlDyn",
222
+ "http.requestUrlDynCb",
223
+ "https.requestUrlDyn",
224
+ "https.requestUrlDynCb",
206
225
  "rl.createSignal",
207
226
  "rl.questionAsyncSignal",
208
227
  "sp.finishedOptsSignal",
@@ -301,18 +320,24 @@ const READABLE_DYN_ASYNC_PREFIXES = ["readable.fromGen", "readable.op"];
301
320
  /** Entry points that link the dyn-invoke unit. */
302
321
  const DYN_INVOKE_LIB_FNS = new Set([
303
322
  "dyn.arrayProtoCall",
323
+ "dyn.arrayLikeProtoCall",
324
+ "dyn.builtinPrototype",
304
325
  "dyn.arrayPrototype",
305
326
  "dyn.builtinFunction",
306
327
  "dyn.builtinMethod",
328
+ "dyn.stdlibPrototype",
307
329
  "dyn.defineProperty",
330
+ "dyn.definePropertyShapes",
308
331
  "child.propsDefine",
309
332
  "dyn.defineProps",
333
+ "dyn.definePropsShapes",
310
334
  "dyn.definePrototypeProps",
311
335
  "dyn.functionApply",
312
336
  "dyn.globalConstructor",
313
337
  "dyn.namespaceDefine",
314
338
  "dyn.namespaceNew",
315
339
  "dyn.objCreateWithProperties",
340
+ "dyn.objCreateWithPropertiesShapes",
316
341
  "dyn.objectTag",
317
342
  "stream.dynNative",
318
343
  "stream.dynNativePipe",
@@ -327,6 +352,47 @@ const INHERITED_MEMBER_NAMES = new Set([
327
352
  "toString",
328
353
  "valueOf",
329
354
  ]);
355
+ /** Array.prototype's method names. A constant-key dynamic read of one on an array answers the method the array's implicit prototype installs, so the read links the dyn-invoke unit. Mirrors the method table in scr_dyn_invoke.c (runtime-registries.test.ts checks the two agree). */
356
+ export const ARRAY_PROTOTYPE_MEMBER_NAMES = new Set([
357
+ "at",
358
+ "concat",
359
+ "copyWithin",
360
+ "fill",
361
+ "find",
362
+ "findIndex",
363
+ "findLast",
364
+ "findLastIndex",
365
+ "lastIndexOf",
366
+ "pop",
367
+ "push",
368
+ "reverse",
369
+ "shift",
370
+ "unshift",
371
+ "slice",
372
+ "sort",
373
+ "splice",
374
+ "includes",
375
+ "indexOf",
376
+ "join",
377
+ "keys",
378
+ "entries",
379
+ "values",
380
+ "forEach",
381
+ "filter",
382
+ "flat",
383
+ "flatMap",
384
+ "map",
385
+ "every",
386
+ "some",
387
+ "reduce",
388
+ "reduceRight",
389
+ "toReversed",
390
+ "toSorted",
391
+ "toSpliced",
392
+ "with",
393
+ "toLocaleString",
394
+ "toString",
395
+ ]);
330
396
  /** Entry points that link the child-process unit (with CHILD_PROCESS_LIB_PREFIXES): the fork IPC channel on the process object. */
331
397
  const CHILD_PROCESS_LIB_FNS = new Set([
332
398
  "process.connected",
@@ -367,9 +433,18 @@ const SYMBOL_LIB_FNS = new Set([
367
433
  "buffer.constructor",
368
434
  "buffer.staticValue",
369
435
  "buffer.prototypeMember",
436
+ "buffer.prototypeObject",
370
437
  ]);
371
438
  /** Entry points that link the querystring unit. */
372
- const QS_LIB_FNS = new Set(["qs.parse", "qs.stringify", "qs.unescape"]);
439
+ const QS_LIB_FNS = new Set([
440
+ "qs.parse",
441
+ "qs.parseCustom",
442
+ "qs.stringify",
443
+ "qs.stringifyCustom",
444
+ "qs.separator",
445
+ "qs.unescape",
446
+ "qs.unescapeBuffer",
447
+ ]);
373
448
  /** Entry points that link the parseArgs unit. */
374
449
  const PARSE_ARGS_LIB_FNS = new Set([
375
450
  "util.isDeepStrictEqual",
@@ -560,11 +635,22 @@ const PROCESS_EVENT_LIB_FNS = new Set([
560
635
  "process.offSignal",
561
636
  "process.onExit",
562
637
  "process.onSignal",
638
+ "process.prependExit",
639
+ "process.prependSignal",
563
640
  "process.stdio",
641
+ "process.stdinIsRaw",
642
+ "process.stdioSlot",
643
+ "process.stdioWriteDyn",
564
644
  "stdin.nextChunk",
565
645
  "stdin.onData",
566
646
  "stdin.onEnd",
567
647
  "stdin.onError",
648
+ "stdin.onReadable",
649
+ "stdin.pause",
650
+ "stdin.resume",
651
+ "stdin.isPaused",
652
+ "stdin.readableLength",
653
+ "stdin.read",
568
654
  // node:readline rides the stdin unit (scr_readline.c links beside
569
655
  // scr_events.c under the same gate).
570
656
  "rl.checkCompleter",
@@ -693,6 +779,54 @@ function webCryptoAsymmetricScan() {
693
779
  result: () => webcrypto && named,
694
780
  };
695
781
  }
782
+ /** The Buffer.prototype method names a checked-dynamic read can answer from
783
+ * scr_bytes_dyn.c: the ones calls route there, and the members Buffer
784
+ * defines over %TypedArray%.prototype's. */
785
+ const BUFFER_PROTOTYPE_METHOD_NAMES = new Set([
786
+ ...DYN_BUFFER_METHODS.keys(),
787
+ "subarray",
788
+ "slice",
789
+ "toLocaleString",
790
+ ]);
791
+ const u8BytesLeaf = (t) => t.kind === "bytes" && t.elem === "u8";
792
+ /** Whether converting a value of type `t` to dyn can box a Buffer: a
793
+ * Uint8Array or Buffer, or a function, collection, record, union, promise
794
+ * or class instance that carries one. */
795
+ function mentionsU8Bytes(t, tables) {
796
+ tables.u8BytesCarriers ??= leafCarriers(tables, u8BytesLeaf);
797
+ return carriesLeaf(t, tables.u8BytesCarriers, u8BytesLeaf, tables);
798
+ }
799
+ /** A checked-dynamic read with a key computed at run time, or one naming a
800
+ * Buffer.prototype method, in a module that makes Buffer values and boxes a
801
+ * value that can hold one: `buf[name]` and `buf.indexOf` read as values
802
+ * name Buffer.prototype methods, which scr_bytes_dyn.c answers. A Buffer
803
+ * value also comes from a typed file read, which answers a branded Buffer
804
+ * with no `buffer.*` call, so those reads count as making one. */
805
+ function computedBufferMemberScan(mod) {
806
+ let tables;
807
+ const typeTables = () => (tables ??= {
808
+ records: new Map((mod.records ?? []).map((r) => [r.id, r])),
809
+ unions: new Map((mod.unions ?? []).map((u) => [u.id, u])),
810
+ classes: new Map((mod.classes ?? []).map((c) => [c.name, c])),
811
+ });
812
+ let computed = false;
813
+ let buffer = false;
814
+ let boxed = false;
815
+ return {
816
+ expr: (node) => {
817
+ if (node.kind === "dynKeyGet" &&
818
+ (node.key.kind !== "strLit" || BUFFER_PROTOTYPE_METHOD_NAMES.has(node.key.value)))
819
+ computed = true;
820
+ else if (node.kind === "libCall" && node.fn.startsWith("buffer."))
821
+ buffer = true;
822
+ else if (node.kind === "libCall" && FS_READ_BYTES_FNS.has(node.fn))
823
+ buffer = true;
824
+ else if (!boxed && node.kind === "dynFrom" && mentionsU8Bytes(node.value.type, typeTables()))
825
+ boxed = true;
826
+ },
827
+ result: () => computed && buffer && boxed,
828
+ };
829
+ }
696
830
  /** Whether the module calls WebCrypto and a string literal in it names one
697
831
  * of the asymmetric algorithms (matched without regard to case, as
698
832
  * normalizeAlgorithm matches names): scr_webcrypto_pki.c and the pki unit
@@ -713,6 +847,38 @@ export function moduleUsesWebCryptoAsymmetric(mod) {
713
847
  });
714
848
  return webcrypto && named;
715
849
  }
850
+ /** The typed file reads that answer a ScrBytes: Node answers a Buffer, and
851
+ * scr_lib.c's read entries brand it, so a typed read makes a Buffer value. */
852
+ const FS_READ_BYTES_FNS = new Set([
853
+ "fs.readFileSyncBuf",
854
+ "fs.readFileSyncBytes",
855
+ "fs.readFdSyncBytes",
856
+ "fsp.readFileBytes",
857
+ "fileHandle.readFileBytes",
858
+ ]);
859
+ /** The entries that need the JavaScript object model build (t262-da §J):
860
+ * the runtime code a JavaScript source reaches for builtin intrinsics,
861
+ * array attributes, BigInt views, handle property tables and buffer views
862
+ * that no typed program can observe. Empty until the first slice lands
863
+ * (A1 adds dyn.intrinsic); the slices share one SCR_JS_OBJECT_MODEL build
864
+ * of every unit they touch instead of one build column per feature. */
865
+ export const JS_OBJECT_MODEL_LIB_FNS = new Set([
866
+ // Resizable ArrayBuffers and growable SharedArrayBuffers (t262-dc C2), and
867
+ // the arming call that turns on the buffer views registry.
868
+ "arrayBuffer.newResizable",
869
+ "sharedArrayBuffer.newGrowable",
870
+ "arrayBuffer.armMutable",
871
+ ]);
872
+ /** The JavaScript object model build's program facts (t262-da §J): every
873
+ * runtime feature that shares the one SCR_JS_OBJECT_MODEL build ORs in here
874
+ * (BigInt views today, array attributes and handle property tables next), so
875
+ * pack selection and the source build (RUNTIME_DEFINES, the library's
876
+ * cflags) agree on when the build is on. */
877
+ export function jsObjectModelFact(features) {
878
+ return (features.jsObjectModel === true ||
879
+ features.bigintBytes === true ||
880
+ features.mutableBuffers === true);
881
+ }
716
882
  /** One rule per runtime feature, sorted by name. A new feature is an
717
883
  * entry here and its line in noRuntimeFeatures; RuntimeFeatures, the scan
718
884
  * and its early exit derive from this table. The lists above keep one
@@ -755,6 +921,13 @@ const RUNTIME_FEATURE_RULES = {
755
921
  "child.signalCode",
756
922
  ],
757
923
  }),
924
+ /** spawnSync's and the exec/execFile callback form's `cwd`/`input`/
925
+ * `shell` entries (SCR_CHILD_CP_OPTIONS): a build of scr_child.c of its
926
+ * own, so a program that never passes those options keeps the default
927
+ * object, byte for byte. */
928
+ childOptionExt: rule({
929
+ fns: ["cp.spawnSyncExt", "cp.spawnSyncExtEnv", "cp.execFileCwd"],
930
+ }),
758
931
  /** scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
759
932
  * process-warning unit, and unknown output encodings render through the
760
933
  * inspect unit. WebCrypto's encrypt, decrypt, wrapKey and unwrapKey
@@ -821,6 +994,10 @@ const RUNTIME_FEATURE_RULES = {
821
994
  (node.name === "promise.allSettled" || node.name === "promise.any")) ||
822
995
  (node.kind === "dynFrom" && boxesPromise(node.value.type, tables(), new Set())),
823
996
  }),
997
+ /** The Promise statics through Function.prototype.call with a foreign
998
+ * constructor (scr_js_promise_generic.c): NewPromiseCapability(C), the
999
+ * C.resolve lookup and the iterator protocol. */
1000
+ promiseGeneric: rule({ fns: ["promise.genericStatic"] }),
824
1001
  /** EventEmitter and the stream classes as untyped constructor values
825
1002
  * (scr_dyn_builtin_class.c), which call listeners through the dyn-invoke
826
1003
  * unit, render unhandled 'error' payloads through the inspect unit and
@@ -832,25 +1009,55 @@ const RUNTIME_FEATURE_RULES = {
832
1009
  * half (scr_dyn_builtin_stream.c): native stream state for constructor
833
1010
  * functions, over the stream unit. */
834
1011
  dynBuiltinStream: rule({ fns: ["dyn.builtinStreamClass"] }),
1012
+ /** A standard library prototype object read as a value in a JavaScript
1013
+ * source (scr_dyn_stdlib_prototype.c): `Date.prototype`. */
1014
+ stdlibPrototypeValue: rule({ fns: ["dyn.stdlibPrototype"] }),
1015
+ /** The dynamic global object's answer for the Node globals the native
1016
+ * runtime does not implement (scr_global_host_absent.c, plus the
1017
+ * SCR_GLOBAL_HOST_ABSENT build of scr_node_builtin.c): a computed read of
1018
+ * the global object, or `… in globalThis` (host-globals.ts). */
1019
+ hostAbsentGlobals: rule({ fns: ["global.hostAbsent", "dyn.globalHas"] }),
1020
+ /** Array.prototype's generic algorithms over array-like receivers
1021
+ * (scr_dyn_array_like.c), which delegates every other name to the
1022
+ * dyn-invoke unit's array dispatch. */
1023
+ arrayLikeDispatch: rule({ fns: ["dyn.arrayLikeProtoCall"] }),
1024
+ /** Number.prototype and Boolean.prototype as values
1025
+ * (scr_dyn_builtin_prototype.c). */
1026
+ builtinPrototypeValue: rule({ fns: ["dyn.builtinPrototype"] }),
835
1027
  dynInvoke: rule({
836
1028
  initial: (mod) => mod.workers === true,
1029
+ scan: computedBufferMemberScan,
837
1030
  fns: [
838
1031
  ...DYN_INVOKE_LIB_FNS,
839
1032
  ...UTIL_CALLABLE_LIB_FNS,
840
1033
  ...BUILTIN_CLASS_LIB_FNS,
841
1034
  "util.promisifyDyn",
842
1035
  "buffer.prototypeMember",
1036
+ "buffer.prototypeObject",
843
1037
  // scr_webstreams.c calls the iterators ReadableStream.from reads.
844
1038
  "webstream.class",
845
1039
  "webstream.instanceOf",
846
1040
  "webstream.install",
1041
+ // scr_js_wrapper.c answers other values' tags through
1042
+ // scr_dyn_object_tag_of, and its prototype methods call scr_dyn_invoke.
1043
+ "wrapper.objectTag",
1044
+ "wrapper.new",
1045
+ "wrapper.toObject",
1046
+ // The Boolean prototype's methods run scr_js_wrapper_apply in the
1047
+ // same unit, which calls scr_dyn_invoke.
1048
+ "wrapper.booleanPrototype",
1049
+ // The generic Promise statics call C's resolve and the iterable's
1050
+ // next/return through scr_dyn_invoke.
1051
+ "promise.genericStatic",
847
1052
  ],
848
- // Constant-key reads of Object.prototype member names answer the
849
- // inherited member through scr_dyn_invoke.c.
1053
+ // Constant-key reads of Object.prototype member names, and of
1054
+ // Array.prototype method names on arrays, answer the inherited member
1055
+ // through scr_dyn_invoke.c.
850
1056
  expr: (node, _tables) => node.kind === "dynInvoke" ||
851
1057
  (node.kind === "dynKeyGet" &&
852
1058
  node.key.kind === "strLit" &&
853
- INHERITED_MEMBER_NAMES.has(node.key.value)),
1059
+ (INHERITED_MEMBER_NAMES.has(node.key.value) ||
1060
+ ARRAY_PROTOTYPE_MEMBER_NAMES.has(node.key.value))),
854
1061
  }),
855
1062
  /** The program has dynamic-tier jsval operations (js.* builtins, the
856
1063
  * jsval pass): links the scr_js_* units (two-tier design I3). */
@@ -874,13 +1081,36 @@ const RUNTIME_FEATURE_RULES = {
874
1081
  typeOrigins: rule({ initial: (mod) => (mod.declOrigins?.length ?? 0) > 0 }),
875
1082
  /** for await over checked-dynamic values (scr_dyn_for_await.c). */
876
1083
  dynForAwait: rule({ fns: ["dyn.asyncIteratorOpen", "dyn.asyncIteratorWasSync"] }),
1084
+ /** Object.isExtensible and Object.isSealed of a value typed dynamically
1085
+ * (scr_dyn_integrity.c, a unit of its own so scr_json.c keeps its layout). */
1086
+ dynIntegrityQueries: rule({ fns: ["dyn.isExtensibleQuery", "dyn.isSealedQuery"] }),
1087
+ /** A generator that binds its parameters at the call (scr_gen_bind.c):
1088
+ * the spawn wrapper's eager step imports the bind helper, and every other
1089
+ * program links the default runtime objects. */
1090
+ genBind: rule({
1091
+ initial: (mod) => mod.functions.some((fn) => fn.generator?.bindAtCall === true),
1092
+ }),
877
1093
  /** Buffer.prototype methods called on checked-dynamic values
878
1094
  * (scr_bytes_dyn.c). */
879
1095
  dynBuffer: rule({
880
- // Buffer.prototype members read as values dispatch to the same entries.
881
- fns: ["buffer.prototypeMember"],
1096
+ // Buffer.prototype members read as values, and Buffer members read with
1097
+ // a computed key, dispatch to the same entries.
1098
+ fns: ["buffer.prototypeMember", "buffer.prototypeObject"],
1099
+ scan: computedBufferMemberScan,
882
1100
  expr: (node, _tables) => node.kind === "dynInvoke" && DYN_BUFFER_METHODS.has(node.method),
883
1101
  }),
1102
+ /** Checked-dynamic reads that answer Buffer.prototype methods by name
1103
+ * (`buf[name]`, `buf.indexOf` as a value, Buffer.prototype): the program
1104
+ * installs scr_bytes_dyn.c's member hook, which references every
1105
+ * scr_dyn_invoke_buffer entry. */
1106
+ dynBufferMembers: rule({
1107
+ fns: ["buffer.prototypeMember", "buffer.prototypeObject"],
1108
+ scan: computedBufferMemberScan,
1109
+ }),
1110
+ /** Buffer.prototype as a value: the program installs the symbol unit's
1111
+ * Symbol.for for scr_bytes_dyn.c, which registers
1112
+ * Symbol(nodejs.util.inspect.custom) as one of its keys. */
1113
+ bufferPrototypeObject: rule({ fns: ["buffer.prototypeObject"] }),
884
1114
  /** createRequire's require and require.resolve with specifiers computed
885
1115
  * at run time (scr_require.c). */
886
1116
  computedRequire: rule({ fns: ["module.requireComputed", "module.resolveComputed"] }),
@@ -894,6 +1124,14 @@ const RUNTIME_FEATURE_RULES = {
894
1124
  "buffer.installValue",
895
1125
  "buffer.staticValue",
896
1126
  "buffer.prototypeMember",
1127
+ "buffer.prototypeObject",
1128
+ "dyn.validateString",
1129
+ "dyn.validateStrings",
1130
+ "path.resolveValue",
1131
+ "path.parseValue",
1132
+ "path.formatValue",
1133
+ "path.toNamespacedValue",
1134
+ "dyn.installBuiltinStatics",
897
1135
  ],
898
1136
  }),
899
1137
  /** The stream unit emits through the emitter unit, also when the
@@ -939,6 +1177,9 @@ const RUNTIME_FEATURE_RULES = {
939
1177
  fetch: rule({ prefixes: ["fetch."] }),
940
1178
  fileHandle: rule({ types: ["fileHandle"] }),
941
1179
  fsWatch: rule({ prefixes: ["fs.watch", "watcher."], types: ["fsWatcher"] }),
1180
+ /** fs.watchFile / fs.unwatchFile (scr_watch_file.c): the stat-polling
1181
+ * half of the watching surface, gated on its own unit. */
1182
+ fsWatchFile: rule({ fns: ["fs.watchFile", "fs.unwatchFile"] }),
942
1183
  /** A socket 'lookup' listener: the C main installs the net unit's
943
1184
  * lookup records (scr_net_lookup_install). */
944
1185
  netLookup: rule({ fns: ["net.sockOnLookup"] }),
@@ -952,6 +1193,12 @@ const RUNTIME_FEATURE_RULES = {
952
1193
  libCall: (node) => node.fn.startsWith("http2.") && !HTTP2_LEGACY_FNS.has(node.fn),
953
1194
  types: ["http2Session", "http2Stream"],
954
1195
  }),
1196
+ /** Intl over ICU: scr_intl.c plus the ICU archive and the data
1197
+ * file that ships beside the executable. The prefix is `icu.` because the
1198
+ * `intl.` libCalls are the engine-free fast paths — the embedded en-US
1199
+ * number format and the table-driven grapheme segmenter — which must keep
1200
+ * linking no ICU code. */
1201
+ icu: rule({ prefixes: ["icu."] }),
955
1202
  /** scr_test.c renders thrown strings with the inspect unit's string
956
1203
  * formatting; scr_util_callable.c wraps the inspect unit; readline's
957
1204
  * terminal unit prints completion errors through it when there is a
@@ -959,10 +1206,17 @@ const RUNTIME_FEATURE_RULES = {
959
1206
  inspect: rule({
960
1207
  fns: [
961
1208
  "global.native",
1209
+ // formatBigInt renders a bigint's digits in Node's form, and the
1210
+ // numericSeparator groups they take are inspect state.
1211
+ "bigint.inspect",
962
1212
  // ERR_ARG_NOT_ITERABLE renders the value as util.format's %s does.
963
1213
  "webstream.class",
1214
+ // ERR_UNKNOWN_ENCODING formats an encoding that is not a string with %s.
1215
+ "strdec.encodingValue",
964
1216
  "webstream.install",
965
1217
  "util.styleText",
1218
+ // ERR_UNHANDLED_ERROR quotes util.inspect of a non-Error payload.
1219
+ "emitter.emitErrorValue",
966
1220
  "crypto.cipherNew",
967
1221
  "webcrypto.encrypt",
968
1222
  "webcrypto.decrypt",
@@ -977,6 +1231,13 @@ const RUNTIME_FEATURE_RULES = {
977
1231
  prefixes: ["insp.", "console.", "test."],
978
1232
  libCall: (node) => node.fn === "rl.terminal" && !isDynUndefined(node.args[3]),
979
1233
  }),
1234
+ /** The JavaScript object model build (t262-da §J): every runtime feature
1235
+ * only a JavaScript source reaches shares one SCR_JS_OBJECT_MODEL build
1236
+ * of the units it touches, so a program with one of them selects that
1237
+ * build rather than a variant column of its own. The program has no
1238
+ * typed-to-dynamic bridge of its own to lose: jsObjectModel implies
1239
+ * dynTier. */
1240
+ jsObjectModel: rule({ fns: [...JS_OBJECT_MODEL_LIB_FNS] }),
980
1241
  legacyTextDecoder: rule({
981
1242
  fns: [...LEGACY_TEXT_DECODER_LIB_FNS],
982
1243
  expr: (node, tables) => (node.kind === "dynFrom" && mentionsTextDecoder(node.value.type, tables())) ||
@@ -1029,6 +1290,9 @@ const RUNTIME_FEATURE_RULES = {
1029
1290
  ...UTIL_CALLABLE_LIB_FNS,
1030
1291
  "rl.terminal",
1031
1292
  "str.localeCase",
1293
+ // win32.relative compares with String.prototype.toLowerCase's
1294
+ // Unicode case mapping.
1295
+ "path.win32Relative",
1032
1296
  ],
1033
1297
  prefixes: URL_PREFIXES,
1034
1298
  expr: (node, _tables) => node.kind === "regexLit" ||
@@ -1051,6 +1315,18 @@ const RUNTIME_FEATURE_RULES = {
1051
1315
  expr: (node, _tables) => (node.kind === "dynInvoke" && STDIO_EXTENDED_NAMES.has(node.method)) ||
1052
1316
  (node.kind === "strLit" && STDIO_EXTENDED_NAMES.has(node.value)),
1053
1317
  }),
1318
+ /** A write completion callback that takes the error argument lowers
1319
+ * through writable.writeEcb: the SCR_STREAM_WRITE_ERRORS stream unit
1320
+ * publishes the error the adapter delivers. */
1321
+ streamWriteErrors: rule({ fns: ["writable.writeEcb"] }),
1322
+ /** The program reaches the process output streams' write slot — the
1323
+ * write method as a value (process.stdioSlot), its replacement, a patched
1324
+ * program's typed writes, or a run-time-typed chunk
1325
+ * (process.stdioWriteDyn): the SCR_STDIO_WRITE_SLOT build of the events
1326
+ * unit carries the shared write body, the dynamic-chunk entry point and
1327
+ * Node's anonymous write function. Every other program links the default
1328
+ * object, byte for byte. */
1329
+ stdioWriteSlot: rule({ fns: ["process.stdioSlot", "process.stdioWriteDyn"] }),
1054
1330
  stream: rule({
1055
1331
  initial: (mod) => (mod.classes ?? []).some((c) => RUNTIME_STREAM_CLASSES.has(c.name)),
1056
1332
  fns: [...STREAM_LIB_FNS, "dyn.builtinStreamClass"],
@@ -1061,9 +1337,19 @@ const RUNTIME_FEATURE_RULES = {
1061
1337
  symbol: rule({
1062
1338
  initial: (mod) => (mod.records ?? []).some(isDirentShape),
1063
1339
  fns: [...SYMBOL_LIB_FNS],
1064
- prefixes: ["sym.", "disposable."],
1340
+ // %Iterator.prototype% (scr_js_iterator.c) defines its Symbol.iterator,
1341
+ // Symbol.toStringTag and Symbol.dispose members with the well-known
1342
+ // symbols scr_sym_well_known makes.
1343
+ prefixes: ["sym.", "disposable.", "iterator."],
1065
1344
  types: ["symbol"],
1066
1345
  }),
1346
+ /** Symbol.toPrimitive is read (sym.wellKnown with that name, or a name
1347
+ * computed at run time): the program installs ToNumber's
1348
+ * Symbol.toPrimitive step (scr_dyn_to_primitive_number_install). */
1349
+ toPrimitiveNumber: rule({
1350
+ libCall: (node) => node.fn === "sym.wellKnown" &&
1351
+ (node.args[0]?.kind !== "strLit" || node.args[0].value === "toPrimitive"),
1352
+ }),
1067
1353
  tls: rule({ prefixes: ["tls.", "https.", "http2."], types: ["secureCtx"] }),
1068
1354
  tlsCa: rule({ prefixes: ["tlsca."] }),
1069
1355
  /** util.promisify over an untyped function (scr_util_promisify.c): its
@@ -1072,11 +1358,36 @@ const RUNTIME_FEATURE_RULES = {
1072
1358
  utilPromisify: rule({ fns: ["util.promisifyDyn"] }),
1073
1359
  /** process.emitWarning is assigned (process.setEmitWarning). */
1074
1360
  warningReplace: rule({ fns: ["process.setEmitWarning"] }),
1361
+ /** A BigInt typed-array constructor read as a value (BigInt64Array,
1362
+ * BigUint64Array): their element kinds, which no double represents, live
1363
+ * in the JavaScript object model build (t262-da §J) of scr_bytes.c,
1364
+ * scr_json.c, scr_dyn_invoke.c and the assert, inspect and console units.
1365
+ * The fact ORs into jsObjectModel (jsObjectModelFact), so it selects no
1366
+ * build column of its own. Every other program keeps the byte-for-byte
1367
+ * default objects. */
1368
+ bigintBytes: rule({
1369
+ libCall: (node) => node.fn === "bytes.constructor" &&
1370
+ node.args[0]?.kind === "strLit" &&
1371
+ BIGINT_BYTES_NAMES.has(node.args[0].value),
1372
+ }),
1075
1373
  /** Module namespace objects as checked-dynamic values
1076
1374
  * (scr_module_namespace.c). */
1077
1375
  moduleNamespace: rule({ fns: ["module.namespaceValue"] }),
1376
+ /** A JavaScript source resizes, grows or detaches an ArrayBuffer
1377
+ * (frontend/lowering/buffers.ts): the program arms the buffer views
1378
+ * registry, which lives in the gated unit scr_js_buffers.c, and its bytes
1379
+ * headers stop being invariant (IrModule.bytesHeadersMutable). The fact
1380
+ * ORs into jsObjectModel (jsObjectModelFact), so it selects no build
1381
+ * column of its own. Every other program links no part of the unit. */
1382
+ mutableBuffers: rule({
1383
+ fns: ["arrayBuffer.armMutable", "arrayBuffer.newResizable", "sharedArrayBuffer.newGrowable"],
1384
+ }),
1078
1385
  /** A module namespace boxed for typed code (scr_module_namespace_dyn.c). */
1079
1386
  moduleNamespaceDyn: rule({ fns: ["module.namespaceDyn"] }),
1387
+ /** Primitive wrapper objects (scr_js_wrapper.c). */
1388
+ primitiveWrapper: rule({ prefixes: ["wrapper."] }),
1389
+ /** %Iterator% and %Iterator.prototype% as values (scr_js_iterator.c). */
1390
+ iteratorProto: rule({ prefixes: ["iterator."] }),
1080
1391
  /** The WebAssembly API (scr_wasm.c). */
1081
1392
  wasm: rule({ prefixes: ["wasm."] }),
1082
1393
  /** crypto.subtle importKey/sign/verify/digest and CryptoKey:
@@ -1110,10 +1421,40 @@ const RUNTIME_FEATURE_RULES = {
1110
1421
  "tls.sockGetCertificate",
1111
1422
  ],
1112
1423
  }),
1424
+ /** writeFile's `flag` disposition ("w" / "wx") and copyFile's mode
1425
+ * argument: scr_fs_flags.c and the SCR_FS_FLAGS build of scr_fs_cp.c.
1426
+ * Programs that never pass either keep both units' default objects. */
1427
+ fsFlags: rule({
1428
+ fns: [
1429
+ "fs.copyFileFlagsSync",
1430
+ "fs.writeFileFlagsSync",
1431
+ "fsp.copyFileFlags",
1432
+ "fsp.writeFileFlags",
1433
+ ],
1434
+ }),
1435
+ /** string_decoder's checked-dynamic chunk forms (a stream "data" payload):
1436
+ * scr_bytes_strdec_dyn.c. */
1437
+ strdecDyn: rule({ fns: ["strdec.nextDyn", "strdec.writeDyn"] }),
1438
+ /** The process and stream event registries' extras — prependListener for
1439
+ * signals, 'exit' and uncaught exceptions, stdin.isRaw, and server.off:
1440
+ * the SCR_PROCESS_EXTRAS builds of scr_events.c and scr_async_dyn.c and
1441
+ * the SCR_NET_SERVER_OFF build of scr_net.c. */
1442
+ processExtras: rule({
1443
+ fns: [
1444
+ "net.serverOff",
1445
+ "process.prependExit",
1446
+ "process.prependSignal",
1447
+ "process.prependUncaughtException",
1448
+ "process.stdinIsRaw",
1449
+ ],
1450
+ }),
1113
1451
  zlib: rule({ prefixes: ["zlib."] }),
1114
1452
  /** node:zlib's Brotli forms: zlib.brotliInstall, which %main calls when
1115
1453
  * the program uses Brotli (scr_brotli.c). */
1116
1454
  brotli: rule({ fns: ["zlib.brotliInstall"] }),
1455
+ /** node:zlib's zstd forms: zlib.zstdInstall, which %main calls when the
1456
+ * program uses zstd (scr_zstd.c). */
1457
+ zstd: rule({ fns: ["zlib.zstdInstall"] }),
1117
1458
  };
1118
1459
  const RUNTIME_FEATURE_NAMES = [];
1119
1460
  for (const name in RUNTIME_FEATURE_RULES)
@@ -1135,9 +1476,14 @@ function noRuntimeFeatures() {
1135
1476
  textCodecDyn: false,
1136
1477
  dnsPromises: false,
1137
1478
  dynAsync: false,
1479
+ promiseGeneric: false,
1138
1480
  dynBuiltinClass: false,
1139
1481
  dynBuiltinStream: false,
1482
+ stdlibPrototypeValue: false,
1483
+ hostAbsentGlobals: false,
1140
1484
  dynInvoke: false,
1485
+ arrayLikeDispatch: false,
1486
+ builtinPrototypeValue: false,
1141
1487
  dynTier: false,
1142
1488
  ecdh: false,
1143
1489
  x509: false,
@@ -1147,10 +1493,16 @@ function noRuntimeFeatures() {
1147
1493
  eventsOnceSignal: false,
1148
1494
  fetch: false,
1149
1495
  fileHandle: false,
1496
+ fsFlags: false,
1150
1497
  fsWatch: false,
1498
+ fsWatchFile: false,
1499
+ genBind: false,
1151
1500
  http2: false,
1152
1501
  http: false,
1502
+ icu: false,
1153
1503
  inspect: false,
1504
+ jsObjectModel: false,
1505
+ mutableBuffers: false,
1154
1506
  legacyTextDecoder: false,
1155
1507
  mime: false,
1156
1508
  webStreams: false,
@@ -1166,32 +1518,45 @@ function noRuntimeFeatures() {
1166
1518
  pki: false,
1167
1519
  ed25519: false,
1168
1520
  processEvents: false,
1521
+ processExtras: false,
1169
1522
  qs: false,
1170
1523
  regex: false,
1171
1524
  searchParams: false,
1172
1525
  urlIdna: false,
1173
1526
  stdioExtended: false,
1527
+ stdioWriteSlot: false,
1528
+ streamWriteErrors: false,
1174
1529
  moduleNamespace: false,
1175
1530
  moduleNamespaceDyn: false,
1531
+ primitiveWrapper: false,
1532
+ iteratorProto: false,
1176
1533
  stream: false,
1534
+ strdecDyn: false,
1177
1535
  streamDyn: false,
1178
1536
  handleProps: false,
1179
1537
  childLifecycle: false,
1538
+ childOptionExt: false,
1180
1539
  declAdopt: false,
1181
1540
  typeOrigins: false,
1182
1541
  dynForAwait: false,
1542
+ dynIntegrityQueries: false,
1183
1543
  dynBuffer: false,
1544
+ dynBufferMembers: false,
1545
+ bufferPrototypeObject: false,
1184
1546
  builtinValues: false,
1185
1547
  computedRequire: false,
1186
1548
  symbol: false,
1549
+ toPrimitiveNumber: false,
1187
1550
  tls: false,
1188
1551
  tlsCa: false,
1189
1552
  utilPromisify: false,
1190
1553
  warningReplace: false,
1554
+ bigintBytes: false,
1191
1555
  wasm: false,
1192
1556
  webcrypto: false,
1193
1557
  zlib: false,
1194
1558
  brotli: false,
1559
+ zstd: false,
1195
1560
  };
1196
1561
  }
1197
1562
  const ruleOf = (name) => RUNTIME_FEATURE_RULES[name];
@@ -1233,7 +1598,7 @@ function scanRuntimeFeatures(mod, stopAt, nodes) {
1233
1598
  if (initial && initial(mod))
1234
1599
  features[name] = true;
1235
1600
  if (scan)
1236
- scans.push({ name, scan: scan() });
1601
+ scans.push({ name, scan: scan(mod) });
1237
1602
  }
1238
1603
  const keepGoing = () => stopAt === undefined || !features[stopAt];
1239
1604
  let tables;
@@ -1287,11 +1652,16 @@ function scanRuntimeFeatures(mod, stopAt, nodes) {
1287
1652
  if (scan.result())
1288
1653
  features[name] = true;
1289
1654
  // Inline-cache sites of dynamic-tier functions use the tier's caches
1290
- // (scr_js_object.c, with the SCR_JS_TIER build of scr_json.c).
1655
+ // (scr_js_object.c).
1291
1656
  if (!features.dynTier && mod.functions.some((fn) => fn.tier === "dynamic")) {
1292
1657
  const sites = new JsIcSites(mod);
1293
1658
  features.dynTier = mod.functions.some((fn) => fn.tier === "dynamic" && hasJsIcSite(fn, sites));
1294
1659
  }
1660
+ // A jsval parameter or result (ir/jsval.ts) is retained and released
1661
+ // through the tier's word reference counting, with or without a js.*
1662
+ // operation in the body.
1663
+ if (!features.dynTier)
1664
+ features.dynTier = mod.functions.some((fn) => fn.returnType.kind === "jsval" || fn.params.some((p) => p.type.kind === "jsval"));
1295
1665
  return features;
1296
1666
  }
1297
1667
  /** True when the module contains any regex construct — a regexLit /
@@ -1480,6 +1850,14 @@ export function moduleUsesParseArgs(mod) {
1480
1850
  export function moduleUsesFsWatch(mod) {
1481
1851
  return scanRuntimeFeatures(mod, "fsWatch").fsWatch;
1482
1852
  }
1853
+ /** True when the module contains an fs.watchFile/fs.unwatchFile libCall —
1854
+ * the link switch that pulls scr_watch_file.c into the binary and has the
1855
+ * emitted main call scr_watch_file_install (the moduleUsesFsWatch
1856
+ * precedent, one unit of its own). Programs that never poll pay zero bytes
1857
+ * and keep their exact link line. */
1858
+ export function moduleUsesFsWatchFile(mod) {
1859
+ return scanRuntimeFeatures(mod, "fsWatchFile").fsWatchFile;
1860
+ }
1483
1861
  /** True when the module contains any test.* libCall or a testCtx handle
1484
1862
  * type — the link switch that pulls scr_test.c into the binary and has
1485
1863
  * the emitted main return scr_test_exit_code() after the loop drains