@scriptc/compiler 0.4.6 → 0.4.7

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 (652) hide show
  1. package/ambient/node-fallback/events.d.ts +6 -1
  2. package/ambient/node-fallback/fs-promises.d.ts +1 -1
  3. package/ambient/node-fallback/fs.d.ts +54 -10
  4. package/ambient/node-fallback/http.d.ts +3 -1
  5. package/ambient/node-fallback/net.d.ts +19 -0
  6. package/ambient/node-fallback/querystring.d.ts +3 -3
  7. package/ambient/scriptc-node-fallback.d.ts +58 -13
  8. package/dist/backend/executable-features.js +13 -0
  9. package/dist/backend/executable-features.js.map +1 -1
  10. package/dist/backend/immutability.d.ts +12 -1
  11. package/dist/backend/immutability.js +50 -4
  12. package/dist/backend/immutability.js.map +1 -1
  13. package/dist/backend/immutability.test.js +95 -1
  14. package/dist/backend/immutability.test.js.map +1 -1
  15. package/dist/backend/library-pack.js +2 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/linker.d.ts +11 -0
  18. package/dist/backend/linker.js +31 -3
  19. package/dist/backend/linker.js.map +1 -1
  20. package/dist/backend/lld.d.ts +7 -2
  21. package/dist/backend/lld.js +5 -3
  22. package/dist/backend/lld.js.map +1 -1
  23. package/dist/backend/lld.test.js +10 -4
  24. package/dist/backend/lld.test.js.map +1 -1
  25. package/dist/backend/llvm/constant-callbacks.test.js +50 -1
  26. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  27. package/dist/backend/llvm/cpu-dispatch.js +6 -5
  28. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  29. package/dist/backend/llvm/dyn.d.ts +53 -1
  30. package/dist/backend/llvm/dyn.js +221 -9
  31. package/dist/backend/llvm/dyn.js.map +1 -1
  32. package/dist/backend/llvm/emit-function.js +1 -1
  33. package/dist/backend/llvm/emit-function.js.map +1 -1
  34. package/dist/backend/llvm/emit-module.js +148 -50
  35. package/dist/backend/llvm/emit-module.js.map +1 -1
  36. package/dist/backend/llvm/emit-statements.js +39 -19
  37. package/dist/backend/llvm/emit-statements.js.map +1 -1
  38. package/dist/backend/llvm/emitter.d.ts +29 -2
  39. package/dist/backend/llvm/emitter.js +86 -7
  40. package/dist/backend/llvm/emitter.js.map +1 -1
  41. package/dist/backend/llvm/expr-calls.d.ts +4 -1
  42. package/dist/backend/llvm/expr-calls.js +20 -4
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-dynamic.js +209 -16
  45. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  46. package/dist/backend/llvm/expr-primitives.js +94 -11
  47. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  48. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  49. package/dist/backend/llvm/expr-stream-bridges.js +42 -2
  50. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  51. package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
  52. package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
  53. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/integer-values.d.ts +2 -0
  55. package/dist/backend/llvm/integer-values.js +6 -0
  56. package/dist/backend/llvm/integer-values.js.map +1 -1
  57. package/dist/backend/llvm/js-ic.d.ts +38 -0
  58. package/dist/backend/llvm/js-ic.js +295 -1
  59. package/dist/backend/llvm/js-ic.js.map +1 -1
  60. package/dist/backend/llvm/lib-dispatch.js +20 -0
  61. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  62. package/dist/backend/llvm/lib-filesystem.js +116 -11
  63. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  64. package/dist/backend/llvm/lib-process.js +136 -24
  65. package/dist/backend/llvm/lib-process.js.map +1 -1
  66. package/dist/backend/llvm/lib-shared.js +70 -0
  67. package/dist/backend/llvm/lib-shared.js.map +1 -1
  68. package/dist/backend/llvm/lib-stream.js +67 -0
  69. package/dist/backend/llvm/lib-stream.js.map +1 -1
  70. package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
  71. package/dist/backend/llvm/loop-entry-versions.js +43 -21
  72. package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
  73. package/dist/backend/llvm/loop-state.d.ts +7 -1
  74. package/dist/backend/llvm/loop-state.js +20 -2
  75. package/dist/backend/llvm/loop-state.js.map +1 -1
  76. package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
  77. package/dist/backend/llvm/map-number-lookup.js +7 -3
  78. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  79. package/dist/backend/llvm/map-number-lookup.test.js +52 -11
  80. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  81. package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
  82. package/dist/backend/llvm/receiver-brackets.test.js +68 -0
  83. package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
  84. package/dist/backend/llvm/record-views.d.ts +22 -2
  85. package/dist/backend/llvm/record-views.js +139 -10
  86. package/dist/backend/llvm/record-views.js.map +1 -1
  87. package/dist/backend/llvm/record-views.test.js +76 -0
  88. package/dist/backend/llvm/record-views.test.js.map +1 -1
  89. package/dist/backend/llvm/reference-writes.js +1 -0
  90. package/dist/backend/llvm/reference-writes.js.map +1 -1
  91. package/dist/backend/llvm/shapes.d.ts +3 -0
  92. package/dist/backend/llvm/shapes.js +18 -3
  93. package/dist/backend/llvm/shapes.js.map +1 -1
  94. package/dist/backend/llvm/shapes.test.js +4 -0
  95. package/dist/backend/llvm/shapes.test.js.map +1 -1
  96. package/dist/backend/llvm/speculative-integers.d.ts +10 -1
  97. package/dist/backend/llvm/speculative-integers.js +59 -8
  98. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  99. package/dist/backend/llvm/unwind-abi.d.ts +3 -3
  100. package/dist/backend/llvm/unwind-abi.js +8 -3
  101. package/dist/backend/llvm/unwind-abi.js.map +1 -1
  102. package/dist/backend/llvm/walkers.js +1 -1
  103. package/dist/backend/llvm/walkers.js.map +1 -1
  104. package/dist/backend/native/contracts.d.ts +54 -0
  105. package/dist/backend/native/executable.js +87 -5
  106. package/dist/backend/native/executable.js.map +1 -1
  107. package/dist/backend/native/library.js +1 -1
  108. package/dist/backend/native/library.js.map +1 -1
  109. package/dist/backend/native/runtime-inputs.js +5 -1
  110. package/dist/backend/native/runtime-inputs.js.map +1 -1
  111. package/dist/backend/native/vendor.d.ts +1 -1
  112. package/dist/backend/native/vendor.js +1 -1
  113. package/dist/backend/native/vendor.js.map +1 -1
  114. package/dist/backend/native-codegen.js +3 -0
  115. package/dist/backend/native-codegen.js.map +1 -1
  116. package/dist/backend/native-link-info-core.d.ts +43 -0
  117. package/dist/backend/native-link-info-core.js.map +1 -1
  118. package/dist/backend/native-link-info.js +1 -0
  119. package/dist/backend/native-link-info.js.map +1 -1
  120. package/dist/backend/native-profile.d.ts +4 -1
  121. package/dist/backend/native-profile.js +12 -1
  122. package/dist/backend/native-profile.js.map +1 -1
  123. package/dist/backend/native-profile.test.js +10 -0
  124. package/dist/backend/native-profile.test.js.map +1 -1
  125. package/dist/backend/publication.d.ts +4 -1
  126. package/dist/backend/publication.js +4 -2
  127. package/dist/backend/publication.js.map +1 -1
  128. package/dist/backend/runtime-abi.d.ts +2 -2
  129. package/dist/backend/runtime-abi.js +2 -2
  130. package/dist/backend/runtime-pack-core.d.ts +31 -7
  131. package/dist/backend/runtime-pack-core.js +21 -1
  132. package/dist/backend/runtime-pack-core.js.map +1 -1
  133. package/dist/backend/runtime-pack-native.d.ts +18 -1
  134. package/dist/backend/runtime-pack-native.js +138 -29
  135. package/dist/backend/runtime-pack-native.js.map +1 -1
  136. package/dist/backend/runtime-pack-native.test.js +166 -4
  137. package/dist/backend/runtime-pack-native.test.js.map +1 -1
  138. package/dist/backend/runtime-pack-targets.test.js +3 -1
  139. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  140. package/dist/backend/runtime-pack.d.ts +7 -0
  141. package/dist/backend/runtime-pack.js +25 -3
  142. package/dist/backend/runtime-pack.js.map +1 -1
  143. package/dist/backend/runtime-pack.test.js +3 -11
  144. package/dist/backend/runtime-pack.test.js.map +1 -1
  145. package/dist/backend/vendor-archives.d.ts +4 -1
  146. package/dist/backend/vendor-archives.js +264 -3
  147. package/dist/backend/vendor-archives.js.map +1 -1
  148. package/dist/backend/vendor-inputs.d.ts +36 -0
  149. package/dist/backend/vendor-inputs.js +42 -0
  150. package/dist/backend/vendor-inputs.js.map +1 -1
  151. package/dist/backend/vendor-inputs.test.js +28 -1
  152. package/dist/backend/vendor-inputs.test.js.map +1 -1
  153. package/dist/backend/warm-cache.js +2 -0
  154. package/dist/backend/warm-cache.js.map +1 -1
  155. package/dist/compat/fetch-profile.d.ts +7 -1
  156. package/dist/compat/fetch-profile.js +23 -10
  157. package/dist/compat/fetch-profile.js.map +1 -1
  158. package/dist/compile-types.d.ts +7 -0
  159. package/dist/contracts/check.d.ts +3 -0
  160. package/dist/contracts/check.js +18 -5
  161. package/dist/contracts/check.js.map +1 -1
  162. package/dist/coverage/surface-manifest.js +1 -1
  163. package/dist/coverage/surface-manifest.js.map +1 -1
  164. package/dist/diagnostics/codes.d.ts +6 -0
  165. package/dist/diagnostics/codes.js +6 -0
  166. package/dist/diagnostics/codes.js.map +1 -1
  167. package/dist/diagnostics/diagnostic.d.ts +50 -0
  168. package/dist/diagnostics/diagnostic.js +142 -3
  169. package/dist/diagnostics/diagnostic.js.map +1 -1
  170. package/dist/diagnostics/dynamic-tier.js +3 -1
  171. package/dist/diagnostics/dynamic-tier.js.map +1 -1
  172. package/dist/executable/executable-cache.d.ts +29 -0
  173. package/dist/executable/executable-cache.js +18 -0
  174. package/dist/executable/executable-cache.js.map +1 -1
  175. package/dist/executable/executable-cache.test.js +5 -1
  176. package/dist/executable/executable-cache.test.js.map +1 -1
  177. package/dist/executable/prepare.d.ts +13 -3
  178. package/dist/executable/prepare.js +271 -18
  179. package/dist/executable/prepare.js.map +1 -1
  180. package/dist/frontend/early-errors.d.ts +14 -0
  181. package/dist/frontend/early-errors.js +305 -0
  182. package/dist/frontend/early-errors.js.map +1 -0
  183. package/dist/frontend/early-errors.test.d.ts +1 -0
  184. package/dist/frontend/early-errors.test.js +42 -0
  185. package/dist/frontend/early-errors.test.js.map +1 -0
  186. package/dist/frontend/inferred-js-diagnostics.test.js +23 -0
  187. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  188. package/dist/frontend/input-tracker.d.ts +47 -0
  189. package/dist/frontend/input-tracker.js +173 -36
  190. package/dist/frontend/input-tracker.js.map +1 -1
  191. package/dist/frontend/input-tracker.test.js +86 -2
  192. package/dist/frontend/input-tracker.test.js.map +1 -1
  193. package/dist/frontend/js-inference.d.ts +2 -0
  194. package/dist/frontend/js-inference.js +18 -0
  195. package/dist/frontend/js-inference.js.map +1 -0
  196. package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
  197. package/dist/frontend/lowering/binding-analysis.js +65 -1
  198. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  199. package/dist/frontend/lowering/builtin-calls.js +9 -0
  200. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  201. package/dist/frontend/lowering/builtin-namespaces.d.ts +1 -1
  202. package/dist/frontend/lowering/builtin-namespaces.js +19 -2
  203. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  204. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
  205. package/dist/frontend/lowering/builtins/child-process-methods.js +50 -10
  206. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  207. package/dist/frontend/lowering/builtins/child-process.js +5 -1
  208. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
  210. package/dist/frontend/lowering/builtins/dates.js +23 -1
  211. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  212. package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
  213. package/dist/frontend/lowering/builtins/environment.js +213 -2
  214. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  215. package/dist/frontend/lowering/builtins/filesystem-calls.js +47 -16
  216. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  217. package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
  218. package/dist/frontend/lowering/builtins/filesystem.js +185 -16
  219. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/module-calls.js +39 -2
  221. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  222. package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
  223. package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
  224. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  225. package/dist/frontend/lowering/builtins/operating-system.d.ts +3 -2
  226. package/dist/frontend/lowering/builtins/operating-system.js +5 -4
  227. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/process.d.ts +17 -1
  229. package/dist/frontend/lowering/builtins/process.js +285 -19
  230. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
  232. package/dist/frontend/lowering/builtins/querystring.js +202 -18
  233. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/readline.js +21 -3
  235. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  236. package/dist/frontend/lowering/builtins/reflection.js +60 -1
  237. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  238. package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
  239. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  240. package/dist/frontend/lowering/builtins/url.js +20 -1
  241. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  242. package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
  243. package/dist/frontend/lowering/builtins/v8.js +7 -5
  244. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  245. package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
  246. package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
  247. package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
  248. package/dist/frontend/lowering/call-signatures.js +77 -0
  249. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  250. package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
  251. package/dist/frontend/lowering/cjs-exports-object.js +1 -1
  252. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  253. package/dist/frontend/lowering/cjs-inline-require.js +5 -0
  254. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  255. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +5 -0
  256. package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
  257. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  258. package/dist/frontend/lowering/class-protocols.js +59 -10
  259. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  260. package/dist/frontend/lowering/class-runtime-statics.js +15 -0
  261. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  262. package/dist/frontend/lowering/class-views.d.ts +13 -0
  263. package/dist/frontend/lowering/class-views.js +51 -0
  264. package/dist/frontend/lowering/class-views.js.map +1 -0
  265. package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
  266. package/dist/frontend/lowering/coercions/function-adapters.js +54 -10
  267. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  268. package/dist/frontend/lowering/coercions/state.d.ts +7 -0
  269. package/dist/frontend/lowering/coercions/state.js +7 -0
  270. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  271. package/dist/frontend/lowering/coercions/structural-plans.js +60 -3
  272. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  273. package/dist/frontend/lowering/coercions/structural.js +29 -1
  274. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  275. package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
  276. package/dist/frontend/lowering/containers/array-callbacks.js +132 -28
  277. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  278. package/dist/frontend/lowering/containers/array-construction.js +16 -5
  279. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  280. package/dist/frontend/lowering/containers/array-methods.js +16 -0
  281. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  282. package/dist/frontend/lowering/containers/bytes.js +4 -0
  283. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  284. package/dist/frontend/lowering/containers/callback-arguments.d.ts +11 -0
  285. package/dist/frontend/lowering/containers/callback-arguments.js +53 -0
  286. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  287. package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
  288. package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
  289. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
  290. package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
  291. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  292. package/dist/frontend/lowering/expressions/array-literals.d.ts +14 -0
  293. package/dist/frontend/lowering/expressions/array-literals.js +26 -10
  294. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/binary.js +104 -12
  296. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  297. package/dist/frontend/lowering/expressions/element-access.js +121 -4
  298. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  299. package/dist/frontend/lowering/expressions/identifiers.js +143 -3
  300. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  301. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
  302. package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
  303. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  304. package/dist/frontend/lowering/expressions/narrowing.js +25 -1
  305. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  306. package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
  307. package/dist/frontend/lowering/expressions/object-literals.js +778 -229
  308. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  309. package/dist/frontend/lowering/expressions/optional-chains.js +66 -20
  310. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  311. package/dist/frontend/lowering/expressions/property-access.d.ts +31 -0
  312. package/dist/frontend/lowering/expressions/property-access.js +796 -12
  313. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  314. package/dist/frontend/lowering/expressions/relational.js +29 -1
  315. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  316. package/dist/frontend/lowering/expressions/typeof.js +17 -0
  317. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  318. package/dist/frontend/lowering/expressions/updates.js +132 -17
  319. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  320. package/dist/frontend/lowering/frozen-records.d.ts +6 -0
  321. package/dist/frontend/lowering/frozen-records.js +10 -4
  322. package/dist/frontend/lowering/frozen-records.js.map +1 -1
  323. package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
  324. package/dist/frontend/lowering/frozen-records.test.js +44 -0
  325. package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
  326. package/dist/frontend/lowering/function-names.d.ts +9 -0
  327. package/dist/frontend/lowering/function-names.js +95 -0
  328. package/dist/frontend/lowering/function-names.js.map +1 -0
  329. package/dist/frontend/lowering/function-returns.js +5 -3
  330. package/dist/frontend/lowering/function-returns.js.map +1 -1
  331. package/dist/frontend/lowering/generic-functions.d.ts +49 -0
  332. package/dist/frontend/lowering/generic-functions.js +365 -7
  333. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  334. package/dist/frontend/lowering/global-values.d.ts +9 -0
  335. package/dist/frontend/lowering/global-values.js +44 -0
  336. package/dist/frontend/lowering/global-values.js.map +1 -1
  337. package/dist/frontend/lowering/handle-properties.js +34 -1
  338. package/dist/frontend/lowering/handle-properties.js.map +1 -1
  339. package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
  340. package/dist/frontend/lowering/key-order-witness.js +546 -5
  341. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  342. package/dist/frontend/lowering/lib-boundary.js +14 -0
  343. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  344. package/dist/frontend/lowering/lower-assert.js +110 -1
  345. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  346. package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
  347. package/dist/frontend/lowering/lower-builtin-values.js +332 -58
  348. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  349. package/dist/frontend/lowering/lower-calls.d.ts +22 -1
  350. package/dist/frontend/lowering/lower-calls.js +427 -48
  351. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  352. package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
  353. package/dist/frontend/lowering/lower-calls.test.js +78 -0
  354. package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
  355. package/dist/frontend/lowering/lower-classes.d.ts +16 -5
  356. package/dist/frontend/lowering/lower-classes.js +168 -51
  357. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  358. package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -0
  359. package/dist/frontend/lowering/lower-event-emitter.js +383 -41
  360. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  361. package/dist/frontend/lowering/lower-exprs.d.ts +14 -0
  362. package/dist/frontend/lowering/lower-exprs.js +25 -0
  363. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  364. package/dist/frontend/lowering/lower-functions.js +2 -0
  365. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  366. package/dist/frontend/lowering/lower-inspect.js +80 -33
  367. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  368. package/dist/frontend/lowering/lower-modules.js +87 -25
  369. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  370. package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
  371. package/dist/frontend/lowering/lower-node-island.js +456 -61
  372. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  373. package/dist/frontend/lowering/lower-server.js +160 -9
  374. package/dist/frontend/lowering/lower-server.js.map +1 -1
  375. package/dist/frontend/lowering/lower-shared-modules.js +13 -1
  376. package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
  377. package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
  378. package/dist/frontend/lowering/lower-stdlib.js +32 -18
  379. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  380. package/dist/frontend/lowering/lower-stmts.d.ts +21 -4
  381. package/dist/frontend/lowering/lower-stmts.js +580 -103
  382. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  383. package/dist/frontend/lowering/lower-stream.js +126 -8
  384. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  385. package/dist/frontend/lowering/lower-timers.js +133 -21
  386. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  387. package/dist/frontend/lowering/lowerer.d.ts +139 -3
  388. package/dist/frontend/lowering/lowerer.js +579 -43
  389. package/dist/frontend/lowering/lowerer.js.map +1 -1
  390. package/dist/frontend/lowering/lowerer.test.js +1 -1
  391. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  392. package/dist/frontend/lowering/module-namespace-elements.js +15 -0
  393. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  394. package/dist/frontend/lowering/new-target.js +2 -2
  395. package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
  396. package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
  397. package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
  398. package/dist/frontend/lowering/partial-assertions.d.ts +39 -0
  399. package/dist/frontend/lowering/partial-assertions.js +195 -0
  400. package/dist/frontend/lowering/partial-assertions.js.map +1 -0
  401. package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
  402. package/dist/frontend/lowering/primitive-wrappers.js +220 -0
  403. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
  404. package/dist/frontend/lowering/private-statics.d.ts +46 -0
  405. package/dist/frontend/lowering/private-statics.js +322 -0
  406. package/dist/frontend/lowering/private-statics.js.map +1 -0
  407. package/dist/frontend/lowering/record-sources.d.ts +12 -1
  408. package/dist/frontend/lowering/record-sources.js +60 -0
  409. package/dist/frontend/lowering/record-sources.js.map +1 -1
  410. package/dist/frontend/lowering/strict-equality.d.ts +4 -0
  411. package/dist/frontend/lowering/strict-equality.js +14 -0
  412. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  413. package/dist/frontend/lowering/surfaces.d.ts +27 -0
  414. package/dist/frontend/lowering/surfaces.js +135 -62
  415. package/dist/frontend/lowering/surfaces.js.map +1 -1
  416. package/dist/frontend/lowering/unit-journal.d.ts +128 -17
  417. package/dist/frontend/lowering/unit-journal.js +310 -53
  418. package/dist/frontend/lowering/unit-journal.js.map +1 -1
  419. package/dist/frontend/lowering/unit-journal.test.js +91 -3
  420. package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
  421. package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
  422. package/dist/frontend/lowering/unit-reuse.js +1008 -0
  423. package/dist/frontend/lowering/unit-reuse.js.map +1 -0
  424. package/dist/frontend/lowering/width-lift.d.ts +12 -0
  425. package/dist/frontend/npm-file-import.test.d.ts +1 -0
  426. package/dist/frontend/npm-file-import.test.js +76 -0
  427. package/dist/frontend/npm-file-import.test.js.map +1 -0
  428. package/dist/frontend/npm-static.js +17 -2
  429. package/dist/frontend/npm-static.js.map +1 -1
  430. package/dist/frontend/npm.d.ts +9 -0
  431. package/dist/frontend/npm.js +82 -0
  432. package/dist/frontend/npm.js.map +1 -1
  433. package/dist/frontend/pipeline-native.js +2 -1
  434. package/dist/frontend/pipeline-native.js.map +1 -1
  435. package/dist/frontend/pipeline.d.ts +4 -0
  436. package/dist/frontend/pipeline.js +68 -7
  437. package/dist/frontend/pipeline.js.map +1 -1
  438. package/dist/frontend/program-node.d.ts +3 -0
  439. package/dist/frontend/program-node.js +13 -6
  440. package/dist/frontend/program-node.js.map +1 -1
  441. package/dist/frontend/program.d.ts +9 -0
  442. package/dist/frontend/program.js +159 -7
  443. package/dist/frontend/program.js.map +1 -1
  444. package/dist/frontend/provenance-core.js +4 -0
  445. package/dist/frontend/provenance-core.js.map +1 -1
  446. package/dist/frontend/services.d.ts +14 -0
  447. package/dist/frontend/services.js +52 -2
  448. package/dist/frontend/services.js.map +1 -1
  449. package/dist/frontend/services.test.js +61 -1
  450. package/dist/frontend/services.test.js.map +1 -1
  451. package/dist/frontend/shape-inference/analyze.d.ts +5 -0
  452. package/dist/frontend/shape-inference/analyze.js +104 -4
  453. package/dist/frontend/shape-inference/analyze.js.map +1 -1
  454. package/dist/frontend/shape-inference/domain.js +0 -1
  455. package/dist/frontend/shape-inference/domain.js.map +1 -1
  456. package/dist/frontend/shape-inference/index.js +5 -1
  457. package/dist/frontend/shape-inference/index.js.map +1 -1
  458. package/dist/frontend/shape-inference/memo.d.ts +2 -1
  459. package/dist/frontend/shape-inference/memo.js +6 -2
  460. package/dist/frontend/shape-inference/memo.js.map +1 -1
  461. package/dist/frontend/shape-inference/overlay.d.ts +1 -1
  462. package/dist/frontend/shape-inference/overlay.js +116 -2
  463. package/dist/frontend/shape-inference/overlay.js.map +1 -1
  464. package/dist/frontend/shape-inference/static-objects.js +11 -6
  465. package/dist/frontend/shape-inference/static-objects.js.map +1 -1
  466. package/dist/frontend/source-phase-imports.test.d.ts +1 -0
  467. package/dist/frontend/source-phase-imports.test.js +37 -0
  468. package/dist/frontend/source-phase-imports.test.js.map +1 -0
  469. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  470. package/dist/frontend/ts7/ast-node.js +12 -0
  471. package/dist/frontend/ts7/ast-node.js.map +1 -1
  472. package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
  473. package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
  474. package/dist/frontend/ts7/ast-wire.js +3 -5
  475. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  476. package/dist/frontend/ts7/checker-backend.d.ts +13 -0
  477. package/dist/frontend/ts7/checker-backend.js +84 -2
  478. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  479. package/dist/frontend/ts7/checker-backend.test.js +126 -2
  480. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  481. package/dist/frontend/ts7/program-host.d.ts +22 -1
  482. package/dist/frontend/ts7/program-host.js +49 -4
  483. package/dist/frontend/ts7/program-host.js.map +1 -1
  484. package/dist/frontend/ts7/program-host.test.js +83 -0
  485. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  486. package/dist/frontend/ts7/rpc-process.d.ts +16 -1
  487. package/dist/frontend/ts7/rpc-process.js +170 -92
  488. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  489. package/dist/frontend/ts7/rpc-process.test.js +49 -21
  490. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  491. package/dist/frontend/tsc-codes.js +70 -0
  492. package/dist/frontend/tsc-codes.js.map +1 -1
  493. package/dist/frontend/type-mapper.d.ts +7 -2
  494. package/dist/frontend/type-mapper.js +148 -1
  495. package/dist/frontend/type-mapper.js.map +1 -1
  496. package/dist/index.d.ts +1 -1
  497. package/dist/index.js +152 -8
  498. package/dist/index.js.map +1 -1
  499. package/dist/ir/api.d.ts +1 -1
  500. package/dist/ir/api.js +1 -1
  501. package/dist/ir/api.js.map +1 -1
  502. package/dist/ir/build.d.ts +3 -2
  503. package/dist/ir/build.js +4 -2
  504. package/dist/ir/build.js.map +1 -1
  505. package/dist/ir/builtin-effects.js +53 -0
  506. package/dist/ir/builtin-effects.js.map +1 -1
  507. package/dist/ir/builtin-signatures.d.ts +1 -1
  508. package/dist/ir/builtin-signatures.js +211 -10
  509. package/dist/ir/builtin-signatures.js.map +1 -1
  510. package/dist/ir/codec.d.ts +82 -0
  511. package/dist/ir/codec.generated.d.ts +13 -0
  512. package/dist/ir/codec.generated.js +5274 -0
  513. package/dist/ir/codec.generated.js.map +1 -0
  514. package/dist/ir/codec.js +325 -0
  515. package/dist/ir/codec.js.map +1 -0
  516. package/dist/ir/codec.test.d.ts +1 -0
  517. package/dist/ir/codec.test.js +225 -0
  518. package/dist/ir/codec.test.js.map +1 -0
  519. package/dist/ir/fields.generated.d.ts +20 -10
  520. package/dist/ir/fields.generated.js +1031 -11
  521. package/dist/ir/fields.generated.js.map +1 -1
  522. package/dist/ir/fields.test.js +46 -2
  523. package/dist/ir/fields.test.js.map +1 -1
  524. package/dist/ir/function-references.d.ts +5 -4
  525. package/dist/ir/function-references.js +8 -4
  526. package/dist/ir/function-references.js.map +1 -1
  527. package/dist/ir/function-references.test.js +7 -0
  528. package/dist/ir/function-references.test.js.map +1 -1
  529. package/dist/ir/inline-array-sources.js +4 -1
  530. package/dist/ir/inline-array-sources.js.map +1 -1
  531. package/dist/ir/inline-array-views.d.ts +13 -0
  532. package/dist/ir/inline-array-views.js +944 -0
  533. package/dist/ir/inline-array-views.js.map +1 -0
  534. package/dist/ir/inline-arrays.d.ts +7 -0
  535. package/dist/ir/inline-arrays.js +190 -55
  536. package/dist/ir/inline-arrays.js.map +1 -1
  537. package/dist/ir/inline-arrays.test.js +140 -2
  538. package/dist/ir/inline-arrays.test.js.map +1 -1
  539. package/dist/ir/integer-ranges.js +16 -6
  540. package/dist/ir/integer-ranges.js.map +1 -1
  541. package/dist/ir/ir.d.ts +75 -44
  542. package/dist/ir/ir.js.map +1 -1
  543. package/dist/ir/js-ic.d.ts +10 -9
  544. package/dist/ir/js-ic.js +28 -20
  545. package/dist/ir/js-ic.js.map +1 -1
  546. package/dist/ir/js-ic.test.js +10 -2
  547. package/dist/ir/js-ic.test.js.map +1 -1
  548. package/dist/ir/jsval.js +374 -63
  549. package/dist/ir/jsval.js.map +1 -1
  550. package/dist/ir/jsval.test.js +96 -2
  551. package/dist/ir/jsval.test.js.map +1 -1
  552. package/dist/ir/loop-entry-ranges.js +112 -9
  553. package/dist/ir/loop-entry-ranges.js.map +1 -1
  554. package/dist/ir/loop-entry-ranges.test.js +40 -0
  555. package/dist/ir/loop-entry-ranges.test.js.map +1 -1
  556. package/dist/ir/parameter-versions.d.ts +2 -1
  557. package/dist/ir/parameter-versions.js +3 -1
  558. package/dist/ir/parameter-versions.js.map +1 -1
  559. package/dist/ir/receiver-readers.js +58 -2
  560. package/dist/ir/receiver-readers.js.map +1 -1
  561. package/dist/ir/runtime-features.d.ts +60 -1
  562. package/dist/ir/runtime-features.js +277 -2
  563. package/dist/ir/runtime-features.js.map +1 -1
  564. package/dist/ir/runtime-features.test.js +165 -1
  565. package/dist/ir/runtime-features.test.js.map +1 -1
  566. package/dist/ir/saturating-loop-jams.d.ts +8 -1
  567. package/dist/ir/saturating-loop-jams.js +46 -7
  568. package/dist/ir/saturating-loop-jams.js.map +1 -1
  569. package/dist/ir/saturating-loop-jams.test.js +39 -1
  570. package/dist/ir/saturating-loop-jams.test.js.map +1 -1
  571. package/dist/ir/self-captures.js +8 -1
  572. package/dist/ir/self-captures.js.map +1 -1
  573. package/dist/ir/self-captures.test.js +15 -0
  574. package/dist/ir/self-captures.test.js.map +1 -1
  575. package/dist/ir/serialize.d.ts +3 -2
  576. package/dist/ir/serialize.js +6 -2
  577. package/dist/ir/serialize.js.map +1 -1
  578. package/dist/ir/validate.js +82 -4
  579. package/dist/ir/validate.js.map +1 -1
  580. package/dist/ir/validate.test.js +46 -0
  581. package/dist/ir/validate.test.js.map +1 -1
  582. package/dist/library/ir-policy.js +3 -0
  583. package/dist/library/ir-policy.js.map +1 -1
  584. package/dist/native/cache.js +2 -0
  585. package/dist/native/cache.js.map +1 -1
  586. package/dist/native/cli.js +2 -0
  587. package/dist/native/cli.js.map +1 -1
  588. package/dist/native/compiler.js +8 -2
  589. package/dist/native/compiler.js.map +1 -1
  590. package/dist/native/prepare.js +32 -3
  591. package/dist/native/prepare.js.map +1 -1
  592. package/dist/native/sanitizer.js +53 -3
  593. package/dist/native/sanitizer.js.map +1 -1
  594. package/dist/native/sanitizer.test.js +88 -2
  595. package/dist/native/sanitizer.test.js.map +1 -1
  596. package/dist/native/toolchain.js +9 -2
  597. package/dist/native/toolchain.js.map +1 -1
  598. package/dist/node-islands/boundary.d.ts +25 -1
  599. package/dist/node-islands/boundary.js +28 -2
  600. package/dist/node-islands/boundary.js.map +1 -1
  601. package/dist/node-islands/detect.d.ts +18 -1
  602. package/dist/node-islands/detect.js +365 -40
  603. package/dist/node-islands/detect.js.map +1 -1
  604. package/dist/node-islands/detect.test.js +151 -4
  605. package/dist/node-islands/detect.test.js.map +1 -1
  606. package/dist/node-islands/effect-gate.js +30 -20
  607. package/dist/node-islands/effect-gate.js.map +1 -1
  608. package/dist/node-islands/effect-gate.test.js +4 -1
  609. package/dist/node-islands/effect-gate.test.js.map +1 -1
  610. package/dist/node-islands/libnode.d.ts +1 -1
  611. package/dist/node-islands/libnode.js +1 -1
  612. package/dist/node-islands/libnode.js.map +1 -1
  613. package/dist/node-islands/modules.d.ts +28 -0
  614. package/dist/node-islands/modules.js +156 -0
  615. package/dist/node-islands/modules.js.map +1 -1
  616. package/dist/node-islands/modules.test.js +105 -1
  617. package/dist/node-islands/modules.test.js.map +1 -1
  618. package/dist/node-islands/policy.js +2 -3
  619. package/dist/node-islands/policy.js.map +1 -1
  620. package/dist/node-islands/probe-recorder.d.ts +1 -0
  621. package/dist/node-islands/probe-recorder.js +596 -0
  622. package/dist/node-islands/probe-recorder.js.map +1 -0
  623. package/dist/node-islands/probe-recorder.test.d.ts +1 -0
  624. package/dist/node-islands/probe-recorder.test.js +80 -0
  625. package/dist/node-islands/probe-recorder.test.js.map +1 -0
  626. package/dist/node-islands/report.test.js +2 -0
  627. package/dist/node-islands/report.test.js.map +1 -1
  628. package/dist/node-islands/rules.js +4 -0
  629. package/dist/node-islands/rules.js.map +1 -1
  630. package/dist/node-islands/scan.d.ts +7 -1
  631. package/dist/node-islands/scan.js +51 -2
  632. package/dist/node-islands/scan.js.map +1 -1
  633. package/dist/node-islands/snapshot.d.ts +38 -1
  634. package/dist/node-islands/snapshot.js +165 -161
  635. package/dist/node-islands/snapshot.js.map +1 -1
  636. package/dist/node-islands/snapshot.test.js +63 -2
  637. package/dist/node-islands/snapshot.test.js.map +1 -1
  638. package/dist/node-islands/summary.js +8 -0
  639. package/dist/node-islands/summary.js.map +1 -1
  640. package/dist/node-islands/type-strip.d.ts +11 -0
  641. package/dist/node-islands/type-strip.js +157 -0
  642. package/dist/node-islands/type-strip.js.map +1 -0
  643. package/dist/node-islands/type-strip.test.d.ts +1 -0
  644. package/dist/node-islands/type-strip.test.js +31 -0
  645. package/dist/node-islands/type-strip.test.js.map +1 -0
  646. package/dist/project-config.d.ts +4 -0
  647. package/dist/project-config.js +19 -0
  648. package/dist/project-config.js.map +1 -1
  649. package/dist/project-config.test.js +10 -0
  650. package/dist/project-config.test.js.map +1 -1
  651. package/package.json +20 -20
  652. package/surface-manifest.json +43 -11
@@ -1,4 +1,5 @@
1
1
  import { BOOL, DYN, recordTextCodecClass, shapeHasAccessorSlots } from "../../ir/ir.js";
2
+ import { everyStmtList } from "../../ir/traverse.js";
2
3
  import { varRef } from "../../ir/build.js";
3
4
  import { isPerfEntryType } from "./builtins/performance.js";
4
5
  /** Closed declared-field layouts with an ordinary data surface: the targets
@@ -19,6 +20,65 @@ export function recordMayKeepSource(lowerer, t) {
19
20
  export function recordSourceTest(value, loc) {
20
21
  return { kind: "libCall", fn: "record.sourceHas", args: [value], type: BOOL, loc };
21
22
  }
23
+ /** Whether a checked conversion into `target` can leave a record holding
24
+ * undeclared source keys. The conversion reads one record at a time, so the
25
+ * records nested in a union arm, a promise, an array, a record field or an
26
+ * index signature's values count too (`Record<string, { x: string }>` keeps
27
+ * the sources of its closed values). Unions and records are memoized by id;
28
+ * one revisited on the current path answers `cycled`. */
29
+ function conversionKeepsSource(lowerer, target, scan) {
30
+ if (target.kind === "promise")
31
+ return conversionKeepsSource(lowerer, target.inner, scan);
32
+ if (target.kind === "array")
33
+ return conversionKeepsSource(lowerer, target.elem, scan);
34
+ if (target.kind === "record" && recordMayKeepSource(lowerer, target))
35
+ return { keeps: true, cycled: false };
36
+ let id;
37
+ let members;
38
+ if (target.kind === "union") {
39
+ id = target.unionId;
40
+ members = lowerer.unions.get(target.unionId)?.arms ?? [];
41
+ }
42
+ else if (target.kind === "record") {
43
+ id = target.shapeId;
44
+ const shape = lowerer.shapes.get(target.shapeId);
45
+ members = [
46
+ ...(shape?.fields.map((field) => field.type) ?? []),
47
+ ...(shape?.indexValue !== undefined ? [shape.indexValue] : []),
48
+ ];
49
+ }
50
+ else
51
+ return { keeps: false, cycled: false };
52
+ const known = scan.memo.get(id);
53
+ if (known !== undefined)
54
+ return { keeps: known, cycled: false };
55
+ if (scan.visiting.has(id))
56
+ return { keeps: false, cycled: true };
57
+ scan.visiting.add(id);
58
+ let keeps = false;
59
+ let cycled = false;
60
+ for (const member of members) {
61
+ const answer = conversionKeepsSource(lowerer, member, scan);
62
+ keeps = keeps || answer.keeps;
63
+ cycled = cycled || answer.cycled;
64
+ if (keeps)
65
+ break;
66
+ }
67
+ scan.visiting.delete(id);
68
+ if (!cycled || keeps)
69
+ scan.memo.set(id, keeps);
70
+ return { keeps, cycled: cycled && !keeps };
71
+ }
72
+ /** Whether `fn` holds a validated conversion that can note a record source:
73
+ * a `dynCheck` whose target accepts `recordMayKeepSource`. Only such a
74
+ * conversion creates the kept view `recordSourceTest` answers, so a program
75
+ * without one never needs a capture to consult the view. */
76
+ export function functionKeepsRecordSources(lowerer, fn, scan) {
77
+ return !everyStmtList(fn.body, {
78
+ expr: (expr) => expr.kind !== "dynCheck" || !conversionKeepsSource(lowerer, expr.type, scan).keeps,
79
+ stmt: () => true,
80
+ });
81
+ }
22
82
  /** A reflective answer over a record value that branches on its kept
23
83
  * source: `staticAnswer` walks the declared fields, `viewAnswer` answers
24
84
  * from the live checked view (typed `type`, the static answer's type). The
@@ -1 +1 @@
1
- {"version":3,"file":"record-sources.js","sourceRoot":"","sources":["../../../src/frontend/lowering/record-sources.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;mDACmD;AACnD,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,CAA8B;IAClF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,CAAC,KAAK,CAAC,KAAK;QACZ,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC7B,oBAAoB,CAAC,KAAK,CAAC,KAAK,IAAI;QACpC,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;iBACiB;AACjB,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,GAAW;IACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACrF,CAAC;AAED;;;8BAG8B;AAC9B,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,YAAwC,EACxC,UAAkD;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpE,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;YACrC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG;SACJ;QACD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"record-sources.js","sourceRoot":"","sources":["../../../src/frontend/lowering/record-sources.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
2
2
  import type { Lowerer } from "./lowerer.js";
3
+ /** Whether two namespace references are the same module object: the bare
4
+ * node:path namespace IS its target platform's family (`path ===
5
+ * path.posix` on POSIX targets); other namespaces are their module. */
6
+ export declare function sameNamespace(lowerer: Lowerer, a: string, b: string): boolean;
3
7
  /** Related class arms can store the same object under different tags, so
4
8
  * comparing a union's tags and payloads alone can miss an identity. */
5
9
  export declare function tagEqualityMayMissAlias(lowerer: Lowerer, type: IrType): boolean;
@@ -2,6 +2,7 @@ import { keyedHelperName } from "./stable-names.js";
2
2
  import { boolLit, varRef } from "../../ir/build.js";
3
3
  import { BOOL, DYN_HANDLE_KINDS, isUnitType, typeEquals, typeKey, } from "../../ir/ir.js";
4
4
  import { unionComparison } from "./union-comparison.js";
5
+ import { builtinModuleConstOf } from "./surfaces.js";
5
6
  const IDENTITY_KINDS = new Set([
6
7
  "array",
7
8
  "map",
@@ -17,12 +18,25 @@ const IDENTITY_KINDS = new Set([
17
18
  "classval",
18
19
  "moduleNs",
19
20
  ]);
21
+ /** Whether two namespace references are the same module object: the bare
22
+ * node:path namespace IS its target platform's family (`path ===
23
+ * path.posix` on POSIX targets); other namespaces are their module. */
24
+ export function sameNamespace(lowerer, a, b) {
25
+ const family = (id) => id !== "builtin:path"
26
+ ? id
27
+ : builtinModuleConstOf(lowerer, "path", "sep") === "\\"
28
+ ? "builtin:path/win32"
29
+ : "builtin:path/posix";
30
+ return family(a) === family(b);
31
+ }
20
32
  function atomicEquality(lowerer, left, right, sameValue, loc) {
21
33
  const a = left.type, b = right.type;
22
34
  if ([a.kind, b.kind].some((kind) => kind === "dyn" || kind === "caught" || kind === "void"))
23
35
  return null;
24
36
  if (isUnitType(a) || isUnitType(b))
25
37
  return boolLit(a.kind === b.kind, loc);
38
+ if (left.kind === "moduleNsRef" && right.kind === "moduleNsRef")
39
+ return boolLit(sameNamespace(lowerer, left.moduleId, right.moduleId), loc);
26
40
  if (a.kind === "object" && b.kind === "object" && !typeEquals(a, b)) {
27
41
  if (lowerer.isSubclassOf(a.className, b.className))
28
42
  left = lowerer.upcastTo(left, b.className);
@@ -1 +1 @@
1
- {"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,8 @@ export declare const TLS_SERVER_DOCUMENTED_OPTIONS: ReadonlySet<string>;
59
59
  export declare const HTTP2_SECURE_SERVER_DOCUMENTED_OPTIONS: ReadonlySet<string>;
60
60
  /** fs.watch's documented option keys. */
61
61
  export declare const FS_WATCH_DOCUMENTED_OPTIONS: ReadonlySet<string>;
62
+ /** fs.watchFile's documented option keys. */
63
+ export declare const FS_WATCH_FILE_DOCUMENTED_OPTIONS: ReadonlySet<string>;
62
64
  /** fs.readdirSync's documented option keys. */
63
65
  export declare const FS_READDIR_DOCUMENTED_OPTIONS: ReadonlySet<string>;
64
66
  /** fs.writeFileSync's documented option keys. */
@@ -175,20 +177,41 @@ export interface BuiltinModuleFn {
175
177
  /** The function value's `length` when it is not the count of its
176
178
  * required value parameters (`Math.max`'s 2 over its rest pack). */
177
179
  valueLength?: number;
180
+ /** The order Node validates named value parameters in, when it is not
181
+ * the parameter order (basename checks its suffix first). */
182
+ valueOrder?: readonly number[];
183
+ /** The runtime entry point an untyped caller's adapter calls with every
184
+ * argument as given, when it validates them itself (resolve's last-first
185
+ * walk) or the value has no typed form (`only`: parse's record result,
186
+ * format's untyped pathObject). `args` are constants passed after the
187
+ * arguments (the win32 flag of an entry both path families share). */
188
+ checked?: {
189
+ fn: IrLibFn;
190
+ args: readonly boolean[];
191
+ result?: IrType;
192
+ only?: true;
193
+ };
178
194
  /** The function value's `name` when it is not the member's
179
195
  * (`process.cwd` is Node's `wrappedCwd`). */
180
196
  valueName?: string;
181
197
  }
198
+ /** `name` is the argument name Node's validator reports
199
+ * (ERR_INVALID_ARG_TYPE's 'The "path" argument ...'): the adapter accepts
200
+ * any value there and validates it, so a string parameter arrives checked
201
+ * and a dyn one reaches its valueFn as given. */
182
202
  export type BuiltinValueParam = {
183
203
  mode: "required";
184
204
  type: IrType;
205
+ name?: string;
185
206
  } | {
186
207
  mode: "optional";
187
208
  type: IrType;
188
209
  defaultValue: string | number | undefined;
210
+ name?: string;
189
211
  } | {
190
212
  mode: "rest";
191
213
  type: IrType;
214
+ name?: string;
192
215
  };
193
216
  /** Object helpers whose checked-native ABI is also their stored value ABI.
194
217
  * These adapters operate on the live checked object/property table. */
@@ -339,6 +362,10 @@ export declare function stdlibGlobalMember(lowerer: Lowerer, access: ts.Property
339
362
  * way; aliasing, say, `Math` would change nothing (its members lower
340
363
  * by receiver too). Returns true when recognized. */
341
364
  export declare function stdlibGlobalAliasNameOf(lowerer: Lowerer, init: ts.Expression | undefined): string | null;
365
+ /** The globals a `const x = <global>` snapshot aliases (stdlibGlobalAliasNameOf).
366
+ * Node defines every one of them, so an optional step over one of them
367
+ * (`proc?.env`, `globalThis.process?.env`) is the plain member read. */
368
+ export declare const SNAPSHOT_GLOBALS: ReadonlySet<string>;
342
369
  /** `buffer.Buffer` through a buffer-module namespace binding (`var buffer
343
370
  * = require('buffer')`): the module's Buffer IS the global constructor. */
344
371
  export declare function bufferNamespaceMember(lowerer: Lowerer, expr: ts.Expression): boolean;
@@ -373,6 +373,12 @@ export const FS_WATCH_DOCUMENTED_OPTIONS = new Set([
373
373
  "encoding",
374
374
  "signal",
375
375
  ]);
376
+ /** fs.watchFile's documented option keys. */
377
+ export const FS_WATCH_FILE_DOCUMENTED_OPTIONS = new Set([
378
+ "interval",
379
+ "persistent",
380
+ "bigint",
381
+ ]);
376
382
  /** fs.readdirSync's documented option keys. */
377
383
  export const FS_READDIR_DOCUMENTED_OPTIONS = new Set([
378
384
  "encoding",
@@ -786,26 +792,27 @@ const PATH_MODULE_FNS = {
786
792
  params: [STRING],
787
793
  result: STRING,
788
794
  variadicPack: true,
789
- valueParams: [{ mode: "rest", type: STRING }],
795
+ valueParams: [{ mode: "rest", type: STRING, name: "path" }],
790
796
  },
791
797
  resolve: {
792
798
  fn: "path.resolve",
793
799
  params: [STRING],
794
800
  result: STRING,
795
801
  variadicPack: true,
796
- valueParams: [{ mode: "rest", type: STRING }],
802
+ valueParams: [{ mode: "rest", type: STRING, name: "paths" }],
803
+ checked: { fn: "path.resolveValue", args: [false] },
797
804
  },
798
805
  normalize: {
799
806
  fn: "path.normalize",
800
807
  params: [STRING],
801
808
  result: STRING,
802
- valueParams: [{ mode: "required", type: STRING }],
809
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
803
810
  },
804
811
  dirname: {
805
812
  fn: "path.dirname",
806
813
  params: [STRING],
807
814
  result: STRING,
808
- valueParams: [{ mode: "required", type: STRING }],
815
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
809
816
  },
810
817
  basename: {
811
818
  fn: "path.basename",
@@ -813,48 +820,65 @@ const PATH_MODULE_FNS = {
813
820
  result: STRING,
814
821
  defaults: [""],
815
822
  valueParams: [
816
- { mode: "required", type: STRING },
817
- { mode: "optional", type: STRING, defaultValue: "" },
823
+ { mode: "required", type: STRING, name: "path" },
824
+ { mode: "optional", type: STRING, defaultValue: "", name: "suffix" },
818
825
  ],
826
+ valueOrder: [1, 0],
819
827
  },
820
828
  extname: {
821
829
  fn: "path.extname",
822
830
  params: [STRING],
823
831
  result: STRING,
824
- valueParams: [{ mode: "required", type: STRING }],
832
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
825
833
  },
826
834
  isAbsolute: {
827
835
  fn: "path.isAbsolute",
828
836
  params: [STRING],
829
837
  result: BOOL,
830
- valueParams: [{ mode: "required", type: STRING }],
838
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
831
839
  },
832
840
  relative: {
833
841
  fn: "path.relative",
834
842
  params: [STRING, STRING],
835
843
  result: STRING,
836
844
  valueParams: [
837
- { mode: "required", type: STRING },
838
- { mode: "required", type: STRING },
845
+ { mode: "required", type: STRING, name: "from" },
846
+ { mode: "required", type: STRING, name: "to" },
839
847
  ],
840
848
  },
841
849
  toNamespacedPath: {
842
850
  fn: "path.toNamespacedPath",
843
851
  params: [STRING],
844
852
  result: STRING,
845
- valueParams: [{ mode: "required", type: STRING }],
853
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
854
+ checked: { fn: "path.toNamespacedValue", args: [false], result: DYN },
846
855
  },
847
856
  matchesGlob: {
848
857
  fn: "path.matchesGlob",
849
858
  params: [STRING, STRING],
850
859
  result: BOOL,
851
- valueParams: exactValueParams(STRING, STRING),
860
+ valueParams: [
861
+ { mode: "required", type: STRING, name: "path" },
862
+ { mode: "required", type: STRING, name: "pattern" },
863
+ ],
852
864
  },
853
865
  // Special-cased (lowerPathParseCall / lowerPathFormatCall): the
854
866
  // ParsedPath record and the pathObject argument follow the call site's
855
867
  // mapped shapes.
856
- parse: { fn: "path.parse", params: [STRING], result: VOID },
857
- format: { fn: "path.format", params: [], result: STRING },
868
+ parse: {
869
+ fn: "path.parse",
870
+ params: [STRING],
871
+ result: VOID,
872
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
873
+ checked: { fn: "path.parseValue", args: [false], result: DYN, only: true },
874
+ },
875
+ format: {
876
+ fn: "path.format",
877
+ params: [],
878
+ result: STRING,
879
+ valueParams: [{ mode: "required", type: DYN, name: "pathObject" }],
880
+ checked: { fn: "path.formatValue", args: [false], result: DYN, only: true },
881
+ },
858
882
  };
859
883
  /** The win32 twins (scr_path.c's exact port of Node-v24 path.win32):
860
884
  * "path/win32" everywhere, and the bare-module table when the build
@@ -865,26 +889,27 @@ const PATH_WIN32_MODULE_FNS = {
865
889
  params: [STRING],
866
890
  result: STRING,
867
891
  variadicPack: true,
868
- valueParams: [{ mode: "rest", type: STRING }],
892
+ valueParams: [{ mode: "rest", type: STRING, name: "path" }],
869
893
  },
870
894
  resolve: {
871
895
  fn: "path.win32Resolve",
872
896
  params: [STRING],
873
897
  result: STRING,
874
898
  variadicPack: true,
875
- valueParams: [{ mode: "rest", type: STRING }],
899
+ valueParams: [{ mode: "rest", type: STRING, name: "paths" }],
900
+ checked: { fn: "path.resolveValue", args: [true] },
876
901
  },
877
902
  normalize: {
878
903
  fn: "path.win32Normalize",
879
904
  params: [STRING],
880
905
  result: STRING,
881
- valueParams: [{ mode: "required", type: STRING }],
906
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
882
907
  },
883
908
  dirname: {
884
909
  fn: "path.win32Dirname",
885
910
  params: [STRING],
886
911
  result: STRING,
887
- valueParams: [{ mode: "required", type: STRING }],
912
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
888
913
  },
889
914
  basename: {
890
915
  fn: "path.win32Basename",
@@ -892,48 +917,65 @@ const PATH_WIN32_MODULE_FNS = {
892
917
  result: STRING,
893
918
  defaults: [""],
894
919
  valueParams: [
895
- { mode: "required", type: STRING },
896
- { mode: "optional", type: STRING, defaultValue: "" },
920
+ { mode: "required", type: STRING, name: "path" },
921
+ { mode: "optional", type: STRING, defaultValue: "", name: "suffix" },
897
922
  ],
923
+ valueOrder: [1, 0],
898
924
  },
899
925
  extname: {
900
926
  fn: "path.win32Extname",
901
927
  params: [STRING],
902
928
  result: STRING,
903
- valueParams: [{ mode: "required", type: STRING }],
929
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
904
930
  },
905
931
  isAbsolute: {
906
932
  fn: "path.win32IsAbsolute",
907
933
  params: [STRING],
908
934
  result: BOOL,
909
- valueParams: [{ mode: "required", type: STRING }],
935
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
910
936
  },
911
937
  relative: {
912
938
  fn: "path.win32Relative",
913
939
  params: [STRING, STRING],
914
940
  result: STRING,
915
941
  valueParams: [
916
- { mode: "required", type: STRING },
917
- { mode: "required", type: STRING },
942
+ { mode: "required", type: STRING, name: "from" },
943
+ { mode: "required", type: STRING, name: "to" },
918
944
  ],
919
945
  },
920
946
  toNamespacedPath: {
921
947
  fn: "path.win32ToNamespacedPath",
922
948
  params: [STRING],
923
949
  result: STRING,
924
- valueParams: [{ mode: "required", type: STRING }],
950
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
951
+ checked: { fn: "path.toNamespacedValue", args: [true], result: DYN },
925
952
  },
926
953
  matchesGlob: {
927
954
  fn: "path.win32MatchesGlob",
928
955
  params: [STRING, STRING],
929
956
  result: BOOL,
930
- valueParams: exactValueParams(STRING, STRING),
957
+ valueParams: [
958
+ { mode: "required", type: STRING, name: "path" },
959
+ { mode: "required", type: STRING, name: "pattern" },
960
+ ],
931
961
  },
932
962
  // Special-cased (lowerPathParseCall / lowerPathFormatCall): the
933
963
  // ParsedPath record and the pathObject argument follow the call site's
934
964
  // mapped shapes.
935
- parse: { fn: "path.win32Parse", params: [STRING], result: VOID },
936
- format: { fn: "path.win32Format", params: [], result: STRING },
965
+ parse: {
966
+ fn: "path.win32Parse",
967
+ params: [STRING],
968
+ result: VOID,
969
+ valueParams: [{ mode: "required", type: STRING, name: "path" }],
970
+ checked: { fn: "path.parseValue", args: [true], result: DYN, only: true },
971
+ },
972
+ format: {
973
+ fn: "path.win32Format",
974
+ params: [],
975
+ result: STRING,
976
+ valueParams: [{ mode: "required", type: DYN, name: "pathObject" }],
977
+ checked: { fn: "path.formatValue", args: [true], result: DYN, only: true },
978
+ },
937
979
  };
938
980
  /** util.types's own keys in Node's order (Node 24.22.0). The table is the
939
981
  * key census for Object.keys over util.types and node:util/types, including
@@ -1051,9 +1093,9 @@ function buildBuiltinModuleFns() {
1051
1093
  // truncateSync's omitted len completes to 0 in lowerBuiltinModuleCall,
1052
1094
  // like accessSync's mode.
1053
1095
  truncateSync: { fn: "fs.truncateSync", params: [STRING, F64], result: VOID },
1054
- // The 2-argument form only: Node's mode flags (COPYFILE_EXCL, ...)
1055
- // land on the arity fence.
1056
- copyFileSync: { fn: "fs.copyFileSync", params: [STRING, STRING], result: VOID },
1096
+ // The mode is libuv's copyfile flag bits (COPYFILE_EXCL, ...); the
1097
+ // 2- and 3-argument forms lower in lowerBuiltinModuleCall.
1098
+ copyFileSync: { fn: "fs.copyFileSync", params: [STRING, STRING, F64], result: VOID },
1057
1099
  // The callback form is special-cased in lowerBuiltinModuleCall: its
1058
1100
  // Error | null parameter is program-shaped and needs an emitted
1059
1101
  // adapter. The row still projects the static surface and routes the
@@ -1259,10 +1301,10 @@ function buildBuiltinModuleFns() {
1259
1301
  params: [STRING, STRING],
1260
1302
  result: { kind: "promise", inner: VOID },
1261
1303
  },
1262
- // The 2-argument form only, like copyFileSync.
1304
+ // The 2- and 3-argument forms, like copyFileSync.
1263
1305
  copyFile: {
1264
1306
  fn: "fsp.copyFile",
1265
- params: [STRING, STRING],
1307
+ params: [STRING, STRING, F64],
1266
1308
  result: { kind: "promise", inner: VOID },
1267
1309
  },
1268
1310
  mkdtemp: { fn: "fsp.mkdtemp", params: [STRING], result: { kind: "promise", inner: STRING } },
@@ -1859,6 +1901,7 @@ function buildBuiltinModuleFns() {
1859
1901
  result: STRING,
1860
1902
  valueParams: [{ mode: "required", type: STRING }],
1861
1903
  },
1904
+ unescapeBuffer: { fn: "qs.unescapeBuffer", params: [STRING, BOOL], result: BYTES_U8 },
1862
1905
  },
1863
1906
  // node:punycode (deprecated): punycode.js 2.1.0's conversions over
1864
1907
  // strings (scr_url.c). ucs2.decode/encode are members of the module's
@@ -2051,15 +2094,20 @@ export const BUILTIN_MODULE_FN_ALIASES = {
2051
2094
  ],
2052
2095
  // The string source's check before a URL destination converts
2053
2096
  // (fs-paths.ts).
2054
- copyFileSync: ["fs.checkPath"],
2097
+ copyFileSync: ["fs.checkPath", "fs.copyFileFlagsSync"],
2055
2098
  renameSync: ["fs.checkPath"],
2056
- copyFile: ["fs.checkPath"],
2099
+ copyFile: ["fs.checkPath", "fsp.copyFileFlags"],
2057
2100
  rename: ["fs.checkPath"],
2058
2101
  readlinkSync: ["fs.readlinkSyncStr", "fs.readlinkSyncBuffer"],
2059
2102
  // The bytes-data form and the { mode } options form.
2060
2103
  // The bytes-data form, the { mode } options form, and the
2061
2104
  // file-descriptor data form.
2062
- writeFileSync: ["fs.writeFileSyncBytes", "fs.writeFileModeSync", "fs.writeFileSyncFd"],
2105
+ writeFileSync: [
2106
+ "fs.writeFileSyncBytes",
2107
+ "fs.writeFileModeSync",
2108
+ "fs.writeFileFlagsSync",
2109
+ "fs.writeFileSyncFd",
2110
+ ],
2063
2111
  appendFileSync: ["fs.appendFileSyncBytes"],
2064
2112
  // The fs stream members (bytesRead/bytesWritten, pending, path, close).
2065
2113
  createReadStream: [
@@ -2110,8 +2158,8 @@ export const BUILTIN_MODULE_FN_ALIASES = {
2110
2158
  // The Buffer form (no encoding) and the runtime-encoding forms.
2111
2159
  readFile: ["fsp.readFileBytes", "fsp.readFileEncoded"],
2112
2160
  readlink: ["fsp.readlinkStr", "fsp.readlinkBuffer"],
2113
- // The string-data { mode } options form.
2114
- writeFile: ["fsp.writeFileMode"],
2161
+ // The string-data { mode, flag } options forms.
2162
+ writeFile: ["fsp.writeFileMode", "fsp.writeFileFlags"],
2115
2163
  // The { withFileTypes: true } Dirent form.
2116
2164
  readdir: ["fsp.readdirTypes"],
2117
2165
  glob: ["fsp.globTypes"],
@@ -2154,7 +2202,7 @@ export const BUILTIN_MODULE_FN_ALIASES = {
2154
2202
  },
2155
2203
  os: {
2156
2204
  // lowerOsUserInfoCall assembles the record from scalar libCalls.
2157
- userInfo: ["os.userHomedir", "os.userShell"],
2205
+ userInfo: ["os.userHomedir", "os.userShell", "os.userUid", "os.userGid"],
2158
2206
  // lowerOsCpusCall reads the cpusTake snapshot through its accessors.
2159
2207
  cpus: ["os.cpusModel", "os.cpusField"],
2160
2208
  },
@@ -2250,6 +2298,22 @@ function buildAmbientSurfaceFns() {
2250
2298
  fns: ["fs.callbackValue", "fs.callbackCall", "fs.callbackGlob"],
2251
2299
  note: "native filesystem callbacks, including stored platform adapter functions",
2252
2300
  },
2301
+ // fs.watchFile/fs.unwatchFile lower in lowerFsWatchFileCall, ahead of
2302
+ // the module table.
2303
+ {
2304
+ id: "node-builtin.fs.watchFile",
2305
+ kind: "node-builtin",
2306
+ name: "fs.watchFile",
2307
+ fns: ["fs.watchFile"],
2308
+ note: "stat polling of a resolved path with Stats listeners, in statement position; bigint: true is refused",
2309
+ },
2310
+ {
2311
+ id: "node-builtin.fs.unwatchFile",
2312
+ kind: "node-builtin",
2313
+ name: "fs.unwatchFile",
2314
+ fns: ["fs.unwatchFile"],
2315
+ note: "removes one listener, or every listener, from a resolved path's poller",
2316
+ },
2253
2317
  // ── the Date slice (lowerDateCall/lowerNew): statics, construction,
2254
2318
  // stored read-only values, calendar getters, and ISO formatting.
2255
2319
  {
@@ -2544,7 +2608,12 @@ function buildAmbientSurfaceFns() {
2544
2608
  id: "node-builtin.process.getBuiltinModule",
2545
2609
  kind: "node-builtin",
2546
2610
  name: "process.getBuiltinModule",
2547
- fns: ["process.builtinId", "process.builtinModule", "process.builtinUnsupported"],
2611
+ fns: [
2612
+ "process.builtinId",
2613
+ "process.builtinModule",
2614
+ "process.builtinObject",
2615
+ "process.builtinUnsupported",
2616
+ ],
2548
2617
  note: "native path and os export subsets plus current-thread worker_threads metadata; other modules and exports throw SC2020",
2549
2618
  },
2550
2619
  {
@@ -3213,11 +3282,13 @@ export function stdlibMemberFence(lowerer, access) {
3213
3282
  member === "toLocaleLowerCase" ||
3214
3283
  member === "toLocaleUpperCase") {
3215
3284
  hint =
3216
- "locale- and ICU-backed behavior lives outside the static runtime (the localeCompare " +
3217
- "stance: code-unit order, no collation/locale data) — what lowers: the composed " +
3285
+ "collation and locale negotiation stay outside the static runtime (the localeCompare " +
3286
+ "stance: code-unit order, no collation) — what lowers: the composed " +
3218
3287
  'new Intl.NumberFormat("en-US").format(x) and x.toLocaleString("en-US") with default ' +
3219
- "options, plus default Unicode grapheme segmentation with Intl.Segmenter; locale " +
3220
- "negotiation, word/sentence segmentation, and resolvedOptions remain unsupported";
3288
+ "options, their default-locale forms (x.toLocaleString(), d.toLocaleString(), " +
3289
+ "d.toLocaleTimeString()), and Intl.Segmenter with grapheme or word granularity; " +
3290
+ "sentence segmentation, resolvedOptions, and the remaining Intl constructors remain " +
3291
+ "unsupported";
3221
3292
  }
3222
3293
  else if (container === "Object" && member === "assign") {
3223
3294
  hint =
@@ -3450,25 +3521,27 @@ export function stdlibGlobalAliasNameOf(lowerer, init) {
3450
3521
  // These globals have provenance-aware call or member lowering, so a
3451
3522
  // stable snapshot keeps the same dispatch as the original global.
3452
3523
  // Other callable globals still use their ordinary value paths.
3453
- return [
3454
- "process",
3455
- "console",
3456
- "globalThis",
3457
- "performance",
3458
- "Array",
3459
- "Buffer",
3460
- "BigInt",
3461
- "Number",
3462
- "String",
3463
- "Boolean",
3464
- // Code generation from strings throws Node's EvalError at every call
3465
- // (code-generation.ts); zod 4 probes `const F = Function; new F("")`.
3466
- "Function",
3467
- "eval",
3468
- ].includes(name)
3469
- ? name
3470
- : null;
3524
+ return SNAPSHOT_GLOBALS.has(name) ? name : null;
3471
3525
  }
3526
+ /** The globals a `const x = <global>` snapshot aliases (stdlibGlobalAliasNameOf).
3527
+ * Node defines every one of them, so an optional step over one of them
3528
+ * (`proc?.env`, `globalThis.process?.env`) is the plain member read. */
3529
+ export const SNAPSHOT_GLOBALS = new Set([
3530
+ "process",
3531
+ "console",
3532
+ "globalThis",
3533
+ "performance",
3534
+ "Array",
3535
+ "Buffer",
3536
+ "BigInt",
3537
+ "Number",
3538
+ "String",
3539
+ "Boolean",
3540
+ // Code generation from strings throws Node's EvalError at every call
3541
+ // (code-generation.ts); zod 4 probes `const F = Function; new F("")`.
3542
+ "Function",
3543
+ "eval",
3544
+ ]);
3472
3545
  /** `buffer.Buffer` through a buffer-module namespace binding (`var buffer
3473
3546
  * = require('buffer')`): the module's Buffer IS the global constructor. */
3474
3547
  export function bufferNamespaceMember(lowerer, expr) {