@scriptc/compiler 0.2.3 → 0.2.5

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 (1124) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +915 -215
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +2 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.js +9 -2
  24. package/dist/backend/link-plan-core.js.map +1 -1
  25. package/dist/backend/link-plan.d.ts +1 -1
  26. package/dist/backend/link-plan.js +4 -5
  27. package/dist/backend/link-plan.js.map +1 -1
  28. package/dist/backend/linker.d.ts +1 -1
  29. package/dist/backend/linker.js +42 -23
  30. package/dist/backend/linker.js.map +1 -1
  31. package/dist/backend/literals.js +5 -4
  32. package/dist/backend/literals.js.map +1 -1
  33. package/dist/backend/literals.test.js +30 -5
  34. package/dist/backend/literals.test.js.map +1 -1
  35. package/dist/backend/llvm/blocks.test.js +5 -2
  36. package/dist/backend/llvm/blocks.test.js.map +1 -1
  37. package/dist/backend/llvm/borrowed-inputs.d.ts +15 -0
  38. package/dist/backend/llvm/borrowed-inputs.js +28 -0
  39. package/dist/backend/llvm/borrowed-inputs.js.map +1 -0
  40. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  41. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  42. package/dist/backend/llvm/byte-numbers.d.ts +10 -0
  43. package/dist/backend/llvm/byte-numbers.js +240 -0
  44. package/dist/backend/llvm/byte-numbers.js.map +1 -0
  45. package/dist/backend/llvm/bytes-bounds.d.ts +9 -0
  46. package/dist/backend/llvm/bytes-bounds.js +240 -0
  47. package/dist/backend/llvm/bytes-bounds.js.map +1 -0
  48. package/dist/backend/llvm/call-lifetimes.d.ts +10 -0
  49. package/dist/backend/llvm/call-lifetimes.js +83 -20
  50. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  51. package/dist/backend/llvm/call-lifetimes.test.js +203 -18
  52. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  53. package/dist/backend/llvm/checked-value-lifetimes.d.ts +13 -0
  54. package/dist/backend/llvm/checked-value-lifetimes.js +45 -0
  55. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -0
  56. package/dist/backend/llvm/classes.js +16 -12
  57. package/dist/backend/llvm/classes.js.map +1 -1
  58. package/dist/backend/llvm/common.js +4 -1
  59. package/dist/backend/llvm/common.js.map +1 -1
  60. package/dist/backend/llvm/counted-loops.d.ts +6 -0
  61. package/dist/backend/llvm/counted-loops.js +35 -0
  62. package/dist/backend/llvm/counted-loops.js.map +1 -0
  63. package/dist/backend/llvm/debug-info.js +33 -13
  64. package/dist/backend/llvm/debug-info.js.map +1 -1
  65. package/dist/backend/llvm/debug-info.test.js +28 -6
  66. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  67. package/dist/backend/llvm/dyn.js +68 -22
  68. package/dist/backend/llvm/dyn.js.map +1 -1
  69. package/dist/backend/llvm/emitter.d.ts +34 -12
  70. package/dist/backend/llvm/emitter.js +357 -124
  71. package/dist/backend/llvm/emitter.js.map +1 -1
  72. package/dist/backend/llvm/emitter.test.js +237 -46
  73. package/dist/backend/llvm/emitter.test.js.map +1 -1
  74. package/dist/backend/llvm/expr-async.js +28 -8
  75. package/dist/backend/llvm/expr-async.js.map +1 -1
  76. package/dist/backend/llvm/expr-bytes.d.ts +4 -4
  77. package/dist/backend/llvm/expr-bytes.js +78 -36
  78. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  79. package/dist/backend/llvm/expr-callbacks.js +10 -4
  80. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  81. package/dist/backend/llvm/expr-calls.js +40 -21
  82. package/dist/backend/llvm/expr-calls.js.map +1 -1
  83. package/dist/backend/llvm/expr-containers.d.ts +4 -1
  84. package/dist/backend/llvm/expr-containers.js +157 -76
  85. package/dist/backend/llvm/expr-containers.js.map +1 -1
  86. package/dist/backend/llvm/expr-context.d.ts +11 -0
  87. package/dist/backend/llvm/expr-control.js +27 -8
  88. package/dist/backend/llvm/expr-control.js.map +1 -1
  89. package/dist/backend/llvm/expr-dispatch.js +3 -1
  90. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  91. package/dist/backend/llvm/expr-dynamic.js +50 -33
  92. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  93. package/dist/backend/llvm/expr-island.js +26 -6
  94. package/dist/backend/llvm/expr-island.js.map +1 -1
  95. package/dist/backend/llvm/expr-primitives.js +139 -37
  96. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  97. package/dist/backend/llvm/expr-primitives.test.js +43 -1
  98. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  99. package/dist/backend/llvm/expr-records.js +16 -9
  100. package/dist/backend/llvm/expr-records.js.map +1 -1
  101. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  102. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  103. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  104. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  105. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  106. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  107. package/dist/backend/llvm/integer-values.d.ts +10 -0
  108. package/dist/backend/llvm/integer-values.js +52 -0
  109. package/dist/backend/llvm/integer-values.js.map +1 -0
  110. package/dist/backend/llvm/integer-views.d.ts +7 -0
  111. package/dist/backend/llvm/integer-views.js +83 -0
  112. package/dist/backend/llvm/integer-views.js.map +1 -0
  113. package/dist/backend/llvm/integer-views.test.d.ts +1 -0
  114. package/dist/backend/llvm/integer-views.test.js +69 -0
  115. package/dist/backend/llvm/integer-views.test.js.map +1 -0
  116. package/dist/backend/llvm/lib-abi.js +13 -4
  117. package/dist/backend/llvm/lib-abi.js.map +1 -1
  118. package/dist/backend/llvm/lib-connect.js +7 -1
  119. package/dist/backend/llvm/lib-connect.js.map +1 -1
  120. package/dist/backend/llvm/lib-datagram.js +35 -10
  121. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  122. package/dist/backend/llvm/lib-dispatch.js +36 -15
  123. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  124. package/dist/backend/llvm/lib-filesystem.js +38 -23
  125. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  126. package/dist/backend/llvm/lib-http2.js +60 -15
  127. package/dist/backend/llvm/lib-http2.js.map +1 -1
  128. package/dist/backend/llvm/lib-lookup.js +12 -5
  129. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  130. package/dist/backend/llvm/lib-network.js +97 -31
  131. package/dist/backend/llvm/lib-network.js.map +1 -1
  132. package/dist/backend/llvm/lib-process.js +57 -14
  133. package/dist/backend/llvm/lib-process.js.map +1 -1
  134. package/dist/backend/llvm/lib-shared.js +107 -31
  135. package/dist/backend/llvm/lib-shared.js.map +1 -1
  136. package/dist/backend/llvm/lib-stream.js +33 -14
  137. package/dist/backend/llvm/lib-stream.js.map +1 -1
  138. package/dist/backend/llvm/lib-test.js +21 -7
  139. package/dist/backend/llvm/lib-test.js.map +1 -1
  140. package/dist/backend/llvm/lib-tls.js +69 -20
  141. package/dist/backend/llvm/lib-tls.js.map +1 -1
  142. package/dist/backend/llvm/local-array-reads.d.ts +3 -4
  143. package/dist/backend/llvm/local-array-reads.js +100 -121
  144. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  145. package/dist/backend/llvm/local-array-reads.test.js +379 -71
  146. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  147. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  148. package/dist/backend/llvm/local-union-storage.js +109 -0
  149. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  150. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  151. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  152. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  153. package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -2
  154. package/dist/backend/llvm/map-read-lifetimes.js +46 -16
  155. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  156. package/dist/backend/llvm/map-read-lifetimes.test.js +93 -17
  157. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  158. package/dist/backend/llvm/reference-effects.d.ts +23 -0
  159. package/dist/backend/llvm/reference-effects.js +179 -0
  160. package/dist/backend/llvm/reference-effects.js.map +1 -0
  161. package/dist/backend/llvm/reference-effects.test.d.ts +1 -0
  162. package/dist/backend/llvm/reference-effects.test.js +157 -0
  163. package/dist/backend/llvm/reference-effects.test.js.map +1 -0
  164. package/dist/backend/llvm/shapes.d.ts +7 -4
  165. package/dist/backend/llvm/shapes.js +82 -22
  166. package/dist/backend/llvm/shapes.js.map +1 -1
  167. package/dist/backend/llvm/shapes.test.js +3 -1
  168. package/dist/backend/llvm/shapes.test.js.map +1 -1
  169. package/dist/backend/llvm/split.js +4 -4
  170. package/dist/backend/llvm/split.js.map +1 -1
  171. package/dist/backend/llvm/split.test.js +14 -6
  172. package/dist/backend/llvm/split.test.js.map +1 -1
  173. package/dist/backend/llvm/stack-unions.js +14 -5
  174. package/dist/backend/llvm/stack-unions.js.map +1 -1
  175. package/dist/backend/llvm/stack-unions.test.js +172 -32
  176. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  177. package/dist/backend/llvm/string-construction.d.ts +10 -0
  178. package/dist/backend/llvm/string-construction.js +38 -0
  179. package/dist/backend/llvm/string-construction.js.map +1 -0
  180. package/dist/backend/llvm/string-construction.test.d.ts +1 -0
  181. package/dist/backend/llvm/string-construction.test.js +90 -0
  182. package/dist/backend/llvm/string-construction.test.js.map +1 -0
  183. package/dist/backend/llvm/string-lifetimes.d.ts +2 -2
  184. package/dist/backend/llvm/string-lifetimes.js +19 -11
  185. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  186. package/dist/backend/llvm/string-lifetimes.test.js +127 -32
  187. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  188. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  189. package/dist/backend/llvm/switch-dispatch.js +114 -0
  190. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  191. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  192. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  193. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  194. package/dist/backend/llvm/unsupported.js.map +1 -1
  195. package/dist/backend/llvm/walkers.js +6 -3
  196. package/dist/backend/llvm/walkers.js.map +1 -1
  197. package/dist/backend/mangle.js +9 -3
  198. package/dist/backend/mangle.js.map +1 -1
  199. package/dist/backend/may-throw.js +18 -8
  200. package/dist/backend/may-throw.js.map +1 -1
  201. package/dist/backend/may-throw.test.js +118 -22
  202. package/dist/backend/may-throw.test.js.map +1 -1
  203. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  204. package/dist/backend/native/artifact-stamps.js +371 -0
  205. package/dist/backend/native/artifact-stamps.js.map +1 -0
  206. package/dist/backend/native/cache-warm.d.ts +24 -0
  207. package/dist/backend/native/cache-warm.js +80 -0
  208. package/dist/backend/native/cache-warm.js.map +1 -0
  209. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  210. package/dist/backend/native/compiler-fingerprint.js +357 -0
  211. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  212. package/dist/backend/native/contracts.d.ts +314 -0
  213. package/dist/backend/native/contracts.js +2 -0
  214. package/dist/backend/native/contracts.js.map +1 -0
  215. package/dist/backend/native/dependency-files.d.ts +5 -0
  216. package/dist/backend/native/dependency-files.js +83 -0
  217. package/dist/backend/native/dependency-files.js.map +1 -0
  218. package/dist/backend/native/driver.d.ts +50 -0
  219. package/dist/backend/native/driver.js +294 -0
  220. package/dist/backend/native/driver.js.map +1 -0
  221. package/dist/backend/native/executable.d.ts +18 -0
  222. package/dist/backend/native/executable.js +1267 -0
  223. package/dist/backend/native/executable.js.map +1 -0
  224. package/dist/backend/native/library.d.ts +2 -0
  225. package/dist/backend/native/library.js +614 -0
  226. package/dist/backend/native/library.js.map +1 -0
  227. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  228. package/dist/backend/native/linker-fingerprint.js +174 -0
  229. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  230. package/dist/backend/native/object-merge.d.ts +2 -0
  231. package/dist/backend/native/object-merge.js +154 -0
  232. package/dist/backend/native/object-merge.js.map +1 -0
  233. package/dist/backend/native/process.d.ts +17 -0
  234. package/dist/backend/native/process.js +42 -0
  235. package/dist/backend/native/process.js.map +1 -0
  236. package/dist/backend/native/program-shards.d.ts +21 -0
  237. package/dist/backend/native/program-shards.js +99 -0
  238. package/dist/backend/native/program-shards.js.map +1 -0
  239. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  240. package/dist/backend/native/runtime-inputs.js +163 -0
  241. package/dist/backend/native/runtime-inputs.js.map +1 -0
  242. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  243. package/dist/backend/native/runtime-inputs.test.js +64 -0
  244. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  245. package/dist/backend/native/runtime-objects.d.ts +16 -0
  246. package/dist/backend/native/runtime-objects.js +122 -0
  247. package/dist/backend/native/runtime-objects.js.map +1 -0
  248. package/dist/backend/native/session.d.ts +12 -0
  249. package/dist/backend/native/session.js +31 -0
  250. package/dist/backend/native/session.js.map +1 -0
  251. package/dist/backend/native/tool-identity.d.ts +37 -0
  252. package/dist/backend/native/tool-identity.js +310 -0
  253. package/dist/backend/native/tool-identity.js.map +1 -0
  254. package/dist/backend/native/trace-paths.d.ts +12 -0
  255. package/dist/backend/native/trace-paths.js +73 -0
  256. package/dist/backend/native/trace-paths.js.map +1 -0
  257. package/dist/backend/native/vendor.d.ts +1 -0
  258. package/dist/backend/native/vendor.js +12 -0
  259. package/dist/backend/native/vendor.js.map +1 -0
  260. package/dist/backend/native-codegen-core.js +2 -1
  261. package/dist/backend/native-codegen-core.js.map +1 -1
  262. package/dist/backend/native-codegen.d.ts +1 -1
  263. package/dist/backend/native-codegen.js +24 -13
  264. package/dist/backend/native-codegen.js.map +1 -1
  265. package/dist/backend/native-codegen.test.js +12 -9
  266. package/dist/backend/native-codegen.test.js.map +1 -1
  267. package/dist/backend/native-link-info-core.js +9 -5
  268. package/dist/backend/native-link-info-core.js.map +1 -1
  269. package/dist/backend/native-link-info.js +14 -5
  270. package/dist/backend/native-link-info.js.map +1 -1
  271. package/dist/backend/native-link-info.test.js +58 -13
  272. package/dist/backend/native-link-info.test.js.map +1 -1
  273. package/dist/backend/native-toolchain.d.ts +17 -450
  274. package/dist/backend/native-toolchain.js +17 -3971
  275. package/dist/backend/native-toolchain.js.map +1 -1
  276. package/dist/backend/native-toolchain.test.js +103 -72
  277. package/dist/backend/native-toolchain.test.js.map +1 -1
  278. package/dist/backend/native-tools.js +27 -8
  279. package/dist/backend/native-tools.js.map +1 -1
  280. package/dist/backend/object-localize.js +17 -14
  281. package/dist/backend/object-localize.js.map +1 -1
  282. package/dist/backend/object-localize.test.js +59 -12
  283. package/dist/backend/object-localize.test.js.map +1 -1
  284. package/dist/backend/runtime-pack-core.js +96 -49
  285. package/dist/backend/runtime-pack-core.js.map +1 -1
  286. package/dist/backend/runtime-pack-native.js +5 -3
  287. package/dist/backend/runtime-pack-native.js.map +1 -1
  288. package/dist/backend/runtime-pack-targets.test.js +87 -15
  289. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  290. package/dist/backend/runtime-pack.d.ts +1 -1
  291. package/dist/backend/runtime-pack.js +11 -12
  292. package/dist/backend/runtime-pack.js.map +1 -1
  293. package/dist/backend/runtime-pack.test.js +40 -24
  294. package/dist/backend/runtime-pack.test.js.map +1 -1
  295. package/dist/backend/source-locations.js.map +1 -1
  296. package/dist/backend/source-locations.test.js +7 -2
  297. package/dist/backend/source-locations.test.js.map +1 -1
  298. package/dist/backend/target-diagnostics.js +44 -14
  299. package/dist/backend/target-diagnostics.js.map +1 -1
  300. package/dist/backend/target-diagnostics.test.js +93 -20
  301. package/dist/backend/target-diagnostics.test.js.map +1 -1
  302. package/dist/backend/targets.js +230 -86
  303. package/dist/backend/targets.js.map +1 -1
  304. package/dist/backend/targets.test.js +32 -18
  305. package/dist/backend/targets.test.js.map +1 -1
  306. package/dist/backend/toolchain-environment.js +5 -1
  307. package/dist/backend/toolchain-environment.js.map +1 -1
  308. package/dist/backend/vendor-archives.d.ts +2 -2
  309. package/dist/backend/vendor-archives.js +84 -35
  310. package/dist/backend/vendor-archives.js.map +1 -1
  311. package/dist/backend/vendor-inputs.js +13 -1
  312. package/dist/backend/vendor-inputs.js.map +1 -1
  313. package/dist/backend/warm-cache.d.ts +1 -1
  314. package/dist/backend/warm-cache.js +33 -9
  315. package/dist/backend/warm-cache.js.map +1 -1
  316. package/dist/cli/command.js +39 -9
  317. package/dist/cli/command.js.map +1 -1
  318. package/dist/cli/output-options.js +14 -4
  319. package/dist/cli/output-options.js.map +1 -1
  320. package/dist/cli/paths.js.map +1 -1
  321. package/dist/cli/wasi-runner.js.map +1 -1
  322. package/dist/compat/fetch-profile.js +36 -35
  323. package/dist/compat/fetch-profile.js.map +1 -1
  324. package/dist/coverage/report.js +16 -17
  325. package/dist/coverage/report.js.map +1 -1
  326. package/dist/coverage/surface-manifest.js +112 -26
  327. package/dist/coverage/surface-manifest.js.map +1 -1
  328. package/dist/diagnostics/diagnostic.js +55 -16
  329. package/dist/diagnostics/diagnostic.js.map +1 -1
  330. package/dist/executable/executable-cache.d.ts +1 -1
  331. package/dist/executable/executable-cache.js +78 -48
  332. package/dist/executable/executable-cache.js.map +1 -1
  333. package/dist/executable/executable-cache.test.js +75 -26
  334. package/dist/executable/executable-cache.test.js.map +1 -1
  335. package/dist/executable/prepare.js +2 -2
  336. package/dist/executable/prepare.js.map +1 -1
  337. package/dist/ffi/ffi-manifest.js +78 -20
  338. package/dist/ffi/ffi-manifest.js.map +1 -1
  339. package/dist/ffi/ffi-manifest.test.js +96 -16
  340. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  341. package/dist/format-integer.js.map +1 -1
  342. package/dist/frontend/analysis.js +12 -2
  343. package/dist/frontend/analysis.js.map +1 -1
  344. package/dist/frontend/arguments-usage.js.map +1 -1
  345. package/dist/frontend/binding-source.js +9 -3
  346. package/dist/frontend/binding-source.js.map +1 -1
  347. package/dist/frontend/builtin-modules.js +46 -2
  348. package/dist/frontend/builtin-modules.js.map +1 -1
  349. package/dist/frontend/cjs-resolve.js +40 -17
  350. package/dist/frontend/cjs-resolve.js.map +1 -1
  351. package/dist/frontend/cjs-syntax.js +31 -10
  352. package/dist/frontend/cjs-syntax.js.map +1 -1
  353. package/dist/frontend/comptime-node.test.js +10 -11
  354. package/dist/frontend/comptime-node.test.js.map +1 -1
  355. package/dist/frontend/dts-paths.js +7 -3
  356. package/dist/frontend/dts-paths.js.map +1 -1
  357. package/dist/frontend/fork-target.js +17 -12
  358. package/dist/frontend/fork-target.js.map +1 -1
  359. package/dist/frontend/function-completion.js +11 -6
  360. package/dist/frontend/function-completion.js.map +1 -1
  361. package/dist/frontend/helper-tokens.js +53 -6
  362. package/dist/frontend/helper-tokens.js.map +1 -1
  363. package/dist/frontend/helper-tokens.test.js +18 -2
  364. package/dist/frontend/helper-tokens.test.js.map +1 -1
  365. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  366. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  367. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  368. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  369. package/dist/frontend/input-tracker.js +11 -11
  370. package/dist/frontend/input-tracker.js.map +1 -1
  371. package/dist/frontend/input-tracker.test.js +4 -1
  372. package/dist/frontend/input-tracker.test.js.map +1 -1
  373. package/dist/frontend/lib-contract.js +38 -9
  374. package/dist/frontend/lib-contract.js.map +1 -1
  375. package/dist/frontend/literal-values.js.map +1 -1
  376. package/dist/frontend/literal-values.test.js +28 -8
  377. package/dist/frontend/literal-values.test.js.map +1 -1
  378. package/dist/frontend/lowering/abstract-equality.js +53 -10
  379. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  380. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  381. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  382. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  383. package/dist/frontend/lowering/array-values.js +37 -14
  384. package/dist/frontend/lowering/array-values.js.map +1 -1
  385. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  386. package/dist/frontend/lowering/binding-analysis.js +376 -0
  387. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  388. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  389. package/dist/frontend/lowering/builtin-calls.js +60 -0
  390. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  391. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  392. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  393. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  394. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  395. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  396. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  397. package/dist/frontend/lowering/builtins/atomics.d.ts +15 -0
  398. package/dist/frontend/lowering/builtins/atomics.js +46 -0
  399. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  400. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  401. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  402. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  403. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  404. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  405. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  406. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  407. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  408. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  409. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  410. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  411. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  412. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  413. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  414. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  415. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  416. package/dist/frontend/lowering/builtins/compression.js +115 -0
  417. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  418. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  419. package/dist/frontend/lowering/builtins/console.js +38 -0
  420. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  421. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  422. package/dist/frontend/lowering/builtins/constants.js +141 -0
  423. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  424. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  425. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  426. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  427. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  428. package/dist/frontend/lowering/builtins/dates.js +101 -0
  429. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  430. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  431. package/dist/frontend/lowering/builtins/environment.js +95 -0
  432. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  433. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  434. package/dist/frontend/lowering/builtins/errors.js +83 -0
  435. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  436. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +32 -0
  437. package/dist/frontend/lowering/builtins/filesystem-calls.js +678 -0
  438. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  439. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  440. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  441. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  442. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  443. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  444. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  445. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  446. package/dist/frontend/lowering/builtins/json.js +387 -0
  447. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  448. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  449. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  450. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  451. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  452. package/dist/frontend/lowering/builtins/module-calls.js +303 -0
  453. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  455. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  456. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  457. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  458. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  459. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  460. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  461. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  462. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  464. package/dist/frontend/lowering/builtins/performance.js +100 -0
  465. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  466. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  467. package/dist/frontend/lowering/builtins/process.js +1138 -0
  468. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  469. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  470. package/dist/frontend/lowering/builtins/promises.js +356 -0
  471. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  472. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  473. package/dist/frontend/lowering/builtins/properties.js +186 -0
  474. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  475. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  476. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  477. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  478. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  479. package/dist/frontend/lowering/builtins/readline.js +138 -0
  480. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  481. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  482. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  483. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  484. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  485. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  486. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  487. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  488. package/dist/frontend/lowering/builtins/strings.js +121 -0
  489. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  490. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  491. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  492. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  493. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  494. package/dist/frontend/lowering/builtins/timers.js +180 -0
  495. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  496. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  497. package/dist/frontend/lowering/builtins/url.js +596 -0
  498. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  499. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  500. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  501. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  502. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  503. package/dist/frontend/lowering/call-arguments.js +618 -0
  504. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  505. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  506. package/dist/frontend/lowering/call-signatures.js +719 -0
  507. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  508. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  509. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  510. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  511. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  512. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  513. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  514. package/dist/frontend/lowering/class-callbacks.js +130 -27
  515. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  516. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  517. package/dist/frontend/lowering/class-construction.js +247 -50
  518. package/dist/frontend/lowering/class-construction.js.map +1 -1
  519. package/dist/frontend/lowering/class-descriptors.js +109 -29
  520. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  521. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  522. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  523. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  524. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  525. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  526. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  527. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  528. package/dist/frontend/lowering/class-method-values.js +199 -51
  529. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  530. package/dist/frontend/lowering/class-prototypes.js +345 -86
  531. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  532. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  533. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  534. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  535. package/dist/frontend/lowering/class-static-data.js +76 -16
  536. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  537. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  538. package/dist/frontend/lowering/coercions/builders.js +77 -0
  539. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  540. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  541. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  542. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  543. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  544. package/dist/frontend/lowering/coercions/island.js +350 -0
  545. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  546. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  547. package/dist/frontend/lowering/coercions/state.js +16 -0
  548. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  549. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  550. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  551. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  552. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  553. package/dist/frontend/lowering/coercions/structural.js +616 -0
  554. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  555. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  556. package/dist/frontend/lowering/coercions/unions.js +318 -0
  557. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  558. package/dist/frontend/lowering/collection-ingestion.js +359 -67
  559. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  560. package/dist/frontend/lowering/containers/array-callbacks.d.ts +92 -0
  561. package/dist/frontend/lowering/containers/array-callbacks.js +1646 -0
  562. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  563. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  564. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  565. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  566. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  567. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  568. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  569. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  570. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  571. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  572. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  573. package/dist/frontend/lowering/containers/bytes.js +419 -105
  574. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  575. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  576. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  577. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  578. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  579. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  580. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  581. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  582. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  583. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  584. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  585. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  586. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  587. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  588. package/dist/frontend/lowering/containers/for-of.js +643 -0
  589. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  590. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  591. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  592. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  593. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  594. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  595. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  596. package/dist/frontend/lowering/containers/string-and-regexp.js +585 -157
  597. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  598. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  599. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  600. package/dist/frontend/lowering/crypto-tables.js +263 -64
  601. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  602. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  603. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  604. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  605. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  606. package/dist/frontend/lowering/error-methods.js +339 -65
  607. package/dist/frontend/lowering/error-methods.js.map +1 -1
  608. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  609. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  610. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  611. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  612. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  613. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  614. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  615. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  616. package/dist/frontend/lowering/expressions/object-literals.js +589 -162
  617. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  618. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  619. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  620. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  621. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  622. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  623. package/dist/frontend/lowering/function-context.js +5 -1
  624. package/dist/frontend/lowering/function-context.js.map +1 -1
  625. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  626. package/dist/frontend/lowering/function-returns.js +392 -0
  627. package/dist/frontend/lowering/function-returns.js.map +1 -0
  628. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  629. package/dist/frontend/lowering/generator-delegation.js +171 -39
  630. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  631. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  632. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  633. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  634. package/dist/frontend/lowering/generic-functions.d.ts +274 -0
  635. package/dist/frontend/lowering/generic-functions.js +1727 -0
  636. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  637. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  638. package/dist/frontend/lowering/import-meta.js +37 -14
  639. package/dist/frontend/lowering/import-meta.js.map +1 -1
  640. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  641. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  642. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  643. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  644. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  645. package/dist/frontend/lowering/lib-boundary.js +40 -17
  646. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  647. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  648. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  649. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  650. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  651. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  652. package/dist/frontend/lowering/lower-assert.js +248 -43
  653. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  654. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  655. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  656. package/dist/frontend/lowering/lower-builtin-values.js +420 -71
  657. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  658. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  659. package/dist/frontend/lowering/lower-calls.js +2593 -5667
  660. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  661. package/dist/frontend/lowering/lower-classes.d.ts +243 -242
  662. package/dist/frontend/lowering/lower-classes.js +1704 -727
  663. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  664. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  665. package/dist/frontend/lowering/lower-comptime.js +39 -37
  666. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  667. package/dist/frontend/lowering/lower-dgram.js +59 -31
  668. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  669. package/dist/frontend/lowering/lower-enums.js +5 -2
  670. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  671. package/dist/frontend/lowering/lower-event-emitter.js +322 -85
  672. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  673. package/dist/frontend/lowering/lower-expando.js +19 -7
  674. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  675. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  676. package/dist/frontend/lowering/lower-exprs.js +3455 -1153
  677. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  678. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  679. package/dist/frontend/lowering/lower-functions.js +449 -0
  680. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  681. package/dist/frontend/lowering/lower-generators.js +121 -32
  682. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  683. package/dist/frontend/lowering/lower-global-value.js +15 -4
  684. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  685. package/dist/frontend/lowering/lower-inspect.js +479 -89
  686. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  687. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  688. package/dist/frontend/lowering/lower-island.js +365 -273
  689. package/dist/frontend/lowering/lower-island.js.map +1 -1
  690. package/dist/frontend/lowering/lower-island.test.js +7 -2
  691. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  692. package/dist/frontend/lowering/lower-mixins.js +17 -8
  693. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  694. package/dist/frontend/lowering/lower-modules.d.ts +94 -94
  695. package/dist/frontend/lowering/lower-modules.js +612 -321
  696. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  697. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  698. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  699. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  700. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  701. package/dist/frontend/lowering/lower-node-module.js +115 -34
  702. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  703. package/dist/frontend/lowering/lower-server.js +1210 -290
  704. package/dist/frontend/lowering/lower-server.js.map +1 -1
  705. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  706. package/dist/frontend/lowering/lower-stmts.js +2312 -984
  707. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  708. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  709. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  710. package/dist/frontend/lowering/lower-stream.js +362 -90
  711. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  712. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  713. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  714. package/dist/frontend/lowering/lower-test.js +40 -13
  715. package/dist/frontend/lowering/lower-test.js.map +1 -1
  716. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  717. package/dist/frontend/lowering/lower-timers.js +336 -0
  718. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  719. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  720. package/dist/frontend/lowering/lower-url.js +46 -13
  721. package/dist/frontend/lowering/lower-url.js.map +1 -1
  722. package/dist/frontend/lowering/lowerer.d.ts +21 -351
  723. package/dist/frontend/lowering/lowerer.js +1031 -2704
  724. package/dist/frontend/lowering/lowerer.js.map +1 -1
  725. package/dist/frontend/lowering/lowerer.test.js +85 -17
  726. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  727. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  728. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  729. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  730. package/dist/frontend/lowering/native-ffi.js +487 -18
  731. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  732. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  733. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  734. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  735. package/dist/frontend/lowering/object-factory-new.js +36 -11
  736. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  737. package/dist/frontend/lowering/optional-arguments.js +49 -20
  738. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  739. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  740. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  741. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  742. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  743. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  744. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  745. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  746. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  747. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  748. package/dist/frontend/lowering/static-this.js +13 -6
  749. package/dist/frontend/lowering/static-this.js.map +1 -1
  750. package/dist/frontend/lowering/string-index.js +32 -10
  751. package/dist/frontend/lowering/string-index.js.map +1 -1
  752. package/dist/frontend/lowering/surfaces.d.ts +42 -42
  753. package/dist/frontend/lowering/surfaces.js +1094 -249
  754. package/dist/frontend/lowering/surfaces.js.map +1 -1
  755. package/dist/frontend/lowering/symbol-fields.js +40 -15
  756. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  757. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  758. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  759. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  760. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  761. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  762. package/dist/frontend/lowering/union-narrow.js +59 -16
  763. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  764. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  765. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  766. package/dist/frontend/lowering/union-retag.js +155 -40
  767. package/dist/frontend/lowering/union-retag.js.map +1 -1
  768. package/dist/frontend/lowering/union-retag.test.js +131 -33
  769. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  770. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  771. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  772. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  773. package/dist/frontend/module-syntax.js +21 -8
  774. package/dist/frontend/module-syntax.js.map +1 -1
  775. package/dist/frontend/module-syntax.test.js +37 -13
  776. package/dist/frontend/module-syntax.test.js.map +1 -1
  777. package/dist/frontend/npm-fetch-analysis.js +13 -4
  778. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  779. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  780. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  781. package/dist/frontend/npm-fetch-node.js.map +1 -1
  782. package/dist/frontend/npm-fetch-syntax.js +4 -9
  783. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  784. package/dist/frontend/npm-node.js +3 -1
  785. package/dist/frontend/npm-node.js.map +1 -1
  786. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  787. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  788. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  789. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  790. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  791. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  792. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  793. package/dist/frontend/npm-static-declarations.js.map +1 -1
  794. package/dist/frontend/npm-static-declarations.test.js +33 -7
  795. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  796. package/dist/frontend/npm-static-prune.js +26 -12
  797. package/dist/frontend/npm-static-prune.js.map +1 -1
  798. package/dist/frontend/npm-static-prune.test.js +17 -3
  799. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  800. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  801. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  802. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  803. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  804. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  805. package/dist/frontend/npm-static-subtyping.js +9 -4
  806. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  807. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  808. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  809. package/dist/frontend/npm-static.js +15 -4
  810. package/dist/frontend/npm-static.js.map +1 -1
  811. package/dist/frontend/npm.js +122 -36
  812. package/dist/frontend/npm.js.map +1 -1
  813. package/dist/frontend/npm.test.js +30 -10
  814. package/dist/frontend/npm.test.js.map +1 -1
  815. package/dist/frontend/pipeline-native.js.map +1 -1
  816. package/dist/frontend/pipeline.js +25 -8
  817. package/dist/frontend/pipeline.js.map +1 -1
  818. package/dist/frontend/pipeline.test.js +21 -7
  819. package/dist/frontend/pipeline.test.js.map +1 -1
  820. package/dist/frontend/program-node.js +5 -3
  821. package/dist/frontend/program-node.js.map +1 -1
  822. package/dist/frontend/program.d.ts +2 -2
  823. package/dist/frontend/program.js +234 -101
  824. package/dist/frontend/program.js.map +1 -1
  825. package/dist/frontend/program.test.js +27 -27
  826. package/dist/frontend/program.test.js.map +1 -1
  827. package/dist/frontend/provenance-core.js +8 -4
  828. package/dist/frontend/provenance-core.js.map +1 -1
  829. package/dist/frontend/provenance-registry.js +1 -4
  830. package/dist/frontend/provenance-registry.js.map +1 -1
  831. package/dist/frontend/resolve.js +32 -20
  832. package/dist/frontend/resolve.js.map +1 -1
  833. package/dist/frontend/resolve.test.js +1 -1
  834. package/dist/frontend/resolve.test.js.map +1 -1
  835. package/dist/frontend/runtime-resolve.js +13 -4
  836. package/dist/frontend/runtime-resolve.js.map +1 -1
  837. package/dist/frontend/runtime-resolve.test.js +25 -9
  838. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  839. package/dist/frontend/services-node.js +6 -2
  840. package/dist/frontend/services-node.js.map +1 -1
  841. package/dist/frontend/services-node.test.js +18 -6
  842. package/dist/frontend/services-node.test.js.map +1 -1
  843. package/dist/frontend/services.js +8 -4
  844. package/dist/frontend/services.js.map +1 -1
  845. package/dist/frontend/services.test.js +6 -2
  846. package/dist/frontend/services.test.js.map +1 -1
  847. package/dist/frontend/ts7/api.js +12 -4
  848. package/dist/frontend/ts7/api.js.map +1 -1
  849. package/dist/frontend/ts7/ast-bytes.js +10 -3
  850. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  851. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  852. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  853. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  854. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  855. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  856. package/dist/frontend/ts7/ast-node.js +484 -164
  857. package/dist/frontend/ts7/ast-node.js.map +1 -1
  858. package/dist/frontend/ts7/ast-node.test.js +109 -36
  859. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  860. package/dist/frontend/ts7/ast-text.js +13 -3
  861. package/dist/frontend/ts7/ast-text.js.map +1 -1
  862. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  863. package/dist/frontend/ts7/ast-types.js.map +1 -1
  864. package/dist/frontend/ts7/ast-wire.d.ts +1 -1
  865. package/dist/frontend/ts7/ast-wire.js +55 -20
  866. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  867. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  868. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  869. package/dist/frontend/ts7/ast.js +47 -28
  870. package/dist/frontend/ts7/ast.js.map +1 -1
  871. package/dist/frontend/ts7/census-check.js +1 -1
  872. package/dist/frontend/ts7/census-check.js.map +1 -1
  873. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  874. package/dist/frontend/ts7/checker.js +5 -3
  875. package/dist/frontend/ts7/checker.js.map +1 -1
  876. package/dist/frontend/ts7/checker.test.js +54 -17
  877. package/dist/frontend/ts7/checker.test.js.map +1 -1
  878. package/dist/frontend/ts7/enums.test.js +9 -4
  879. package/dist/frontend/ts7/enums.test.js.map +1 -1
  880. package/dist/frontend/ts7/native-api.js.map +1 -1
  881. package/dist/frontend/ts7/native-host.js.map +1 -1
  882. package/dist/frontend/ts7/native-process.js +9 -3
  883. package/dist/frontend/ts7/native-process.js.map +1 -1
  884. package/dist/frontend/ts7/program-adapter.js +1 -1
  885. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  886. package/dist/frontend/ts7/program-host.js +7 -4
  887. package/dist/frontend/ts7/program-host.js.map +1 -1
  888. package/dist/frontend/ts7/program-host.test.js +43 -11
  889. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  890. package/dist/frontend/ts7/rpc-api.js +3 -1
  891. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  892. package/dist/frontend/ts7/rpc-client.js +15 -5
  893. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  894. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  895. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  896. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  897. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  898. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  899. package/dist/frontend/ts7/rpc-process.js +16 -6
  900. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  901. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  902. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  903. package/dist/frontend/ts7/rpc-wire.js +41 -14
  904. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  905. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  906. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  907. package/dist/frontend/ts7/semantic-checker.js +209 -68
  908. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  909. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  910. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  911. package/dist/frontend/ts7/semantic-json.js +7 -1
  912. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  913. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  914. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  915. package/dist/frontend/ts7/semantic-model.js +147 -51
  916. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  917. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  918. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  919. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  920. package/dist/frontend/ts7/session-cache.js +10 -3
  921. package/dist/frontend/ts7/session-cache.js.map +1 -1
  922. package/dist/frontend/ts7/session-cache.test.js +13 -4
  923. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  924. package/dist/frontend/ts7/session-path.js +25 -10
  925. package/dist/frontend/ts7/session-path.js.map +1 -1
  926. package/dist/frontend/ts7/session-path.test.js +47 -4
  927. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  928. package/dist/frontend/ts7/session-timing.js +22 -3
  929. package/dist/frontend/ts7/session-timing.js.map +1 -1
  930. package/dist/frontend/ts7/session-timing.test.js +12 -3
  931. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  932. package/dist/frontend/ts7/session.d.ts +1 -0
  933. package/dist/frontend/ts7/session.js +109 -35
  934. package/dist/frontend/ts7/session.js.map +1 -1
  935. package/dist/frontend/ts7/session.test.js +69 -15
  936. package/dist/frontend/ts7/session.test.js.map +1 -1
  937. package/dist/frontend/ts7/source-parser.js +17 -6
  938. package/dist/frontend/ts7/source-parser.js.map +1 -1
  939. package/dist/frontend/ts7/source-parser.test.js +32 -9
  940. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  941. package/dist/frontend/tsc-codes.js +56 -11
  942. package/dist/frontend/tsc-codes.js.map +1 -1
  943. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  944. package/dist/frontend/tsc-codes.test.js +16 -0
  945. package/dist/frontend/tsc-codes.test.js.map +1 -0
  946. package/dist/frontend/type-mapper.js +547 -206
  947. package/dist/frontend/type-mapper.js.map +1 -1
  948. package/dist/frontend/type-mapper.test.js +108 -33
  949. package/dist/frontend/type-mapper.test.js.map +1 -1
  950. package/dist/frontend/union-discriminants.js +8 -2
  951. package/dist/frontend/union-discriminants.js.map +1 -1
  952. package/dist/frontend/union-discriminants.test.js +77 -20
  953. package/dist/frontend/union-discriminants.test.js.map +1 -1
  954. package/dist/index.d.ts +9 -8
  955. package/dist/index.js +150 -81
  956. package/dist/index.js.map +1 -1
  957. package/dist/ir/analysis.js +97 -38
  958. package/dist/ir/analysis.js.map +1 -1
  959. package/dist/ir/analysis.test.js +91 -15
  960. package/dist/ir/analysis.test.js.map +1 -1
  961. package/dist/ir/api.d.ts +4 -0
  962. package/dist/ir/api.js +6 -0
  963. package/dist/ir/api.js.map +1 -0
  964. package/dist/ir/build.d.ts +7 -0
  965. package/dist/ir/build.js +27 -1
  966. package/dist/ir/build.js.map +1 -1
  967. package/dist/ir/builtin-effects.d.ts +9 -0
  968. package/dist/ir/builtin-effects.js +631 -0
  969. package/dist/ir/builtin-effects.js.map +1 -0
  970. package/dist/ir/builtin-signatures.d.ts +15 -0
  971. package/dist/ir/builtin-signatures.js +3396 -0
  972. package/dist/ir/builtin-signatures.js.map +1 -0
  973. package/dist/ir/byte-numbers.d.ts +20 -0
  974. package/dist/ir/byte-numbers.js +116 -0
  975. package/dist/ir/byte-numbers.js.map +1 -0
  976. package/dist/ir/byte-numbers.test.d.ts +1 -0
  977. package/dist/ir/byte-numbers.test.js +55 -0
  978. package/dist/ir/byte-numbers.test.js.map +1 -0
  979. package/dist/ir/constant-tables.js +13 -5
  980. package/dist/ir/constant-tables.js.map +1 -1
  981. package/dist/ir/constant-tables.test.js +47 -7
  982. package/dist/ir/constant-tables.test.js.map +1 -1
  983. package/dist/ir/control-flow.js +2 -1
  984. package/dist/ir/control-flow.js.map +1 -1
  985. package/dist/ir/control-flow.test.js +35 -11
  986. package/dist/ir/control-flow.test.js.map +1 -1
  987. package/dist/ir/initializer-bindings.d.ts +9 -0
  988. package/dist/ir/initializer-bindings.js +115 -0
  989. package/dist/ir/initializer-bindings.js.map +1 -0
  990. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  991. package/dist/ir/initializer-bindings.test.js +118 -0
  992. package/dist/ir/initializer-bindings.test.js.map +1 -0
  993. package/dist/ir/integer-loop-facts.d.ts +12 -0
  994. package/dist/ir/integer-loop-facts.js +137 -0
  995. package/dist/ir/integer-loop-facts.js.map +1 -0
  996. package/dist/ir/integer-loops.d.ts +19 -0
  997. package/dist/ir/integer-loops.js +172 -11
  998. package/dist/ir/integer-loops.js.map +1 -1
  999. package/dist/ir/integer-loops.test.js +122 -9
  1000. package/dist/ir/integer-loops.test.js.map +1 -1
  1001. package/dist/ir/integer-ranges.d.ts +8 -6
  1002. package/dist/ir/integer-ranges.js +416 -90
  1003. package/dist/ir/integer-ranges.js.map +1 -1
  1004. package/dist/ir/integer-ranges.test.js +239 -10
  1005. package/dist/ir/integer-ranges.test.js.map +1 -1
  1006. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  1007. package/dist/ir/intrinsic-signatures.js +57 -0
  1008. package/dist/ir/intrinsic-signatures.js.map +1 -0
  1009. package/dist/ir/ir.d.ts +14 -2155
  1010. package/dist/ir/ir.js +169 -1394
  1011. package/dist/ir/ir.js.map +1 -1
  1012. package/dist/ir/ir.test.js +98 -77
  1013. package/dist/ir/ir.test.js.map +1 -1
  1014. package/dist/ir/runtime-features.d.ts +221 -0
  1015. package/dist/ir/runtime-features.js +551 -0
  1016. package/dist/ir/runtime-features.js.map +1 -0
  1017. package/dist/ir/runtime-features.test.d.ts +1 -0
  1018. package/dist/ir/runtime-features.test.js +98 -0
  1019. package/dist/ir/runtime-features.test.js.map +1 -0
  1020. package/dist/ir/scalar-records.js +130 -40
  1021. package/dist/ir/scalar-records.js.map +1 -1
  1022. package/dist/ir/scalar-records.test.js +146 -27
  1023. package/dist/ir/scalar-records.test.js.map +1 -1
  1024. package/dist/ir/serialize.js +4 -2
  1025. package/dist/ir/serialize.js.map +1 -1
  1026. package/dist/ir/serialize.test.js +44 -9
  1027. package/dist/ir/serialize.test.js.map +1 -1
  1028. package/dist/ir/traverse.js +156 -43
  1029. package/dist/ir/traverse.js.map +1 -1
  1030. package/dist/ir/traverse.test.js +99 -24
  1031. package/dist/ir/traverse.test.js.map +1 -1
  1032. package/dist/ir/validate.d.ts +1 -31
  1033. package/dist/ir/validate.js +826 -1915
  1034. package/dist/ir/validate.js.map +1 -1
  1035. package/dist/ir/validate.test.js +627 -111
  1036. package/dist/ir/validate.test.js.map +1 -1
  1037. package/dist/library/cache-primitives.js +9 -10
  1038. package/dist/library/cache-primitives.js.map +1 -1
  1039. package/dist/library/cache-reset.test.js +2 -1
  1040. package/dist/library/cache-reset.test.js.map +1 -1
  1041. package/dist/library/compiler-self-identity.js +11 -5
  1042. package/dist/library/compiler-self-identity.js.map +1 -1
  1043. package/dist/library/compiler-self-identity.test.js +10 -3
  1044. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1045. package/dist/library/fence-eval.js +24 -7
  1046. package/dist/library/fence-eval.js.map +1 -1
  1047. package/dist/library/fence-eval.test.js +31 -7
  1048. package/dist/library/fence-eval.test.js.map +1 -1
  1049. package/dist/library/int-infer.js +199 -59
  1050. package/dist/library/int-infer.js.map +1 -1
  1051. package/dist/library/int-infer.test.js +133 -57
  1052. package/dist/library/int-infer.test.js.map +1 -1
  1053. package/dist/library/ir-policy.d.ts +27 -0
  1054. package/dist/library/ir-policy.js +232 -0
  1055. package/dist/library/ir-policy.js.map +1 -0
  1056. package/dist/library/library-cache.js +40 -17
  1057. package/dist/library/library-cache.js.map +1 -1
  1058. package/dist/library/library-cache.test.js +24 -13
  1059. package/dist/library/library-cache.test.js.map +1 -1
  1060. package/dist/library/library-profile.js +68 -13
  1061. package/dist/library/library-profile.js.map +1 -1
  1062. package/dist/library/prepare.js +48 -20
  1063. package/dist/library/prepare.js.map +1 -1
  1064. package/dist/library/semantic-source.js +16 -14
  1065. package/dist/library/semantic-source.js.map +1 -1
  1066. package/dist/library/semantic-source.test.js +9 -14
  1067. package/dist/library/semantic-source.test.js.map +1 -1
  1068. package/dist/library/sidecar-validate.js +53 -12
  1069. package/dist/library/sidecar-validate.js.map +1 -1
  1070. package/dist/library/sidecar.js +85 -24
  1071. package/dist/library/sidecar.js.map +1 -1
  1072. package/dist/library/trap-teaching.js +11 -2
  1073. package/dist/library/trap-teaching.js.map +1 -1
  1074. package/dist/native/cache.js +10 -4
  1075. package/dist/native/cache.js.map +1 -1
  1076. package/dist/native/cli.js +34 -9
  1077. package/dist/native/cli.js.map +1 -1
  1078. package/dist/native/compiler.js +167 -43
  1079. package/dist/native/compiler.js.map +1 -1
  1080. package/dist/native/compiler.test.js +129 -32
  1081. package/dist/native/compiler.test.js.map +1 -1
  1082. package/dist/native/comptime.js +23 -7
  1083. package/dist/native/comptime.js.map +1 -1
  1084. package/dist/native/comptime.test.js +26 -6
  1085. package/dist/native/comptime.test.js.map +1 -1
  1086. package/dist/native/executable-cache.js +77 -27
  1087. package/dist/native/executable-cache.js.map +1 -1
  1088. package/dist/native/executable-cache.test.js +41 -6
  1089. package/dist/native/executable-cache.test.js.map +1 -1
  1090. package/dist/native/file-identity.js +9 -2
  1091. package/dist/native/file-identity.js.map +1 -1
  1092. package/dist/native/file-identity.test.js.map +1 -1
  1093. package/dist/native/library.js +50 -12
  1094. package/dist/native/library.js.map +1 -1
  1095. package/dist/native/prepare.js +119 -34
  1096. package/dist/native/prepare.js.map +1 -1
  1097. package/dist/native/prepare.test.js +22 -6
  1098. package/dist/native/prepare.test.js.map +1 -1
  1099. package/dist/native/runtime-typescript.js +24 -11
  1100. package/dist/native/runtime-typescript.js.map +1 -1
  1101. package/dist/native/runtime-typescript.test.js.map +1 -1
  1102. package/dist/native/sanitizer.js +71 -18
  1103. package/dist/native/sanitizer.js.map +1 -1
  1104. package/dist/native/sanitizer.test.js +77 -20
  1105. package/dist/native/sanitizer.test.js.map +1 -1
  1106. package/dist/native/task.js.map +1 -1
  1107. package/dist/native/task.test.js +7 -2
  1108. package/dist/native/task.test.js.map +1 -1
  1109. package/dist/native/toolchain.js +74 -29
  1110. package/dist/native/toolchain.js.map +1 -1
  1111. package/dist/native/toolchain.test.js +95 -18
  1112. package/dist/native/toolchain.test.js.map +1 -1
  1113. package/dist/startup-cache.d.ts +1 -1
  1114. package/dist/startup-cache.js +1 -1
  1115. package/dist/startup-cache.js.map +1 -1
  1116. package/dist/timing.js.map +1 -1
  1117. package/package.json +20 -20
  1118. package/surface-manifest.json +1 -1
  1119. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1120. package/dist/frontend/lowering/lower-builtins.js +0 -8984
  1121. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1122. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1123. package/dist/frontend/lowering/lower-containers.js +0 -7366
  1124. package/dist/frontend/lowering/lower-containers.js.map +0 -1
package/dist/ir/ir.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { IrLibFn } from "./builtin-signatures.js";
2
+ export type { IrLibFn } from "./builtin-signatures.js";
1
3
  /** Byte-offset span in the original source file. */
2
4
  export interface SrcLoc {
3
5
  file: string;
@@ -420,11 +422,11 @@ interface IrKindSet<K extends IrType["kind"]> extends ReadonlySet<IrType["kind"]
420
422
  /** The opaque runtime handle kinds. procStream is the one scalar handle;
421
423
  * every other handle has pointer representation. */
422
424
  declare const HANDLE_KIND_LIST: readonly ["stats", "fileHandle", "spawnRes", "child", "netServer", "netSocket", "http2Session", "http2Stream", "dgramSocket", "testCtx", "httpReq", "httpRes", "httpClientReq", "secureCtx", "cryptoHash", "cryptoHmac", "fsWatcher", "childStream", "childWriter", "procStream"];
423
- export type HandleKind = typeof HANDLE_KIND_LIST[number];
425
+ export type HandleKind = (typeof HANDLE_KIND_LIST)[number];
424
426
  export declare const HANDLE_KINDS: IrKindSet<"child" | "childStream" | "childWriter" | "cryptoHash" | "cryptoHmac" | "dgramSocket" | "fileHandle" | "fsWatcher" | "http2Session" | "http2Stream" | "httpClientReq" | "httpReq" | "httpRes" | "netServer" | "netSocket" | "procStream" | "secureCtx" | "spawnRes" | "stats" | "testCtx">;
425
427
  /** The IR kinds represented as pointers in native code. */
426
428
  declare const POINTER_KIND_LIST: readonly ["string", "bigint", "array", "map", "set", "regex", "bytes", "url", "searchParams", "symbol", "stats", "fileHandle", "spawnRes", "child", "netServer", "netSocket", "http2Session", "http2Stream", "dgramSocket", "testCtx", "httpReq", "httpRes", "httpClientReq", "secureCtx", "cryptoHash", "cryptoHmac", "fsWatcher", "childStream", "childWriter", "func", "object", "classval", "moduleNs", "record", "union", "dyn", "jsval", "caught", "promise", "generator"];
427
- export type PointerKind = typeof POINTER_KIND_LIST[number];
429
+ export type PointerKind = (typeof POINTER_KIND_LIST)[number];
428
430
  export declare const POINTER_KINDS: IrKindSet<"array" | "bigint" | "bytes" | "caught" | "child" | "childStream" | "childWriter" | "classval" | "cryptoHash" | "cryptoHmac" | "dgramSocket" | "dyn" | "fileHandle" | "fsWatcher" | "func" | "generator" | "http2Session" | "http2Stream" | "httpClientReq" | "httpReq" | "httpRes" | "jsval" | "map" | "moduleNs" | "netServer" | "netSocket" | "object" | "promise" | "record" | "regex" | "searchParams" | "secureCtx" | "set" | "spawnRes" | "stats" | "string" | "symbol" | "testCtx" | "union" | "url">;
429
431
  /** Runtime RC symbol stem for each IR type kind. An empty stem means the
430
432
  * kind is scalar/unit or uses an emitted per-shape helper (object/record).
@@ -494,9 +496,10 @@ export declare function setOf(elem: IrType): IrType;
494
496
  * classes and arrays can point back at their collection, so constructors
495
497
  * must carry key tracing as well as retain/release adapters. */
496
498
  export declare function isIdentityCollectionKey(t: IrType): boolean;
497
- /** Numbers use SameValueZero, strings use content, and reference keys use
498
- * identity. A union of identity arms hashes its payload, never its temporary
499
- * wrapper. Mixed scalar/reference unions remain outside this contract. */
499
+ /** Primitive keys compare by value and reference keys by identity. Union
500
+ * wrappers carry either domain without becoming observable key identities;
501
+ * null and undefined are distinct tag-only keys inside a union. */
502
+ export declare function isPrimitiveCollectionKey(t: IrType, unionArms?: IrType[]): boolean;
500
503
  export declare function isSupportedMapKey(t: IrType, unionArms?: IrType[]): boolean;
501
504
  /** Set elements and Map keys share storage, equality and ownership rules. */
502
505
  export declare function isSupportedSetElem(t: IrType, unionArms?: IrType[]): boolean;
@@ -1418,6 +1421,8 @@ export type IrArrIntrinsicMethod = "length"
1418
1421
  | "flatCopy" | "flatOne"
1419
1422
  /** Mutating splice with evaluated insertion items; returns removed slots. */
1420
1423
  | "spliceInsert" | "reverse"
1424
+ /** Evaluated numeric bounds; same-type fill values stay borrowed. */
1425
+ | "copyWithin" | "fill" | "fillUndefined"
1421
1426
  /** ES2023 copying methods. `toSpliced` receives [start, deleteCount,
1422
1427
  * itemsArray], with omitted arguments completed by the frontend;
1423
1428
  * `with` receives [index, value] and throws Node's catchable RangeError
@@ -1438,13 +1443,15 @@ export declare const MAY_THROW_ARR_METHODS: ReadonlySet<IrArrIntrinsicMethod>;
1438
1443
  * callback mutation because the runtime never compacts between
1439
1444
  * `iterEnter`/`iterExit` — live-iteration semantics, Node-exact). The iter*
1440
1445
  * members are compiler-internal: no ambient declaration reaches them. */
1441
- export type IrMapIntrinsicMethod = "get" | "set" | "has" | "delete" | "size" | "clear" | "iterCount" | "iterLive" | "iterKey" | "iterValue" | "iterEnter" | "iterExit";
1446
+ export type IrMapIntrinsicMethod =
1447
+ /** Internal shallow-copy constructors over builtin collection storage. */
1448
+ "clone" | "keySet" | "valueSet" | "get" | "set" | "has" | "delete" | "size" | "clear" | "iterCount" | "iterLive" | "iterKey" | "iterValue" | "iterEnter" | "iterExit";
1442
1449
  /** The Set method/property surface — Map's minus get/set/iterValue (there
1443
1450
  * is no value slot; `add` fills set's role) plus `add`. `forEach` desugars
1444
1451
  * in the frontend exactly like Map's, over the same iteration primitives —
1445
1452
  * iterKey doubles as the element read (JS's Set forEach passes the element
1446
1453
  * as both `value` and `key`). */
1447
- export type IrSetIntrinsicMethod = "add" | "has" | "delete" | "size" | "clear" | "iterCount" | "iterLive" | "iterKey" | "iterEnter" | "iterExit"
1454
+ export type IrSetIntrinsicMethod = "clone" | "add" | "has" | "delete" | "size" | "clear" | "iterCount" | "iterLive" | "iterKey" | "iterEnter" | "iterExit"
1448
1455
  /** `[...set]` and friends: drain the live entries into a FRESH elem[]
1449
1456
  * in insertion order (tombstones skipped — the same walk the forEach
1450
1457
  * desugar does, folded into one runtime call; no user code runs during
@@ -1592,1899 +1599,6 @@ export type IrRegexIntrinsicMethod = "test" | "match"
1592
1599
  * no g/y fence applies: /g is irrelevant and /y anchors at 0 — exactly
1593
1600
  * Node. Never throws. */
1594
1601
  | "search" | "source" | "flags" | "toString" | "replace" | "replaceAll" | "split";
1595
- /** The complete standard-library surface (mirrors ambient/scriptc.d.ts: the
1596
- * `process` and `JSON` globals and `declare module "node:fs"`). A closed
1597
- * union — every member has a signature in the validator's LIB_FN_SIGS and a
1598
- * scr_* implementation in the runtime (scr_lib.c / scr_json.c). fs.*
1599
- * failures and json.parse syntax errors THROW (catchable, via the runtime
1600
- * exception cell); process.* members never throw. JSON.stringify without a
1601
- * callback lowers to the type-directed `jsonStringify` node below; callback
1602
- * forms use the shared native JSON walker through libCall.
1603
- * island.eval (the internal __island_eval testing hook) exists only in
1604
- * --dynamic builds — the frontend rejects it otherwise, so backends may
1605
- * assume the island runtime is linked when they see it; island exceptions
1606
- * bridge into the exception cell as catchable strings (may-throw). */
1607
- export type IrLibFn = "ffi.argument" | "ffi.memoryModule" | "intl.segmenterNew" | "weakMap.is" | "weakSet.is" | "weakMap.new" | "weakSet.new" | "dyn.fromEntries" | "bytes.constructor" | "bytes.instanceOf" | "bytes.construct" | "arrayBuffer.constructor" | "arrayBuffer.new" | "arrayBuffer.is" | "arrayBuffer.isView" | "arrayBuffer.byteLengthGetter" | "arrayBuffer.byteLengthDescriptor" | "arrayBuffer.viewU8C" | "arrayBuffer.viewI8" | "arrayBuffer.viewU16" | "arrayBuffer.viewI16" | "arrayBuffer.viewU8" | "arrayBuffer.viewU32" | "arrayBuffer.viewI32" | "arrayBuffer.viewF32" | "arrayBuffer.viewF64" | "arrayBuffer.viewDV"
1608
- /** Native static fetch and its Web-platform companions. fetch.start
1609
- * answers once the response head arrives; the response body readers
1610
- * consume the native body stream. AbortSignal and ReadableStream values
1611
- * are opaque checked-dynamic handles. */
1612
- | "fetch.start" | "fetch.input" | "fetch.function" | "fetch.requestNew" | "fetch.headersNew" | "fetch.responseNew" | "fetch.responseArrayBuffer" | "fetch.responseJson" | "fetch.responseText" | "fetch.responseBytes" | "fetch.abortControllerNew" | "fetch.abortTimeout" | "fetch.abortNow" | "fetch.abortAny" | "abort.controllerNew" | "abort.timeout" | "abort.now" | "abort.any" | "fetch.webIs" | "fetch.streamIs" | "fetch.streamNew" | "fetch.streamFrom" | "fetch.readerRead" | "island.eval"
1613
- /** Load an embedded npm package's runtime entry in the island (cached by
1614
- * the engine's module registry) and take one export: args are the entry
1615
- * KEY (an embedded module's key, from IrModule.embedded) and the export
1616
- * name — "default" for default imports, "*" for the namespace object.
1617
- * --dynamic only, like island.eval; result is an owned jsval. May throw
1618
- * (a package's top-level code can), bridged catchably. */
1619
- | "island.import"
1620
- /** Dynamic `import(spec)`: load a module through the island's module
1621
- * system — an embedded module's key or a builtin shim's "node:x" key —
1622
- * and answer an ENGINE promise of its namespace object (always a
1623
- * promise, never a throw: load and evaluation failures REJECT it,
1624
- * Node's shape). The frontend wraps the result in jsBridgePromise, so
1625
- * awaiting parks the fiber and a rejection crosses catchably. --dynamic
1626
- * only; result is an owned jsval holding the engine promise. */
1627
- | "island.importDyn"
1628
- /** A checked cast the boundary can never satisfy, DEFERRED to runtime:
1629
- * `islandValue as Promise<T>` — the value is an ENGINE promise and T
1630
- * has no validated exit (Node-typed async APIs put class-shaped
1631
- * interfaces there), so instead of refusing the build the cast throws a
1632
- * catchable TypeError AT THE CAST naming the target type (args: the
1633
- * island value — evaluated, borrowed — and the type name). The result
1634
- * type is the cast's mapped target (a typed dummy; the exception is
1635
- * pending). Documented divergence: JS `as` never checks — like the dyn
1636
- * boundary, a conversion that cannot happen throws instead of lying.
1637
- * --dynamic only. */
1638
- | "island.castFail" | "json.parse" | "json.parseReviver" | "json.stringifyReplacer" | "json.stringifyValue"
1639
- /** Keyed WRITE on a dyn value — `h.onDone = cb` / `h["k"] = v` on a
1640
- * checked-dynamic object (args: receiver, key string, value — all
1641
- * borrowed; the runtime copies the key and retains the value in). An
1642
- * OBJ receiver sets the member (later writes win, insertion order
1643
- * preserved — JS exactly); undefined/null throws Node's catchable
1644
- * "Cannot set properties of undefined (setting 'k')"; every other kind
1645
- * throws Node's STRICT-mode "Cannot create property 'k' on <kind>" —
1646
- * primitives quoting their rendering, V8's "on number '5'"
1647
- * (sloppy mode would silently ignore — suite tests are 'use strict';
1648
- * SEMANTICS.md notes the sloppy divergence: loud, never silent). Void
1649
- * result; in the may-throw seed set. */
1650
- | "dyn.keySet" | "dyn.keySetComputed"
1651
- /** Delete an ordinary checked-native object's own key. Borrows both
1652
- * arguments; other receiver representations retain a runtime refusal. */
1653
- | "dyn.keyDelete" | "dyn.keyDeleteComputed" | "dyn.hasKeyComputed" | "dyn.hasOwnComputed" | "dyn.propertyIsEnumerableComputed"
1654
- /** Native own properties on globalThis keyed by symbol identity. */
1655
- | "dyn.globalSymbolGet" | "dyn.globalSymbolSet" | "dyn.globalSymbolHas" | "dyn.globalSymbolDelete"
1656
- /** Exact native class capsule identity, without materializing its fields. */
1657
- | "dyn.typedRefIs" | "dyn.classIs"
1658
- /** Destructuring pack over a dyn source — `const [a, b] = d`, a
1659
- * destructured dyn callback param (args: the source and the STATIC
1660
- * TypeError spelling, "" when the source has none — both borrowed;
1661
- * result: a fresh dyn array, +1). Iterable kinds collect like spread
1662
- * (arrays element-by-element, strings by code point, bytes by byte);
1663
- * every other kind throws V8's destructuring TypeError — the spelling
1664
- * verbatim when non-empty, else the runtime kind wording ("number 5 is
1665
- * not iterable (cannot read property Symbol(Symbol.iterator))"). In the
1666
- * may-throw seed set. */
1667
- | "dyn.iterPack" | "dyn.arrayFromIterator" | "dyn.iterator" | "dyn.iteratorResult" | "dyn.mapSeedEntries" | "dyn.mapSeedEntry"
1668
- /** The for-of-over-dyn pack accessors — the emitted index loop drives
1669
- * them over a dyn.iterPack result (ARR by construction). arrLen: the
1670
- * ARR length as f64 (0 for non-ARR kinds; arg borrowed). arrAt: the
1671
- * element at index (+1; the undefined singleton past the end). Neither
1672
- * throws. */
1673
- | "dyn.arrLen" | "dyn.arrAt"
1674
- /** `key in v` with a RUNTIME (string) key on a checked-dynamic
1675
- * receiver (args: value dyn, key string; result bool): OBJ answers
1676
- * own-member presence, ARR answers 'length'/a valid index — exactly
1677
- * the literal-key dynHasKey path. Proxy has traps may throw. */
1678
- | "dyn.hasKey"
1679
- /** Object.defineProperties over dyn values (args: target, descriptors —
1680
- * both borrowed dyn; result: the target, +1 — JS's return value).
1681
- * Value descriptors become own properties on OBJ and FUNC targets;
1682
- * OBJ targets preserve data attributes. get/set
1683
- * descriptors and non-object targets/descriptors throw catchably
1684
- * (Node's TypeError texts; accessors the loud unsupported Error). In
1685
- * the may-throw seed set. */
1686
- | "dyn.defineProps" | "dyn.defineProperty" | "dyn.getOwnPropertyDescriptor" | "dyn.arrayProtoCall" | "dyn.promiseAll"
1687
- /** Bare `typeof v` on a dyn value AS A STRING (arg: the dyn value,
1688
- * borrowed; result: an owned string) — the dyn kind's JS answer:
1689
- * undefined→"undefined", null/object/array/bytes→"object" (JS's oldest
1690
- * wart preserved), boolean/number/string by kind, function→"function".
1691
- * Never throws. */
1692
- | "dyn.typeof"
1693
- /** Object.prototype.toString.call on a checked-dynamic value. */
1694
- | "dyn.objectTag" | "dyn.freeze" | "dyn.isFrozen" | "dyn.nativeSetNew" | "dyn.nativeSetIs" | "dyn.nativeMapIs" | "dyn.nativeUrlIs" | "dyn.nativeDateIs" | "date.nativeNew" | "date.checkedValue" | "dyn.nativeRegexIs"
1695
- /** toString() on a checked-dynamic receiver: runtime kind dispatch
1696
- * (bytes decode per the literal encoding — utf8 default; strings,
1697
- * numbers, booleans, arrays, objects answer JS-exactly; undefined and
1698
- * null throw the catchable TypeError). */
1699
- | "dyn.toString"
1700
- /** Engine-free CommonJS module graph. Module values are scalar f64
1701
- * handles; generated startup defines the registry, init wrappers update
1702
- * loading/cache state, and the read surface answers Node's live metadata. */
1703
- | "module.registryInit" | "module.define" | "module.enter" | "module.link" | "module.finish" | "module.fail" | "module.filename" | "module.id" | "module.path" | "module.paths" | "module.children" | "module.parent" | "module.loaded" | "module.cacheGet" | "module.cacheHas" | "module.cacheKeys" | "fs.readFileSync"
1704
- /** readFileSync(path) — the Buffer read (+1 bytes); throws catchably
1705
- * like the utf8 form. */
1706
- | "fs.readFileSyncBuf"
1707
- /** readFileSync(path, enc) with a RUNTIME encoding (an untyped JS
1708
- * parameter): undefined/null answer Buffers, utf8 a string, other real
1709
- * encodings fence loudly, unknown names throw ERR_UNKNOWN_ENCODING. */
1710
- | "fs.readFileSyncDyn" | "fs.writeFileSync" | "fs.appendFileSync" | "fs.existsSync" | "fs.mkdirSync" | "fs.rmSync" | "fs.rmdirSync" | "fs.readdirSync"
1711
- /** node:path (scr_path.c ports BOTH of Node's implementations
1712
- * function-by-function): the `path.*` family is posix, the
1713
- * `path.win32*` family is Node v24's path.win32 byte-for-byte — the
1714
- * frontend binds the bare module to the TARGET platform's family
1715
- * (Node on Windows IS path.win32) and the path.posix / path.win32
1716
- * namespaces to their own family everywhere. join and resolve take ONE
1717
- * string[] arg — the frontend packs the variadic call's arguments into
1718
- * an array literal. basename always receives its suffix (the frontend
1719
- * completes an omitted one with "", a Node no-op). toNamespacedPath is
1720
- * the posix identity and the win32 \\?\-prefixer. None of these throw;
1721
- * the resolves consult the process cwd like Node's. */
1722
- | "path.join" | "path.resolve" | "path.normalize" | "path.dirname" | "path.basename" | "path.extname" | "path.isAbsolute" | "path.relative" | "path.toNamespacedPath" | "path.win32Join" | "path.win32Resolve" | "path.win32Normalize" | "path.win32Dirname" | "path.win32Basename" | "path.win32Extname" | "path.win32IsAbsolute" | "path.win32Relative" | "path.win32ToNamespacedPath"
1723
- /** node:os: homedir is $HOME else getpwuid(3); tmpdir is Node's env
1724
- * cascade ($TMPDIR/$TMP/$TEMP else /tmp, one trailing slash trimmed).
1725
- * os.platform() lowers to process.platform — one implementation. */
1726
- | "os.homedir"
1727
- /** os.release(): uname(2)'s release field — Node's own implementation
1728
- * (the kernel version string, e.g. "24.6.0" on macOS 15). Interned; +1
1729
- * per read. Never throws. */
1730
- | "os.release"
1731
- /** The os.userInfo() field trio (uv_os_get_passwd's slices): pw_name,
1732
- * pw_shell, pw_dir — the PASSWD homedir, not os.homedir's $HOME-first
1733
- * cascade (Node's own split). The frontend assembles the UserInfo
1734
- * record from these plus getuid/getgid. +1 fresh strings; a passwd
1735
- * lookup failure aborts (Node throws a system error there — no
1736
- * compiled program path reaches it for the running uid). */
1737
- | "os.userName" | "os.userShell" | "os.userHomedir" | "os.tmpdir"
1738
- /** os.networkInterfaces(): getifaddrs(3) → the Dict<NetworkInterfaceInfo[]>
1739
- * record, built inline by the emitter from a runtime snapshot (scr_lib.c).
1740
- * The result type is the CALL SITE's mapped @types/node shape — a pure
1741
- * index-signature record whose value is `Info[] | undefined`, Info a
1742
- * two-record union (IPv4: scopeid `number | undefined` holding undefined;
1743
- * IPv6: scopeid number) — verified structurally by the frontend. Rows
1744
- * match libuv's filter (IFF_UP && IFF_RUNNING, AF_INET/AF_INET6; loopback
1745
- * = internal; MACs from the interface's link-level sibling entry, zeros
1746
- * when absent; cidr from the netmask's contiguous prefix, the null arm
1747
- * when it is missing or non-contiguous). Key/row order follows the OS's
1748
- * getifaddrs enumeration — Node itself does not guarantee an order.
1749
- * Fresh +1 record; never throws (a getifaddrs failure yields {}). */
1750
- | "os.networkInterfaces"
1751
- /** `Math.max(...xs)` / `Math.min(...xs)` over one spread number[]
1752
- * (scr_number.c): the JS fold exactly — any NaN element poisons the
1753
- * result, ±0 order by the JS comparison (max prefers +0, min prefers
1754
- * -0), and the empty array yields -Infinity / +Infinity like the
1755
- * zero-argument calls. Borrows the array; never throws. */
1756
- | "math.maxArr" | "math.minArr" | "math.hypotArr"
1757
- /** `fs.readdirSync(path, { withFileTypes: true })` — Dirent rows over
1758
- * one readdir pass (scr_lib.c's scandir snapshot; DT_UNKNOWN falls back
1759
- * to lstat, Node's getDirents rule). The result type is the call site's
1760
- * interned Dirent record array (name, parentPath, hidden %dtype in
1761
- * libuv's UV_DIRENT encoding) — verified by the frontend; the emitter
1762
- * assembles the rows from the snapshot. OS order, no "."/"..". Throws
1763
- * Node's scandir errno error (may-throw seed set); fresh +1 array. */
1764
- | "fs.readdirTypesSync"
1765
- /** `Math.floor(x)` — C floor() IS the JS operation (NaN/±0/±Infinity
1766
- * pass through bit-exactly). Never throws. */
1767
- | "math.floor"
1768
- /** `Math.min(a, b)` / `Math.max(a, b)` — the two-argument scalar forms
1769
- * (scr_lib.c), JS-exact like the Arr folds: NaN poisons, max prefers +0
1770
- * over -0 (min the reverse). C fmin/fmax are NOT these (they drop NaN).
1771
- * Never throw. */
1772
- | "math.min" | "math.max"
1773
- /** `Math.random()` — a uniform double in [0,1) with the spec's 53-bit
1774
- * granularity, drawn from arc4random_buf (the CSPRNG behind the crypto
1775
- * lowerings). Same distribution as Node, NECESSARILY different sequence
1776
- * (SEMANTICS.md 62 — no seeded sequence exists to match). Never throws. */
1777
- | "math.random"
1778
- /** Math.abs (C fabs — IS the JS operation) and Math.round (scr_lib.c:
1779
- * ECMA half-toward-+Infinity with the exact-fraction comparison — C
1780
- * round() is half-away-from-zero and floor(x+0.5) drifts at the
1781
- * epsilon boundary). Borrow nothing; never throw. */
1782
- | "math.abs" | "math.round"
1783
- /** Math.trunc / Math.ceil — C trunc()/ceil() ARE the JS operations
1784
- * (NaN/±0/±Infinity pass through bit-exactly; ceil(-0.5) is -0 in IEEE
1785
- * round-toward-+Infinity exactly as ECMA says). Static like floor —
1786
- * they are ask-4's wholeness-discharge operators, so the library
1787
- * inference needs them compiled, not island-served. Never throw. */
1788
- | "math.trunc" | "math.ceil" | "math.sin" | "math.sinh" | "math.cos" | "math.cosh" | "math.tan" | "math.tanh" | "math.asin" | "math.asinh" | "math.acos" | "math.acosh" | "math.atan" | "math.atanh" | "math.cbrt" | "math.clz32"
1789
- /** Return -1, +1, or the original NaN/zero. In particular, -0 remains -0. */
1790
- | "math.sign" | "math.exp" | "math.expm1" | "math.fround" | "math.sqrt" | "math.log" | "math.log1p" | "math.log2" | "math.log10" | "math.atan2" | "math.pow" | "math.imul"
1791
- /** The static global parsers/tests (scr_string.c). num.parseInt is
1792
- * ECMA-262 19.2.5 exactly — JS whitespace, sign, ToInt32 radix (the
1793
- * frontend completes an omitted radix to 0 = the spec's "undefined":
1794
- * base 10 with the 0x hex escape), longest digit prefix, and the exact
1795
- * mathematical value correctly rounded (u64 fast path, bignum beyond —
1796
- * overflow is ±Infinity). num.isNaN is the NaN self-test on an
1797
- * already-number argument (tsc pins the argument to number, so no
1798
- * ToNumber coercion exists to model). Borrow; never throw. */
1799
- | "num.parseInt" | "num.isNaN"
1800
- /** ES parseFloat (scr_string.c): the longest StrDecimalLiteral prefix
1801
- * of the trimmed input (no hex, "Infinity" exact-case), NaN when none —
1802
- * ECMA-262 19.2.4 over a string argument (non-string arguments keep the
1803
- * fence: Node would ToNumber-coerce). Borrows; never throws. */
1804
- | "num.parseFloat" | "num.fromString"
1805
- /** The static URI component codecs (scr_string.c), ECMA-262 Encode/
1806
- * Decode with the component sets over the runtime's UTF-8 strings.
1807
- * str.encodeUriComponent percent-encodes every byte outside the
1808
- * unreserved component set (ALPHA/DIGIT/- _ . ! ~ * ' ( )) as uppercase
1809
- * %XX — the spec's per-code-point UTF-8 encoding IS a byte scan here —
1810
- * and never throws (the spec's URIError case is an unpaired surrogate,
1811
- * which cannot exist in well-formed UTF-8). str.decodeUriComponent
1812
- * decodes %XX escapes bytewise (raw non-escape bytes copy through) and
1813
- * requires the escaped bytes to form strictly valid UTF-8 (overlong
1814
- * forms, surrogate code points, and >U+10FFFF refused, per UTF8-decode
1815
- * without replacement); bad hex or an invalid sequence THROWS the
1816
- * spec's URIError ("URI malformed"), catchable. Borrow; results +1. */
1817
- | "str.encodeUriComponent" | "str.decodeUriComponent" | "str.decodeUri"
1818
- /** RegExp.escape (ES2025): per-code-point EncodeForRegExpEscape —
1819
- * leading ASCII alphanumeric hex-escapes, syntax characters and '/'
1820
- * take a backslash, other punctuators/whitespace/line terminators
1821
- * hex-escape, the rest passes through. Total; borrows; result +1. */
1822
- | "regexp.escape"
1823
- /** encodeURI: the same Encode() keeping the reserved set and '#'
1824
- * unescaped — total like the component encoder. Borrow; result +1. */
1825
- | "str.encodeUri"
1826
- /** The WHATWG base64 globals (scr_string.c), Node-global since v16.
1827
- * Arguments are borrowed dyn values — WebIDL ToString runs in the
1828
- * runtime over the dyn kind (String(null) is "null": the html spec's
1829
- * coercion, which Node's atob(null) exercises). str.atob decodes
1830
- * forgiving-base64 (ASCII whitespace stripped, %4==0 strips up to two
1831
- * '=', %4==1 refuses, leftover bits discarded) into the latin1 code
1832
- * points as a string; a malformed input THROWS the catchable
1833
- * DOMException InvalidCharacterError ("The string to be decoded is not
1834
- * correctly encoded."). str.btoa encodes the string's code points as
1835
- * base64; any code point over U+00FF THROWS InvalidCharacterError
1836
- * ("Invalid character"). str.b64Missing is the zero-argument call of
1837
- * either: always throws Node's TypeError [ERR_MISSING_ARGS] "The
1838
- * \"input\" argument must be specified". Results +1. */
1839
- | "str.atob" | "str.btoa" | "str.b64Missing"
1840
- /** Number.prototype formatters (scr_lib.c), JS-exact:
1841
- * num.toExponential is toExponential() with the spec's "as many digits
1842
- * as necessary"; num.toFixed0 is the non-throwing omitted-argument
1843
- * toFixed() fast path; num.toFixed implements an explicit fractionDigits
1844
- * with exact binary-value rounding and THROWS RangeError outside 0..100.
1845
- * Successful results +1. */
1846
- | "num.toExponential" | "num.toFixed0" | "num.toFixed" | "num.toStringRadix"
1847
- /** Object.is over two numbers — the spec's SameValue on doubles: NaN
1848
- * equals NaN, +0 differs from -0, everything else is `===`. Plain bool
1849
- * result; never throws. (Union-armed operands take unionEq's sameValue
1850
- * flag instead — this is the both-f64 fast path.) */
1851
- | "num.sameValue"
1852
- /** SameValue over checked values, including NaN, signed zero and reference identity. */
1853
- | "dyn.sameValue"
1854
- /** `new Intl.NumberFormat("en-US").format(x)` and
1855
- * `x.toLocaleString("en-US")` with DEFAULT options — the one locale
1856
- * whose data the runtime embeds (Node's default-build locale): decimal
1857
- * notation, 0–3 fraction digits rounded half-up on the SHORTEST
1858
- * round-tripping decimal (ICU's rounding input, probed vs Node —
1859
- * format(1.0005) is "1.001" though toFixed(3) answers "1.000"), ","
1860
- * grouping every three integer digits, "∞"/"NaN" texts, and "-0" for
1861
- * negative inputs rounding to zero. Result +1; never throws. */
1862
- | "intl.numFormatEnUs"
1863
- /** `delete process.env[NAME]` — unsetenv(3): the mutation is visible to
1864
- * every later read (process.envGet asks getenv fresh) and inherited by
1865
- * spawned children, exactly Node. Statement position only (JS's boolean
1866
- * result is constant true there). Borrows the name; never throws. */
1867
- | "process.envUnset"
1868
- /** node:url + the URL class (scr_url.c). url.new parses one absolute
1869
- * URL string into a mutable URL value (+1) — invalid input THROWS a
1870
- * catchable TypeError ("Invalid URL"), like Node's constructor. The
1871
- * getters (borrowed receiver, +1 string) never throw; url.href doubles
1872
- * as toString(). fileURLToPath has one libFn per receiver form (URL
1873
- * value / string) — both THROW Node's TypeErrors on non-file schemes,
1874
- * encoded slashes, and non-empty hosts. url.pathToFileURL resolves the
1875
- * path (getcwd) and never throws. */
1876
- | "url.new" | "url.newBase"
1877
- /** Factories consume already-converted input/base strings. canParse
1878
- * answers a boolean; parse returns a checked native URL or null (+1).
1879
- * Parser failures are suppressed; conversion occurs before these calls. */
1880
- | "url.canParse" | "url.canParseBase" | "url.parse" | "url.parseBase" | "url.protocol" | "url.origin" | "url.username" | "url.password" | "url.host" | "url.hostname" | "url.port" | "url.pathname" | "url.href"
1881
- /** Selected component writes borrow the receiver and converted string.
1882
- * href replaces its parsed fields while retaining cached params identity. */
1883
- | "url.set" | "url.setChecked" | "url.fileURLToPathUrl" | "url.fileURLToPathChecked" | "url.fileURLToPathOptions" | "url.fileURLToPathBuffer" | "url.pathToFileURLChecked" | "url.fileURLToPathStr" | "url.pathToFileURL"
1884
- /** Explicit path syntax from the options.windows argument, independent
1885
- * of the executable's host platform. Windows UNC input can throw. */
1886
- | "url.pathToFileURLPlatform"
1887
- /** pathToFileURL under a win32 TARGET: the same scr_url_from_path call
1888
- * (the runtime selects the win32 arm by _WIN32), but a distinct IR name
1889
- * because that arm THROWS for malformed UNC inputs — may-throw seeds on
1890
- * it while posix pathToFileURL emission stays byte-identical. */
1891
- | "url.pathToFileURLWin32"
1892
- /** URLSearchParams (scr_url.c — always linked with the url unit).
1893
- * Construction: sp.new (empty), sp.parse (one borrowed init string —
1894
- * a single leading '?' strips, Node's constructor), sp.copy (snapshot
1895
- * of another list), sp.fromPairs (a string[][] value — THROWS Node's
1896
- * ERR_INVALID_TUPLE TypeError on a non-[name, value] row; the one
1897
- * throwing entry in the family), sp.with (the record-literal init
1898
- * desugar: append one pair, answer the same list +1 — chains fold
1899
- * `new URLSearchParams({...})` into nested calls). url.searchParams
1900
- * answers the URL's LIVE cached view (+1, one identity per URL);
1901
- * url.search is the WHATWG search getter ("" for no/empty query).
1902
- * Methods mirror the WHATWG surface: sp.get answers +1-or-NULL (the
1903
- * sym.desc union pattern, null arm), sp.getAll a fresh string[];
1904
- * sp.append/sp.set/sp.delete/sp.deleteValue/sp.sort mutate and
1905
- * re-serialize a live view's URL query; sp.has/sp.hasValue answer
1906
- * bools; sp.size/sp.toString are pure reads. sp.keyAt/sp.valAt are
1907
- * the for-of/forEach desugar's index reads (live — the loop re-reads
1908
- * sp.size each pass). */
1909
- | "sp.new" | "sp.newChecked" | "sp.parse" | "sp.copy" | "sp.fromPairs" | "sp.with" | "url.searchParams" | "url.search" | "url.hash" | "sp.get" | "sp.getAll" | "sp.append" | "sp.set" | "sp.delete" | "sp.deleteValue" | "sp.has" | "sp.hasValue" | "sp.sort" | "sp.size" | "sp.toString" | "sp.keyAt" | "sp.valAt"
1910
- /** node:querystring (scr_qs.c — link-gated by moduleUsesQs; NOT
1911
- * URLSearchParams: the legacy codec's escaping and '+' rules differ).
1912
- * qs.escape is Node's qsEscape, which encodes exactly the component
1913
- * unreserved set — it emits the always-linked
1914
- * scr_str_encode_uri_component, so escape-only programs never pull the
1915
- * unit. qs.unescape is Node's qsUnescape: strict decodeURIComponent
1916
- * first, the lenient legacy unescapeBuffer fallback on failure (never
1917
- * throws). qs.parse takes (str, sep, eq, maxKeys) — the frontend
1918
- * completes omitted/null sep/eq to "&"/"=" and the omitted maxKeys
1919
- * option to Node's 1000 (0 and negatives mean unlimited, Node's rule) —
1920
- * and its result type is the CALL SITE's mapped ParsedUrlQuery shape (a
1921
- * pure index-signature record over `string | string[]`, an undefined
1922
- * arm tolerated — @types/node's Dict), verified structurally by the
1923
- * frontend (lowerQuerystringParseCall); the emitters construct the
1924
- * record and hand its overflow map to scr_qs_parse_into with the two
1925
- * union tags. qs.stringify takes (obj, sep, eq) with obj a dyn value
1926
- * (the frontend dynFroms the typed record; JS-world dyn values pass
1927
- * through) — Node's encodeStringified rules run in the runtime, so
1928
- * arrays expand to repeated keys and null/undefined/nested objects are
1929
- * empty values. Custom encoder/decoder options fence at compile time.
1930
- * All borrow; string results +1; none throw. */
1931
- | "qs.parse" | "qs.stringify" | "qs.escape" | "qs.unescape"
1932
- /** node:util.parseArgs: one checked-dynamic config object in, one
1933
- * checked-dynamic ParsedResults tree out. Statically typed member reads
1934
- * validate their values when leaving that tree. The native parser may
1935
- * throw Node's coded validation/grammar TypeErrors. */
1936
- | "util.parseArgs" | "util.parseEnv" | "util.getSystemErrorName" | "util.getSystemErrorMessage" | "util.systemErrorEntries" | "util.stripVTControlCharacters" | "util.toUSVString" | "util.isDeepStrictEqual" | "util.styleText" | "util.typeIs" | "util.typeValue"
1937
- /** ES Symbol values (scr_symbol.c — link-gated by moduleUsesSymbol).
1938
- * sym.new: `Symbol(desc)` — a fresh runtime-unique identity (+1) whose
1939
- * one arg is the description string (borrowed); sym.newAnon is the
1940
- * description-less `Symbol()` form. sym.for: the Symbol.for global
1941
- * registry — one interned symbol per key (borrowed), +1 on every call.
1942
- * sym.toString: "Symbol(desc)" (+1 string; "Symbol()" when absent).
1943
- * sym.desc / sym.keyFor answer the interned `string | undefined` union
1944
- * (the runtime returns +1-or-NULL; the backend builds the union arms —
1945
- * the child.stdout pattern). None of these throw. */
1946
- | "sym.new" | "sym.newAnon" | "sym.for" | "sym.wellKnown" | "sym.keyFor" | "sym.desc" | "sym.toString"
1947
- /** Engine-free arbitrary-precision bigint operations (scr_bigint.c).
1948
- * parse accepts the ECMAScript BigInt string grammar; fromF64 accepts
1949
- * finite integral Numbers. Arithmetic returns fresh immutable values.
1950
- * cmp returns -1/0/1 as f64; toString accepts a numeric radix. */
1951
- | "bigint.parse" | "bigint.fromF64" | "bigint.neg" | "bigint.not" | "bigint.add" | "bigint.sub" | "bigint.mul" | "bigint.div" | "bigint.mod" | "bigint.pow" | "bigint.and" | "bigint.or" | "bigint.xor" | "bigint.shl" | "bigint.shr" | "bigint.eq" | "bigint.eqString" | "bigint.cmp" | "bigint.cmpNumber" | "bigint.truthy" | "bigint.toString" | "bigint.inspect" | "bigint.toF64" | "bigint.asUintN" | "bigint.asIntN" | "bigint.bufferRead" | "bigint.bufferWrite" | "bigint.dataViewGet" | "bigint.dataViewSet"
1952
- /** fs.statSync → a Stats value (may throw, like the other sync fs
1953
- * calls); the stats.* getters are pure reads on it. */
1954
- | "fs.statSync" | "stats.isFile" | "stats.isDirectory" | "stats.size" | "stats.dev" | "stats.ino"
1955
- /** child_process.spawnSync (scr_child.c): posix_spawn + waitpid + piped
1956
- * utf8 capture — cmd borrowed, args one borrowed string[] (the frontend
1957
- * completes an omitted list to an empty literal), result an owned (+1)
1958
- * spawnRes. NEVER throws: spawn failure (nonexistent binary, EACCES) is
1959
- * data, like Node's error property — status null and empty outputs
1960
- * (SEMANTICS.md documents the divergence from Node's null stdout).
1961
- * The getters are pure reads: status is the interned `number | null`
1962
- * union (null = spawn failure or signal death, type-directed
1963
- * construction in the backend like process.envGet); stdout/stderr are
1964
- * +1 strings. */
1965
- | "cp.spawnSync" | "spawnRes.status" | "spawnRes.stdout" | "spawnRes.stderr"
1966
- /** Node's spawn-failure carrier `error?: Error`: a fresh +1 %Error
1967
- * ("spawnSync <file> ENOENT", `code` stamped) when the spawn itself
1968
- * failed, the interned undefined arm otherwise — the result type is the
1969
- * call site's `Error | undefined` union, constructed type-directedly in
1970
- * the backend (the envGet convention). Never throws. */
1971
- | "spawnRes.error"
1972
- /** child_process.spawn (scr_child.c + the scr_async.c loop): posix_spawnp
1973
- * with per-slot ignore/inherit/pipe modes (and number output fds), the
1974
- * all-piped Node default, and the child registered with the event loop,
1975
- * which polls waitpid(WNOHANG) at quiescence like timers.
1976
- * NEVER throws: spawn failure defers to the "error" event, Node-exact
1977
- * (the error message is Node's "spawn <cmd> <ERRNO-NAME>"; an "error"
1978
- * event with no listener prints it and exits 1 like an EventEmitter).
1979
- * cmd/args borrowed; result an owned (+1) child handle. The loop will
1980
- * not exhaust while any spawned child is unreaped — Node's keep-alive.
1981
- *
1982
- * child.onExit / child.onClose / child.onError — terminal listener
1983
- * registration through child.on/once. Close uses the exit adapter shape
1984
- * but fires only after every piped stdio handle reaches EOF. The
1985
- * receiver is borrowed, the CALLBACK MOVES into the child's listener
1986
- * registry (released after the terminal event fires, or at reap for
1987
- * the event that never fires). Both are void (chaining is fenced).
1988
- * onExit's third emitted ingredient is an ADAPTER the backend interns
1989
- * per callback shape: the runtime invokes adapter(cb, has_code, code)
1990
- * and the adapter builds the `number | null` union (tags are program-
1991
- * dependent) or ignores the code for a zero-param callback. onError's
1992
- * adapters are runtime-provided (zero-param, or the %Error one-param
1993
- * shape — scr_error_new needs no program types). "exit" fires once
1994
- * with the code (f64 arm) or null (signal death); "error" fires only
1995
- * for spawn failure, exactly Node's split. */
1996
- | "cp.spawn"
1997
- /** Static-native fork startup and IPC. process.forkTarget initializes a
1998
- * re-executed child's inherited channel and returns its embedded target id
1999
- * (-1 in the parent). The remaining entries mirror Node's JSON channel. */
2000
- | "process.forkTarget" | "cp.fork" | "child.connected" | "child.send" | "child.sendCb" | "child.disconnect" | "child.onMessage" | "child.onDisconnect" | "child.onSpawn"
2001
- /** Rest listeners use the checked function bridge to pack event arguments. */
2002
- | "child.onDyn" | "process.connected" | "process.send" | "process.sendCb" | "process.disconnect" | "process.onMessage" | "process.onDisconnect"
2003
- /** child_process.execFile's callback slice: starts an all-piped child,
2004
- * captures stdout/stderr, and moves the error-first callback into the
2005
- * child registry. The callback shape is program-dependent and checked
2006
- * by the validator/backends. */
2007
- | "cp.execFile" | "child.onExit" | "child.onClose" | "child.onError"
2008
- /** The ChildProcess lifecycle members (scr_child.c), Node's shapes
2009
- * exactly (SEMANTICS.md has the pinned matrix). child.pid is the
2010
- * checker's `number | undefined` (undefined = spawn failure) and
2011
- * child.exitCode its `number | null` (null while running and after a
2012
- * signal death; -errno once a spawn failure settled) — both unions are
2013
- * type-directed constructions in the backend over a has/get runtime
2014
- * pair, the spawnRes.status pattern. child.killed is Node's
2015
- * sent-a-signal flag. child.kill sends while the child is un-reaped
2016
- * (false after — Node's null-handle answer) and THROWS the
2017
- * Unknown-signal TypeError on bad names (may-throw); killNum passes
2018
- * numbers through (0 probes; never throws). child.unref drops the
2019
- * child from the loop's keep-alive set — it is still reaped while the
2020
- * loop runs for other reasons, and one the loop never reaps is left to
2021
- * the OS at exit. All receivers borrowed. */
2022
- | "child.pid" | "child.exitCode" | "child.killed" | "child.kill" | "child.killNum" | "child.unref" | "child.ref"
2023
- /** The piped-output streams (stdio mode 3 — scr_child.c's stream
2024
- * slice). child.stdout/child.stderr answer the checker's
2025
- * `Readable | null` union (type-directed construction in the backend
2026
- * over the +1-or-NULL runtime pair — the child.pid pattern with a ref
2027
- * arm). stream.onData/onEnd register 'data'/'end' listeners (receiver
2028
- * borrowed, CALLBACK MOVES, trailing once-flag, void — chaining
2029
- * fenced): 'data' fires one Buffer chunk per read (zero-param and
2030
- * Buffer/string adapters are runtime-provided; setEncoding threads
2031
- * split multibyte sequences through the shared StringDecoder core. A
2032
- * union-param listener —
2033
- * ngrok's `Buffer | string` — gets a compiler-emitted adapter wrapping
2034
- * the chunk at its Buffer arm), 'end' fires once at EOF, always BEFORE
2035
- * the child's 'exit' (the pinned ordering). A flowing stream keeps the
2036
- * loop alive: usesTimers. */
2037
- | "child.stdout" | "child.stderr" | "stream.onData" | "stream.onDataStr" | "stream.onEnd" | "stream.childSetEncoding"
2038
- /** The piped-input writer (stdio mode 3 on fd 0). child.stdin answers
2039
- * `Writable | null`; writes copy borrowed data into the nonblocking
2040
- * queue, end/destroy settle it, writable is a pure state read, and
2041
- * listener callbacks move into the writer registry. */
2042
- | "child.stdin" | "writer.writeString" | "writer.writeBytes" | "writer.end" | "writer.destroy" | "writer.writable" | "writer.onDrain" | "writer.onFinish" | "writer.onError"
2043
- /** The first-class WritableStream write (`output.write(line)` — the
2044
- * prefixStream idiom): the receiver IS the fd scalar (process.stdout/
2045
- * stderr reads mint 1/2), dispatched onto the exact stdoutWrite/
2046
- * stderrWrite paths so buffering and ordering stay identical. Data
2047
- * borrowed; the bool is Node's always-true backpressure signal. */
2048
- | "procStream.write"
2049
- /** node:net (scr_net.c — linked, and scr_net_install() emitted, only
2050
- * when one of these appears on the IR; moduleUsesNet is the switch).
2051
- * Receivers are borrowed; CALLBACKS MOVE into the handle's listener
2052
- * registry and are released at settlement (the child.onExit story).
2053
- * All listener registrations carry a trailing BOOL once-flag (`on` vs
2054
- * `once`) and are void — chaining is fenced. None of these throw:
2055
- * listen/connect failures are the async 'error' event, like Node.
2056
- *
2057
- * net.createServer's optional connection handler and the
2058
- * serverOnConnection listeners take the runtime-provided adapters
2059
- * (zero-param, or the one-param socket shape); sockOnData's adapters
2060
- * are the stdin pair's shapes (zero-param / bytes chunk); the error
2061
- * events reuse the child %Error adapters. net.listen/net.listenCb bind
2062
- * NOW and defer 'listening' to the next loop turn (Node's next-tick
2063
- * emit); net.serverPort is the composed `server.address().port` read.
2064
- * net.connect's host argument is a string ("localhost" pins to
2065
- * 127.0.0.1 — SEMANTICS.md); the connect callback is once('connect'). */
2066
- | "net.createServer" | "net.createServerCb" | "net.listen" | "net.listenCb"
2067
- /** listen({ port, host, ipv6Only }[, cb]) — the explicit-interface bind
2068
- * (portless's listenOnProxyInterface): args [server, port, host,
2069
- * ipv6Only]. host is an IP literal string ("" = the host-less
2070
- * dual-stack any default); ipv6Only sets IPV6_V6ONLY before the bind.
2071
- * These are the old-shaped calls, retained for omitted reusePort so
2072
- * serialized IR remains compatible. Failures are the async 'error',
2073
- * message in Node's listen shape with the requested host. Never throws. */
2074
- | "net.listenOpts" | "net.listenOptsCb"
2075
- /** Additive ABI for listen({ ..., reusePort }) — args
2076
- * [server, port, host, ipv6Only, reusePort], with the callback following
2077
- * those values in the callback form. The final BOOL is the requested
2078
- * kernel connection-distribution option; old spellings remain
2079
- * four/five-argument calls so serialized IR stays compatible. */
2080
- | "net.listenOptsReusePort" | "net.listenOptsReusePortCb" | "net.serverPort" | "net.serverListening"
2081
- /** server.address() as the full AddressInfo record (the dgram.address
2082
- * materialization pattern: the emitter builds the record from the three
2083
- * runtime reads; the frontend pinned the shape). Never throws — before
2084
- * listen it answers the any-form defaults with port 0 where Node
2085
- * answers null (the serverPort stance). */
2086
- | "net.serverAddress" | "net.serverClose" | "net.serverCloseCb"
2087
- /** The close-override pair (the portless close-proxy idiom).
2088
- * serverCloseBind is `wrapper.close.bind(wrapper)` as a VALUE: a
2089
- * compiler-emitted closure over the server whose invocation runs the
2090
- * REAL close (scr_net_server_close_direct — never the override), so
2091
- * the override body's `origClose(cb)` cannot recurse; its callback
2092
- * argument (the `((err?: Error) => void) | undefined` union) registers
2093
- * as a once-'close' listener, a one-param callback wrapped by an
2094
- * emitted zero-arg trampoline firing the undefined arm (a clean close
2095
- * carries no error). serverSetCloseOverride is `wrapper.close = fn`:
2096
- * the override MOVES in behind an emitted zero-arg wrapper (it invokes
2097
- * the user function with the undefined-arm callback — tags are program
2098
- * data), and server.close() consults it before closing. */
2099
- | "net.serverCloseBind" | "net.serverSetCloseOverride" | "net.serverOnError" | "net.serverOnClose" | "net.serverOnConnection"
2100
- /** 'secureConnection' — the TLS server's deferred 'connection' list
2101
- * (handshake-completion timing); on a server without deferred
2102
- * connections (a plain net server) the registration never fires,
2103
- * exactly Node's split. */
2104
- | "net.serverOnSecureConnection" | "net.connect"
2105
- /** connect with a validated autoSelectFamilyAttemptTimeout option (the
2106
- * budget runs Node's validateInt32-from-1 ladder and is then inert —
2107
- * the single dial has nothing to time). May-throw. */
2108
- | "net.connectAttempt"
2109
- /** net.connect/createConnection over a RUNTIME option bag (computed
2110
- * keys — the invalid-input probes): Node-order validation (the
2111
- * objectMode trio's ERR_INVALID_ARG_VALUE, validatePort, host string,
2112
- * autoSelectFamily boolean, the attempt budget), then the trailing
2113
- * compiler-rendered fence — ALWAYS THROWS (the error.nodeThrow
2114
- * polymorphic-result carve-out). May-throw seed. */
2115
- | "net.connectOptsChk" | "net.connectCb"
2116
- /** connect({ port, host, autoSelectFamily: true, lookup }) — the
2117
- * caller-resolver dial (portless's createLoopbackConnection): args
2118
- * [port, host, lookup]. The runtime creates the (connecting) socket
2119
- * handle, invokes the lookup as Node does — lookup(hostname, options,
2120
- * callback), options crossing as the dyn undefined — and the answer
2121
- * closure (an emitter-synthesized per-shape thunk over a boxed socket,
2122
- * the SNI-answer pattern) dials the answered addresses IN ORDER: each
2123
- * connect failure tries the next, the LAST failure's message is the
2124
- * socket's 'error' (Node's autoSelectFamily aggregate is a documented
2125
- * divergence), and a lookup error surfaces as the deferred socket
2126
- * 'error'. A synchronous throw INSIDE the lookup propagates out of the
2127
- * connect call (may-throw seed). */
2128
- | "net.connectLookup" | "net.sockWrite" | "net.sockWriteBytes" | "net.sockEnd" | "net.sockEndStr" | "net.sockEndBytes"
2129
- /** write/end with a CHECKED-DYNAMIC chunk (an untyped JS payload into a
2130
- * typed socket): the runtime dispatches STR/BYTES and throws Node's
2131
- * ERR_INVALID_ARG_TYPE chunk TypeError on any other kind. */
2132
- | "net.sockWriteDyn" | "net.sockEndDyn" | "net.sockDestroy" | "net.sockPipe"
2133
- /** socket.pipe(res) — raw socket chunks into a ServerResponse body
2134
- * (the extended-CONNECT bridge leg): each chunk is a body write (the
2135
- * response's own framing applies); source EOF end()s the response,
2136
- * pipe's default. Borrows both. Never throws. */
2137
- | "net.sockPipeRes" | "net.sockOnData" | "net.sockOnEnd" | "net.sockOnClose" | "net.sockOnError" | "net.sockOnConnect"
2138
- /** node:dgram + node:dns (scr_dgram.c — linked, and
2139
- * scr_dgram_install() emitted, only when one of these appears on the
2140
- * IR; moduleUsesDgram is the switch — dns.lookup rides the same unit).
2141
- * The net listener discipline verbatim: receivers borrowed, CALLBACKS
2142
- * MOVE into the handle's registry and release at settlement, `on` vs
2143
- * `once` is the trailing bool, registrations are void. bind/connect
2144
- * bind NOW and defer 'listening'/'connect' to the next loop turn (the
2145
- * net.listen story); their optional-host completions are ""
2146
- * (bind → 0.0.0.0) and "127.0.0.1" (connect — udp4's Node default).
2147
- * bind/connect/send/close/address THROW Node's state errors ("Socket
2148
- * is already bound", "Already connected", "Not running") — may-throw
2149
- * seeded. dgram.address returns the AddressInfo RECORD (the frontend
2150
- * pins the {address, family, port} shape; the emitter builds it from
2151
- * runtime parts). onMessage adapters are emitted per rinfo record
2152
- * shape (the child.onExit precedent); onError reuses the child %Error
2153
- * adapters. dns.lookup resolves via getaddrinfo AT CALL TIME and
2154
- * defers the callback to the next turn (SEMANTICS.md documents the
2155
- * blocking divergence); its per-union adapter builds the
2156
- * `Error | null` first argument. */
2157
- | "dgram.createSocket" | "dgram.bind" | "dgram.bindCb" | "dgram.connect" | "dgram.connectCb" | "dgram.sendStr" | "dgram.sendBytes"
2158
- /** The send argument-validation ladder over dyn arguments (Node's
2159
- * signature shuffle: slice bounds, list/type contracts, port/address
2160
- * validation, connected-state errors) — a fully-validated unconnected
2161
- * single-payload send RUNS; callback/list/connected forms meet the
2162
- * trailing fence. May-throw. */
2163
- | "dgram.sendChk" | "dgram.address" | "dgram.close" | "dgram.closeCb" | "dgram.unref" | "dgram.ref" | "dgram.onMessage" | "dgram.onError" | "dgram.onListening" | "dgram.onClose" | "dgram.onConnect" | "dns.lookup"
2164
- /** node:test (scr_test.c — linked only when one of these appears on
2165
- * the IR; moduleUsesNodeTest is the switch, and the main epilogue asks
2166
- * scr_test_exit_code() for the process's exit status). Strings are
2167
- * BORROWED, callbacks MOVE. register/suite/hook attach to the runner
2168
- * tree (register: name, mode 0|1|2 run/skip/todo, directive message ""
2169
- * = none, cb or absent via registerEmpty, flags 1 async | 2 takes-ctx
2170
- * | 4 only, "file:line:col"); suite runs its body AT registration
2171
- * (Node's collection phase). sub is t.test — runs the subtest INLINE
2172
- * on the runner fiber and returns the settled promise the await
2173
- * consumes. ctxSkip/ctxTodo mark the running test; ctxDiagnostic
2174
- * queues an ℹ line; ctxName reads t.name. Every registration keeps
2175
- * the loop-run emitted (usesTimers) so the runner fiber drains. */
2176
- | "test.register" | "test.registerEmpty" | "test.suite" | "test.hook" | "test.sub" | "test.subEmpty" | "test.ctxSkip" | "test.ctxTodo" | "test.ctxDiagnostic" | "test.ctxName"
2177
- /** node:http, the server slice (scr_http.c over scr_net.c — linked
2178
- * only when these appear on the IR; moduleUsesHttpServer is the
2179
- * switch, and any http.* libCall also counts as net use so scr_net.c
2180
- * links and installs). http.createServer's handler MOVES in and takes
2181
- * the runtime adapters for its (req, res) / (req) / () shapes; req
2182
- * body listeners follow the net.sockOnData story (bytes chunks, once
2183
- * flags); reqHeader answers the interned `string | undefined` union
2184
- * exactly like process.envGet; the res writers are borrowed-argument
2185
- * voids with Node's framing decided in the runtime (Content-Length
2186
- * for end-before-head, chunked after an explicit writeHead/write). */
2187
- | "http.createServer"
2188
- /** http.createServer() / http.Server() with no handler — the
2189
- * on("request") route; option helpers set parser behavior on a fresh
2190
- * server before the constructor/factory result is returned. */
2191
- | "http.createServerEmpty" | "http.validateHeaderName" | "http.validateHeaderValue" | "http.serverJoinDupHeaders" | "http.serverAllowMissingHostHeader"
2192
- /** The five writable numeric http.Server timeout fields use one
2193
- * selector ABI: 0 timeout, 1 keepAliveTimeout, 2 headersTimeout,
2194
- * 3 requestTimeout, 4 keepAliveTimeoutBuffer. These calls store/read
2195
- * the property values; timer enforcement remains outside this surface.
2196
- * The constructor-option setter takes dyn so explicit undefined remains
2197
- * distinguishable from a numeric value until its Node validation ladder. */
2198
- | "http.serverTimeoutGet" | "http.serverSetTimeout" | "http.serverSetTimeoutCb" | "http.serverOnTimeout" | "http.serverCloseAllConnections" | "http.serverCloseIdleConnections" | "http.serverTimeoutSet" | "http.serverTimeoutOptionSet"
2199
- /** server.on("listening", cb) — the deferred listen-callback list. */
2200
- | "net.serverOnListening"
2201
- /** The ServerResponse member surface: statusCode/statusMessage reads
2202
- * and assignments (Node's writable properties), the header CRUD trio
2203
- * (getHeader answers `string | undefined` like reqHeader), and
2204
- * end(cb)'s finish slot (resOnFinish registers, the end call follows —
2205
- * the callback fires deferred, Node's 'finish' emit). writeHead's
2206
- * statusMessage forms compose in interned helpers: resStatusMsgSet
2207
- * then the ordinary writeHead entry. */
2208
- | "http.resStatusGet" | "http.resStatusSet" | "http.resStatusMsgGet" | "http.resStatusMsgSet" | "http.resRequest" | "http.resSocket" | "http.resWritableFinished" | "http.resSendDateGet" | "http.resSendDateSet" | "http.resStrictContentLengthGet" | "http.resStrictContentLengthSet" | "http.resSetTimeout" | "http.resSetTimeoutCb" | "http.resGetHeader" | "http.resGetHeaderNames" | "http.resGetRawHeaderNames" | "http.resGetHeaders" | "http.resHasHeader" | "http.resRemoveHeader" | "http.resOnFinish" | "http.reqUrl" | "http.reqMethod" | "http.reqHeader" | "http.reqTrailer" | "http.reqHeaderValues" | "http.reqTrailerValues" | "http.reqOnData" | "http.reqOnEnd" | "http.resSetHeader" | "http.resWriteHead" | "http.resWriteHeadN"
2209
- /** HTTP/1.1 informational heads; early hints takes flat string pairs,
2210
- * with a lowercase `link` key required to send anything. */
2211
- | "http.resWriteContinue" | "http.resWriteProcessing" | "http.resWriteEarlyHints" | "http.resWrite" | "http.resWriteBytes" | "http.resEnd" | "http.resEndStr" | "http.resEndBytes"
2212
- /** The checked-dynamic chunk twins (the net.sockWriteDyn story). */
2213
- | "http.resWriteDyn" | "http.resEndDyn" | "http.resHeadersSent" | "http.resWritableEnded" | "http.resFlushHeaders" | "http.resAddTrailers" | "http.resCork" | "http.resUncork" | "http.resWritableCorked"
2214
- /** The server-surface member follow-ups: reqStatusCode answers the
2215
- * interned `number | undefined` union (negative = the undefined arm —
2216
- * a SERVER request, where Node's statusCode is undefined; every client
2217
- * response carries a real status); reqSocket is the underlying
2218
- * connection (+1, the same handle net.connect would give);
2219
- * sockRemoteAddress answers `string | undefined` (NULL after the fd
2220
- * closed, Node's destroyed-socket undefined; a dual-stack accept of an
2221
- * IPv4 peer reads "::ffff:a.b.c.d" like Node). reqResume/reqDestroy and
2222
- * the req error/close listener slots complete the IncomingMessage
2223
- * surface portless's client responses use; resDestroy/resOnClose and
2224
- * resWriteHeadPairs ([k0,v0,k1,v1,...] — the env.pairs helper's flat
2225
- * shape) complete ServerResponse. sockSetTimeout arms the idle
2226
- * EVFILT_TIMER ('timeout' fires after ms of inactivity, once per idle
2227
- * period, never destroying the socket — Node's semantics). */
2228
- | "http.reqStatusCode" | "http.reqSocket" | "http.reqH2Stream" | "http.reqH2StreamOrThrow" | "http.reqResume"
2229
- /** req.rawHeaders — [name, value, name, value, ...] in arrival order,
2230
- * names in their ORIGINAL case (Node's shape); a fresh string[] per
2231
- * read. reqStatusMessage answers the interned `string | undefined`
2232
- * union — the reason phrase on client responses ("" when the status
2233
- * line carried none), the undefined arm on server requests (the
2234
- * statusCode split). sockDestroyed is socket.destroyed — true once the
2235
- * fd is gone (destroy() or full close). */
2236
- | "http.reqRawHeaders" | "http.reqRawTrailers" | "http.reqStatusMessage"
2237
- /** The `{ ...req.headers }` snapshot feed: [lowercased name, value,
2238
- * ...] pairs in arrival order — the interned %headers.snapshot helper
2239
- * builds the record over it, exactly the process.envPairs pattern. */
2240
- | "http.reqHeaderPairs" | "http.reqTrailerPairs" | "net.sockDestroyed"
2241
- /** socket.writable — the write half is open: no end() yet, no FIN sent,
2242
- * fd alive (connecting sockets answer true; writes queue). Node's
2243
- * stream flag. Borrows; never throws. */
2244
- | "net.sockWritable"
2245
- /** The 'upgrade' events, both sides (SEMANTICS.md — the WebSocket
2246
- * proxying surface): serverOnUpgrade registers (req, socket, head)
2247
- * listeners fired INSTEAD of 'request' for Connection: upgrade
2248
- * requests (the parser steps aside; the socket is raw; `head` carries
2249
- * bytes past the request head; no listener = the socket destroys,
2250
- * Node's default). clientOnUpgrade is the client twin: a 101 response
2251
- * fires (res, socket, head) INSTEAD of 'response'. */
2252
- | "http.serverOnUpgrade" | "http.clientOnUpgrade"
2253
- /** server.on("connect", ...) — HTTP CONNECT tunneling, the 'upgrade'
2254
- * machinery's twin: (req, socket, head) fired INSTEAD of 'request' for
2255
- * CONNECT-method requests (no listener = the socket destroys, Node's
2256
- * default). The h2 compat server's 'connect' (portless's RFC 8441
2257
- * handler) only ever sees the HTTP/1.1 arm under the allowHTTP1
2258
- * lowering, so a listener whose second parameter is a UNION with a
2259
- * netSocket arm takes the socket wrapped at that arm (an emitted
2260
- * per-shape adapter — the tags are program data). */
2261
- | "http.serverOnConnect"
2262
- /** req.pipe(dest) — the IncomingMessage body streaming into a
2263
- * ServerResponse (the proxy's response leg), a ClientRequest (the
2264
- * request-body forward), or a raw socket (the upgrade-rejection leg);
2265
- * chunk-for-chunk, natural end ends the destination (Node's pipe
2266
- * default; no backpressure — divergence 54's stream model). */
2267
- | "http.reqPipeRes" | "http.reqPipeClient" | "http.reqPipeSock" | "http.reqDestroy" | "http.reqOnError" | "http.reqOnClose" | "http.reqOnAborted" | "http.reqHttpVersion" | "http.reqHttpVersionMajor" | "http.reqHttpVersionMinor" | "http.reqAborted" | "http.reqComplete" | "http.resDestroy" | "http.resOnClose" | "http.resWriteHeadPairs"
2268
- /** writeHead(status, headers) with a checked-dynamic headers value —
2269
- * the runtime OBJ walk (string/number values; loud fences otherwise;
2270
- * may throw). */
2271
- | "http.resWriteHeadDyn" | "net.sockSetTimeout"
2272
- /** setEncoding('utf8') — 'data' delivers strings inside the chunk-encoding window; other real encodings fence loudly, unknown names throw ERR_UNKNOWN_ENCODING (may throw). */
2273
- | "net.sockSetEncoding" | "http.reqSetEncoding" | "net.sockOnTimeout" | "net.sockRemoteAddress"
2274
- /** The paused-mode demux surface (portless's first-byte TLS peek:
2275
- * once('readable') + read(1) + unshift + emit('connection')).
2276
- * sockOnReadable registers a zero-param listener (a consumer: arrived
2277
- * bytes buffer instead of flowing, and EOF announces too); sockRead
2278
- * answers `Buffer | null` (exactly n buffered bytes, or null — Node's
2279
- * less-than-n answer; n <= 0 drains everything); sockUnshift returns
2280
- * bytes to the front of the stream; serverEmitConnection routes a
2281
- * socket into another server's protocol layer (a TLS target's
2282
- * 'connection' waits for its handshake). */
2283
- | "net.sockOnReadable" | "net.sockRead" | "net.sockUnshift"
2284
- /** Socket flow control and the compat surface: pause/resume (reads
2285
- * gate off/on — kernel backpressure holds paused bytes; resume flows
2286
- * and discards sans listeners) and setNoDelay answer the SOCKET (+1,
2287
- * Node's chaining); destroySoon ends now and destroys once the FIN
2288
- * flushed; bytesWritten counts accepted bytes; readable is true until
2289
- * the read half ends. */
2290
- | "net.sockPause" | "net.sockResume" | "net.sockSetNoDelay" | "net.sockDestroySoon" | "net.sockBytesWritten" | "net.sockReadable"
2291
- /** socket.on('finish', cb) / end(cb): fires once when the FIN goes out
2292
- * (sweep-deferred, never the registering stack). */
2293
- | "net.sockOnFinish" | "net.serverEmitConnection"
2294
- /** node:http, the CLIENT slice (http.request/http.get over the net
2295
- * client machinery): request/requestCb take (host, port, path, method,
2296
- * timeoutMs, headerPairs, autoEnd[, responseCb]) — headerPairs is the
2297
- * flat [k0,v0,...] array (empty for none), autoEnd true is http.get's
2298
- * eager end(). The handle owns one dialed connection (NO pooling — the
2299
- * wire still carries Node's exact head: user headers, then Host,
2300
- * Connection: keep-alive, and the framing header; the socket closes
2301
- * when the response completes). The response delivered to responseCb /
2302
- * 'response' listeners IS an httpReq (IncomingMessage), status and
2303
- * headers parsed from the wire, body via reqOnData/reqOnEnd. Errors are
2304
- * Node-shaped ('connect ECONNREFUSED ip:port', 'socket hang up') and
2305
- * fire 'error' then 'close'; an unhandled 'error' exits 1 like every
2306
- * net handle. clientWrite before end commits to chunked framing unless
2307
- * the caller set content-length; clientEnd(data) before any write sends
2308
- * Content-Length exactly like Node. */
2309
- | "http.request" | "http.requestCb"
2310
- /** new http.Agent(opts) / new https.Agent(opts): (secure, keepAlive,
2311
- * keepAliveMsecs, maxSockets, maxFreeSockets, timeoutMs, port) — the
2312
- * numeric options arrive < 0 for "unset" (Infinity/256/none; port
2313
- * seeds the settable defaultPort, Node's option merge). Returns the
2314
- * Agent as a checked-dynamic HANDLE (getName/destroy and the
2315
- * sockets/requests/freeSockets counters dispatch through the dyn
2316
- * handle ops). keepAlive: true THROWS the named construction fence —
2317
- * socket POOLING is not modeled (one dial per request); maxSockets
2318
- * accounting is real: over-limit requests defer their dial and queue.
2319
- * MAY THROW. */
2320
- | "http.agentNew"
2321
- /** The agent-threaded request rows: the http.request/https.request
2322
- * shape with a trailing `agent` dyn argument (an Agent handle, false —
2323
- * the one-shot Connection: close dial — or null/undefined for the
2324
- * default path). port < 0 means "no port option": the agent's settable
2325
- * defaultPort, then the scheme's. MAY THROW (a non-Agent value is
2326
- * Node's ERR_INVALID_ARG_TYPE). */
2327
- | "http.requestAgent" | "http.requestAgentCb" | "https.requestAgent" | "https.requestAgentCb"
2328
- /** The createConnection form (the proxy's own dialer): args are
2329
- * (connCb, path, method, timeout, headers, autoEnd[, cb]) — connCb is
2330
- * a `() => net.Socket` closure the runtime invokes ONCE, synchronously
2331
- * (Node's onSocket timing); everything else matches http.request. The
2332
- * Host header defaults to "localhost" — a headers.host entry wins
2333
- * verbatim, the proxy shape. */
2334
- | "http.requestConn" | "http.requestConnCb"
2335
- /** node:tls + node:https (scr_tls.c over scr_net.c/scr_http.c, with
2336
- * the vendored mbedTLS archive — linked only when one of these appears
2337
- * on the IR; moduleUsesTls is the switch, and every tls/https libCall
2338
- * also counts as net AND http use so both units link and install).
2339
- * tls.createServer takes (cert, key[, handler]) — cert/key are PEM
2340
- * strings or Buffers (the emitter passes data+len for either); the
2341
- * handler is Node's 'secureConnection' (fires post-handshake with a
2342
- * socket that behaves exactly like a net socket, the same adapters as
2343
- * net.createServer). https.createServer is (cert, key, handler) with
2344
- * the http request-handler adapters. https.request/requestCb extend
2345
- * the http client row with (…, rejectUnauthorized: bool, ca: PEM
2346
- * string/Buffer — "" for none) and default port 443; everything else
2347
- * (write/end/destroy/events, the response surface) IS the http client
2348
- * surface — the handles are the same kinds. */
2349
- | "tls.createServer" | "tls.createServerCb"
2350
- /** RUNTIME options records (the divergence-66 stance): the *Dyn
2351
- * creators take a checked-dynamic (dyn) options value whose members
2352
- * read at runtime — cert/key extract like the literal path, members
2353
- * whose literal forms fence THROW the catchable fence at runtime, and
2354
- * undocumented keys drop like Node drops them. tls.pemDyn is the
2355
- * literal walk's runtime-valued cert/key extraction: (value, whatLit)
2356
- * → PEM bytes (strings/Buffers/one-element arrays of those) or the
2357
- * thrown fence. All of them may throw. */
2358
- | "tls.pemDyn" | "tls.createServerDyn" | "tls.createServerDynCb" | "https.createServerDyn" | "https.createServerDynCb"
2359
- /** tls.connect — the TLS client socket: (port, host, opts[, cb]) where
2360
- * port -1 reads options.port, host "" reads options.host, and opts is
2361
- * the runtime (dyn) options record (rejectUnauthorized/ca/servername
2362
- * implemented; other documented members throw the runtime fence). The
2363
- * callback fires post-handshake — Node's secureConnect timing. */
2364
- | "tls.connect" | "tls.connectCb"
2365
- /** The TLSSocket member surface on the socket kind: authorized (bool —
2366
- * Node's verify verdict), authorizationError (the verify-failure CODE
2367
- * STRING or null), the 'secureConnect' registration (a TLS socket's
2368
- * conn list fires at establishment; plain sockets never fire it), and
2369
- * the 'session' registration (fires once with the serialized session —
2370
- * a Buffer; the received-ticket event). */
2371
- | "tls.sockAuthorized" | "tls.sockAuthError" | "tls.sockOnSecureConnect" | "tls.sockOnSession"
2372
- /** tls.createSecureContext({ cert, key }) — parses the PEM pair into an
2373
- * opaque SecureContext handle (secureCtx kind) for SNI callbacks to
2374
- * answer with; cert/key are PEM strings or Buffers like createServer's. */
2375
- | "tls.createSecureContext"
2376
- /** createSecureContext over a RUNTIME options record (the checked-
2377
- * dynamic lane): Node's typed option validations first (the ciphers/
2378
- * passphrase/engine/version/timeout/ticketKeys ladders), then the pem
2379
- * walk — a validated { cert, key } bag builds the real context.
2380
- * May-throw. */
2381
- | "tls.createSecureContextDyn"
2382
- /** tls.getCACertificates(type): validateString + the documented name
2383
- * set, then the trailing compiler-rendered fence — ALWAYS THROWS (the
2384
- * error.nodeThrow polymorphic-result carve-out). May-throw seed. */
2385
- | "tls.caCertsChk"
2386
- /** The CA-store introspection surface (scr_tls_ca.c — its own unit and
2387
- * link gate, "tlsca." NOT "tls.", so a getCACertificates-only binary
2388
- * never pulls mbedTLS): tlsca.get is tls.getCACertificates(type) — the
2389
- * cached per-type string[] of PEM blocks (identity-stable across calls,
2390
- * Node's caching; an unknown type throws Node's ERR_INVALID_ARG_VALUE
2391
- * TypeError); tlsca.root is the tls.rootCertificates value read;
2392
- * tlsca.set is tls.setDefaultCACertificates(certs) — replaces the
2393
- * default set (deduped) and the anchors the TLS client verifies
2394
- * against, throwing Node's ERR_CRYPTO_OPERATION_FAILED when no entry
2395
- * carries a certificate block. */
2396
- | "tlsca.get" | "tlsca.root" | "tlsca.set" | "https.createServer" | "https.request" | "https.requestCb"
2397
- /** The URL-string first argument, the http.requestUrl row over TLS:
2398
- * no options means Node's defaults (verification on, default trust
2399
- * anchors), and a non-https scheme is ERR_INVALID_PROTOCOL. */
2400
- | "https.requestUrl" | "https.requestUrlCb"
2401
- /** A call through a `const requestFn = tls ? https.request :
2402
- * http.request` binding — the module-function-as-value ternary between
2403
- * the two known clients: the https.request row with a leading `secure`
2404
- * bool that picks the dial at RUNTIME (true = the TLS client, exactly
2405
- * https.request; false = the plain client, exactly http.request —
2406
- * rejectUnauthorized/ca ignored there like Node ignores TLS options on
2407
- * http.request). The "https." prefix keeps the TLS unit linked. */
2408
- | "https.requestFn" | "https.requestFnCb"
2409
- /** node:http2 allowHTTP1: one TLS server advertises h2 + http/1.1 and
2410
- * dispatches to the matching parser after ALPN. Request listeners mirror
2411
- * into both compatibility lists; the remaining session/req.stream rows
2412
- * below retain their explicitly limited behavior. */
2413
- | "http2.createSecureServer"
2414
- /** createSecureServer(options, handler) — the eager COMPAT handler as
2415
- * the first 'request' listener (Node's exact route), on both literal
2416
- * flavors: Req is the dual ALPN allowHTTP1 server, H2Req the ALPN=h2-only
2417
- * server (both use compat handles over h2 streams). Args are
2418
- * (cert, key, cb, enableConnectProtocol). */
2419
- | "http2.createSecureServerReq" | "http2.createSecureServerH2Req"
2420
- /** createSecureServer with a RUNTIME options record (the divergence-66
2421
- * stance): allowHTTP1/cert/key read at runtime — allowHTTP1 picks the
2422
- * flavor, the TLS server walk fences its out-of-bounds members with
2423
- * the catchable runtime fence, and h2 session-tuning keys drop exactly
2424
- * like the literal walk ignores them. May throw. The Cb form carries
2425
- * the eager compat handler. */
2426
- | "http2.createSecureServerDyn" | "http2.createSecureServerDynCb"
2427
- /** createSecureServer with an SNI callback: args are (cert, key, sniCb)
2428
- * where sniCb is the JS SNICallback — a `(servername, cb) => void`
2429
- * closure, or the `SNICallback | undefined` union from the conditional-
2430
- * spread spelling (`...(x ? { SNICallback: x } : {})`; the emitter
2431
- * unwraps the union — the undefined arm means "no callback", exactly
2432
- * the no-SNI server). The runtime parses each connection's ClientHello
2433
- * for the server_name extension BEFORE the TLS handshake begins, calls
2434
- * the callback with (servername, answer-closure), and resumes the
2435
- * handshake when the answer arrives — cb(err) tears the socket down
2436
- * silently (Node's 'tlsClientError' default), cb(null, ctx) serves
2437
- * ctx's cert/key, cb(null, undefined) serves the default pair. */
2438
- | "http2.createSecureServerSni"
2439
- /** The REAL h2-over-TLS server (createSecureServer WITHOUT allowHTTP1):
2440
- * scr_http2_create_secure_server — the h2c session machinery behind an
2441
- * mbedTLS handshake whose ALPN advertises h2 alone (an http/1.1-only
2442
- * client fails the handshake with no_application_protocol, Node's
2443
- * h2-only split). args are (cert, key) — PEM strings or Buffers. */
2444
- | "http2.createSecureServerH2" | "http.serverOnRequest" | "http2.serverOnSessionError"
2445
- /** The guarded absent-session compatibility call remains a no-op. */
2446
- | "http2.streamNoop"
2447
- /** The UNGUARDED h2-only stream call (`req.stream.on(...)`): stream is
2448
- * undefined on every connection the allowHTTP1 lowering accepts — and
2449
- * on every HTTP/1.1 connection of Node's own allowHTTP1 server — so the
2450
- * call IS Node's member read on undefined: throws the exact catchable
2451
- * TypeError ("Cannot read properties of undefined (reading 'on')").
2452
- * One arg: the read member's name (a string literal). Never returns. */
2453
- | "http2.streamUndefCall"
2454
- /** node:http2, the REAL h2c surface (scr_http2.c — frame codec + HPACK
2455
- * over the net loop; the design note atop that file has the story).
2456
- * Sessions and streams are first-class handle kinds; 'stream'/'response'
2457
- * payloads cross as flat [name, value, ...] pairs arrays and an EMITTED
2458
- * adapter closure builds the program-side headers record (the response
2459
- * :status rides separately as a number). */
2460
- | "http2.createServer" | "http2.createServerReq" | "http2.serverOnStream" | "http2.serverOnSession"
2461
- /** connect(authority[, listener]) — h2c prior knowledge; the listener
2462
- * closure (if any) is the 'connect' once-listener. */
2463
- | "http2.connect" | "http2.connectCb"
2464
- /** session.request(pairs?, endStream) — endStream is a tri-state f64:
2465
- * -1 the method's payload-meaningless default, 0/1 explicit. */
2466
- | "http2.sessionRequest" | "http2.sessionClose" | "http2.sessionCloseCb" | "http2.sessionDestroy" | "http2.sessionOnClose" | "http2.sessionOnError" | "http2.sessionOnConnect" | "http2.sessionOnStream" | "http2.sessionOnGoaway" | "http2.sessionSettings0" | "http2.sessionSettings" | "http2.sessionSettingsDynCb" | "http2.sessionSettingsCb0" | "http2.sessionOnSettingsDyn" | "http2.sessionOnSettings0" | "http2.sessionSettingsGet" | "http2.sessionPendingSettingsAck" | "http2.getDefaultSettings" | "http2.sessionClosed" | "http2.sessionDestroyed" | "http2.sessionEncrypted" | "http2.sessionType" | "http2.sessionAlpn" | "http2.sessionSocket"
2467
- /** stream.respond(pairs?, endStream) — the server answer. */
2468
- | "http2.streamRespond" | "http2.streamWrite" | "http2.streamWriteBytes" | "http2.streamEnd" | "http2.streamEndStr" | "http2.streamEndBytes" | "http2.streamClose" | "http2.streamCloseCb" | "http2.streamDestroy" | "http2.streamSetEncoding" | "http2.streamSetEncodingRet" | "http2.streamResume" | "http2.streamPause" | "http2.streamOnData" | "http2.streamOnEnd" | "http2.streamOnClose" | "http2.streamOnAborted" | "http2.streamOnError" | "http2.streamOnResponse" | "http2.streamId" | "http2.streamRstCode" | "http2.streamDestroyed" | "http2.streamClosed" | "http2.streamAborted" | "http2.streamPending" | "http2.streamSession"
2469
- /** socket.encrypted — `boolean | undefined`: the true arm iff the
2470
- * socket carries a TLS transport (Node types `encrypted: true` on
2471
- * TLSSocket; plain sockets answer undefined — the proxy.ts isEncrypted
2472
- * idiom reads it through a cast). */
2473
- | "net.sockEncrypted" | "http.clientWrite" | "http.clientSetHeader" | "http.clientGetHeader" | "http.clientHasHeader" | "http.clientRemoveHeader" | "http.clientGetHeaderNames" | "http.clientGetRawHeaderNames" | "http.clientGetHeaders" | "http.clientWriteBytes" | "http.clientEnd" | "http.clientEndStr" | "http.clientEndBytes"
2474
- /** The checked-dynamic chunk twins (the net.sockWriteDyn story). */
2475
- | "http.clientWriteDyn" | "http.clientEndDyn" | "http.clientFlushHeaders" | "http.clientAddTrailers" | "http.clientCork" | "http.clientUncork" | "http.clientWritableCorked" | "http.clientMethod" | "http.clientPath" | "http.clientHost" | "http.clientProtocol" | "http.clientHeadersSent" | "http.clientWritableEnded" | "http.clientWritableFinished" | "http.clientSocket" | "http.clientReusedSocket" | "http.clientSetNoDelay" | "http.clientSetSocketKeepAlive" | "http.clientSetTimeout" | "http.clientSetTimeoutCb" | "http.statusCodes" | "http.methods" | "http.reqSetTimeout" | "http.reqSetTimeoutCb"
2476
- /** request/get with a URL-STRING first argument: the runtime parses it
2477
- * (WHATWG) and dials — throws catchably on an unparsable input or a
2478
- * non-http scheme. */
2479
- | "http.requestUrl" | "http.requestUrlCb" | "http.clientDestroy" | "http.clientAbort" | "http.clientAborted" | "http.clientDestroyed" | "http.clientOnResponse" | "http.clientOnSocket" | "http.clientOnFinish" | "http.clientOnError" | "http.clientOnTimeout" | "http.clientOnClose" | "http.clientOnAbort"
2480
- /** fs/promises (scr_lib.c over scr_async.c's settled minting): the SAME
2481
- * sync syscalls, wrapped in an ALREADY-SETTLED promise — failure
2482
- * REJECTS (catchable at the await) instead of throwing, so none of
2483
- * these are in the may-throw seed. readFile is utf8-fenced like
2484
- * readFileSync. The non-interleaving divergence is documented in
2485
- * SEMANTICS.md. */
2486
- /** node:crypto randomness: randomUUID plus randomBytes as either a real
2487
- * Buffer or the fused randomBytes(n).toString("hex"|"base64") path.
2488
- * The size-taking forms throw Node's RangeError on invalid values. */
2489
- | "crypto.randomUUID" | "crypto.randomBytesToString"
2490
- /** The fused createHash(alg).update(data).digest(enc) fast path and the
2491
- * one-shot crypto.hash implementation. First-class Hash/Hmac handles use
2492
- * the entries below; all paths share the incremental runtime core. */
2493
- | "crypto.hashDigestStr" | "crypto.hashDigestBytes"
2494
- /** First-class static Hash/Hmac handles. Constructors validate the
2495
- * runtime algorithm string (MD5, SHA-1, or SHA-2); update returns the same
2496
- * handle by retained identity, copy snapshots Hash state, and digest
2497
- * finalizes the handle and returns either a Buffer or encoded string. */
2498
- | "crypto.native" | "crypto.hashNew" | "crypto.hmacNewStr" | "crypto.hmacNewBytes" | "crypto.hashUpdateStr" | "crypto.hashUpdateBytes" | "crypto.hmacUpdateStr" | "crypto.hmacUpdateBytes" | "crypto.hashCopy" | "crypto.hashDigestString" | "crypto.hashDigestBuffer" | "crypto.hmacDigestString" | "crypto.hmacDigestBuffer" | "crypto.timingSafeEqual" | "crypto.randomFill" | "crypto.randomFillRest" | "crypto.randomInt" | "crypto.pbkdf2" | "crypto.randomBytesCb" | "crypto.pbkdf2Cb" | "crypto.hkdf" | "crypto.hkdfCb" | "crypto.scrypt" | "crypto.scryptCb"
2499
- /** crypto.randomBytes(n) → a real u8 Buffer (+1). THROWS Node's
2500
- * RangeError on out-of-range sizes, exactly like the composed
2501
- * randomBytesToString (which keeps its one-libCall lowering — the two
2502
- * coexist: the composed form never materializes the Buffer). */
2503
- | "crypto.randomBytes"
2504
- /** The Buffer statics with fixed (always-u8) signatures. fromStr is
2505
- * `Buffer.from(string, enc)` — the frontend completes an omitted
2506
- * encoding to "utf8" and fences non-literal/unsupported ones; hex and
2507
- * base64 decode Node-leniently, so it never throws. concat takes ONE
2508
- * bytes<u8>[] arg (the list) and returns a fresh copy. `Buffer.from(u8)`
2509
- * and `Buffer.alloc(n)` need no libFn — they lower to bytesNew. */
2510
- | "buffer.fromStr" | "buffer.brand"
2511
- /** Buffer.from on checked-native strings, bytes, arrays and data-only
2512
- * array-like/Buffer-JSON objects. The encoding is a normalized literal;
2513
- * non-string inputs ignore it. Copies the input and may throw during
2514
- * element coercion or argument validation. Custom object valueOf and
2515
- * opaque reference inputs retain explicit runtime refusals. */
2516
- | "buffer.fromDyn" | "buffer.concat"
2517
- /** Buffer.byteLength(string, enc) — enc a NORMALIZED literal like
2518
- * fromStr's — and Buffer.isEncoding(name) over a runtime string
2519
- * (case-insensitive against Node's alias set). Pure; never throw. */
2520
- | "buffer.byteLenDyn" | "buffer.byteLenStr" | "buffer.isEncoding"
2521
- /** Buffer.concat(list, totalLength): the concatenation truncated or
2522
- * zero-padded to the total. THROWS Node's 'length' RangeError on a
2523
- * negative/non-integer total (may-throw seed). */
2524
- | "buffer.concatLen"
2525
- /** The checked-dynamic compare/equals validators (scr_bytes_io.c) —
2526
- * the lowered form when an argument is NOT statically bytes<u8> (the
2527
- * invalid-input probes; a dyn from an untyped JS helper): Node's own
2528
- * argument ladders run at runtime — ERR_INVALID_ARG_TYPE with the
2529
- * API's argument name ("buf1"/"buf2", "otherBuffer", "target"; offsets
2530
- * "of type number"), validateOffset's ERR_OUT_OF_RANGE for bad
2531
- * numbers, undefined offsets taking their Node defaults — and a
2532
- * well-typed value still computes the real answer. All args borrowed
2533
- * dyn; compareChk's four offset slots pass the undefined dyn when
2534
- * syntactically absent. May-throw seeds. */
2535
- | "buffer.compareChk" | "bytes.equalsChk" | "bytes.compareChk"
2536
- /** The deprecated `new Buffer(number, 'enc')` string-arm rejection:
2537
- * always throws Node's ERR_INVALID_ARG_TYPE ("The \"string\" argument
2538
- * must be of type string. Received ..."). Borrowed dyn; may-throw. */
2539
- | "buffer.newStringFail"
2540
- /** fs._toUnixTimestamp(time) over a dyn value: numeric strings and
2541
- * finite numbers coerce (negatives answer now/1000, Node's shape);
2542
- * everything else throws Node's ERR_INVALID_ARG_TYPE. May-throw. */
2543
- | "fs.toUnixTimestamp"
2544
- /** The fs argument-validation ladders (checked-dynamic lane): each Chk
2545
- * replicates its API's Node-order validation over dyn values (Node's
2546
- * exact typed errors — ERR_INVALID_ARG_TYPE/VALUE, ERR_OUT_OF_RANGE),
2547
- * and a full pass meets the trailing compiler-rendered SC2020 fence
2548
- * string — so the ALWAYS-THROW forms take the error.nodeThrow
2549
- * polymorphic-result carve-out. mkdtempSyncChk and the lchmod sync/
2550
- * promise pair run the REAL operation on a validated pass instead
2551
- * (macOS lchmod(2); non-APPLE answers Node's not-a-function /
2552
- * ERR_METHOD_NOT_IMPLEMENTED shapes). May-throw seeds, all of them. */
2553
- | "fs.existsChk" | "fs.mkdtempChk" | "fs.mkdtempSyncChk" | "fs.readFileChk" | "fs.opendirChk" | "fs.watchFileChk" | "fs.lchmodChk" | "fs.lchmodSyncChk" | "fsp.lchmodChk" | "fs.readChk" | "fs.streamOptsChk"
2554
- /** The compiler-resolved ERR_INVALID_ARG_TYPE throw with a RUNTIME-
2555
- * rendered Received tail: args [argname, "of type ..." clause, the
2556
- * offending dyn value]. ALWAYS THROWS; polymorphic result (the
2557
- * error.nodeThrow pattern). May-throw seed. */
2558
- | "error.argTypeThrow"
2559
- /** The property flavor of argTypeThrow ("The \"options.x\" property
2560
- * must be ..."): the option-bag ladders' provably-invalid arms. ALWAYS
2561
- * THROWS; polymorphic result. May-throw seed. */
2562
- | "error.propTypeThrow"
2563
- /** The checked-dynamic max-listeners ladders: setMaxChk is the
2564
- * instance form over a dyn n (non-numbers ERR_INVALID_ARG_TYPE,
2565
- * negatives/NaN ERR_OUT_OF_RANGE; +1 receiver back — chaining);
2566
- * setDefaultMaxChk is the static/property form, its second argument
2567
- * naming the message slot ("setMaxListeners" for the static call,
2568
- * "defaultMaxListeners" for the module-property assignment). */
2569
- | "emitter.setMaxChk" | "emitter.setDefaultMaxChk"
2570
- /** The Buffer forms of fs: readFileSync(path) with NO
2571
- * encoding → bytes<u8> (+1), writeFileSync/appendFileSync(path, bytes), and the
2572
- * fs/promises readFile(path) no-encoding form (an already-settled
2573
- * promise, rejecting on failure like the other fsp members). The sync
2574
- * forms THROW catchably on failure exactly like the utf8 forms. */
2575
- | "fs.readFileSyncBytes" | "fs.writeFileSyncBytes" | "fs.appendFileSyncBytes" | "fsp.readFileBytes"
2576
- /** node:zlib (scr_zlib.c — native-toolchain.ts compiles/links it ONLY when these
2577
- * appear on the IR, the regex/libcurl gating precedent): one-shot zlib,
2578
- * raw-DEFLATE, gzip, and auto-detect codecs over u8 bytes with Node's
2579
- * default options, or a validated literal compression level from -1 to 9.
2580
- * Compression never throws (OOM aborts); decompression
2581
- * of corrupt input THROWS Node's error catchably. */
2582
- | "zlib.deflateSync" | "zlib.inflateSync" | "zlib.deflateRawSync"
2583
- /** bytes, mode (0 zlib / 1 raw / 2 gzip), validated compression level. */
2584
- | "zlib.deflateLevelSync" | "zlib.inflateRawSync" | "zlib.gzipSync" | "zlib.gunzipSync" | "zlib.unzipSync"
2585
- /** The default-options callback twins run on the executable's shared
2586
- * native work pool and deliver (Error | null, Buffer) on a later loop
2587
- * turn. crc32 validates its optional uint32 seed synchronously. */
2588
- | "zlib.deflateCb" | "zlib.inflateCb" | "zlib.deflateRawCb" | "zlib.inflateRawCb" | "zlib.gzipCb" | "zlib.gunzipCb" | "zlib.unzipCb" | "zlib.crc32"
2589
- /** The Buffer overloads of the raw stream writes — same promptly
2590
- * submitted streams as process.stdoutWrite/stderrWrite, constantly true.
2591
- * The encoding arg is evaluated but ignored for bytes, like Node. The Cb
2592
- * forms move their program-shaped completion callback to the tick queue. */
2593
- | "process.stdoutWriteBytes" | "process.stderrWriteBytes" | "process.stdoutWriteBytesCb" | "process.stderrWriteBytesCb" | "fsp.readFile" | "fsp.writeFile"
2594
- /** fs.promises.writeFile(path, data, { mode }): the settled-promise
2595
- * twin of fs.writeFileModeSync. */
2596
- | "fsp.writeFileMode" | "fsp.mkdir"
2597
- /** The fs/promises option/member tail the certs pipeline uses: mkdir's
2598
- * literal { recursive?, mode? } options (the mkdirSync matrix behind
2599
- * settled promises), unlink, chmod. Failures REJECT (catchable at the
2600
- * await), like the rest of the fsp family. */
2601
- | "fsp.mkdirMode" | "fsp.mkdirRecursive" | "fsp.mkdirRecursiveMode" | "fsp.unlink" | "fsp.chmod" | "fsp.link" | "fsp.symlink" | "fsp.readlink" | "fsp.statfs" | "fsp.readlinkStr" | "fsp.readlinkBuffer" | "fsp.utimes" | "fsp.lutimes" | "fsp.rename" | "fsp.readdir"
2602
- /** `fs.promises.readdir(path, { withFileTypes: true })` — the settled-
2603
- * promise twin of fs.readdirTypesSync. The backends assemble the same
2604
- * call-site-shaped Dirent rows, then move the array into a promise;
2605
- * scandir failure becomes its rejection. */
2606
- | "fsp.readdirTypes" | "fsp.rm" | "fsp.stat" | "fsp.realpath" | "fsp.lstat"
2607
- /** fs/promises.open and the statically represented FileHandle surface.
2608
- * Every operation returns an already-settled promise; syscall failures
2609
- * become rejections rather than escaping synchronously. read/write
2610
- * results are call-site record shapes ({ bytesRead/bytesWritten,
2611
- * buffer }) assembled by the backends around the fixed runtime ABI. */
2612
- | "fsp.open" | "fileHandle.fd" | "fileHandle.close" | "fileHandle.sync" | "fileHandle.datasync" | "fileHandle.truncate" | "fileHandle.chmod" | "fileHandle.utimes" | "fileHandle.readv" | "fileHandle.writev" | "fileHandle.read" | "fileHandle.writeBytes" | "fileHandle.writeStr" | "fileHandle.readFile" | "fileHandle.readFileBytes" | "fileHandle.writeFile" | "fileHandle.writeFileBytes" | "fileHandle.stat" | "process.argv" | "process.platform"
2613
- /** getenv(3): one string key arg → the interned `string | undefined`
2614
- * union (present: +1 string wrapped into the string arm; absent: the
2615
- * interned undefined-arm instance). BOTH source forms — `process.env.FOO`
2616
- * and `process.env[expr]` — lower here. Purely static; never throws. */
2617
- | "process.envGet"
2618
- /** setenv(3): (name, value) string args → void. Later envGet reads and
2619
- * spawned children observe the write, like Node (values are strings —
2620
- * the frontend fences non-string RHS). Never throws. */
2621
- | "process.envSet"
2622
- /** The whole environment as alternating [k0, v0, k1, v1, ...] strings in
2623
- * environ order — the raw material of the process.env SNAPSHOT record
2624
- * (the frontend's interned %env.snapshot helper keyed-writes the pairs
2625
- * into a fresh `{ [k: string]: string | undefined }` record). Fresh +1
2626
- * array; never throws. */
2627
- | "process.envPairs" | "process.exit"
2628
- /** Numeric process.exitCode write (integer validation, implicit exit status). */
2629
- | "process.setExitCode"
2630
- /** The code for process.exit() with no argument, or zero when unset. */
2631
- | "process.currentExitCode" | "process.cwd"
2632
- /** getpid(2) / getuid(2): zero args → f64. POSIX-only target, so both
2633
- * always answer (the checker's `getuid?` optionality covers Windows —
2634
- * `process.getuid?.()` lowers as the plain call). Never throw. */
2635
- | "process.pid" | "process.getuid" | "process.getgid"
2636
- /** The ambient receiver — JS `this` in a plain (non-method) function
2637
- * body: the innermost binding the current firing/dispatch window
2638
- * pushed (Node's listener receiver, a dyn OBJ method's object, an
2639
- * apply/call thisArg), or the undefined dyn singleton with none bound
2640
- * (the strict-mode plain-call answer, the old constant). Zero args →
2641
- * dyn (+1). Never throws. */
2642
- | "dyn.dataViewIs" | "dyn.construct" | "dyn.this" | "dyn.generatorThis"
2643
- /** process.execPath: the compiled binary's own resolved absolute path
2644
- * (one interned string, +1 per read) — the honest answer where Node's
2645
- * is the node executable's (SEMANTICS.md divergence 12). Never throws. */
2646
- | "process.execPath"
2647
- /** process.arch: the compiled binary's OWN architecture ("arm64",
2648
- * "x64") — Node's answer for its own build on the same machine.
2649
- * Interned; +1 per read. Never throws. */
2650
- | "process.arch"
2651
- /** Stable native version dictionary. node/openssl identify compatibility
2652
- * targets; components absent from the native runtime are omitted. */
2653
- | "process.versions" | "process.builtinId" | "process.builtinModule" | "process.builtinUnsupported" | "fs.callbackValue" | "fs.callbackCall" | "process.hrtimeValue"
2654
- /** process.versions.node: the runtime's Node COMPATIBILITY TARGET —
2655
- * there is no Node under the binary, so this reports the version whose
2656
- * semantics the runtime implements (SEMANTICS.md divergence 60, the
2657
- * execPath stance). Interned; +1 per read. Never throws. */
2658
- | "process.versionsNode" | "process.versionsOpenssl"
2659
- /** umask(2): arg < 0 reads without setting (umask has no read-only form
2660
- * — set 0, restore); otherwise sets and answers the PREVIOUS mask.
2661
- * Never throws. */
2662
- | "process.umask"
2663
- /** chdir(2) — throws Node's fs-shaped error (ENOENT/EACCES/ENOTDIR,
2664
- * syscall "chdir") on failure. */
2665
- | "process.chdir" | "process.loadEnvFile"
2666
- /** process._exiting: true once the exit sequence began (exit listeners
2667
- * running) — the runtime flag scr_run_exit_listeners/process.exit set.
2668
- * Never throws. */
2669
- | "process.exiting"
2670
- /** os.type(): uname(2)'s sysname ("Darwin", "Linux"; "Windows_NT" on
2671
- * win32) — Node's uv_os_uname answer. Interned per call; never throws. */
2672
- | "os.type"
2673
- /** os.totalmem(): total physical memory in bytes. Never throws. */
2674
- | "os.totalmem"
2675
- /** net's process-wide happy-eyeballs attempt budget (Node's default
2676
- * 250ms): one runtime double in the core unit, so reading/writing it
2677
- * never forces the net unit into the link. Never throw. */
2678
- | "net.getAutoSelTimeout" | "net.setAutoSelTimeout"
2679
- /** realpath(3) with Node's error shape (syscall "lstat" in the message,
2680
- * Node's own spelling for realpathSync failures). +1 fresh string. */
2681
- | "fs.realpathSync"
2682
- /** Native realpath with syscall "realpath" on failure. +1 fresh string. */
2683
- | "fs.realpathNativeSync"
2684
- /** kill(2) with Node's exact semantics and error shapes: the pid must be
2685
- * an int32 (else the ERR_INVALID_ARG_TYPE TypeError text), the named
2686
- * form resolves Node's signal-name table (unknown names throw the
2687
- * ERR_UNKNOWN_SIGNAL TypeError), an omitted signal completes to
2688
- * "SIGTERM" in the frontend, signal 0 probes, and a kill(2) failure
2689
- * throws Node's `kill ESRCH`/`kill EPERM` Error. Result is Node's
2690
- * constant true. */
2691
- | "process.kill" | "process.killNum"
2692
- /** execFileSync/execSync as ONE entry (args: cmd, argv, shell, input,
2693
- * cwd, hasEnv, envPairs, timeoutMs, stdoutMode, stderrMode — see
2694
- * scr_runtime.h). Throws Node's exact errors: "Command failed: <cmd>"
2695
- * (+ captured stderr) on non-zero exit or signal death, "spawnSync
2696
- * <file> ENOENT" on spawn failure, "spawnSync <file> ETIMEDOUT" after
2697
- * the SIGTERM timeout. Result is the captured utf8 stdout (+1). */
2698
- | "cp.execSync"
2699
- /** The promisified-execFile capture (args: cmd, argv, cwd, hasEnv,
2700
- * envPairs, timeoutMs): the same exec core in the async shape — both
2701
- * streams captured, no echo, Node's ASYNC messages on the throw paths
2702
- * ("Command failed: <cmd>\n<stderr>" with the unconditional newline,
2703
- * "spawn <file> ENOENT" with .code, timeouts reporting as ordinary
2704
- * SIGTERM command failures — never ETIMEDOUT). Result reuses the
2705
- * ScrSpawnRes container (+1; stdout/stderr strings, status unused).
2706
- * Called only from the frontend's interned %execFileAsync ASYNC helper,
2707
- * whose fiber turns the throw into the rejection. */
2708
- | "cp.execCapture"
2709
- /** The raw byte writes: one borrowed string arg → bool (constantly true
2710
- * — this synchronous runtime never queues backpressure). stdoutWrite
2711
- * shares console.log's stream, each call is submitted promptly, and
2712
- * interleaved output keeps source order. No newline, no formatting,
2713
- * never throws. */
2714
- | "process.stdoutWrite" | "process.stderrWrite" | "process.stdio" | "timers.setTimeout"
2715
- /** The repeating timer pair. setInterval takes (callback, ms) like
2716
- * setTimeout and RETURNS the f64 handle the fallback declarations
2717
- * promise (ids start at 1, so truthiness narrowing works); the loop
2718
- * owns the callback until clearInterval removes the entry (eagerly — a
2719
- * live interval keeps the loop alive, a cleared one releases it, like
2720
- * Node). Neither throws; a throw ESCAPING an interval callback ends the
2721
- * program like a setTimeout throw. */
2722
- | "timers.setInterval" | "timers.clearInterval"
2723
- /** setTimeout WITH a clear handle (the f64 id) — the clearable/unref-able
2724
- * one-shot; clearTimeout cancels it, .unref() drops it from loop
2725
- * liveness. The plain timers.setTimeout stays the handle-less
2726
- * fire-and-forget. */
2727
- | "timers.setTimeoutHandle" | "timers.clearTimeout"
2728
- /** Timeout.unref()/ref()/hasRef() — loop-liveness bookkeeping over the
2729
- * handle id. unref/ref RETURN the handle (f64) for chaining; hasRef
2730
- * returns bool. */
2731
- | "timers.unref" | "timers.ref" | "timers.hasRef"
2732
- /** Timeout.refresh() — re-arm to now + the original delay (from the
2733
- * heap or from inside the firing callback; a one-shot that fired on an
2734
- * earlier turn is gone and no-ops — documented divergence). Returns
2735
- * the handle for chaining like unref/ref. */
2736
- | "timers.refresh"
2737
- /** setImmediate/clearImmediate — Node's check phase: callbacks run
2738
- * once per loop turn AFTER due timers, FIFO, and immediates queued
2739
- * mid-phase wait for the next turn. setImmediate returns the f64
2740
- * handle (its own id space — clearTimeout of an Immediate no-ops,
2741
- * like Node); the Immediate ref trio mirrors the Timeout one (an
2742
- * unref'd pending immediate neither keeps the loop alive nor fires
2743
- * once nothing reffed remains). */
2744
- | "timers.setImmediate" | "timers.clearImmediate" | "timers.immediateUnref" | "timers.immediateRef" | "timers.immediateHasRef"
2745
- /** queueMicrotask (scr_async.c): the callback enters the SAME FIFO
2746
- * promise continuations ride — one microtask order, like V8's queue —
2747
- * and a throw is an UNCAUGHT exception (never a rejection).
2748
- * timers.queueMicrotask takes an owned zero-param closure and never
2749
- * throws; the Dyn form (checked-dynamic arguments — the mustCall
2750
- * wrapper, the suite's invalid-input probes) throws Node's
2751
- * ERR_INVALID_ARG_TYPE synchronously on a non-function value and calls
2752
- * the function with zero arguments at drain. */
2753
- | "timers.queueMicrotask" | "timers.queueMicrotaskDyn"
2754
- /** The tolerated non-handle clear (`clearTimeout(null)`,
2755
- * `clearInterval({})`, zero-argument forms): Node silently ignores
2756
- * anything that is not a live handle — a VOID no-op the emitter drops
2757
- * (only syntactically side-effect-free arguments take this path). */
2758
- | "timers.clearNoop"
2759
- /** process.nextTick(cb, ...args) — the user tick queue. args: [cb
2760
- * (() => void; trailing call arguments ride the timer surface's
2761
- * interned dyn thunk)]. Ticks drain BEFORE promise jobs at every loop
2762
- * checkpoint, to joint exhaustion with them (Node's tick-then-
2763
- * microtask order); ticks enqueued by station listeners run at the
2764
- * NEXT checkpoint (the stream-tick station divergence, SEMANTICS.md).
2765
- * Pending ticks are always-ready work — the loop neither sleeps nor
2766
- * exits while any exist; ticks scheduled from 'exit' listeners never
2767
- * run (Node). The enqueue itself never throws. */
2768
- | "process.nextTick"
2769
- /** The process introspection statics. uptime: seconds since the
2770
- * binary's own start (fractional — a load-time monotonic anchor).
2771
- * availableMemory/constrainedMemory: libuv's numbers (free-ish bytes;
2772
- * the cgroup cap or 0). cpuUser/cpuSystem (+ threadCpu twins): the
2773
- * process/thread CPU clocks in microseconds — the frontend composes
2774
- * the {user, system} records. The *Diff forms answer current − prev
2775
- * for one field; cpuPrevValidate throws Node's ERR_INVALID_ARG_VALUE
2776
- * RangeError for negative/non-finite prev fields (user first, then
2777
- * system — Node's order; MAY THROW). rusage(idx): one
2778
- * process.resourceUsage() field by canonical index (Node's units).
2779
- * activeResources: the loop's own bookkeeping — 'Timeout' per armed
2780
- * (or firing, uncleared) timer, 'Immediate' per queued unfired
2781
- * immediate; unmodeled resource kinds are absent (SEMANTICS.md). */
2782
- | "process.uptime"
2783
- /** perf_hooks performance.now(): fractional ms since process start. */
2784
- | "perf.now" | "process.availableMemory" | "process.constrainedMemory" | "process.cpuUser" | "process.cpuSystem" | "process.cpuUserDiff" | "process.cpuSystemDiff" | "process.threadCpuUser" | "process.threadCpuSystem" | "process.threadCpuUserDiff" | "process.threadCpuSystemDiff" | "process.cpuPrevValidate" | "process.rusage" | "process.activeResources"
2785
- /** Named process signal events: [name string, callback dyn, once bool]
2786
- * or [name, callback] for removal. The runtime resolves platform signal
2787
- * numbers and delivers (name, number). Listeners do not keep the loop
2788
- * alive. Invalid callbacks and uncatchable signals throw. */
2789
- | "process.onSignal" | "process.offSignal"
2790
- /** The process 'exit' event — process.on/once/off("exit"). args: [cb,
2791
- * once bool] / [cb]. Listeners run SYNCHRONOUSLY at termination
2792
- * (normal exit, process.exit(), the uncaught/unhandled exit-1 paths)
2793
- * with the exit code; anything they schedule never runs, like Node.
2794
- * Callback shapes: () => void or (code: number) => void — the emitter
2795
- * picks the runtime adapter. Never throw. */
2796
- | "process.onExit" | "process.offExit"
2797
- /** process.stdin listener registration — stdin.on/once("data" | "end" |
2798
- * "error", cb). args: [cb, once bool]. data callbacks: () => void or
2799
- * (chunk: Uint8Array) => void; end: () => void; error: () => void or
2800
- * (err: Error) => void (the child error adapters are reused). While a
2801
- * data listener (or a parked for-await chunk promise) exists, stdin
2802
- * keeps the loop alive — Node's flowing-stdin keep-alive. Never
2803
- * throw. */
2804
- | "stdin.onData" | "stdin.onEnd" | "stdin.onError"
2805
- /** The for-await chunk source over process.stdin: no args, result
2806
- * Promise<Uint8Array> (+1). Fulfills with the next arrived chunk; the
2807
- * EMPTY bytes value is the done sentinel (POSIX reads never deliver
2808
- * empty data chunks), which the for-await desugar turns into loop
2809
- * exit. Never throws itself; awaiting it re-throws nothing (stdin
2810
- * errors surface through 'error' listeners, not the iterator). */
2811
- | "stdin.nextChunk"
2812
- /** The runtime-provided Error hierarchy's entry points (scr_error.c).
2813
- * error.new: one borrowed string arg (the message), result an owned (+1)
2814
- * builtin error instance — the result TYPE names which builtin class
2815
- * (backends derive the runtime kind from it). error.ctor: the
2816
- * super(message) call of an `extends Error` constructor — borrowed
2817
- * receiver (already allocated by the derived class's new) + borrowed
2818
- * message, void; the receiver's type names the builtin class whose name
2819
- * field to stamp. error.toString: borrowed `%Error`-typed receiver, +1
2820
- * string in Node's "name: message" shape. Formatting can invoke a user
2821
- * message accessor, which can throw. */
2822
- | "error.new"
2823
- /** ECMAScript constructors with raw checked-dynamic message/options.
2824
- * Options retain cause presence; constructor calls borrow their args.
2825
- * Message coercion may throw before the cause is installed. */
2826
- | "error.newOptions" | "error.ctorOptions"
2827
- /** Borrowed Error receiver. cause returns an owned dyn value (undefined
2828
- * when absent); hasCause distinguishes absence from present undefined. */
2829
- | "error.cause" | "error.hasCause"
2830
- /** Assignment borrows both operands and retains the new cause. */
2831
- | "error.setCause" | "error.defineCause" | "error.deleteCause"
2832
- /** The compiler-resolved Node-parity throw for always-throwing lowered
2833
- * arms (ERR_INVALID_THIS receivers, ERR_MISSING_ARGS arity ladders,
2834
- * the symbol-to-string TypeError): args are [error-kind f64 (the
2835
- * SCR_ERR_* index: 0 Error, 1 TypeError, 2 RangeError), code (empty =
2836
- * no code slot), message]. ALWAYS THROWS catchably; the result type is
2837
- * the replaced expression's own (never materialized — the
2838
- * global.undefRead pattern). May-throw seed. */
2839
- | "error.nodeThrow"
2840
- /** JS ToString over a dyn value WITH the object protocol (a user
2841
- * toString/valueOf member is CALLED and its throw propagates;
2842
- * exhaustion throws "Cannot convert object to primitive value"; units
2843
- * render "null"/"undefined") — the WHATWG USVString conversions
2844
- * (URLSearchParams names/values). Borrowed dyn; +1 string. May-throw. */
2845
- | "dyn.toStringCoerce" | "dyn.stringConstructor" | "dyn.propertyKey" | "dyn.toNumeric" | "dyn.increment"
2846
- /** JS ToNumber over a dyn value WITH the object protocol (number-hint
2847
- * valueOf/toString ordering; user throws propagate). Borrowed dyn;
2848
- * f64 result, or a throw. Used by statically lowered numeric coercions
2849
- * whose checker type remained any. */
2850
- | "dyn.numberConstructor" | "dyn.bigintConstructor" | "dyn.toNumberCoerce" | "dyn.add" | "dyn.arithmetic" | "dyn.compare" | "dyn.bitwise" | "dyn.proxyNew"
2851
- /** A read of a `declare`d const NOTHING defines (the bundler-define
2852
- * pattern — __VERSION__): always throws the catchable ReferenceError
2853
- * Node raises at the access ("<name> is not defined"). args[0] is the
2854
- * name; the result type is the read's declared type (a typed dummy the
2855
- * unwind abandons — the value never exists). */
2856
- | "global.undefRead"
2857
- /** A native reference to the global object; known names retain value fences. */
2858
- | "global.native" | "console.native"
2859
- /** `X.name` through a class VALUE (scr_object.c): args[0] is a borrowed
2860
- * classval; the result is the class object's stored .name string,
2861
- * retained (+1 — the string is an interned immortal, so the retain is a
2862
- * no-op, kept for ownership uniformity). Never throws. A direct
2863
- * `C.name` on the class name itself folds to a strLit instead. */
2864
- | "class.name" | "error.ctor" | "error.toString" | "error.stack" | "error.stackLimitGet" | "error.stackLimitSet"
2865
- /** `new DOMException(message?, nameOrOptions?)` (scr_error.c): both args
2866
- * are borrowed dyn values (the lowering passes the dyn undefined for an
2867
- * absent argument, so WebIDL's optionality lives in one place). The
2868
- * runtime ToStrings the message ("" for absent/undefined), resolves the
2869
- * name — absent/undefined → "Error", a non-null object → ToString of its
2870
- * `name` member plus the `cause` own-property record, anything else →
2871
- * ToString — and stamps the legacy code from the WebIDL name table (0
2872
- * off-table). Result is an owned (+1) %DOMException. Never throws (dyn
2873
- * ToString is total). */
2874
- | "error.newDom"
2875
- /** DOMException's own read surface (scr_error.c; %DOMException receivers
2876
- * only — borrowed). domCode: the legacy numeric code. domHasCause: the
2877
- * options form's own-property record (`'cause' in e`). domCause: the
2878
- * cause value, +1 (the dyn undefined when absent — matching Node's
2879
- * undefined read). None throws. */
2880
- | "error.domCode" | "error.domHasCause" | "error.domCause"
2881
- /** structuredClone of a %DOMException receiver (scr_error.c): WebIDL
2882
- * serialization — name/message copy, the legacy code re-derives, cause
2883
- * does not serialize. args are the borrowed receiver and the borrowed
2884
- * options dyn value (the dyn undefined when absent — the shared
2885
- * validation throws Node's exact option errors; any non-empty transfer
2886
- * list throws DataCloneError, nothing static is transferable). Result
2887
- * +1 %DOMException. */
2888
- | "error.domClone"
2889
- /** `d instanceof TypeError` (and the other BUILTIN error classes) on a
2890
- * checked-dynamic value (scr_json.c): the from_error cache holds the
2891
- * dyn↔error identity edge, so the test resolves the runtime error and
2892
- * asks its vtable's stamped preorder interval — exact for every error
2893
- * that crossed the boundary. A dyn object that never came from an
2894
- * error (a hand-built {%error} literal) answers false: subclass
2895
- * identity is unknowable there (the root keeps dynTest's marker
2896
- * answer). args are the borrowed dyn and the SCR_ERR_* kind literal.
2897
- * Never throws. */
2898
- | "dyn.errInstanceof"
2899
- /** Object.keys/values/entries over a CHECKED-DYNAMIC receiver
2900
- * (scr_json.c): the runtime walks the dyn node's own members in JS
2901
- * own-key order (array-index keys ascending first, then insertion
2902
- * order) and answers a dyn array (entries: an array of [key, value]
2903
- * pairs; values RETAIN the member nodes — reference semantics, like
2904
- * JS). Strings/arrays/bytes answer their index keys; other scalars an
2905
- * empty array; null/undefined throw Node's catchable TypeError
2906
- * ("Cannot convert undefined or null to object"). */
2907
- | "dyn.objKeys" | "dyn.forInKeys" | "dyn.hasOwn" | "dyn.propertyIsEnumerable" | "dyn.assign" | "dyn.copyDataProperties" | "dyn.objectRest"
2908
- /** Variadic Object.assign over CHECKED-DYNAMIC targets (`Object.assign(
2909
- * {}, ...arr.map(f), tail)` — the option-table merge): the lowering
2910
- * builds one fresh dyn pack of sources (packPush retains a plain source
2911
- * in; packPushSpread flattens a spread source through the spread-call
2912
- * walk — V8's exact TypeError texts, the string arg spelling the spread
2913
- * expression for the nullish form), so every source evaluates and
2914
- * flattens BEFORE any copying (JS's ArgumentListEvaluation), then
2915
- * assignAll copies each pack element's own enumerable keys onto the
2916
- * target left to right and answers the TARGET (+1) — identity, like JS.
2917
- * assignAll throws Node's ToObject TypeError on a nullish target. */
2918
- | "dyn.packPush" | "dyn.packPushSpread"
2919
- /** The iterated-path spread twin: V8 spells the optimized apply-path
2920
- * texts (packPushSpread's — the expression named for nullish sources)
2921
- * only for the SINGLE LAST argument's spread; any other spread position
2922
- * drives the real iterator protocol, whose failure describes the VALUE
2923
- * ("object null is not iterable (cannot read property
2924
- * Symbol(Symbol.iterator))"). The frontend picks by position. */
2925
- | "dyn.packPushSpreadIter" | "dyn.assignAll" | "dyn.reflectApply" | "dyn.reflectGet" | "dyn.reflectSet" | "dyn.reflectDefine" | "dyn.abstractEq"
2926
- /** `Object.create(null)` (scr_json.c): a fresh NULL-PROTOTYPE dyn
2927
- * dictionary. The checked-dynamic tree's OBJ dispatch is already own-member-only —
2928
- * Node's null-proto answer — so the flag's whole job is the observations
2929
- * that SEE the prototype: inspect's "[Object: null prototype]" prefix
2930
- * and deepStrictEqual's prototype gate. Never throws. Static builds
2931
- * only; --dynamic routes Object.create through the engine instead. */
2932
- | "dyn.objCreateNullProto" | "dyn.arrayPrototype" | "dyn.arrayConstructor" | "dyn.objectPrototype" | "dyn.functionApply" | "dyn.builtinMethod" | "dyn.classPrototype" | "dyn.classBasePrototype" | "dyn.classInherit" | "dyn.classSuper" | "dyn.assignPrototype" | "dyn.definePrototypeProps" | "dyn.bagGet" | "dyn.bagSet" | "dyn.objCreate" | "dyn.objCreateWithProperties" | "dyn.getPrototype" | "dyn.setPrototype" | "dyn.getOwnPropertyNames" | "dyn.ownKeys" | "dyn.getOwnPropertySymbols" | "dyn.getOwnPropertyDescriptors" | "dyn.preventExtensions" | "dyn.isExtensible" | "dyn.seal" | "dyn.isSealed" | "dyn.objValues" | "dyn.objEntries"
2933
- /** structuredClone over the checked-dynamic tree (scr_json.c): the JSON-safe subset plus
2934
- * bytes (a fresh copy — a Buffer clones as a plain Uint8Array, like
2935
- * Node), deep. Functions and handle kinds throw the spec's catchable
2936
- * DataCloneError; CYCLES throw the scriptc fence (the checked-dynamic tree cannot
2937
- * represent them — Node clones cycles; documented divergence). The
2938
- * options dyn value validates with Node's exact errors (dictionary
2939
- * conversion, the transfer-sequence member; any non-empty transfer
2940
- * list throws DataCloneError). dyn.cloneMissing is the zero-argument
2941
- * call: always throws Node's TypeError [ERR_MISSING_ARGS] with Node's
2942
- * own (verbatim, doubly-wrapped) message. */
2943
- | "dyn.structuredClone" | "dyn.cloneMissing"
2944
- /** `new RegExp(pattern, flags?)` (scr_regex.c): a heap regex over the
2945
- * same libregexp engine the literals use. The pattern compiles EAGERLY
2946
- * so an invalid pattern (or an unknown flag letter) throws Node's
2947
- * catchable SyntaxError at construction — Node's message shape with
2948
- * libregexp's detail text (approximate fidelity; e.name exact). An
2949
- * empty pattern stores the spec's "(?:)" source. Both args borrowed
2950
- * strings (the lowering completes an absent flags to ""); result +1.
2951
- * The result TYPE is the regex kind, so the link switch pulls the
2952
- * engine exactly like a literal. */
2953
- | "regex.new" | "regex.resetLastIndex" | "regex.newChecked"
2954
- /** structuredClone with a NON-EMPTY transfer array of static values:
2955
- * nothing static is transferable, so the call always throws Node's
2956
- * catchable DataCloneError ("Found invalid value in transferList.") —
2957
- * lowered directly (the list's values need no dyn representation to
2958
- * fail). */
2959
- | "dyn.cloneTransferFail"
2960
- /** node:events EventEmitter (scr_events_emitter.c, link-gated by
2961
- * moduleUsesEmitter). The receiver of every instance form is a borrowed
2962
- * emitter-hierarchy object (`%EventEmitter` or a user subclass — the
2963
- * backend reinterprets to ScrEmitter*, the identical prefix); event
2964
- * names are borrowed strings (compile-time literals — the frontend
2965
- * fences non-literals and unifies each event's argument tuple program-
2966
- * wide). The chaining forms (on/off/removeAll/setMax) return the
2967
- * receiver +1 typed as its static class, Node's `return this`.
2968
- *
2969
- * emitter.new: `new EventEmitter()` → a +1 bare emitter. emitter.ctor:
2970
- * super() into the prefix of an emitted subclass (borrowed receiver,
2971
- * void — allocation already initialized the prefix). emitter.on:
2972
- * (recv, name, cb /moves/, once, prepend) — the backend synthesizes the
2973
- * per-signature va_list invoke adapter from the cb's func type.
2974
- * emitter.emit: (recv, name, ...tuple) — VARIADIC, the one libCall
2975
- * whose arg count exceeds its signature; args are borrowed, result is
2976
- * the had-listeners bool. emitter.emitError: emit('error', err) —
2977
- * throws err when unhandled. count/countFn/names/listeners/getMax/
2978
- * setMax/setDefaultMax/getDefaultMax are the introspection surface. */
2979
- | "emitter.new" | "emitter.ctor" | "emitter.on" | "emitter.off" | "emitter.checkListener" | "emitter.onDyn" | "emitter.onFlex" | "emitter.offDyn" | "emitter.removeAll" | "emitter.emit" | "emitter.emitFlex" | "emitter.emitError" | "emitter.count" | "emitter.countFn" | "emitter.countDyn" | "emitter.names" | "emitter.listeners" | "emitter.setMax" | "emitter.getMax"
2980
- /** Stream-'data' registration twins of emitter.on/onDyn (same args):
2981
- * chosen at registration sites whose receiver is stream-rooted, so the
2982
- * backend emits DATA thunks — the runtime's 'data' emission carries
2983
- * BOTH payload slots (bytes, string; exactly one non-NULL — encoded
2984
- * streams deliver strings), and the thunk unwraps the listener's
2985
- * declared side (typed) or boxes by tag (dyn). emitter.emitData is the
2986
- * user-emit form: (recv, name, chunk) with a bytes OR string chunk. */
2987
- | "emitter.onData" | "emitter.onDataDyn" | "emitter.emitData" | "emitter.setDefaultMax" | "emitter.getDefaultMax"
2988
- /** node:stream (scr_stream.c, link-gated by moduleUsesStream — which
2989
- * implies the emitter unit: stream events dispatch through the embedded
2990
- * ScrEmitter registry). Receivers are borrowed stream-class objects
2991
- * (`%Readable`/`%Writable`/`%Duplex`/`%Transform`/`%PassThrough` — one
2992
- * runtime layout, reinterpreted by side).
2993
- *
2994
- * Constructors (`readable.new` et al): args are [hwmR, hwmW, flags]
2995
- * followed by the PRESENT user callbacks in canonical order (read,
2996
- * write, final, destroy, transform, flush — the flags f64 is a bitmask
2997
- * naming which follow; absent ones emit NULL). Every callback closure
2998
- * MOVES and carries a leading `this` param (the stream), invoked
2999
- * through compiler-emitted adapters. Results are +1.
3000
- *
3001
- * readable.push / readable.pushStr / readable.pushNull: Node's push —
3002
- * buffers or delivers (bytes chunk borrowed; string converted utf8);
3003
- * returns the below-hwm answer. readable.read: (recv, size — -1 for
3004
- * absent) → Buffer|null union. pause/resume return recv +1 (`this`);
3005
- * isPaused answers the flag. readable.pipe: (recv, dst, end) → dst +1,
3006
- * fires 'pipe' on dst; readable.unpipe (recv[, dst]) → recv +1.
3007
- * writable.write/writeStr: (recv, chunk[, cb]) → below-hwm bool (cb
3008
- * MOVES when present, called after the user write completes).
3009
- * writable.end: (recv, flags[, chunk][, cb]) → recv +1. cork/uncork are
3010
- * void. stream.destroy/destroyErr: (recv[, err]) → recv +1.
3011
- * stream.prop: (recv, name-literal) → the flag/number the name asks
3012
- * for; stream.errored → Error|null union; readable.flowing →
3013
- * bool|null union. All may leave a listener's exception pending
3014
- * (dispatch runs user code synchronously, like emit). */
3015
- | "readable.new" | "writable.new" | "duplex.new" | "transform.new" | "passthrough.new"
3016
- /** Subclass initialization (`super(options?)` in a user `extends
3017
- * Readable` constructor): same tail as the `.new` forms, prefixed with
3018
- * the BORROWED receiver (the emitted subclass allocation — vtable and
3019
- * display name stamped, state NULL until here). Overridden underscore
3020
- * methods arrive as synthesized wrapper closures dispatching through
3021
- * the vtable. Void result. */
3022
- | "readable.init" | "writable.init" | "duplex.init" | "transform.init" | "passthrough.init"
3023
- /** The dyn-options twins (a checked-dynamic options record — the JS
3024
- * lane's `super(options)` forwarding and `new Readable(dynVar)`): the
3025
- * option walk runs at RUNTIME with Node's reading rules. newDyn:
3026
- * (optsDyn) → the fresh stream; initDyn: (recv, optsDyn, flags,
3027
- * ...fallback wrapper closures in canonical order — the flags literal
3028
- * names which ride, exactly the .init callback ABI). MAY THROW (a
3029
- * consumed-but-unlowered option is the compile fence's runtime twin). */
3030
- /** stream.finished(s, cb) — the callback form: the watcher fires once
3031
- * at the terminal point with the finish status; the result is the +1
3032
- * cleanup closure. stream.pipeline(count, s1..sn, cb): chains pipes,
3033
- * propagates the first error by destroying the rest, calls cb after the
3034
- * last 'close'; answers the destination +1. The Dyn twins take the
3035
- * callback as a checked-dynamic VALUE (mustCall wrappers). */
3036
- | "stream.finished" | "stream.finishedDyn" | "stream.pipeline" | "stream.pipelineDyn"
3037
- /** node:stream/promises — the promise forms over the same machinery:
3038
- * sp.finished: (s) → a pending void promise the terminal watcher
3039
- * settles; sp.pipeline: (count, s1..sn) → the callback pipeline's
3040
- * chaining/destroyer semantics settling a void promise (fulfilled on a
3041
- * clean finish, rejected with the finish status otherwise). */
3042
- | "sp.finished" | "sp.pipeline"
3043
- /** node:stream/consumers — the promise consumers over the readable
3044
- * machinery: (s) → a pending promise settled at the terminal point
3045
- * with the accumulated result (sc.text: the utf8 decode, sc.json: the
3046
- * parsed dyn — malformed input rejects with the parse's SyntaxError,
3047
- * sc.buffer: the concatenated bytes) or rejected with the stream's
3048
- * error / ERR_STREAM_PREMATURE_CLOSE. */
3049
- | "sc.text" | "sc.json" | "sc.buffer" | "readable.newDyn" | "writable.newDyn" | "duplex.newDyn" | "transform.newDyn" | "passthrough.newDyn" | "readable.initDyn" | "writable.initDyn" | "duplex.initDyn" | "transform.initDyn" | "passthrough.initDyn" | "readable.push" | "readable.pushStr" | "readable.pushNull" | "readable.pushU" | "readable.pushDyn" | "readable.unshift" | "readable.unshiftStr" | "readable.read" | "readable.readDyn" | "stream.onDyn" | "readable.pause" | "readable.resume" | "readable.setEncoding"
3050
- /** push(chunk, enc) with a literal non-utf8 encoding, and the
3051
- * defaultEncoding option's push side (how push(string) decodes —
3052
- * Buffer.from(chunk, enc)); both carry the CANONICAL literal. */
3053
- | "readable.pushStrEnc" | "readable.pushEncoding"
3054
- /** for-await over a readable (the desugared loop's per-pass promise):
3055
- * +1 promise of the next chunk — buffered content, the EOF sentinel
3056
- * (empty Buffer / dyn undefined), or a rejection with the stream's
3057
- * error. The Dyn twin boxes chunks by runtime tag (the JS lane).
3058
- * readable.fromArr is Readable.from(array): a fully-seeded object-
3059
- * entry stream (one whole chunk per element; strings per the flag). */
3060
- | "readable.nextChunk" | "readable.nextChunkDyn" | "readable.fromArr" | "readable.isPaused" | "readable.pipe" | "readable.unpipe" | "readable.flowing" | "writable.write" | "writable.writeStr" | "writable.writeU" | "writable.writeDyn" | "writable.end" | "writable.cork" | "writable.uncork" | "stream.destroy" | "stream.destroyErr"
3061
- /** AsyncIteratorClose for Readable[Symbol.asyncIterator](): destroy with
3062
- * Node's AbortError/ABORT_ERR payload while the iterator's internal error
3063
- * consumer prevents an unhandled-error crash. */
3064
- | "stream.iteratorClose" | "stream.prop" | "stream.errored"
3065
- /** The underscore-method assignment surface (`r._read = fn` after
3066
- * construction — Node's own-property shadow of the prototype method):
3067
- * args [stream receiver (borrowed), callback closure (+1 moves)]. The
3068
- * runtime slot the matching option callback fills swaps its closure
3069
- * and invoke thunk; the next dispatch uses it (Node's timing). The
3070
- * setters themselves never throw. */
3071
- | "stream.setRead" | "stream.setWrite" | "stream.setFinal" | "stream.setDestroy" | "stream.setTransform" | "stream.setFlush"
3072
- /** NodeJS.ErrnoException's `.code` read: borrowed error-hierarchy
3073
- * receiver → the interned `string | undefined` union (type-directed
3074
- * construction in the backend, the process.envGet pattern) — the errno
3075
- * name where a throw site stamped one (fs, exec spawn/timeout,
3076
- * process.kill, the spawn 'error' event), the undefined arm everywhere
3077
- * else. Never throws. */
3078
- | "error.code"
3079
- /** node:assert (scr_assert.c; assert.match in scr_regex.c — every call
3080
- * site carries a regex value, so the regex link switch is already on).
3081
- * Failures throw a catchable AssertionError — a runtime %Error whose
3082
- * name is "AssertionError" and whose code slot is "ERR_ASSERTION" — so
3083
- * `instanceof Error`, `.name`, `.message`, and `.code` all answer like
3084
- * Node's. Generated messages are Node's assertion_error.js scalar forms
3085
- * byte-exactly (the short `a !== b` form, the stacked `+ actual
3086
- * - expected` diff with the string `^` indicator, the inline-vs-block
3087
- * not-equal split); composite deep failures carry the header line
3088
- * without the rendered inspect diff (documented divergence).
3089
- *
3090
- * assert.ok: (pass, message) — the frontend computed the truthiness AND
3091
- * the full message (the user's, or the compile-time source-text form —
3092
- * assert.fail lowers here too with pass=false). assert.eqF64/eqBigInt/
3093
- * eqStr/eqBool: (a, b, negated, deep, msg, hasMsg) — Object.is comparison,
3094
- * covering strictEqual/notStrictEqual and the scalar deepStrictEqual
3095
- * pair; msg is a typed dummy ("" literal) when hasMsg is false (Node
3096
- * distinguishes an omitted message from an empty one per operator).
3097
- * assert.deepResult: (equal, negated, msg, hasMsg) — the verdict of a
3098
- * frontend-synthesized structural comparison, turned into Node's throw.
3099
- * assert.sameValue: Object.is over doubles (the deep-equal helpers'
3100
- * number leaf; never throws). assert.match: (s, regex, negated, msg,
3101
- * hasMsg) — a fresh exec from index 0. assert.throwsNone: (rejection,
3102
- * ename, hasEname, msg, hasMsg) — the "Missing expected
3103
- * exception|rejection" throw of assert.throws/rejects whose callback
3104
- * returned (fulfilled) normally, with Node's ` (${expected.name})`
3105
- * detail when the expected class or shape carries a name.
3106
- * assert.throwsMismatch: (expectedName, error) — the wrong-class throw
3107
- * of the assert.throws(fn, ErrorClass) form. assert.eqSym:
3108
- * (a, b, negated, deep, msg, hasMsg) — strict equality over symbol
3109
- * values, pointer identity with v24's "Symbol(desc)" stacked-diff
3110
- * messages (scr_symbol.c, the assert.match pattern — symbol-typed
3111
- * slots already flip the symbol link switch). assert.eqDyn:
3112
- * (a, b, negated, deep, msg, hasMsg) — the whole quartet over
3113
- * checked-dynamic operands (both slots dyn; the frontend boxes a
3114
- * static side with dynFrom first): SameValue for the strict pair over
3115
- * the dyn kinds (boxed-closure identity for functions), the structural
3116
- * dyn walk for the deep pair, with assertion_error.js's messages —
3117
- * scalar forms byte-exact, composites rendered compact:false/sorted
3118
- * through the checked-dynamic tree and diffed with the real myers line printer.
3119
- *
3120
- * The assert.throws(fn, {name/code/message}) shape check
3121
- * (expectedException over the static error surface): shapeBegin
3122
- * stashes the caught error, shapeStr/shapeRe add one expected key each
3123
- * (key ids 0 code / 1 message / 2 name; shapeRe lives in scr_regex.c —
3124
- * its regex argument flips the regex link switch — and tests eagerly
3125
- * so scr_assert.c stays libregexp-free), then shapeEnd throws Node's
3126
- * deep-equal Comparison diff BYTE-EXACTLY (the bounded key set makes
3127
- * the rendering enumerable) or the custom message.
3128
- * assert.throwsRegex: (regex, error, msg, hasMsg) — the
3129
- * assert.throws(fn, /re/) check over String(error), Node's
3130
- * regex-mismatch message. assert.regexErrTest: doesNotReject's silent
3131
- * regex predicate over String(error) (never throws).
3132
- * assert.unwantedRejection: (error, msg, hasMsg) — doesNotReject's
3133
- * "Got unwanted rejection" throw.
3134
- * assert.ifErrorErr/F64/Str/Bool: assert.ifError's per-type throws
3135
- * ("ifError got unwanted exception: " + the error's message/name or
3136
- * the value's inspection) — the frontend routes null/undefined to a
3137
- * no-op and everything else here (Node throws for falsy values too).
3138
- * All arguments are borrowed. */
3139
- | "assert.ok" | "assert.eqF64" | "assert.eqBigInt" | "assert.eqStr" | "assert.eqBool" | "assert.eqSym" | "assert.eqDyn" | "assert.looseResult" | "assert.deepResult" | "assert.sameValue" | "assert.deqEnter" | "assert.deqLeave" | "assert.match" | "assert.throwsNone" | "assert.throwsMismatch" | "assert.throwsRegex" | "assert.shapeBegin" | "assert.shapeStr" | "assert.shapeRe" | "assert.shapeEnd" | "assert.regexErrTest" | "assert.unwantedRejection" | "assert.unwantedError" | "assert.noErrorPredicate" | "assert.regexDynTest"
3140
- /** Node's expectsError over an error-INSTANCE expected (assert.throws/
3141
- * rejects second argument): walk the expected dyn error's keys (name,
3142
- * message, code — the %error marker skipped) and deep-compare each
3143
- * against the caught value's; a mismatch throws the deep-equal
3144
- * AssertionError (scr_assert.c). MAY THROW by design. */
3145
- | "assert.expectsErrDyn" | "assert.ifErrorErr" | "assert.ifErrorF64" | "assert.ifErrorStr" | "assert.ifErrorBool" | "assert.ifErrorDyn" | "assert.refEqBytes" | "assert.refEqFn" | "assert.bytesDeepEq"
3146
- /** util.inspect (scr_inspect.c — its own link switch, moduleUsesInspect):
3147
- * the runtime half of the static rendering. Scalar formatters return +1
3148
- * strings (insp.f64: JS ToString except -0; insp.str: the quoting
3149
- * ladder + line splitting; insp.regex: /source/flags; insp.buffer:
3150
- * <Buffer aa ..>). insp.error renders the STACKLESS [Name: message]
3151
- * form with the code slot as its one property. insp.dyn walks the
3152
- * checked-dynamic tree entirely in the runtime (its shape lives in the
3153
- * value); insp.dynS is format's %s twin (dyn strings pass verbatim).
3154
- * insp.jsval ([value, recurse, depth], --dynamic only) renders the
3155
- * island scalars and THROWS a catchable TypeError on composites (the
3156
- * may-throw seed set). begin/entry/moreItems/end drive the frame
3157
- * engine from the compiler-synthesized per-type traversal helpers
3158
- * (%util.insp.N — the deepStrictEqual precedent). */
3159
- | "insp.f64"
3160
- /** util.format %j over a checked-dynamic argument: the runtime dyn
3161
- * walk (JS-exact stringify; root undefined/function prints
3162
- * "undefined"; a handle in the tree throws the loud fence). */
3163
- | "insp.jsonDyn" | "insp.str" | "insp.regex" | "insp.buffer" | "insp.error" | "insp.dyn" | "insp.dynS" | "insp.jsval" | "insp.begin" | "insp.entry" | "insp.key" | "insp.moreItems" | "insp.circCheck" | "insp.seenPush" | "insp.refWrap" | "insp.circular" | "insp.end"
3164
- /** node:string_decoder's utf8 StringDecoder (scr_string.c): the decoder
3165
- * value is a one-field record whose f64 PACKS the pending partial
3166
- * sequence (count + up to 3 raw bytes — Node buffers at most 3 for
3167
- * every encoding); the frontend's interned %strdec helpers thread it,
3168
- * with the decoder's CANONICAL encoding name first, through these pure
3169
- * functions. write: (enc, pending, chunk) → the decoded complete
3170
- * prefix of pending+chunk (+1); next: (enc, pending, chunk) → the
3171
- * packed NEW pending; end: (enc, pending) → the buffered partial's
3172
- * flush (+1). Node-exact per encoding (oracle-pinned); none throws. */
3173
- | "strdec.write" | "strdec.next" | "strdec.end"
3174
- /** node:readline's question/close slice (scr_readline.c, linked under
3175
- * the events gate — these fns imply moduleUsesProcessEvents). The
3176
- * interface value is an f64 handle (the Timeout-id precedent).
3177
- * rl.create: [] → f64 — createInterface({ input: process.stdin,
3178
- * output: process.stdout }), registering the unit's shared stdin
3179
- * consumer (an OPEN interface keeps the loop alive until close/EOF,
3180
- * Node's semantics). rl.question: [handle, query, cb] — writes the
3181
- * query to stdout (Node writes under pipes too) and delivers the next
3182
- * line's text through a backend-picked adapter (zero-param or
3183
- * (answer: string)); THROWS Node's "readline was closed" on a closed
3184
- * interface (may-throw). rl.close: [handle] — fires 'close' listeners
3185
- * SYNCHRONOUSLY (Node's inline emit) and detaches the consumer (the
3186
- * loop stops waiting on fd 0). rl.onClose: [handle, cb] — a zero-arg
3187
- * listener (moves); stdin EOF closes every open interface with the
3188
- * buffered partial line DISCARDED, like Node. */
3189
- | "rl.create" | "rl.question" | "rl.close" | "rl.onClose"
3190
- /** node:timers/promises — the promisified pair (scr_async.c, beside
3191
- * the timer heap they ride): tp.setTimeout: [ms] → a pending void
3192
- * promise a one-shot heap timer fulfills (the loop's timer phase, FIFO
3193
- * against equal deadlines like Node); tp.setImmediate: [] → the same
3194
- * through the immediate queue (fires before due timers of later loop
3195
- * turns, Node's check phase). Neither throws. */
3196
- | "tp.setTimeout" | "tp.setImmediate"
3197
- /** node:diagnostics_channel (scr_dc.c, linked when any dc.* appears —
3198
- * the zlib gating precedent): a process-global name→channel registry;
3199
- * channel values are f64 handles (type-mapper.ts maps Channel to F64, the
3200
- * readline.Interface pattern). Subscribers are dyn function values —
3201
- * identity-compared by unsubscribe, called (message, name) by publish
3202
- * over a SNAPSHOT of the list (a subscriber unsubscribing itself
3203
- * mid-publish still lets its siblings fire, Node's behavior). dc.publish
3204
- * MAY THROW: a subscriber's throw propagates out of publish (catchable
3205
- * there) where Node routes it to triggerUncaughtException — the
3206
- * documented divergence. subscribe/unsubscribe throw Node's
3207
- * ERR_INVALID_ARG_TYPE TypeError for non-function subscribers. */
3208
- | "dc.channel" | "dc.subscribe" | "dc.unsubscribe" | "dc.hasSubscribers" | "dc.publish" | "dc.chanSubscribe" | "dc.chanUnsubscribe" | "dc.chanHasSubscribers" | "dc.chanName"
3209
- /** TracingChannel (dc.tracingChannel): a registry entry of the five
3210
- * event channels, an f64 handle like Channel (type-mapper.ts). tcSubscribe/
3211
- * tcUnsubscribe walk a dyn handlers object's five event keys (truthy
3212
- * non-function slots throw the per-channel ERR_INVALID_ARG_TYPE);
3213
- * tcTraceSync/tcTraceCallback/tcTracePromise run Node's publish choreography in C over
3214
- * dyn values (fn, ctx, thisArg, args-array) with thisArg bound as the
3215
- * ambient receiver — the traced call's throw and any subscriber throw
3216
- * both propagate (MAY THROW). tcTraceCallback wraps args[position] in a
3217
- * native error/result + asyncStart/asyncEnd publisher and throws Node's
3218
- * TypeError when that slot is not callable. tracingChannelOf is the
3219
- * five-Channel collection form of the constructor. */
3220
- /** setImmediate as a first-class dyn value (scr_async.c): a minted dyn
3221
- * callable scheduling args[0](args[1..]) on the immediate queue — the
3222
- * Node-suite traceCallback shape (`traceCallback(setImmediate, ...)`).
3223
- * Calling it validates the callback (the dyn call machinery); minting
3224
- * never throws. */
3225
- | "timers.setImmediateFnValue"
3226
- /** `new Promise(setImmediate)` (the Node-suite early-exit shape): a
3227
- * fresh promise an immediate fulfills with the undefined dyn value —
3228
- * the executor IS setImmediate, so resolve rides the immediate queue
3229
- * (scr_async.c). Never throws. */
3230
- | "timers.immediatePromise" | "dc.tracingChannel" | "dc.tracingChannelOf" | "dc.tcChannel" | "dc.tcHasSubscribers" | "dc.tcSubscribe" | "dc.tcUnsubscribe" | "dc.tcTraceSync" | "dc.tcTraceCallback"
3231
- /** tracePromise (scr_dc.c): start publish, the traced call, a wrap of
3232
- * non-promise results, the end publish, and a REACTION FIBER that
3233
- * awaits the traced promise and publishes asyncStart/asyncEnd (error
3234
- * first on rejection) before settling the returned promise<dyn> with
3235
- * the passed-through outcome. MAY THROW (the traced call and the
3236
- * synchronous publishes). */
3237
- | "dc.tcTracePromise"
3238
- /** AsyncLocalStorage (node:async_hooks — scr_async.c): stores are f64
3239
- * handles; contexts are immutable fiber-carried snapshots (spawned
3240
- * fibers inherit the spawner's — Node's init-time capture). run/exit
3241
- * enter (or clear) the store, call the dyn function with forwarded
3242
- * arguments, and restore (the finally); getStore answers the current
3243
- * dyn value or undefined; enterWith installs with no restore point.
3244
- * run/exit MAY THROW (the callback's own throws propagate). */
3245
- /** `await v` over a checked-dynamic VALUE (scr_async.c): a dyn promise
3246
- * adopts (rejections re-throw — MAY THROW), anything else takes JS's
3247
- * one-microtask non-thenable await and answers itself. Only emitted
3248
- * inside async bodies (the frontend's isAsync gate). */
3249
- | "async.awaitDyn"
3250
- /** The bare one-microtask hop (scr_await_hop): `await v` over a typed
3251
- * NON-promise value — JS awaits non-thenables through exactly one
3252
- * microtask turn and yields the value itself. Never throws. */
3253
- | "async.hop" | "als.new" | "als.get" | "als.run" | "als.exitRun" | "als.enterWith" | "als.disable"
3254
- /** Channel.bindStore/unbindStore/runStores (scr_dc.c): the
3255
- * AsyncLocalStorage integration — set-semantics bindings per store,
3256
- * runStores entering every bound store with transform(data) around the
3257
- * publish and the callback (MAY THROW: transforms, subscribers, and
3258
- * the callback all run). */
3259
- | "dc.chanBindStore" | "dc.chanUnbindStore" | "dc.chanRunStores"
3260
- /** process warnings (scr_lib.c): onWarning/offWarning register dyn
3261
- * listeners; emitWarning applies Node's full argument grammar over the
3262
- * call's dyn argument vector (ERR_INVALID_ARG_TYPE TypeErrors — MAY
3263
- * THROW; a listener throw propagates too) and always prints Node's
3264
- * stderr report. Emission is synchronous (SEMANTICS.md). */
3265
- | "process.onWarning" | "process.offWarning" | "process.emitWarning"
3266
- /** process.on/once('unhandledRejection', fn): registers a dyn listener
3267
- * the checkpoint report dispatches per never-observed rejection —
3268
- * (reason, promise) — instead of printing and exiting 1 (scr_async.c).
3269
- * The bool second arg is `once` (auto-removed after one delivery,
3270
- * Node's once); off/removeListener remove by closure identity, the
3271
- * offWarning stance. Throws Node's ERR_INVALID_ARG_TYPE on a
3272
- * non-function. */
3273
- /** Uncaught exception handlers and monitors: [callback dyn, once, monitor]. */
3274
- | "process.onUncaughtException" | "process.offUncaughtException" | "process.onUnhandledRejection" | "process.offUnhandledRejection"
3275
- /** process.on/once/off('rejectionHandled', fn): the sibling registry.
3276
- * A handler attached after unhandledRejection delivery fires the event
3277
- * once. Dispatch is synchronous at the attach, with the promise,
3278
- * Node's payload. */
3279
- | "process.onRejectionHandled" | "process.offRejectionHandled"
3280
- /** The Number statics with a static C implementation (scr_lib.c): one
3281
- * f64 arg → bool, JS-exact BY CONSTRUCTION — Number.isFinite/isNaN/
3282
- * isInteger/isSafeInteger never coerce, and the frontend routes only
3283
- * f64-typed arguments here (other static types fence). None throws. */
3284
- | "number.isFinite" | "number.isNaN" | "number.isInteger" | "number.isSafeInteger"
3285
- /** Date (scr_lib.c). Values are TimeClip'd epoch-millisecond scalars:
3286
- * construction/store/pass/getters are exact while identity and mutation
3287
- * remain fenced. date.now is Node's integer milliseconds since epoch;
3288
- * date.toISOString formats one raw f64 millisecond time value and
3289
- * date.toISOStringValue formats a stored Date, both with Node's rules (UTC,
3290
- * YYYY-MM-DDTHH:mm:ss.sssZ, expanded ±YYYYYY years outside 0–9999,
3291
- * ToInteger truncation of fractional ms) and THROWS Node's "Invalid
3292
- * time value" RangeError on NaN / out-of-range input (may-throw seed).
3293
- * Results: f64 / owned (+1) string. */
3294
- | "date.now" | "date.newNow" | "date.newMs" | "date.newString"
3295
- /** Date.parse(dateString), with its own reach witness for exact fences. */
3296
- | "date.parse" | "date.getTime" | "date.valueOf" | "date.toISOString" | "date.toISOStringValue" | "date.getFullYear" | "date.getUTCFullYear" | "date.getMonth" | "date.getUTCMonth" | "date.getDate" | "date.getUTCDate" | "date.getDay" | "date.getUTCDay" | "date.getHours" | "date.getUTCHours" | "date.getMinutes" | "date.getUTCMinutes" | "date.getSeconds" | "date.getUTCSeconds" | "date.getMilliseconds" | "date.getUTCMilliseconds" | "date.getTimezoneOffset"
3297
- /** The composed `new Date(dateString).getTime()` read: one borrowed
3298
- * string, f64 milliseconds since epoch. The parsed grammar is BOUNDED
3299
- * (documented divergence — V8's parser accepts far more): the ASN.1
3300
- * validity shape X509Certificate.validFrom/validTo answer ("Jul 1
3301
- * 00:00:00 2026 GMT" — the portless cert-expiry read), and ECMA's own
3302
- * date-time string format (YYYY-MM-DD[THH:mm[:ss[.sss]]][Z|±HH:MM] —
3303
- * date-only forms are UTC, exactly the spec). Anything else is NaN,
3304
- * Node's invalid-date getTime. Never throws. */
3305
- | "date.parseGetTime"
3306
- /** `Date.UTC(...)` — seven f64 arguments (the frontend completes the
3307
- * spec's defaults for omitted trailing parts: month 0, date 1, time
3308
- * parts 0), the spec's MakeDay/MakeTime/TimeClip exactly: 0–99 years
3309
- * map to 1900+year, out-of-range months/dates roll over, non-finite
3310
- * parts and out-of-range results answer NaN. Never throws. */
3311
- | "date.utc"
3312
- /** The fs option forms and friends (scr_lib.c), all throwing catchably
3313
- * like the rest of sync fs. mkdirRecursiveSync is Node's recursive
3314
- * algorithm (try mkdir, EEXIST-dir is fine, ENOENT creates the parent
3315
- * first — errors report Node's errno at Node's path, EEXIST at a file
3316
- * target, ENOTDIR at the full path past a file); the first-created-dir
3317
- * return value has no lowering (statement position only, frontend-
3318
- * fenced). rmOptsSync is rmSync with (recursive, force) bools: force
3319
- * swallows ENOENT, recursive removes trees post-order, a directory
3320
- * without recursive throws the EISDIR-worded error (divergence 13's
3321
- * wording note). mkdtempSync appends the six X's and returns the
3322
- * created path (+1). accessSync takes the F_OK/R_OK/W_OK/X_OK bits as
3323
- * one f64 (the frontend bakes fs.constants.* as literals and completes
3324
- * an omitted mode to 0). readFdSync/readFdSyncBytes are the
3325
- * readFileSync(fd[, "utf8"]) forms — a read(2) loop to EOF on the fd
3326
- * (the stdin path); errors carry Node's no-path message shape. */
3327
- | "fs.mkdirRecursiveSync" | "fs.rmOptsSync"
3328
- /** rmOptsSync's maxRetries/retryDelay form (path, recursive, force,
3329
- * maxRetries, retryDelay): Node's linear-backoff retry on
3330
- * EBUSY/EMFILE/ENFILE/ENOTEMPTY/EPERM — the tmpdir-harness shape
3331
- * rmSync(p, { maxRetries: 3, recursive: true, force: true }). */
3332
- | "fs.rmRetrySync" | "fs.mkdtempSync" | "fs.accessSync" | "fs.readFdSync" | "fs.readFdSyncBytes"
3333
- /** isatty(3) over an fd literal (0/1/2 — process.stdin/stdout/stderr
3334
- * .isTTY reads). A real boolean: false where Node's non-TTY streams
3335
- * expose undefined (documented divergence). Never throws. */
3336
- | "process.isTTY"
3337
- /** process.stdin.destroy(): a deliberate no-op (no stream machinery
3338
- * exists to tear down; documented in SEMANTICS.md). */
3339
- | "process.stdinDestroy"
3340
- /** process.stdin.setRawMode(mode) — one borrowed bool arg, void. On a
3341
- * TTY stdin: termios raw mode on/off (libuv's UV_TTY_MODE_RAW flag set,
3342
- * the mode Node's setRawMode(true) applies; false restores the entry
3343
- * state). On a NON-TTY stdin Node's process.stdin has no such method at
3344
- * all, so the call throws Node's exact catchable TypeError
3345
- * ("process.stdin.setRawMode is not a function") — the may-throw seed
3346
- * carries it. */
3347
- | "process.stdinSetRawMode"
3348
- /** Terminal width over an fd literal (1/2 — process.stdout/stderr
3349
- * .columns): ioctl(TIOCGWINSZ). The result is the module's interned
3350
- * `number | undefined` union — a non-TTY stream (or an ioctl refusal)
3351
- * yields the undefined arm, exactly Node's missing `.columns`. Never
3352
- * throws. */
3353
- | "process.columns"
3354
- /** Terminal height, with the same fd and optional-number contract. */
3355
- | "process.rows"
3356
- /** fromCharCode takes one packed f64[] or bytes arg and builds a string
3357
- * from UTF-16 code units. Adjacent surrogate pairs combine; lone
3358
- * surrogates follow the runtime's replacement policy. */
3359
- | "string.fromCharCode"
3360
- /** Numeric code points, with catchable RangeError for non-integers or
3361
- * values outside 0..0x10ffff. Uses the same UTF-8 surrogate policy. */
3362
- | "string.fromCodePoint"
3363
- /** lastIndexOf returns the last UTF-16 start index, or -1. The two-arg
3364
- * form searches at or before its numeric position; NaN starts at the end.
3365
- * String arguments are borrowed and neither form throws. */
3366
- | "string.lastIndexOf" | "string.lastIndexOfFrom"
3367
- /** String.raw(template, ...subs): the raw literals array (a string[]
3368
- * read off the template record) interleaved with the PRE-STRINGIFIED
3369
- * substitutions (the frontend applies the static ToString and packs
3370
- * them into one string[] literal) — extra substitutions drop, missing
3371
- * ones skip, the spec's loop exactly (scr_array.c). Borrowed args;
3372
- * +1 string; never throws. */
3373
- | "string.raw"
3374
- /** WHATWG TextDecoder.decode over u8 bytes (scr_bytes.c): utf-8 with
3375
- * default options — the same maximal-subpart replacement decode as
3376
- * Buffer.toString("utf8"), with the leading BOM stripped (the one
3377
- * behavioral difference; ignoreBOM defaults to false). Inline calls
3378
- * lower directly; stored decoder records dispatch by encoding id.
3379
- * TextEncoder.encode needs no libFn: its matching forms
3380
- * lower to buffer.fromStr(s, "utf8") (identical bytes — ScrStr storage
3381
- * is well-formed UTF-8). Borrowed arg; owned (+1) string; never throws. */
3382
- | "text.decode" | "bytes.bufferSource" | "text.decodeBufferSource" | "text.decodeOptions" | "text.decodeStream" | "text.decodeLegacyOptions"
3383
- /** TextDecoder.decode for a compile-time non-UTF-8 WHATWG label. The
3384
- * second f64 is the frontend-owned encoding id consumed by scr_bytes.c;
3385
- * label aliases/case/ASCII whitespace are canonicalized before IR. The
3386
- * mapping tables are generated from the pinned Node 24 oracle, keeping
3387
- * output portable without an ICU/iconv dependency. Borrowed args; owned
3388
- * (+1) string; never throws. */
3389
- | "text.decodeLegacy" | "text.decoderEncoding" | "text.decoderName" | "text.encodeInto" | "buffer.isAscii" | "buffer.isUtf8" | "buffer.transcode"
3390
- /** The wider sync fs slice (scr_lib.c), all throwing catchably with
3391
- * Node's errno message shapes and `.code` stamped like the rest of
3392
- * sync fs. unlink/chmod/chown wrap the syscalls 1:1 (Node reports the
3393
- * syscall's own name). copyFileSync copies contents into a fresh (or
3394
- * truncated) destination carrying the SOURCE's mode (libuv's
3395
- * uv_fs_copyfile behavior); its errors carry BOTH paths — Node's
3396
- * "copyfile 'src' -> 'dest'". lstatSync is statSync without following
3397
- * a trailing symlink (Node reports lstat); stats.isSymbolicLink /
3398
- * stats.dev / ino / blocks / nlink / atimeMs / mtimeMs / ctimeMs are pure reads on the widened
3399
- * snapshot (blocks is allocated 512-byte units; the times are milliseconds
3400
- * with their sub-second fractions, Node's arithmetic).
3401
- * writeFileModeSync is writeFileSync(path, data, { mode }): the mode
3402
- * applies at CREATION only (open(2) with O_CREAT, umask applying),
3403
- * exactly Node — an existing file keeps its permissions. mkdirModeSync
3404
- * / mkdirRecursiveModeSync are the mkdirSync option forms with an
3405
- * explicit mode (the recursive walk passes it to every directory it
3406
- * creates, like Node's). */
3407
- | "fs.unlinkSync" | "fs.chmodSync" | "fs.chownSync" | "fs.copyFileSync"
3408
- /** renameSync is the direct two-path syscall wrapper. renameCb defers
3409
- * the operation to the loop and fires a program-shaped Error | null
3410
- * callback through a backend-emitted adapter. */
3411
- | "fs.renameSync" | "fs.renameCb" | "fs.lstatSync" | "fs.fstatSync" | "fs.fchmodSync" | "fs.fsyncSync" | "fs.fdatasyncSync" | "fs.ftruncateSync" | "fs.utimesSync" | "fs.futimesSync" | "fs.lutimesSync" | "fs.readvSync" | "fs.writevSync" | "fs.linkSync" | "fs.symlinkSync" | "fs.readlinkSync" | "fs.statfsSync" | "fs.readlinkSyncStr" | "fs.readlinkSyncBuffer"
3412
- /** fs.openSync(path, flags) → the raw fd as f64; fs.readSync/fs.writeSync
3413
- * over Buffer windows perform sequential I/O when position is -1 and
3414
- * offset-preserving positioned I/O otherwise; fs.writeStrSync is the
3415
- * utf8 string twin; and fs.closeSync(fd) closes the descriptor. This is
3416
- * the fd slice behind spawn/log-processing forms.
3417
- * flags is Node's string
3418
- * grammar ("r", "w", "a" and the +/x variants; unknown flags throw
3419
- * Node's ERR_INVALID_ARG_VALUE TypeError text). All throw Node-shaped
3420
- * fs errors (openSync ENOENT/EACCES..., readSync EBADF/range errors,
3421
- * closeSync EBADF). */
3422
- | "fs.openSync" | "fs.openNumericSync" | "fs.readSync" | "fs.writeSync" | "fs.writeStrSync" | "fs.closeSync"
3423
- /** fs.watch(path, listener?) → an FSWatcher handle (scr_watch.c —
3424
- * linked, and scr_watch_install() emitted, only when these appear on
3425
- * the IR; moduleUsesFsWatch is the switch). The path opens NOW —
3426
- * failure throws Node's fs error synchronously ("ENOENT: ..., watch
3427
- * 'x'", the polling-fallback catch shape) — and the unit's kqueue
3428
- * (EVFILT_VNODE) delivers "rename"/"change" through the loop's watch
3429
- * hook. The callback (nullable) MOVES in with an adapter per listener
3430
- * shape (zero-param, or the (eventType: string) form — runtime-
3431
- * provided); an open watcher keeps the loop alive until watcher.close()
3432
- * (idempotent, receiver borrowed, statement position only). */
3433
- | "fs.watch" | "fs.watchCb" | "watcher.close"
3434
- /** The composed `new crypto.X509Certificate(data).fingerprint` read
3435
- * (scr_lib.c — no certificate handle exists): the SHA-1 of the DER,
3436
- * uppercase colon-separated, over PEM or raw-DER Buffer input; other
3437
- * inputs throw Node's ERR_OSSL_PEM_NO_START_LINE Error (may-throw). */
3438
- | "crypto.x509Fingerprint" | "crypto.x509FingerprintStr"
3439
- /** The certificate's Validity window (validFrom / validTo reads —
3440
- * scr_lib.c's minimal ASN.1 walk to the TBSCertificate validity
3441
- * SEQUENCE): UTCTime and GeneralizedTime render in Node's exact
3442
- * ASN1_TIME_print shape ("Jul 1 00:00:00 2026 GMT" — %2d space-padded
3443
- * day). Same input contract and PEM error as the fingerprint pair
3444
- * (may-throw). */
3445
- | "crypto.x509ValidFrom" | "crypto.x509ValidFromStr" | "crypto.x509ValidTo" | "crypto.x509ValidToStr" | "stats.isSymbolicLink" | "stats.blocks" | "stats.nlink" | "stats.atimeMs" | "stats.mtimeMs" | "stats.ctimeMs" | "fs.writeFileModeSync" | "fs.mkdirModeSync" | "fs.mkdirRecursiveModeSync"
3446
- /** spawnSync with options (scr_child.c): the cp.spawnSync core plus the
3447
- * option slice portless-class CLIs pass — timeout (killSignal fires at
3448
- * the deadline and the result carries error: ETIMEDOUT + the signal,
3449
- * Node's shape), killSignal (a signal NAME; "" = the SIGTERM default),
3450
- * and per-fd stdio modes (in: 0 /dev/null, 1 ignore, 2 inherit; out/
3451
- * err: 0 capture, 1 ignore → "", 2 inherit → ""). NEVER throws — spawn
3452
- * failure and timeout are data on the result, like Node's error
3453
- * property. spawnRes.signal is the result's termination signal as the
3454
- * call site's `Signals | null` union (null = exited normally or spawn
3455
- * failure), constructed type-directedly like spawnRes.status. */
3456
- | "cp.spawnSyncOpts"
3457
- /** cp.spawnSyncOpts with the stdio carried as a RUNTIME string —
3458
- * "pipe" | "ignore" | "inherit", proven by the call site's TYPE (the
3459
- * defaultRunner idiom `stdio: options?.stdio ?? "pipe"`); the runtime
3460
- * maps the value to the three modes. Args (cmd, argv, timeout,
3461
- * killSignal, stdio). Never throws, like the other spawnSync forms. */
3462
- | "cp.spawnSyncStdioStr" | "spawnRes.signal"
3463
- /** spawn with options (scr_child.c): the cp.spawn core plus PER-SLOT
3464
- * stdio — args are (cmd, argv, inMode, outMode, errMode, outFd, errFd,
3465
- * detached, hasEnv, envPairs, cwd); modes 0 ignore (/dev/null), 1
3466
- * inherit, 2 fd (out/err only — the fd dup2s into the child's slot,
3467
- * Node's stdio fd form; the daemon-log idiom ["ignore", logFd, logFd]).
3468
- * detached is POSIX_SPAWN_SETSID (the child gets its own session and
3469
- * process group, Node's semantics), env is a REPLACEMENT ([k,v,...]
3470
- * pairs like cp.execSync's), cwd ""=inherit. Same event/loop story as
3471
- * cp.spawn. */
3472
- | "cp.spawnOpts"
3473
- /** Runtime options normalized into the native spawn core; unsupported
3474
- * process features retain explicit refusals. (command, args, options). */
3475
- | "cp.spawnDynamic"
3476
- /** Atomics.wait(int32Array, idx, expected, timeoutMs) → "not-equal"
3477
- * when the element differs from `expected`, else a real nanosleep for
3478
- * the timeout and "timed-out" (scr_lib.c). scriptc has no threads —
3479
- * no other agent can ever notify, so for every compilable program this
3480
- * IS the spec's behavior, and "ok" is unreachable; the frontend
3481
- * REQUIRES the timeout argument (an infinite wait here is a certain
3482
- * deadlock, fenced). The SharedArrayBuffer the lib types demand exists
3483
- * only syntactically (new Int32Array(new SharedArrayBuffer(n)) lowers
3484
- * to a plain i32 typed array — sharing is unobservable without
3485
- * threads; SEMANTICS.md documents the stance). Never throws; +1 string
3486
- * result. */
3487
- | "atomics.wait";
3488
1602
  /** Numeric binary ops. The bitwise six (`&`/`|`/`^`/`<<`/`>>`/`>>>`) have
3489
1603
  * JS ToInt32/ToUint32 semantics — operands convert (NaN/±Infinity → 0,
3490
1604
  * truncate, wrap mod 2^32), the operation runs in 32-bit space (shift
@@ -5259,258 +3373,3 @@ export declare function canMarshalIntoIsland(t: IrType, getRecord: (shapeId: str
5259
3373
  * Promise.all arm). Null = outside the domain (the boundary fence). */
5260
3374
  export declare function islandPromisePayloadTag(inner: IrType): "void" | "f64" | "bool" | "string" | "jsval" | "jsvalArr" | null;
5261
3375
  export declare function canExitIslandToType(t: IrType, getRecord: (shapeId: string) => IrRecordShape | undefined, getUnion: (unionId: string) => IrUnionDef | undefined): boolean;
5262
- export interface RuntimeFeatures {
5263
- regex: boolean;
5264
- copying: boolean;
5265
- legacyTextDecoder: boolean;
5266
- fileHandle: boolean;
5267
- fetch: boolean;
5268
- processEvents: boolean;
5269
- emitter: boolean;
5270
- stream: boolean;
5271
- zlib: boolean;
5272
- dc: boolean;
5273
- assert: boolean;
5274
- dynInvoke: boolean;
5275
- dynAsync: boolean;
5276
- inspect: boolean;
5277
- childProcess: boolean;
5278
- net: boolean;
5279
- symbol: boolean;
5280
- bigint: boolean;
5281
- searchParams: boolean;
5282
- qs: boolean;
5283
- parseArgs: boolean;
5284
- fsWatch: boolean;
5285
- nodeTest: boolean;
5286
- dgram: boolean;
5287
- http: boolean;
5288
- http2: boolean;
5289
- tls: boolean;
5290
- tlsCa: boolean;
5291
- }
5292
- /** Inspect types and expressions together in one traversal. This is a fresh
5293
- * snapshot: callers may mutate an IR module between compilation passes. */
5294
- export declare function moduleRuntimeFeatures(mod: IrModule): RuntimeFeatures;
5295
- /** True when the module contains any regex construct — a regexLit /
5296
- * regexIntrinsic node or a regex-typed slot anywhere. This is the link
5297
- * switch that pulls scr_regex.c + the vendored libregexp into the binary
5298
- * (native-toolchain.ts); regex-free programs keep the historical command line. The
5299
- * typed traversal visits type slots as well as executable nodes. */
5300
- export declare function moduleUsesRegex(mod: IrModule): boolean;
5301
- /** True when the module contains an intrinsic whose implementation lives
5302
- * in scr_copying.c. This is the link switch that keeps the optional
5303
- * Array-copying and typed-array bridge TU out of unrelated binaries. */
5304
- export declare function moduleUsesCopying(mod: IrModule): boolean;
5305
- /** True when a non-UTF-8 TextDecoder call survives lowering. This gates the
5306
- * generated legacy mapping tables inside scr_bytes.c; the default UTF-8
5307
- * decoder and unrelated Buffer users keep their prior runtime object. */
5308
- export declare function moduleUsesLegacyTextDecoder(mod: IrModule): boolean;
5309
- /** True when a FileHandle type survives in the module. This is the link
5310
- * switch for scr_file_handle.c; fs/promises.open carries the type inside its
5311
- * promise result even when no handle method is called. */
5312
- export declare function moduleUsesFileHandle(mod: IrModule): boolean;
5313
- /** True when user code lowers static fetch or the embedded npm graph
5314
- * reaches the engine's global fetch — the link switch that pulls scr_fetch.c +
5315
- * its socket/tls/zlib dependencies into the binary (native-toolchain.ts) and has the
5316
- * emitted main call scr_fetch_install. The npm graph records the embedded
5317
- * source fact with a parser + binder, so comments, strings, property names,
5318
- * and local `fetch` bindings do not change the link or target capability.
5319
- * Fetch-free graphs keep their exact historical link lines. */
5320
- export declare function moduleUsesFetch(mod: IrModule): boolean;
5321
- /** True when the module uses the process-events surface — the link switch
5322
- * that pulls scr_events.c into the binary and has the emitted main call
5323
- * scr_events_install (native-toolchain.ts + emitter; the scr_regex/scr_fetch/scr_zlib
5324
- * gating precedent). Event-free programs pay zero bytes and keep their
5325
- * exact link line. Same generic-walk shape as moduleUsesRegex. */
5326
- export declare function moduleUsesProcessEvents(mod: IrModule): boolean;
5327
- /** True when the module uses the node:events EventEmitter surface — the
5328
- * link switch that pulls scr_events_emitter.c into the binary (native-toolchain.ts; the
5329
- * scr_events.c gating precedent, but pure data structure: no install, no
5330
- * loop hooks). Two signals: the `%EventEmitter` class def rides the
5331
- * module (any emitter-typed value or `extends EventEmitter` subclass
5332
- * references it, and the emitted RC/trace helpers call scr_emitter_*),
5333
- * or an emitter.* libCall survived (the defaultMaxListeners statics carry
5334
- * no emitter-typed value). Emitter-free programs pay zero bytes and keep
5335
- * their exact link line. */
5336
- export declare function moduleUsesEmitter(mod: IrModule): boolean;
5337
- /** True when the program touches the node:stream surface (scr_stream.c —
5338
- * the moduleUsesEmitter story: the class defs ride the module whenever a
5339
- * stream-typed value exists, and every stream libCall names its unit).
5340
- * Stream programs always use the emitter unit too — the stream class
5341
- * defs pull `%EventEmitter` through their base chain, so
5342
- * moduleUsesEmitter answers true whenever this does. Stream-free
5343
- * programs pay zero bytes and keep their exact link line. */
5344
- export declare function moduleUsesStream(mod: IrModule): boolean;
5345
- /** True when the embedded npm graph has an edge into `builtin` — the
5346
- * island shim needs the corresponding native bridge linked (zlib's is
5347
- * the first; the emitted main installs it before any island entry). */
5348
- export declare function moduleEmbedsBuiltin(mod: IrModule, builtin: string): boolean;
5349
- /** Embedded module texts at least this long are DEFLATE-compressed into
5350
- * the emitted LLVM (island.ts; each stays plain when deflate does not
5351
- * shrink it) and inflated lazily by the island's module loader at first
5352
- * load. Below it the zlib round trip cannot pay for itself. */
5353
- export declare const NPM_COMPRESS_MIN = 1024;
5354
- /** True when the emitted npm tables will carry compressed module text —
5355
- * the SAME candidate test island.ts compresses by, so index.ts's
5356
- * zlib link switch and emitter.ts's inflater installation stay in
5357
- * lockstep with the emission (a candidate whose deflate happens not to
5358
- * shrink stays plain; the installed inflater is then just unused). */
5359
- export declare function moduleEmbedsCompressedNpm(mod: IrModule): boolean;
5360
- /** True when the module contains any zlib libCall (the static lowering)
5361
- * OR the embedded npm graph imports node:zlib (the island shim) — the
5362
- * link switch that pulls scr_zlib.c + the system libz into the binary
5363
- * (native-toolchain.ts); zlib-free programs keep their exact link line. Same
5364
- * generic-walk shape as moduleUsesRegex: `kind`/`fn` discriminants live
5365
- * only on IR objects. */
5366
- export declare function moduleUsesZlib(mod: IrModule): boolean;
5367
- /** True when the module contains any dc.* libCall — the link switch that
5368
- * pulls scr_dc.c (the diagnostics_channel registry and pub/sub) into the
5369
- * binary (native-toolchain.ts). Channel-free binaries keep their exact size class.
5370
- * Same walk shape as moduleUsesZlib. */
5371
- export declare function moduleUsesDc(mod: IrModule): boolean;
5372
- /** True when the module contains any assert libCall — the link switch
5373
- * that pulls scr_assert.c into the binary (native-toolchain.ts). scr_regex.c calls the
5374
- * assert throw/inspect helpers (assert.match lives there), so the regex
5375
- * switch also pulls scr_assert.c; assert-free, regex-free binaries keep
5376
- * the historical command line and size. Same walk shape as
5377
- * moduleUsesZlib. */
5378
- export declare function moduleUsesAssert(mod: IrModule): boolean;
5379
- /** True when the module contains any dynInvoke node or dyn.defineProps
5380
- * libCall — the link switch that pulls scr_dyn_invoke.c (the prototype-
5381
- * method dispatch on dyn receivers, plus scr_dyn_display and
5382
- * scr_dyn_define_props) into the binary (native-toolchain.ts; the assert gating
5383
- * precedent — dispatch-free binaries keep their exact size class). Same
5384
- * walk shape as moduleUsesZlib. */
5385
- export declare function moduleUsesDynInvoke(mod: IrModule): boolean;
5386
- /** True when the module contains any insp libCall — the link switch that
5387
- * pulls scr_inspect.c into the binary (native-toolchain.ts; the assert gating
5388
- * precedent — inspect-free binaries keep the historical command line and
5389
- * size class). Same walk shape as moduleUsesZlib. */
5390
- /** True when the module needs scr_async_dyn.c — the checked-dynamic
5391
- * async surfaces (dyn-promise then/catch/finally reactions, await of a
5392
- * dyn value, `new Promise(setImmediate)`, AsyncLocalStorage, the
5393
- * unhandledRejection/warning process events). Also pulled by the
5394
- * dynInvoke and dc gates (their TUs call into this one) — native-toolchain.ts. Same
5395
- * walk shape as moduleUsesZlib. */
5396
- export declare function moduleUsesDynAsync(mod: IrModule): boolean;
5397
- export declare function moduleUsesInspect(mod: IrModule): boolean;
5398
- /** True when the module reaches child_process or carries one of its runtime
5399
- * handle/result types. Besides the existing link consequence, this gates the
5400
- * checked-dynamic ChildProcess handle table installed from scr_child.c. */
5401
- export declare function moduleUsesChildProcess(mod: IrModule): boolean;
5402
- /** True when the module contains any net libCall — the link switch that
5403
- * pulls scr_net.c into the binary and has the emitted main call
5404
- * scr_net_install (native-toolchain.ts + emitter; the scr_events gating precedent).
5405
- * Net-free programs pay zero bytes and keep their exact link line. Same
5406
- * generic-walk shape as moduleUsesZlib. */
5407
- export declare function moduleUsesNet(mod: IrModule): boolean;
5408
- /** True when the module contains any sym.* libCall or a symbol-kind type
5409
- * anywhere in the IR — the link switch that pulls scr_symbol.c into the
5410
- * binary (native-toolchain.ts; the scr_net gating precedent — no install call, the
5411
- * Symbol.for registry initializes lazily). The TYPE check matters like
5412
- * net's: a symbol-typed local whose initializer compiled to a runtime
5413
- * fence still emits release calls that need the unit linked. Symbol-free
5414
- * programs pay zero bytes and keep their exact link line. */
5415
- export declare function moduleUsesSymbol(mod: IrModule): boolean;
5416
- /** True when bigint runtime operations or bigint-typed storage appears in
5417
- * the IR. The type check keeps retain/release references link-safe even
5418
- * when a producing statement was replaced by a runtime fence. */
5419
- export declare function moduleUsesBigInt(mod: IrModule): boolean;
5420
- /** True when the module uses the URLSearchParams surface — sp.* libCalls,
5421
- * the url.searchParams getter, or a searchParams-kind type anywhere on
5422
- * the IR (a fenced statement can leave a typed local whose release call
5423
- * still needs the unit linked) — the link switch that pulls
5424
- * scr_url_params.c into the binary (the moduleUsesSymbol precedent: pure
5425
- * data structure, no loop hooks, cross-compiles everywhere). sp-free
5426
- * programs keep their exact link line; scr_url.c itself stays
5427
- * always-linked and never references the unit. */
5428
- export declare function moduleUsesSearchParams(mod: IrModule): boolean;
5429
- /** True when the module uses the node:querystring surface — the qs.*
5430
- * libCalls that live in scr_qs.c (parse/stringify/unescape; qs.escape
5431
- * emits the always-linked component encoder and deliberately does NOT
5432
- * flip this switch) — the link switch that pulls scr_qs.c into the
5433
- * binary (the moduleUsesSearchParams precedent: pure data transforms, no
5434
- * loop hooks, cross-compiles everywhere). qs-free programs keep their
5435
- * exact link line. Same generic-walk shape as moduleUsesZlib. */
5436
- export declare function moduleUsesQs(mod: IrModule): boolean;
5437
- /** True when the module uses native util parsing, comparison, or styling.
5438
- * The utility units also follow their required symbol, inspection, and
5439
- * warning features, independently of the island's node:util shim. */
5440
- export declare function moduleUsesParseArgs(mod: IrModule): boolean;
5441
- /** True when the module contains any fs.watch/watcher.* libCall — the
5442
- * link switch that pulls scr_watch.c into the binary and has the emitted
5443
- * main call scr_watch_install (native-toolchain.ts + emitter; the scr_net gating
5444
- * precedent). Watch-free programs pay zero bytes and keep their exact
5445
- * link line. Same generic-walk shape as moduleUsesZlib. */
5446
- export declare function moduleUsesFsWatch(mod: IrModule): boolean;
5447
- /** True when the module contains any test.* libCall or a testCtx handle
5448
- * type — the link switch that pulls scr_test.c into the binary and has
5449
- * the emitted main return scr_test_exit_code() after the loop drains
5450
- * (native-toolchain.ts + emitter; the moduleUsesDgram shape). Test-free programs pay
5451
- * zero bytes and keep their exact link line. */
5452
- export declare function moduleUsesNodeTest(mod: IrModule): boolean;
5453
- /** True when the module contains any dgram.* or dns.* libCall — the
5454
- * link switch that pulls scr_dgram.c into the binary and has the emitted
5455
- * main call scr_dgram_install (native-toolchain.ts + emitter; the scr_net gating
5456
- * precedent — dns.lookup lives in the same unit, so either prefix
5457
- * answers). Dgram-free programs pay zero bytes and keep their exact link
5458
- * line. Same generic-walk shape as moduleUsesZlib. */
5459
- export declare function moduleUsesDgram(mod: IrModule): boolean;
5460
- /** True when the module contains any http.* libCall — the link switch
5461
- * that pulls scr_http.c into the binary (native-toolchain.ts; moduleUsesNet already
5462
- * answers true for these, so scr_net.c comes along). */
5463
- export declare function moduleUsesHttpServer(mod: IrModule): boolean;
5464
- /** True when the module uses the REAL h2 surface (scr_http2.c): any core
5465
- * http2.* libCall, or an h2 handle type left behind by a fenced statement
5466
- * (its emitted release call needs the unit — the moduleUsesNet story). */
5467
- export declare function moduleUsesHttp2(mod: IrModule): boolean;
5468
- /** True when the module contains any tls.* or https.* libCall — the link
5469
- * switch that pulls scr_tls.c and the vendored mbedTLS archive into the
5470
- * binary (native-toolchain.ts; moduleUsesNet and moduleUsesHttpServer already answer
5471
- * true for these, so scr_net.c and scr_http.c come along). TLS-free
5472
- * programs keep their exact link line and never build mbedTLS. */
5473
- export declare function moduleUsesTls(mod: IrModule): boolean;
5474
- /** True when the module contains any tlsca.* libCall — the link switch
5475
- * for scr_tls_ca.c, the CA-store introspection unit (getCACertificates /
5476
- * rootCertificates / setDefaultCACertificates). Deliberately SEPARATE
5477
- * from moduleUsesTls: the unit is plain PEM-block bookkeeping, so a
5478
- * program that only inspects the CA store never pulls mbedTLS. native-toolchain.ts
5479
- * also compiles the unit whenever TLS itself links — scr_tls.c consults
5480
- * the unit's default-set override for its trust anchors. */
5481
- export declare function moduleUsesTlsCa(mod: IrModule): boolean;
5482
- /** First async/event-loop/ambient-process surface the module graph
5483
- * reaches, or null when the graph is async_free (the v1 library requirement).
5484
- * Typed slots use their declaration location and executable nodes use their
5485
- * own location, so the refusal anchors at the reaching construct; the
5486
- * coarse moduleUses* predicates are the safety net behind the fine-grained
5487
- * table (a surface reached only through a spelling the table misses still
5488
- * refuses, anchored at the entry). */
5489
- export declare function moduleLibAsyncSurface(mod: IrModule): {
5490
- surface: string;
5491
- loc: SrcLoc;
5492
- } | null;
5493
- /** libCall families that demote `deterministic` (prefix match over
5494
- * IrLibFn spellings). process.stdout/stderr writes are deliberately NOT
5495
- * here: output is an effect, not a nondeterminism input, and console
5496
- * policy is the profile's ask-5 business. process.platform/arch and the
5497
- * version constants fold at compile time, so they are per-binary
5498
- * constants, not ambient reads. Exported for the attestation-parity test
5499
- * (tests/harness/surface-manifest.test.ts): every spelling this table
5500
- * demotes on must be deniable by a manifest-id fence, or the ask-5 §4
5501
- * invariant (compiles under full fences ⇒ deterministic) cannot be
5502
- * stated. */
5503
- export declare const LIB_NONDETERMINISTIC_PREFIXES: readonly [string, string][];
5504
- /** First ambient-nondeterminism or ambient-authority surface the module
5505
- * graph reaches, or null when the graph is clean (the sidecar then
5506
- * attests `deterministic: true`). */
5507
- export declare function moduleLibNondeterministicSurface(mod: IrModule): string | null;
5508
- /** The may-throw seed: libCall members that can raise. Every fs.* member
5509
- * EXCEPT existsSync (which, like Node's, swallows errors and returns false)
5510
- * throws a catchable error on failure; json.parse throws a catchable
5511
- * SyntaxError-shaped string on malformed input. Backends' may-throw analyses must treat a function containing one
5512
- * of these as throwing, exactly like a `throw` statement (and must ALSO
5513
- * seed on `dynCheck` and `awaitExpr` nodes, which throw on validation
5514
- * failure / promise rejection). */
5515
- export declare const MAY_THROW_LIB_FNS: ReadonlySet<IrLibFn>;
5516
- export {};