@scriptc/compiler 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +198 -44
  2. package/ambient/scriptc-overrides.d.ts +21 -0
  3. package/dist/backend/executable-features.js +3 -0
  4. package/dist/backend/executable-features.js.map +1 -1
  5. package/dist/backend/library-pack.js +2 -1
  6. package/dist/backend/library-pack.js.map +1 -1
  7. package/dist/backend/linker.js +11 -1
  8. package/dist/backend/linker.js.map +1 -1
  9. package/dist/backend/lld.d.ts +9 -0
  10. package/dist/backend/lld.js +48 -0
  11. package/dist/backend/lld.js.map +1 -0
  12. package/dist/backend/lld.test.d.ts +1 -0
  13. package/dist/backend/lld.test.js +53 -0
  14. package/dist/backend/lld.test.js.map +1 -0
  15. package/dist/backend/llvm/appended-array-literals.d.ts +11 -1
  16. package/dist/backend/llvm/appended-array-literals.js +29 -0
  17. package/dist/backend/llvm/appended-array-literals.js.map +1 -1
  18. package/dist/backend/llvm/blocks.js +10 -1
  19. package/dist/backend/llvm/blocks.js.map +1 -1
  20. package/dist/backend/llvm/bytes-alias.d.ts +13 -4
  21. package/dist/backend/llvm/bytes-alias.js +16 -5
  22. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  23. package/dist/backend/llvm/bytes-bounds.d.ts +5 -1
  24. package/dist/backend/llvm/bytes-bounds.js +199 -2
  25. package/dist/backend/llvm/bytes-bounds.js.map +1 -1
  26. package/dist/backend/llvm/bytes-loop-versions.d.ts +45 -3
  27. package/dist/backend/llvm/bytes-loop-versions.js +238 -20
  28. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  29. package/dist/backend/llvm/bytes-loop-versions.test.js +11 -4
  30. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  31. package/dist/backend/llvm/call-lifetimes.d.ts +8 -2
  32. package/dist/backend/llvm/call-lifetimes.js +87 -18
  33. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  34. package/dist/backend/llvm/call-lifetimes.test.js +132 -0
  35. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  36. package/dist/backend/llvm/classes.d.ts +3 -2
  37. package/dist/backend/llvm/classes.js +4 -4
  38. package/dist/backend/llvm/classes.js.map +1 -1
  39. package/dist/backend/llvm/counted-loops.d.ts +14 -2
  40. package/dist/backend/llvm/counted-loops.js +54 -5
  41. package/dist/backend/llvm/counted-loops.js.map +1 -1
  42. package/dist/backend/llvm/debug-info.d.ts +42 -1
  43. package/dist/backend/llvm/debug-info.js +70 -1
  44. package/dist/backend/llvm/debug-info.js.map +1 -1
  45. package/dist/backend/llvm/dense-array-loops.js +2 -2
  46. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  47. package/dist/backend/llvm/dense-array-loops.test.js +1 -0
  48. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  49. package/dist/backend/llvm/dyn.d.ts +65 -8
  50. package/dist/backend/llvm/dyn.js +375 -40
  51. package/dist/backend/llvm/dyn.js.map +1 -1
  52. package/dist/backend/llvm/emit-function.js +28 -8
  53. package/dist/backend/llvm/emit-function.js.map +1 -1
  54. package/dist/backend/llvm/emit-journal.d.ts +8 -4
  55. package/dist/backend/llvm/emit-journal.js +75 -5
  56. package/dist/backend/llvm/emit-journal.js.map +1 -1
  57. package/dist/backend/llvm/emit-module.d.ts +4 -0
  58. package/dist/backend/llvm/emit-module.js +58 -23
  59. package/dist/backend/llvm/emit-module.js.map +1 -1
  60. package/dist/backend/llvm/emit-statements.js +297 -28
  61. package/dist/backend/llvm/emit-statements.js.map +1 -1
  62. package/dist/backend/llvm/emitter.d.ts +134 -13
  63. package/dist/backend/llvm/emitter.js +514 -87
  64. package/dist/backend/llvm/emitter.js.map +1 -1
  65. package/dist/backend/llvm/expr-bytes.d.ts +6 -4
  66. package/dist/backend/llvm/expr-bytes.js +31 -8
  67. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  68. package/dist/backend/llvm/expr-calls.js +13 -11
  69. package/dist/backend/llvm/expr-calls.js.map +1 -1
  70. package/dist/backend/llvm/expr-containers.d.ts +11 -0
  71. package/dist/backend/llvm/expr-containers.js +87 -9
  72. package/dist/backend/llvm/expr-containers.js.map +1 -1
  73. package/dist/backend/llvm/expr-context.d.ts +3 -0
  74. package/dist/backend/llvm/expr-control.js +83 -0
  75. package/dist/backend/llvm/expr-control.js.map +1 -1
  76. package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
  77. package/dist/backend/llvm/expr-dynamic.js +22 -4
  78. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  79. package/dist/backend/llvm/expr-primitives.js +107 -9
  80. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  81. package/dist/backend/llvm/expr-stream-bridges.js +95 -22
  82. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  83. package/dist/backend/llvm/forked-analysis.d.ts +8 -0
  84. package/dist/backend/llvm/forked-analysis.js +43 -0
  85. package/dist/backend/llvm/forked-analysis.js.map +1 -0
  86. package/dist/backend/llvm/integer-values.d.ts +7 -0
  87. package/dist/backend/llvm/integer-values.js +42 -2
  88. package/dist/backend/llvm/integer-values.js.map +1 -1
  89. package/dist/backend/llvm/integer-views.d.ts +2 -1
  90. package/dist/backend/llvm/integer-views.js +12 -1
  91. package/dist/backend/llvm/integer-views.js.map +1 -1
  92. package/dist/backend/llvm/js-ic.d.ts +4 -0
  93. package/dist/backend/llvm/js-ic.js +133 -15
  94. package/dist/backend/llvm/js-ic.js.map +1 -1
  95. package/dist/backend/llvm/layouts.d.ts +1 -0
  96. package/dist/backend/llvm/layouts.js.map +1 -1
  97. package/dist/backend/llvm/lazy-captures.d.ts +6 -1
  98. package/dist/backend/llvm/lazy-captures.js +10 -5
  99. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  100. package/dist/backend/llvm/lib-abi.d.ts +5 -0
  101. package/dist/backend/llvm/lib-abi.js +19 -0
  102. package/dist/backend/llvm/lib-abi.js.map +1 -1
  103. package/dist/backend/llvm/lib-dispatch.js +128 -42
  104. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  105. package/dist/backend/llvm/lib-filesystem.d.ts +10 -0
  106. package/dist/backend/llvm/lib-filesystem.js +32 -0
  107. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  108. package/dist/backend/llvm/lib-http2.js +2 -2
  109. package/dist/backend/llvm/lib-http2.js.map +1 -1
  110. package/dist/backend/llvm/lib-network.js +2 -0
  111. package/dist/backend/llvm/lib-network.js.map +1 -1
  112. package/dist/backend/llvm/lib-process.js +11 -0
  113. package/dist/backend/llvm/lib-process.js.map +1 -1
  114. package/dist/backend/llvm/lib-shared.js +43 -0
  115. package/dist/backend/llvm/lib-shared.js.map +1 -1
  116. package/dist/backend/llvm/lib-tls.js +28 -3
  117. package/dist/backend/llvm/lib-tls.js.map +1 -1
  118. package/dist/backend/llvm/local-union-storage.test.js +2 -1
  119. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  120. package/dist/backend/llvm/loop-array-borrows.d.ts +4 -1
  121. package/dist/backend/llvm/loop-array-borrows.js +11 -5
  122. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  123. package/dist/backend/llvm/map-entry-fusion.d.ts +5 -3
  124. package/dist/backend/llvm/map-entry-fusion.js +20 -11
  125. package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
  126. package/dist/backend/llvm/map-entry-fusion.test.js +14 -6
  127. package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -1
  128. package/dist/backend/llvm/map-number-lookup.d.ts +16 -6
  129. package/dist/backend/llvm/map-number-lookup.js +41 -9
  130. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  131. package/dist/backend/llvm/map-number-lookup.test.js +70 -2
  132. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  133. package/dist/backend/llvm/map-read-lifetimes.d.ts +25 -2
  134. package/dist/backend/llvm/map-read-lifetimes.js +136 -6
  135. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  136. package/dist/backend/llvm/map-read-lifetimes.test.js +8 -3
  137. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  138. package/dist/backend/llvm/nullable-unions.d.ts +5 -0
  139. package/dist/backend/llvm/nullable-unions.js +29 -2
  140. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  141. package/dist/backend/llvm/nullable-unions.test.js +25 -1
  142. package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
  143. package/dist/backend/llvm/record-union-keys.test.d.ts +1 -0
  144. package/dist/backend/llvm/record-union-keys.test.js +161 -0
  145. package/dist/backend/llvm/record-union-keys.test.js.map +1 -0
  146. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  147. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  148. package/dist/backend/llvm/shapes.d.ts +4 -5
  149. package/dist/backend/llvm/shapes.js +104 -51
  150. package/dist/backend/llvm/shapes.js.map +1 -1
  151. package/dist/backend/llvm/shapes.test.js +14 -2
  152. package/dist/backend/llvm/shapes.test.js.map +1 -1
  153. package/dist/backend/llvm/speculative-integers.d.ts +50 -3
  154. package/dist/backend/llvm/speculative-integers.js +411 -24
  155. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  156. package/dist/backend/llvm/speculative-integers.test.js +103 -1
  157. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  158. package/dist/backend/llvm/split.d.ts +10 -1
  159. package/dist/backend/llvm/split.js +243 -59
  160. package/dist/backend/llvm/split.js.map +1 -1
  161. package/dist/backend/llvm/split.test.js +92 -13
  162. package/dist/backend/llvm/split.test.js.map +1 -1
  163. package/dist/backend/llvm/stack-objects.test.js +3 -2
  164. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  165. package/dist/backend/llvm/string-lifetimes.test.js +1 -1
  166. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  167. package/dist/backend/llvm/string-reads.d.ts +13 -0
  168. package/dist/backend/llvm/string-reads.js +22 -0
  169. package/dist/backend/llvm/string-reads.js.map +1 -1
  170. package/dist/backend/llvm/string-slices.d.ts +36 -2
  171. package/dist/backend/llvm/string-slices.js +308 -12
  172. package/dist/backend/llvm/string-slices.js.map +1 -1
  173. package/dist/backend/llvm/string-slices.test.js +182 -3
  174. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  175. package/dist/backend/llvm/string-unit-versions.d.ts +11 -0
  176. package/dist/backend/llvm/string-unit-versions.js +191 -0
  177. package/dist/backend/llvm/string-unit-versions.js.map +1 -0
  178. package/dist/backend/llvm/string-unit-versions.test.d.ts +1 -0
  179. package/dist/backend/llvm/string-unit-versions.test.js +117 -0
  180. package/dist/backend/llvm/string-unit-versions.test.js.map +1 -0
  181. package/dist/backend/llvm/test-boxed-unions.d.ts +5 -2
  182. package/dist/backend/llvm/test-boxed-unions.js +24 -8
  183. package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
  184. package/dist/backend/llvm/unwind-abi.d.ts +52 -0
  185. package/dist/backend/llvm/unwind-abi.js +498 -0
  186. package/dist/backend/llvm/unwind-abi.js.map +1 -0
  187. package/dist/backend/llvm/unwind-abi.test.d.ts +1 -0
  188. package/dist/backend/llvm/unwind-abi.test.js +255 -0
  189. package/dist/backend/llvm/unwind-abi.test.js.map +1 -0
  190. package/dist/backend/llvm/wrapping-sums.d.ts +14 -10
  191. package/dist/backend/llvm/wrapping-sums.js +31 -14
  192. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  193. package/dist/backend/loop-polls.d.ts +6 -0
  194. package/dist/backend/loop-polls.js +24 -0
  195. package/dist/backend/loop-polls.js.map +1 -1
  196. package/dist/backend/may-throw.js +8 -8
  197. package/dist/backend/may-throw.js.map +1 -1
  198. package/dist/backend/native/contracts.d.ts +12 -2
  199. package/dist/backend/native/executable.js +48 -6
  200. package/dist/backend/native/executable.js.map +1 -1
  201. package/dist/backend/native/library.js +4 -3
  202. package/dist/backend/native/library.js.map +1 -1
  203. package/dist/backend/native/program-shards.d.ts +2 -2
  204. package/dist/backend/native/program-shards.js +2 -2
  205. package/dist/backend/native/program-shards.js.map +1 -1
  206. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  207. package/dist/backend/native/runtime-inputs.js +4 -1
  208. package/dist/backend/native/runtime-inputs.js.map +1 -1
  209. package/dist/backend/native/vendor.d.ts +1 -1
  210. package/dist/backend/native/vendor.js +1 -1
  211. package/dist/backend/native/vendor.js.map +1 -1
  212. package/dist/backend/native-codegen.d.ts +3 -1
  213. package/dist/backend/native-codegen.js +4 -3
  214. package/dist/backend/native-codegen.js.map +1 -1
  215. package/dist/backend/native-link-info-core.d.ts +8 -0
  216. package/dist/backend/native-link-info-core.js.map +1 -1
  217. package/dist/backend/native-profile.d.ts +14 -0
  218. package/dist/backend/native-profile.js +28 -0
  219. package/dist/backend/native-profile.js.map +1 -1
  220. package/dist/backend/native-profile.test.js +8 -1
  221. package/dist/backend/native-profile.test.js.map +1 -1
  222. package/dist/backend/native-toolchain.test.js +11 -11
  223. package/dist/backend/native-toolchain.test.js.map +1 -1
  224. package/dist/backend/runtime-abi.d.ts +2 -2
  225. package/dist/backend/runtime-abi.js +2 -2
  226. package/dist/backend/runtime-pack-core.d.ts +3 -1
  227. package/dist/backend/runtime-pack-core.js +2 -0
  228. package/dist/backend/runtime-pack-core.js.map +1 -1
  229. package/dist/backend/runtime-pack-native.d.ts +17 -5
  230. package/dist/backend/runtime-pack-native.js +186 -14
  231. package/dist/backend/runtime-pack-native.js.map +1 -1
  232. package/dist/backend/runtime-pack-native.test.js +160 -3
  233. package/dist/backend/runtime-pack-native.test.js.map +1 -1
  234. package/dist/backend/runtime-pack-targets.test.js +2 -1
  235. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  236. package/dist/backend/runtime-pack.test.js +2 -1
  237. package/dist/backend/runtime-pack.test.js.map +1 -1
  238. package/dist/backend/vendor-archives.d.ts +4 -1
  239. package/dist/backend/vendor-archives.js +78 -4
  240. package/dist/backend/vendor-archives.js.map +1 -1
  241. package/dist/backend/vendor-inputs.d.ts +3 -1
  242. package/dist/backend/vendor-inputs.js +3 -1
  243. package/dist/backend/vendor-inputs.js.map +1 -1
  244. package/dist/backend/warm-cache.js +1 -0
  245. package/dist/backend/warm-cache.js.map +1 -1
  246. package/dist/cli/command.js +78 -11
  247. package/dist/cli/command.js.map +1 -1
  248. package/dist/cli/usage.d.ts +22 -1
  249. package/dist/cli/usage.js +33 -3
  250. package/dist/cli/usage.js.map +1 -1
  251. package/dist/compat/fetch-profile.d.ts +15 -6
  252. package/dist/compat/fetch-profile.js +519 -498
  253. package/dist/compat/fetch-profile.js.map +1 -1
  254. package/dist/compile-types.d.ts +7 -0
  255. package/dist/contracts/int32-elements.js +2 -1
  256. package/dist/contracts/int32-elements.js.map +1 -1
  257. package/dist/coverage/report.d.ts +14 -3
  258. package/dist/coverage/report.js +216 -0
  259. package/dist/coverage/report.js.map +1 -1
  260. package/dist/coverage/surface-manifest.js +25 -25
  261. package/dist/coverage/surface-manifest.js.map +1 -1
  262. package/dist/coverage/verdict-cache.d.ts +2 -0
  263. package/dist/coverage/verdict-cache.js +10 -1
  264. package/dist/coverage/verdict-cache.js.map +1 -1
  265. package/dist/diagnostics/diagnostic.d.ts +19 -0
  266. package/dist/diagnostics/diagnostic.js +52 -1
  267. package/dist/diagnostics/diagnostic.js.map +1 -1
  268. package/dist/diagnostics/envelope.d.ts +54 -0
  269. package/dist/diagnostics/envelope.js +7 -1
  270. package/dist/diagnostics/envelope.js.map +1 -1
  271. package/dist/diagnostics/render.d.ts +7 -0
  272. package/dist/diagnostics/render.js +15 -4
  273. package/dist/diagnostics/render.js.map +1 -1
  274. package/dist/executable/executable-cache.d.ts +3 -0
  275. package/dist/executable/executable-cache.js +1 -0
  276. package/dist/executable/executable-cache.js.map +1 -1
  277. package/dist/executable/executable-cache.test.js +1 -0
  278. package/dist/executable/executable-cache.test.js.map +1 -1
  279. package/dist/executable/prepare.js +5 -1
  280. package/dist/executable/prepare.js.map +1 -1
  281. package/dist/frontend/analysis.js +26 -2
  282. package/dist/frontend/analysis.js.map +1 -1
  283. package/dist/frontend/fork-target.js +67 -1
  284. package/dist/frontend/fork-target.js.map +1 -1
  285. package/dist/frontend/fork-target.test.js +43 -0
  286. package/dist/frontend/fork-target.test.js.map +1 -1
  287. package/dist/frontend/input-tracker.d.ts +4 -1
  288. package/dist/frontend/input-tracker.js +42 -4
  289. package/dist/frontend/input-tracker.js.map +1 -1
  290. package/dist/frontend/input-tracker.test.js +45 -0
  291. package/dist/frontend/input-tracker.test.js.map +1 -1
  292. package/dist/frontend/lowering/abstract-equality.js +38 -1
  293. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  294. package/dist/frontend/lowering/argument-counts.d.ts +36 -0
  295. package/dist/frontend/lowering/argument-counts.js +201 -0
  296. package/dist/frontend/lowering/argument-counts.js.map +1 -0
  297. package/dist/frontend/lowering/array-values.d.ts +27 -0
  298. package/dist/frontend/lowering/array-values.js +112 -0
  299. package/dist/frontend/lowering/array-values.js.map +1 -1
  300. package/dist/frontend/lowering/binding-analysis.d.ts +3 -0
  301. package/dist/frontend/lowering/binding-analysis.js +9 -3
  302. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  303. package/dist/frontend/lowering/builtin-namespaces.d.ts +13 -0
  304. package/dist/frontend/lowering/builtin-namespaces.js +238 -0
  305. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -0
  306. package/dist/frontend/lowering/builtins/compression.d.ts +4 -3
  307. package/dist/frontend/lowering/builtins/compression.js +86 -5
  308. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  309. package/dist/frontend/lowering/builtins/date-classes.js +17 -1
  310. package/dist/frontend/lowering/builtins/date-classes.js.map +1 -1
  311. package/dist/frontend/lowering/builtins/dates.d.ts +19 -5
  312. package/dist/frontend/lowering/builtins/dates.js +159 -8
  313. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  314. package/dist/frontend/lowering/builtins/filesystem-calls.js +26 -1
  315. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  316. package/dist/frontend/lowering/builtins/fs-streams.d.ts +4 -0
  317. package/dist/frontend/lowering/builtins/fs-streams.js +24 -1
  318. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  319. package/dist/frontend/lowering/builtins/json.d.ts +4 -1
  320. package/dist/frontend/lowering/builtins/json.js +9 -3
  321. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  322. package/dist/frontend/lowering/builtins/module-bindings.d.ts +6 -0
  323. package/dist/frontend/lowering/builtins/module-bindings.js +23 -1
  324. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  325. package/dist/frontend/lowering/builtins/module-resolution.d.ts +5 -0
  326. package/dist/frontend/lowering/builtins/module-resolution.js +95 -4
  327. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  328. package/dist/frontend/lowering/builtins/promises.js +144 -1
  329. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  330. package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
  331. package/dist/frontend/lowering/builtins/readline.js +22 -11
  332. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  333. package/dist/frontend/lowering/builtins/reflection.d.ts +4 -1
  334. package/dist/frontend/lowering/builtins/reflection.js +41 -1
  335. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  336. package/dist/frontend/lowering/builtins/text-codecs.js +31 -2
  337. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  338. package/dist/frontend/lowering/builtins/webassembly.js +4 -1
  339. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  340. package/dist/frontend/lowering/builtins/x509.d.ts +33 -0
  341. package/dist/frontend/lowering/builtins/x509.js +431 -0
  342. package/dist/frontend/lowering/builtins/x509.js.map +1 -0
  343. package/dist/frontend/lowering/call-arguments.js +44 -0
  344. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  345. package/dist/frontend/lowering/call-signatures.js +1 -1
  346. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  347. package/dist/frontend/lowering/cjs-inline-require.js +1 -1
  348. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  349. package/dist/frontend/lowering/class-attributes.d.ts +7 -0
  350. package/dist/frontend/lowering/class-attributes.js +52 -10
  351. package/dist/frontend/lowering/class-attributes.js.map +1 -1
  352. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +13 -0
  353. package/dist/frontend/lowering/class-dynamic-dispatch.js +174 -9
  354. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  355. package/dist/frontend/lowering/class-method-mutations.js +43 -8
  356. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  357. package/dist/frontend/lowering/class-method-values.js +71 -1
  358. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  359. package/dist/frontend/lowering/class-prototypes.d.ts +8 -0
  360. package/dist/frontend/lowering/class-prototypes.js +83 -2
  361. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  362. package/dist/frontend/lowering/class-to-primitive.d.ts +5 -0
  363. package/dist/frontend/lowering/class-to-primitive.js +79 -7
  364. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  365. package/dist/frontend/lowering/coercions/state.d.ts +1 -0
  366. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  367. package/dist/frontend/lowering/coercions/structural.js +89 -10
  368. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  369. package/dist/frontend/lowering/coercions/unions.d.ts +4 -2
  370. package/dist/frontend/lowering/coercions/unions.js +13 -6
  371. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  372. package/dist/frontend/lowering/containers/array-callbacks.js +51 -15
  373. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  374. package/dist/frontend/lowering/containers/array-construction.d.ts +4 -1
  375. package/dist/frontend/lowering/containers/array-construction.js +102 -9
  376. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  377. package/dist/frontend/lowering/containers/array-methods.js +85 -5
  378. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  379. package/dist/frontend/lowering/containers/array-pipelines.js +346 -77
  380. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  381. package/dist/frontend/lowering/containers/callback-arguments.js +11 -1
  382. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  383. package/dist/frontend/lowering/containers/collection-methods.js +12 -0
  384. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  385. package/dist/frontend/lowering/containers/indexed-objects.js +73 -25
  386. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  387. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +4 -4
  388. package/dist/frontend/lowering/containers/iterator-helpers.js +8 -2
  389. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  390. package/dist/frontend/lowering/containers/replacer-params.d.ts +37 -0
  391. package/dist/frontend/lowering/containers/replacer-params.js +294 -0
  392. package/dist/frontend/lowering/containers/replacer-params.js.map +1 -0
  393. package/dist/frontend/lowering/containers/replacer-params.test.d.ts +1 -0
  394. package/dist/frontend/lowering/containers/replacer-params.test.js +61 -0
  395. package/dist/frontend/lowering/containers/replacer-params.test.js.map +1 -0
  396. package/dist/frontend/lowering/containers/string-and-regexp.js +2 -1
  397. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  398. package/dist/frontend/lowering/containers/string-replacement.js +7 -3
  399. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  400. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -2
  401. package/dist/frontend/lowering/cycle-initialization.js +4 -1
  402. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  403. package/dist/frontend/lowering/date-values.d.ts +9 -6
  404. package/dist/frontend/lowering/date-values.js +63 -16
  405. package/dist/frontend/lowering/date-values.js.map +1 -1
  406. package/dist/frontend/lowering/deferred-module-initializers.js +16 -8
  407. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  408. package/dist/frontend/lowering/deferred-module-initializers.test.js +22 -6
  409. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  410. package/dist/frontend/lowering/dispatch-sites.js +1 -0
  411. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  412. package/dist/frontend/lowering/expressions/array-literals.d.ts +0 -8
  413. package/dist/frontend/lowering/expressions/array-literals.js +119 -26
  414. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  415. package/dist/frontend/lowering/expressions/binary.js +38 -0
  416. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  417. package/dist/frontend/lowering/expressions/element-access.js +50 -6
  418. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  419. package/dist/frontend/lowering/expressions/identifiers.js +35 -3
  420. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  421. package/dist/frontend/lowering/expressions/narrowing.d.ts +2 -1
  422. package/dist/frontend/lowering/expressions/narrowing.js +8 -1
  423. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  424. package/dist/frontend/lowering/expressions/object-literals.js +8 -2
  425. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  426. package/dist/frontend/lowering/expressions/property-access.js +65 -34
  427. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  428. package/dist/frontend/lowering/expressions/relational.js +76 -11
  429. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  430. package/dist/frontend/lowering/expressions/typeof.js +6 -1
  431. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  432. package/dist/frontend/lowering/expressions/updates.js +20 -11
  433. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  434. package/dist/frontend/lowering/f64-handles.d.ts +8 -0
  435. package/dist/frontend/lowering/f64-handles.js +16 -0
  436. package/dist/frontend/lowering/f64-handles.js.map +1 -0
  437. package/dist/frontend/lowering/frozen-records.d.ts +5 -0
  438. package/dist/frontend/lowering/frozen-records.js +12 -4
  439. package/dist/frontend/lowering/frozen-records.js.map +1 -1
  440. package/dist/frontend/lowering/function-context.d.ts +3 -0
  441. package/dist/frontend/lowering/function-context.js.map +1 -1
  442. package/dist/frontend/lowering/function-returns.js +15 -0
  443. package/dist/frontend/lowering/function-returns.js.map +1 -1
  444. package/dist/frontend/lowering/generic-functions.js +17 -6
  445. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  446. package/dist/frontend/lowering/instantiation-path.d.ts +3 -2
  447. package/dist/frontend/lowering/instantiation-path.js.map +1 -1
  448. package/dist/frontend/lowering/instantiation-path.test.js +6 -4
  449. package/dist/frontend/lowering/instantiation-path.test.js.map +1 -1
  450. package/dist/frontend/lowering/iterator-adapters.d.ts +4 -2
  451. package/dist/frontend/lowering/iterator-adapters.js +26 -33
  452. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  453. package/dist/frontend/lowering/js-collection-types.d.ts +11 -0
  454. package/dist/frontend/lowering/js-collection-types.js +490 -0
  455. package/dist/frontend/lowering/js-collection-types.js.map +1 -0
  456. package/dist/frontend/lowering/lib-boundary.js +2 -2
  457. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  458. package/dist/frontend/lowering/lower-assert.d.ts +14 -0
  459. package/dist/frontend/lowering/lower-assert.js +283 -26
  460. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  461. package/dist/frontend/lowering/lower-builtin-values.js +3 -3
  462. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  463. package/dist/frontend/lowering/lower-calls.js +97 -7
  464. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  465. package/dist/frontend/lowering/lower-classes.d.ts +59 -7
  466. package/dist/frontend/lowering/lower-classes.js +647 -176
  467. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  468. package/dist/frontend/lowering/lower-console.js +2 -1
  469. package/dist/frontend/lowering/lower-console.js.map +1 -1
  470. package/dist/frontend/lowering/lower-exprs.d.ts +5 -0
  471. package/dist/frontend/lowering/lower-exprs.js +52 -5
  472. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  473. package/dist/frontend/lowering/lower-functions.js +7 -0
  474. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  475. package/dist/frontend/lowering/lower-generators.js +4 -3
  476. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  477. package/dist/frontend/lowering/lower-inspect.js +264 -46
  478. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  479. package/dist/frontend/lowering/lower-modules.js +28 -17
  480. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  481. package/dist/frontend/lowering/lower-namespaces.d.ts +3 -0
  482. package/dist/frontend/lowering/lower-namespaces.js +44 -1
  483. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  484. package/dist/frontend/lowering/lower-node-module.js +1 -1
  485. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  486. package/dist/frontend/lowering/lower-server.js +126 -32
  487. package/dist/frontend/lowering/lower-server.js.map +1 -1
  488. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -1
  489. package/dist/frontend/lowering/lower-stdlib.js +51 -37
  490. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  491. package/dist/frontend/lowering/lower-stmts.js +294 -46
  492. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  493. package/dist/frontend/lowering/lower-stream.js +515 -121
  494. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  495. package/dist/frontend/lowering/lowerer.d.ts +52 -10
  496. package/dist/frontend/lowering/lowerer.js +249 -37
  497. package/dist/frontend/lowering/lowerer.js.map +1 -1
  498. package/dist/frontend/lowering/lowerer.test.js +1 -1
  499. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  500. package/dist/frontend/lowering/module-namespace-elements.d.ts +13 -0
  501. package/dist/frontend/lowering/module-namespace-elements.js +118 -1
  502. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  503. package/dist/frontend/lowering/private-brands.d.ts +5 -0
  504. package/dist/frontend/lowering/private-brands.js +39 -0
  505. package/dist/frontend/lowering/private-brands.js.map +1 -1
  506. package/dist/frontend/lowering/runtime-optional-elements.d.ts +6 -0
  507. package/dist/frontend/lowering/runtime-optional-elements.js +14 -3
  508. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  509. package/dist/frontend/lowering/sanitize-class-types.js +2 -0
  510. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  511. package/dist/frontend/lowering/site-dependencies.d.ts +7 -2
  512. package/dist/frontend/lowering/site-dependencies.js +0 -15
  513. package/dist/frontend/lowering/site-dependencies.js.map +1 -1
  514. package/dist/frontend/lowering/site-dependencies.test.js +7 -5
  515. package/dist/frontend/lowering/site-dependencies.test.js.map +1 -1
  516. package/dist/frontend/lowering/string-index-bounds.d.ts +7 -4
  517. package/dist/frontend/lowering/string-index-bounds.js +21 -7
  518. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  519. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  520. package/dist/frontend/lowering/surfaces.js +1576 -1539
  521. package/dist/frontend/lowering/surfaces.js.map +1 -1
  522. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  523. package/dist/frontend/lowering/symbol-fields.js +45 -2
  524. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  525. package/dist/frontend/lowering/union-narrow.d.ts +5 -2
  526. package/dist/frontend/lowering/union-narrow.js +6 -3
  527. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  528. package/dist/frontend/lowering/union-narrow.test.js +10 -0
  529. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  530. package/dist/frontend/npm-static-namespace-defaults.d.ts +6 -0
  531. package/dist/frontend/npm-static-namespace-defaults.js +163 -0
  532. package/dist/frontend/npm-static-namespace-defaults.js.map +1 -0
  533. package/dist/frontend/npm-static-namespace-defaults.test.d.ts +1 -0
  534. package/dist/frontend/npm-static-namespace-defaults.test.js +72 -0
  535. package/dist/frontend/npm-static-namespace-defaults.test.js.map +1 -0
  536. package/dist/frontend/npm-static-prune.js +152 -111
  537. package/dist/frontend/npm-static-prune.js.map +1 -1
  538. package/dist/frontend/npm-static.js +35 -32
  539. package/dist/frontend/npm-static.js.map +1 -1
  540. package/dist/frontend/package-shims.d.ts +7 -4
  541. package/dist/frontend/package-shims.js +39 -40
  542. package/dist/frontend/package-shims.js.map +1 -1
  543. package/dist/frontend/pipeline-native.d.ts +2 -2
  544. package/dist/frontend/pipeline-native.js +2 -2
  545. package/dist/frontend/pipeline-native.js.map +1 -1
  546. package/dist/frontend/pipeline.d.ts +19 -2
  547. package/dist/frontend/pipeline.js +102 -11
  548. package/dist/frontend/pipeline.js.map +1 -1
  549. package/dist/frontend/program-analysis.d.ts +2 -0
  550. package/dist/frontend/program-analysis.js +3 -0
  551. package/dist/frontend/program-analysis.js.map +1 -1
  552. package/dist/frontend/program.d.ts +15 -0
  553. package/dist/frontend/program.js +227 -64
  554. package/dist/frontend/program.js.map +1 -1
  555. package/dist/frontend/resolve.d.ts +2 -0
  556. package/dist/frontend/resolve.js +5 -0
  557. package/dist/frontend/resolve.js.map +1 -1
  558. package/dist/frontend/services.d.ts +3 -0
  559. package/dist/frontend/services.js +31 -4
  560. package/dist/frontend/services.js.map +1 -1
  561. package/dist/frontend/shape-inference/analyze.d.ts +93 -0
  562. package/dist/frontend/shape-inference/analyze.js +3138 -0
  563. package/dist/frontend/shape-inference/analyze.js.map +1 -0
  564. package/dist/frontend/shape-inference/constant-graphs.d.ts +54 -0
  565. package/dist/frontend/shape-inference/constant-graphs.js +357 -0
  566. package/dist/frontend/shape-inference/constant-graphs.js.map +1 -0
  567. package/dist/frontend/shape-inference/domain.d.ts +32 -0
  568. package/dist/frontend/shape-inference/domain.js +104 -0
  569. package/dist/frontend/shape-inference/domain.js.map +1 -0
  570. package/dist/frontend/shape-inference/index.d.ts +7 -0
  571. package/dist/frontend/shape-inference/index.js +19 -0
  572. package/dist/frontend/shape-inference/index.js.map +1 -0
  573. package/dist/frontend/shape-inference/report.d.ts +21 -0
  574. package/dist/frontend/shape-inference/report.js +348 -0
  575. package/dist/frontend/shape-inference/report.js.map +1 -0
  576. package/dist/frontend/token-equivalence.d.ts +6 -0
  577. package/dist/frontend/token-equivalence.js +66 -9
  578. package/dist/frontend/token-equivalence.js.map +1 -1
  579. package/dist/frontend/token-equivalence.test.js +33 -1
  580. package/dist/frontend/token-equivalence.test.js.map +1 -1
  581. package/dist/frontend/ts7/checker-features.d.ts +15 -0
  582. package/dist/frontend/ts7/checker-features.js +45 -0
  583. package/dist/frontend/ts7/checker-features.js.map +1 -0
  584. package/dist/frontend/ts7/checker-features.test.d.ts +1 -0
  585. package/dist/frontend/ts7/checker-features.test.js +40 -0
  586. package/dist/frontend/ts7/checker-features.test.js.map +1 -0
  587. package/dist/frontend/ts7/checker-server.d.ts +19 -0
  588. package/dist/frontend/ts7/checker-server.js +46 -0
  589. package/dist/frontend/ts7/checker-server.js.map +1 -0
  590. package/dist/frontend/ts7/checker-server.test.d.ts +1 -0
  591. package/dist/frontend/ts7/checker-server.test.js +38 -0
  592. package/dist/frontend/ts7/checker-server.test.js.map +1 -0
  593. package/dist/frontend/ts7/lib-diagnostics.js +39 -13
  594. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
  595. package/dist/frontend/ts7/lib-diagnostics.test.js +40 -0
  596. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
  597. package/dist/frontend/ts7/native-api.d.ts +1 -0
  598. package/dist/frontend/ts7/native-api.js +25 -2
  599. package/dist/frontend/ts7/native-api.js.map +1 -1
  600. package/dist/frontend/ts7/native-process.d.ts +9 -2
  601. package/dist/frontend/ts7/native-process.js +22 -4
  602. package/dist/frontend/ts7/native-process.js.map +1 -1
  603. package/dist/frontend/ts7/program-host.d.ts +11 -0
  604. package/dist/frontend/ts7/program-host.js +36 -22
  605. package/dist/frontend/ts7/program-host.js.map +1 -1
  606. package/dist/frontend/ts7/semantic-json.d.ts +9 -0
  607. package/dist/frontend/ts7/semantic-json.js +25 -5
  608. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  609. package/dist/frontend/ts7/semantic-model.js +3 -1
  610. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  611. package/dist/frontend/ts7/source-parser.js +3 -1
  612. package/dist/frontend/ts7/source-parser.js.map +1 -1
  613. package/dist/frontend/tsc-codes.js +10 -0
  614. package/dist/frontend/tsc-codes.js.map +1 -1
  615. package/dist/frontend/type-mapper.d.ts +18 -6
  616. package/dist/frontend/type-mapper.js +160 -28
  617. package/dist/frontend/type-mapper.js.map +1 -1
  618. package/dist/index.d.ts +44 -3
  619. package/dist/index.js +27 -8
  620. package/dist/index.js.map +1 -1
  621. package/dist/ir/builtin-effects.js +29 -0
  622. package/dist/ir/builtin-effects.js.map +1 -1
  623. package/dist/ir/builtin-signatures.d.ts +7 -2
  624. package/dist/ir/builtin-signatures.js +5104 -4950
  625. package/dist/ir/builtin-signatures.js.map +1 -1
  626. package/dist/ir/callback-specialization.d.ts +4 -2
  627. package/dist/ir/callback-specialization.js +24 -9
  628. package/dist/ir/callback-specialization.js.map +1 -1
  629. package/dist/ir/capture-values.js +4 -2
  630. package/dist/ir/capture-values.js.map +1 -1
  631. package/dist/ir/char-unit-locals.d.ts +12 -2
  632. package/dist/ir/char-unit-locals.js +400 -58
  633. package/dist/ir/char-unit-locals.js.map +1 -1
  634. package/dist/ir/char-unit-locals.test.js +111 -0
  635. package/dist/ir/char-unit-locals.test.js.map +1 -1
  636. package/dist/ir/constant-globals.js +18 -4
  637. package/dist/ir/constant-globals.js.map +1 -1
  638. package/dist/ir/expression-inlining.d.ts +15 -0
  639. package/dist/ir/expression-inlining.js +166 -0
  640. package/dist/ir/expression-inlining.js.map +1 -0
  641. package/dist/ir/expression-inlining.test.d.ts +1 -0
  642. package/dist/ir/expression-inlining.test.js +123 -0
  643. package/dist/ir/expression-inlining.test.js.map +1 -0
  644. package/dist/ir/function-references.js +2 -0
  645. package/dist/ir/function-references.js.map +1 -1
  646. package/dist/ir/function-references.test.js +6 -0
  647. package/dist/ir/function-references.test.js.map +1 -1
  648. package/dist/ir/int32-arrays.d.ts +27 -6
  649. package/dist/ir/int32-arrays.js +106 -18
  650. package/dist/ir/int32-arrays.js.map +1 -1
  651. package/dist/ir/int32-slots.d.ts +26 -1
  652. package/dist/ir/int32-slots.js +284 -5
  653. package/dist/ir/int32-slots.js.map +1 -1
  654. package/dist/ir/int32-slots.test.js +5 -0
  655. package/dist/ir/int32-slots.test.js.map +1 -1
  656. package/dist/ir/integer-loop-facts.d.ts +5 -0
  657. package/dist/ir/integer-loop-facts.js +90 -1
  658. package/dist/ir/integer-loop-facts.js.map +1 -1
  659. package/dist/ir/integer-loops.d.ts +14 -1
  660. package/dist/ir/integer-loops.js +93 -7
  661. package/dist/ir/integer-loops.js.map +1 -1
  662. package/dist/ir/integer-loops.test.js +70 -0
  663. package/dist/ir/integer-loops.test.js.map +1 -1
  664. package/dist/ir/integer-ranges.js +18 -2
  665. package/dist/ir/integer-ranges.js.map +1 -1
  666. package/dist/ir/integer-ranges.test.js +64 -4
  667. package/dist/ir/integer-ranges.test.js.map +1 -1
  668. package/dist/ir/ir.d.ts +50 -8
  669. package/dist/ir/ir.js +38 -12
  670. package/dist/ir/ir.js.map +1 -1
  671. package/dist/ir/js-ic.d.ts +25 -5
  672. package/dist/ir/js-ic.js +93 -13
  673. package/dist/ir/js-ic.js.map +1 -1
  674. package/dist/ir/js-ic.test.js +153 -0
  675. package/dist/ir/js-ic.test.js.map +1 -1
  676. package/dist/ir/node-index.d.ts +7 -0
  677. package/dist/ir/node-index.js +32 -0
  678. package/dist/ir/node-index.js.map +1 -1
  679. package/dist/ir/receiver-readers.d.ts +6 -1
  680. package/dist/ir/receiver-readers.js +53 -28
  681. package/dist/ir/receiver-readers.js.map +1 -1
  682. package/dist/ir/row-pairs.d.ts +15 -0
  683. package/dist/ir/row-pairs.js +373 -0
  684. package/dist/ir/row-pairs.js.map +1 -0
  685. package/dist/ir/row-pairs.test.d.ts +1 -0
  686. package/dist/ir/row-pairs.test.js +129 -0
  687. package/dist/ir/row-pairs.test.js.map +1 -0
  688. package/dist/ir/runtime-features.d.ts +17 -4
  689. package/dist/ir/runtime-features.js +69 -12
  690. package/dist/ir/runtime-features.js.map +1 -1
  691. package/dist/ir/scalar-records.d.ts +15 -0
  692. package/dist/ir/scalar-records.js +301 -1
  693. package/dist/ir/scalar-records.js.map +1 -1
  694. package/dist/ir/scalar-records.test.js +181 -1
  695. package/dist/ir/scalar-records.test.js.map +1 -1
  696. package/dist/ir/self-captures.js +8 -0
  697. package/dist/ir/self-captures.js.map +1 -1
  698. package/dist/ir/validate.js +37 -28
  699. package/dist/ir/validate.js.map +1 -1
  700. package/dist/library/fence-eval.js +4 -4
  701. package/dist/library/fence-eval.js.map +1 -1
  702. package/dist/library/ir-policy.js +4 -0
  703. package/dist/library/ir-policy.js.map +1 -1
  704. package/dist/library/library-cache.d.ts +1 -0
  705. package/dist/library/library-cache.js +1 -0
  706. package/dist/library/library-cache.js.map +1 -1
  707. package/dist/library/library-cache.test.js +13 -0
  708. package/dist/library/library-cache.test.js.map +1 -1
  709. package/dist/native/cache.d.ts +5 -1
  710. package/dist/native/cache.js +15 -3
  711. package/dist/native/cache.js.map +1 -1
  712. package/dist/native/cli.js +6 -0
  713. package/dist/native/cli.js.map +1 -1
  714. package/dist/native/compiler.d.ts +3 -0
  715. package/dist/native/compiler.js +72 -26
  716. package/dist/native/compiler.js.map +1 -1
  717. package/dist/native/compiler.test.js +87 -2
  718. package/dist/native/compiler.test.js.map +1 -1
  719. package/dist/native/executable-cache-open.test.d.ts +1 -0
  720. package/dist/native/executable-cache-open.test.js +80 -0
  721. package/dist/native/executable-cache-open.test.js.map +1 -0
  722. package/dist/native/executable-cache.d.ts +43 -3
  723. package/dist/native/executable-cache.js +177 -36
  724. package/dist/native/executable-cache.js.map +1 -1
  725. package/dist/native/executable-cache.test.js +103 -0
  726. package/dist/native/executable-cache.test.js.map +1 -1
  727. package/dist/native/prepare.js +38 -16
  728. package/dist/native/prepare.js.map +1 -1
  729. package/dist/native/prepare.test.js +51 -1
  730. package/dist/native/prepare.test.js.map +1 -1
  731. package/dist/native/sanitizer.d.ts +1 -1
  732. package/dist/native/sanitizer.js +17 -3
  733. package/dist/native/sanitizer.js.map +1 -1
  734. package/dist/native/sanitizer.test.js +4 -0
  735. package/dist/native/sanitizer.test.js.map +1 -1
  736. package/dist/node-islands/classify.d.ts +14 -0
  737. package/dist/node-islands/classify.js +114 -0
  738. package/dist/node-islands/classify.js.map +1 -0
  739. package/dist/node-islands/detect.d.ts +13 -0
  740. package/dist/node-islands/detect.js +805 -0
  741. package/dist/node-islands/detect.js.map +1 -0
  742. package/dist/node-islands/detect.test.d.ts +1 -0
  743. package/dist/node-islands/detect.test.js +136 -0
  744. package/dist/node-islands/detect.test.js.map +1 -0
  745. package/dist/node-islands/origin.d.ts +21 -0
  746. package/dist/node-islands/origin.js +60 -0
  747. package/dist/node-islands/origin.js.map +1 -0
  748. package/dist/node-islands/policy.d.ts +49 -0
  749. package/dist/node-islands/policy.js +130 -0
  750. package/dist/node-islands/policy.js.map +1 -0
  751. package/dist/node-islands/report.d.ts +22 -0
  752. package/dist/node-islands/report.js +326 -0
  753. package/dist/node-islands/report.js.map +1 -0
  754. package/dist/node-islands/report.test.d.ts +1 -0
  755. package/dist/node-islands/report.test.js +228 -0
  756. package/dist/node-islands/report.test.js.map +1 -0
  757. package/dist/node-islands/rules.d.ts +20 -0
  758. package/dist/node-islands/rules.js +91 -0
  759. package/dist/node-islands/rules.js.map +1 -0
  760. package/dist/node-islands/scan.d.ts +53 -0
  761. package/dist/node-islands/scan.js +104 -0
  762. package/dist/node-islands/scan.js.map +1 -0
  763. package/dist/node-islands/summary.d.ts +78 -0
  764. package/dist/node-islands/summary.js +26 -0
  765. package/dist/node-islands/summary.js.map +1 -0
  766. package/dist/project-config.d.ts +50 -0
  767. package/dist/project-config.js +372 -0
  768. package/dist/project-config.js.map +1 -0
  769. package/dist/project-config.test.d.ts +1 -0
  770. package/dist/project-config.test.js +154 -0
  771. package/dist/project-config.test.js.map +1 -0
  772. package/dist/wasm/discover.js +6 -31
  773. package/dist/wasm/discover.js.map +1 -1
  774. package/package.json +20 -20
  775. package/surface-manifest.json +20 -35
@@ -305,6 +305,21 @@ export declare function checkPreflightTs7(entryPath: string, host: ts.Ts7Host):
305
305
  diags: ScrDiagnostic[];
306
306
  moduleOrder: string[];
307
307
  };
308
+ /** The property names of Node's namespace object for the CommonJS module
309
+ * `dep`: the names its lexer detects, CommonJS re-exports included (the
310
+ * rule of the named-import link check), plus `default` and
311
+ * `module.exports`. */
312
+ /** `dep` and every CommonJS module it re-exports, transitively (the modules
313
+ * whose exports its namespace object shows). */
314
+ export declare function cjsReexportedModules(program: ts.Program, dep: ts.SourceFile): ts.SourceFile[];
315
+ export declare function cjsNamespaceExportNames(program: ts.Program, dep: ts.SourceFile): Set<string>;
316
+ /** The export names a CommonJS module assigns inside functions
317
+ * (`exports.current = value` in a function body), or "all" when such code
318
+ * writes a computed name, replaces module.exports or redefines exports
319
+ * through Object.defineProperty. Node's namespace object of the module
320
+ * holds the values the exports had when the module finished evaluating,
321
+ * so it does not see those writes. */
322
+ export declare function cjsExportsAssignedInFunctions(sf: ts.SourceFile): ReadonlySet<string> | "all";
308
323
  export declare function esmNamedImportLinkCrash(program: ts.Program, entry: ts.SourceFile): StartupCrash | null;
309
324
  export { ambientDtsPath, fallbackDtsPath, isNodeTypesPath, overridesDtsPath } from "./dts-paths.js";
310
325
  export { builtinDefaultImportModule, canonicalBuiltinModule, npmBuiltinAliasOf, SUPPORTED_BUILTIN_MODULES, } from "./builtin-modules.js";
@@ -49,7 +49,7 @@ import { isPrunedNpmReexport, planNpmStaticReexports } from "./npm-static-prune.
49
49
  import { npmStaticTypeExportPlan } from "./npm-static-type-exports-host.js";
50
50
  import { isNpmStaticSubclassArgument } from "./npm-static-subtyping.js";
51
51
  import { npmStaticDeclarationReexports, npmStaticRuntimeClassTargets, parseNpmStaticDeclarationOverloads, parseNpmStaticDeclarationProperties, } from "./npm-static-declaration-syntax.js";
52
- import { configurePackageShims, isPackageShimFile, isPackageShimName, isShimmedImport, } from "./package-shims.js";
52
+ import { configurePackageShims, isPackageShimFile, isShimmedImport, npmStaticOmitsPackage, } from "./package-shims.js";
53
53
  import { provenanceEntryFor, provenancePaths } from "./provenance-registry.js";
54
54
  import { cjsLexedExportsOfFile, cjsVisibleNames } from "./cjs-syntax.js";
55
55
  import { ambientDtsPath, fallbackDtsPath, isNodeTypesPath, overridesDtsPath, tsgoPath, } from "./dts-paths.js";
@@ -62,6 +62,7 @@ import { workerTargetPaths } from "./worker-target.js";
62
62
  import { erasedTypeOnlyImport, typeOnlyNamedImport, typeOnlyReachedFiles, } from "./type-only-imports.js";
63
63
  import { moduleSourceCandidates } from "./module-source-candidates.js";
64
64
  import { planDeclProjection } from "./decl-projection.js";
65
+ import { reportShapes } from "./shape-inference/index.js";
65
66
  import { inferredJsDiagnosticSuppressed } from "./inferred-js-diagnostics.js";
66
67
  import { containsJsx, firstJsx, jsxEmitName, jsxEmitPlan, jsxPragmas, lowerJsx, } from "./jsx-source.js";
67
68
  const BASE_OPTIONS = {
@@ -303,33 +304,31 @@ function visitNpmStaticDeclarationClosure(services, entryPath, onSource) {
303
304
  };
304
305
  visit(entryPath);
305
306
  }
306
- function npmStaticDeclarationOverloadsOf(services, entryPath) {
307
- const classes = new Map();
307
+ /** The overloads and properties of the classes a package's declaration
308
+ * closure declares, read from one parse of each declaration file. */
309
+ function npmStaticDeclarationMetadataOf(services, entryPath) {
310
+ const overloads = new Map();
311
+ const properties = new Map();
308
312
  visitNpmStaticDeclarationClosure(services, entryPath, (path, source) => {
309
- for (const [className, methods] of parseNpmStaticDeclarationOverloads(services.parse(path, source, "ts"))) {
310
- const target = classes.get(className) ?? new Map();
311
- classes.set(className, target);
313
+ const sourceFile = services.parse(path, source, "ts");
314
+ for (const [className, methods] of parseNpmStaticDeclarationOverloads(sourceFile)) {
315
+ const target = overloads.get(className) ?? new Map();
316
+ overloads.set(className, target);
312
317
  for (const [methodName, signatures] of methods) {
313
318
  if (!target.has(methodName))
314
319
  target.set(methodName, signatures);
315
320
  }
316
321
  }
317
- });
318
- return classes;
319
- }
320
- function npmStaticDeclarationPropertiesOf(services, entryPath) {
321
- const classes = new Map();
322
- visitNpmStaticDeclarationClosure(services, entryPath, (path, source) => {
323
- for (const [className, properties] of parseNpmStaticDeclarationProperties(services.parse(path, source, "ts"))) {
324
- const target = classes.get(className) ?? new Map();
325
- classes.set(className, target);
326
- for (const [propertyName, type] of properties) {
322
+ for (const [className, fields] of parseNpmStaticDeclarationProperties(sourceFile)) {
323
+ const target = properties.get(className) ?? new Map();
324
+ properties.set(className, target);
325
+ for (const [propertyName, type] of fields) {
327
326
  if (!target.has(propertyName))
328
327
  target.set(propertyName, type);
329
328
  }
330
329
  }
331
330
  });
332
- return classes;
331
+ return { overloads, properties };
333
332
  }
334
333
  /** True when a coverage mapping names one exact bare host module. TypeScript
335
334
  * gives `paths` keys containing `*` pattern semantics, so accepting one here
@@ -808,11 +807,12 @@ export function loadProgram(entryPath, services, opts) {
808
807
  }
809
808
  externalTypes.set(specifier, declarationPath);
810
809
  }
811
- // Packages scriptc implements itself or the project marks never loaded
812
- // (package-shims.ts) never compile their published JavaScript, even when
813
- // named.
810
+ // Packages scriptc implements itself, and packages the project marks
811
+ // never loaded (package-shims.ts), never compile their published
812
+ // JavaScript, even when named. A registry entry's `sourceVersions`
813
+ // (chalk 6) compile from their own source.
814
814
  configurePackageShims(entryPath);
815
- const npmStaticPackages = [...new Set(opts?.npmStatic ?? [])].filter((name) => !isPackageShimName(name));
815
+ const npmStaticPackages = [...new Set(opts?.npmStatic ?? [])].filter((name) => !npmStaticOmitsPackage(entryPath, name));
816
816
  // Resolve authored declaration entries before enabling the JS-only
817
817
  // package resolver. Safe overload metadata binds through the runtime
818
818
  // entry to one exact implementation file; it never contributes values
@@ -827,8 +827,7 @@ export function loadProgram(entryPath, services, opts) {
827
827
  !/\.d\.(?:ts|mts|cts)$/.test(resolved.typesFile)) {
828
828
  continue;
829
829
  }
830
- const overloads = npmStaticDeclarationOverloadsOf(services, resolved.typesFile);
831
- const properties = npmStaticDeclarationPropertiesOf(services, resolved.typesFile);
830
+ const { overloads, properties } = npmStaticDeclarationMetadataOf(services, resolved.typesFile);
832
831
  const classNames = new Set([...overloads.keys(), ...properties.keys()]);
833
832
  if (classNames.size === 0)
834
833
  continue;
@@ -976,6 +975,10 @@ export function loadProgram(entryPath, services, opts) {
976
975
  };
977
976
  try {
978
977
  const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0, projector);
978
+ // Shape inference, stage S1: a report only (SCRIPTC_DEBUG_SHAPES).
979
+ const shapes = process.env["SCRIPTC_DEBUG_SHAPES"];
980
+ if (shapes !== undefined && shapes !== "" && shapes !== "0" && npmStaticPackages.length > 0)
981
+ reportShapes(load.program, shapes);
979
982
  return {
980
983
  ...load,
981
984
  services,
@@ -1013,9 +1016,9 @@ export function loadProgram(entryPath, services, opts) {
1013
1016
  * packages whose declarations the boundary projects from. */
1014
1017
  function declBoundaryUserFiles(program, packages) {
1015
1018
  const out = [];
1016
- for (const sf of program.getSourceFiles()) {
1019
+ for (const sf of program.getImplementationSourceFiles()) {
1017
1020
  const name = sf.fileName.split("\\").join("/");
1018
- if (sf.isDeclarationFile || name.includes("/node_modules/") || !/\.[mc]?tsx?$/.test(name))
1021
+ if (name.includes("/node_modules/") || !/\.[mc]?tsx?$/.test(name))
1019
1022
  continue;
1020
1023
  if (name.endsWith(".tsx"))
1021
1024
  continue; // JSX files: not projected yet
@@ -1088,9 +1091,14 @@ function suppressedJsStrictness7(d) {
1088
1091
  return ts.flattenDiagnosticMessageText(d, "\n").includes("'any'");
1089
1092
  }
1090
1093
  // The deprecated Buffer(...) call without `new`, which Node's Buffer
1091
- // function accepts (containers/bytes.ts lowers it).
1094
+ // function accepts (containers/bytes.ts lowers it), and fs.ReadStream(...)
1095
+ // and fs.WriteStream(...), which construct their stream
1096
+ // (builtins/fs-streams.ts).
1092
1097
  if (d.code === 2348) {
1093
- return ts.flattenDiagnosticMessageText(d, "\n").includes("'BufferConstructor'");
1098
+ const text = ts.flattenDiagnosticMessageText(d, "\n");
1099
+ return (text.includes("'BufferConstructor'") ||
1100
+ text.includes("'typeof ReadStream'") ||
1101
+ text.includes("'typeof WriteStream'"));
1094
1102
  }
1095
1103
  return false;
1096
1104
  }
@@ -2198,18 +2206,30 @@ export function isCreateRequireBinding7(program, callee) {
2198
2206
  ((decl.parent.flags & ts.NodeFlags.Const) !== 0 ||
2199
2207
  stableCreateRequireBindingReason7(program, decl) === null));
2200
2208
  }
2201
- /** Only literal calls and literal resolution queries can erase the loader
2202
- * value. In particular, assignments, exported aliases, shorthand properties,
2203
- * optional calls, and passing the loader to user code cannot pass this test. */
2204
- function staticCreateRequireUse7(expr) {
2209
+ /** How a use of a createRequire loader lowers:
2210
+ * - "static": a literal call or a literal resolution query, which erases
2211
+ * the loader value.
2212
+ * - "deferred": a call with a computed specifier or another argument shape,
2213
+ * or `resolve` / `resolve.paths` read as a value, inside the try block
2214
+ * of a try statement in the same function. The call throws a runtime
2215
+ * fence, and the resolve value is a function that throws one when called
2216
+ * (module-resolution.ts), so the statement's catch clause handles them
2217
+ * (packages that look for optional native addons).
2218
+ * - "computed": the same shapes outside a try block.
2219
+ * - "escaping": the loader itself as a value, writes, optional calls, and
2220
+ * other members. */
2221
+ const COMPUTED_CREATE_REQUIRE_REASON = "its createRequire result is used with a computed specifier, or its resolve as a value, outside a try block (static requires need literal specifiers)";
2222
+ function createRequireUse7(expr) {
2205
2223
  let use = expr;
2206
2224
  while (ts.isParenthesizedExpression(use.parent))
2207
2225
  use = use.parent;
2226
+ let member = false;
2208
2227
  if (ts.isPropertyAccessExpression(use.parent) &&
2209
2228
  use.parent.expression === use &&
2210
2229
  use.parent.name.text === "resolve" &&
2211
2230
  !use.parent.questionDotToken) {
2212
2231
  use = use.parent;
2232
+ member = true;
2213
2233
  if (ts.isPropertyAccessExpression(use.parent) &&
2214
2234
  use.parent.expression === use &&
2215
2235
  use.parent.name.text === "paths" &&
@@ -2217,11 +2237,37 @@ function staticCreateRequireUse7(expr) {
2217
2237
  use = use.parent;
2218
2238
  }
2219
2239
  const call = use.parent;
2220
- return (ts.isCallExpression(call) &&
2221
- call.expression === use &&
2222
- !call.questionDotToken &&
2223
- call.arguments.nodes.length === 1 &&
2224
- ts.isStringLiteralLike(call.arguments.nodes[0]));
2240
+ if (ts.isCallExpression(call) && call.expression === use) {
2241
+ if (call.questionDotToken)
2242
+ return "escaping";
2243
+ if (call.arguments.nodes.length === 1 && ts.isStringLiteralLike(call.arguments.nodes[0]))
2244
+ return "static";
2245
+ }
2246
+ else if (!member || isAssignmentTarget7(use)) {
2247
+ return "escaping";
2248
+ }
2249
+ return insideTryBlock7(use) ? "deferred" : "computed";
2250
+ }
2251
+ function isAssignmentTarget7(node) {
2252
+ const parent = node.parent;
2253
+ return (ts.isBinaryExpression(parent) &&
2254
+ parent.left === node &&
2255
+ parent.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
2256
+ parent.operatorToken.kind <= ts.SyntaxKind.LastAssignment);
2257
+ }
2258
+ /** True when `node` is inside the try block of a try statement in the same
2259
+ * function (a catch clause or finally block does not count). A class field
2260
+ * initializer runs when the class is instantiated, so it is a boundary too. */
2261
+ function insideTryBlock7(node) {
2262
+ for (let child = node, parent = node.parent; parent; child = parent, parent = parent.parent) {
2263
+ if (ts.isTryStatement(parent) && parent.tryBlock === child)
2264
+ return true;
2265
+ if (ts.isFunctionLike(parent) ||
2266
+ ts.isClassStaticBlockDeclaration(parent) ||
2267
+ ts.isPropertyDeclaration(parent))
2268
+ return false;
2269
+ }
2270
+ return false;
2225
2271
  }
2226
2272
  function stableCreateRequireBindingReason7(program, decl) {
2227
2273
  const cache = program.analysis.createRequireReasons;
@@ -2252,9 +2298,13 @@ function stableCreateRequireBindingReason7(program, decl) {
2252
2298
  : checker.getSymbolAtLocation(ref);
2253
2299
  if (target && (target.flags & ts.SymbolFlags.Alias) !== 0)
2254
2300
  target = checker.getAliasedSymbol(target);
2255
- if (target === symbol && !staticCreateRequireUse7(ref)) {
2256
- return "its createRequire binding is reassigned, escapes, or uses a computed specifier";
2257
- }
2301
+ if (target !== symbol)
2302
+ continue;
2303
+ const use = createRequireUse7(ref);
2304
+ if (use === "computed")
2305
+ return COMPUTED_CREATE_REQUIRE_REASON;
2306
+ if (use === "escaping")
2307
+ return "its createRequire binding is reassigned or escapes";
2258
2308
  }
2259
2309
  const preceding = stmt.declarationList.declarations.nodes.slice(0, stmt.declarationList.declarations.nodes.indexOf(decl));
2260
2310
  if (bindingEarlyUse7(program, sf, sf.statements.nodes.indexOf(stmt), decl, preceding) !== null) {
@@ -2308,10 +2358,11 @@ function npmStaticModuleImportReason7(program, stmt) {
2308
2358
  checker.prefetchSymbolNodesExact(identifierOccurrences7(sf, specifier.name.text));
2309
2359
  let reason = null;
2310
2360
  const checkUse = (expr) => {
2311
- if (!staticCreateRequireUse7(expr)) {
2312
- reason =
2313
- "its createRequire result escapes or is used with a computed specifier (static requires need literal specifiers)";
2314
- }
2361
+ const use = createRequireUse7(expr);
2362
+ if (use === "computed")
2363
+ reason = COMPUTED_CREATE_REQUIRE_REASON;
2364
+ else if (use === "escaping")
2365
+ reason = "its createRequire result escapes (static requires need literal specifiers)";
2315
2366
  };
2316
2367
  ts.walkPreorder(sf, (node) => {
2317
2368
  if (reason ||
@@ -3489,9 +3540,13 @@ function exactCycleRefusal7(program, comp, lineOf) {
3489
3540
  if (ts.isExportAssignment(stmt) && !stmt.isExportEquals) {
3490
3541
  return `the default export expression at ${lineOf(stmt)} has no initialization state inside the cycle`;
3491
3542
  }
3543
+ // `export * from` binds each name to the declaring member's own
3544
+ // binding, like a named re-export, so only `export * as ns` (a
3545
+ // namespace object of a member) has state of its own.
3492
3546
  if (ts.isExportDeclaration(stmt) &&
3493
3547
  !stmt.isTypeOnly &&
3494
- (stmt.exportClause === undefined || ts.isNamespaceExport(stmt.exportClause))) {
3548
+ stmt.exportClause !== undefined &&
3549
+ ts.isNamespaceExport(stmt.exportClause)) {
3495
3550
  const dep = targetOf(stmt);
3496
3551
  if (dep !== null && members.has(dep)) {
3497
3552
  return `the namespace re-export at ${lineOf(stmt)} names a module of the cycle`;
@@ -4876,6 +4931,15 @@ function preflight7(load) {
4876
4931
  return false;
4877
4932
  return new RegExp(`\\btypeof\\s*\\(?\\s*${name.replace(/\$/g, "\\$")}(?![\\w$])`).test(sf.text);
4878
4933
  };
4934
+ // A `return` at the top level of a CommonJS module (TS1108): Node runs
4935
+ // the module as a function body, so the return ends the module's
4936
+ // evaluation. ES modules and TypeScript keep the error.
4937
+ const cjsTopLevelReturnSuppressed = (p, d) => {
4938
+ if (d.code !== 1108 || d.fileName === undefined || !isJsSourceFileName(d.fileName))
4939
+ return false;
4940
+ const sf = p.getSourceFile(d.fileName);
4941
+ return sf !== undefined && isCjsJsFile7(sf, p);
4942
+ };
4879
4943
  const workspaceImplicitAnySuppressed = (p, d) => {
4880
4944
  if (d.code !== 7016 || d.fileName === undefined || d.pos === undefined || d.end === undefined)
4881
4945
  return false;
@@ -4923,6 +4987,7 @@ function preflight7(load) {
4923
4987
  !isNpmStaticSubclassArgument(p, d) &&
4924
4988
  !workspaceImplicitAnySuppressed(p, d) &&
4925
4989
  !typeofTestedNameSuppressed(p, d) &&
4990
+ !cjsTopLevelReturnSuppressed(p, d) &&
4926
4991
  !jsdocTypeSuppressed(p, d, commentDup));
4927
4992
  };
4928
4993
  // The tsc gate, with a second chance: the LOWERING world's checker
@@ -5366,9 +5431,13 @@ function preflight7(load) {
5366
5431
  // to Node's no-op, the module still evaluates through its
5367
5432
  // ordinary init edge, and no member is ever read through the
5368
5433
  // lexer facade (self-imports of a CJS module included — the
5369
- // partially-built exports are never observed). Any OTHER use
5370
- // keeps the fence.
5371
- if (!nsBindingUsesAreBareStatements7(program, sf, clause.namedBindings.name)) {
5434
+ // partially-built exports are never observed). In JavaScript
5435
+ // sources every use passes here: member reads lower through the
5436
+ // names Node's lexer detects, and the other reads refuse at
5437
+ // their site (lower-namespaces.ts, cjsNamespaceImportDep). Any
5438
+ // OTHER use in TypeScript keeps the fence.
5439
+ if (!isJsSourceFileName(sf.fileName) &&
5440
+ !nsBindingUsesAreBareStatements7(program, sf, clause.namedBindings.name)) {
5372
5441
  diags.push(unsupportedDiag("SC1013", locOf7(clause.namedBindings), "namespace imports of CommonJS modules"));
5373
5442
  }
5374
5443
  }
@@ -5759,6 +5828,111 @@ function preflight7(load) {
5759
5828
  moduleEdges: edges,
5760
5829
  };
5761
5830
  }
5831
+ /* ── the CJS named-import link check ─────────────────────────────────────
5832
+ * Node builds a CommonJS module's ESM facade from its LEXER (cjs-lexer.ts
5833
+ * mirrors it), never from execution — so a named import the checker binds
5834
+ * happily can still fail Node's instantiate phase with a SyntaxError,
5835
+ * thrown before ANY module in the graph evaluates. The checker's word is
5836
+ * NOT Node's word exactly here, and shipping the checker's answer would
5837
+ * diverge from Node without a diagnostic (`module.exports = { a: 7 }` served `a` where
5838
+ * Node refuses the program). This walk asks Node's question at compile
5839
+ * time, in Node's exact ORDER, and answers with Node's exact message. */
5840
+ /** The CommonJS program file a re-export (`module.exports = require(spec)`)
5841
+ * of `from` resolves to, or null: reexport targets union in only when they
5842
+ * resolve to CommonJS program files (Node's cjsPreparseModuleExports rule). */
5843
+ function cjsReexportDep7(program) {
5844
+ return (from, spec) => {
5845
+ const dep = resolveImport7(program, from, spec, "require") ??
5846
+ npmStaticDepSf7(program, from, spec, "require");
5847
+ return dep !== null && isCjsJsFile7(dep, program) ? dep : null;
5848
+ };
5849
+ }
5850
+ /** Node's lexer analysis of a CommonJS file. A bundler rewrite spells some
5851
+ * lexer-visible names as accessors. */
5852
+ function lexWithAccessorNames(sf) {
5853
+ const lexed = cjsLexedExportsOfFile(sf);
5854
+ for (const name of npmStaticLexerVisibleNames(sf.fileName))
5855
+ lexed.exports.add(name);
5856
+ return lexed;
5857
+ }
5858
+ /** The property names of Node's namespace object for the CommonJS module
5859
+ * `dep`: the names its lexer detects, CommonJS re-exports included (the
5860
+ * rule of the named-import link check), plus `default` and
5861
+ * `module.exports`. */
5862
+ /** `dep` and every CommonJS module it re-exports, transitively (the modules
5863
+ * whose exports its namespace object shows). */
5864
+ export function cjsReexportedModules(program, dep) {
5865
+ const resolveDep = cjsReexportDep7(program);
5866
+ const seen = new Set([dep]);
5867
+ const order = [dep];
5868
+ for (let i = 0; i < order.length; i++) {
5869
+ const mod = order[i];
5870
+ for (const spec of lexWithAccessorNames(mod).reexports) {
5871
+ const next = resolveDep(mod, spec);
5872
+ if (next !== null && !seen.has(next)) {
5873
+ seen.add(next);
5874
+ order.push(next);
5875
+ }
5876
+ }
5877
+ }
5878
+ return order;
5879
+ }
5880
+ export function cjsNamespaceExportNames(program, dep) {
5881
+ const names = cjsVisibleNames(dep, lexWithAccessorNames, cjsReexportDep7(program), new Map());
5882
+ return new Set([...names, "default", "module.exports"]);
5883
+ }
5884
+ /** The export names a CommonJS module assigns inside functions
5885
+ * (`exports.current = value` in a function body), or "all" when such code
5886
+ * writes a computed name, replaces module.exports or redefines exports
5887
+ * through Object.defineProperty. Node's namespace object of the module
5888
+ * holds the values the exports had when the module finished evaluating,
5889
+ * so it does not see those writes. */
5890
+ export function cjsExportsAssignedInFunctions(sf) {
5891
+ const names = new Set();
5892
+ let all = false;
5893
+ const exportsObject = (e) => (ts.isIdentifier(e) && e.text === "exports") || isModuleExportsAccess(e);
5894
+ const target = (e) => {
5895
+ while (ts.isParenthesizedExpression(e))
5896
+ e = e.expression;
5897
+ if (isModuleExportsAccess(e))
5898
+ all = true;
5899
+ else if (ts.isPropertyAccessExpression(e) && exportsObject(e.expression))
5900
+ names.add(e.name.text);
5901
+ else if (ts.isElementAccessExpression(e) && exportsObject(e.expression)) {
5902
+ if (ts.isStringLiteralLike(e.argumentExpression))
5903
+ names.add(e.argumentExpression.text);
5904
+ else
5905
+ all = true;
5906
+ }
5907
+ };
5908
+ const visit = (node, inFunction) => {
5909
+ if (all)
5910
+ return;
5911
+ const nested = inFunction || ts.isFunctionLike(node);
5912
+ if (nested) {
5913
+ if (ts.isBinaryExpression(node) &&
5914
+ node.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
5915
+ node.operatorToken.kind <= ts.SyntaxKind.LastAssignment)
5916
+ target(node.left);
5917
+ else if ((ts.isPrefixUnaryExpression(node) || ts.isPostfixUnaryExpression(node)) &&
5918
+ (node.operator === ts.SyntaxKind.PlusPlusToken ||
5919
+ node.operator === ts.SyntaxKind.MinusMinusToken))
5920
+ target(node.operand);
5921
+ else if (ts.isDeleteExpression(node))
5922
+ target(node.expression);
5923
+ else if (ts.isCallExpression(node) &&
5924
+ ts.isPropertyAccessExpression(node.expression) &&
5925
+ ts.isIdentifier(node.expression.expression) &&
5926
+ node.expression.expression.text === "Object" &&
5927
+ node.arguments.nodes[0] !== undefined &&
5928
+ exportsObject(node.arguments.nodes[0]))
5929
+ all = true;
5930
+ }
5931
+ ts.forEachChild(node, (child) => visit(child, nested));
5932
+ };
5933
+ visit(sf, false);
5934
+ return all ? "all" : names;
5935
+ }
5762
5936
  /** Walks the entry's ESM instantiate graph exactly as V8 does — children
5763
5937
  * in request order, each module's own imports checked AFTER its children
5764
5938
  * (postorder), regular imports sorted by LOCAL name (code units), then
@@ -5784,25 +5958,14 @@ function cjsNamedImportLinkCheck(program, entry, moduleOrder, diags) {
5784
5958
  const npmStatic = npmStaticDepSf7(program, from, spec);
5785
5959
  return npmStatic;
5786
5960
  };
5787
- // Reexport targets union in only when they resolve to CommonJS program
5788
- // files (Node's cjsPreparseModuleExports rule).
5789
- const resolveCjsDep = (from, spec) => {
5790
- const dep = resolveImport7(program, from, spec, "require") ??
5791
- npmStaticDepSf7(program, from, spec, "require");
5792
- return dep !== null && isCjsJsFile7(dep, program) ? dep : null;
5793
- };
5794
- // A bundler rewrite spells some lexer-visible names as accessors.
5795
- const lexWithAccessorNames = (sf) => {
5796
- const lexed = cjsLexedExportsOfFile(sf);
5797
- for (const name of npmStaticLexerVisibleNames(sf.fileName))
5798
- lexed.exports.add(name);
5799
- return lexed;
5800
- };
5961
+ const resolveCjsDep = cjsReexportDep7(program);
5801
5962
  const visible = (dep, name) =>
5802
- // `default` is the module.exports binding itself — always provided.
5803
- // The program already owns native source ASTs; reuse them without
5804
- // starting another syntax session or reparsing their source text.
5963
+ // `default` and `module.exports` are the module.exports binding itself
5964
+ // — always provided. The program already owns native source ASTs;
5965
+ // reuse them without starting another syntax session or reparsing
5966
+ // their source text.
5805
5967
  name === "default" ||
5968
+ name === "module.exports" ||
5806
5969
  cjsVisibleNames(dep, lexWithAccessorNames, resolveCjsDep, lexMemo).has(name);
5807
5970
  /** The statement's resolved LOCAL CommonJS dependency, when it is an
5808
5971
  * import/re-export from one. */