@scriptc/compiler 0.3.2 → 0.3.3

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 (364) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +490 -39
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/llvm/alloc.js +24 -10
  5. package/dist/backend/llvm/alloc.js.map +1 -1
  6. package/dist/backend/llvm/alloc.test.js +47 -1
  7. package/dist/backend/llvm/alloc.test.js.map +1 -1
  8. package/dist/backend/llvm/array-search.d.ts +8 -0
  9. package/dist/backend/llvm/array-search.js +52 -0
  10. package/dist/backend/llvm/array-search.js.map +1 -0
  11. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  12. package/dist/backend/llvm/array-search.test.js +72 -0
  13. package/dist/backend/llvm/array-search.test.js.map +1 -0
  14. package/dist/backend/llvm/call-lifetimes.d.ts +8 -1
  15. package/dist/backend/llvm/call-lifetimes.js +33 -11
  16. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  17. package/dist/backend/llvm/call-lifetimes.test.js +54 -0
  18. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  19. package/dist/backend/llvm/classes.js +87 -36
  20. package/dist/backend/llvm/classes.js.map +1 -1
  21. package/dist/backend/llvm/common.d.ts +1 -1
  22. package/dist/backend/llvm/common.js +1 -1
  23. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  24. package/dist/backend/llvm/dense-array-access.js +1 -1
  25. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  26. package/dist/backend/llvm/dyn.d.ts +4 -0
  27. package/dist/backend/llvm/dyn.js +73 -9
  28. package/dist/backend/llvm/dyn.js.map +1 -1
  29. package/dist/backend/llvm/emitter.d.ts +65 -14
  30. package/dist/backend/llvm/emitter.js +297 -81
  31. package/dist/backend/llvm/emitter.js.map +1 -1
  32. package/dist/backend/llvm/emitter.test.js +26 -3
  33. package/dist/backend/llvm/emitter.test.js.map +1 -1
  34. package/dist/backend/llvm/expr-async.js +52 -1
  35. package/dist/backend/llvm/expr-async.js.map +1 -1
  36. package/dist/backend/llvm/expr-bytes.js +11 -0
  37. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  38. package/dist/backend/llvm/expr-callbacks.js +16 -2
  39. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  40. package/dist/backend/llvm/expr-calls.js +8 -1
  41. package/dist/backend/llvm/expr-calls.js.map +1 -1
  42. package/dist/backend/llvm/expr-containers.js +42 -15
  43. package/dist/backend/llvm/expr-containers.js.map +1 -1
  44. package/dist/backend/llvm/expr-dynamic.js +19 -8
  45. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  46. package/dist/backend/llvm/expr-primitives.js +28 -30
  47. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  48. package/dist/backend/llvm/expr-records.js +8 -4
  49. package/dist/backend/llvm/expr-records.js.map +1 -1
  50. package/dist/backend/llvm/expr-stream-bridges.js +35 -32
  51. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  52. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  53. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  54. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  56. package/dist/backend/llvm/inline-unions.js +134 -0
  57. package/dist/backend/llvm/inline-unions.js.map +1 -0
  58. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  59. package/dist/backend/llvm/inline-unions.test.js +124 -0
  60. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  61. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  62. package/dist/backend/llvm/integer-remainder.js +80 -9
  63. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  64. package/dist/backend/llvm/lib-dispatch.js +163 -28
  65. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  66. package/dist/backend/llvm/lib-filesystem.js +125 -7
  67. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  68. package/dist/backend/llvm/lib-network.js +9 -6
  69. package/dist/backend/llvm/lib-network.js.map +1 -1
  70. package/dist/backend/llvm/lib-process.js +2 -2
  71. package/dist/backend/llvm/lib-process.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +132 -0
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/lib-stream.js +97 -0
  75. package/dist/backend/llvm/lib-stream.js.map +1 -1
  76. package/dist/backend/llvm/local-array-reads.js +7 -3
  77. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  78. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  79. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  80. package/dist/backend/llvm/local-union-storage.d.ts +2 -0
  81. package/dist/backend/llvm/local-union-storage.js +5 -0
  82. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  83. package/dist/backend/llvm/local-union-storage.test.js +1 -0
  84. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  85. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  86. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  87. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  88. package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
  89. package/dist/backend/llvm/map-number-lookup.js +66 -0
  90. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  91. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  92. package/dist/backend/llvm/map-number-lookup.test.js +102 -0
  93. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  94. package/dist/backend/llvm/map-read-lifetimes.js +1 -0
  95. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  96. package/dist/backend/llvm/publish.d.ts +4 -0
  97. package/dist/backend/llvm/publish.js +3 -1
  98. package/dist/backend/llvm/publish.js.map +1 -1
  99. package/dist/backend/llvm/record-results.d.ts +8 -5
  100. package/dist/backend/llvm/record-results.js +20 -12
  101. package/dist/backend/llvm/record-results.js.map +1 -1
  102. package/dist/backend/llvm/reference-effects.js +13 -0
  103. package/dist/backend/llvm/reference-effects.js.map +1 -1
  104. package/dist/backend/llvm/reference-writes.js +14 -0
  105. package/dist/backend/llvm/reference-writes.js.map +1 -1
  106. package/dist/backend/llvm/regions.d.ts +1 -0
  107. package/dist/backend/llvm/regions.js +12 -7
  108. package/dist/backend/llvm/regions.js.map +1 -1
  109. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  110. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  111. package/dist/backend/llvm/shapes.d.ts +56 -10
  112. package/dist/backend/llvm/shapes.js +178 -39
  113. package/dist/backend/llvm/shapes.js.map +1 -1
  114. package/dist/backend/llvm/shapes.test.js +61 -3
  115. package/dist/backend/llvm/shapes.test.js.map +1 -1
  116. package/dist/backend/llvm/stack-objects.js +16 -4
  117. package/dist/backend/llvm/stack-objects.js.map +1 -1
  118. package/dist/backend/llvm/stack-objects.test.js +3 -0
  119. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  120. package/dist/backend/llvm/walkers.d.ts +11 -0
  121. package/dist/backend/llvm/walkers.js +106 -10
  122. package/dist/backend/llvm/walkers.js.map +1 -1
  123. package/dist/backend/may-throw.js +9 -4
  124. package/dist/backend/may-throw.js.map +1 -1
  125. package/dist/backend/native/contracts.d.ts +2 -2
  126. package/dist/backend/native/executable.js +14 -3
  127. package/dist/backend/native/executable.js.map +1 -1
  128. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  129. package/dist/backend/native/runtime-inputs.js +1 -0
  130. package/dist/backend/native/runtime-inputs.js.map +1 -1
  131. package/dist/backend/native-toolchain.test.js +1 -1
  132. package/dist/backend/native-toolchain.test.js.map +1 -1
  133. package/dist/backend/runtime-abi.d.ts +2 -2
  134. package/dist/backend/runtime-abi.js +2 -2
  135. package/dist/backend/runtime-pack-targets.test.js +1 -1
  136. package/dist/backend/runtime-pack.test.js +1 -1
  137. package/dist/backend/target-diagnostics.js +4 -1
  138. package/dist/backend/target-diagnostics.js.map +1 -1
  139. package/dist/backend/target-diagnostics.test.js +4 -1
  140. package/dist/backend/target-diagnostics.test.js.map +1 -1
  141. package/dist/compat/fetch-profile.js +4 -4
  142. package/dist/compat/fetch-profile.js.map +1 -1
  143. package/dist/contracts/check.js +2 -0
  144. package/dist/contracts/check.js.map +1 -1
  145. package/dist/coverage/report.js +1 -1
  146. package/dist/coverage/report.js.map +1 -1
  147. package/dist/diagnostics/diagnostic.d.ts +6 -5
  148. package/dist/diagnostics/diagnostic.js +7 -6
  149. package/dist/diagnostics/diagnostic.js.map +1 -1
  150. package/dist/frontend/builtin-modules.d.ts +1 -1
  151. package/dist/frontend/builtin-modules.js +1 -0
  152. package/dist/frontend/builtin-modules.js.map +1 -1
  153. package/dist/frontend/comptime-node.js +2 -2
  154. package/dist/frontend/comptime-node.js.map +1 -1
  155. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  156. package/dist/frontend/lowering/binding-analysis.js +1 -1
  157. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  158. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  159. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  160. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  161. package/dist/frontend/lowering/builtins/blob.js +167 -0
  162. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  163. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  164. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  165. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  166. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  167. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  168. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  169. package/dist/frontend/lowering/builtins/compression.js +3 -2
  170. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  171. package/dist/frontend/lowering/builtins/crypto.js +415 -120
  172. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  173. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  174. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  175. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  176. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  177. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  178. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  179. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  180. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  181. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  182. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  183. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  184. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  185. package/dist/frontend/lowering/builtins/module-calls.js +44 -11
  186. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  187. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  188. package/dist/frontend/lowering/builtins/performance.js +340 -5
  189. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  190. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  191. package/dist/frontend/lowering/builtins/process.js +107 -14
  192. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  193. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  194. package/dist/frontend/lowering/builtins/properties.js +39 -11
  195. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  196. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  197. package/dist/frontend/lowering/builtins/readline.js +266 -90
  198. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  199. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  200. package/dist/frontend/lowering/builtins/url.js +36 -0
  201. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  202. package/dist/frontend/lowering/call-arguments.js +1 -1
  203. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  204. package/dist/frontend/lowering/call-signatures.js +20 -2
  205. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  206. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
  207. package/dist/frontend/lowering/class-dynamic-dispatch.js +105 -1
  208. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  209. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  210. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  211. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  212. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  213. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  214. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  215. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  216. package/dist/frontend/lowering/coercions/structural.js +3 -3
  217. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  218. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  219. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  220. package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
  221. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  222. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  223. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  224. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  225. package/dist/frontend/lowering/containers/bytes.js +38 -26
  226. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  227. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  228. package/dist/frontend/lowering/containers/for-of.js +5 -1
  229. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  230. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  231. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  232. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  233. package/dist/frontend/lowering/crypto-tables.js +77 -12
  234. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  235. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  236. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  237. package/dist/frontend/lowering/expressions/object-literals.js +16 -12
  238. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  239. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  240. package/dist/frontend/lowering/generic-functions.js +2 -2
  241. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  242. package/dist/frontend/lowering/http2-constants.js +1 -1
  243. package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
  244. package/dist/frontend/lowering/lower-array-sort.js +561 -191
  245. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  246. package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
  247. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  248. package/dist/frontend/lowering/lower-assert.js +2 -2
  249. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  250. package/dist/frontend/lowering/lower-async-iteration.js +248 -2
  251. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  252. package/dist/frontend/lowering/lower-calls.js +101 -9
  253. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  254. package/dist/frontend/lowering/lower-classes.d.ts +8 -2
  255. package/dist/frontend/lowering/lower-classes.js +40 -9
  256. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  257. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  258. package/dist/frontend/lowering/lower-comptime.js +4 -4
  259. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  260. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  261. package/dist/frontend/lowering/lower-event-target.js +362 -0
  262. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  263. package/dist/frontend/lowering/lower-expando.js +2 -2
  264. package/dist/frontend/lowering/lower-exprs.js +112 -22
  265. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  266. package/dist/frontend/lowering/lower-inspect.js +129 -11
  267. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  268. package/dist/frontend/lowering/lower-mixins.js +1 -1
  269. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  270. package/dist/frontend/lowering/lower-modules.js +7 -3
  271. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  272. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  273. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  274. package/dist/frontend/lowering/lower-server.js +39 -14
  275. package/dist/frontend/lowering/lower-server.js.map +1 -1
  276. package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
  277. package/dist/frontend/lowering/lower-stdlib.js +10 -3
  278. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  279. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  280. package/dist/frontend/lowering/lower-stmts.js +46 -12
  281. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  282. package/dist/frontend/lowering/lower-stream.js +234 -22
  283. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  284. package/dist/frontend/lowering/lower-timers.js +1 -1
  285. package/dist/frontend/lowering/lowerer.d.ts +23 -5
  286. package/dist/frontend/lowering/lowerer.js +245 -41
  287. package/dist/frontend/lowering/lowerer.js.map +1 -1
  288. package/dist/frontend/lowering/native-ffi.js +2 -2
  289. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  290. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  291. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  292. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  293. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  294. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  295. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  296. package/dist/frontend/lowering/surfaces.d.ts +7 -3
  297. package/dist/frontend/lowering/surfaces.js +273 -22
  298. package/dist/frontend/lowering/surfaces.js.map +1 -1
  299. package/dist/frontend/module-syntax.d.ts +1 -1
  300. package/dist/frontend/module-syntax.js +1 -1
  301. package/dist/frontend/npm-static-prune.js +1 -1
  302. package/dist/frontend/npm-static-prune.js.map +1 -1
  303. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  304. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  305. package/dist/frontend/pipeline.js +1 -1
  306. package/dist/frontend/pipeline.js.map +1 -1
  307. package/dist/frontend/program.d.ts +3 -3
  308. package/dist/frontend/program.js +19 -17
  309. package/dist/frontend/program.js.map +1 -1
  310. package/dist/frontend/resolve.js +1 -1
  311. package/dist/frontend/ts7/adapter.js +1 -1
  312. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  313. package/dist/frontend/ts7/ast-bytes.js +1 -1
  314. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  315. package/dist/frontend/ts7/semantic-json.js +1 -1
  316. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  317. package/dist/frontend/ts7/world-check.js +1 -1
  318. package/dist/frontend/tsc-codes.js +2 -2
  319. package/dist/frontend/tsc-codes.js.map +1 -1
  320. package/dist/frontend/type-mapper.d.ts +16 -1
  321. package/dist/frontend/type-mapper.js +143 -18
  322. package/dist/frontend/type-mapper.js.map +1 -1
  323. package/dist/index.js +5 -4
  324. package/dist/index.js.map +1 -1
  325. package/dist/ir/analysis.d.ts +12 -6
  326. package/dist/ir/analysis.js +26 -10
  327. package/dist/ir/analysis.js.map +1 -1
  328. package/dist/ir/analysis.test.js +15 -3
  329. package/dist/ir/analysis.test.js.map +1 -1
  330. package/dist/ir/builtin-effects.js +79 -0
  331. package/dist/ir/builtin-effects.js.map +1 -1
  332. package/dist/ir/builtin-signatures.d.ts +1 -1
  333. package/dist/ir/builtin-signatures.js +291 -38
  334. package/dist/ir/builtin-signatures.js.map +1 -1
  335. package/dist/ir/int32-slots.js +1 -0
  336. package/dist/ir/int32-slots.js.map +1 -1
  337. package/dist/ir/ir.d.ts +64 -16
  338. package/dist/ir/ir.js +37 -1
  339. package/dist/ir/ir.js.map +1 -1
  340. package/dist/ir/runtime-features.js +83 -6
  341. package/dist/ir/runtime-features.js.map +1 -1
  342. package/dist/ir/serialize.js +1 -1
  343. package/dist/ir/serialize.js.map +1 -1
  344. package/dist/ir/traverse.js +1 -0
  345. package/dist/ir/traverse.js.map +1 -1
  346. package/dist/ir/validate.js +100 -9
  347. package/dist/ir/validate.js.map +1 -1
  348. package/dist/ir/validate.test.js +60 -0
  349. package/dist/ir/validate.test.js.map +1 -1
  350. package/dist/library/fence-eval.d.ts +1 -1
  351. package/dist/library/fence-eval.js +5 -4
  352. package/dist/library/fence-eval.js.map +1 -1
  353. package/dist/library/ir-policy.js +10 -4
  354. package/dist/library/ir-policy.js.map +1 -1
  355. package/dist/library/library-profile.js +13 -13
  356. package/dist/library/library-profile.js.map +1 -1
  357. package/dist/library/prepare.js +1 -1
  358. package/dist/library/prepare.js.map +1 -1
  359. package/dist/library/sidecar.js +3 -3
  360. package/dist/library/sidecar.js.map +1 -1
  361. package/dist/native/prepare.js +3 -2
  362. package/dist/native/prepare.js.map +1 -1
  363. package/package.json +20 -20
  364. package/surface-manifest.json +379 -142
@@ -1,5 +1,5 @@
1
1
  import { BIGINT_T } from "./ir.js";
2
- import { arrayOf, BOOL, BYTES_U8, bytesOf, CHILD_T, CHILDSTREAM_T, CHILDWRITER_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DGRAMSOCK_T, DYN, F64, FILEHANDLE_T, FSWATCHER_T, HTTP2SESSION_T, HTTP2STREAM_T, HTTPCLIENTREQ_T, HTTPREQ_T, HTTPRES_T, NETSERVER_T, NETSOCKET_T, PROCSTREAM_T, REGEX, SEARCH_PARAMS_T, SECURECTX_T, SPAWNRES_T, STATS_T, STRING, SYMBOL_T, TESTCTX_T, URL_T, VOID, } from "./ir.js";
2
+ import { arrayOf, BOOL, BYTES_U8, bytesOf, CHILD_T, CHILDSTREAM_T, CHILDWRITER_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DIR_T, DGRAMSOCK_T, DYN, F64, FILEHANDLE_T, FSWATCHER_T, HTTP2SESSION_T, HTTP2STREAM_T, HTTPCLIENTREQ_T, HTTPREQ_T, HTTPRES_T, NETSERVER_T, NETSOCKET_T, PROCSTREAM_T, REGEX, SEARCH_PARAMS_T, SECURECTX_T, SPAWNRES_T, STATS_T, STRING, SYMBOL_T, TESTCTX_T, URL_T, VOID, } from "./ir.js";
3
3
  /** Preserve the closed names while giving every entry the same slot type. */
4
4
  function defineLibFnSignatures(signatures) {
5
5
  return signatures;
@@ -26,7 +26,37 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
26
26
  "event.new": { argTypes: [DYN], result: DYN },
27
27
  "event.customNew": { argTypes: [DYN], result: DYN },
28
28
  "event.is": { argTypes: [DYN, F64], result: BOOL },
29
+ /** Compiled EventTarget and Event subclasses: the receiver is the
30
+ * instance (an object rooted at %EventTarget / %Event). targetInit and
31
+ * init are super() (init takes the argument vector as one dyn array
32
+ * and throws the constructor's validation errors; initType is the
33
+ * super(type) form with a string); targetCall runs an EventTarget method
34
+ * with the instance's own capsule as `self` (targetDispatch is its
35
+ * dispatchEvent(event) form, answering the bool); call, get and set
36
+ * reach the Event members. */
37
+ "event.targetInit": { argTypes: [null], result: VOID },
38
+ "event.init": { argTypes: [null, DYN], result: VOID },
39
+ "event.initType": { argTypes: [null, STRING], result: VOID },
40
+ /** %main hands the engine the compiled `listener.handleEvent` reader
41
+ * (lower-event-target.ts noteEventListeners). */
42
+ "event.handleEventReader": { argTypes: [DYN], result: VOID },
43
+ "event.targetDispatch": { argTypes: [null, DYN, DYN], result: BOOL },
44
+ "event.targetCall": { argTypes: [null, DYN, STRING, DYN], result: DYN },
45
+ "event.call": { argTypes: [null, STRING, DYN], result: DYN },
46
+ "event.get": { argTypes: [null, STRING], result: DYN },
47
+ "event.set": { argTypes: [null, STRING, DYN], result: VOID },
29
48
  "events.addAbortListener": { argTypes: [DYN, DYN], result: DYN },
49
+ /** Blob / File (scr_blob.c): the constructors and slice() take their
50
+ * argument vector as one dyn array and throw Node's validation errors;
51
+ * the readers settle on Node's microtask turn for the Blob's parts.
52
+ * `blob.is` is `v instanceof Blob` (kind 0) or `File` (1). */
53
+ "blob.new": { argTypes: [DYN], result: DYN },
54
+ "blob.fileNew": { argTypes: [DYN], result: DYN },
55
+ "blob.slice": { argTypes: [DYN, DYN], result: DYN },
56
+ "blob.text": { argTypes: [DYN], result: { kind: "promise", inner: STRING } },
57
+ "blob.bytes": { argTypes: [DYN], result: { kind: "promise", inner: BYTES_U8 } },
58
+ "blob.arrayBuffer": { argTypes: [DYN], result: { kind: "promise", inner: DYN } },
59
+ "blob.is": { argTypes: [DYN, F64], result: BOOL },
30
60
  "abort.timeout": { argTypes: [DYN], result: DYN },
31
61
  "abort.now": { argTypes: [DYN], result: DYN },
32
62
  "abort.any": { argTypes: [DYN], result: DYN },
@@ -62,8 +92,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
62
92
  * "Cannot set properties of undefined (setting 'k')"; every other kind
63
93
  * throws Node's STRICT-mode "Cannot create property 'k' on <kind>" —
64
94
  * primitives quoting their rendering, V8's "on number '5'"
65
- * (sloppy mode would silently ignore — suite tests are 'use strict';
66
- * SEMANTICS.md notes the sloppy divergence: loud, never silent). Void
95
+ * (sloppy mode would ignore the write — suite tests are 'use strict';
96
+ * SEMANTICS.md notes the sloppy divergence: the write throws). Void
67
97
  * result; in the may-throw seed set. */
68
98
  "dyn.keySet": { argTypes: [DYN, STRING, DYN], result: VOID },
69
99
  "dyn.keySetComputed": { argTypes: [DYN, DYN, DYN], result: VOID },
@@ -81,6 +111,10 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
81
111
  "dyn.globalSymbolDelete": { argTypes: [SYMBOL_T], result: VOID },
82
112
  /** Exact native class capsule identity, without materializing its fields. */
83
113
  "dyn.typedRefIs": { argTypes: [DYN, STRING], result: BOOL },
114
+ /** A capsule boxed by this program from exactly this class: one key
115
+ * pointer test, false for equal keys boxed elsewhere. Guards fast paths
116
+ * whose fallback handles every other value. The key is a literal. */
117
+ "dyn.typedRefKeyIs": { argTypes: [DYN, STRING], result: BOOL },
84
118
  "dyn.classIs": { argTypes: [DYN, STRING], result: BOOL },
85
119
  /** Destructuring pack over a dyn source — `const [a, b] = d`, a
86
120
  * destructured dyn callback param (args: the source and the STATIC
@@ -135,7 +169,7 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
135
169
  * Value descriptors become own properties on OBJ and FUNC targets;
136
170
  * OBJ targets preserve data attributes. get/set
137
171
  * descriptors and non-object targets/descriptors throw catchably
138
- * (Node's TypeError texts; accessors the loud unsupported Error). In
172
+ * (Node's TypeError texts; accessors the "not supported yet" Error). In
139
173
  * the may-throw seed set. */
140
174
  "dyn.defineProps": { argTypes: [DYN, DYN], result: DYN },
141
175
  "dyn.defineProperty": { argTypes: [DYN, DYN, DYN], result: DYN },
@@ -251,6 +285,34 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
251
285
  "process.uptime": { argTypes: [], result: F64 },
252
286
  /** perf_hooks performance.now(): fractional ms since process start. */
253
287
  "perf.now": { argTypes: [], result: F64 },
288
+ /** perf_hooks user timing over the thread's performance timeline. The
289
+ * producing calls take the call's whole argument vector as one dyn
290
+ * array (Node's validation and errors run in the runtime, MAY THROW):
291
+ * mark/measure answer 1, entries(args, which) the entry count of
292
+ * getEntries (0), getEntriesByName (1) or getEntriesByType (2). The
293
+ * entryName/Type/Start/Duration/Detail accessors read entry i of that
294
+ * answer; the frontend builds a new entry's record from them and hands
295
+ * it to entryKeep (a typed reference capsule), and the getters read the
296
+ * kept records back through entryRef, so entries keep their identity. */
297
+ "perf.mark": { argTypes: [DYN], result: F64 },
298
+ "perf.measure": { argTypes: [DYN], result: F64 },
299
+ "perf.entries": { argTypes: [DYN, F64], result: F64 },
300
+ "perf.clearMarks": { argTypes: [DYN], result: VOID },
301
+ "perf.clearMeasures": { argTypes: [DYN], result: VOID },
302
+ "perf.entryName": { argTypes: [F64], result: STRING },
303
+ "perf.entryType": { argTypes: [F64], result: STRING },
304
+ "perf.entryStart": { argTypes: [F64], result: F64 },
305
+ "perf.entryDuration": { argTypes: [F64], result: F64 },
306
+ "perf.entryDetail": { argTypes: [F64], result: DYN },
307
+ "perf.entryKeep": { argTypes: [DYN], result: VOID },
308
+ "perf.entryRef": { argTypes: [F64], result: DYN },
309
+ /** process.memoryUsage(): memoryUsageTake samples the resident set and
310
+ * the runtime heap once (MAY THROW Node's uv_resident_set_memory error)
311
+ * and memoryUsageField(k) reads that sample (0 rss, 1 heapTotal, 2
312
+ * heapUsed, 3 external, 4 arrayBuffers). rss is memoryUsage.rss(). */
313
+ "process.memoryUsageTake": { argTypes: [], result: VOID },
314
+ "process.memoryUsageField": { argTypes: [F64], result: F64 },
315
+ "process.rss": { argTypes: [], result: F64 },
254
316
  "process.availableMemory": { argTypes: [], result: F64 },
255
317
  "process.constrainedMemory": { argTypes: [], result: F64 },
256
318
  "process.cpuUser": { argTypes: [], result: F64 },
@@ -268,8 +330,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
268
330
  "timers.immediateRef": { argTypes: [F64], result: F64 },
269
331
  "timers.immediateHasRef": { argTypes: [F64], result: BOOL },
270
332
  /** The tolerated non-handle clear (`clearTimeout(null)`,
271
- * `clearInterval({})`, zero-argument forms): Node silently ignores
272
- * anything that is not a live handle — a VOID no-op the emitter drops
333
+ * `clearInterval({})`, zero-argument forms): Node ignores anything
334
+ * that is not a live handle without an error — a VOID no-op the emitter drops
273
335
  * (only syntactically side-effect-free arguments take this path). */
274
336
  "timers.clearNoop": { argTypes: [], result: VOID },
275
337
  // Signal listeners are zero-param (the ambient shape); exit/stdin
@@ -314,7 +376,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
314
376
  "fs.readFileSyncBuf": { argTypes: [STRING], result: BYTES_U8 },
315
377
  /** readFileSync(path, enc) with a RUNTIME encoding (an untyped JS
316
378
  * parameter): undefined/null answer Buffers, utf8 a string, other real
317
- * encodings fence loudly, unknown names throw ERR_UNKNOWN_ENCODING. */
379
+ * encodings throw the "not supported yet" Error, unknown names throw
380
+ * ERR_UNKNOWN_ENCODING. */
318
381
  "fs.readFileSyncDyn": { argTypes: [STRING, DYN], result: DYN },
319
382
  "fs.writeFileSync": { argTypes: [STRING, STRING], result: VOID },
320
383
  "fs.appendFileSync": { argTypes: [STRING, STRING], result: VOID },
@@ -330,12 +393,40 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
330
393
  * to lstat, Node's getDirents rule). The result type is the call site's
331
394
  * interned Dirent record array (name, parentPath, hidden %dtype in
332
395
  * libuv's UV_DIRENT encoding) — verified by the frontend; the emitter
333
- * assembles the rows from the snapshot. OS order, no "."/"..". Throws
396
+ * assembles the rows from the snapshot. Byte order on POSIX (libuv
397
+ * sorts), the directory's order on Windows; no "."/"..". Throws
334
398
  * Node's scandir errno error (may-throw seed set); fresh +1 array. */
335
399
  "fs.readdirTypesSync": { argTypes: [STRING], result: VOID },
400
+ /** fs.globSync / fs.glob / fs/promises glob (scr_glob.c, Node's
401
+ * lib/internal/fs/glob.js walk): pattern and options are dyn values the
402
+ * runtime validates in Node's order. The string forms answer string[];
403
+ * the Dirent forms answer the call site's Dirent record array (validated
404
+ * in validate.ts) assembled from the snapshot; fs.callbackGlob takes the
405
+ * argument vector and calls back with string[]. */
406
+ "fs.globSync": { argTypes: [DYN, DYN], result: arrayOf(STRING) },
407
+ "fs.globTypesSync": { argTypes: [DYN, DYN], result: VOID },
408
+ "fs.callbackGlob": { argTypes: [DYN], result: VOID },
409
+ "fsp.globStrings": { argTypes: [DYN, DYN], result: arrayOf(STRING) },
410
+ "fsp.globTypes": { argTypes: [DYN, DYN], result: VOID },
411
+ /** The error an fs/promises glob walk ended with (undefined when none),
412
+ * read once right after fsp.globStrings / fsp.globTypes. */
413
+ "fsp.globError": { argTypes: [], result: DYN },
414
+ /** fs.Dir (scr_lib.c): opendirSync(path, bufferSize) throws Node's
415
+ * opendir error (or the options.bufferSize RangeError); dir.readSync
416
+ * answers the call site's `Dirent | null` (VOID here — the emitter builds
417
+ * the row like readdirTypesSync) and dir.read is its promise twin;
418
+ * readSync and closeSync throw ERR_DIR_CLOSED on a closed Dir, read and
419
+ * close reject with it. */
420
+ "fs.opendirSync": { argTypes: [STRING, F64], result: DIR_T },
421
+ "fsp.opendir": { argTypes: [STRING, F64], result: { kind: "promise", inner: DIR_T } },
422
+ "dir.path": { argTypes: [DIR_T], result: STRING },
423
+ "dir.readSync": { argTypes: [DIR_T], result: VOID },
424
+ "dir.read": { argTypes: [DIR_T], result: { kind: "promise", inner: VOID } },
425
+ "dir.closeSync": { argTypes: [DIR_T], result: VOID },
426
+ "dir.close": { argTypes: [DIR_T], result: { kind: "promise", inner: VOID } },
336
427
  /** node:path (scr_path.c ports BOTH of Node's implementations
337
428
  * function-by-function): the `path.*` family is posix, the
338
- * `path.win32*` family is Node v24's path.win32 byte-for-byte — the
429
+ * `path.win32*` family is Node v24's path.win32 ported exactly — the
339
430
  * frontend binds the bare module to the TARGET platform's family
340
431
  * (Node on Windows IS path.win32) and the path.posix / path.win32
341
432
  * namespaces to their own family everywhere. join and resolve take ONE
@@ -699,6 +790,18 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
699
790
  "url.fileURLToPathUrl": { argTypes: [URL_T], result: STRING },
700
791
  "url.fileURLToPathChecked": { argTypes: [DYN], result: STRING },
701
792
  "url.fileURLToPathOptions": { argTypes: [DYN, DYN], result: STRING },
793
+ /** node:url's legacy API (scr_url_legacy.c): parse(url, parseQueryString,
794
+ * slashesDenoteHost) answers the checked-dynamic Url instance; format
795
+ * takes the urlObject (a Url-shaped object, a string, or a URL) and the
796
+ * URL form's options; resolve takes (from, to). The trailing bool says
797
+ * whether the call site emits DEP0169. domainToASCII/domainToUnicode
798
+ * take the domain and whether it was omitted. Node's validation errors
799
+ * throw catchably. */
800
+ "url.legacyParse": { argTypes: [DYN, DYN, DYN, BOOL], result: DYN },
801
+ "url.legacyFormat": { argTypes: [DYN, DYN, BOOL], result: STRING },
802
+ "url.legacyResolve": { argTypes: [DYN, DYN, BOOL], result: STRING },
803
+ "url.domainToASCII": { argTypes: [DYN, BOOL], result: STRING },
804
+ "url.domainToUnicode": { argTypes: [DYN, BOOL], result: STRING },
702
805
  "url.fileURLToPathBuffer": { argTypes: [DYN, DYN], result: BYTES_U8 },
703
806
  "url.pathToFileURLChecked": { argTypes: [DYN, DYN], result: URL_T },
704
807
  "url.fileURLToPathStr": { argTypes: [STRING], result: STRING },
@@ -883,6 +986,21 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
883
986
  "stats.atimeMs": { argTypes: [STATS_T], result: F64 },
884
987
  "stats.mtimeMs": { argTypes: [STATS_T], result: F64 },
885
988
  "stats.ctimeMs": { argTypes: [STATS_T], result: F64 },
989
+ "stats.birthtimeMs": { argTypes: [STATS_T], result: F64 },
990
+ "stats.mode": { argTypes: [STATS_T], result: F64 },
991
+ "stats.uid": { argTypes: [STATS_T], result: F64 },
992
+ "stats.gid": { argTypes: [STATS_T], result: F64 },
993
+ "stats.rdev": { argTypes: [STATS_T], result: F64 },
994
+ "stats.blksize": { argTypes: [STATS_T], result: F64 },
995
+ "stats.isBlockDevice": { argTypes: [STATS_T], result: BOOL },
996
+ "stats.isCharacterDevice": { argTypes: [STATS_T], result: BOOL },
997
+ "stats.isFIFO": { argTypes: [STATS_T], result: BOOL },
998
+ "stats.isSocket": { argTypes: [STATS_T], result: BOOL },
999
+ /** The Date fields: the *Ms value rounded (Node's dateFromMs). */
1000
+ "stats.atime": { argTypes: [STATS_T], result: DATE_T },
1001
+ "stats.mtime": { argTypes: [STATS_T], result: DATE_T },
1002
+ "stats.ctime": { argTypes: [STATS_T], result: DATE_T },
1003
+ "stats.birthtime": { argTypes: [STATS_T], result: DATE_T },
886
1004
  // The wider sync fs slice (unlink/chmod/chown/copyfile and the
887
1005
  // mode-carrying write/mkdir forms).
888
1006
  /** The wider sync fs slice (scr_lib.c), all throwing catchably with
@@ -905,6 +1023,11 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
905
1023
  "fs.unlinkSync": { argTypes: [STRING], result: VOID },
906
1024
  "fs.chmodSync": { argTypes: [STRING, F64], result: VOID },
907
1025
  "fs.chownSync": { argTypes: [STRING, F64, F64], result: VOID },
1026
+ "fs.lchownSync": { argTypes: [STRING, F64, F64], result: VOID },
1027
+ "fs.fchownSync": { argTypes: [F64, F64, F64], result: VOID },
1028
+ /** truncateSync opens the path with 'r+', then truncates (len checked and
1029
+ * clamped like ftruncateSync's) and closes it. */
1030
+ "fs.truncateSync": { argTypes: [STRING, F64], result: VOID },
908
1031
  "fs.copyFileSync": { argTypes: [STRING, STRING], result: VOID },
909
1032
  /** renameSync is the direct two-path syscall wrapper. renameCb defers
910
1033
  * the operation to the loop and fires a program-shaped Error | null
@@ -1013,6 +1136,10 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
1013
1136
  },
1014
1137
  "net.serverPort": { argTypes: [NETSERVER_T], result: F64 },
1015
1138
  "net.serverListening": { argTypes: [NETSERVER_T], result: BOOL },
1139
+ /** socket.ref()/unref() and server.ref()/unref(): whether the handle
1140
+ * keeps the event loop alive. */
1141
+ "net.sockSetRef": { argTypes: [NETSOCKET_T, BOOL], result: VOID },
1142
+ "net.serverSetRef": { argTypes: [NETSERVER_T, BOOL], result: VOID },
1016
1143
  // net.serverAddress's record result is shape-checked in the libCall case
1017
1144
  // (the dgram.address sentinel pattern).
1018
1145
  /** server.address() as the full AddressInfo record (the dgram.address
@@ -1242,8 +1369,9 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
1242
1369
  /** The ServerResponse member surface: statusCode/statusMessage reads
1243
1370
  * and assignments (Node's writable properties), the header CRUD trio
1244
1371
  * (getHeader answers `string | undefined` like reqHeader), and
1245
- * end(cb)'s finish slot (resOnFinish registers, the end call follows —
1246
- * the callback fires deferred, Node's 'finish' emit). writeHead's
1372
+ * end(cb)'s callback slot (resOnEndCallback registers, the end call
1373
+ * follows — the callback fires deferred, just before Node's 'finish'
1374
+ * emit; resOnFinish is the 'finish' listener slot). writeHead's
1247
1375
  * statusMessage forms compose in interned helpers: resStatusMsgSet
1248
1376
  * then the ordinary writeHead entry. */
1249
1377
  "http.resStatusGet": { argTypes: [HTTPRES_T], result: F64 },
@@ -1274,6 +1402,10 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
1274
1402
  argTypes: [HTTPRES_T, { kind: "func", params: [], ret: VOID }],
1275
1403
  result: VOID,
1276
1404
  },
1405
+ "http.resOnEndCallback": {
1406
+ argTypes: [HTTPRES_T, { kind: "func", params: [], ret: VOID }],
1407
+ result: VOID,
1408
+ },
1277
1409
  "http.reqUrl": { argTypes: [HTTPREQ_T], result: STRING },
1278
1410
  "http.reqMethod": { argTypes: [HTTPREQ_T], result: STRING },
1279
1411
  "http.reqHeader": { argTypes: [HTTPREQ_T, STRING], result: VOID },
@@ -1407,11 +1539,11 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
1407
1539
  },
1408
1540
  "http.resWriteHeadPairs": { argTypes: [HTTPRES_T, F64, arrayOf(STRING)], result: VOID },
1409
1541
  /** writeHead(status, headers) with a checked-dynamic headers value —
1410
- * the runtime OBJ walk (string/number values; loud fences otherwise;
1411
- * may throw). */
1542
+ * the runtime OBJ walk (string/number values; other values throw
1543
+ * Node's invalid-argument TypeError; may throw). */
1412
1544
  "http.resWriteHeadDyn": { argTypes: [HTTPRES_T, F64, DYN], result: VOID },
1413
1545
  "net.sockSetTimeout": { argTypes: [NETSOCKET_T, F64], result: VOID },
1414
- /** setEncoding('utf8') — 'data' delivers strings inside the chunk-encoding window; other real encodings fence loudly, unknown names throw ERR_UNKNOWN_ENCODING (may throw). */
1546
+ /** setEncoding('utf8') — 'data' delivers strings inside the chunk-encoding window; other real encodings throw the "not supported yet" Error, unknown names throw ERR_UNKNOWN_ENCODING (may throw). */
1415
1547
  "net.sockSetEncoding": { argTypes: [NETSOCKET_T, STRING], result: VOID },
1416
1548
  "http.reqSetEncoding": { argTypes: [HTTPREQ_T, STRING], result: VOID },
1417
1549
  "net.sockOnTimeout": {
@@ -1638,7 +1770,7 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
1638
1770
  * for the server_name extension BEFORE the TLS handshake begins, calls
1639
1771
  * the callback with (servername, answer-closure), and resumes the
1640
1772
  * handshake when the answer arrives — cb(err) tears the socket down
1641
- * silently (Node's 'tlsClientError' default), cb(null, ctx) serves
1773
+ * without an error event (Node's 'tlsClientError' default), cb(null, ctx) serves
1642
1774
  * ctx's cert/key, cb(null, undefined) serves the default pair. */
1643
1775
  "http2.createSecureServerSni": { argTypes: [null, null, null, BOOL], result: NETSERVER_T },
1644
1776
  // The ALPN=h2 server (createSecureServer without allowHTTP1): the real
@@ -2113,7 +2245,7 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2113
2245
  "crypto.hashDigestStr": { argTypes: [STRING, STRING, STRING], result: STRING },
2114
2246
  "crypto.hashDigestBytes": { argTypes: [STRING, BYTES_U8, STRING], result: STRING },
2115
2247
  /** First-class static Hash/Hmac handles. Constructors validate the
2116
- * runtime algorithm string (MD5, SHA-1, or SHA-2); update returns the same
2248
+ * runtime algorithm string (every digest Node 24 lists); update returns the same
2117
2249
  * handle by retained identity, copy snapshots Hash state, and digest
2118
2250
  * finalizes the handle and returns either a Buffer or encoded string. */
2119
2251
  "crypto.native": { argTypes: [], result: DYN },
@@ -2129,10 +2261,46 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2129
2261
  "crypto.hashDigestBuffer": { argTypes: [CRYPTOHASH_T], result: BYTES_U8 },
2130
2262
  "crypto.hmacDigestString": { argTypes: [CRYPTOHMAC_T, STRING], result: STRING },
2131
2263
  "crypto.hmacDigestBuffer": { argTypes: [CRYPTOHMAC_T], result: BYTES_U8 },
2132
- "crypto.timingSafeEqual": { argTypes: [BYTES_U8, BYTES_U8], result: BOOL },
2264
+ /** The option and any-value forms, with Node's checks at run time. The
2265
+ * Dyn digests return a string or a Buffer, and crypto.hash's Dyn form
2266
+ * either one by its outputEncoding. */
2267
+ "crypto.hashNewOpts": { argTypes: [STRING, DYN], result: CRYPTOHASH_T },
2268
+ "crypto.hmacNewDyn": { argTypes: [STRING, DYN, DYN], result: CRYPTOHMAC_T },
2269
+ "crypto.hashCopyOpts": { argTypes: [CRYPTOHASH_T, DYN], result: CRYPTOHASH_T },
2270
+ "crypto.hashUpdateEnc": { argTypes: [CRYPTOHASH_T, STRING, STRING], result: CRYPTOHASH_T },
2271
+ "crypto.hmacUpdateEnc": { argTypes: [CRYPTOHMAC_T, STRING, STRING], result: CRYPTOHMAC_T },
2272
+ "crypto.hashUpdateDyn": { argTypes: [CRYPTOHASH_T, DYN, DYN], result: CRYPTOHASH_T },
2273
+ "crypto.hmacUpdateDyn": { argTypes: [CRYPTOHMAC_T, DYN, DYN], result: CRYPTOHMAC_T },
2274
+ "crypto.hashDigestDyn": { argTypes: [CRYPTOHASH_T, DYN], result: DYN },
2275
+ "crypto.hmacDigestDyn": { argTypes: [CRYPTOHMAC_T, DYN], result: DYN },
2276
+ "crypto.hashOneshot": { argTypes: [STRING, DYN, DYN], result: DYN },
2277
+ /** Views of any element kind (the validator checks both are views). */
2278
+ "crypto.timingSafeEqual": { argTypes: [null, null], result: BOOL },
2279
+ "crypto.timingSafeEqualDyn": { argTypes: [DYN, DYN], result: BOOL },
2133
2280
  "crypto.randomFill": { argTypes: [BYTES_U8, F64, F64], result: BYTES_U8 },
2134
2281
  "crypto.randomFillRest": { argTypes: [BYTES_U8, F64], result: BYTES_U8 },
2135
2282
  "crypto.randomInt": { argTypes: [F64, F64], result: F64 },
2283
+ "crypto.randomIntMax": { argTypes: [F64], result: F64 },
2284
+ /** randomFillSync over any view returns that view at its own type (the
2285
+ * validator checks the result against the first argument). The Dyn form
2286
+ * takes ArrayBuffers and other values. The callback forms carry
2287
+ * randomFill's argument count before the callback; randomIntCb carries
2288
+ * whether min was given. */
2289
+ "crypto.randomFillView": { argTypes: [null, F64, F64], result: BYTES_U8 },
2290
+ "crypto.randomFillViewRest": { argTypes: [null, F64], result: BYTES_U8 },
2291
+ "crypto.randomFillSyncDyn": { argTypes: [DYN, DYN, DYN], result: DYN },
2292
+ "crypto.randomFillCb": { argTypes: [null, F64, F64, F64, null], result: VOID },
2293
+ "crypto.randomFillCbDyn": { argTypes: [DYN, DYN, DYN, F64, null], result: VOID },
2294
+ "crypto.randomIntCb": { argTypes: [F64, F64, F64, null], result: VOID },
2295
+ "crypto.randomUUIDOpts": { argTypes: [DYN], result: STRING },
2296
+ /** Secret KeyObjects: native handles whose getters and methods dispatch
2297
+ * through the handle. keyObjectInput reads a key's bytes for hkdf. */
2298
+ "crypto.createSecretKey": { argTypes: [DYN, DYN], result: DYN },
2299
+ "crypto.generateKeySync": { argTypes: [DYN, DYN], result: DYN },
2300
+ "crypto.generateKeyCb": { argTypes: [DYN, DYN, null], result: VOID },
2301
+ "crypto.keyObjectInput": { argTypes: [DYN], result: BYTES_U8 },
2302
+ "crypto.isKeyObject": { argTypes: [DYN], result: BOOL },
2303
+ "crypto.randomUUIDv7": { argTypes: [DYN], result: STRING },
2136
2304
  "crypto.pbkdf2": { argTypes: [BYTES_U8, BYTES_U8, F64, F64, STRING], result: BYTES_U8 },
2137
2305
  "crypto.randomBytesCb": { argTypes: [F64, null], result: VOID },
2138
2306
  "crypto.pbkdf2Cb": { argTypes: [BYTES_U8, BYTES_U8, F64, F64, STRING, null], result: VOID },
@@ -2291,6 +2459,17 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2291
2459
  "fsp.mkdirRecursiveMode": { argTypes: [STRING, F64], result: { kind: "promise", inner: VOID } },
2292
2460
  "fsp.unlink": { argTypes: [STRING], result: { kind: "promise", inner: VOID } },
2293
2461
  "fsp.chmod": { argTypes: [STRING, F64], result: { kind: "promise", inner: VOID } },
2462
+ "fsp.chown": { argTypes: [STRING, F64, F64], result: { kind: "promise", inner: VOID } },
2463
+ "fsp.lchown": { argTypes: [STRING, F64, F64], result: { kind: "promise", inner: VOID } },
2464
+ "fsp.access": { argTypes: [STRING, F64], result: { kind: "promise", inner: VOID } },
2465
+ "fsp.truncate": { argTypes: [STRING, F64], result: { kind: "promise", inner: VOID } },
2466
+ "fsp.appendFile": { argTypes: [STRING, STRING], result: { kind: "promise", inner: VOID } },
2467
+ "fsp.appendFileBytes": { argTypes: [STRING, BYTES_U8], result: { kind: "promise", inner: VOID } },
2468
+ "fsp.copyFile": { argTypes: [STRING, STRING], result: { kind: "promise", inner: VOID } },
2469
+ "fsp.mkdtemp": { argTypes: [STRING], result: { kind: "promise", inner: STRING } },
2470
+ /** readFile(path, encoding | { encoding }) for any runtime encoding name. */
2471
+ "fsp.readFileEncoded": { argTypes: [STRING, STRING], result: { kind: "promise", inner: STRING } },
2472
+ "fsp.rmdir": { argTypes: [STRING], result: { kind: "promise", inner: VOID } },
2294
2473
  "fsp.link": { argTypes: [DYN, DYN], result: { kind: "promise", inner: VOID } },
2295
2474
  "fsp.symlink": { argTypes: [DYN, DYN, DYN], result: { kind: "promise", inner: VOID } },
2296
2475
  "fsp.readlink": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
@@ -2410,6 +2589,24 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2410
2589
  "dyn.generatorThis": { argTypes: [], result: DYN },
2411
2590
  "process.getuid": { argTypes: [], result: F64 },
2412
2591
  "process.getgid": { argTypes: [], result: F64 },
2592
+ /** geteuid(2) / getegid(2) / getgroups(2) (the effective gid appended
2593
+ * when the list lacks it, like Node). Windows has no such members: the
2594
+ * calls throw the TypeError a missing member does (MAY THROW). */
2595
+ "process.geteuid": { argTypes: [], result: F64 },
2596
+ "process.getegid": { argTypes: [], result: F64 },
2597
+ "process.getgroups": { argTypes: [], result: arrayOf(F64) },
2598
+ /** process.ppid: the parent's pid at the read. Never throws. */
2599
+ "process.ppid": { argTypes: [], result: F64 },
2600
+ /** process.title: libuv's process title (argv[0] until set); setTitle
2601
+ * writes it (truncated to the original argument area on POSIX, the
2602
+ * console title on Windows). Never throw. */
2603
+ "process.title": { argTypes: [], result: STRING },
2604
+ "process.setTitle": { argTypes: [STRING], result: VOID },
2605
+ /** process.argv0: the original argv[0]. Never throws. */
2606
+ "process.argv0": { argTypes: [], result: STRING },
2607
+ /** process.release: the compatibility target's stable release object
2608
+ * (name, lts, sourceUrl, headersUrl, and libUrl on Windows). +1. */
2609
+ "process.release": { argTypes: [], result: DYN },
2413
2610
  /** process.execPath: the compiled binary's own resolved absolute path
2414
2611
  * (one interned string, +1 per read) — the honest answer where Node's
2415
2612
  * is the node executable's (SEMANTICS.md divergence 12). Never throws. */
@@ -2738,6 +2935,9 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2738
2935
  "dyn.seal": { argTypes: [DYN], result: DYN },
2739
2936
  "dyn.isSealed": { argTypes: [DYN], result: BOOL },
2740
2937
  "dyn.objValues": { argTypes: [DYN], result: DYN },
2938
+ /** Object.values as a native vector of checked values, for results the
2939
+ * program consumes directly (for-of, index reads, read-only methods). */
2940
+ "dyn.objValueList": { argTypes: [DYN], result: arrayOf(DYN) },
2741
2941
  "dyn.objEntries": { argTypes: [DYN], result: DYN },
2742
2942
  /** structuredClone over the checked-dynamic tree (scr_json.c): the JSON-safe subset plus
2743
2943
  * bytes (a fresh copy — a Buffer clones as a plain Uint8Array, like
@@ -2906,6 +3106,14 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2906
3106
  * propagates the first error by destroying the rest, calls cb after the
2907
3107
  * last 'close'; answers the destination +1. The Dyn twins take the
2908
3108
  * callback as a checked-dynamic VALUE (mustCall wrappers). */
3109
+ /** stream.addAbortSignal: [stream, signal] — the constructors' signal
3110
+ * option, chained over the fresh stream (falsy signals are ignored);
3111
+ * stream.addAbortSignalFn: [signal, stream] — addAbortSignal(signal,
3112
+ * stream). Both answer the stream (+1) and throw ERR_INVALID_ARG_TYPE
3113
+ * for a value that is not an AbortSignal; they link the event-target
3114
+ * unit (addAbortListener). */
3115
+ "stream.addAbortSignal": { argTypes: [null, DYN], result: VOID },
3116
+ "stream.addAbortSignalFn": { argTypes: [DYN, null], result: VOID },
2909
3117
  "stream.finished": { argTypes: [null, null], result: VOID },
2910
3118
  "stream.finishedDyn": { argTypes: [null, DYN], result: VOID },
2911
3119
  "stream.pipeline": { argTypes: [F64], result: VOID },
@@ -2916,6 +3124,25 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2916
3124
  * chaining/destroyer semantics settling a void promise (fulfilled on a
2917
3125
  * clean finish, rejected with the finish status otherwise). */
2918
3126
  "sp.finished": { argTypes: [null], result: { kind: "promise", inner: VOID } },
3127
+ /** The options forms: finished(s, { readable, writable, error, cleanup,
3128
+ * signal }) as [s, readable, writable, error, cleanup, signal?] —
3129
+ * readable/writable -1 (absent), 0 or 1 — and pipeline(...streams,
3130
+ * { signal, end }) as [count, s1..sn, end, signal?]. The Signal forms
3131
+ * link the event-target unit (addAbortListener). The callback form
3132
+ * stream.finishedOpts: [s, readable, writable, error, signal?, cb] →
3133
+ * the cleanup closure. */
3134
+ "sp.finishedOpts": {
3135
+ argTypes: [null, F64, F64, BOOL, BOOL],
3136
+ result: { kind: "promise", inner: VOID },
3137
+ },
3138
+ "sp.finishedOptsSignal": {
3139
+ argTypes: [null, F64, F64, BOOL, BOOL, DYN],
3140
+ result: { kind: "promise", inner: VOID },
3141
+ },
3142
+ "sp.pipelineOpts": { argTypes: [F64], result: { kind: "promise", inner: VOID } },
3143
+ "sp.pipelineOptsSignal": { argTypes: [F64], result: { kind: "promise", inner: VOID } },
3144
+ "stream.finishedOpts": { argTypes: [null, F64, F64, BOOL, null], result: VOID },
3145
+ "stream.finishedOptsSignal": { argTypes: [null, F64, F64, BOOL, DYN, null], result: VOID },
2919
3146
  "sp.pipeline": { argTypes: [F64], result: { kind: "promise", inner: VOID } },
2920
3147
  /** node:stream/consumers — the promise consumers over the readable
2921
3148
  * machinery: (s) → a pending promise settled at the terminal point
@@ -3051,7 +3278,7 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3051
3278
  * the rendering enumerable) or the custom message.
3052
3279
  * assert.throwsRegex: (regex, error, msg, hasMsg) — the
3053
3280
  * assert.throws(fn, /re/) check over String(error), Node's
3054
- * regex-mismatch message. assert.regexErrTest: doesNotReject's silent
3281
+ * regex-mismatch message. assert.regexErrTest: doesNotReject's
3055
3282
  * regex predicate over String(error) (never throws).
3056
3283
  * assert.unwantedRejection: (error, msg, hasMsg) — doesNotReject's
3057
3284
  * "Got unwanted rejection" throw.
@@ -3136,7 +3363,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3136
3363
  "insp.f64": { argTypes: [F64], result: STRING },
3137
3364
  /** util.format %j over a checked-dynamic argument: the runtime dyn
3138
3365
  * walk (JS-exact stringify; root undefined/function prints
3139
- * "undefined"; a handle in the tree throws the loud fence). */
3366
+ * "undefined"; a handle in the tree throws the "not supported yet"
3367
+ * Error). */
3140
3368
  "insp.jsonDyn": { argTypes: [DYN], result: STRING },
3141
3369
  "insp.str": { argTypes: [STRING], result: STRING },
3142
3370
  "insp.regex": { argTypes: [REGEX], result: STRING },
@@ -3160,6 +3388,12 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3160
3388
  "insp.key": { argTypes: [STRING], result: STRING },
3161
3389
  "insp.moreItems": { argTypes: [F64], result: STRING },
3162
3390
  "insp.end": { argTypes: [STRING, STRING, STRING, F64, BOOL, BOOL], result: STRING },
3391
+ /** A nested inspect inside a custom rendering (PerformanceEntry's
3392
+ * `${name} ${inspect(toJSON)}`): nestedBegin starts a fresh inspect
3393
+ * context, nestedEnd(prefix, inner) restores the caller's and answers
3394
+ * `prefix inner` re-indented at the caller's level (+1). */
3395
+ "insp.nestedBegin": { argTypes: [], result: VOID },
3396
+ "insp.nestedEnd": { argTypes: [STRING, STRING], result: STRING },
3163
3397
  /** node:string_decoder's utf8 StringDecoder (scr_string.c): the decoder
3164
3398
  * value is a one-field record whose f64 PACKS the pending partial
3165
3399
  * sequence (count + up to 3 raw bytes — Node buffers at most 3 for
@@ -3173,27 +3407,46 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3173
3407
  "strdec.next": { argTypes: [STRING, F64, BYTES_U8], result: F64 },
3174
3408
  "strdec.end": { argTypes: [STRING, F64], result: STRING },
3175
3409
  // node:readline: the interface handle is f64; the callbacks' func types
3176
- // are program-dependent (zero-param or (answer: string) — the emitter
3177
- // picks the adapter), so those slots are null like child.onExit's.
3178
- /** node:readline's question/close slice (scr_readline.c, linked under
3179
- * the events gate — these fns imply moduleUsesProcessEvents). The
3180
- * interface value is an f64 handle (the Timeout-id precedent).
3181
- * rl.create: [] → f64 — createInterface({ input: process.stdin,
3182
- * output: process.stdout }), registering the unit's shared stdin
3183
- * consumer (an OPEN interface keeps the loop alive until close/EOF,
3184
- * Node's semantics). rl.question: [handle, query, cb] — writes the
3185
- * query to stdout (Node writes under pipes too) and delivers the next
3186
- * line's text through a backend-picked adapter (zero-param or
3187
- * (answer: string)); THROWS Node's "readline was closed" on a closed
3188
- * interface (may-throw). rl.close: [handle] — fires 'close' listeners
3189
- * SYNCHRONOUSLY (Node's inline emit) and detaches the consumer (the
3190
- * loop stops waiting on fd 0). rl.onClose: [handle, cb] — a zero-arg
3191
- * listener (moves); stdin EOF closes every open interface with the
3192
- * buffered partial line DISCARDED, like Node. */
3193
- "rl.create": { argTypes: [], result: F64 },
3410
+ // are program-dependent (the emitter picks the adapter by parameter
3411
+ // count), so those slots are null like child.onExit's.
3412
+ /** node:readline and node:readline/promises (scr_readline.c, linked
3413
+ * under the events gate — these fns imply moduleUsesProcessEvents; a
3414
+ * stream input or output adds scr_stream.c's bridge). The interface
3415
+ * value is an f64 handle (the Timeout-id precedent); an open interface
3416
+ * on stdin keeps the loop alive until close/EOF.
3417
+ * rl.create: [mode, input?, output?, crlfDelay, prompt?] → f64, mode
3418
+ * bits 1 stream input, 2 stream output, 4 stdout output, 16 prompt
3419
+ * (lowerReadlineCreateCall); rl.createSignal: the same plus the
3420
+ * trailing AbortSignal (mode bit 8), which links the event-target unit
3421
+ * for addAbortListener. rl.question: [handle, query, cb] — the callback
3422
+ * form; THROWS ERR_USE_AFTER_CLOSE on a closed interface (may-throw).
3423
+ * rl.questionAsync(Signal): [handle, query, signal?] → promise<string>,
3424
+ * rejecting instead of throwing. rl.close/pause/resume/prompt:
3425
+ * [handle] (pause/resume/prompt throw ERR_USE_AFTER_CLOSE when
3426
+ * closed); rl.setPrompt/getPrompt; rl.write: [handle, data] (throws
3427
+ * when closed). rl.on: [handle, event, cb, once] — the event number
3428
+ * (0 'line', 1 'close', 2 'pause', 3 'resume', 4 'error') and the
3429
+ * listener (moves). rl.iterOpen/iterNext/iterReturn: the async
3430
+ * iterator — iterNext answers promise<dyn> of the line or undefined. */
3431
+ "rl.create": { argTypes: [F64], result: F64 },
3432
+ "rl.createSignal": { argTypes: [F64], result: F64 },
3194
3433
  "rl.question": { argTypes: [F64, STRING, null], result: VOID },
3434
+ "rl.questionAsync": { argTypes: [F64, STRING], result: { kind: "promise", inner: STRING } },
3435
+ "rl.questionAsyncSignal": {
3436
+ argTypes: [F64, STRING, DYN],
3437
+ result: { kind: "promise", inner: STRING },
3438
+ },
3195
3439
  "rl.close": { argTypes: [F64], result: VOID },
3196
- "rl.onClose": { argTypes: [F64, null], result: VOID },
3440
+ "rl.pause": { argTypes: [F64], result: VOID },
3441
+ "rl.resume": { argTypes: [F64], result: VOID },
3442
+ "rl.prompt": { argTypes: [F64], result: VOID },
3443
+ "rl.setPrompt": { argTypes: [F64, STRING], result: VOID },
3444
+ "rl.getPrompt": { argTypes: [F64], result: STRING },
3445
+ "rl.write": { argTypes: [F64, STRING], result: VOID },
3446
+ "rl.on": { argTypes: [F64, F64, null, BOOL], result: VOID },
3447
+ "rl.iterOpen": { argTypes: [F64], result: VOID },
3448
+ "rl.iterNext": { argTypes: [F64], result: { kind: "promise", inner: DYN } },
3449
+ "rl.iterReturn": { argTypes: [F64], result: VOID },
3197
3450
  /** node:timers/promises — the promisified pair (scr_async.c, beside
3198
3451
  * the timer heap they ride): tp.setTimeout: [ms] → a pending void
3199
3452
  * promise a one-shot heap timer fulfills (the loop's timer phase, FIFO