@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
@@ -36,6 +36,26 @@ declare namespace NodeJS {
36
36
  user: number;
37
37
  system: number;
38
38
  }
39
+ interface MemoryUsage {
40
+ rss: number;
41
+ heapTotal: number;
42
+ heapUsed: number;
43
+ external: number;
44
+ arrayBuffers: number;
45
+ }
46
+ /* process.memoryUsage(): rss from the OS, heapTotal/heapUsed from the
47
+ * runtime heap's own accounting; external and arrayBuffers are 0. */
48
+ interface MemoryUsageFn {
49
+ (): MemoryUsage;
50
+ rss(): number;
51
+ }
52
+ interface ProcessRelease {
53
+ name: string;
54
+ sourceUrl?: string | undefined;
55
+ headersUrl?: string | undefined;
56
+ libUrl?: string | undefined;
57
+ lts?: string | undefined;
58
+ }
39
59
  interface ResourceUsage {
40
60
  userCPUTime: number;
41
61
  systemCPUTime: number;
@@ -229,6 +249,16 @@ declare var process: {
229
249
  readonly execPath: string;
230
250
  getuid?(): number;
231
251
  getgid?(): number;
252
+ geteuid?(): number;
253
+ getegid?(): number;
254
+ getgroups?(): number[];
255
+ readonly ppid: number;
256
+ /* libuv's process title: argv[0] until set; a write is truncated to
257
+ * the original argument area on POSIX and sets the console title on
258
+ * Windows. */
259
+ title: string;
260
+ argv0: string;
261
+ readonly release: NodeJS.ProcessRelease;
232
262
  /* signal admits null (Node treats it as the SIGTERM default) — real
233
263
  * callers forward a `string | null` result field. */
234
264
  kill(pid: number, signal?: string | number | null): true;
@@ -255,6 +285,7 @@ declare var process: {
255
285
  cpuUsage(previousValue?: NodeJS.CpuUsage): NodeJS.CpuUsage;
256
286
  threadCpuUsage(previousValue?: NodeJS.CpuUsage): NodeJS.CpuUsage;
257
287
  resourceUsage(): NodeJS.ResourceUsage;
288
+ memoryUsage: NodeJS.MemoryUsageFn;
258
289
  availableMemory(): number;
259
290
  constrainedMemory(): number;
260
291
  /* The loop's own bookkeeping: 'Timeout' per armed timer, 'Immediate'
@@ -840,6 +871,44 @@ declare var Response: {
840
871
  json(data: unknown, init?: ResponseInit): Response;
841
872
  redirect(url: string | URL, status?: number): Response;
842
873
  };
874
+ /* Blob and File (node:buffer, also globals): immutable bytes with a
875
+ * content type. Sources are copied when the Blob is built. */
876
+ interface BlobPropertyBag {
877
+ endings?: "transparent" | "native";
878
+ type?: string;
879
+ }
880
+ interface FilePropertyBag extends BlobPropertyBag {
881
+ lastModified?: number;
882
+ }
883
+ interface Blob {
884
+ readonly size: number;
885
+ readonly type: string;
886
+ slice(start?: number, end?: number, contentType?: string): Blob;
887
+ text(): Promise<string>;
888
+ arrayBuffer(): Promise<ArrayBuffer>;
889
+ bytes(): Promise<Uint8Array>;
890
+ stream(): ReadableStream<Uint8Array>;
891
+ textStream(): ReadableStream<string>;
892
+ }
893
+ declare var Blob: {
894
+ new (
895
+ sources?: readonly (string | ArrayBuffer | ArrayBufferView | Blob)[],
896
+ options?: BlobPropertyBag,
897
+ ): Blob;
898
+ readonly prototype: Blob;
899
+ };
900
+ interface File extends Blob {
901
+ readonly name: string;
902
+ readonly lastModified: number;
903
+ }
904
+ declare var File: {
905
+ new (
906
+ sources: readonly (string | ArrayBuffer | ArrayBufferView | Blob)[],
907
+ fileName: string,
908
+ options?: FilePropertyBag,
909
+ ): File;
910
+ readonly prototype: File;
911
+ };
843
912
  interface Request {
844
913
  readonly method: string;
845
914
  readonly url: string;
@@ -1034,10 +1103,48 @@ declare module "diagnostics_channel" {
1034
1103
  * anchored monotonic clock (Node's timeOrigin for a compiled program),
1035
1104
  * fractional milliseconds. The .bind(performance) spelling lowers to the
1036
1105
  * same clock as a plain () => number function value (the mockable-clock idiom's
1037
- * getTimestamp); everything else fences per member. */
1106
+ * getTimestamp). mark, measure, the getEntries family and the clears run
1107
+ * over the thread's performance timeline with Node's validation; everything
1108
+ * else fences per member. */
1038
1109
  declare module "node:perf_hooks" {
1110
+ export type EntryType = "mark" | "measure";
1111
+ export class PerformanceEntry {
1112
+ protected constructor();
1113
+ readonly duration: number;
1114
+ readonly name: string;
1115
+ readonly startTime: number;
1116
+ readonly entryType: EntryType;
1117
+ toJSON(): any;
1118
+ }
1119
+ export class PerformanceMark extends PerformanceEntry {
1120
+ readonly detail: any;
1121
+ readonly duration: 0;
1122
+ readonly entryType: "mark";
1123
+ }
1124
+ export class PerformanceMeasure extends PerformanceEntry {
1125
+ readonly detail: any;
1126
+ readonly entryType: "measure";
1127
+ }
1128
+ export interface MarkOptions {
1129
+ detail?: unknown | undefined;
1130
+ startTime?: number | undefined;
1131
+ }
1132
+ export interface MeasureOptions {
1133
+ detail?: unknown;
1134
+ duration?: number | undefined;
1135
+ end?: number | string | undefined;
1136
+ start?: number | string | undefined;
1137
+ }
1039
1138
  export interface Performance {
1040
1139
  now(): number;
1140
+ mark(name: string, options?: MarkOptions): PerformanceMark;
1141
+ measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure;
1142
+ measure(name: string, options: MeasureOptions): PerformanceMeasure;
1143
+ getEntries(): PerformanceEntry[];
1144
+ getEntriesByName(name: string, type?: EntryType): PerformanceEntry[];
1145
+ getEntriesByType(type: EntryType): PerformanceEntry[];
1146
+ clearMarks(name?: string): void;
1147
+ clearMeasures(name?: string): void;
1041
1148
  }
1042
1149
  export const performance: Performance;
1043
1150
  }
@@ -1180,6 +1287,9 @@ declare module "node:fs" {
1180
1287
  options: string | { encoding?: string | null } | null,
1181
1288
  ): string | Buffer;
1182
1289
  export function chownSync(path: string, uid: number, gid: number): void;
1290
+ export function lchownSync(path: string, uid: number, gid: number): void;
1291
+ export function fchownSync(fd: number, uid: number, gid: number): void;
1292
+ export function truncateSync(path: string, len?: number): void;
1183
1293
  /* The 2-argument form only (Node's mode flags have no lowering). The
1184
1294
  * destination is created or truncated carrying the SOURCE's mode. */
1185
1295
  export function copyFileSync(src: string, dest: string): void;
@@ -1217,6 +1327,51 @@ declare module "node:fs" {
1217
1327
  * fences by name at the call site; undocumented keys drop like Node. */
1218
1328
  options: { withFileTypes: true; recursive?: boolean; [option: string]: unknown },
1219
1329
  ): Dirent[];
1330
+ /* fs.globSync / fs.glob: Node's glob walk over the file system. Patterns
1331
+ * are minimatch globs (case-insensitive on macOS and Windows); results
1332
+ * are relative to cwd unless the pattern is absolute. withFileTypes must
1333
+ * be a literal so the result type is known. */
1334
+ export interface GlobOptions {
1335
+ cwd?: string | URL;
1336
+ exclude?: readonly string[] | ((fileName: string) => boolean);
1337
+ followSymlinks?: boolean;
1338
+ withFileTypes?: false;
1339
+ }
1340
+ export interface GlobOptionsWithFileTypes {
1341
+ cwd?: string | URL;
1342
+ exclude?: readonly string[];
1343
+ followSymlinks?: boolean;
1344
+ withFileTypes: true;
1345
+ }
1346
+ export function globSync(pattern: string | readonly string[], options?: GlobOptions): string[];
1347
+ export function globSync(
1348
+ pattern: string | readonly string[],
1349
+ options: GlobOptionsWithFileTypes,
1350
+ ): Dirent[];
1351
+ export function glob(
1352
+ pattern: string | readonly string[],
1353
+ callback: (err: NodeJS.ErrnoException | null, matches?: string[]) => void,
1354
+ ): void;
1355
+ export function glob(
1356
+ pattern: string | readonly string[],
1357
+ options: GlobOptions,
1358
+ callback: (err: NodeJS.ErrnoException | null, matches?: string[]) => void,
1359
+ ): void;
1360
+ /* fs.Dir: an open directory stream (opendirSync, fs.promises.opendir)
1361
+ * read one Dirent at a time in OS order; utf8 names, no recursive walk. */
1362
+ export interface Dir {
1363
+ readonly path: string;
1364
+ readSync(): Dirent | null;
1365
+ read(): Promise<Dirent | null>;
1366
+ closeSync(): void;
1367
+ close(): Promise<void>;
1368
+ [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;
1369
+ }
1370
+ export interface OpenDirOptions {
1371
+ encoding?: "utf8" | "utf-8";
1372
+ bufferSize?: number;
1373
+ }
1374
+ export function opendirSync(path: string, options?: OpenDirOptions): Dir;
1220
1375
  export function accessSync(path: string, mode?: number): void;
1221
1376
  export function mkdtempSync(prefix: string): string;
1222
1377
  export const constants: {
@@ -1243,14 +1398,28 @@ declare module "node:fs" {
1243
1398
  isFile(): boolean;
1244
1399
  isDirectory(): boolean;
1245
1400
  isSymbolicLink(): boolean;
1401
+ isBlockDevice(): boolean;
1402
+ isCharacterDevice(): boolean;
1403
+ isFIFO(): boolean;
1404
+ isSocket(): boolean;
1246
1405
  readonly dev: number;
1406
+ readonly mode: number;
1407
+ readonly nlink: number;
1408
+ readonly uid: number;
1409
+ readonly gid: number;
1410
+ readonly rdev: number;
1411
+ readonly blksize: number;
1247
1412
  readonly ino: number;
1248
1413
  readonly size: number;
1249
1414
  readonly blocks: number;
1250
- readonly nlink: number;
1251
1415
  readonly atimeMs: number;
1252
1416
  readonly mtimeMs: number;
1253
1417
  readonly ctimeMs: number;
1418
+ readonly birthtimeMs: number;
1419
+ readonly atime: Date;
1420
+ readonly mtime: Date;
1421
+ readonly ctime: Date;
1422
+ readonly birthtime: Date;
1254
1423
  }
1255
1424
  export function statSync(path: string): Stats;
1256
1425
  export function lstatSync(path: string): Stats;
@@ -1539,6 +1708,10 @@ declare module "fs/promises" {
1539
1708
  mtime: number | string | Date,
1540
1709
  ): Promise<void>;
1541
1710
  export function readFile(path: string, encoding: "utf8" | "utf-8"): Promise<string>;
1711
+ export function readFile(
1712
+ path: string,
1713
+ options: BufferEncoding | { encoding: BufferEncoding },
1714
+ ): Promise<string>;
1542
1715
  export function readFile(path: string): Promise<Buffer>;
1543
1716
  export function writeFile(
1544
1717
  path: string,
@@ -1565,6 +1738,15 @@ declare module "fs/promises" {
1565
1738
  [option: string]: unknown;
1566
1739
  },
1567
1740
  ): Promise<import("node:fs").Dirent[]>;
1741
+ /* The async iterator form of fs.globSync: iterate it with for await. */
1742
+ export function glob(
1743
+ pattern: string | readonly string[],
1744
+ options?: import("node:fs").GlobOptions,
1745
+ ): AsyncIterableIterator<string>;
1746
+ export function glob(
1747
+ pattern: string | readonly string[],
1748
+ options: import("node:fs").GlobOptionsWithFileTypes,
1749
+ ): AsyncIterableIterator<import("node:fs").Dirent>;
1568
1750
  export function rm(path: string): Promise<void>;
1569
1751
  export function stat(path: string): Promise<import("node:fs").Stats>;
1570
1752
  export function statfs(
@@ -1583,7 +1765,19 @@ declare module "fs/promises" {
1583
1765
  export function lstat(path: string): Promise<import("node:fs").Stats>;
1584
1766
  export function unlink(path: string): Promise<void>;
1585
1767
  export function chmod(path: string, mode: number): Promise<void>;
1768
+ export function chown(path: string, uid: number, gid: number): Promise<void>;
1769
+ export function lchown(path: string, uid: number, gid: number): Promise<void>;
1770
+ export function access(path: string, mode?: number): Promise<void>;
1771
+ export function truncate(path: string, len?: number): Promise<void>;
1772
+ export function appendFile(path: string, data: string | Uint8Array): Promise<void>;
1773
+ export function copyFile(src: string, dest: string): Promise<void>;
1774
+ export function mkdtemp(prefix: string): Promise<string>;
1775
+ export function rmdir(path: string): Promise<void>;
1586
1776
  export function rename(oldPath: string, newPath: string): Promise<void>;
1777
+ export function opendir(
1778
+ path: string,
1779
+ options?: import("node:fs").OpenDirOptions,
1780
+ ): Promise<import("node:fs").Dir>;
1587
1781
  }
1588
1782
  declare module "node:fs/promises" {
1589
1783
  export * from "fs/promises";
@@ -1593,7 +1787,7 @@ declare module "node:fs/promises" {
1593
1787
  * on posix triples, path.win32 under a win32 triple, with the posix and
1594
1788
  * win32 namespaces answering their own platform anywhere. Every function
1595
1789
  * is a pure string algorithm matching Node's implementations
1596
- * byte-for-byte; join/resolve are variadic like Node's. */
1790
+ * exactly; join/resolve are variadic like Node's. */
1597
1791
  declare module "path" {
1598
1792
  export function join(...paths: string[]): string;
1599
1793
  export function resolve(...paths: string[]): string;
@@ -2029,7 +2223,10 @@ declare var URLSearchParams: {
2029
2223
  /* node:url — the file-URL bridge pair. fileURLToPath accepts a URL value
2030
2224
  * or a URL string and throws Node's TypeErrors (non-file scheme, encoded
2031
2225
  * slashes, non-empty host); pathToFileURL resolves the path and percent-
2032
- * encodes it into a file: URL. */
2226
+ * encodes it into a file: URL. The legacy API: parse() answers a Url
2227
+ * object, format() serializes a Url-shaped object, a string, or a URL,
2228
+ * resolve() resolves one URL string against another, and the domain pair
2229
+ * converts a hostname to and from its Punycode form. */
2033
2230
  declare module "url" {
2034
2231
  export type URL = globalThis.URL;
2035
2232
  export type URLSearchParams = globalThis.URLSearchParams;
@@ -2038,6 +2235,65 @@ declare module "url" {
2038
2235
  export function fileURLToPath(url: string | URL, options?: { windows?: boolean }): string;
2039
2236
  export function fileURLToPathBuffer(url: string | URL, options?: { windows?: boolean }): Buffer;
2040
2237
  export function pathToFileURL(path: string, options?: { windows?: boolean }): URL;
2238
+ export interface UrlObject {
2239
+ auth?: string | null | undefined;
2240
+ hash?: string | null | undefined;
2241
+ host?: string | null | undefined;
2242
+ hostname?: string | null | undefined;
2243
+ href?: string | null | undefined;
2244
+ pathname?: string | null | undefined;
2245
+ protocol?: string | null | undefined;
2246
+ search?: string | null | undefined;
2247
+ slashes?: boolean | null | undefined;
2248
+ port?: string | number | null | undefined;
2249
+ query?: string | null | import("querystring").ParsedUrlQueryInput | undefined;
2250
+ }
2251
+ export interface Url {
2252
+ auth: string | null;
2253
+ hash: string | null;
2254
+ host: string | null;
2255
+ hostname: string | null;
2256
+ href: string;
2257
+ path: string | null;
2258
+ pathname: string | null;
2259
+ protocol: string | null;
2260
+ search: string | null;
2261
+ slashes: boolean | null;
2262
+ port: string | null;
2263
+ query: string | null | import("querystring").ParsedUrlQuery;
2264
+ }
2265
+ export interface UrlWithParsedQuery extends Url {
2266
+ query: import("querystring").ParsedUrlQuery;
2267
+ }
2268
+ export interface UrlWithStringQuery extends Url {
2269
+ query: string | null;
2270
+ }
2271
+ export interface URLFormatOptions {
2272
+ auth?: boolean | undefined;
2273
+ fragment?: boolean | undefined;
2274
+ search?: boolean | undefined;
2275
+ unicode?: boolean | undefined;
2276
+ }
2277
+ export function parse(
2278
+ urlString: string,
2279
+ parseQueryString?: false,
2280
+ slashesDenoteHost?: boolean,
2281
+ ): UrlWithStringQuery;
2282
+ export function parse(
2283
+ urlString: string,
2284
+ parseQueryString: true,
2285
+ slashesDenoteHost?: boolean,
2286
+ ): UrlWithParsedQuery;
2287
+ export function parse(
2288
+ urlString: string,
2289
+ parseQueryString: boolean,
2290
+ slashesDenoteHost?: boolean,
2291
+ ): Url;
2292
+ export function format(urlObject: URL, options?: URLFormatOptions): string;
2293
+ export function format(urlObject: UrlObject | string): string;
2294
+ export function resolve(from: string, to: string): string;
2295
+ export function domainToASCII(domain: string): string;
2296
+ export function domainToUnicode(domain: string): string;
2041
2297
  }
2042
2298
  declare module "node:url" {
2043
2299
  export * from "url";
@@ -2045,34 +2301,127 @@ declare module "node:url" {
2045
2301
 
2046
2302
  /* node:crypto: the static hashing/MAC/random/key-derivation utility slice. */
2047
2303
  declare module "crypto" {
2048
- export function randomUUID(): string;
2304
+ export type KeyObjectType = "secret" | "public" | "private";
2305
+ export interface JsonWebKey {
2306
+ kty?: string;
2307
+ k?: string;
2308
+ }
2309
+ export interface JwkKeyExportOptions {
2310
+ format: "jwk";
2311
+ }
2312
+ export interface KeyExportOptions {
2313
+ format?: "buffer" | undefined;
2314
+ }
2315
+ /** Secret keys only; the asymmetric key types are not available. */
2316
+ export class KeyObject {
2317
+ private constructor();
2318
+ type: KeyObjectType;
2319
+ symmetricKeySize?: number;
2320
+ asymmetricKeyType?: string;
2321
+ export(options?: KeyExportOptions): Buffer;
2322
+ export(options: JwkKeyExportOptions): JsonWebKey;
2323
+ equals(otherKeyObject: KeyObject): boolean;
2324
+ }
2325
+ export function createSecretKey(key: ArrayBufferView | ArrayBufferLike): KeyObject;
2326
+ export function createSecretKey(key: string, encoding: BufferEncoding): KeyObject;
2327
+ export function generateKeySync(type: "hmac" | "aes", options: { length: number }): KeyObject;
2328
+ export function generateKey(
2329
+ type: "hmac" | "aes",
2330
+ options: { length: number },
2331
+ callback: (err: Error | null, key: KeyObject) => void,
2332
+ ): void;
2333
+ export interface RandomUUIDOptions {
2334
+ disableEntropyCache?: boolean | undefined;
2335
+ }
2336
+ export function randomUUID(options?: RandomUUIDOptions): string;
2337
+ export function randomUUIDv7(options?: RandomUUIDOptions): string;
2049
2338
  export function randomBytes(size: number): Buffer;
2339
+ export type BinaryToTextEncoding = "base64" | "base64url" | "hex" | "binary";
2340
+ export type CharacterEncoding = "utf8" | "utf-8" | "utf16le" | "utf-16le" | "latin1";
2341
+ export type LegacyCharacterEncoding = "ascii" | "binary" | "ucs2" | "ucs-2";
2342
+ export type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding;
2343
+ export interface HashOptions {
2344
+ outputLength?: number | undefined;
2345
+ }
2050
2346
  export interface Hash {
2051
- update(data: string | Uint8Array, inputEncoding?: "utf8" | "utf-8" | "hex" | "base64"): Hash;
2347
+ copy(options?: HashOptions): Hash;
2348
+ update(data: string | ArrayBufferView): Hash;
2349
+ update(data: string, inputEncoding: Encoding): Hash;
2052
2350
  digest(): Buffer;
2053
- digest(encoding: "hex" | "base64"): string;
2054
- copy(): Hash;
2351
+ digest(encoding: BinaryToTextEncoding): string;
2055
2352
  }
2056
2353
  export interface Hmac {
2057
- update(data: string | Uint8Array, inputEncoding?: "utf8" | "utf-8" | "hex" | "base64"): Hmac;
2354
+ update(data: string | ArrayBufferView): Hmac;
2355
+ update(data: string, inputEncoding: Encoding): Hmac;
2058
2356
  digest(): Buffer;
2059
- digest(encoding: "hex" | "base64"): string;
2357
+ digest(encoding: BinaryToTextEncoding): string;
2358
+ }
2359
+ export function createHash(algorithm: string, options?: HashOptions): Hash;
2360
+ export function createHmac(
2361
+ algorithm: string,
2362
+ key: BinaryLike | KeyObject,
2363
+ options?: { encoding?: BufferEncoding | undefined },
2364
+ ): Hmac;
2365
+ export interface OneShotDigestOptions {
2366
+ outputEncoding?: BinaryToTextEncoding | "buffer" | undefined;
2367
+ outputLength?: number | undefined;
2368
+ }
2369
+ export interface OneShotDigestOptionsWithStringEncoding extends OneShotDigestOptions {
2370
+ outputEncoding?: BinaryToTextEncoding | undefined;
2371
+ }
2372
+ export interface OneShotDigestOptionsWithBufferEncoding extends OneShotDigestOptions {
2373
+ outputEncoding: "buffer";
2060
2374
  }
2061
- export function createHash(algorithm: string): Hash;
2062
- export function createHmac(algorithm: string, key: string | Uint8Array): Hmac;
2063
2375
  export function hash(
2064
2376
  algorithm: string,
2065
- data: string | Uint8Array,
2066
- outputEncoding?: "hex" | "base64",
2377
+ data: string | ArrayBufferView,
2378
+ options?: OneShotDigestOptionsWithStringEncoding | BinaryToTextEncoding,
2067
2379
  ): string;
2068
- export function timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean;
2069
- export function randomFillSync<T extends Uint8Array>(
2380
+ export function hash(
2381
+ algorithm: string,
2382
+ data: string | ArrayBufferView,
2383
+ options: OneShotDigestOptionsWithBufferEncoding | "buffer",
2384
+ ): Buffer;
2385
+ export function hash(
2386
+ algorithm: string,
2387
+ data: string | ArrayBufferView,
2388
+ options: OneShotDigestOptions | BinaryToTextEncoding | "buffer",
2389
+ ): string | Buffer;
2390
+ export function timingSafeEqual(
2391
+ a: ArrayBufferView | ArrayBufferLike,
2392
+ b: ArrayBufferView | ArrayBufferLike,
2393
+ ): boolean;
2394
+ export function randomFillSync<T extends ArrayBufferView | ArrayBufferLike>(
2070
2395
  buffer: T,
2071
2396
  offset?: number,
2072
2397
  size?: number,
2073
2398
  ): T;
2399
+ export function randomFill<T extends ArrayBufferView | ArrayBufferLike>(
2400
+ buffer: T,
2401
+ callback: (err: Error | null, buf: T) => void,
2402
+ ): void;
2403
+ export function randomFill<T extends ArrayBufferView | ArrayBufferLike>(
2404
+ buffer: T,
2405
+ offset: number,
2406
+ callback: (err: Error | null, buf: T) => void,
2407
+ ): void;
2408
+ export function randomFill<T extends ArrayBufferView | ArrayBufferLike>(
2409
+ buffer: T,
2410
+ offset: number,
2411
+ size: number,
2412
+ callback: (err: Error | null, buf: T) => void,
2413
+ ): void;
2074
2414
  export function randomInt(max: number): number;
2075
2415
  export function randomInt(min: number, max: number): number;
2416
+ export function randomInt(
2417
+ max: number,
2418
+ callback: (err: Error | null, value: number) => void,
2419
+ ): void;
2420
+ export function randomInt(
2421
+ min: number,
2422
+ max: number,
2423
+ callback: (err: Error | null, value: number) => void,
2424
+ ): void;
2076
2425
  export function pbkdf2Sync(
2077
2426
  password: string | Uint8Array,
2078
2427
  salt: string | Uint8Array,
@@ -2123,14 +2472,14 @@ declare module "crypto" {
2123
2472
  ): void;
2124
2473
  export function hkdfSync(
2125
2474
  digest: string,
2126
- ikm: BinaryLike,
2475
+ ikm: BinaryLike | KeyObject,
2127
2476
  salt: BinaryLike,
2128
2477
  info: BinaryLike,
2129
2478
  keylen: number,
2130
2479
  ): ArrayBuffer;
2131
2480
  export function hkdf(
2132
2481
  digest: string,
2133
- ikm: BinaryLike,
2482
+ ikm: BinaryLike | KeyObject,
2134
2483
  salt: BinaryLike,
2135
2484
  info: BinaryLike,
2136
2485
  keylen: number,
@@ -2160,7 +2509,7 @@ declare module "crypto" {
2160
2509
  * stance). Every ACCESS bakes as its literal at lowering; the object
2161
2510
  * itself never materializes (bare crypto.constants value uses fence). */
2162
2511
  export interface CryptoConstants {
2163
- readonly OPENSSL_VERSION_NUMBER: 810549328;
2512
+ readonly OPENSSL_VERSION_NUMBER: 810549376;
2164
2513
  readonly SSL_OP_ALL: 2147485776;
2165
2514
  readonly SSL_OP_ALLOW_NO_DHE_KEX: 1024;
2166
2515
  readonly SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: 262144;
@@ -2200,6 +2549,7 @@ declare module "crypto" {
2200
2549
  readonly DH_UNABLE_TO_CHECK_GENERATOR: 4;
2201
2550
  readonly DH_NOT_SUITABLE_GENERATOR: 8;
2202
2551
  readonly RSA_PKCS1_PADDING: 1;
2552
+ readonly RSA_SSLV23_PADDING: 2;
2203
2553
  readonly RSA_NO_PADDING: 3;
2204
2554
  readonly RSA_PKCS1_OAEP_PADDING: 4;
2205
2555
  readonly RSA_X931_PADDING: 5;
@@ -2902,29 +3252,82 @@ declare module "node:querystring" {
2902
3252
  * on("close", cb). An open interface keeps the process alive until
2903
3253
  * close()/EOF, Node's semantics; lines split on \n and \r\n. */
2904
3254
  declare module "readline" {
3255
+ /* The non-terminal Interface over process.stdin or a stream input
3256
+ * (scr_readline.c). Listener registrations are statements: chaining
3257
+ * on()/once() results has no lowering. */
2905
3258
  export interface Interface extends Disposable {
2906
3259
  question(query: string, callback: (answer: string) => void): void;
2907
3260
  close(): void;
2908
- on(event: "close", listener: () => void): void;
3261
+ pause(): this;
3262
+ resume(): this;
3263
+ prompt(preserveCursor?: boolean): void;
3264
+ setPrompt(prompt: string): void;
3265
+ getPrompt(): string;
3266
+ write(data: string): void;
3267
+ on(event: "line", listener: (input: string) => void): this;
3268
+ on(event: "close" | "pause" | "resume", listener: () => void): this;
3269
+ on(event: "error", listener: (err: Error) => void): this;
3270
+ once(event: "line", listener: (input: string) => void): this;
3271
+ once(event: "close" | "pause" | "resume", listener: () => void): this;
3272
+ once(event: "error", listener: (err: Error) => void): this;
3273
+ addListener(event: "line", listener: (input: string) => void): this;
3274
+ addListener(event: "close" | "pause" | "resume", listener: () => void): this;
3275
+ addListener(event: "error", listener: (err: Error) => void): this;
3276
+ [Symbol.asyncIterator](): AsyncIterableIterator<string>;
2909
3277
  [Symbol.dispose](): void;
2910
3278
  }
2911
- export function createInterface(options: {
3279
+ export interface ReadLineOptions {
2912
3280
  input: unknown;
2913
3281
  output?: unknown;
2914
3282
  terminal?: boolean;
2915
- /* crlfDelay: Infinity is accepted — the lowered splitter already
2916
- * holds a trailing \r for the next chunk, Node's Infinity behavior;
2917
- * completer and the history knobs fence by name (no interactive
2918
- * terminal). The options-record stance (see http.RequestOptions)
2919
- * admits every key; the walk decides. */
3283
+ /* Node's crlfDelay: a \n arriving within this many ms (at least 100)
3284
+ * after a line ended by \r is dropped. completer and the history
3285
+ * knobs fence by name (no interactive terminal). The options-record
3286
+ * stance (see http.RequestOptions) admits every key; the walk
3287
+ * decides. */
2920
3288
  crlfDelay?: number;
2921
3289
  completer?: unknown;
3290
+ signal?: AbortSignal;
2922
3291
  [option: string]: unknown;
2923
- }): Interface;
3292
+ }
3293
+ export function createInterface(options: ReadLineOptions): Interface;
3294
+ export function createInterface(input: unknown, output?: unknown): Interface;
2924
3295
  }
2925
3296
  declare module "node:readline" {
2926
3297
  export * from "readline";
2927
3298
  }
3299
+ declare module "readline/promises" {
3300
+ import { ReadLineOptions } from "readline";
3301
+ /* The readline Interface with the promise question: it resolves with
3302
+ * the next line, rejects with an AbortError when options.signal aborts,
3303
+ * and with ERR_USE_AFTER_CLOSE after close(). */
3304
+ export interface Interface extends Disposable {
3305
+ question(query: string, options?: { signal?: AbortSignal }): Promise<string>;
3306
+ close(): void;
3307
+ pause(): this;
3308
+ resume(): this;
3309
+ prompt(preserveCursor?: boolean): void;
3310
+ setPrompt(prompt: string): void;
3311
+ getPrompt(): string;
3312
+ write(data: string): void;
3313
+ on(event: "line", listener: (input: string) => void): this;
3314
+ on(event: "close" | "pause" | "resume", listener: () => void): this;
3315
+ on(event: "error", listener: (err: Error) => void): this;
3316
+ once(event: "line", listener: (input: string) => void): this;
3317
+ once(event: "close" | "pause" | "resume", listener: () => void): this;
3318
+ once(event: "error", listener: (err: Error) => void): this;
3319
+ addListener(event: "line", listener: (input: string) => void): this;
3320
+ addListener(event: "close" | "pause" | "resume", listener: () => void): this;
3321
+ addListener(event: "error", listener: (err: Error) => void): this;
3322
+ [Symbol.asyncIterator](): AsyncIterableIterator<string>;
3323
+ [Symbol.dispose](): void;
3324
+ }
3325
+ export function createInterface(options: ReadLineOptions): Interface;
3326
+ export function createInterface(input: unknown, output?: unknown): Interface;
3327
+ }
3328
+ declare module "node:readline/promises" {
3329
+ export * from "readline/promises";
3330
+ }
2928
3331
 
2929
3332
  /* node:zlib — the one-shot zlib/raw/gzip codecs lower for string/Buffer
2930
3333
  * inputs with Node's default options; libz links only into zlib-using
@@ -3008,6 +3411,9 @@ declare module "node:zlib" {
3008
3411
  * 'error'. */
3009
3412
  declare module "net" {
3010
3413
  export interface Socket {
3414
+ /* Whether the socket keeps the event loop alive (ref'd by default). */
3415
+ ref(): void;
3416
+ unref(): void;
3011
3417
  readonly remoteAddress: string | undefined;
3012
3418
  /* true once the fd is gone (destroy() or full close) — Node's flag. */
3013
3419
  readonly destroyed: boolean;
@@ -3072,6 +3478,9 @@ declare module "net" {
3072
3478
  once(event: "session", listener: (session: Buffer) => void): void;
3073
3479
  }
3074
3480
  export interface Server {
3481
+ /* Whether the server keeps the event loop alive (ref'd by default). */
3482
+ ref(): void;
3483
+ unref(): void;
3075
3484
  readonly listening: boolean;
3076
3485
  /* Node answers the server itself (`return this` chaining). */
3077
3486
  listen(port: number, callback?: () => void): Server;
@@ -3266,7 +3675,8 @@ declare module "http" {
3266
3675
  destroy(): void;
3267
3676
  setTimeout(msecs: number, callback?: () => void): this;
3268
3677
  /* setEncoding('utf8'): 'data' delivers strings (other real encodings
3269
- * fence loudly at runtime; unknown names throw ERR_UNKNOWN_ENCODING). */
3678
+ * throw a "not supported yet" Error at runtime; unknown names throw
3679
+ * ERR_UNKNOWN_ENCODING). */
3270
3680
  setEncoding(encoding: string): void;
3271
3681
  /* The proxy legs: the body streams into a ServerResponse, a
3272
3682
  * ClientRequest, or a raw Socket; natural end ends the destination. */
@@ -3503,7 +3913,7 @@ declare module "node:http" {
3503
3913
  * that behaves exactly like a net socket (write/end/destroy/pipe and the
3504
3914
  * data/end/close/error events are the same lowered surface). cert/key
3505
3915
  * are PEM strings or Buffers. Handshake failures tear the socket down
3506
- * silently, Node's default for 'tlsClientError' with no listener. */
3916
+ * without emitting an event, Node's default for 'tlsClientError' with no listener. */
3507
3917
  declare module "tls" {
3508
3918
  import { Server, Socket } from "net";
3509
3919
  export { Server };
@@ -4448,6 +4858,10 @@ declare module "buffer" {
4448
4858
  export const kMaxLength: number;
4449
4859
  export const kStringMaxLength: number;
4450
4860
  export const Buffer: BufferConstructor;
4861
+ export type Blob = globalThis.Blob;
4862
+ export type File = globalThis.File;
4863
+ export const Blob: typeof globalThis.Blob;
4864
+ export const File: typeof globalThis.File;
4451
4865
  }
4452
4866
  declare module "node:buffer" {
4453
4867
  export * from "buffer";
@@ -4599,7 +5013,7 @@ declare module "stream" {
4599
5013
  emitClose?: boolean;
4600
5014
  captureRejections?: boolean;
4601
5015
  defaultEncoding?: string;
4602
- signal?: unknown;
5016
+ signal?: AbortSignal;
4603
5017
  }
4604
5018
  interface WritableOptions {
4605
5019
  highWaterMark?: number;
@@ -4619,7 +5033,7 @@ declare module "stream" {
4619
5033
  autoDestroy?: boolean;
4620
5034
  emitClose?: boolean;
4621
5035
  captureRejections?: boolean;
4622
- signal?: unknown;
5036
+ signal?: AbortSignal;
4623
5037
  }
4624
5038
  interface DuplexOptions {
4625
5039
  highWaterMark?: number;
@@ -4648,7 +5062,7 @@ declare module "stream" {
4648
5062
  writable?: boolean;
4649
5063
  defaultEncoding?: string;
4650
5064
  writev?(this: Duplex, chunks: unknown[], callback: (error?: Error | null) => void): void;
4651
- signal?: unknown;
5065
+ signal?: AbortSignal;
4652
5066
  }
4653
5067
  interface TransformOptions {
4654
5068
  highWaterMark?: number;
@@ -4684,7 +5098,7 @@ declare module "stream" {
4684
5098
  readable?: boolean;
4685
5099
  writable?: boolean;
4686
5100
  defaultEncoding?: string;
4687
- signal?: unknown;
5101
+ signal?: AbortSignal;
4688
5102
  }
4689
5103
 
4690
5104
  class Readable extends EventEmitter {
@@ -4928,15 +5342,34 @@ declare module "stream" {
4928
5342
  constructor(opts?: TransformOptions);
4929
5343
  }
4930
5344
 
5345
+ /* addAbortSignal(signal, stream): the stream, destroyed with an
5346
+ * AbortError (cause: signal.reason) when the signal aborts. */
5347
+ function addAbortSignal<T extends Readable | Writable>(signal: AbortSignal, stream: T): T;
4931
5348
  /* Declared so requires typecheck; each fences at its use site. */
4932
5349
  function pipeline(...streams: unknown[]): unknown;
5350
+ /* finished's options: readable/writable choose which ends count,
5351
+ * error: false ignores 'error' events, signal aborts the wait. */
5352
+ interface FinishedOptions {
5353
+ readable?: boolean;
5354
+ writable?: boolean;
5355
+ error?: boolean;
5356
+ signal?: AbortSignal;
5357
+ }
4933
5358
  function finished(stream: unknown, callback: (err?: Error | null) => void): () => void;
5359
+ function finished(
5360
+ stream: unknown,
5361
+ options: FinishedOptions | null,
5362
+ callback: (err?: Error | null) => void,
5363
+ ): () => void;
4934
5364
  /* Folds to the TARGET platform's default at compile time (win32 16384,
4935
5365
  * else 65536 — Node's own state.js split); literal argument only. */
4936
5366
  function getDefaultHighWaterMark(objectMode: boolean): number;
4937
5367
  namespace promises {
4938
5368
  function pipeline(...streams: unknown[]): Promise<void>;
4939
- function finished(stream: unknown): Promise<void>;
5369
+ function finished(
5370
+ stream: unknown,
5371
+ options?: FinishedOptions & { cleanup?: boolean },
5372
+ ): Promise<void>;
4940
5373
  }
4941
5374
  class Stream extends EventEmitter {}
4942
5375
 
@@ -4947,12 +5380,19 @@ declare module "stream" {
4947
5380
  Transform,
4948
5381
  PassThrough,
4949
5382
  Stream,
5383
+ addAbortSignal,
4950
5384
  pipeline,
4951
5385
  finished,
4952
5386
  getDefaultHighWaterMark,
4953
5387
  promises,
4954
5388
  };
4955
- export type { ReadableOptions, WritableOptions, DuplexOptions, TransformOptions };
5389
+ export type {
5390
+ ReadableOptions,
5391
+ WritableOptions,
5392
+ DuplexOptions,
5393
+ TransformOptions,
5394
+ FinishedOptions,
5395
+ };
4956
5396
  }
4957
5397
  declare module "node:stream" {
4958
5398
  import stream = require("stream");
@@ -4962,9 +5402,20 @@ declare module "stream/promises" {
4962
5402
  /* The promise forms of finished/pipeline: a void promise the stream's
4963
5403
  * terminal point settles (rejected with the error, or
4964
5404
  * ERR_STREAM_PREMATURE_CLOSE on an early close). Stream arguments are
4965
- * the lowered surface — iterables/generators/functions fence per site. */
5405
+ * the lowered surface — iterables/generators/functions fence per site.
5406
+ * pipeline's trailing { signal, end } object and finished's options
5407
+ * (readable, writable, error, cleanup, signal) are supported. */
4966
5408
  function pipeline(...streams: unknown[]): Promise<void>;
4967
- function finished(stream: unknown): Promise<void>;
5409
+ function finished(
5410
+ stream: unknown,
5411
+ options?: {
5412
+ readable?: boolean;
5413
+ writable?: boolean;
5414
+ error?: boolean;
5415
+ cleanup?: boolean;
5416
+ signal?: AbortSignal;
5417
+ } | null,
5418
+ ): Promise<void>;
4968
5419
  export { pipeline, finished };
4969
5420
  }
4970
5421
  declare module "node:stream/promises" {
@@ -4978,8 +5429,8 @@ declare module "stream/consumers" {
4978
5429
  * with the parse's SyntaxError), buffer (the concatenated bytes;
4979
5430
  * string chunks contribute their utf8 bytes, Node's Blob rule).
4980
5431
  * Stream errors reject; an early close rejects with
4981
- * ERR_STREAM_PREMATURE_CLOSE. arrayBuffer and blob fence per site:
4982
- * neither value has a representation in a compiled binary. */
5432
+ * ERR_STREAM_PREMATURE_CLOSE. arrayBuffer answers an ArrayBuffer over
5433
+ * the bytes; blob fences per site. */
4983
5434
  function text(stream: unknown): Promise<string>;
4984
5435
  function json(stream: unknown): Promise<unknown>;
4985
5436
  function buffer(stream: unknown): Promise<Buffer>;