@scriptc/compiler 0.1.7 → 0.2.1

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