@scriptc/compiler 0.1.7 → 0.2.0

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 (1032) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +73 -24
  2. package/ambient/scriptc-overrides.d.ts +10 -6
  3. package/ambient/scriptc.d.ts +15 -0
  4. package/dist/backend/build-cache.d.ts +1 -3
  5. package/dist/backend/build-cache.js +3 -22
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cache-root.d.ts +3 -0
  8. package/dist/backend/cache-root.js +23 -0
  9. package/dist/backend/cache-root.js.map +1 -0
  10. package/dist/backend/cycle-analysis.d.ts +15 -0
  11. package/dist/backend/cycle-analysis.js +107 -0
  12. package/dist/backend/cycle-analysis.js.map +1 -0
  13. package/dist/backend/cycle-analysis.test.js +124 -0
  14. package/dist/backend/cycle-analysis.test.js.map +1 -0
  15. package/dist/backend/executable-features.d.ts +4 -0
  16. package/dist/backend/executable-features.js +42 -0
  17. package/dist/backend/executable-features.js.map +1 -0
  18. package/dist/backend/external-c.d.ts +5 -27
  19. package/dist/backend/external-c.js +5 -40
  20. package/dist/backend/external-c.js.map +1 -1
  21. package/dist/backend/ffi-callbacks.d.ts +2 -3
  22. package/dist/backend/ffi-callbacks.js +2 -3
  23. package/dist/backend/ffi-callbacks.js.map +1 -1
  24. package/dist/backend/library-identity-markers.d.ts +4 -9
  25. package/dist/backend/library-identity-markers.js +11 -49
  26. package/dist/backend/library-identity-markers.js.map +1 -1
  27. package/dist/backend/library-pack.d.ts +5 -0
  28. package/dist/backend/library-pack.js +123 -0
  29. package/dist/backend/library-pack.js.map +1 -0
  30. package/dist/backend/link-plan-core.d.ts +20 -0
  31. package/dist/backend/link-plan-core.js +18 -0
  32. package/dist/backend/link-plan-core.js.map +1 -0
  33. package/dist/backend/link-plan.d.ts +1 -1
  34. package/dist/backend/link-plan.js +16 -17
  35. package/dist/backend/link-plan.js.map +1 -1
  36. package/dist/backend/link-trace.d.ts +2 -0
  37. package/dist/backend/link-trace.js +24 -0
  38. package/dist/backend/link-trace.js.map +1 -0
  39. package/dist/backend/linker.js +1 -1
  40. package/dist/backend/linker.js.map +1 -1
  41. package/dist/backend/literals.d.ts +9 -0
  42. package/dist/backend/literals.js +35 -0
  43. package/dist/backend/literals.js.map +1 -0
  44. package/dist/backend/literals.test.d.ts +1 -0
  45. package/dist/backend/literals.test.js +53 -0
  46. package/dist/backend/literals.test.js.map +1 -0
  47. package/dist/backend/llvm/blocks.d.ts +2 -0
  48. package/dist/backend/llvm/blocks.js +9 -4
  49. package/dist/backend/llvm/blocks.js.map +1 -1
  50. package/dist/backend/llvm/blocks.test.d.ts +1 -0
  51. package/dist/backend/llvm/blocks.test.js +91 -0
  52. package/dist/backend/llvm/blocks.test.js.map +1 -0
  53. package/dist/backend/llvm/classes.d.ts +14 -8
  54. package/dist/backend/llvm/classes.js +70 -28
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/common.d.ts +5 -1
  57. package/dist/backend/llvm/common.js +45 -4
  58. package/dist/backend/llvm/common.js.map +1 -1
  59. package/dist/backend/llvm/debug-info.js +2 -7
  60. package/dist/backend/llvm/debug-info.js.map +1 -1
  61. package/dist/backend/llvm/debug-info.test.d.ts +1 -0
  62. package/dist/backend/llvm/debug-info.test.js +110 -0
  63. package/dist/backend/llvm/debug-info.test.js.map +1 -0
  64. package/dist/backend/llvm/dyn.d.ts +16 -2
  65. package/dist/backend/llvm/dyn.js +494 -165
  66. package/dist/backend/llvm/dyn.js.map +1 -1
  67. package/dist/backend/llvm/emitter.d.ts +596 -1
  68. package/dist/backend/llvm/emitter.js +695 -410
  69. package/dist/backend/llvm/emitter.js.map +1 -1
  70. package/dist/backend/llvm/emitter.test.d.ts +1 -0
  71. package/dist/backend/llvm/emitter.test.js +179 -0
  72. package/dist/backend/llvm/emitter.test.js.map +1 -0
  73. package/dist/backend/llvm/expr-async.js +23 -14
  74. package/dist/backend/llvm/expr-async.js.map +1 -1
  75. package/dist/backend/llvm/expr-bytes.d.ts +1 -1
  76. package/dist/backend/llvm/expr-bytes.js +32 -14
  77. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  78. package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
  79. package/dist/backend/llvm/expr-callbacks.js +25 -22
  80. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  81. package/dist/backend/llvm/expr-calls.js +136 -35
  82. package/dist/backend/llvm/expr-calls.js.map +1 -1
  83. package/dist/backend/llvm/expr-containers.d.ts +1 -1
  84. package/dist/backend/llvm/expr-containers.js +43 -14
  85. package/dist/backend/llvm/expr-containers.js.map +1 -1
  86. package/dist/backend/llvm/expr-context.d.ts +5 -260
  87. package/dist/backend/llvm/expr-control.js +9 -5
  88. package/dist/backend/llvm/expr-control.js.map +1 -1
  89. package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
  90. package/dist/backend/llvm/expr-dispatch.js +2 -0
  91. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  92. package/dist/backend/llvm/expr-dynamic.js +62 -74
  93. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  94. package/dist/backend/llvm/expr-island.d.ts +1 -1
  95. package/dist/backend/llvm/expr-island.js +11 -7
  96. package/dist/backend/llvm/expr-island.js.map +1 -1
  97. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  98. package/dist/backend/llvm/expr-primitives.js +51 -30
  99. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  100. package/dist/backend/llvm/expr-primitives.test.js +1 -1
  101. package/dist/backend/llvm/expr-records.d.ts +5 -1
  102. package/dist/backend/llvm/expr-records.js +43 -4
  103. package/dist/backend/llvm/expr-records.js.map +1 -1
  104. package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
  105. package/dist/backend/llvm/expr-stream-bridges.js +102 -121
  106. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  107. package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
  108. package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
  109. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
  110. package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
  111. package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
  112. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  113. package/dist/backend/llvm/layouts.d.ts +19 -0
  114. package/dist/backend/llvm/layouts.js +12 -0
  115. package/dist/backend/llvm/layouts.js.map +1 -0
  116. package/dist/backend/llvm/lib-abi.d.ts +19 -0
  117. package/dist/backend/llvm/lib-abi.js +82 -0
  118. package/dist/backend/llvm/lib-abi.js.map +1 -0
  119. package/dist/backend/llvm/lib-connect.d.ts +2 -0
  120. package/dist/backend/llvm/lib-connect.js +51 -0
  121. package/dist/backend/llvm/lib-connect.js.map +1 -0
  122. package/dist/backend/llvm/lib-datagram.d.ts +2 -0
  123. package/dist/backend/llvm/lib-datagram.js +135 -0
  124. package/dist/backend/llvm/lib-datagram.js.map +1 -0
  125. package/dist/backend/llvm/lib-dispatch.js +50 -6
  126. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  127. package/dist/backend/llvm/lib-filesystem.js +30 -18
  128. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  129. package/dist/backend/llvm/lib-http2.d.ts +2 -0
  130. package/dist/backend/llvm/lib-http2.js +215 -0
  131. package/dist/backend/llvm/lib-http2.js.map +1 -0
  132. package/dist/backend/llvm/lib-lookup.d.ts +2 -0
  133. package/dist/backend/llvm/lib-lookup.js +39 -0
  134. package/dist/backend/llvm/lib-lookup.js.map +1 -0
  135. package/dist/backend/llvm/lib-network.js +25 -2
  136. package/dist/backend/llvm/lib-network.js.map +1 -1
  137. package/dist/backend/llvm/lib-process.js +21 -16
  138. package/dist/backend/llvm/lib-process.js.map +1 -1
  139. package/dist/backend/llvm/lib-shared.js +117 -1
  140. package/dist/backend/llvm/lib-shared.js.map +1 -1
  141. package/dist/backend/llvm/lib-stream.js +3 -2
  142. package/dist/backend/llvm/lib-stream.js.map +1 -1
  143. package/dist/backend/llvm/lib-test.d.ts +2 -0
  144. package/dist/backend/llvm/lib-test.js +34 -0
  145. package/dist/backend/llvm/lib-test.js.map +1 -0
  146. package/dist/backend/llvm/lib-tls.d.ts +2 -0
  147. package/dist/backend/llvm/lib-tls.js +82 -0
  148. package/dist/backend/llvm/lib-tls.js.map +1 -0
  149. package/dist/backend/llvm/shapes.d.ts +10 -9
  150. package/dist/backend/llvm/shapes.js +35 -130
  151. package/dist/backend/llvm/shapes.js.map +1 -1
  152. package/dist/backend/llvm/unsupported.d.ts +1 -0
  153. package/dist/backend/llvm/unsupported.js +1 -2
  154. package/dist/backend/llvm/unsupported.js.map +1 -1
  155. package/dist/backend/llvm/walkers.js +1 -7
  156. package/dist/backend/llvm/walkers.js.map +1 -1
  157. package/dist/backend/mangle.d.ts +2 -2
  158. package/dist/backend/mangle.js +16 -5
  159. package/dist/backend/mangle.js.map +1 -1
  160. package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
  161. package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
  162. package/dist/backend/may-throw.js.map +1 -0
  163. package/dist/backend/may-throw.test.d.ts +1 -0
  164. package/dist/backend/may-throw.test.js +58 -0
  165. package/dist/backend/may-throw.test.js.map +1 -0
  166. package/dist/backend/native-codegen-core.d.ts +22 -0
  167. package/dist/backend/native-codegen-core.js +44 -0
  168. package/dist/backend/native-codegen-core.js.map +1 -0
  169. package/dist/backend/native-codegen.d.ts +3 -19
  170. package/dist/backend/native-codegen.js +5 -44
  171. package/dist/backend/native-codegen.js.map +1 -1
  172. package/dist/backend/native-codegen.test.js +2 -2
  173. package/dist/backend/native-codegen.test.js.map +1 -1
  174. package/dist/backend/native-link-info-core.d.ts +94 -0
  175. package/dist/backend/native-link-info-core.js +62 -0
  176. package/dist/backend/native-link-info-core.js.map +1 -0
  177. package/dist/backend/native-link-info.d.ts +3 -88
  178. package/dist/backend/native-link-info.js +12 -243
  179. package/dist/backend/native-link-info.js.map +1 -1
  180. package/dist/backend/native-link-info.test.js +41 -146
  181. package/dist/backend/native-link-info.test.js.map +1 -1
  182. package/dist/backend/native-toolchain.d.ts +10 -25
  183. package/dist/backend/native-toolchain.js +31 -211
  184. package/dist/backend/native-toolchain.js.map +1 -1
  185. package/dist/backend/native-toolchain.test.js +5 -5
  186. package/dist/backend/native-toolchain.test.js.map +1 -1
  187. package/dist/backend/native-tools.d.ts +24 -0
  188. package/dist/backend/native-tools.js +33 -0
  189. package/dist/backend/native-tools.js.map +1 -0
  190. package/dist/backend/object-localize.js +19 -8
  191. package/dist/backend/object-localize.js.map +1 -1
  192. package/dist/backend/object-localize.test.js +22 -0
  193. package/dist/backend/object-localize.test.js.map +1 -1
  194. package/dist/backend/runtime-abi.d.ts +2 -2
  195. package/dist/backend/runtime-abi.js +2 -2
  196. package/dist/backend/runtime-pack-core.d.ts +101 -0
  197. package/dist/backend/runtime-pack-core.js +172 -0
  198. package/dist/backend/runtime-pack-core.js.map +1 -0
  199. package/dist/backend/runtime-pack-native.d.ts +21 -0
  200. package/dist/backend/runtime-pack-native.js +70 -0
  201. package/dist/backend/runtime-pack-native.js.map +1 -0
  202. package/dist/backend/runtime-pack-targets.test.js +1 -1
  203. package/dist/backend/runtime-pack.d.ts +3 -83
  204. package/dist/backend/runtime-pack.js +8 -151
  205. package/dist/backend/runtime-pack.js.map +1 -1
  206. package/dist/backend/runtime-pack.test.js +24 -1
  207. package/dist/backend/runtime-pack.test.js.map +1 -1
  208. package/dist/backend/target-diagnostics.d.ts +22 -0
  209. package/dist/backend/target-diagnostics.js +108 -0
  210. package/dist/backend/target-diagnostics.js.map +1 -0
  211. package/dist/backend/target-platform.d.ts +15 -0
  212. package/dist/backend/target-platform.js +72 -0
  213. package/dist/backend/target-platform.js.map +1 -0
  214. package/dist/backend/targets.d.ts +13 -4
  215. package/dist/backend/targets.js +95 -30
  216. package/dist/backend/targets.js.map +1 -1
  217. package/dist/backend/targets.test.js +65 -4
  218. package/dist/backend/targets.test.js.map +1 -1
  219. package/dist/backend/toolchain-environment.d.ts +6 -0
  220. package/dist/backend/toolchain-environment.js +99 -0
  221. package/dist/backend/toolchain-environment.js.map +1 -0
  222. package/dist/backend/vendor-archives.d.ts +1 -9
  223. package/dist/backend/vendor-archives.js +2 -9
  224. package/dist/backend/vendor-archives.js.map +1 -1
  225. package/dist/backend/vendor-inputs.d.ts +9 -0
  226. package/dist/backend/vendor-inputs.js +10 -0
  227. package/dist/backend/vendor-inputs.js.map +1 -0
  228. package/dist/backend/warm-cache.d.ts +3 -0
  229. package/dist/backend/warm-cache.js +41 -0
  230. package/dist/backend/warm-cache.js.map +1 -0
  231. package/dist/cli/command.d.ts +3 -0
  232. package/dist/cli/command.js +328 -0
  233. package/dist/cli/command.js.map +1 -0
  234. package/dist/cli/host.d.ts +24 -0
  235. package/dist/cli/host.js +2 -0
  236. package/dist/cli/host.js.map +1 -0
  237. package/dist/cli/output-options.d.ts +26 -0
  238. package/dist/cli/output-options.js +60 -0
  239. package/dist/cli/output-options.js.map +1 -0
  240. package/dist/cli/paths.d.ts +12 -0
  241. package/dist/cli/paths.js +42 -0
  242. package/dist/cli/paths.js.map +1 -0
  243. package/dist/cli/usage.d.ts +74 -0
  244. package/dist/cli/usage.js +86 -0
  245. package/dist/cli/usage.js.map +1 -0
  246. package/dist/cli/wasi-paths.d.ts +8 -0
  247. package/dist/cli/wasi-paths.js +41 -0
  248. package/dist/cli/wasi-paths.js.map +1 -0
  249. package/dist/cli/wasi-runner.d.ts +2 -0
  250. package/dist/cli/wasi-runner.js +28 -0
  251. package/dist/cli/wasi-runner.js.map +1 -0
  252. package/dist/compat/fetch-profile.js +3 -3
  253. package/dist/compat/fetch-profile.js.map +1 -1
  254. package/dist/compile-types.d.ts +162 -0
  255. package/dist/compile-types.js +2 -0
  256. package/dist/compile-types.js.map +1 -0
  257. package/dist/coverage/report.js +11 -5
  258. package/dist/coverage/report.js.map +1 -1
  259. package/dist/coverage/surface-manifest.js +5 -2
  260. package/dist/coverage/surface-manifest.js.map +1 -1
  261. package/dist/diagnostics/diagnostic.js +3 -3
  262. package/dist/diagnostics/diagnostic.js.map +1 -1
  263. package/dist/executable/executable-cache.d.ts +3 -4
  264. package/dist/executable/executable-cache.js +5 -6
  265. package/dist/executable/executable-cache.js.map +1 -1
  266. package/dist/executable/executable-cache.test.js +16 -17
  267. package/dist/executable/executable-cache.test.js.map +1 -1
  268. package/dist/executable/prepare.d.ts +14 -0
  269. package/dist/executable/prepare.js +66 -0
  270. package/dist/executable/prepare.js.map +1 -0
  271. package/dist/ffi/ffi-manifest.d.ts +11 -4
  272. package/dist/ffi/ffi-manifest.js +170 -58
  273. package/dist/ffi/ffi-manifest.js.map +1 -1
  274. package/dist/ffi/ffi-manifest.test.d.ts +1 -0
  275. package/dist/ffi/ffi-manifest.test.js +111 -0
  276. package/dist/ffi/ffi-manifest.test.js.map +1 -0
  277. package/dist/format-integer.d.ts +3 -0
  278. package/dist/format-integer.js +14 -0
  279. package/dist/format-integer.js.map +1 -0
  280. package/dist/frontend/analysis.d.ts +5 -0
  281. package/dist/frontend/analysis.js +88 -0
  282. package/dist/frontend/analysis.js.map +1 -0
  283. package/dist/frontend/arguments-usage.d.ts +1 -3
  284. package/dist/frontend/arguments-usage.js.map +1 -1
  285. package/dist/frontend/builtin-modules.d.ts +1 -1
  286. package/dist/frontend/builtin-modules.js +1 -1
  287. package/dist/frontend/builtin-modules.js.map +1 -1
  288. package/dist/frontend/cjs-lexer.d.ts +4 -25
  289. package/dist/frontend/cjs-lexer.js +6 -806
  290. package/dist/frontend/cjs-lexer.js.map +1 -1
  291. package/dist/frontend/cjs-resolve.d.ts +5 -0
  292. package/dist/frontend/cjs-resolve.js +429 -0
  293. package/dist/frontend/cjs-resolve.js.map +1 -0
  294. package/dist/frontend/cjs-syntax.d.ts +26 -0
  295. package/dist/frontend/cjs-syntax.js +806 -0
  296. package/dist/frontend/cjs-syntax.js.map +1 -0
  297. package/dist/frontend/comptime-node.d.ts +4 -0
  298. package/dist/frontend/comptime-node.js +16 -0
  299. package/dist/frontend/comptime-node.js.map +1 -0
  300. package/dist/frontend/comptime-node.test.d.ts +1 -0
  301. package/dist/frontend/comptime-node.test.js +37 -0
  302. package/dist/frontend/comptime-node.test.js.map +1 -0
  303. package/dist/frontend/dts-paths.d.ts +3 -4
  304. package/dist/frontend/dts-paths.js +15 -8
  305. package/dist/frontend/dts-paths.js.map +1 -1
  306. package/dist/frontend/fork-target.js +2 -2
  307. package/dist/frontend/fork-target.js.map +1 -1
  308. package/dist/frontend/helper-tokens.d.ts +1 -0
  309. package/dist/frontend/helper-tokens.js +147 -0
  310. package/dist/frontend/helper-tokens.js.map +1 -0
  311. package/dist/frontend/helper-tokens.test.d.ts +1 -0
  312. package/dist/frontend/helper-tokens.test.js +35 -0
  313. package/dist/frontend/helper-tokens.test.js.map +1 -0
  314. package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
  315. package/dist/frontend/inferred-js-diagnostics.js +69 -0
  316. package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
  317. package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
  318. package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
  319. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
  320. package/dist/frontend/input-tracker.d.ts +5 -2
  321. package/dist/frontend/input-tracker.js +24 -3
  322. package/dist/frontend/input-tracker.js.map +1 -1
  323. package/dist/frontend/input-tracker.test.js +23 -0
  324. package/dist/frontend/input-tracker.test.js.map +1 -1
  325. package/dist/frontend/lib-contract.js +32 -24
  326. package/dist/frontend/lib-contract.js.map +1 -1
  327. package/dist/frontend/literal-values.d.ts +4 -0
  328. package/dist/frontend/literal-values.js +21 -0
  329. package/dist/frontend/literal-values.js.map +1 -0
  330. package/dist/frontend/literal-values.test.d.ts +1 -0
  331. package/dist/frontend/literal-values.test.js +91 -0
  332. package/dist/frontend/literal-values.test.js.map +1 -0
  333. package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
  334. package/dist/frontend/lowering/abstract-equality.js +3 -0
  335. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  336. package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
  337. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  338. package/dist/frontend/lowering/array-values.d.ts +4 -1
  339. package/dist/frontend/lowering/array-values.js +43 -1
  340. package/dist/frontend/lowering/array-values.js.map +1 -1
  341. package/dist/frontend/lowering/callback-arg.js +1 -0
  342. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  343. package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
  344. package/dist/frontend/lowering/class-callbacks.js +63 -0
  345. package/dist/frontend/lowering/class-callbacks.js.map +1 -0
  346. package/dist/frontend/lowering/class-descriptors.d.ts +9 -0
  347. package/dist/frontend/lowering/class-descriptors.js +73 -0
  348. package/dist/frontend/lowering/class-descriptors.js.map +1 -0
  349. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +41 -0
  350. package/dist/frontend/lowering/class-dynamic-dispatch.js +803 -0
  351. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
  352. package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
  353. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +92 -0
  354. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
  355. package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
  356. package/dist/frontend/lowering/class-instance-constructor.js +64 -0
  357. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
  358. package/dist/frontend/lowering/class-method-values.d.ts +10 -0
  359. package/dist/frontend/lowering/class-method-values.js +170 -0
  360. package/dist/frontend/lowering/class-method-values.js.map +1 -0
  361. package/dist/frontend/lowering/class-prototypes.d.ts +16 -0
  362. package/dist/frontend/lowering/class-prototypes.js +134 -0
  363. package/dist/frontend/lowering/class-prototypes.js.map +1 -0
  364. package/dist/frontend/lowering/class-static-data.d.ts +6 -0
  365. package/dist/frontend/lowering/class-static-data.js +56 -0
  366. package/dist/frontend/lowering/class-static-data.js.map +1 -0
  367. package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
  368. package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
  369. package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
  370. package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
  371. package/dist/frontend/lowering/containers/bytes.js +164 -155
  372. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  373. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
  374. package/dist/frontend/lowering/containers/string-and-regexp.js +39 -16
  375. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  376. package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
  377. package/dist/frontend/lowering/containers/string-replacement.js +217 -0
  378. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
  379. package/dist/frontend/lowering/error-methods.d.ts +11 -0
  380. package/dist/frontend/lowering/error-methods.js +78 -0
  381. package/dist/frontend/lowering/error-methods.js.map +1 -0
  382. package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
  383. package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
  384. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
  385. package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
  386. package/dist/frontend/lowering/expressions/native-proxy.js +49 -0
  387. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
  388. package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
  389. package/dist/frontend/lowering/expressions/nullish-assignment.js +124 -0
  390. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
  391. package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
  392. package/dist/frontend/lowering/expressions/object-literals.js +473 -178
  393. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  394. package/dist/frontend/lowering/expressions/optional-chains.js +20 -8
  395. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  396. package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
  397. package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
  398. package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
  399. package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
  400. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
  401. package/dist/frontend/lowering/function-context.d.ts +93 -0
  402. package/dist/frontend/lowering/function-context.js +103 -0
  403. package/dist/frontend/lowering/function-context.js.map +1 -0
  404. package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
  405. package/dist/frontend/lowering/generator-delegation.js +85 -0
  406. package/dist/frontend/lowering/generator-delegation.js.map +1 -0
  407. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +10 -0
  408. package/dist/frontend/lowering/generator-dynamic-dispatch.js +105 -0
  409. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
  410. package/dist/frontend/lowering/lib-boundary.d.ts +2 -1
  411. package/dist/frontend/lowering/lib-boundary.js +59 -20
  412. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  413. package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
  414. package/dist/frontend/lowering/lib-boundary.test.js +45 -0
  415. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
  416. package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
  417. package/dist/frontend/lowering/lower-assert.d.ts +1 -1
  418. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  419. package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
  420. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  421. package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
  422. package/dist/frontend/lowering/lower-builtin-values.js +139 -0
  423. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
  424. package/dist/frontend/lowering/lower-builtins.d.ts +27 -41
  425. package/dist/frontend/lowering/lower-builtins.js +539 -343
  426. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  427. package/dist/frontend/lowering/lower-calls.d.ts +20 -17
  428. package/dist/frontend/lowering/lower-calls.js +1236 -353
  429. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  430. package/dist/frontend/lowering/lower-classes.d.ts +83 -45
  431. package/dist/frontend/lowering/lower-classes.js +952 -339
  432. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  433. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  434. package/dist/frontend/lowering/lower-comptime.js +23 -32
  435. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  436. package/dist/frontend/lowering/lower-containers.d.ts +27 -32
  437. package/dist/frontend/lowering/lower-containers.js +796 -151
  438. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  439. package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
  440. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  441. package/dist/frontend/lowering/lower-enums.d.ts +1 -1
  442. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  443. package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
  444. package/dist/frontend/lowering/lower-event-emitter.js +58 -26
  445. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  446. package/dist/frontend/lowering/lower-expando.d.ts +7 -1
  447. package/dist/frontend/lowering/lower-expando.js +14 -6
  448. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  449. package/dist/frontend/lowering/lower-exprs.d.ts +35 -11
  450. package/dist/frontend/lowering/lower-exprs.js +1674 -779
  451. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  452. package/dist/frontend/lowering/lower-generators.d.ts +2 -5
  453. package/dist/frontend/lowering/lower-generators.js +77 -46
  454. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  455. package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
  456. package/dist/frontend/lowering/lower-global-value.js +17 -0
  457. package/dist/frontend/lowering/lower-global-value.js.map +1 -0
  458. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  459. package/dist/frontend/lowering/lower-inspect.js +17 -8
  460. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  461. package/dist/frontend/lowering/lower-island.d.ts +5 -8
  462. package/dist/frontend/lowering/lower-island.js +34 -23
  463. package/dist/frontend/lowering/lower-island.js.map +1 -1
  464. package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
  465. package/dist/frontend/lowering/lower-mixins.js +5 -3
  466. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  467. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  468. package/dist/frontend/lowering/lower-modules.js +233 -30
  469. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  470. package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
  471. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  472. package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
  473. package/dist/frontend/lowering/lower-node-module.js +13 -10
  474. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  475. package/dist/frontend/lowering/lower-server.d.ts +1 -1
  476. package/dist/frontend/lowering/lower-server.js +6 -10
  477. package/dist/frontend/lowering/lower-server.js.map +1 -1
  478. package/dist/frontend/lowering/lower-stmts.d.ts +10 -14
  479. package/dist/frontend/lowering/lower-stmts.js +728 -496
  480. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  481. package/dist/frontend/lowering/lower-stream.d.ts +1 -1
  482. package/dist/frontend/lowering/lower-stream.js +19 -10
  483. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  484. package/dist/frontend/lowering/lower-test.d.ts +1 -1
  485. package/dist/frontend/lowering/lower-test.js.map +1 -1
  486. package/dist/frontend/lowering/lower-url.d.ts +6 -0
  487. package/dist/frontend/lowering/lower-url.js +77 -0
  488. package/dist/frontend/lowering/lower-url.js.map +1 -0
  489. package/dist/frontend/lowering/lowerer.d.ts +113 -189
  490. package/dist/frontend/lowering/lowerer.js +1031 -672
  491. package/dist/frontend/lowering/lowerer.js.map +1 -1
  492. package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
  493. package/dist/frontend/lowering/lowerer.test.js +26 -0
  494. package/dist/frontend/lowering/lowerer.test.js.map +1 -0
  495. package/dist/frontend/lowering/native-ffi.d.ts +5 -0
  496. package/dist/frontend/lowering/native-ffi.js +40 -0
  497. package/dist/frontend/lowering/native-ffi.js.map +1 -0
  498. package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
  499. package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
  500. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
  501. package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
  502. package/dist/frontend/lowering/object-factory-new.js +68 -0
  503. package/dist/frontend/lowering/object-factory-new.js.map +1 -0
  504. package/dist/frontend/lowering/optional-arguments.js +6 -1
  505. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  506. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  507. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  508. package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
  509. package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
  510. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
  511. package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
  512. package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
  513. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
  514. package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
  515. package/dist/frontend/lowering/sanitize-class-types.js +79 -0
  516. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
  517. package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
  518. package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
  519. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
  520. package/dist/frontend/lowering/static-this.d.ts +5 -1
  521. package/dist/frontend/lowering/static-this.js +28 -2
  522. package/dist/frontend/lowering/static-this.js.map +1 -1
  523. package/dist/frontend/lowering/string-index.d.ts +7 -0
  524. package/dist/frontend/lowering/string-index.js +39 -0
  525. package/dist/frontend/lowering/string-index.js.map +1 -0
  526. package/dist/frontend/lowering/surfaces.d.ts +8 -3
  527. package/dist/frontend/lowering/surfaces.js +61 -29
  528. package/dist/frontend/lowering/surfaces.js.map +1 -1
  529. package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
  530. package/dist/frontend/lowering/symbol-fields.js +183 -0
  531. package/dist/frontend/lowering/symbol-fields.js.map +1 -0
  532. package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
  533. package/dist/frontend/lowering/symbol-methods.js +30 -0
  534. package/dist/frontend/lowering/symbol-methods.js.map +1 -0
  535. package/dist/frontend/lowering/text-decoder-encoding.d.ts +10 -0
  536. package/dist/frontend/lowering/text-decoder-encoding.js +77 -0
  537. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
  538. package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
  539. package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
  540. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
  541. package/dist/frontend/lowering/union-narrow.d.ts +9 -0
  542. package/dist/frontend/lowering/union-narrow.js +59 -0
  543. package/dist/frontend/lowering/union-narrow.js.map +1 -0
  544. package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
  545. package/dist/frontend/lowering/union-narrow.test.js +72 -0
  546. package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
  547. package/dist/frontend/lowering/union-retag.d.ts +43 -0
  548. package/dist/frontend/lowering/union-retag.js +259 -0
  549. package/dist/frontend/lowering/union-retag.js.map +1 -0
  550. package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
  551. package/dist/frontend/lowering/union-retag.test.js +405 -0
  552. package/dist/frontend/lowering/union-retag.test.js.map +1 -0
  553. package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
  554. package/dist/frontend/lowering/unregistered-class-types.js +94 -0
  555. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
  556. package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
  557. package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
  558. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
  559. package/dist/frontend/lowering/width-lift.d.ts +40 -0
  560. package/dist/frontend/lowering/width-lift.js +2 -0
  561. package/dist/frontend/lowering/width-lift.js.map +1 -0
  562. package/dist/frontend/module-syntax.d.ts +58 -0
  563. package/dist/frontend/module-syntax.js +123 -0
  564. package/dist/frontend/module-syntax.js.map +1 -0
  565. package/dist/frontend/module-syntax.test.d.ts +1 -0
  566. package/dist/frontend/module-syntax.test.js +78 -0
  567. package/dist/frontend/module-syntax.test.js.map +1 -0
  568. package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
  569. package/dist/frontend/npm-fetch-analysis.js +100 -0
  570. package/dist/frontend/npm-fetch-analysis.js.map +1 -0
  571. package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
  572. package/dist/frontend/npm-fetch-analysis.test.js +107 -0
  573. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
  574. package/dist/frontend/npm-fetch-node.d.ts +2 -0
  575. package/dist/frontend/npm-fetch-node.js +12 -0
  576. package/dist/frontend/npm-fetch-node.js.map +1 -0
  577. package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
  578. package/dist/frontend/npm-fetch-syntax.js +207 -0
  579. package/dist/frontend/npm-fetch-syntax.js.map +1 -0
  580. package/dist/frontend/npm-node.d.ts +10 -0
  581. package/dist/frontend/npm-node.js +14 -0
  582. package/dist/frontend/npm-node.js.map +1 -0
  583. package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
  584. package/dist/frontend/npm-static-bundled-cjs.js +236 -0
  585. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
  586. package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
  587. package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
  588. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
  589. package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
  590. package/dist/frontend/npm-static-declaration-syntax.js +944 -0
  591. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
  592. package/dist/frontend/npm-static-declarations.d.ts +11 -39
  593. package/dist/frontend/npm-static-declarations.js +22 -561
  594. package/dist/frontend/npm-static-declarations.js.map +1 -1
  595. package/dist/frontend/npm-static-declarations.test.js +245 -6
  596. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  597. package/dist/frontend/npm-static-prune.d.ts +1 -1
  598. package/dist/frontend/npm-static-prune.js +5 -4
  599. package/dist/frontend/npm-static-prune.js.map +1 -1
  600. package/dist/frontend/npm-static-prune.test.js +1 -1
  601. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  602. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
  603. package/dist/frontend/npm-static-rewrite-host.js +179 -0
  604. package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
  605. package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
  606. package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
  607. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
  608. package/dist/frontend/npm-static-rewrite.d.ts +0 -5
  609. package/dist/frontend/npm-static-rewrite.js +2 -1079
  610. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  611. package/dist/frontend/npm-static-subtyping.d.ts +5 -0
  612. package/dist/frontend/npm-static-subtyping.js +55 -0
  613. package/dist/frontend/npm-static-subtyping.js.map +1 -0
  614. package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
  615. package/dist/frontend/npm-static-subtyping.test.js +58 -0
  616. package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
  617. package/dist/frontend/npm-static.d.ts +7 -15
  618. package/dist/frontend/npm-static.js +19 -28
  619. package/dist/frontend/npm-static.js.map +1 -1
  620. package/dist/frontend/npm.d.ts +8 -69
  621. package/dist/frontend/npm.js +21 -361
  622. package/dist/frontend/npm.js.map +1 -1
  623. package/dist/frontend/npm.test.js +2 -2
  624. package/dist/frontend/npm.test.js.map +1 -1
  625. package/dist/frontend/pipeline-native.d.ts +6 -0
  626. package/dist/frontend/pipeline-native.js +32 -0
  627. package/dist/frontend/pipeline-native.js.map +1 -0
  628. package/dist/frontend/pipeline.d.ts +54 -0
  629. package/dist/frontend/pipeline.js +382 -0
  630. package/dist/frontend/pipeline.js.map +1 -0
  631. package/dist/frontend/pipeline.test.d.ts +1 -0
  632. package/dist/frontend/pipeline.test.js +77 -0
  633. package/dist/frontend/pipeline.test.js.map +1 -0
  634. package/dist/frontend/program-analysis.d.ts +10 -0
  635. package/dist/frontend/program-analysis.js +14 -0
  636. package/dist/frontend/program-analysis.js.map +1 -0
  637. package/dist/frontend/program-node.d.ts +9 -0
  638. package/dist/frontend/program-node.js +48 -0
  639. package/dist/frontend/program-node.js.map +1 -0
  640. package/dist/frontend/program.d.ts +38 -19
  641. package/dist/frontend/program.js +344 -169
  642. package/dist/frontend/program.js.map +1 -1
  643. package/dist/frontend/program.test.js +87 -2
  644. package/dist/frontend/program.test.js.map +1 -1
  645. package/dist/frontend/provenance-core.d.ts +9 -0
  646. package/dist/frontend/provenance-core.js +435 -0
  647. package/dist/frontend/provenance-core.js.map +1 -0
  648. package/dist/frontend/provenance.d.ts +0 -4
  649. package/dist/frontend/provenance.js +4 -459
  650. package/dist/frontend/provenance.js.map +1 -1
  651. package/dist/frontend/resolve.d.ts +3 -1
  652. package/dist/frontend/resolve.js +6 -3
  653. package/dist/frontend/resolve.js.map +1 -1
  654. package/dist/frontend/runtime-resolve.d.ts +4 -3
  655. package/dist/frontend/runtime-resolve.js +22 -18
  656. package/dist/frontend/runtime-resolve.js.map +1 -1
  657. package/dist/frontend/runtime-resolve.test.js +53 -0
  658. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  659. package/dist/frontend/services-node.d.ts +5 -0
  660. package/dist/frontend/services-node.js +19 -0
  661. package/dist/frontend/services-node.js.map +1 -0
  662. package/dist/frontend/services-node.test.d.ts +1 -0
  663. package/dist/frontend/services-node.test.js +70 -0
  664. package/dist/frontend/services-node.test.js.map +1 -0
  665. package/dist/frontend/services.d.ts +44 -0
  666. package/dist/frontend/services.js +90 -0
  667. package/dist/frontend/services.js.map +1 -0
  668. package/dist/frontend/services.test.d.ts +1 -0
  669. package/dist/frontend/services.test.js +174 -0
  670. package/dist/frontend/services.test.js.map +1 -0
  671. package/dist/frontend/ts7/adapter.d.ts +3 -3
  672. package/dist/frontend/ts7/adapter.js +14 -31
  673. package/dist/frontend/ts7/adapter.js.map +1 -1
  674. package/dist/frontend/ts7/api.d.ts +16 -0
  675. package/dist/frontend/ts7/api.js +24 -0
  676. package/dist/frontend/ts7/api.js.map +1 -0
  677. package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
  678. package/dist/frontend/ts7/ast-bytes.js +137 -0
  679. package/dist/frontend/ts7/ast-bytes.js.map +1 -0
  680. package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
  681. package/dist/frontend/ts7/ast-bytes.test.js +73 -0
  682. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
  683. package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
  684. package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
  685. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
  686. package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
  687. package/dist/frontend/ts7/ast-guards.test.js +43 -0
  688. package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
  689. package/dist/frontend/ts7/ast-node.d.ts +194 -0
  690. package/dist/frontend/ts7/ast-node.js +448 -0
  691. package/dist/frontend/ts7/ast-node.js.map +1 -0
  692. package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
  693. package/dist/frontend/ts7/ast-node.test.js +266 -0
  694. package/dist/frontend/ts7/ast-node.test.js.map +1 -0
  695. package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
  696. package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
  697. package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
  698. package/dist/frontend/ts7/ast-text.d.ts +6 -0
  699. package/dist/frontend/ts7/ast-text.js +124 -0
  700. package/dist/frontend/ts7/ast-text.js.map +1 -0
  701. package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
  702. package/dist/frontend/ts7/ast-text.test.js +38 -0
  703. package/dist/frontend/ts7/ast-text.test.js.map +1 -0
  704. package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
  705. package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
  706. package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
  707. package/dist/frontend/ts7/ast-types.d.ts +42 -0
  708. package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
  709. package/dist/frontend/ts7/ast-types.generated.js +5 -0
  710. package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
  711. package/dist/frontend/ts7/ast-types.js +3 -0
  712. package/dist/frontend/ts7/ast-types.js.map +1 -0
  713. package/dist/frontend/ts7/ast-wire.d.ts +58 -0
  714. package/dist/frontend/ts7/ast-wire.js +267 -0
  715. package/dist/frontend/ts7/ast-wire.js.map +1 -0
  716. package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
  717. package/dist/frontend/ts7/ast-wire.test.js +151 -0
  718. package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
  719. package/dist/frontend/ts7/ast.d.ts +14 -14
  720. package/dist/frontend/ts7/ast.js +21 -15
  721. package/dist/frontend/ts7/ast.js.map +1 -1
  722. package/dist/frontend/ts7/census-check.js +1 -0
  723. package/dist/frontend/ts7/census-check.js.map +1 -1
  724. package/dist/frontend/ts7/checker-cache.d.ts +48 -0
  725. package/dist/frontend/ts7/checker-cache.js +92 -0
  726. package/dist/frontend/ts7/checker-cache.js.map +1 -0
  727. package/dist/frontend/ts7/checker.d.ts +19 -46
  728. package/dist/frontend/ts7/checker.js +231 -161
  729. package/dist/frontend/ts7/checker.js.map +1 -1
  730. package/dist/frontend/ts7/checker.test.d.ts +1 -0
  731. package/dist/frontend/ts7/checker.test.js +335 -0
  732. package/dist/frontend/ts7/checker.test.js.map +1 -0
  733. package/dist/frontend/ts7/enums.d.ts +4 -27
  734. package/dist/frontend/ts7/enums.generated.d.ts +878 -0
  735. package/dist/frontend/ts7/enums.generated.js +1313 -0
  736. package/dist/frontend/ts7/enums.generated.js.map +1 -0
  737. package/dist/frontend/ts7/enums.js +4 -45
  738. package/dist/frontend/ts7/enums.js.map +1 -1
  739. package/dist/frontend/ts7/enums.test.d.ts +1 -0
  740. package/dist/frontend/ts7/enums.test.js +48 -0
  741. package/dist/frontend/ts7/enums.test.js.map +1 -0
  742. package/dist/frontend/ts7/native-api.d.ts +10 -0
  743. package/dist/frontend/ts7/native-api.js +10 -0
  744. package/dist/frontend/ts7/native-api.js.map +1 -0
  745. package/dist/frontend/ts7/native-host.d.ts +2 -0
  746. package/dist/frontend/ts7/native-host.js +11 -0
  747. package/dist/frontend/ts7/native-host.js.map +1 -0
  748. package/dist/frontend/ts7/native-process.d.ts +14 -0
  749. package/dist/frontend/ts7/native-process.js +62 -0
  750. package/dist/frontend/ts7/native-process.js.map +1 -0
  751. package/dist/frontend/ts7/program-adapter.d.ts +10 -98
  752. package/dist/frontend/ts7/program-adapter.js +16 -310
  753. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  754. package/dist/frontend/ts7/program-host.d.ts +115 -0
  755. package/dist/frontend/ts7/program-host.js +347 -0
  756. package/dist/frontend/ts7/program-host.js.map +1 -0
  757. package/dist/frontend/ts7/program-host.test.d.ts +1 -0
  758. package/dist/frontend/ts7/program-host.test.js +207 -0
  759. package/dist/frontend/ts7/program-host.test.js.map +1 -0
  760. package/dist/frontend/ts7/rpc-api.d.ts +12 -0
  761. package/dist/frontend/ts7/rpc-api.js +23 -0
  762. package/dist/frontend/ts7/rpc-api.js.map +1 -0
  763. package/dist/frontend/ts7/rpc-client.d.ts +27 -0
  764. package/dist/frontend/ts7/rpc-client.js +102 -0
  765. package/dist/frontend/ts7/rpc-client.js.map +1 -0
  766. package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
  767. package/dist/frontend/ts7/rpc-client.test.js +133 -0
  768. package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
  769. package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
  770. package/dist/frontend/ts7/rpc-filesystem.js +42 -0
  771. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
  772. package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
  773. package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
  774. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
  775. package/dist/frontend/ts7/rpc-process.d.ts +2 -0
  776. package/dist/frontend/ts7/rpc-process.js +148 -0
  777. package/dist/frontend/ts7/rpc-process.js.map +1 -0
  778. package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
  779. package/dist/frontend/ts7/rpc-process.test.js +29 -0
  780. package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
  781. package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
  782. package/dist/frontend/ts7/rpc-wire.js +195 -0
  783. package/dist/frontend/ts7/rpc-wire.js.map +1 -0
  784. package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
  785. package/dist/frontend/ts7/rpc-wire.test.js +168 -0
  786. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
  787. package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
  788. package/dist/frontend/ts7/semantic-checker.js +221 -0
  789. package/dist/frontend/ts7/semantic-checker.js.map +1 -0
  790. package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
  791. package/dist/frontend/ts7/semantic-checker.test.js +119 -0
  792. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
  793. package/dist/frontend/ts7/semantic-json.d.ts +5 -0
  794. package/dist/frontend/ts7/semantic-json.js +52 -0
  795. package/dist/frontend/ts7/semantic-json.js.map +1 -0
  796. package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
  797. package/dist/frontend/ts7/semantic-json.test.js +42 -0
  798. package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
  799. package/dist/frontend/ts7/semantic-model.d.ts +222 -0
  800. package/dist/frontend/ts7/semantic-model.js +423 -0
  801. package/dist/frontend/ts7/semantic-model.js.map +1 -0
  802. package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
  803. package/dist/frontend/ts7/semantic-model.test.js +322 -0
  804. package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
  805. package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
  806. package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
  807. package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
  808. package/dist/frontend/ts7/semantic-types.d.ts +5 -0
  809. package/dist/frontend/ts7/semantic-types.js +2 -0
  810. package/dist/frontend/ts7/semantic-types.js.map +1 -0
  811. package/dist/frontend/ts7/session-cache.d.ts +17 -0
  812. package/dist/frontend/ts7/session-cache.js +97 -0
  813. package/dist/frontend/ts7/session-cache.js.map +1 -0
  814. package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
  815. package/dist/frontend/ts7/session-cache.test.js +87 -0
  816. package/dist/frontend/ts7/session-cache.test.js.map +1 -0
  817. package/dist/frontend/ts7/session-path.d.ts +18 -0
  818. package/dist/frontend/ts7/session-path.js +203 -0
  819. package/dist/frontend/ts7/session-path.js.map +1 -0
  820. package/dist/frontend/ts7/session-path.test.d.ts +1 -0
  821. package/dist/frontend/ts7/session-path.test.js +34 -0
  822. package/dist/frontend/ts7/session-path.test.js.map +1 -0
  823. package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
  824. package/dist/frontend/ts7/session-schema.generated.js +5 -0
  825. package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
  826. package/dist/frontend/ts7/session-timing.d.ts +50 -0
  827. package/dist/frontend/ts7/session-timing.js +61 -0
  828. package/dist/frontend/ts7/session-timing.js.map +1 -0
  829. package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
  830. package/dist/frontend/ts7/session-timing.test.js +52 -0
  831. package/dist/frontend/ts7/session-timing.test.js.map +1 -0
  832. package/dist/frontend/ts7/session.d.ts +105 -0
  833. package/dist/frontend/ts7/session.js +233 -0
  834. package/dist/frontend/ts7/session.js.map +1 -0
  835. package/dist/frontend/ts7/session.test.d.ts +1 -0
  836. package/dist/frontend/ts7/session.test.js +215 -0
  837. package/dist/frontend/ts7/session.test.js.map +1 -0
  838. package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
  839. package/dist/frontend/ts7/source-parser-node.js +15 -0
  840. package/dist/frontend/ts7/source-parser-node.js.map +1 -0
  841. package/dist/frontend/ts7/source-parser.d.ts +25 -0
  842. package/dist/frontend/ts7/source-parser.js +96 -0
  843. package/dist/frontend/ts7/source-parser.js.map +1 -0
  844. package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
  845. package/dist/frontend/ts7/source-parser.test.js +151 -0
  846. package/dist/frontend/ts7/source-parser.test.js.map +1 -0
  847. package/dist/frontend/ts7/syntax.d.ts +3 -0
  848. package/dist/frontend/ts7/syntax.js +4 -0
  849. package/dist/frontend/ts7/syntax.js.map +1 -0
  850. package/dist/frontend/tsc-codes.js +3 -0
  851. package/dist/frontend/tsc-codes.js.map +1 -1
  852. package/dist/frontend/type-mapper.d.ts +25 -17
  853. package/dist/frontend/type-mapper.js +465 -121
  854. package/dist/frontend/type-mapper.js.map +1 -1
  855. package/dist/frontend/type-mapper.test.js +123 -2
  856. package/dist/frontend/type-mapper.test.js.map +1 -1
  857. package/dist/frontend/union-discriminants.d.ts +16 -0
  858. package/dist/frontend/union-discriminants.js +98 -0
  859. package/dist/frontend/union-discriminants.js.map +1 -0
  860. package/dist/frontend/union-discriminants.test.d.ts +1 -0
  861. package/dist/frontend/union-discriminants.test.js +182 -0
  862. package/dist/frontend/union-discriminants.test.js.map +1 -0
  863. package/dist/index.d.ts +7 -198
  864. package/dist/index.js +369 -1572
  865. package/dist/index.js.map +1 -1
  866. package/dist/ir/analysis.d.ts +16 -4
  867. package/dist/ir/analysis.js +21 -4
  868. package/dist/ir/analysis.js.map +1 -1
  869. package/dist/ir/analysis.test.js +15 -2
  870. package/dist/ir/analysis.test.js.map +1 -1
  871. package/dist/ir/constant-tables.js +67 -49
  872. package/dist/ir/constant-tables.js.map +1 -1
  873. package/dist/ir/constant-tables.test.js +1 -1
  874. package/dist/ir/control-flow.d.ts +6 -0
  875. package/dist/ir/control-flow.js +142 -0
  876. package/dist/ir/control-flow.js.map +1 -0
  877. package/dist/ir/control-flow.test.d.ts +1 -0
  878. package/dist/ir/control-flow.test.js +113 -0
  879. package/dist/ir/control-flow.test.js.map +1 -0
  880. package/dist/ir/integer-loops.js +7 -18
  881. package/dist/ir/integer-loops.js.map +1 -1
  882. package/dist/ir/integer-ranges.js +53 -27
  883. package/dist/ir/integer-ranges.js.map +1 -1
  884. package/dist/ir/ir.d.ts +291 -152
  885. package/dist/ir/ir.js +588 -881
  886. package/dist/ir/ir.js.map +1 -1
  887. package/dist/ir/ir.test.js +127 -1
  888. package/dist/ir/ir.test.js.map +1 -1
  889. package/dist/ir/scalar-records.js +165 -134
  890. package/dist/ir/scalar-records.js.map +1 -1
  891. package/dist/ir/scalar-records.test.js +1 -1
  892. package/dist/ir/serialize.d.ts +4 -2
  893. package/dist/ir/serialize.js +19 -12
  894. package/dist/ir/serialize.js.map +1 -1
  895. package/dist/ir/serialize.test.d.ts +1 -0
  896. package/dist/ir/serialize.test.js +53 -0
  897. package/dist/ir/serialize.test.js.map +1 -0
  898. package/dist/ir/traverse.d.ts +41 -0
  899. package/dist/ir/traverse.js +660 -0
  900. package/dist/ir/traverse.js.map +1 -0
  901. package/dist/ir/traverse.test.d.ts +1 -0
  902. package/dist/ir/traverse.test.js +242 -0
  903. package/dist/ir/traverse.test.js.map +1 -0
  904. package/dist/ir/validate.js +1942 -1491
  905. package/dist/ir/validate.js.map +1 -1
  906. package/dist/ir/validate.test.js +476 -2
  907. package/dist/ir/validate.test.js.map +1 -1
  908. package/dist/library/cache-primitives.d.ts +2 -3
  909. package/dist/library/cache-primitives.js +4 -6
  910. package/dist/library/cache-primitives.js.map +1 -1
  911. package/dist/library/fence-eval.js +2 -2
  912. package/dist/library/fence-eval.js.map +1 -1
  913. package/dist/library/int-infer.js +7 -6
  914. package/dist/library/int-infer.js.map +1 -1
  915. package/dist/library/int-infer.test.js +4 -4
  916. package/dist/library/library-cache.d.ts +3 -2
  917. package/dist/library/library-cache.js +5 -17
  918. package/dist/library/library-cache.js.map +1 -1
  919. package/dist/library/library-cache.test.js +54 -41
  920. package/dist/library/library-cache.test.js.map +1 -1
  921. package/dist/library/library-profile.d.ts +3 -1
  922. package/dist/library/library-profile.js +15 -6
  923. package/dist/library/library-profile.js.map +1 -1
  924. package/dist/library/prepare.d.ts +15 -0
  925. package/dist/library/prepare.js +584 -0
  926. package/dist/library/prepare.js.map +1 -0
  927. package/dist/library/semantic-source.d.ts +1 -1
  928. package/dist/library/semantic-source.js +8 -6
  929. package/dist/library/semantic-source.js.map +1 -1
  930. package/dist/library/sidecar-validate.js +4 -4
  931. package/dist/library/sidecar-validate.js.map +1 -1
  932. package/dist/library/sidecar.d.ts +2 -0
  933. package/dist/library/sidecar.js +10 -3
  934. package/dist/library/sidecar.js.map +1 -1
  935. package/dist/native/cache.d.ts +11 -0
  936. package/dist/native/cache.js +113 -0
  937. package/dist/native/cache.js.map +1 -0
  938. package/dist/native/cache.test.d.ts +1 -0
  939. package/dist/native/cache.test.js +66 -0
  940. package/dist/native/cache.test.js.map +1 -0
  941. package/dist/native/cli.d.ts +1 -0
  942. package/dist/native/cli.js +112 -0
  943. package/dist/native/cli.js.map +1 -0
  944. package/dist/native/compiler.d.ts +15 -0
  945. package/dist/native/compiler.js +336 -0
  946. package/dist/native/compiler.js.map +1 -0
  947. package/dist/native/compiler.test.d.ts +1 -0
  948. package/dist/native/compiler.test.js +174 -0
  949. package/dist/native/compiler.test.js.map +1 -0
  950. package/dist/native/comptime.d.ts +5 -0
  951. package/dist/native/comptime.js +73 -0
  952. package/dist/native/comptime.js.map +1 -0
  953. package/dist/native/comptime.test.d.ts +1 -0
  954. package/dist/native/comptime.test.js +65 -0
  955. package/dist/native/comptime.test.js.map +1 -0
  956. package/dist/native/executable-cache.d.ts +26 -0
  957. package/dist/native/executable-cache.js +228 -0
  958. package/dist/native/executable-cache.js.map +1 -0
  959. package/dist/native/executable-cache.test.d.ts +1 -0
  960. package/dist/native/executable-cache.test.js +151 -0
  961. package/dist/native/executable-cache.test.js.map +1 -0
  962. package/dist/native/file-identity.d.ts +4 -0
  963. package/dist/native/file-identity.js +14 -0
  964. package/dist/native/file-identity.js.map +1 -0
  965. package/dist/native/file-identity.test.d.ts +1 -0
  966. package/dist/native/file-identity.test.js +43 -0
  967. package/dist/native/file-identity.test.js.map +1 -0
  968. package/dist/native/library.d.ts +22 -0
  969. package/dist/native/library.js +83 -0
  970. package/dist/native/library.js.map +1 -0
  971. package/dist/native/prepare.d.ts +21 -0
  972. package/dist/native/prepare.js +174 -0
  973. package/dist/native/prepare.js.map +1 -0
  974. package/dist/native/prepare.test.d.ts +1 -0
  975. package/dist/native/prepare.test.js +70 -0
  976. package/dist/native/prepare.test.js.map +1 -0
  977. package/dist/native/sanitizer.d.ts +11 -0
  978. package/dist/native/sanitizer.js +135 -0
  979. package/dist/native/sanitizer.js.map +1 -0
  980. package/dist/native/sanitizer.test.d.ts +1 -0
  981. package/dist/native/sanitizer.test.js +58 -0
  982. package/dist/native/sanitizer.test.js.map +1 -0
  983. package/dist/native/task.d.ts +4 -0
  984. package/dist/native/task.js +16 -0
  985. package/dist/native/task.js.map +1 -0
  986. package/dist/native/task.test.d.ts +1 -0
  987. package/dist/native/task.test.js +17 -0
  988. package/dist/native/task.test.js.map +1 -0
  989. package/dist/native/toolchain.d.ts +45 -0
  990. package/dist/native/toolchain.js +74 -0
  991. package/dist/native/toolchain.js.map +1 -0
  992. package/dist/native/toolchain.test.d.ts +1 -0
  993. package/dist/native/toolchain.test.js +33 -0
  994. package/dist/native/toolchain.test.js.map +1 -0
  995. package/dist/startup-cache.d.ts +1 -1
  996. package/dist/startup-cache.js +2 -5
  997. package/dist/startup-cache.js.map +1 -1
  998. package/dist/timing.d.ts +4 -0
  999. package/dist/timing.js +19 -0
  1000. package/dist/timing.js.map +1 -0
  1001. package/dist/wasi-paths.js +10 -7
  1002. package/dist/wasi-paths.js.map +1 -1
  1003. package/package.json +28 -19
  1004. package/surface-manifest.json +52 -18
  1005. package/dist/backend/c/async.d.ts +0 -171
  1006. package/dist/backend/c/async.js +0 -1317
  1007. package/dist/backend/c/async.js.map +0 -1
  1008. package/dist/backend/c/c-emitter.d.ts +0 -536
  1009. package/dist/backend/c/c-emitter.js +0 -1932
  1010. package/dist/backend/c/c-emitter.js.map +0 -1
  1011. package/dist/backend/c/exprs.d.ts +0 -15
  1012. package/dist/backend/c/exprs.js +0 -8847
  1013. package/dist/backend/c/exprs.js.map +0 -1
  1014. package/dist/backend/c/island.d.ts +0 -45
  1015. package/dist/backend/c/island.js +0 -281
  1016. package/dist/backend/c/island.js.map +0 -1
  1017. package/dist/backend/c/may-throw.js.map +0 -1
  1018. package/dist/backend/c/shapes.d.ts +0 -142
  1019. package/dist/backend/c/shapes.js +0 -603
  1020. package/dist/backend/c/shapes.js.map +0 -1
  1021. package/dist/backend/c/stmts.d.ts +0 -76
  1022. package/dist/backend/c/stmts.js +0 -1108
  1023. package/dist/backend/c/stmts.js.map +0 -1
  1024. package/dist/backend/c/types.d.ts +0 -71
  1025. package/dist/backend/c/types.js +0 -459
  1026. package/dist/backend/c/types.js.map +0 -1
  1027. package/dist/backend/c/types.test.js +0 -32
  1028. package/dist/backend/c/types.test.js.map +0 -1
  1029. package/dist/backend/c/walkers.d.ts +0 -134
  1030. package/dist/backend/c/walkers.js +0 -1772
  1031. package/dist/backend/c/walkers.js.map +0 -1
  1032. /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
@@ -0,0 +1,806 @@
1
+ /* Node's CommonJS named-export DETECTABILITY test — the compile-time
2
+ * answer to "which names can `import { x } from './cjs.js'` actually
3
+ * link?". Node never executes a CJS module to build its ESM facade: it
4
+ * lexes the source with its vendored CJS lexer (Node v24.15.0 vendors
5
+ * deps/merve, the native `cjs_lexer` binding that replaced the
6
+ * cjs-module-lexer wasm build; the detection patterns are FROZEN by
7
+ * upstream policy) and only the names that lexer detects become named
8
+ * exports. The checker sees the real export table, so it happily binds
9
+ * names the lexer cannot see — `module.exports = { a: 7 }` type-checks a
10
+ * named import of `a` that Node refuses at link time with a SyntaxError.
11
+ * This module mirrors merve's detection so the compiler can answer
12
+ * exactly what Node answers — for the program's own CJS files (program.ts
13
+ * gates the ESM instantiate graph) AND for the --dynamic island's embedded
14
+ * npm modules (npm.ts synthesizes each CJS facade from this lexer, so an
15
+ * embedded named import fails exactly where Node's would).
16
+ *
17
+ * The syntax pass consumes an owned native TypeScript AST. Detection still
18
+ * reads raw source wherever merve's byte quirks demand it; parser semantics
19
+ * never replace Node's export-detectability rules.
20
+ *
21
+ * The port is deliberately quirk-faithful — these all match probed Node
22
+ * v24.15.0 behavior, not what a clean reimplementation would choose:
23
+ * - `module.exports = { ... }` props scan LEFT TO RIGHT and the scan
24
+ * STOPS at the first prop it cannot shape — names added before the
25
+ * stop are kept, everything after is invisible. `{ vis: v, lit: 7 }`
26
+ * exports `vis` only; `{ lit: 7, vis: v }` exports nothing.
27
+ * - A prop VALUE must start with an identifier-ish token (an identifier,
28
+ * keyword, `require(...)` call — anything whose first character is
29
+ * [A-Za-z_$] or non-ASCII). Literals (`7`, `"s"`, backticks, arrows'
30
+ * `(`) stop the scan WITHOUT adding the key.
31
+ * - After an accepted value the lexer consumes ONE identifier run and
32
+ * requires the very next CHARACTER to be `,` or `}` — `a: b, c: d`
33
+ * keeps both, `a: b , c: d` keeps only `a` (the space stops the scan),
34
+ * `a: o.x` / `a: f()` keep `a` and stop.
35
+ * - A `require('spec')` VALUE adds the key, records the spec as a
36
+ * REEXPORT, and stops the scan unconditionally — `{ a: require('x'),
37
+ * b: v }` exports `a` plus x's names, never `b`. Trailing tokens on the
38
+ * require (`.foo`, `()`, `|| y`) change nothing.
39
+ * - `get name() {...}` stops the scan cold (no add); `set name(v) {}`
40
+ * adds the literal name "set" and stops; `async name() {}` adds
41
+ * "async" and stops; a plain method `name() {}` adds `name` and stops.
42
+ * - `exports.NAME = ` / `module.exports.NAME = ` / the ['string'] forms
43
+ * match ANYWHERE in the file — nested functions, dead branches — with
44
+ * no scope analysis, and nothing ever removes a detected name.
45
+ * - `module.exports = require('./x')` records a REEXPORT whenever the
46
+ * require call is the LEADING token of the right-hand side — trailers
47
+ * (`.foo`, `()`, `|| {}`, `? a : b`) are ignored, but a leading `(`
48
+ * breaks the match (`(require('x'))` records nothing). Node resolves
49
+ * each reexport and unions the target's detected names when the target
50
+ * is itself CommonJS. Every `module.exports =` assignment CLEARS the
51
+ * pending reexport list first — including star-pattern reexports
52
+ * recorded earlier — so only reexports at or after the last assignment
53
+ * count, while detected export NAMES accumulate across everything.
54
+ * - `Object.defineProperty(exports, 'n', {...})` adds `n` for the exact
55
+ * descriptor shapes merve accepts: optional leading `enumerable: true`
56
+ * then `value:` (anything), or a getter whose whole body is `return
57
+ * IDENT` / `return IDENT.IDENT` / `return IDENT['str']` and which is
58
+ * the descriptor's last property. Unlike cjs-module-lexer 2.2.0, a
59
+ * NON-matching defineProperty of the same name elsewhere does NOT
60
+ * poison the valid one (probed: Node keeps the export).
61
+ * - The transpiler star-reexport patterns ARE detected (tsc/babel output
62
+ * all over npm depends on them):
63
+ * · `__export(require('x'))` / `__exportStar(require('x'), exports)`
64
+ * — callee is the bare identifier or any member chain ending in
65
+ * one of those two exact names, at TOP LEVEL (brace depth 0 — an
66
+ * unbraced `if (c) __exportStar(...)` still counts, a braced block
67
+ * does not), and the source bytes must read `NAME(require` with NO
68
+ * whitespace or comment between the name, the `(`, and `require`
69
+ * (probed: one space kills the match; spaces anywhere inside the
70
+ * require call are fine).
71
+ * · The Babel copy loop: a top-level `var/const/let ID =
72
+ * [_interopRequireWildcard(]require('x')[)]` (ID the FIRST
73
+ * declarator; `_interopRequireWildcard` bare and byte-adjacent to
74
+ * `(require` like the star form) linked by ID to a top-level
75
+ * `Object.keys(ID).forEach(function (KEY) {...})` whose body is
76
+ * byte-for-byte one of merve's copy shapes: the `if (KEY ===
77
+ * 'default' || KEY === '__esModule') return;` filter (exact order,
78
+ * unbraced return) with optional hasOwnProperty / in-exports
79
+ * guards, or the single `if (KEY !== 'default' [&& !hasOwn]) copy`
80
+ * form; the copy either `EXPORTS[KEY] = ID[KEY]` or the
81
+ * enumerable-getter defineProperty. Named callbacks, arrow
82
+ * callbacks, braced returns, and reordered filters all miss.
83
+ * The reexport's clearing position is the LOOP's, not the var's.
84
+ * NOT modeled: cjs-module-lexer 2.2.0's phantom "get" export for an
85
+ * identifier-named getter in the table (`{ get a() {} }` exports nothing
86
+ * in Node — but `get [k]() {}` / `get "a"() {}` DO export the word "get",
87
+ * because the name token stops the lexer after it took `get` as a
88
+ * shorthand key). */
89
+ import * as ts from "./ts7/syntax.js";
90
+ /** merve's byte classification: [A-Za-z_$] plus every non-ASCII byte. */
91
+ function isIdentStartChar(ch) {
92
+ return /[A-Za-z_$]/.test(ch) || ch.charCodeAt(0) > 127;
93
+ }
94
+ function isIdentChar(ch) {
95
+ return /[A-Za-z0-9_$]/.test(ch) || ch.charCodeAt(0) > 127;
96
+ }
97
+ /** End of the identifier run starting at `pos` (merve consumes maximal
98
+ * identifier characters and nothing else — no member chains, no calls). */
99
+ function identRunEnd(text, pos) {
100
+ let i = pos;
101
+ while (i < text.length && isIdentChar(text[i]))
102
+ i++;
103
+ return i;
104
+ }
105
+ /** True when the node's SOURCE spelling starts like a lexer identifier —
106
+ * a `a`-escaped name parses to the same AST as its plain spelling,
107
+ * but merve reads bytes and stops at the backslash. */
108
+ function sourceSpellsIdentifier(node, sf) {
109
+ const ch = sf.text[node.getStart(sf)];
110
+ return ch !== undefined && isIdentStartChar(ch);
111
+ }
112
+ /** True when the node's WHOLE source span is one identifier run — what
113
+ * merve takes for IDENT. Keywords count (`return this.x` satisfies the
114
+ * defineProperty getter's `return IDENT.IDENT` because `this` lexes as an
115
+ * identifier run — probed), escapes and private names do not. */
116
+ function isIdentTokenNode(node, sf) {
117
+ const start = node.getStart(sf);
118
+ const ch = sf.text[start];
119
+ return ch !== undefined && isIdentStartChar(ch) && identRunEnd(sf.text, start) === node.getEnd();
120
+ }
121
+ /** The identifier run at the node's START — the whole name when its
122
+ * spelling is plain, the byte prefix merve consumed when a unicode escape
123
+ * interrupts the run mid-name. */
124
+ function identPrefixOf(node, sf) {
125
+ const start = node.getStart(sf);
126
+ return sf.text.slice(start, identRunEnd(sf.text, start));
127
+ }
128
+ /** The bare `require('spec')` call merve recognizes. */
129
+ export function bareRequireSpecOf(e) {
130
+ if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
131
+ return null;
132
+ if (!ts.isIdentifier(e.expression) || e.expression.text !== "require")
133
+ return null;
134
+ if (e.arguments.length !== 1)
135
+ return null;
136
+ const arg = e.arguments[0];
137
+ return ts.isStringLiteral(arg) ? arg.text : null;
138
+ }
139
+ /** True when `e` is exactly the `exports` identifier. */
140
+ export function isExportsIdent(e) {
141
+ return ts.isIdentifier(e) && e.text === "exports";
142
+ }
143
+ /** True when `e` is exactly `module.exports`. */
144
+ export function isModuleExports(e) {
145
+ return (ts.isPropertyAccessExpression(e) &&
146
+ e.questionDotToken === undefined &&
147
+ ts.isIdentifier(e.expression) &&
148
+ e.expression.text === "module" &&
149
+ ts.isIdentifier(e.name) &&
150
+ e.name.text === "exports");
151
+ }
152
+ /** The `require(...)` call at the very START of `e`'s source span, if any:
153
+ * merve records the reexport as soon as it lexes `require('spec')` and any
154
+ * TRAILER (`.foo`, `()`, `|| y`, `? a : b`) merely stops whatever scan
155
+ * follows — so the recognizer descends the leftmost-child chain while it
156
+ * still starts where `e` starts. A ParenthesizedExpression breaks the
157
+ * chain naturally (its child starts after the `(`), matching merve. */
158
+ function leadingRequireOf(e, sf) {
159
+ const start = e.getStart(sf);
160
+ let cur = e;
161
+ for (;;) {
162
+ const spec = bareRequireSpecOf(cur);
163
+ if (spec !== null && cur.getStart(sf) === start)
164
+ return { spec, end: cur.getEnd() };
165
+ let first;
166
+ ts.forEachChild(cur, (c) => {
167
+ first ??= c;
168
+ });
169
+ if (first === undefined || first.getStart(sf) !== start)
170
+ return null;
171
+ cur = first;
172
+ }
173
+ }
174
+ /** Skips ECMA whitespace and comments forward from `pos` (merve's
175
+ * commentWhitespace) and answers the next meaningful character (or ""). */
176
+ function nextMeaningfulChar(text, pos) {
177
+ let i = pos;
178
+ while (i < text.length) {
179
+ const ch = text[i];
180
+ if (ch === " " || (ch.charCodeAt(0) > 8 && ch.charCodeAt(0) < 14)) {
181
+ i++;
182
+ }
183
+ else if (ch === "/" && text[i + 1] === "/") {
184
+ const nl = text.indexOf("\n", i + 2);
185
+ if (nl < 0)
186
+ return "";
187
+ i = nl;
188
+ }
189
+ else if (ch === "/" && text[i + 1] === "*") {
190
+ const close = text.indexOf("*/", i + 2);
191
+ if (close < 0)
192
+ return "";
193
+ i = close + 2;
194
+ }
195
+ else {
196
+ return ch;
197
+ }
198
+ }
199
+ return "";
200
+ }
201
+ /** The `module.exports = { ... }` table scan — merve's tryParseLiteralExports
202
+ * over the AST. Adds detected names to `out`, appends reexports (spread /
203
+ * value requires) to `reexports`, stops at the first unshapeable prop. */
204
+ function scanTableLiteral(obj, sf, out, reexports) {
205
+ const text = sf.text;
206
+ for (const prop of obj.properties) {
207
+ if (ts.isGetAccessor(prop)) {
208
+ // `get name() {...}` — merve's explicit early termination... unless
209
+ // the accessor's NAME is not a plain identifier, where the lexer
210
+ // already added the word "get" as a shorthand key before the odd
211
+ // token stops it (`get [k]() {}` exports "get").
212
+ if (!ts.isIdentifier(prop.name) || !sourceSpellsIdentifier(prop.name, sf))
213
+ out.add("get");
214
+ return;
215
+ }
216
+ if (ts.isSetAccessor(prop)) {
217
+ // The word `set` lexes as a shorthand key, then the accessor name
218
+ // stops the scan — Node really does export "set" (value undefined).
219
+ out.add("set");
220
+ return;
221
+ }
222
+ if (ts.isMethodDeclaration(prop)) {
223
+ // `name() {}` adds the name, then `(` stops the scan. The modifier /
224
+ // asterisk spellings shift which token the lexer takes as the key:
225
+ // `async name()` exports "async", `*name()` exports nothing. A
226
+ // unicode escape mid-name adds only the byte prefix before it (the
227
+ // key adds BEFORE the separator check fails — see the key path).
228
+ if (prop.asteriskToken !== undefined)
229
+ return;
230
+ const mods = ts.getModifiers(prop) ?? [];
231
+ if (mods.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
232
+ out.add("async");
233
+ return;
234
+ }
235
+ if (ts.isIdentifier(prop.name) && sourceSpellsIdentifier(prop.name, sf))
236
+ out.add(identPrefixOf(prop.name, sf));
237
+ return;
238
+ }
239
+ if (ts.isShorthandPropertyAssignment(prop)) {
240
+ if (prop.objectAssignmentInitializer !== undefined)
241
+ return; // `{ a = 1 }` — cover pattern, not a table
242
+ if (!ts.isIdentifier(prop.name) || !sourceSpellsIdentifier(prop.name, sf))
243
+ return;
244
+ if (!isIdentTokenNode(prop.name, sf)) {
245
+ // an escape mid-name: the byte prefix adds, then the backslash
246
+ // fails the separator check and stops the scan
247
+ out.add(identPrefixOf(prop.name, sf));
248
+ return;
249
+ }
250
+ out.add(prop.name.text);
251
+ continue; // whitespace before `,` is skipped on the shorthand path
252
+ }
253
+ if (ts.isSpreadAssignment(prop)) {
254
+ const req = leadingRequireOf(prop.expression, sf);
255
+ let consumedEnd;
256
+ if (req !== null) {
257
+ reexports.push(req.spec);
258
+ consumedEnd = req.end;
259
+ }
260
+ else if (sourceSpellsIdentifier(prop.expression, sf)) {
261
+ consumedEnd = identRunEnd(text, prop.expression.getStart(sf));
262
+ }
263
+ else {
264
+ return; // `...{}` and friends stop the scan
265
+ }
266
+ // The spread path DOES skip whitespace/comments before the `,` check
267
+ // — `...o , a: b` continues where `a: b , c` would stop.
268
+ const ch = nextMeaningfulChar(text, consumedEnd);
269
+ if (ch === ",")
270
+ continue;
271
+ return; // `...o.p`, `...f()` — the leftover token stops the scan
272
+ // (a `}` here means the spread was last; stopping is the same)
273
+ }
274
+ if (ts.isPropertyAssignment(prop)) {
275
+ const name = prop.name;
276
+ let key = null;
277
+ if (ts.isIdentifier(name) && sourceSpellsIdentifier(name, sf)) {
278
+ if (!isIdentTokenNode(name, sf)) {
279
+ // merve adds the key BEFORE validating the `:` — an escape
280
+ // mid-name adds the byte prefix, then the backslash stops the
281
+ // scan (probed: the key's prefix exports, nothing after does)
282
+ out.add(identPrefixOf(name, sf));
283
+ return;
284
+ }
285
+ key = name.text;
286
+ }
287
+ else if (ts.isStringLiteral(name)) {
288
+ key = name.text;
289
+ }
290
+ if (key === null)
291
+ return; // numeric / computed / template keys stop the scan
292
+ const value = prop.initializer;
293
+ const req = leadingRequireOf(value, sf);
294
+ if (req !== null) {
295
+ // A require VALUE adds the key, records the reexport, and stops
296
+ // the scan UNCONDITIONALLY — probed: `{ a: require('x'), b: v }`
297
+ // exports `a` plus x's names and never `b` (the spread path above
298
+ // genuinely continues past a `,`; the value path does not).
299
+ out.add(key);
300
+ reexports.push(req.spec);
301
+ return;
302
+ }
303
+ const start = value.getStart(sf);
304
+ const ch0 = text[start];
305
+ if (ch0 === undefined || !isIdentStartChar(ch0))
306
+ return; // literal values stop WITHOUT adding the key
307
+ const consumedEnd = identRunEnd(text, start);
308
+ out.add(key);
309
+ // NO whitespace skip here — merve requires `,` or `}` as the very
310
+ // next character after the consumed value token. `a: b , c` and
311
+ // `a: b.c, d` both keep `a` and stop.
312
+ const ch = text[consumedEnd];
313
+ if (ch === ",")
314
+ continue;
315
+ return; // `}` ends the props anyway; anything else stops the scan
316
+ }
317
+ return; // any other prop kind stops the scan
318
+ }
319
+ }
320
+ /** `Object.defineProperty(exports|module.exports, 'name', {...})` — adds
321
+ * the name for merve's exact descriptor shapes (see the header). */
322
+ function scanDefineProperty(call, sf, out) {
323
+ const callee = call.expression;
324
+ if (!ts.isPropertyAccessExpression(callee) ||
325
+ callee.questionDotToken !== undefined ||
326
+ !ts.isIdentifier(callee.expression) ||
327
+ callee.expression.text !== "Object" ||
328
+ !ts.isIdentifier(callee.name) ||
329
+ callee.name.text !== "defineProperty") {
330
+ return;
331
+ }
332
+ if (call.arguments.length !== 3)
333
+ return;
334
+ const [recv, nameArg, desc] = call.arguments;
335
+ if (!isExportsIdent(recv) && !isModuleExports(recv))
336
+ return;
337
+ if (!ts.isStringLiteral(nameArg))
338
+ return;
339
+ if (!ts.isObjectLiteralExpression(desc))
340
+ return;
341
+ let i = 0;
342
+ const props = desc.properties;
343
+ const first = props[0];
344
+ if (first !== undefined &&
345
+ ts.isPropertyAssignment(first) &&
346
+ ts.isIdentifier(first.name) &&
347
+ first.name.text === "enumerable") {
348
+ // Only the exact `enumerable: true` prefix is consumed; anything else
349
+ // in the slot fails the whole match.
350
+ if (first.initializer.kind !== ts.SyntaxKind.TrueKeyword)
351
+ return;
352
+ i = 1;
353
+ }
354
+ const p = props[i];
355
+ if (p === undefined)
356
+ return;
357
+ if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === "value") {
358
+ out.add(nameArg.text); // merve stops right at `value:` — the value and the rest of the descriptor are unchecked
359
+ return;
360
+ }
361
+ // The getter forms: `get() {...}` method, or `get: function [name]() {...}`
362
+ // (never an arrow), body EXACTLY `return IDENT` / IDENT.IDENT / IDENT['s'],
363
+ // and the getter must be the descriptor's LAST property.
364
+ const body = getterBodyOf(p);
365
+ if (body === undefined || i !== props.length - 1)
366
+ return;
367
+ if (body.statements.length !== 1)
368
+ return;
369
+ const ret = body.statements[0];
370
+ if (!ts.isReturnStatement(ret) || ret.expression === undefined)
371
+ return;
372
+ const r = ret.expression;
373
+ const returnsIdentish = isIdentTokenNode(r, sf) ||
374
+ (ts.isPropertyAccessExpression(r) && r.questionDotToken === undefined && isIdentTokenNode(r.expression, sf) && isIdentTokenNode(r.name, sf)) ||
375
+ (ts.isElementAccessExpression(r) && r.questionDotToken === undefined && isIdentTokenNode(r.expression, sf) && ts.isStringLiteral(r.argumentExpression));
376
+ if (returnsIdentish)
377
+ out.add(nameArg.text);
378
+ }
379
+ /** The body of a `get() {...}` method / `get: function [name]() {...}`
380
+ * descriptor prop (merve's two getter spellings — arrows never match). */
381
+ function getterBodyOf(p) {
382
+ if (ts.isMethodDeclaration(p) &&
383
+ ts.isIdentifier(p.name) &&
384
+ p.name.text === "get" &&
385
+ p.asteriskToken === undefined &&
386
+ (ts.getModifiers(p) ?? []).length === 0 &&
387
+ p.parameters.length === 0) {
388
+ return p.body;
389
+ }
390
+ if (ts.isPropertyAssignment(p) &&
391
+ ts.isIdentifier(p.name) &&
392
+ p.name.text === "get" &&
393
+ ts.isFunctionExpression(p.initializer) &&
394
+ p.initializer.parameters.length === 0 &&
395
+ p.initializer.asteriskToken === undefined &&
396
+ (ts.getModifiers(p.initializer) ?? []).length === 0) {
397
+ return p.initializer.body;
398
+ }
399
+ return undefined;
400
+ }
401
+ /* ── the transpiler star-reexport patterns ─────────────────────────────── */
402
+ /** The star-export call: callee is `__export` or `__exportStar` (bare, or
403
+ * the NAME of any member chain — `tslib_1.__exportStar`, `a.b.__exportStar`)
404
+ * and the first argument leads with `require('spec')`. Byte quirk: the
405
+ * source must read `NAME(require` with no trivia between the name, the
406
+ * `(`, and `require` — one space anywhere in that seam kills the match
407
+ * (probed; spaces INSIDE the require call are fine). */
408
+ function starExportSpecOf(call, sf) {
409
+ if (call.questionDotToken !== undefined)
410
+ return null;
411
+ const callee = call.expression;
412
+ let nameNode;
413
+ if (ts.isIdentifier(callee))
414
+ nameNode = callee;
415
+ else if (ts.isPropertyAccessExpression(callee) && ts.isIdentifier(callee.name))
416
+ nameNode = callee.name;
417
+ if (nameNode === undefined)
418
+ return null;
419
+ if (nameNode.text !== "__export" && nameNode.text !== "__exportStar")
420
+ return null;
421
+ if (!sourceSpellsIdentifier(nameNode, sf))
422
+ return null;
423
+ const arg0 = call.arguments[0];
424
+ if (arg0 === undefined)
425
+ return null;
426
+ if (!byteAdjacentParen(sf, nameNode.getEnd(), arg0.getStart(sf)))
427
+ return null;
428
+ return leadingRequireOf(arg0, sf)?.spec ?? null;
429
+ }
430
+ /** True when the bytes between a callee name ending at `nameEnd` and its
431
+ * first argument starting at `argStart` are exactly `(` — merve's anchored
432
+ * `NAME(require` seam. */
433
+ function byteAdjacentParen(sf, nameEnd, argStart) {
434
+ return argStart === nameEnd + 1 && sf.text[nameEnd] === "(";
435
+ }
436
+ /** The Babel star-copy assignment: a variable statement whose FIRST
437
+ * declarator is `ID = require('spec')` or
438
+ * `ID = _interopRequireWildcard(require('spec'))` (the wildcard helper a
439
+ * bare identifier, byte-adjacent to `(require` like the star form —
440
+ * probed: a member-qualified helper or one space after its paren misses).
441
+ * Answers [ID, spec]. */
442
+ function starAssignOf(stmt, sf) {
443
+ const decl = stmt.declarationList.declarations[0];
444
+ if (decl === undefined || !ts.isIdentifier(decl.name) || !sourceSpellsIdentifier(decl.name, sf))
445
+ return null;
446
+ const init = decl.initializer;
447
+ if (init === undefined)
448
+ return null;
449
+ const direct = bareRequireSpecOf(init);
450
+ if (direct !== null)
451
+ return [decl.name.text, direct];
452
+ if (ts.isCallExpression(init) &&
453
+ init.questionDotToken === undefined &&
454
+ ts.isIdentifier(init.expression) &&
455
+ init.expression.text === "_interopRequireWildcard" &&
456
+ init.arguments.length >= 1) {
457
+ const arg0 = init.arguments[0];
458
+ if (!byteAdjacentParen(sf, init.expression.getEnd(), arg0.getStart(sf)))
459
+ return null;
460
+ const spec = bareRequireSpecOf(arg0);
461
+ if (spec !== null)
462
+ return [decl.name.text, spec];
463
+ }
464
+ return null;
465
+ }
466
+ /** `exports` / `module.exports` — the copy loop accepts either spelling. */
467
+ function isExportsTarget(e) {
468
+ return isExportsIdent(e) || isModuleExports(e);
469
+ }
470
+ /** `X === 'str'` / `X !== 'str'` with X the loop key identifier. */
471
+ function keyStringCompare(e, key, op, str) {
472
+ return (ts.isBinaryExpression(e) &&
473
+ e.operatorToken.kind === op &&
474
+ ts.isIdentifier(e.left) &&
475
+ e.left.text === key &&
476
+ ts.isStringLiteral(e.right) &&
477
+ e.right.text === str);
478
+ }
479
+ /** `Object[.prototype].hasOwnProperty.call(ANY_ID, KEY)` — the guard merve
480
+ * accepts in both loop filter forms. */
481
+ function isHasOwnCall(e, key) {
482
+ if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
483
+ return false;
484
+ const callee = e.expression;
485
+ if (!ts.isPropertyAccessExpression(callee) || !ts.isIdentifier(callee.name) || callee.name.text !== "call")
486
+ return false;
487
+ let cur = callee.expression;
488
+ if (!ts.isPropertyAccessExpression(cur) || !ts.isIdentifier(cur.name) || cur.name.text !== "hasOwnProperty")
489
+ return false;
490
+ cur = cur.expression;
491
+ if (ts.isPropertyAccessExpression(cur) && ts.isIdentifier(cur.name) && cur.name.text === "prototype")
492
+ cur = cur.expression;
493
+ if (!ts.isIdentifier(cur) || cur.text !== "Object")
494
+ return false;
495
+ if (e.arguments.length !== 2)
496
+ return false;
497
+ const [recv, k] = e.arguments;
498
+ return ts.isIdentifier(recv) && ts.isIdentifier(k) && k.text === key;
499
+ }
500
+ /** `ID.hasOwnProperty(KEY)` — form B's alternative hasOwn spelling. */
501
+ function isDirectHasOwnCall(e, key) {
502
+ return (ts.isCallExpression(e) &&
503
+ e.questionDotToken === undefined &&
504
+ ts.isPropertyAccessExpression(e.expression) &&
505
+ ts.isIdentifier(e.expression.name) &&
506
+ e.expression.name.text === "hasOwnProperty" &&
507
+ ts.isIdentifier(e.expression.expression) &&
508
+ e.arguments.length === 1 &&
509
+ ts.isIdentifier(e.arguments[0]) &&
510
+ e.arguments[0].text === key);
511
+ }
512
+ /** The loop-body COPY statement: `EXPORTS[KEY] = ID[KEY];` or the
513
+ * enumerable-getter defineProperty (`Object.defineProperty(EXPORTS, KEY,
514
+ * { enumerable: true, get[: function[name]] () { return ID[KEY]; } })`). */
515
+ function isCopyStatement(stmt, id1, key) {
516
+ if (!ts.isExpressionStatement(stmt))
517
+ return false;
518
+ const e = stmt.expression;
519
+ if (ts.isBinaryExpression(e) && e.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
520
+ return isKeyedAccess(e.left, isExportsTarget, key) && isKeyedAccess(e.right, (x) => ts.isIdentifier(x) && x.text === id1, key);
521
+ }
522
+ if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
523
+ return false;
524
+ const callee = e.expression;
525
+ if (!ts.isPropertyAccessExpression(callee) ||
526
+ !ts.isIdentifier(callee.expression) ||
527
+ callee.expression.text !== "Object" ||
528
+ !ts.isIdentifier(callee.name) ||
529
+ callee.name.text !== "defineProperty") {
530
+ return false;
531
+ }
532
+ if (e.arguments.length !== 3)
533
+ return false;
534
+ const [recv, nameArg, desc] = e.arguments;
535
+ if (!isExportsTarget(recv))
536
+ return false;
537
+ if (!ts.isIdentifier(nameArg) || nameArg.text !== key)
538
+ return false;
539
+ if (!ts.isObjectLiteralExpression(desc) || desc.properties.length !== 2)
540
+ return false;
541
+ const [en, get] = desc.properties;
542
+ if (!ts.isPropertyAssignment(en) || !ts.isIdentifier(en.name) || en.name.text !== "enumerable")
543
+ return false;
544
+ if (en.initializer.kind !== ts.SyntaxKind.TrueKeyword)
545
+ return false;
546
+ const body = getterBodyOf(get);
547
+ if (body === undefined || body.statements.length !== 1)
548
+ return false;
549
+ const ret = body.statements[0];
550
+ if (!ts.isReturnStatement(ret) || ret.expression === undefined)
551
+ return false;
552
+ return isKeyedAccess(ret.expression, (x) => ts.isIdentifier(x) && x.text === id1, key);
553
+ }
554
+ /** `RECV[KEY]` where `recvOk` approves the receiver. */
555
+ function isKeyedAccess(e, recvOk, key) {
556
+ return (ts.isElementAccessExpression(e) &&
557
+ e.questionDotToken === undefined &&
558
+ recvOk(e.expression) &&
559
+ ts.isIdentifier(e.argumentExpression) &&
560
+ e.argumentExpression.text === key);
561
+ }
562
+ /** An UNBRACED bare `return;` — merve reads the literal `return` token
563
+ * right after the filter's `)`; a `{ return; }` block misses (probed). */
564
+ function isBareReturn(stmt) {
565
+ return ts.isReturnStatement(stmt) && stmt.expression === undefined;
566
+ }
567
+ /** The Babel copy loop `Object.keys(ID1).forEach(function (KEY) {...})` —
568
+ * answers ID1 when the whole shape matches merve's EXPORT_STAR_LIB
569
+ * grammar; the caller links ID1 to a star assignment for the spec. */
570
+ function starLoopIdOf(call, sf) {
571
+ if (call.questionDotToken !== undefined)
572
+ return null;
573
+ const callee = call.expression;
574
+ if (!ts.isPropertyAccessExpression(callee) || callee.questionDotToken !== undefined)
575
+ return null;
576
+ if (!ts.isIdentifier(callee.name) || callee.name.text !== "forEach")
577
+ return null;
578
+ const keysCall = callee.expression;
579
+ if (!ts.isCallExpression(keysCall) || keysCall.questionDotToken !== undefined)
580
+ return null;
581
+ const keysCallee = keysCall.expression;
582
+ if (!ts.isPropertyAccessExpression(keysCallee) ||
583
+ !ts.isIdentifier(keysCallee.expression) ||
584
+ keysCallee.expression.text !== "Object" ||
585
+ !ts.isIdentifier(keysCallee.name) ||
586
+ keysCallee.name.text !== "keys") {
587
+ return null;
588
+ }
589
+ if (keysCall.arguments.length !== 1)
590
+ return null;
591
+ const id1Node = keysCall.arguments[0];
592
+ if (!ts.isIdentifier(id1Node) || !sourceSpellsIdentifier(id1Node, sf))
593
+ return null;
594
+ const id1 = id1Node.text;
595
+ const fn = call.arguments[0];
596
+ if (fn === undefined || !ts.isFunctionExpression(fn))
597
+ return null; // arrows never match (probed)
598
+ if (fn.name !== undefined)
599
+ return null; // a NAMED callback misses (probed)
600
+ if (fn.asteriskToken !== undefined || (ts.getModifiers(fn) ?? []).length > 0)
601
+ return null;
602
+ if (fn.parameters.length !== 1)
603
+ return null;
604
+ const keyParam = fn.parameters[0];
605
+ if (!ts.isIdentifier(keyParam.name) || keyParam.initializer !== undefined || keyParam.dotDotDotToken !== undefined)
606
+ return null;
607
+ const key = keyParam.name.text;
608
+ const stmts = fn.body.statements;
609
+ // Form B: the single `if (KEY !== 'default' [&& !hasOwn]) COPY` statement.
610
+ if (stmts.length === 1 && ts.isIfStatement(stmts[0]) && stmts[0].elseStatement === undefined) {
611
+ const ifStmt = stmts[0];
612
+ let cond = ifStmt.expression;
613
+ if (ts.isBinaryExpression(cond) && cond.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
614
+ const right = cond.right;
615
+ if (!ts.isPrefixUnaryExpression(right) ||
616
+ right.operator !== ts.SyntaxKind.ExclamationToken ||
617
+ !(isHasOwnCall(right.operand, key) || isDirectHasOwnCall(right.operand, key))) {
618
+ return null;
619
+ }
620
+ cond = cond.left;
621
+ }
622
+ if (!keyStringCompare(cond, key, ts.SyntaxKind.ExclamationEqualsEqualsToken, "default"))
623
+ return null;
624
+ return isCopyStatement(ifStmt.thenStatement, id1, key) ? id1 : null;
625
+ }
626
+ // Form A: `if (KEY === 'default' || KEY === '__esModule') return;` (exact
627
+ // order), then optional hasOwn / in-exports guards, then the copy.
628
+ if (stmts.length < 2 || stmts.length > 4)
629
+ return null;
630
+ const head = stmts[0];
631
+ if (!ts.isIfStatement(head) || head.elseStatement !== undefined || !isBareReturn(head.thenStatement))
632
+ return null;
633
+ const headCond = head.expression;
634
+ if (!ts.isBinaryExpression(headCond) ||
635
+ headCond.operatorToken.kind !== ts.SyntaxKind.BarBarToken ||
636
+ !keyStringCompare(headCond.left, key, ts.SyntaxKind.EqualsEqualsEqualsToken, "default") ||
637
+ !keyStringCompare(headCond.right, key, ts.SyntaxKind.EqualsEqualsEqualsToken, "__esModule")) {
638
+ return null;
639
+ }
640
+ let i = 1;
641
+ if (i < stmts.length - 1) {
642
+ const s = stmts[i];
643
+ if (ts.isIfStatement(s) && s.elseStatement === undefined && isBareReturn(s.thenStatement) && isHasOwnCall(s.expression, key))
644
+ i++;
645
+ }
646
+ if (i < stmts.length - 1) {
647
+ // `if (KEY in EXPORTS && EXPORTS[KEY] === ID1[KEY]) return;`
648
+ const s = stmts[i];
649
+ if (ts.isIfStatement(s) && s.elseStatement === undefined && isBareReturn(s.thenStatement)) {
650
+ const c = s.expression;
651
+ const inOk = ts.isBinaryExpression(c) &&
652
+ c.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken &&
653
+ ts.isBinaryExpression(c.left) &&
654
+ c.left.operatorToken.kind === ts.SyntaxKind.InKeyword &&
655
+ ts.isIdentifier(c.left.left) &&
656
+ c.left.left.text === key &&
657
+ isExportsTarget(c.left.right) &&
658
+ ts.isBinaryExpression(c.right) &&
659
+ c.right.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken &&
660
+ isKeyedAccess(c.right.left, isExportsTarget, key) &&
661
+ isKeyedAccess(c.right.right, (x) => ts.isIdentifier(x) && x.text === id1, key);
662
+ if (inOk)
663
+ i++;
664
+ }
665
+ }
666
+ if (i !== stmts.length - 1)
667
+ return null;
668
+ return isCopyStatement(stmts[i], id1, key) ? id1 : null;
669
+ }
670
+ /* ── the walk ──────────────────────────────────────────────────────────── */
671
+ /** Node kinds whose CHILDREN sit behind a `{` (or `${`) — merve's
672
+ * "top-level" for the star patterns is brace depth 0, so an unbraced
673
+ * `if (c) __exportStar(...)` still counts while any block hides it. */
674
+ function opensBraces(n) {
675
+ switch (n.kind) {
676
+ case ts.SyntaxKind.Block:
677
+ case ts.SyntaxKind.ModuleBlock:
678
+ case ts.SyntaxKind.CaseBlock:
679
+ case ts.SyntaxKind.ObjectLiteralExpression:
680
+ case ts.SyntaxKind.ObjectBindingPattern:
681
+ case ts.SyntaxKind.ClassDeclaration:
682
+ case ts.SyntaxKind.ClassExpression:
683
+ case ts.SyntaxKind.EnumDeclaration:
684
+ case ts.SyntaxKind.TemplateSpan:
685
+ return true;
686
+ default:
687
+ return false;
688
+ }
689
+ }
690
+ /** Preorder walk with an EXPLICIT stack (minified npm bundles nest deeply
691
+ * enough to overflow recursive visits) carrying each node's brace depth. */
692
+ function walkWithBraceDepth(sf, cb) {
693
+ const stack = [[sf, 0]];
694
+ const children = [];
695
+ while (stack.length > 0) {
696
+ const [n, depth] = stack.pop();
697
+ cb(n, depth);
698
+ const childDepth = depth + (opensBraces(n) ? 1 : 0);
699
+ children.length = 0;
700
+ ts.forEachChild(n, (c) => {
701
+ children.push(c);
702
+ });
703
+ for (let i = children.length - 1; i >= 0; i--)
704
+ stack.push([children[i], childDepth]);
705
+ }
706
+ }
707
+ /** The single-file lex over SOURCE TEXT: every detection site, position-
708
+ * blind like the real lexer for the assignment forms (nested functions and
709
+ * dead branches count), brace-depth-0 for the star patterns. */
710
+ export function cjsLexedExportsOfFile(sf) {
711
+ const exports = new Set();
712
+ const events = [];
713
+ /** Star-assignment declarators by identifier — the Babel loop's linkage. */
714
+ const starAssigns = new Map();
715
+ walkWithBraceDepth(sf, (n, braceDepth) => {
716
+ if (ts.isBinaryExpression(n) && n.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
717
+ const lhs = n.left;
718
+ if (ts.isPropertyAccessExpression(lhs) &&
719
+ lhs.questionDotToken === undefined &&
720
+ ts.isIdentifier(lhs.name) &&
721
+ (isExportsIdent(lhs.expression) || isModuleExports(lhs.expression)) &&
722
+ // the whole NAME must be one identifier run — a unicode escape
723
+ // mid-name breaks merve's run before the `=`, so the pattern
724
+ // never matches (probed: Node detects nothing)
725
+ isIdentTokenNode(lhs.name, sf)) {
726
+ exports.add(lhs.name.text);
727
+ }
728
+ else if (ts.isElementAccessExpression(lhs) &&
729
+ lhs.questionDotToken === undefined &&
730
+ ts.isStringLiteral(lhs.argumentExpression) &&
731
+ (isExportsIdent(lhs.expression) || isModuleExports(lhs.expression))) {
732
+ exports.add(lhs.argumentExpression.text);
733
+ }
734
+ else if (isModuleExports(lhs)) {
735
+ events.push({ pos: n.getStart(sf), kind: "assign", rhs: n.right });
736
+ }
737
+ }
738
+ else if (ts.isCallExpression(n)) {
739
+ scanDefineProperty(n, sf, exports);
740
+ if (braceDepth === 0) {
741
+ const starSpec = starExportSpecOf(n, sf);
742
+ if (starSpec !== null)
743
+ events.push({ pos: n.getStart(sf), kind: "spec", spec: starSpec });
744
+ const loopId = starLoopIdOf(n, sf);
745
+ if (loopId !== null)
746
+ events.push({ pos: n.getStart(sf), kind: "loop", id1: loopId });
747
+ }
748
+ }
749
+ else if (ts.isVariableStatement(n) && braceDepth === 0) {
750
+ const assign = starAssignOf(n, sf);
751
+ if (assign !== null) {
752
+ const specs = starAssigns.get(assign[0]);
753
+ if (specs === undefined)
754
+ starAssigns.set(assign[0], [assign[1]]);
755
+ else
756
+ specs.push(assign[1]);
757
+ }
758
+ }
759
+ });
760
+ events.sort((a, b) => a.pos - b.pos);
761
+ let reexports = [];
762
+ for (const ev of events) {
763
+ if (ev.kind === "spec") {
764
+ reexports.push(ev.spec);
765
+ }
766
+ else if (ev.kind === "loop") {
767
+ for (const spec of starAssigns.get(ev.id1) ?? [])
768
+ reexports.push(spec);
769
+ }
770
+ else {
771
+ reexports = []; // every `module.exports =` clears — stars included (probed)
772
+ const req = leadingRequireOf(ev.rhs, sf);
773
+ if (req !== null) {
774
+ reexports.push(req.spec);
775
+ }
776
+ else if (ts.isObjectLiteralExpression(ev.rhs)) {
777
+ // A PARENTHESIZED literal never matches — merve needs the `{` right
778
+ // after the `=` — so no unwrapping here (unlike the checker's view).
779
+ scanTableLiteral(ev.rhs, sf, exports, reexports);
780
+ }
781
+ }
782
+ }
783
+ return { exports, reexports };
784
+ }
785
+ /** The full Node-visible named-export set of a CommonJS module: its own
786
+ * lexed names plus, recursively, the names of every reexport target that
787
+ * itself resolves to a CommonJS module (Node's cjsPreparseModuleExports —
788
+ * ESM / JSON / builtin / unresolved targets contribute nothing). Generic
789
+ * over the caller's module handle and parser service.
790
+ * Cycle-safe. */
791
+ export function cjsVisibleNames(mod, lex, resolveCjsDep, memo = new Map()) {
792
+ const hit = memo.get(mod);
793
+ if (hit !== undefined)
794
+ return hit;
795
+ const { exports, reexports } = lex(mod);
796
+ memo.set(mod, exports); // set BEFORE recursing, like Node — cycles converge
797
+ for (const spec of reexports) {
798
+ const dep = resolveCjsDep(mod, spec);
799
+ if (dep === null)
800
+ continue;
801
+ for (const name of cjsVisibleNames(dep, lex, resolveCjsDep, memo))
802
+ exports.add(name);
803
+ }
804
+ return exports;
805
+ }
806
+ //# sourceMappingURL=cjs-syntax.js.map