@scriptc/compiler 0.3.2 → 0.3.4

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 (454) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +1202 -64
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-mutability.d.ts +5 -0
  5. package/dist/backend/cycle-mutability.js +62 -3
  6. package/dist/backend/cycle-mutability.js.map +1 -1
  7. package/dist/backend/executable-features.js +1 -0
  8. package/dist/backend/executable-features.js.map +1 -1
  9. package/dist/backend/library-pack.js +1 -0
  10. package/dist/backend/library-pack.js.map +1 -1
  11. package/dist/backend/llvm/alloc.js +24 -10
  12. package/dist/backend/llvm/alloc.js.map +1 -1
  13. package/dist/backend/llvm/alloc.test.js +47 -1
  14. package/dist/backend/llvm/alloc.test.js.map +1 -1
  15. package/dist/backend/llvm/array-search.d.ts +8 -0
  16. package/dist/backend/llvm/array-search.js +52 -0
  17. package/dist/backend/llvm/array-search.js.map +1 -0
  18. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  19. package/dist/backend/llvm/array-search.test.js +72 -0
  20. package/dist/backend/llvm/array-search.test.js.map +1 -0
  21. package/dist/backend/llvm/call-lifetimes.d.ts +12 -1
  22. package/dist/backend/llvm/call-lifetimes.js +41 -11
  23. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  24. package/dist/backend/llvm/call-lifetimes.test.js +85 -1
  25. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  26. package/dist/backend/llvm/classes.js +87 -36
  27. package/dist/backend/llvm/classes.js.map +1 -1
  28. package/dist/backend/llvm/common.d.ts +6 -1
  29. package/dist/backend/llvm/common.js +8 -1
  30. package/dist/backend/llvm/common.js.map +1 -1
  31. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  32. package/dist/backend/llvm/dense-array-access.js +3 -3
  33. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  34. package/dist/backend/llvm/dyn.d.ts +44 -1
  35. package/dist/backend/llvm/dyn.js +251 -36
  36. package/dist/backend/llvm/dyn.js.map +1 -1
  37. package/dist/backend/llvm/emitter.d.ts +77 -14
  38. package/dist/backend/llvm/emitter.js +461 -108
  39. package/dist/backend/llvm/emitter.js.map +1 -1
  40. package/dist/backend/llvm/emitter.test.js +26 -3
  41. package/dist/backend/llvm/emitter.test.js.map +1 -1
  42. package/dist/backend/llvm/expr-async.js +52 -1
  43. package/dist/backend/llvm/expr-async.js.map +1 -1
  44. package/dist/backend/llvm/expr-bytes.d.ts +9 -0
  45. package/dist/backend/llvm/expr-bytes.js +169 -63
  46. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  47. package/dist/backend/llvm/expr-callbacks.js +16 -2
  48. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  49. package/dist/backend/llvm/expr-calls.d.ts +3 -1
  50. package/dist/backend/llvm/expr-calls.js +57 -2
  51. package/dist/backend/llvm/expr-calls.js.map +1 -1
  52. package/dist/backend/llvm/expr-containers.js +57 -19
  53. package/dist/backend/llvm/expr-containers.js.map +1 -1
  54. package/dist/backend/llvm/expr-dynamic.js +19 -8
  55. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  56. package/dist/backend/llvm/expr-primitives.js +28 -30
  57. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  58. package/dist/backend/llvm/expr-records.js +8 -4
  59. package/dist/backend/llvm/expr-records.js.map +1 -1
  60. package/dist/backend/llvm/expr-stream-bridges.js +35 -32
  61. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  62. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  63. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  64. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  65. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  66. package/dist/backend/llvm/inline-unions.js +134 -0
  67. package/dist/backend/llvm/inline-unions.js.map +1 -0
  68. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  69. package/dist/backend/llvm/inline-unions.test.js +124 -0
  70. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  71. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  72. package/dist/backend/llvm/integer-remainder.js +80 -9
  73. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  74. package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
  75. package/dist/backend/llvm/intern-tables.test.js +77 -0
  76. package/dist/backend/llvm/intern-tables.test.js.map +1 -0
  77. package/dist/backend/llvm/lib-datagram.js +10 -0
  78. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  79. package/dist/backend/llvm/lib-dispatch.js +255 -29
  80. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  81. package/dist/backend/llvm/lib-filesystem.js +176 -7
  82. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  83. package/dist/backend/llvm/lib-network.js +25 -6
  84. package/dist/backend/llvm/lib-network.js.map +1 -1
  85. package/dist/backend/llvm/lib-process.js +2 -2
  86. package/dist/backend/llvm/lib-process.js.map +1 -1
  87. package/dist/backend/llvm/lib-shared.d.ts +5 -0
  88. package/dist/backend/llvm/lib-shared.js +212 -1
  89. package/dist/backend/llvm/lib-shared.js.map +1 -1
  90. package/dist/backend/llvm/lib-stream.js +184 -0
  91. package/dist/backend/llvm/lib-stream.js.map +1 -1
  92. package/dist/backend/llvm/lib-test.js +9 -0
  93. package/dist/backend/llvm/lib-test.js.map +1 -1
  94. package/dist/backend/llvm/local-array-reads.js +7 -3
  95. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  96. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  97. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  98. package/dist/backend/llvm/local-union-storage.d.ts +2 -0
  99. package/dist/backend/llvm/local-union-storage.js +5 -0
  100. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  101. package/dist/backend/llvm/local-union-storage.test.js +1 -0
  102. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  103. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  104. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  105. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  106. package/dist/backend/llvm/map-number-lookup.d.ts +24 -0
  107. package/dist/backend/llvm/map-number-lookup.js +88 -0
  108. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  109. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  110. package/dist/backend/llvm/map-number-lookup.test.js +158 -0
  111. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  112. package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
  113. package/dist/backend/llvm/map-read-lifetimes.js +90 -1
  114. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  115. package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
  116. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  117. package/dist/backend/llvm/publish.d.ts +9 -0
  118. package/dist/backend/llvm/publish.js +25 -4
  119. package/dist/backend/llvm/publish.js.map +1 -1
  120. package/dist/backend/llvm/record-results.d.ts +8 -5
  121. package/dist/backend/llvm/record-results.js +20 -12
  122. package/dist/backend/llvm/record-results.js.map +1 -1
  123. package/dist/backend/llvm/reference-effects.js +13 -0
  124. package/dist/backend/llvm/reference-effects.js.map +1 -1
  125. package/dist/backend/llvm/reference-writes.js +19 -2
  126. package/dist/backend/llvm/reference-writes.js.map +1 -1
  127. package/dist/backend/llvm/regions.d.ts +5 -1
  128. package/dist/backend/llvm/regions.js +24 -10
  129. package/dist/backend/llvm/regions.js.map +1 -1
  130. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  131. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  132. package/dist/backend/llvm/shapes.d.ts +56 -10
  133. package/dist/backend/llvm/shapes.js +178 -39
  134. package/dist/backend/llvm/shapes.js.map +1 -1
  135. package/dist/backend/llvm/shapes.test.js +61 -3
  136. package/dist/backend/llvm/shapes.test.js.map +1 -1
  137. package/dist/backend/llvm/stack-objects.js +16 -4
  138. package/dist/backend/llvm/stack-objects.js.map +1 -1
  139. package/dist/backend/llvm/stack-objects.test.js +3 -0
  140. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  141. package/dist/backend/llvm/string-reads.js +2 -2
  142. package/dist/backend/llvm/string-reads.js.map +1 -1
  143. package/dist/backend/llvm/string-slices.js +2 -2
  144. package/dist/backend/llvm/string-slices.js.map +1 -1
  145. package/dist/backend/llvm/walkers.d.ts +11 -0
  146. package/dist/backend/llvm/walkers.js +106 -10
  147. package/dist/backend/llvm/walkers.js.map +1 -1
  148. package/dist/backend/may-throw.js +13 -4
  149. package/dist/backend/may-throw.js.map +1 -1
  150. package/dist/backend/native/contracts.d.ts +5 -2
  151. package/dist/backend/native/executable.js +27 -8
  152. package/dist/backend/native/executable.js.map +1 -1
  153. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  154. package/dist/backend/native/runtime-inputs.js +2 -0
  155. package/dist/backend/native/runtime-inputs.js.map +1 -1
  156. package/dist/backend/native-codegen-core.d.ts +4 -4
  157. package/dist/backend/native-codegen-core.js +4 -6
  158. package/dist/backend/native-codegen-core.js.map +1 -1
  159. package/dist/backend/native-codegen.test.js +7 -8
  160. package/dist/backend/native-codegen.test.js.map +1 -1
  161. package/dist/backend/native-link-info-core.d.ts +3 -0
  162. package/dist/backend/native-link-info-core.js.map +1 -1
  163. package/dist/backend/native-toolchain.test.js +1 -1
  164. package/dist/backend/native-toolchain.test.js.map +1 -1
  165. package/dist/backend/publication.js +3 -1
  166. package/dist/backend/publication.js.map +1 -1
  167. package/dist/backend/runtime-abi.d.ts +2 -2
  168. package/dist/backend/runtime-abi.js +2 -2
  169. package/dist/backend/runtime-pack-targets.test.js +2 -1
  170. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  171. package/dist/backend/runtime-pack.test.js +2 -1
  172. package/dist/backend/runtime-pack.test.js.map +1 -1
  173. package/dist/backend/target-diagnostics.js +11 -1
  174. package/dist/backend/target-diagnostics.js.map +1 -1
  175. package/dist/backend/target-diagnostics.test.js +4 -1
  176. package/dist/backend/target-diagnostics.test.js.map +1 -1
  177. package/dist/backend/warm-cache.js +1 -0
  178. package/dist/backend/warm-cache.js.map +1 -1
  179. package/dist/compat/fetch-profile.js +4 -4
  180. package/dist/compat/fetch-profile.js.map +1 -1
  181. package/dist/contracts/check.js +2 -0
  182. package/dist/contracts/check.js.map +1 -1
  183. package/dist/coverage/report.js +1 -1
  184. package/dist/coverage/report.js.map +1 -1
  185. package/dist/diagnostics/diagnostic.d.ts +6 -5
  186. package/dist/diagnostics/diagnostic.js +7 -6
  187. package/dist/diagnostics/diagnostic.js.map +1 -1
  188. package/dist/executable/executable-cache.d.ts +1 -0
  189. package/dist/executable/executable-cache.js +1 -0
  190. package/dist/executable/executable-cache.js.map +1 -1
  191. package/dist/executable/executable-cache.test.js +1 -0
  192. package/dist/executable/executable-cache.test.js.map +1 -1
  193. package/dist/frontend/builtin-modules.d.ts +1 -1
  194. package/dist/frontend/builtin-modules.js +1 -0
  195. package/dist/frontend/builtin-modules.js.map +1 -1
  196. package/dist/frontend/comptime-node.js +2 -2
  197. package/dist/frontend/comptime-node.js.map +1 -1
  198. package/dist/frontend/experimental-import.d.ts +5 -1
  199. package/dist/frontend/experimental-import.js +28 -3
  200. package/dist/frontend/experimental-import.js.map +1 -1
  201. package/dist/frontend/lowering/assert-instances.d.ts +38 -0
  202. package/dist/frontend/lowering/assert-instances.js +269 -0
  203. package/dist/frontend/lowering/assert-instances.js.map +1 -0
  204. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  205. package/dist/frontend/lowering/binding-analysis.js +1 -1
  206. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  207. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  208. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  210. package/dist/frontend/lowering/builtins/blob.js +167 -0
  211. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  212. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  213. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  214. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  215. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  216. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  217. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  218. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  219. package/dist/frontend/lowering/builtins/compression.js +178 -4
  220. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  221. package/dist/frontend/lowering/builtins/constants.js +7 -2
  222. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
  224. package/dist/frontend/lowering/builtins/crypto.js +526 -121
  225. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  226. package/dist/frontend/lowering/builtins/errors.js +23 -0
  227. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  229. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  230. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  232. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  233. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  235. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  236. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  237. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  238. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  239. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  240. package/dist/frontend/lowering/builtins/module-calls.js +44 -11
  241. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  242. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  243. package/dist/frontend/lowering/builtins/performance.js +340 -5
  244. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  245. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  246. package/dist/frontend/lowering/builtins/process.js +107 -14
  247. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  248. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  249. package/dist/frontend/lowering/builtins/properties.js +39 -11
  250. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  251. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  252. package/dist/frontend/lowering/builtins/readline.js +266 -90
  253. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  254. package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
  255. package/dist/frontend/lowering/builtins/timers.js +109 -23
  256. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  257. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  258. package/dist/frontend/lowering/builtins/url.js +36 -0
  259. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  260. package/dist/frontend/lowering/call-arguments.js +1 -1
  261. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  262. package/dist/frontend/lowering/call-signatures.js +26 -2
  263. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  264. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
  265. package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
  266. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  267. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  268. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  269. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  270. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  271. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  272. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  273. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  274. package/dist/frontend/lowering/coercions/structural.js +3 -3
  275. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  276. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  277. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  278. package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
  279. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  280. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  281. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  282. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  283. package/dist/frontend/lowering/containers/bytes.js +38 -26
  284. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  285. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  286. package/dist/frontend/lowering/containers/for-of.js +5 -1
  287. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  288. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  289. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  290. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  291. package/dist/frontend/lowering/crypto-tables.js +77 -12
  292. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  293. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  294. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/object-literals.js +16 -12
  296. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  297. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  298. package/dist/frontend/lowering/generic-functions.js +2 -2
  299. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  300. package/dist/frontend/lowering/http2-constants.js +1 -1
  301. package/dist/frontend/lowering/intern-tables.d.ts +13 -0
  302. package/dist/frontend/lowering/intern-tables.js +536 -0
  303. package/dist/frontend/lowering/intern-tables.js.map +1 -0
  304. package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
  305. package/dist/frontend/lowering/lower-array-sort.js +561 -191
  306. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  307. package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
  308. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  309. package/dist/frontend/lowering/lower-assert.js +702 -63
  310. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  311. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  312. package/dist/frontend/lowering/lower-async-iteration.js +259 -4
  313. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  314. package/dist/frontend/lowering/lower-calls.js +118 -12
  315. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  316. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  317. package/dist/frontend/lowering/lower-classes.js +76 -9
  318. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  319. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  320. package/dist/frontend/lowering/lower-comptime.js +4 -4
  321. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  322. package/dist/frontend/lowering/lower-dgram.js +77 -52
  323. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  324. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  325. package/dist/frontend/lowering/lower-event-target.js +362 -0
  326. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  327. package/dist/frontend/lowering/lower-expando.js +2 -2
  328. package/dist/frontend/lowering/lower-exprs.js +124 -22
  329. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  330. package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
  331. package/dist/frontend/lowering/lower-inspect.js +240 -49
  332. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  333. package/dist/frontend/lowering/lower-mixins.js +1 -1
  334. package/dist/frontend/lowering/lower-mock.d.ts +11 -0
  335. package/dist/frontend/lowering/lower-mock.js +504 -0
  336. package/dist/frontend/lowering/lower-mock.js.map +1 -0
  337. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  338. package/dist/frontend/lowering/lower-modules.js +14 -3
  339. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  340. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  341. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  342. package/dist/frontend/lowering/lower-server.d.ts +3 -0
  343. package/dist/frontend/lowering/lower-server.js +419 -44
  344. package/dist/frontend/lowering/lower-server.js.map +1 -1
  345. package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
  346. package/dist/frontend/lowering/lower-stdlib.js +10 -3
  347. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  348. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  349. package/dist/frontend/lowering/lower-stmts.js +69 -14
  350. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  351. package/dist/frontend/lowering/lower-stream.d.ts +10 -6
  352. package/dist/frontend/lowering/lower-stream.js +1020 -49
  353. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  354. package/dist/frontend/lowering/lower-test.js +86 -8
  355. package/dist/frontend/lowering/lower-test.js.map +1 -1
  356. package/dist/frontend/lowering/lower-timers.js +1 -1
  357. package/dist/frontend/lowering/lowerer.d.ts +45 -5
  358. package/dist/frontend/lowering/lowerer.js +317 -48
  359. package/dist/frontend/lowering/lowerer.js.map +1 -1
  360. package/dist/frontend/lowering/native-ffi.js +2 -2
  361. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  362. package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
  363. package/dist/frontend/lowering/pairs-snapshot.js +49 -0
  364. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  365. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  366. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  367. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  368. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  369. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  370. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  371. package/dist/frontend/lowering/surfaces.d.ts +11 -3
  372. package/dist/frontend/lowering/surfaces.js +334 -37
  373. package/dist/frontend/lowering/surfaces.js.map +1 -1
  374. package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
  375. package/dist/frontend/lowering/zlib-constants.js +181 -0
  376. package/dist/frontend/lowering/zlib-constants.js.map +1 -0
  377. package/dist/frontend/mock-shapes.d.ts +10 -0
  378. package/dist/frontend/mock-shapes.js +76 -0
  379. package/dist/frontend/mock-shapes.js.map +1 -0
  380. package/dist/frontend/module-syntax.d.ts +1 -1
  381. package/dist/frontend/module-syntax.js +1 -1
  382. package/dist/frontend/npm-static-prune.js +1 -1
  383. package/dist/frontend/npm-static-prune.js.map +1 -1
  384. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  385. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  386. package/dist/frontend/pipeline.js +6 -4
  387. package/dist/frontend/pipeline.js.map +1 -1
  388. package/dist/frontend/program.d.ts +3 -3
  389. package/dist/frontend/program.js +25 -18
  390. package/dist/frontend/program.js.map +1 -1
  391. package/dist/frontend/resolve.d.ts +4 -0
  392. package/dist/frontend/resolve.js +15 -1
  393. package/dist/frontend/resolve.js.map +1 -1
  394. package/dist/frontend/ts7/adapter.js +1 -1
  395. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  396. package/dist/frontend/ts7/ast-bytes.js +1 -1
  397. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  398. package/dist/frontend/ts7/semantic-json.js +1 -1
  399. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  400. package/dist/frontend/ts7/world-check.js +1 -1
  401. package/dist/frontend/tsc-codes.js +3 -2
  402. package/dist/frontend/tsc-codes.js.map +1 -1
  403. package/dist/frontend/type-mapper.d.ts +21 -1
  404. package/dist/frontend/type-mapper.js +245 -27
  405. package/dist/frontend/type-mapper.js.map +1 -1
  406. package/dist/index.js +7 -5
  407. package/dist/index.js.map +1 -1
  408. package/dist/ir/analysis.d.ts +12 -6
  409. package/dist/ir/analysis.js +26 -10
  410. package/dist/ir/analysis.js.map +1 -1
  411. package/dist/ir/analysis.test.js +15 -3
  412. package/dist/ir/analysis.test.js.map +1 -1
  413. package/dist/ir/builtin-effects.js +115 -0
  414. package/dist/ir/builtin-effects.js.map +1 -1
  415. package/dist/ir/builtin-signatures.d.ts +1 -1
  416. package/dist/ir/builtin-signatures.js +438 -46
  417. package/dist/ir/builtin-signatures.js.map +1 -1
  418. package/dist/ir/int32-slots.js +1 -0
  419. package/dist/ir/int32-slots.js.map +1 -1
  420. package/dist/ir/ir.d.ts +84 -17
  421. package/dist/ir/ir.js +54 -1
  422. package/dist/ir/ir.js.map +1 -1
  423. package/dist/ir/runtime-features.d.ts +1 -0
  424. package/dist/ir/runtime-features.js +111 -7
  425. package/dist/ir/runtime-features.js.map +1 -1
  426. package/dist/ir/serialize.js +1 -1
  427. package/dist/ir/serialize.js.map +1 -1
  428. package/dist/ir/traverse.js +1 -0
  429. package/dist/ir/traverse.js.map +1 -1
  430. package/dist/ir/validate.js +295 -14
  431. package/dist/ir/validate.js.map +1 -1
  432. package/dist/ir/validate.test.js +60 -0
  433. package/dist/ir/validate.test.js.map +1 -1
  434. package/dist/library/fence-eval.d.ts +1 -1
  435. package/dist/library/fence-eval.js +5 -4
  436. package/dist/library/fence-eval.js.map +1 -1
  437. package/dist/library/ir-policy.js +11 -4
  438. package/dist/library/ir-policy.js.map +1 -1
  439. package/dist/library/library-profile.js +13 -13
  440. package/dist/library/library-profile.js.map +1 -1
  441. package/dist/library/prepare.js +1 -1
  442. package/dist/library/prepare.js.map +1 -1
  443. package/dist/library/sidecar.js +3 -3
  444. package/dist/library/sidecar.js.map +1 -1
  445. package/dist/native/cli.js +1 -0
  446. package/dist/native/cli.js.map +1 -1
  447. package/dist/native/compiler.js +1 -3
  448. package/dist/native/compiler.js.map +1 -1
  449. package/dist/native/prepare.js +4 -2
  450. package/dist/native/prepare.js.map +1 -1
  451. package/dist/native/sanitizer.test.js +1 -0
  452. package/dist/native/sanitizer.test.js.map +1 -1
  453. package/package.json +20 -20
  454. package/surface-manifest.json +1279 -221
@@ -0,0 +1,269 @@
1
+ /* node:assert's Assert class (Node 24.22, lib/assert.js).
2
+ *
3
+ * `new Assert(options?)` merges `{ strict: true, skipPrototype: false }`
4
+ * with the options. A strict instance has own equal, deepEqual, notEqual and
5
+ * notDeepEqual properties that are the strict methods. The prototype methods
6
+ * read the instance options: `diff` reaches every AssertionError the method
7
+ * throws, and `skipPrototype` reaches deepStrictEqual and
8
+ * notDeepStrictEqual.
9
+ *
10
+ * Static instances lower here: a `const` binding initialized by
11
+ * `new Assert()` with literal options or none, whose every reference is a
12
+ * method call on it. The declaration emits nothing, and each method call
13
+ * lowers like the module function, with the options attached at compile
14
+ * time. Other uses of the class are refused with SC2020. */
15
+ import * as ts from "../ts7/adapter.js";
16
+ import { transformExpr } from "../../ir/traverse.js";
17
+ import { stripTypeCasts } from "./builtins/arguments.js";
18
+ /** The methods on an Assert instance: Assert.prototype's, plus a strict
19
+ * instance's own aliases, which share the names. */
20
+ const ASSERT_INSTANCE_METHODS = new Set([
21
+ "deepEqual",
22
+ "deepStrictEqual",
23
+ "doesNotMatch",
24
+ "doesNotReject",
25
+ "doesNotThrow",
26
+ "equal",
27
+ "fail",
28
+ "ifError",
29
+ "match",
30
+ "notDeepEqual",
31
+ "notDeepStrictEqual",
32
+ "notEqual",
33
+ "notStrictEqual",
34
+ "ok",
35
+ "partialDeepStrictEqual",
36
+ "rejects",
37
+ "strictEqual",
38
+ "throws",
39
+ ]);
40
+ const STRICT_ALIASES = new Map([
41
+ ["equal", "strictEqual"],
42
+ ["notEqual", "notStrictEqual"],
43
+ ["deepEqual", "deepStrictEqual"],
44
+ ["notDeepEqual", "notDeepStrictEqual"],
45
+ ]);
46
+ /** Assertion calls whose runtime function can construct an AssertionError.
47
+ * An instance call marks them with its options (`assertOptions`), which the
48
+ * native emitter hands to the runtime right before the call. */
49
+ export const ASSERT_FAILURE_LIB_FNS = new Set([
50
+ "assert.ok",
51
+ "assert.eqF64",
52
+ "assert.eqBigInt",
53
+ "assert.eqStr",
54
+ "assert.eqBool",
55
+ "assert.eqSym",
56
+ "assert.eqDyn",
57
+ "assert.expectsErrDyn",
58
+ "assert.looseDeepDyn",
59
+ "assert.partialDeepDyn",
60
+ "assert.looseResult",
61
+ "assert.deepResult",
62
+ "assert.looseDeepResult",
63
+ "assert.partialDeepResult",
64
+ "assert.match",
65
+ "assert.throwsNone",
66
+ "assert.throwsMismatch",
67
+ "assert.throwsRegex",
68
+ "assert.shapeEnd",
69
+ "assert.unwantedRejection",
70
+ "assert.unwantedError",
71
+ "assert.ifErrorErr",
72
+ "assert.ifErrorF64",
73
+ "assert.ifErrorStr",
74
+ "assert.ifErrorBool",
75
+ "assert.ifErrorDyn",
76
+ "assert.refEqFn",
77
+ "assert.refEqBytes",
78
+ "assert.bytesDeepEq",
79
+ ]);
80
+ /** Whether `expr` is `new Assert(...)` for node:assert's Assert class, by
81
+ * import provenance: `import { Assert } from "node:assert"`, or
82
+ * `assert.Assert` through a module binding. */
83
+ export function isAssertClassNew(lowerer, expr) {
84
+ if (!ts.isNewExpression(expr))
85
+ return false;
86
+ const callee = stripTypeCasts(expr.expression);
87
+ const builtin = ts.isIdentifier(callee)
88
+ ? lowerer.builtinImportOf(callee)
89
+ : ts.isPropertyAccessExpression(callee)
90
+ ? lowerer.builtinMemberOf(callee)
91
+ : null;
92
+ return (builtin !== null &&
93
+ (builtin.module === "assert" || builtin.module === "assert/strict") &&
94
+ builtin.member === "Assert");
95
+ }
96
+ /** The options of `new Assert(<literal options>)`, or null when an option is
97
+ * not a literal or the argument list has another shape. */
98
+ export function literalAssertOptions(expr) {
99
+ const args = expr.arguments ?? [];
100
+ const options = { strict: true, diff: "simple", skipPrototype: false };
101
+ if (args.length === 0)
102
+ return options;
103
+ if (args.length > 1)
104
+ return null;
105
+ const arg = stripTypeCasts(args[0]);
106
+ if (ts.isIdentifier(arg) && arg.text === "undefined")
107
+ return options;
108
+ if (!ts.isObjectLiteralExpression(arg))
109
+ return null;
110
+ for (const prop of arg.properties) {
111
+ if (!ts.isPropertyAssignment(prop))
112
+ return null;
113
+ const name = ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) ? prop.name.text : null;
114
+ const value = stripTypeCasts(prop.initializer);
115
+ const flag = value.kind === ts.SyntaxKind.TrueKeyword
116
+ ? true
117
+ : value.kind === ts.SyntaxKind.FalseKeyword
118
+ ? false
119
+ : null;
120
+ if (name === "strict" && flag !== null)
121
+ options.strict = flag;
122
+ else if (name === "skipPrototype" && flag !== null)
123
+ options.skipPrototype = flag;
124
+ else if (name === "diff" &&
125
+ ts.isStringLiteral(value) &&
126
+ (value.text === "simple" || value.text === "full"))
127
+ options.diff = value.text;
128
+ else
129
+ return null;
130
+ }
131
+ return options;
132
+ }
133
+ /** The static instance a `const` declaration binds, or null. Every
134
+ * reference to the binding must be a method call on it, so the instance is
135
+ * never needed as a value. Cached on the lowerer per declaration. */
136
+ export function staticAssertInstanceDecl(lowerer, nameNode, init) {
137
+ if (!ts.isIdentifier(nameNode) || init === undefined)
138
+ return null;
139
+ const decl = nameNode.parent;
140
+ if (!ts.isVariableDeclaration(decl) || decl.name !== nameNode)
141
+ return null;
142
+ const cached = lowerer.assertInstances.get(decl);
143
+ if (cached !== undefined)
144
+ return cached;
145
+ let result = null;
146
+ const value = stripTypeCasts(init);
147
+ if (ts.isNewExpression(value) &&
148
+ isAssertClassNew(lowerer, value) &&
149
+ ts.isVariableDeclarationList(decl.parent) &&
150
+ (decl.parent.flags & ts.NodeFlags.Const) !== 0) {
151
+ const options = literalAssertOptions(value);
152
+ if (options !== null && onlyMethodCallReferences(lowerer, nameNode))
153
+ result = options;
154
+ }
155
+ lowerer.assertInstances.set(decl, result);
156
+ return result;
157
+ }
158
+ /** The static instance an expression names, or null. */
159
+ export function assertInstanceOf(lowerer, expr) {
160
+ if (!ts.isIdentifier(expr))
161
+ return null;
162
+ const symbol = lowerer.checker.getSymbolAtLocation(expr);
163
+ const decl = symbol ? lowerer.checker.declarationsOf(symbol)[0] : undefined;
164
+ if (decl === undefined || !ts.isVariableDeclaration(decl))
165
+ return null;
166
+ return staticAssertInstanceDecl(lowerer, decl.name, decl.initializer);
167
+ }
168
+ function onlyMethodCallReferences(lowerer, name) {
169
+ const symbol = lowerer.checker.getSymbolAtLocation(name);
170
+ if (symbol === undefined)
171
+ return false;
172
+ let ok = true;
173
+ const visit = (node) => {
174
+ if (!ok)
175
+ return;
176
+ if (ts.isIdentifier(node) && node !== name && node.text === name.text) {
177
+ if (lowerer.checker.getSymbolAtLocation(node) === symbol && !isMethodCallReceiver(node))
178
+ ok = false;
179
+ return;
180
+ }
181
+ ts.forEachChild(node, visit);
182
+ };
183
+ visit(name.getSourceFile());
184
+ return ok;
185
+ }
186
+ function isMethodCallReceiver(node) {
187
+ const access = node.parent;
188
+ if (!ts.isPropertyAccessExpression(access) ||
189
+ access.expression !== node ||
190
+ access.questionDotToken !== undefined ||
191
+ !ASSERT_INSTANCE_METHODS.has(access.name.text))
192
+ return false;
193
+ const call = access.parent;
194
+ return ts.isCallExpression(call) && call.expression === access;
195
+ }
196
+ /** The methods whose AssertionError carries the instance's `diff`: Node
197
+ * 24.22 passes `this?.[kOptions]?.diff` from these. ok, match,
198
+ * doesNotMatch and the throws, rejects, doesNotThrow and doesNotReject
199
+ * expectations construct their errors without it (`diff` is "simple"). */
200
+ const DIFF_METHODS = new Set([
201
+ "fail",
202
+ "equal",
203
+ "notEqual",
204
+ "deepEqual",
205
+ "notDeepEqual",
206
+ "strictEqual",
207
+ "notStrictEqual",
208
+ "deepStrictEqual",
209
+ "notDeepStrictEqual",
210
+ "partialDeepStrictEqual",
211
+ "ifError",
212
+ ]);
213
+ /** `instance.method(...)` on a static instance: the module function's
214
+ * lowering, with the strict aliases and the instance options that reach
215
+ * the method. Null when the receiver is not a static instance. */
216
+ export function lowerAssertInstanceCall(lowerer, expr, access, loc) {
217
+ const options = assertInstanceOf(lowerer, access.expression);
218
+ if (options === null)
219
+ return null;
220
+ const module = options.strict ? "assert/strict" : "assert";
221
+ const member = access.name.text;
222
+ // A strict instance's own aliases are the strict methods.
223
+ const method = options.strict && STRICT_ALIASES.has(member) ? STRICT_ALIASES.get(member) : member;
224
+ // Node passes skipPrototype to isDeepStrictEqual from deepStrictEqual and
225
+ // notDeepStrictEqual only.
226
+ const applied = {
227
+ strict: options.strict,
228
+ diff: DIFF_METHODS.has(method) ? options.diff : "simple",
229
+ skipPrototype: options.skipPrototype && (method === "deepStrictEqual" || method === "notDeepStrictEqual"),
230
+ };
231
+ const previous = lowerer.assertCallOptions;
232
+ lowerer.assertCallOptions = applied;
233
+ try {
234
+ const lowered = lowerer.lowerAssertModuleCall(expr, { module, member }, loc);
235
+ if (lowered === null)
236
+ return null;
237
+ return markAssertOptionsExpr(lowered, applied);
238
+ }
239
+ finally {
240
+ lowerer.assertCallOptions = previous;
241
+ }
242
+ }
243
+ /** The runtime options an instance attaches to its failure calls, or null
244
+ * for the defaults. */
245
+ export function assertOptionsMark(options) {
246
+ if (options === null)
247
+ return null;
248
+ const mark = {};
249
+ if (options.diff === "full")
250
+ mark.diff = "full";
251
+ if (options.skipPrototype)
252
+ mark.skipPrototype = true;
253
+ return mark.diff === undefined && mark.skipPrototype === undefined ? null : mark;
254
+ }
255
+ const markLibCall = (mark) => ({
256
+ expr(node) {
257
+ if (node.kind === "libCall" && ASSERT_FAILURE_LIB_FNS.has(node.fn))
258
+ return { ...node, assertOptions: mark };
259
+ return node;
260
+ },
261
+ stmt: (node) => node,
262
+ });
263
+ /** Attaches the instance options to every assertion failure call in a
264
+ * lowered call site. */
265
+ export function markAssertOptionsExpr(expr, options) {
266
+ const mark = assertOptionsMark(options);
267
+ return mark === null ? expr : transformExpr(expr, markLibCall(mark));
268
+ }
269
+ //# sourceMappingURL=assert-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-instances.js","sourceRoot":"","sources":["../../../src/frontend/lowering/assert-instances.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export declare function nullishValueUnitOf(lowerer: Lowerer, sym: ts.Symbol | nu
31
31
  * and a RECORD-mapped one (`const i: I<A & B> = null as any` — an
32
32
  * interface whose members are all generic signatures interns an empty
33
33
  * shape) has a slot null can never inhabit, so storing would throw the
34
- * representation error where Node stores null silently. Either way the
34
+ * representation error where Node stores null. Either way the
35
35
  * declaration emits nothing and reads know the value. Null-tolerant
36
36
  * mappings (unions with a null/undefined arm, dyn) keep their real
37
37
  * storage and every ordinary lowering. */
@@ -178,7 +178,7 @@ function usedInHeritageClause(lowerer, sym) {
178
178
  * and a RECORD-mapped one (`const i: I<A & B> = null as any` — an
179
179
  * interface whose members are all generic signatures interns an empty
180
180
  * shape) has a slot null can never inhabit, so storing would throw the
181
- * representation error where Node stores null silently. Either way the
181
+ * representation error where Node stores null. Either way the
182
182
  * declaration emits nothing and reads know the value. Null-tolerant
183
183
  * mappings (unions with a null/undefined arm, dyn) keep their real
184
184
  * storage and every ordinary lowering. */
@@ -40,4 +40,8 @@ export declare function optionMember(p: ts.ObjectLiteralElementLike): {
40
40
  value: ts.Expression;
41
41
  } | null;
42
42
  export declare function errorFirstBytesCallback(lowerer: Lowerer, node: ts.Expression, api: string, arrayBuffer?: boolean): IrExpr;
43
+ /** An error-first callback (error, value) whose error parameter is
44
+ * Error | null or dyn and whose value parameter is dyn or accepted by
45
+ * `acceptValue`; `values` names the accepted values in the refusal. */
46
+ export declare function errorFirstCallback(lowerer: Lowerer, node: ts.Expression, api: string, acceptValue: (value: IrType) => boolean, values: string): IrExpr;
43
47
  export declare function lowerBuiltinByteInput(lowerer: Lowerer, node: ts.Expression, loc: SrcLoc, module: "crypto" | "zlib"): IrExpr;
@@ -181,6 +181,12 @@ export function optionMember(p) {
181
181
  return null;
182
182
  }
183
183
  export function errorFirstBytesCallback(lowerer, node, api, arrayBuffer = false) {
184
+ return errorFirstCallback(lowerer, node, api, (value) => !arrayBuffer && value.kind === "bytes" && value.elem === "u8", arrayBuffer ? "ArrayBuffer" : "Buffer/Uint8Array");
185
+ }
186
+ /** An error-first callback (error, value) whose error parameter is
187
+ * Error | null or dyn and whose value parameter is dyn or accepted by
188
+ * `acceptValue`; `values` names the accepted values in the refusal. */
189
+ export function errorFirstCallback(lowerer, node, api, acceptValue, values) {
184
190
  let callback = lowerer.lowerExpr(node);
185
191
  if (callback.type.kind === "dyn") {
186
192
  callback = {
@@ -209,10 +215,8 @@ export function errorFirstBytesCallback(lowerer, node, api, arrayBuffer = false)
209
215
  lowerer.unsupported("SC1090", node, `${api} callback error parameters must be Error | null`);
210
216
  }
211
217
  const value = callback.type.params[1];
212
- if (value !== undefined &&
213
- value.kind !== "dyn" &&
214
- (arrayBuffer || !(value.kind === "bytes" && value.elem === "u8"))) {
215
- lowerer.unsupported("SC1090", node, `${api} callback result parameters must be ${arrayBuffer ? "ArrayBuffer" : "Buffer/Uint8Array"} values`);
218
+ if (value !== undefined && value.kind !== "dyn" && !acceptValue(value)) {
219
+ lowerer.unsupported("SC1090", node, `${api} callback result parameters must be ${values} values`);
216
220
  }
217
221
  return voidizedCallback(lowerer, callback, locOf(node));
218
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/arguments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as ts from "../../ts7/adapter.js";
2
+ import { type Lowerer } from "../lowerer.js";
3
+ import { type IrExpr } from "../../../ir/ir.js";
4
+ type BlobClass = "Blob" | "File";
5
+ /** The Blob or File constructor in any spelling: the globals, globalThis
6
+ * members, and node:buffer's named, namespace and require bindings. */
7
+ export declare function blobClassOf(lowerer: Lowerer, node: ts.Expression): BlobClass | null;
8
+ /** `new Blob(sources?, options?)` and `new File(bits, name, options?)`:
9
+ * the argument vector goes to the runtime, which validates it in Node's
10
+ * order. */
11
+ export declare function lowerBlobNew(lowerer: Lowerer, expr: ts.NewExpression): IrExpr | null;
12
+ /** slice(), text(), bytes() and arrayBuffer() on a Blob or File. */
13
+ export declare function lowerStaticBlobCall(lowerer: Lowerer, call: ts.CallExpression): IrExpr | null;
14
+ /** `v instanceof Blob` / `v instanceof File`. */
15
+ export declare function lowerBlobInstanceof(lowerer: Lowerer, expr: ts.BinaryExpression): IrExpr | null;
16
+ /** Members outside the native surface: Node keeps Blob's state in internal
17
+ * slots behind prototype getters and methods, so only the modeled reads
18
+ * and calls lower; stream() and the rest are refused here. */
19
+ export declare function fenceStaticBlobMember(lowerer: Lowerer, access: ts.PropertyAccessExpression | ts.ElementAccessExpression, use: "read" | "call"): IrExpr | null;
20
+ export {};
@@ -0,0 +1,167 @@
1
+ import * as ts from "../../ts7/adapter.js";
2
+ import {} from "../lowerer.js";
3
+ import { locOf } from "../../program.js";
4
+ import { BOOL, BYTES_U8, DYN, F64, STRING } from "../../../ir/ir.js";
5
+ import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
6
+ import { stdlibGlobalNameOf } from "../surfaces.js";
7
+ import { builtinImportOf } from "./module-bindings.js";
8
+ const BLOB_READS = new Set(["size", "type"]);
9
+ const FILE_READS = new Set(["size", "type", "name", "lastModified"]);
10
+ const BLOB_CALLS = new Set(["slice", "text", "bytes", "arrayBuffer"]);
11
+ // The stream readers Node 24 defines (textStream() is newer than some type
12
+ // declarations, so it is matched by name).
13
+ const STREAM_MEMBERS = new Set(["stream", "textStream"]);
14
+ // Object.prototype members other than toString() (the handle answers the
15
+ // class tag): the native handle has no prototype chain to answer them.
16
+ const OBJECT_PROTOTYPE_MEMBERS = new Set([
17
+ "constructor",
18
+ "valueOf",
19
+ "hasOwnProperty",
20
+ "isPrototypeOf",
21
+ "propertyIsEnumerable",
22
+ "toLocaleString",
23
+ "__proto__",
24
+ ]);
25
+ /** The Blob or File constructor in any spelling: the globals, globalThis
26
+ * members, and node:buffer's named, namespace and require bindings. */
27
+ export function blobClassOf(lowerer, node) {
28
+ const global = stdlibGlobalNameOf(lowerer, node);
29
+ if (global === "Blob" || global === "File")
30
+ return global;
31
+ const builtin = ts.isIdentifier(node)
32
+ ? builtinImportOf(lowerer, node)
33
+ : ts.isPropertyAccessExpression(node) && !node.questionDotToken
34
+ ? lowerer.builtinMemberOf(node)
35
+ : null;
36
+ if (builtin?.module === "buffer" && (builtin.member === "Blob" || builtin.member === "File")) {
37
+ return builtin.member;
38
+ }
39
+ return null;
40
+ }
41
+ /** The class of a stdlib Blob/File-typed receiver, or null. */
42
+ function blobReceiverClass(lowerer, node) {
43
+ const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
44
+ const sym = type.getAliasSymbol() ?? type.getSymbol();
45
+ if (!sym || (sym.name !== "Blob" && sym.name !== "File") || !lowerer.isStdlibSymbol(sym)) {
46
+ return null;
47
+ }
48
+ return sym.name;
49
+ }
50
+ function memberNameOf(access) {
51
+ if (ts.isPropertyAccessExpression(access))
52
+ return access.name.text;
53
+ const key = access.argumentExpression;
54
+ return ts.isStringLiteralLike(key) ? key.text : null;
55
+ }
56
+ /** `new Blob(sources?, options?)` and `new File(bits, name, options?)`:
57
+ * the argument vector goes to the runtime, which validates it in Node's
58
+ * order. */
59
+ export function lowerBlobNew(lowerer, expr) {
60
+ const cls = blobClassOf(lowerer, expr.expression);
61
+ if (cls === null)
62
+ return null;
63
+ const args = expr.arguments ?? [];
64
+ if (args.some(ts.isSpreadElement))
65
+ return null;
66
+ const loc = locOf(expr);
67
+ const values = args.map((arg) => ts.isObjectLiteralExpression(arg)
68
+ ? lowerDynObjectLiteral(lowerer, arg)
69
+ : lowerer.lowerExprExpecting(arg, DYN));
70
+ return {
71
+ kind: "libCall",
72
+ fn: cls === "Blob" ? "blob.new" : "blob.fileNew",
73
+ args: [{ kind: "dynArrLit", elems: values, type: DYN, loc }],
74
+ type: DYN,
75
+ loc,
76
+ };
77
+ }
78
+ /** slice(), text(), bytes() and arrayBuffer() on a Blob or File. */
79
+ export function lowerStaticBlobCall(lowerer, call) {
80
+ if (call.questionDotToken || !ts.isPropertyAccessExpression(call.expression))
81
+ return null;
82
+ const access = call.expression;
83
+ const member = access.name.text;
84
+ if (access.questionDotToken || !BLOB_CALLS.has(member))
85
+ return null;
86
+ if (blobReceiverClass(lowerer, access.expression) === null)
87
+ return null;
88
+ if (call.arguments.some(ts.isSpreadElement))
89
+ return null;
90
+ const loc = locOf(call);
91
+ const receiver = lowerer.lowerExprExpecting(access.expression, DYN);
92
+ const args = call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN));
93
+ if (member === "slice") {
94
+ return {
95
+ kind: "libCall",
96
+ fn: "blob.slice",
97
+ args: [receiver, { kind: "dynArrLit", elems: args, type: DYN, loc }],
98
+ type: DYN,
99
+ loc,
100
+ };
101
+ }
102
+ const read = (recv) => ({
103
+ kind: "libCall",
104
+ fn: member === "text" ? "blob.text" : member === "bytes" ? "blob.bytes" : "blob.arrayBuffer",
105
+ args: [recv],
106
+ type: {
107
+ kind: "promise",
108
+ inner: member === "text" ? STRING : member === "bytes" ? BYTES_U8 : DYN,
109
+ },
110
+ loc,
111
+ });
112
+ if (args.length === 0)
113
+ return read(receiver);
114
+ // The readers take no arguments; extra ones still evaluate after the
115
+ // receiver and before the read.
116
+ const local = lowerer.declareHiddenLocal("%blobReceiver", DYN);
117
+ const stmts = [
118
+ { kind: "varDecl", localId: local.id, init: receiver, loc },
119
+ ...args.map((arg) => ({ kind: "exprStmt", expr: arg, loc: arg.loc })),
120
+ ];
121
+ const result = read({ kind: "varRef", localId: local.id, type: DYN, loc });
122
+ return { kind: "seqExpr", stmts, result, type: result.type, loc };
123
+ }
124
+ /** `v instanceof Blob` / `v instanceof File`. */
125
+ export function lowerBlobInstanceof(lowerer, expr) {
126
+ const cls = blobClassOf(lowerer, expr.right);
127
+ if (cls === null)
128
+ return null;
129
+ const loc = locOf(expr);
130
+ const value = lowerer.coerceInto(expr.left, lowerer.lowerExpr(expr.left), DYN);
131
+ return {
132
+ kind: "libCall",
133
+ fn: "blob.is",
134
+ args: [value, { kind: "numLit", value: cls === "Blob" ? 0 : 1, type: F64, loc }],
135
+ type: BOOL,
136
+ loc,
137
+ };
138
+ }
139
+ /** Members outside the native surface: Node keeps Blob's state in internal
140
+ * slots behind prototype getters and methods, so only the modeled reads
141
+ * and calls lower; stream() and the rest are refused here. */
142
+ export function fenceStaticBlobMember(lowerer, access, use) {
143
+ const cls = blobReceiverClass(lowerer, access.expression);
144
+ if (cls === null)
145
+ return null;
146
+ const member = memberNameOf(access);
147
+ if (member !== null) {
148
+ if (use === "call" && (BLOB_CALLS.has(member) || member === "toString"))
149
+ return null;
150
+ if (use === "read" && (cls === "File" ? FILE_READS : BLOB_READS).has(member))
151
+ return null;
152
+ // Names the class does not declare keep the generic dynamic path
153
+ // (undefined reads, Node's "is not a function" TypeError, and the
154
+ // handle's toString()).
155
+ const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
156
+ if (!OBJECT_PROTOTYPE_MEMBERS.has(member) &&
157
+ !STREAM_MEMBERS.has(member) &&
158
+ !lowerer.checker.getPropertyOfType(type, member)) {
159
+ return null;
160
+ }
161
+ }
162
+ if (member !== null && STREAM_MEMBERS.has(member)) {
163
+ lowerer.noLowering(`${cls}.${member}()`, access, "Blob streams are not supported yet; read the contents with bytes(), arrayBuffer() or text()");
164
+ }
165
+ lowerer.noLowering(member === null ? `computed ${cls} members` : `${cls}.${member}`, access, `the native ${cls} surface is ${cls === "File" ? "name, lastModified, " : ""}size and type plus slice(), text(), bytes() and arrayBuffer()`);
166
+ }
167
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/blob.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { type Lowerer } from "../lowerer.js";
3
3
  import { type IrExpr, type SrcLoc } from "../../../ir/ir.js";
4
4
  /** A call THROUGH a promisified-execFile binding:
5
5
  * `execFileAsync(file, args?, options?)` → one call of the interned
6
- * %execFileAsync helper — an ASYNC IR function (throw-becomes-rejection
7
- * for free) that runs the exec core synchronously and returns
6
+ * %execFileAsync helper — an ASYNC IR function (a throw becomes a rejection
7
+ * automatically) that runs the exec core synchronously and returns
8
8
  * `{ stdout, stderr }`, exactly Node's promisified execFile behind an
9
9
  * already-settled promise (the fs/promises stance, divergence 23).
10
10
  * Options are the exec-sync slice minus stdio (the async form always
@@ -8,8 +8,8 @@ import { BOOL, F64, SPAWNRES_T, STRING, arrayOf, } from "../../../ir/ir.js";
8
8
  import { optionMember } from "./arguments.js";
9
9
  /** A call THROUGH a promisified-execFile binding:
10
10
  * `execFileAsync(file, args?, options?)` → one call of the interned
11
- * %execFileAsync helper — an ASYNC IR function (throw-becomes-rejection
12
- * for free) that runs the exec core synchronously and returns
11
+ * %execFileAsync helper — an ASYNC IR function (a throw becomes a rejection
12
+ * automatically) that runs the exec core synchronously and returns
13
13
  * `{ stdout, stderr }`, exactly Node's promisified execFile behind an
14
14
  * already-settled promise (the fs/promises stance, divergence 23).
15
15
  * Options are the exec-sync slice minus stdio (the async form always
@@ -127,7 +127,7 @@ export function lowerChildMethodCall(lowerer, call, access) {
127
127
  if (cb.type.ret.kind !== "void") {
128
128
  // `() => 5` IS assignable to a void-returning listener slot; the
129
129
  // registry's call ABI is void, so a value-returning closure is
130
- // fenced instead of silently called wrong.
130
+ // fenced instead of being called through the wrong ABI.
131
131
  lowerer.unsupported("SC1090", call.arguments[1], "listeners returning a value (make the callback body a block, or return nothing)");
132
132
  }
133
133
  const param = cb.type.params[0];