@hyperfrontend/builder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/FUNDING.md +141 -0
  3. package/LICENSE.md +21 -0
  4. package/README.md +162 -0
  5. package/SECURITY.md +82 -0
  6. package/THIRD_PARTY_LICENSES.md +13 -0
  7. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.cjs.js +7 -0
  8. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.esm.js +5 -0
  9. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.cjs.js +13 -0
  10. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.esm.js +8 -0
  11. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/date/index.cjs.js +5 -0
  12. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/date/index.esm.js +4 -0
  13. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/encoding/index.cjs.js +1 -0
  14. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/encoding/index.esm.js +1 -0
  15. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.cjs.js +6 -0
  16. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.esm.js +5 -0
  17. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/function/index.cjs.js +1 -0
  18. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/function/index.esm.js +1 -0
  19. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.cjs.js +7 -0
  20. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.esm.js +5 -0
  21. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/map/index.cjs.js +6 -0
  22. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/map/index.esm.js +5 -0
  23. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/math/index.cjs.js +7 -0
  24. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/math/index.esm.js +5 -0
  25. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/messaging/index.cjs.js +1 -0
  26. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/messaging/index.esm.js +1 -0
  27. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/number/index.cjs.js +1 -0
  28. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/number/index.esm.js +1 -0
  29. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.cjs.js +13 -0
  30. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.esm.js +8 -0
  31. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js +6 -0
  32. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js +5 -0
  33. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.cjs.js +1 -0
  34. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.esm.js +1 -0
  35. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/regexp/index.cjs.js +6 -0
  36. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/regexp/index.esm.js +5 -0
  37. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.cjs.js +6 -0
  38. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.esm.js +5 -0
  39. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/string/index.cjs.js +1 -0
  40. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/string/index.esm.js +1 -0
  41. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/symbol/index.cjs.js +1 -0
  42. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/symbol/index.esm.js +1 -0
  43. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js +13 -0
  44. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js +10 -0
  45. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.cjs.js +1 -0
  46. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.esm.js +1 -0
  47. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/url/index.cjs.js +6 -0
  48. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/url/index.esm.js +5 -0
  49. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/weak-map/index.cjs.js +1 -0
  50. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/weak-map/index.esm.js +1 -0
  51. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/weak-set/index.cjs.js +1 -0
  52. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/weak-set/index.esm.js +1 -0
  53. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/websocket/index.cjs.js +1 -0
  54. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/websocket/index.esm.js +1 -0
  55. package/_dependencies/@hyperfrontend/immutable-api-utils/index.cjs.js +1 -0
  56. package/_dependencies/@hyperfrontend/immutable-api-utils/index.esm.js +1 -0
  57. package/_dependencies/@hyperfrontend/immutable-api-utils/locked/index.cjs.js +1 -0
  58. package/_dependencies/@hyperfrontend/immutable-api-utils/locked/index.esm.js +1 -0
  59. package/_dependencies/@hyperfrontend/immutable-api-utils/locked-prop-descriptors/index.cjs.js +1 -0
  60. package/_dependencies/@hyperfrontend/immutable-api-utils/locked-prop-descriptors/index.esm.js +1 -0
  61. package/_dependencies/@hyperfrontend/immutable-api-utils/locked-props/index.cjs.js +1 -0
  62. package/_dependencies/@hyperfrontend/immutable-api-utils/locked-props/index.esm.js +1 -0
  63. package/_dependencies/@hyperfrontend/logging/index.cjs.js +191 -0
  64. package/_dependencies/@hyperfrontend/logging/index.esm.js +186 -0
  65. package/_dependencies/@hyperfrontend/project-scope/cli/index.cjs.js +196 -0
  66. package/_dependencies/@hyperfrontend/project-scope/cli/index.esm.js +196 -0
  67. package/_dependencies/@hyperfrontend/project-scope/core/encoding/index.cjs.js +82 -0
  68. package/_dependencies/@hyperfrontend/project-scope/core/encoding/index.esm.js +82 -0
  69. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.cjs.js +154 -0
  70. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.esm.js +149 -0
  71. package/_dependencies/@hyperfrontend/project-scope/core/index.cjs.js +459 -0
  72. package/_dependencies/@hyperfrontend/project-scope/core/index.esm.js +440 -0
  73. package/_dependencies/@hyperfrontend/project-scope/core/logger/index.cjs.js +84 -0
  74. package/_dependencies/@hyperfrontend/project-scope/core/logger/index.esm.js +80 -0
  75. package/_dependencies/@hyperfrontend/project-scope/core/path/index.cjs.js +26 -0
  76. package/_dependencies/@hyperfrontend/project-scope/core/path/index.esm.js +22 -0
  77. package/_dependencies/@hyperfrontend/project-scope/core/platform/index.cjs.js +1 -0
  78. package/_dependencies/@hyperfrontend/project-scope/core/platform/index.esm.js +1 -0
  79. package/_dependencies/@hyperfrontend/project-scope/heuristics/dependencies/index.cjs.js +90 -0
  80. package/_dependencies/@hyperfrontend/project-scope/heuristics/dependencies/index.esm.js +90 -0
  81. package/_dependencies/@hyperfrontend/project-scope/heuristics/entry-points/index.cjs.js +174 -0
  82. package/_dependencies/@hyperfrontend/project-scope/heuristics/entry-points/index.esm.js +174 -0
  83. package/_dependencies/@hyperfrontend/project-scope/heuristics/framework/index.cjs.js +174 -0
  84. package/_dependencies/@hyperfrontend/project-scope/heuristics/framework/index.esm.js +172 -0
  85. package/_dependencies/@hyperfrontend/project-scope/heuristics/index.cjs.js +184 -0
  86. package/_dependencies/@hyperfrontend/project-scope/heuristics/index.esm.js +184 -0
  87. package/_dependencies/@hyperfrontend/project-scope/heuristics/project-type/index.cjs.js +172 -0
  88. package/_dependencies/@hyperfrontend/project-scope/heuristics/project-type/index.esm.js +172 -0
  89. package/_dependencies/@hyperfrontend/project-scope/index.cjs.js +222 -0
  90. package/_dependencies/@hyperfrontend/project-scope/index.esm.js +219 -0
  91. package/_dependencies/@hyperfrontend/project-scope/models/index.cjs.js +2 -0
  92. package/_dependencies/@hyperfrontend/project-scope/models/index.esm.js +1 -0
  93. package/_dependencies/@hyperfrontend/project-scope/nx/index.cjs.js +94 -0
  94. package/_dependencies/@hyperfrontend/project-scope/nx/index.esm.js +94 -0
  95. package/_dependencies/@hyperfrontend/project-scope/project/config/index.cjs.js +172 -0
  96. package/_dependencies/@hyperfrontend/project-scope/project/config/index.esm.js +172 -0
  97. package/_dependencies/@hyperfrontend/project-scope/project/index.cjs.js +176 -0
  98. package/_dependencies/@hyperfrontend/project-scope/project/index.esm.js +176 -0
  99. package/_dependencies/@hyperfrontend/project-scope/project/package/index.cjs.js +88 -0
  100. package/_dependencies/@hyperfrontend/project-scope/project/package/index.esm.js +88 -0
  101. package/_dependencies/@hyperfrontend/project-scope/project/root/index.cjs.js +154 -0
  102. package/_dependencies/@hyperfrontend/project-scope/project/root/index.esm.js +153 -0
  103. package/_dependencies/@hyperfrontend/project-scope/project/traversal/index.cjs.js +91 -0
  104. package/_dependencies/@hyperfrontend/project-scope/project/traversal/index.esm.js +89 -0
  105. package/_dependencies/@hyperfrontend/project-scope/tech/backend/index.cjs.js +88 -0
  106. package/_dependencies/@hyperfrontend/project-scope/tech/backend/index.esm.js +88 -0
  107. package/_dependencies/@hyperfrontend/project-scope/tech/build/index.cjs.js +88 -0
  108. package/_dependencies/@hyperfrontend/project-scope/tech/build/index.esm.js +88 -0
  109. package/_dependencies/@hyperfrontend/project-scope/tech/frontend/index.cjs.js +88 -0
  110. package/_dependencies/@hyperfrontend/project-scope/tech/frontend/index.esm.js +88 -0
  111. package/_dependencies/@hyperfrontend/project-scope/tech/index.cjs.js +171 -0
  112. package/_dependencies/@hyperfrontend/project-scope/tech/index.esm.js +169 -0
  113. package/_dependencies/@hyperfrontend/project-scope/tech/legacy/index.cjs.js +88 -0
  114. package/_dependencies/@hyperfrontend/project-scope/tech/legacy/index.esm.js +88 -0
  115. package/_dependencies/@hyperfrontend/project-scope/tech/linting/index.cjs.js +88 -0
  116. package/_dependencies/@hyperfrontend/project-scope/tech/linting/index.esm.js +88 -0
  117. package/_dependencies/@hyperfrontend/project-scope/tech/monorepo/index.cjs.js +88 -0
  118. package/_dependencies/@hyperfrontend/project-scope/tech/monorepo/index.esm.js +88 -0
  119. package/_dependencies/@hyperfrontend/project-scope/tech/testing/index.cjs.js +88 -0
  120. package/_dependencies/@hyperfrontend/project-scope/tech/testing/index.esm.js +88 -0
  121. package/_dependencies/@hyperfrontend/project-scope/tech/types/index.cjs.js +88 -0
  122. package/_dependencies/@hyperfrontend/project-scope/tech/types/index.esm.js +88 -0
  123. package/_dependencies/@hyperfrontend/project-scope/vfs/index.cjs.js +102 -0
  124. package/_dependencies/@hyperfrontend/project-scope/vfs/index.esm.js +102 -0
  125. package/_dependencies/@hyperfrontend/versioning/changelog/compare/index.cjs.js +1 -0
  126. package/_dependencies/@hyperfrontend/versioning/changelog/compare/index.esm.js +1 -0
  127. package/_dependencies/@hyperfrontend/versioning/changelog/index.cjs.js +1 -0
  128. package/_dependencies/@hyperfrontend/versioning/changelog/index.esm.js +1 -0
  129. package/_dependencies/@hyperfrontend/versioning/changelog/models/index.cjs.js +1 -0
  130. package/_dependencies/@hyperfrontend/versioning/changelog/models/index.esm.js +1 -0
  131. package/_dependencies/@hyperfrontend/versioning/changelog/operations/index.cjs.js +1 -0
  132. package/_dependencies/@hyperfrontend/versioning/changelog/operations/index.esm.js +1 -0
  133. package/_dependencies/@hyperfrontend/versioning/changelog/parse/index.cjs.js +1 -0
  134. package/_dependencies/@hyperfrontend/versioning/changelog/parse/index.esm.js +1 -0
  135. package/_dependencies/@hyperfrontend/versioning/changelog/serialize/index.cjs.js +1 -0
  136. package/_dependencies/@hyperfrontend/versioning/changelog/serialize/index.esm.js +1 -0
  137. package/_dependencies/@hyperfrontend/versioning/commits/author/index.cjs.js +2403 -0
  138. package/_dependencies/@hyperfrontend/versioning/commits/author/index.esm.js +2381 -0
  139. package/_dependencies/@hyperfrontend/versioning/commits/classify/index.cjs.js +38 -0
  140. package/_dependencies/@hyperfrontend/versioning/commits/classify/index.esm.js +30 -0
  141. package/_dependencies/@hyperfrontend/versioning/commits/format/index.cjs.js +1 -0
  142. package/_dependencies/@hyperfrontend/versioning/commits/format/index.esm.js +1 -0
  143. package/_dependencies/@hyperfrontend/versioning/commits/index.cjs.js +2457 -0
  144. package/_dependencies/@hyperfrontend/versioning/commits/index.esm.js +2407 -0
  145. package/_dependencies/@hyperfrontend/versioning/commits/models/index.cjs.js +1 -0
  146. package/_dependencies/@hyperfrontend/versioning/commits/models/index.esm.js +1 -0
  147. package/_dependencies/@hyperfrontend/versioning/commits/parse/index.cjs.js +1 -0
  148. package/_dependencies/@hyperfrontend/versioning/commits/parse/index.esm.js +1 -0
  149. package/_dependencies/@hyperfrontend/versioning/commits/validate/index.cjs.js +27 -0
  150. package/_dependencies/@hyperfrontend/versioning/commits/validate/index.esm.js +25 -0
  151. package/_dependencies/@hyperfrontend/versioning/flow/executor/index.cjs.js +36 -0
  152. package/_dependencies/@hyperfrontend/versioning/flow/executor/index.esm.js +36 -0
  153. package/_dependencies/@hyperfrontend/versioning/flow/index.cjs.js +51 -0
  154. package/_dependencies/@hyperfrontend/versioning/flow/index.esm.js +51 -0
  155. package/_dependencies/@hyperfrontend/versioning/flow/models/index.cjs.js +30 -0
  156. package/_dependencies/@hyperfrontend/versioning/flow/models/index.esm.js +28 -0
  157. package/_dependencies/@hyperfrontend/versioning/flow/presets/index.cjs.js +47 -0
  158. package/_dependencies/@hyperfrontend/versioning/flow/presets/index.esm.js +45 -0
  159. package/_dependencies/@hyperfrontend/versioning/flow/steps/index.cjs.js +47 -0
  160. package/_dependencies/@hyperfrontend/versioning/flow/steps/index.esm.js +45 -0
  161. package/_dependencies/@hyperfrontend/versioning/git/index.cjs.js +8 -0
  162. package/_dependencies/@hyperfrontend/versioning/git/index.esm.js +9 -0
  163. package/_dependencies/@hyperfrontend/versioning/git/models/index.cjs.js +1 -0
  164. package/_dependencies/@hyperfrontend/versioning/git/models/index.esm.js +1 -0
  165. package/_dependencies/@hyperfrontend/versioning/git/operations/index.cjs.js +3 -0
  166. package/_dependencies/@hyperfrontend/versioning/git/operations/index.esm.js +3 -0
  167. package/_dependencies/@hyperfrontend/versioning/index.cjs.js +2481 -0
  168. package/_dependencies/@hyperfrontend/versioning/index.esm.js +2423 -0
  169. package/_dependencies/@hyperfrontend/versioning/registry/index.cjs.js +1 -0
  170. package/_dependencies/@hyperfrontend/versioning/registry/index.esm.js +1 -0
  171. package/_dependencies/@hyperfrontend/versioning/registry/models/index.cjs.js +1 -0
  172. package/_dependencies/@hyperfrontend/versioning/registry/models/index.esm.js +1 -0
  173. package/_dependencies/@hyperfrontend/versioning/registry/npm/index.cjs.js +1 -0
  174. package/_dependencies/@hyperfrontend/versioning/registry/npm/index.esm.js +1 -0
  175. package/_dependencies/@hyperfrontend/versioning/repository/index.cjs.js +18 -0
  176. package/_dependencies/@hyperfrontend/versioning/repository/index.esm.js +17 -0
  177. package/_dependencies/@hyperfrontend/versioning/repository/models/index.cjs.js +11 -0
  178. package/_dependencies/@hyperfrontend/versioning/repository/models/index.esm.js +10 -0
  179. package/_dependencies/@hyperfrontend/versioning/repository/parse/index.cjs.js +184 -0
  180. package/_dependencies/@hyperfrontend/versioning/repository/parse/index.esm.js +185 -0
  181. package/_dependencies/@hyperfrontend/versioning/repository/url/index.cjs.js +10 -0
  182. package/_dependencies/@hyperfrontend/versioning/repository/url/index.esm.js +8 -0
  183. package/_dependencies/@hyperfrontend/versioning/semver/compare/index.cjs.js +1 -0
  184. package/_dependencies/@hyperfrontend/versioning/semver/compare/index.esm.js +1 -0
  185. package/_dependencies/@hyperfrontend/versioning/semver/format/index.cjs.js +1 -0
  186. package/_dependencies/@hyperfrontend/versioning/semver/format/index.esm.js +1 -0
  187. package/_dependencies/@hyperfrontend/versioning/semver/increment/index.cjs.js +1 -0
  188. package/_dependencies/@hyperfrontend/versioning/semver/increment/index.esm.js +1 -0
  189. package/_dependencies/@hyperfrontend/versioning/semver/index.cjs.js +1 -0
  190. package/_dependencies/@hyperfrontend/versioning/semver/index.esm.js +1 -0
  191. package/_dependencies/@hyperfrontend/versioning/semver/models/index.cjs.js +1 -0
  192. package/_dependencies/@hyperfrontend/versioning/semver/models/index.esm.js +1 -0
  193. package/_dependencies/@hyperfrontend/versioning/semver/parse/index.cjs.js +1 -0
  194. package/_dependencies/@hyperfrontend/versioning/semver/parse/index.esm.js +1 -0
  195. package/_dependencies/@hyperfrontend/versioning/workspace/discovery/index.cjs.js +29 -0
  196. package/_dependencies/@hyperfrontend/versioning/workspace/discovery/index.esm.js +29 -0
  197. package/_dependencies/@hyperfrontend/versioning/workspace/index.cjs.js +29 -0
  198. package/_dependencies/@hyperfrontend/versioning/workspace/index.esm.js +29 -0
  199. package/_dependencies/@hyperfrontend/versioning/workspace/models/index.cjs.js +1 -0
  200. package/_dependencies/@hyperfrontend/versioning/workspace/models/index.esm.js +1 -0
  201. package/_dependencies/@hyperfrontend/versioning/workspace/operations/index.cjs.js +2 -0
  202. package/_dependencies/@hyperfrontend/versioning/workspace/operations/index.esm.js +2 -0
  203. package/_dependencies/@rollup/plugin-commonjs/index.cjs.js +6629 -0
  204. package/_dependencies/@rollup/plugin-commonjs/index.esm.js +6608 -0
  205. package/_dependencies/@rollup/plugin-json/index.cjs.js +2324 -0
  206. package/_dependencies/@rollup/plugin-json/index.esm.js +2322 -0
  207. package/_dependencies/@rollup/plugin-node-resolve/index.cjs.js +5430 -0
  208. package/_dependencies/@rollup/plugin-node-resolve/index.esm.js +5424 -0
  209. package/_dependencies/@rollup/plugin-terser/index.cjs.js +33220 -0
  210. package/_dependencies/@rollup/plugin-terser/index.esm.js +33217 -0
  211. package/_dependencies/@rollup/plugin-typescript/index.cjs.js +4840 -0
  212. package/_dependencies/@rollup/plugin-typescript/index.esm.js +4819 -0
  213. package/_dependencies/postject/index.cjs.js +5140 -0
  214. package/_dependencies/postject/index.esm.js +5131 -0
  215. package/_dependencies/rollup/index.cjs.js +24668 -0
  216. package/_dependencies/rollup/index.d.ts +1921 -0
  217. package/_dependencies/rollup/index.esm.js +24652 -0
  218. package/_dependencies/rollup-plugin-dts/index.cjs.js +6547 -0
  219. package/_dependencies/rollup-plugin-dts/index.esm.js +6537 -0
  220. package/_shared/bin/format/index.cjs.js +7 -0
  221. package/_shared/bin/format/index.esm.js +5 -0
  222. package/_shared/bin/native/codesign/index.cjs.js +30 -0
  223. package/_shared/bin/native/codesign/index.esm.js +26 -0
  224. package/_shared/bin/native/host-binary/index.cjs.js +13 -0
  225. package/_shared/bin/native/host-binary/index.esm.js +11 -0
  226. package/_shared/bin/native/inject/index.cjs.js +25 -0
  227. package/_shared/bin/native/inject/index.esm.js +18 -0
  228. package/_shared/bin/native/platform-check/index.cjs.js +13 -0
  229. package/_shared/bin/native/platform-check/index.esm.js +10 -0
  230. package/_shared/bin/native/sea-blob/index.cjs.js +21 -0
  231. package/_shared/bin/native/sea-blob/index.esm.js +19 -0
  232. package/_shared/bin/native/sea-config/index.cjs.js +9 -0
  233. package/_shared/bin/native/sea-config/index.esm.js +7 -0
  234. package/_shared/bin/script/bootstrap-footer/index.cjs.js +22 -0
  235. package/_shared/bin/script/bootstrap-footer/index.esm.js +19 -0
  236. package/_shared/bundle/declarations/flatten-paths/index.cjs.js +34 -0
  237. package/_shared/bundle/declarations/flatten-paths/index.esm.js +29 -0
  238. package/_shared/bundle/dependencies/collect-workspace-deps/index.cjs.js +24 -0
  239. package/_shared/bundle/dependencies/collect-workspace-deps/index.esm.js +21 -0
  240. package/_shared/bundle/dependencies/externalize-plugin/index.cjs.js +93 -0
  241. package/_shared/bundle/dependencies/externalize-plugin/index.esm.js +86 -0
  242. package/_shared/bundle/dependencies/prune/ast-utils/index.esm.js +31 -0
  243. package/_shared/bundle/dependencies/prune/namespace-usage/index.esm.js +208 -0
  244. package/_shared/bundle/dependencies/prune/specifiers/index.cjs.js +62 -0
  245. package/_shared/bundle/dependencies/prune/specifiers/index.esm.js +53 -0
  246. package/_shared/bundle/entries/discover-entries/index.cjs.js +87 -0
  247. package/_shared/bundle/entries/discover-entries/index.esm.js +80 -0
  248. package/_shared/bundle/entries/resolve-entries/index.cjs.js +38 -0
  249. package/_shared/bundle/entries/resolve-entries/index.esm.js +34 -0
  250. package/_shared/bundle/externals/validate-globals/index.cjs.js +14 -0
  251. package/_shared/bundle/externals/validate-globals/index.esm.js +12 -0
  252. package/_shared/bundle/fs/deps-root/index.cjs.js +7 -0
  253. package/_shared/bundle/fs/deps-root/index.esm.js +5 -0
  254. package/_shared/bundle/fs/empty-dirs/index.cjs.js +23 -0
  255. package/_shared/bundle/fs/empty-dirs/index.esm.js +21 -0
  256. package/_shared/bundle/fs/entry-dir/index.cjs.js +7 -0
  257. package/_shared/bundle/fs/entry-dir/index.esm.js +5 -0
  258. package/_shared/bundle/fs/posix-path/index.cjs.js +9 -0
  259. package/_shared/bundle/fs/posix-path/index.esm.js +4 -0
  260. package/_shared/bundle/fs/under-dir/index.cjs.js +5 -0
  261. package/_shared/bundle/fs/under-dir/index.esm.js +3 -0
  262. package/_shared/memory/recover/index.cjs.js +15 -0
  263. package/_shared/memory/recover/index.esm.js +14 -0
  264. package/_shared/package/finalize-files/index.cjs.js +16 -0
  265. package/_shared/package/finalize-files/index.esm.js +15 -0
  266. package/_shared/package/json/cdn-paths/index.cjs.js +13 -0
  267. package/_shared/package/json/cdn-paths/index.esm.js +11 -0
  268. package/_shared/package/json/filter-deps/index.cjs.js +37 -0
  269. package/_shared/package/json/filter-deps/index.esm.js +34 -0
  270. package/_shared/package/json/generate-exports/index.cjs.js +56 -0
  271. package/_shared/package/json/generate-exports/index.esm.js +52 -0
  272. package/_shared/package/json/inherit-fields/index.cjs.js +19 -0
  273. package/_shared/package/json/inherit-fields/index.esm.js +17 -0
  274. package/_shared/package/json/read-package-json/index.cjs.js +7 -0
  275. package/_shared/package/json/read-package-json/index.esm.js +6 -0
  276. package/_shared/package/json/reflect-files-allowlist/index.cjs.js +39 -0
  277. package/_shared/package/json/reflect-files-allowlist/index.esm.js +33 -0
  278. package/_shared/package/json/synthesize/index.cjs.js +72 -0
  279. package/_shared/package/json/synthesize/index.esm.js +68 -0
  280. package/_shared/package/json/write/index.cjs.js +9 -0
  281. package/_shared/package/json/write/index.esm.js +8 -0
  282. package/_shared/package/licenses/generate-content/index.cjs.js +17 -0
  283. package/_shared/package/licenses/generate-content/index.esm.js +17 -0
  284. package/_shared/package/licenses/license-url/index.esm.js +29 -0
  285. package/_shared/package/licenses/write/index.cjs.js +9 -0
  286. package/_shared/package/licenses/write/index.esm.js +8 -0
  287. package/_shared/presets/by-names/index.cjs.js +10 -0
  288. package/_shared/presets/by-names/index.esm.js +8 -0
  289. package/_shared/presets/by-prefix/index.cjs.js +7 -0
  290. package/_shared/presets/by-prefix/index.esm.js +5 -0
  291. package/bin/format.d.ts +18 -0
  292. package/bin/format.d.ts.map +1 -0
  293. package/bin/hf-build.d.ts +81 -0
  294. package/bin/hf-build.d.ts.map +1 -0
  295. package/bin/hf-build.js +208533 -0
  296. package/bin/hf-build.linux-x64 +0 -0
  297. package/bin/index.cjs.js +548 -0
  298. package/bin/index.d.ts +26 -0
  299. package/bin/index.d.ts.map +1 -0
  300. package/bin/index.esm.js +546 -0
  301. package/bin/native/build-native.d.ts +44 -0
  302. package/bin/native/build-native.d.ts.map +1 -0
  303. package/bin/native/codesign.d.ts +65 -0
  304. package/bin/native/codesign.d.ts.map +1 -0
  305. package/bin/native/dispatch.d.ts +75 -0
  306. package/bin/native/dispatch.d.ts.map +1 -0
  307. package/bin/native/host-binary.d.ts +36 -0
  308. package/bin/native/host-binary.d.ts.map +1 -0
  309. package/bin/native/index.cjs.js +264 -0
  310. package/bin/native/index.d.ts +407 -0
  311. package/bin/native/index.d.ts.map +1 -0
  312. package/bin/native/index.esm.js +249 -0
  313. package/bin/native/inject.d.ts +61 -0
  314. package/bin/native/inject.d.ts.map +1 -0
  315. package/bin/native/platform-check.d.ts +39 -0
  316. package/bin/native/platform-check.d.ts.map +1 -0
  317. package/bin/native/sea-blob.d.ts +40 -0
  318. package/bin/native/sea-blob.d.ts.map +1 -0
  319. package/bin/native/sea-config.d.ts +45 -0
  320. package/bin/native/sea-config.d.ts.map +1 -0
  321. package/bin/native/worker/index.cjs.js +88 -0
  322. package/bin/native/worker/index.d.ts +68 -0
  323. package/bin/native/worker/index.d.ts.map +1 -0
  324. package/bin/native/worker/index.esm.js +86 -0
  325. package/bin/native/worker/job-runner.d.ts +29 -0
  326. package/bin/native/worker/job-runner.d.ts.map +1 -0
  327. package/bin/native/worker/types.d.ts +38 -0
  328. package/bin/native/worker/types.d.ts.map +1 -0
  329. package/bin/run-bin-phase.d.ts +24 -0
  330. package/bin/run-bin-phase.d.ts.map +1 -0
  331. package/bin/script/bootstrap-footer.d.ts +41 -0
  332. package/bin/script/bootstrap-footer.d.ts.map +1 -0
  333. package/bin/script/build-bin.d.ts +36 -0
  334. package/bin/script/build-bin.d.ts.map +1 -0
  335. package/bin/script/index.cjs.js +265 -0
  336. package/bin/script/index.d.ts +79 -0
  337. package/bin/script/index.d.ts.map +1 -0
  338. package/bin/script/index.esm.js +262 -0
  339. package/build.d.ts +56 -0
  340. package/build.d.ts.map +1 -0
  341. package/bundle/declarations/dts-per-entry.d.ts +27 -0
  342. package/bundle/declarations/dts-per-entry.d.ts.map +1 -0
  343. package/bundle/declarations/dts-pre-pass.d.ts +18 -0
  344. package/bundle/declarations/dts-pre-pass.d.ts.map +1 -0
  345. package/bundle/declarations/flatten-paths.d.ts +28 -0
  346. package/bundle/declarations/flatten-paths.d.ts.map +1 -0
  347. package/bundle/declarations/generate-declarations.d.ts +33 -0
  348. package/bundle/declarations/generate-declarations.d.ts.map +1 -0
  349. package/bundle/declarations/index.cjs.js +868 -0
  350. package/bundle/declarations/index.d.ts +262 -0
  351. package/bundle/declarations/index.d.ts.map +1 -0
  352. package/bundle/declarations/index.esm.js +857 -0
  353. package/bundle/declarations/prune-orphan-dts.d.ts +33 -0
  354. package/bundle/declarations/prune-orphan-dts.d.ts.map +1 -0
  355. package/bundle/declarations/sibling-resolver.d.ts +125 -0
  356. package/bundle/declarations/sibling-resolver.d.ts.map +1 -0
  357. package/bundle/dedupe/attribute-modules.d.ts +178 -0
  358. package/bundle/dedupe/attribute-modules.d.ts.map +1 -0
  359. package/bundle/dedupe/extract-chunk.d.ts +103 -0
  360. package/bundle/dedupe/extract-chunk.d.ts.map +1 -0
  361. package/bundle/dedupe/hoist-shared.d.ts +37 -0
  362. package/bundle/dedupe/hoist-shared.d.ts.map +1 -0
  363. package/bundle/dedupe/index.cjs.js +818 -0
  364. package/bundle/dedupe/index.d.ts +400 -0
  365. package/bundle/dedupe/index.d.ts.map +1 -0
  366. package/bundle/dedupe/index.esm.js +766 -0
  367. package/bundle/dedupe/plan-hoists.d.ts +46 -0
  368. package/bundle/dedupe/plan-hoists.d.ts.map +1 -0
  369. package/bundle/dedupe/rewrite-entry.d.ts +39 -0
  370. package/bundle/dedupe/rewrite-entry.d.ts.map +1 -0
  371. package/bundle/dependencies/collect-workspace-deps.d.ts +34 -0
  372. package/bundle/dependencies/collect-workspace-deps.d.ts.map +1 -0
  373. package/bundle/dependencies/externalize-plugin.d.ts +100 -0
  374. package/bundle/dependencies/externalize-plugin.d.ts.map +1 -0
  375. package/bundle/dependencies/index.cjs.js +964 -0
  376. package/bundle/dependencies/index.d.ts +388 -0
  377. package/bundle/dependencies/index.d.ts.map +1 -0
  378. package/bundle/dependencies/index.esm.js +947 -0
  379. package/bundle/dependencies/pre-pass.d.ts +154 -0
  380. package/bundle/dependencies/pre-pass.d.ts.map +1 -0
  381. package/bundle/dependencies/prune/ast-utils.d.ts +121 -0
  382. package/bundle/dependencies/prune/ast-utils.d.ts.map +1 -0
  383. package/bundle/dependencies/prune/chunk-graph.d.ts +175 -0
  384. package/bundle/dependencies/prune/chunk-graph.d.ts.map +1 -0
  385. package/bundle/dependencies/prune/dead-export-pass.d.ts +32 -0
  386. package/bundle/dependencies/prune/dead-export-pass.d.ts.map +1 -0
  387. package/bundle/dependencies/prune/dead-exports.d.ts +36 -0
  388. package/bundle/dependencies/prune/dead-exports.d.ts.map +1 -0
  389. package/bundle/dependencies/prune/destructure-requires-pass.d.ts +31 -0
  390. package/bundle/dependencies/prune/destructure-requires-pass.d.ts.map +1 -0
  391. package/bundle/dependencies/prune/destructure-requires.d.ts +42 -0
  392. package/bundle/dependencies/prune/destructure-requires.d.ts.map +1 -0
  393. package/bundle/dependencies/prune/edits.d.ts +30 -0
  394. package/bundle/dependencies/prune/edits.d.ts.map +1 -0
  395. package/bundle/dependencies/prune/namespace-usage.d.ts +104 -0
  396. package/bundle/dependencies/prune/namespace-usage.d.ts.map +1 -0
  397. package/bundle/dependencies/prune/orphan-chunks.d.ts +69 -0
  398. package/bundle/dependencies/prune/orphan-chunks.d.ts.map +1 -0
  399. package/bundle/dependencies/prune/property-strip-pass.d.ts +38 -0
  400. package/bundle/dependencies/prune/property-strip-pass.d.ts.map +1 -0
  401. package/bundle/dependencies/prune/property-strip.d.ts +69 -0
  402. package/bundle/dependencies/prune/property-strip.d.ts.map +1 -0
  403. package/bundle/dependencies/prune/prune-dependencies.d.ts +52 -0
  404. package/bundle/dependencies/prune/prune-dependencies.d.ts.map +1 -0
  405. package/bundle/dependencies/prune/reachability.d.ts +36 -0
  406. package/bundle/dependencies/prune/reachability.d.ts.map +1 -0
  407. package/bundle/dependencies/prune/specifiers.d.ts +39 -0
  408. package/bundle/dependencies/prune/specifiers.d.ts.map +1 -0
  409. package/bundle/dependencies/prune/strip-comments.d.ts +47 -0
  410. package/bundle/dependencies/prune/strip-comments.d.ts.map +1 -0
  411. package/bundle/dependencies/prune/used-exports.d.ts +32 -0
  412. package/bundle/dependencies/prune/used-exports.d.ts.map +1 -0
  413. package/bundle/dependencies/resolve-bundled-deps.d.ts +37 -0
  414. package/bundle/dependencies/resolve-bundled-deps.d.ts.map +1 -0
  415. package/bundle/dependencies/resolve-dep-entry.d.ts +38 -0
  416. package/bundle/dependencies/resolve-dep-entry.d.ts.map +1 -0
  417. package/bundle/dependencies/resolve-workspace-bundled-deps.d.ts +96 -0
  418. package/bundle/dependencies/resolve-workspace-bundled-deps.d.ts.map +1 -0
  419. package/bundle/dependencies/worker/index.cjs.js +524 -0
  420. package/bundle/dependencies/worker/index.d.ts +102 -0
  421. package/bundle/dependencies/worker/index.d.ts.map +1 -0
  422. package/bundle/dependencies/worker/index.esm.js +515 -0
  423. package/bundle/dependencies/worker/job-runner.d.ts +115 -0
  424. package/bundle/dependencies/worker/job-runner.d.ts.map +1 -0
  425. package/bundle/entries/by-platform.d.ts +27 -0
  426. package/bundle/entries/by-platform.d.ts.map +1 -0
  427. package/bundle/entries/discover-entries.d.ts +24 -0
  428. package/bundle/entries/discover-entries.d.ts.map +1 -0
  429. package/bundle/entries/index.cjs.js +38 -0
  430. package/bundle/entries/index.d.ts +70 -0
  431. package/bundle/entries/index.d.ts.map +1 -0
  432. package/bundle/entries/index.esm.js +33 -0
  433. package/bundle/entries/resolve-entries.d.ts +19 -0
  434. package/bundle/entries/resolve-entries.d.ts.map +1 -0
  435. package/bundle/externals/index.cjs.js +54 -0
  436. package/bundle/externals/index.d.ts +74 -0
  437. package/bundle/externals/index.d.ts.map +1 -0
  438. package/bundle/externals/index.esm.js +51 -0
  439. package/bundle/externals/resolve-externals.d.ts +52 -0
  440. package/bundle/externals/resolve-externals.d.ts.map +1 -0
  441. package/bundle/externals/validate-globals.d.ts +19 -0
  442. package/bundle/externals/validate-globals.d.ts.map +1 -0
  443. package/bundle/fs/deps-root.d.ts +17 -0
  444. package/bundle/fs/deps-root.d.ts.map +1 -0
  445. package/bundle/fs/empty-dirs.d.ts +18 -0
  446. package/bundle/fs/empty-dirs.d.ts.map +1 -0
  447. package/bundle/fs/entry-dir.d.ts +21 -0
  448. package/bundle/fs/entry-dir.d.ts.map +1 -0
  449. package/bundle/fs/posix-path.d.ts +30 -0
  450. package/bundle/fs/posix-path.d.ts.map +1 -0
  451. package/bundle/fs/under-dir.d.ts +19 -0
  452. package/bundle/fs/under-dir.d.ts.map +1 -0
  453. package/bundle/index.cjs.js +4046 -0
  454. package/bundle/index.d.ts +25 -0
  455. package/bundle/index.d.ts.map +1 -0
  456. package/bundle/index.esm.js +3689 -0
  457. package/bundle/rollup/descriptor.d.ts +99 -0
  458. package/bundle/rollup/descriptor.d.ts.map +1 -0
  459. package/bundle/rollup/dispatch.d.ts +72 -0
  460. package/bundle/rollup/dispatch.d.ts.map +1 -0
  461. package/bundle/rollup/index.cjs.js +715 -0
  462. package/bundle/rollup/index.d.ts +174 -0
  463. package/bundle/rollup/index.d.ts.map +1 -0
  464. package/bundle/rollup/index.esm.js +698 -0
  465. package/bundle/rollup/worker/index.cjs.js +290 -0
  466. package/bundle/rollup/worker/index.d.ts +131 -0
  467. package/bundle/rollup/worker/index.d.ts.map +1 -0
  468. package/bundle/rollup/worker/index.esm.js +280 -0
  469. package/bundle/rollup/worker/job-runner.d.ts +18 -0
  470. package/bundle/rollup/worker/job-runner.d.ts.map +1 -0
  471. package/bundle/rollup/worker/types.d.ts +111 -0
  472. package/bundle/rollup/worker/types.d.ts.map +1 -0
  473. package/bundle/run-bundle-phase.d.ts +23 -0
  474. package/bundle/run-bundle-phase.d.ts.map +1 -0
  475. package/clean-output.d.ts +26 -0
  476. package/clean-output.d.ts.map +1 -0
  477. package/index.cjs.js +5317 -0
  478. package/index.d.ts +64 -0
  479. package/index.d.ts.map +1 -0
  480. package/index.esm.js +4910 -0
  481. package/memory/index.cjs.js +101 -0
  482. package/memory/index.d.ts +81 -0
  483. package/memory/index.d.ts.map +1 -0
  484. package/memory/index.esm.js +98 -0
  485. package/memory/monitor.d.ts +59 -0
  486. package/memory/monitor.d.ts.map +1 -0
  487. package/memory/recover.d.ts +19 -0
  488. package/memory/recover.d.ts.map +1 -0
  489. package/models/build-config.d.ts +266 -0
  490. package/models/build-config.d.ts.map +1 -0
  491. package/models/build-context.d.ts +68 -0
  492. package/models/build-context.d.ts.map +1 -0
  493. package/models/build-result.d.ts +43 -0
  494. package/models/build-result.d.ts.map +1 -0
  495. package/models/entry-point.d.ts +45 -0
  496. package/models/entry-point.d.ts.map +1 -0
  497. package/models/format-output.d.ts +34 -0
  498. package/models/format-output.d.ts.map +1 -0
  499. package/models/index.cjs.js +2 -0
  500. package/models/index.d.ts +581 -0
  501. package/models/index.d.ts.map +1 -0
  502. package/models/index.esm.js +1 -0
  503. package/models/package-json.d.ts +130 -0
  504. package/models/package-json.d.ts.map +1 -0
  505. package/package/assets/copy-assets.d.ts +31 -0
  506. package/package/assets/copy-assets.d.ts.map +1 -0
  507. package/package/assets/index.cjs.js +84 -0
  508. package/package/assets/index.d.ts +33 -0
  509. package/package/assets/index.d.ts.map +1 -0
  510. package/package/assets/index.esm.js +82 -0
  511. package/package/finalize-files.d.ts +25 -0
  512. package/package/finalize-files.d.ts.map +1 -0
  513. package/package/index.cjs.js +276 -0
  514. package/package/index.d.ts +56 -0
  515. package/package/index.d.ts.map +1 -0
  516. package/package/index.esm.js +231 -0
  517. package/package/json/cdn-paths.d.ts +41 -0
  518. package/package/json/cdn-paths.d.ts.map +1 -0
  519. package/package/json/filter-deps.d.ts +39 -0
  520. package/package/json/filter-deps.d.ts.map +1 -0
  521. package/package/json/generate-exports.d.ts +29 -0
  522. package/package/json/generate-exports.d.ts.map +1 -0
  523. package/package/json/index.cjs.js +24 -0
  524. package/package/json/index.d.ts +252 -0
  525. package/package/json/index.d.ts.map +1 -0
  526. package/package/json/index.esm.js +14 -0
  527. package/package/json/inherit-fields.d.ts +25 -0
  528. package/package/json/inherit-fields.d.ts.map +1 -0
  529. package/package/json/read-package-json.d.ts +18 -0
  530. package/package/json/read-package-json.d.ts.map +1 -0
  531. package/package/json/reflect-files-allowlist.d.ts +32 -0
  532. package/package/json/reflect-files-allowlist.d.ts.map +1 -0
  533. package/package/json/synthesize.d.ts +53 -0
  534. package/package/json/synthesize.d.ts.map +1 -0
  535. package/package/json/write.d.ts +18 -0
  536. package/package/json/write.d.ts.map +1 -0
  537. package/package/licenses/collect.d.ts +25 -0
  538. package/package/licenses/collect.d.ts.map +1 -0
  539. package/package/licenses/generate-content.d.ts +20 -0
  540. package/package/licenses/generate-content.d.ts.map +1 -0
  541. package/package/licenses/index.cjs.js +135 -0
  542. package/package/licenses/index.d.ts +73 -0
  543. package/package/licenses/index.d.ts.map +1 -0
  544. package/package/licenses/index.esm.js +89 -0
  545. package/package/licenses/license-url.d.ts +20 -0
  546. package/package/licenses/license-url.d.ts.map +1 -0
  547. package/package/licenses/types.d.ts +12 -0
  548. package/package/licenses/types.d.ts.map +1 -0
  549. package/package/licenses/write.d.ts +16 -0
  550. package/package/licenses/write.d.ts.map +1 -0
  551. package/package/run-package-phase.d.ts +30 -0
  552. package/package/run-package-phase.d.ts.map +1 -0
  553. package/package.json +347 -0
  554. package/presets/by-names.d.ts +20 -0
  555. package/presets/by-names.d.ts.map +1 -0
  556. package/presets/by-prefix.d.ts +22 -0
  557. package/presets/by-prefix.d.ts.map +1 -0
  558. package/presets/index.cjs.js +8 -0
  559. package/presets/index.d.ts +43 -0
  560. package/presets/index.d.ts.map +1 -0
  561. package/presets/index.esm.js +5 -0
@@ -0,0 +1,818 @@
1
+ 'use strict';
2
+
3
+ const ts = require('typescript');
4
+ const index_cjs_js = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/map/index.cjs.js');
5
+ const index_cjs_js$1 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.cjs.js');
6
+ const index_cjs_js$2 = require('../../_dependencies/@hyperfrontend/project-scope/core/index.cjs.js');
7
+ const index_cjs_js$3 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.cjs.js');
8
+ const index_cjs_js$4 = require('../../_dependencies/@hyperfrontend/logging/index.cjs.js');
9
+ const { entryDirOf } = require('../../_shared/bundle/fs/entry-dir/index.cjs.js');
10
+
11
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
12
+
13
+ const ts__default = /*#__PURE__*/_interopDefaultCompat(ts);
14
+
15
+ /**
16
+ * Parses a bundled chunk's source into a `ts.SourceFile`.
17
+ *
18
+ * Always parses as plain JavaScript with parent pointers set, so callers can
19
+ * inspect each node's lexical context (member-access position, declaration
20
+ * names) during the dead-export analysis.
21
+ *
22
+ * @param source - Raw chunk source text.
23
+ * @returns The parsed source file with parent nodes populated.
24
+ *
25
+ * @example Parsing a chunk before analysis
26
+ * ```typescript
27
+ * const sourceFile = parseChunk("export { a };\nconst a = 1")
28
+ * ```
29
+ */
30
+ const parseChunk = (source) => ts__default.default.createSourceFile('chunk.js', source, ts__default.default.ScriptTarget.Latest, true, ts__default.default.ScriptKind.JS);
31
+ /**
32
+ * Returns the literal specifier of a `require('…')` call expression, or `null`
33
+ * when the node is not a single-string-literal `require` call.
34
+ *
35
+ * @param node - Any AST node.
36
+ * @returns The required specifier string, or `null`.
37
+ *
38
+ * @example Extracting a CJS chunk dependency
39
+ * ```typescript
40
+ * // for the call node in `var x = require('./dep/index.cjs.js')`
41
+ * getRequireSpecifier(callNode) // => './dep/index.cjs.js'
42
+ * ```
43
+ */
44
+ const getRequireSpecifier = (node) => {
45
+ if (!ts__default.default.isCallExpression(node) || !ts__default.default.isIdentifier(node.expression) || node.expression.text !== 'require' || node.arguments.length !== 1)
46
+ return null;
47
+ const arg = node.arguments[0];
48
+ return ts__default.default.isStringLiteralLike(arg) ? arg.text : null;
49
+ };
50
+
51
+ /** Per-format output chunk file name, mirroring the bundler's entry naming. */
52
+ const CHUNK_FILE = { esm: 'index.esm.js', cjs: 'index.cjs.js' };
53
+ /**
54
+ * Strips rollup's `$N` collision-rename suffix from a local name, yielding the
55
+ * canonical source symbol name.
56
+ *
57
+ * @param name - A local identifier from an emitted bundle.
58
+ * @returns The base name with any trailing `$digits` removed.
59
+ *
60
+ * @example Undoing a collision rename
61
+ * ```typescript
62
+ * baseName('Store$1') // => 'Store'
63
+ * ```
64
+ */
65
+ const baseName = (name) => name.replace(/\$\d+$/, '');
66
+ /**
67
+ * Computes a rename-insensitive identity key for a top-level statement.
68
+ *
69
+ * Two copies of the same source that differ only in rollup's per-entry `$N`
70
+ * collision suffixes compare equal, while genuinely different code never
71
+ * collides: `$N` is stripped from identifier nodes only, so string literals,
72
+ * comments, numeric tokens, and discriminating member names stay intact.
73
+ *
74
+ * @param statement - The top-level statement to fingerprint.
75
+ * @param sourceFile - The source file the statement belongs to.
76
+ * @returns The statement's text with `$N` stripped from every identifier node.
77
+ *
78
+ * @example Stripping a dep-namespace local's collision suffix
79
+ * ```typescript
80
+ * fingerprintOf(statement, sourceFile) // 'const x = index_cjs_js.getType();' for both `$1` and `$2` copies
81
+ * ```
82
+ */
83
+ const fingerprintOf = (statement, sourceFile) => {
84
+ const start = statement.getStart(sourceFile);
85
+ const text = statement.getText(sourceFile);
86
+ const edits = [];
87
+ const visit = (node) => {
88
+ if (ts__default.default.isIdentifier(node)) {
89
+ const base = baseName(node.text);
90
+ if (base !== node.text)
91
+ edits.push([node.getStart(sourceFile) - start, node.getEnd() - start, base]);
92
+ }
93
+ ts__default.default.forEachChild(node, visit);
94
+ };
95
+ visit(statement);
96
+ let out = text;
97
+ for (const [s, e, replacement] of edits.sort((a, b) => b[0] - a[0]))
98
+ out = `${out.slice(0, s)}${replacement}${out.slice(e)}`;
99
+ return out;
100
+ };
101
+ /**
102
+ * Resolves a hoisted module's chunk file name for a format.
103
+ *
104
+ * @param format - Output module format.
105
+ * @returns The per-entry chunk file name (`index.esm.js` / `index.cjs.js`).
106
+ *
107
+ * @example Naming the CJS chunk
108
+ * ```typescript
109
+ * chunkFileName('cjs') // => 'index.cjs.js'
110
+ * ```
111
+ */
112
+ const chunkFileName = (format) => CHUNK_FILE[format];
113
+ /**
114
+ * Computes the `_shared/` directory (relative to the output root) that holds a
115
+ * module's hoisted chunk.
116
+ *
117
+ * @param moduleKey - The owning module's key.
118
+ * @returns The forward-slashed `_shared/<moduleKey>` directory.
119
+ *
120
+ * @example Locating a module's shared directory
121
+ * ```typescript
122
+ * sharedDirFor('events/events') // => '_shared/events/events'
123
+ * ```
124
+ */
125
+ const sharedDirFor = (moduleKey) => `_shared/${moduleKey}`;
126
+ const isExported = (statement) => ts__default.default.canHaveModifiers(statement) && (ts__default.default.getModifiers(statement) ?? []).some((modifier) => modifier.kind === ts__default.default.SyntaxKind.ExportKeyword);
127
+ const declaredNames = (statement) => {
128
+ if ((ts__default.default.isFunctionDeclaration(statement) || ts__default.default.isClassDeclaration(statement) || ts__default.default.isEnumDeclaration(statement)) && statement.name)
129
+ return [statement.name.text];
130
+ if (!ts__default.default.isVariableStatement(statement))
131
+ return [];
132
+ const names = [];
133
+ for (const decl of statement.declarationList.declarations)
134
+ if (ts__default.default.isIdentifier(decl.name))
135
+ names.push(decl.name.text);
136
+ return names;
137
+ };
138
+ const requireSpecifierOf = (initializer) => {
139
+ if (initializer === undefined)
140
+ return null;
141
+ if (ts__default.default.isPropertyAccessExpression(initializer))
142
+ return getRequireSpecifier(initializer.expression);
143
+ return getRequireSpecifier(initializer);
144
+ };
145
+ const isRequireVarStatement = (statement) => ts__default.default.isVariableStatement(statement) &&
146
+ statement.declarationList.declarations.length > 0 &&
147
+ statement.declarationList.declarations.every((decl) => requireSpecifierOf(decl.initializer) !== null);
148
+ const collectCjsBindings = (statement, bindings) => {
149
+ for (const decl of statement.declarationList.declarations) {
150
+ const specifier = requireSpecifierOf(decl.initializer);
151
+ if (specifier === null)
152
+ continue;
153
+ if (ts__default.default.isIdentifier(decl.name)) {
154
+ // why: `var x = require('s').foo` binds a single named export; the bare `var ns = require('s')` binds the whole namespace.
155
+ const imported = decl.initializer && ts__default.default.isPropertyAccessExpression(decl.initializer) ? decl.initializer.name.text : undefined;
156
+ bindings.set(decl.name.text, imported ? { specifier, kind: 'cjs-named', imported } : { specifier, kind: 'cjs-namespace' });
157
+ }
158
+ else if (ts__default.default.isObjectBindingPattern(decl.name)) {
159
+ for (const element of decl.name.elements)
160
+ if (ts__default.default.isIdentifier(element.name))
161
+ bindings.set(element.name.text, { specifier, kind: 'cjs-named', imported: (element.propertyName ?? element.name).getText() });
162
+ }
163
+ }
164
+ };
165
+ const collectEsmBindings = (statement, bindings) => {
166
+ const specifier = statement.moduleSpecifier.text;
167
+ const clause = statement.importClause;
168
+ if (!clause)
169
+ return;
170
+ if (clause.name)
171
+ bindings.set(clause.name.text, { specifier, kind: 'default' });
172
+ if (!clause.namedBindings)
173
+ return;
174
+ if (ts__default.default.isNamespaceImport(clause.namedBindings)) {
175
+ bindings.set(clause.namedBindings.name.text, { specifier, kind: 'namespace' });
176
+ return;
177
+ }
178
+ for (const element of clause.namedBindings.elements)
179
+ bindings.set(element.name.text, { specifier, kind: 'named', imported: (element.propertyName ?? element.name).text });
180
+ };
181
+ const isUseStrict = (statement) => ts__default.default.isExpressionStatement(statement) && ts__default.default.isStringLiteral(statement.expression) && statement.expression.text === 'use strict';
182
+ const isHeaderStatement = (statement, format) => isUseStrict(statement) || (format === 'esm' ? ts__default.default.isImportDeclaration(statement) : isRequireVarStatement(statement));
183
+ const isExportSurface = (statement, format) => {
184
+ if (format === 'esm')
185
+ return ts__default.default.isExportDeclaration(statement) && !statement.moduleSpecifier;
186
+ // why: CJS export surface is a chain of `exports.x = y` assignment statements emitted at the bundle tail.
187
+ if (!ts__default.default.isExpressionStatement(statement) || !ts__default.default.isBinaryExpression(statement.expression))
188
+ return false;
189
+ const { left, operatorToken } = statement.expression;
190
+ return (operatorToken.kind === ts__default.default.SyntaxKind.EqualsToken &&
191
+ ts__default.default.isPropertyAccessExpression(left) &&
192
+ ts__default.default.isIdentifier(left.expression) &&
193
+ left.expression.text === 'exports');
194
+ };
195
+ /**
196
+ * Parses one entry bundle into the structural model the hoist pass consumes.
197
+ *
198
+ * Classifies every top-level statement as an import binding, a removable
199
+ * runtime declaration, the export surface, or an opaque bare statement. Inline
200
+ * `export`-modified declarations are treated as part of the export surface
201
+ * (never removable), so the bundle's published API is never disturbed.
202
+ *
203
+ * @param source - Raw entry bundle source text.
204
+ * @param format - Module format selecting ESM vs CJS import/export shapes.
205
+ * @returns The parsed entry model.
206
+ *
207
+ * @example Modeling an ESM entry bundle
208
+ * ```typescript
209
+ * const parsed = parseEntry("import { x } from './_dependencies/a/index.esm.js'\nclass C {}", 'esm')
210
+ * ```
211
+ */
212
+ const parseEntry = (source, format) => {
213
+ const sourceFile = parseChunk(source);
214
+ const decls = [];
215
+ const importBindings = index_cjs_js.createMap();
216
+ const bareStatements = [];
217
+ const declNames = index_cjs_js$1.createSet([]);
218
+ let headerEnd = 0;
219
+ let inHeader = true;
220
+ for (const statement of sourceFile.statements) {
221
+ if (inHeader && isHeaderStatement(statement, format))
222
+ headerEnd = statement.getEnd();
223
+ else
224
+ inHeader = false;
225
+ if (format === 'esm' && ts__default.default.isImportDeclaration(statement)) {
226
+ collectEsmBindings(statement, importBindings);
227
+ continue;
228
+ }
229
+ if (format === 'cjs' && isRequireVarStatement(statement)) {
230
+ collectCjsBindings(statement, importBindings);
231
+ continue;
232
+ }
233
+ if (isUseStrict(statement) || isExportSurface(statement, format))
234
+ continue;
235
+ const names = isExported(statement) ? [] : declaredNames(statement);
236
+ for (const name of names)
237
+ declNames.add(name);
238
+ // why: only a single-name, non-exported declaration can be cleanly lifted; multi-declarator and inline-exported statements stay put (and may entangle their module out of the plan).
239
+ if (names.length !== 1) {
240
+ bareStatements.push(statement);
241
+ continue;
242
+ }
243
+ decls.push({
244
+ base: baseName(names[0]),
245
+ localName: names[0],
246
+ statement,
247
+ text: statement.getText(sourceFile),
248
+ fingerprint: fingerprintOf(statement, sourceFile),
249
+ });
250
+ }
251
+ return { sourceFile, decls, importBindings, bareStatements, declNames, headerEnd };
252
+ };
253
+ /**
254
+ * Groups an entry's attributable declarations by their owning module.
255
+ *
256
+ * Declarations whose base name is unowned (a dependency or unexported helper
257
+ * inlined into the bundle) are skipped, leaving them in place.
258
+ *
259
+ * @param parsed - A parsed entry bundle.
260
+ * @param owners - The first-party ownership index.
261
+ * @returns Map from module key to that module's declarations in source order.
262
+ *
263
+ * @example Attributing an entry's declarations
264
+ * ```typescript
265
+ * const byModule = attribute(parseEntry(source, 'esm'), owners)
266
+ * ```
267
+ */
268
+ const attribute = (parsed, owners) => {
269
+ const byModule = index_cjs_js.createMap();
270
+ for (const decl of parsed.decls) {
271
+ const moduleKey = owners.ownerOf.get(decl.base);
272
+ if (moduleKey === undefined)
273
+ continue;
274
+ const group = byModule.get(moduleKey) ?? [];
275
+ group.push(decl);
276
+ byModule.set(moduleKey, group);
277
+ }
278
+ return byModule;
279
+ };
280
+ const toModuleKey = (srcRoot, file) => file
281
+ .slice(srcRoot.length + 1)
282
+ .replace(/\.ts$/, '')
283
+ .split(/[\\/]/)
284
+ .join('/');
285
+ // why: private top-level helpers (e.g. a reducer's `handlers` map) are inlined alongside the exported symbols that use them; attributing them too lets the whole module hoist instead of bailing on the "unresolved" private reference. Collisions across modules are dropped as ambiguous by indexOwners, preserving safety.
286
+ const ownersFromSource = (source) => {
287
+ const sourceFile = ts__default.default.createSourceFile('module.ts', source, ts__default.default.ScriptTarget.Latest, true, ts__default.default.ScriptKind.TS);
288
+ const names = [];
289
+ for (const statement of sourceFile.statements)
290
+ names.push(...declaredNames(statement));
291
+ return names;
292
+ };
293
+ const walkTsFiles = (dir, acc) => {
294
+ for (const entry of index_cjs_js$2.readDirectory(dir)) {
295
+ if (entry.isDirectory)
296
+ walkTsFiles(entry.path, acc);
297
+ else if (entry.name.endsWith('.ts') && !entry.name.endsWith('.d.ts') && !entry.name.endsWith('.spec.ts'))
298
+ acc.push(entry.path);
299
+ }
300
+ };
301
+ /**
302
+ * Builds the first-party ownership index by scanning `<srcRoot>/**` for the
303
+ * runtime symbols each module exports.
304
+ *
305
+ * Both exported and private top-level runtime declarations are indexed, so a
306
+ * module's private helpers hoist alongside the exports that use them. Types-only
307
+ * modules declare no runtime symbols and contribute nothing. A name declared by
308
+ * two different modules is ambiguous and dropped from the index, so the pass can
309
+ * never misattribute it.
310
+ *
311
+ * @param srcRoot - Absolute path to the project's `src/` directory.
312
+ * @returns The ownership index.
313
+ *
314
+ * @example Indexing a library's source tree
315
+ * ```typescript
316
+ * const owners = indexOwners('/abs/libs/foo/src')
317
+ * ```
318
+ */
319
+ const indexOwners = (srcRoot) => {
320
+ const files = [];
321
+ walkTsFiles(srcRoot, files);
322
+ const firstOwner = index_cjs_js.createMap();
323
+ const ambiguous = index_cjs_js$1.createSet([]);
324
+ const ownerOf = index_cjs_js.createMap();
325
+ for (const file of files) {
326
+ const moduleKey = toModuleKey(srcRoot, file);
327
+ for (const name of ownersFromSource(index_cjs_js$2.readFileContent(file))) {
328
+ if (ambiguous.has(name))
329
+ continue;
330
+ const prior = firstOwner.get(name);
331
+ if (prior !== undefined && prior !== moduleKey) {
332
+ ambiguous.add(name);
333
+ ownerOf.delete(name);
334
+ continue;
335
+ }
336
+ firstOwner.set(name, moduleKey);
337
+ ownerOf.set(name, moduleKey);
338
+ }
339
+ }
340
+ return { ownerOf };
341
+ };
342
+
343
+ index_cjs_js$1.createSet([
344
+ ts__default.default.SyntaxKind.CallExpression,
345
+ ts__default.default.SyntaxKind.NewExpression,
346
+ ts__default.default.SyntaxKind.AwaitExpression,
347
+ ts__default.default.SyntaxKind.YieldExpression,
348
+ ts__default.default.SyntaxKind.TaggedTemplateExpression,
349
+ ]);
350
+ /**
351
+ * Globals whose call observably only mutates-then-returns its (fresh-literal)
352
+ * argument and is therefore side-effect-free — `freeze`/`seal`/`preventExtensions`
353
+ * all behave this way on a freshly-built object/array literal.
354
+ */
355
+ index_cjs_js$1.createSet(['Object.freeze', 'Object.seal', 'Object.preventExtensions']);
356
+ /**
357
+ * Collects the identifier names referenced within a node, excluding identifiers
358
+ * that sit in a property-name position (`obj.name`, `{ name: … }`, `{ name: x }`
359
+ * binding keys) since those never refer to a top-level declaration.
360
+ *
361
+ * Deliberately over-approximates: a name captured that is not actually a
362
+ * top-level declaration is harmless, and capturing more only keeps more code.
363
+ *
364
+ * @param node - The subtree to scan.
365
+ * @param sink - Set that receives every referenced identifier name.
366
+ *
367
+ * @example Collecting references inside a function body
368
+ * ```typescript
369
+ * const refs = createSet<string>([])
370
+ * collectRefs(functionDeclaration, refs)
371
+ * ```
372
+ */
373
+ const collectRefs = (node, sink) => {
374
+ const visit = (current) => {
375
+ if (ts__default.default.isIdentifier(current)) {
376
+ const parent = current.parent;
377
+ if (ts__default.default.isPropertyAccessExpression(parent) && parent.name === current)
378
+ return;
379
+ if (ts__default.default.isPropertyAssignment(parent) && parent.name === current)
380
+ return;
381
+ if (ts__default.default.isBindingElement(parent) && parent.propertyName === current)
382
+ return;
383
+ sink.add(current.text);
384
+ return;
385
+ }
386
+ ts__default.default.forEachChild(current, visit);
387
+ };
388
+ visit(node);
389
+ };
390
+
391
+ /**
392
+ * Classifies every free identifier referenced by a module's declarations,
393
+ * partitioning them into cross-module edges, dependency edges, and hard
394
+ * blockers.
395
+ *
396
+ * Identifiers the module declares itself are intra-chunk and ignored. A name
397
+ * that is neither owned, nor a dependency binding, nor a top-level entry
398
+ * declaration is a runtime global and needs no import. Cross-module references
399
+ * are always safe to lift because {@link planHoists} only keeps an acyclic
400
+ * subset, so every dependency chunk is fully evaluated before its dependent.
401
+ *
402
+ * @param decls - The module's canonical declarations.
403
+ * @param owners - First-party ownership index.
404
+ * @param importBindings - The consuming entry's import bindings.
405
+ * @param entryDeclNames - Every top-level declaration name in the entry.
406
+ * @param selfModuleKey - The module being resolved.
407
+ * @returns The reference resolution.
408
+ *
409
+ * @example Resolving a module's references
410
+ * ```typescript
411
+ * const resolution = resolveModuleRefs(decls, owners, parsed.importBindings, parsed.declNames, 'events/events')
412
+ * ```
413
+ */
414
+ const resolveModuleRefs = (decls, owners, importBindings, entryDeclNames, selfModuleKey) => {
415
+ const selfLocals = index_cjs_js$1.createSet(decls.map((decl) => decl.localName));
416
+ const allRefs = index_cjs_js$1.createSet([]);
417
+ for (const decl of decls)
418
+ collectRefs(decl.statement, allRefs);
419
+ const crossModule = [];
420
+ const depImports = [];
421
+ const unresolved = [];
422
+ for (const ref of allRefs) {
423
+ if (selfLocals.has(ref))
424
+ continue;
425
+ const base = baseName(ref);
426
+ const owner = owners.ownerOf.get(base);
427
+ if (owner !== undefined) {
428
+ if (owner !== selfModuleKey)
429
+ crossModule.push({ ref, base, moduleKey: owner });
430
+ continue;
431
+ }
432
+ const binding = importBindings.get(ref);
433
+ if (binding !== undefined) {
434
+ depImports.push({ ref, binding });
435
+ continue;
436
+ }
437
+ if (entryDeclNames.has(ref))
438
+ unresolved.push(ref);
439
+ }
440
+ return { crossModule, depImports, unresolved };
441
+ };
442
+ const namedBinding = (local, imported) => (imported === local ? local : `${imported} as ${local}`);
443
+ const cjsBinding$1 = (local, imported) => (imported === local ? local : `${imported}: ${local}`);
444
+ const groupBySpecifier = (items, specifierOf) => {
445
+ const groups = index_cjs_js.createMap();
446
+ for (const item of items) {
447
+ const group = groups.get(specifierOf(item)) ?? [];
448
+ group.push(item);
449
+ groups.set(specifierOf(item), group);
450
+ }
451
+ return index_cjs_js$3.from(groups.entries()).sort(([a], [b]) => (a < b ? -1 : 1));
452
+ };
453
+ const renderEsmImports = (crossImports, depImports) => {
454
+ const lines = [];
455
+ for (const [specifier, group] of groupBySpecifier(crossImports, (c) => c.specifier))
456
+ lines.push(`import { ${group.map((c) => namedBinding(c.ref, c.exported)).join(', ')} } from '${specifier}';`);
457
+ for (const dep of depImports.filter((d) => d.kind === 'namespace'))
458
+ lines.push(`import * as ${dep.ref} from '${dep.specifier}';`);
459
+ for (const dep of depImports.filter((d) => d.kind === 'default'))
460
+ lines.push(`import ${dep.ref} from '${dep.specifier}';`);
461
+ for (const [specifier, group] of groupBySpecifier(depImports.filter((d) => d.kind === 'named'), (d) => d.specifier))
462
+ lines.push(`import { ${group.map((d) => namedBinding(d.ref, d.imported ?? d.ref)).join(', ')} } from '${specifier}';`);
463
+ return lines;
464
+ };
465
+ const renderCjsRequires = (crossImports, depImports) => {
466
+ const lines = [];
467
+ for (const [specifier, group] of groupBySpecifier(crossImports, (c) => c.specifier))
468
+ lines.push(`const { ${group.map((c) => cjsBinding$1(c.ref, c.exported)).join(', ')} } = require('${specifier}');`);
469
+ for (const dep of depImports.filter((d) => d.kind === 'cjs-namespace'))
470
+ lines.push(`const ${dep.ref} = require('${dep.specifier}');`);
471
+ for (const [specifier, group] of groupBySpecifier(depImports.filter((d) => d.kind === 'cjs-named'), (d) => d.specifier))
472
+ lines.push(`const { ${group.map((d) => cjsBinding$1(d.ref, d.imported ?? d.ref)).join(', ')} } = require('${specifier}');`);
473
+ return lines;
474
+ };
475
+ const renderEsmExports = (decls) => `export { ${decls.map((decl) => (decl.localName === decl.base ? decl.base : `${decl.localName} as ${decl.base}`)).join(', ')} };`;
476
+ const renderCjsExports = (decls) => decls.map((decl) => `exports.${decl.base} = ${decl.localName};`).join('\n');
477
+ /**
478
+ * Renders a hoisted module chunk: its resolved imports, the union of its
479
+ * declarations, and an export surface naming each declaration by its base name.
480
+ *
481
+ * @param plan - The module's declarations plus resolved import edges.
482
+ * @param format - Output module format.
483
+ * @returns The chunk source text.
484
+ *
485
+ * @example Rendering an ESM chunk
486
+ * ```typescript
487
+ * const source = renderChunk({ decls, crossImports: [], depImports: [] }, 'esm')
488
+ * ```
489
+ */
490
+ const renderChunk = (plan, format) => {
491
+ const body = plan.decls.map((decl) => decl.text).join('\n');
492
+ if (format === 'esm') {
493
+ const imports = renderEsmImports(plan.crossImports, plan.depImports);
494
+ const blocks = imports.length > 0 ? [imports.join('\n'), body, renderEsmExports(plan.decls)] : [body, renderEsmExports(plan.decls)];
495
+ return `${blocks.join('\n\n')}\n`;
496
+ }
497
+ const requires = renderCjsRequires(plan.crossImports, plan.depImports);
498
+ const blocks = requires.length > 0
499
+ ? ["'use strict';", requires.join('\n'), body, renderCjsExports(plan.decls)]
500
+ : ["'use strict';", body, renderCjsExports(plan.decls)];
501
+ return `${blocks.join('\n\n')}\n`;
502
+ };
503
+
504
+ const invertOwners = (owners) => {
505
+ const byModule = index_cjs_js.createMap();
506
+ for (const [base, moduleKey] of owners.ownerOf) {
507
+ const names = byModule.get(moduleKey) ?? index_cjs_js$1.createSet([]);
508
+ names.add(base);
509
+ byModule.set(moduleKey, names);
510
+ }
511
+ return byModule;
512
+ };
513
+ const collectAppearances = (entries) => {
514
+ const appearances = index_cjs_js.createMap();
515
+ for (const [index, entry] of entries.entries())
516
+ for (const moduleKey of entry.byModule.keys()) {
517
+ const list = appearances.get(moduleKey) ?? [];
518
+ list.push(index);
519
+ appearances.set(moduleKey, list);
520
+ }
521
+ return appearances;
522
+ };
523
+ // why: a bare statement (multi-declarator var, enum IIFE, side-effecting init) that names one of the module's symbols cannot be cleanly split out — its symbol would vanish from the chunk; leave the whole module inlined.
524
+ const isEntangled = (entries, indexes, ownedNames) => indexes.some((index) => entries[index].parsed.bareStatements.some((statement) => {
525
+ const refs = index_cjs_js$1.createSet([]);
526
+ collectRefs(statement, refs);
527
+ return index_cjs_js$3.from(refs).some((ref) => ownedNames.has(baseName(ref)));
528
+ }));
529
+ const pickCanonical = (entries, moduleKey, indexes) => indexes.reduce((best, index) => (entries[index].byModule.get(moduleKey) ?? []).length > (entries[best].byModule.get(moduleKey) ?? []).length ? index : best);
530
+ const isConsistentCopy = (canonicalFingerprint, order, decls) => {
531
+ let previous = -1;
532
+ for (const decl of decls) {
533
+ const index = order.get(decl.base);
534
+ // why: a copy that names a declaration absent from the canonical superset, reorders it, or differs structurally (rename-insensitive fingerprint) is not provably the same code.
535
+ if (index === undefined || index <= previous || canonicalFingerprint.get(decl.base) !== decl.fingerprint)
536
+ return false;
537
+ previous = index;
538
+ }
539
+ return true;
540
+ };
541
+ const planCandidate = (entries, owners, moduleKey, indexes, ownedNames) => {
542
+ if (isEntangled(entries, indexes, ownedNames))
543
+ return null;
544
+ const canonicalEntryIndex = pickCanonical(entries, moduleKey, indexes);
545
+ const canonicalDecls = entries[canonicalEntryIndex].byModule.get(moduleKey) ?? [];
546
+ // why: identity gates on the rename-insensitive fingerprint, but chunk rendering still uses each decl's raw `text` via canonicalDecls.
547
+ const canonicalFingerprint = index_cjs_js.createMap();
548
+ const order = index_cjs_js.createMap();
549
+ for (const [index, decl] of canonicalDecls.entries()) {
550
+ canonicalFingerprint.set(decl.base, decl.fingerprint);
551
+ order.set(decl.base, index);
552
+ }
553
+ for (const index of indexes)
554
+ if (!isConsistentCopy(canonicalFingerprint, order, entries[index].byModule.get(moduleKey) ?? []))
555
+ return null;
556
+ const canonical = entries[canonicalEntryIndex].parsed;
557
+ const resolution = resolveModuleRefs(canonicalDecls, owners, canonical.importBindings, canonical.declNames, moduleKey);
558
+ if (resolution.unresolved.length > 0)
559
+ return null;
560
+ return { canonicalEntryIndex, decls: canonicalDecls, resolution, consumingEntryIndexes: indexes };
561
+ };
562
+ const closeOverDependencies = (candidates) => {
563
+ let changed = true;
564
+ while (changed) {
565
+ changed = false;
566
+ for (const [moduleKey, planned] of candidates)
567
+ if (planned.resolution.crossModule.some((ref) => !candidates.has(ref.moduleKey))) {
568
+ candidates.delete(moduleKey);
569
+ changed = true;
570
+ }
571
+ }
572
+ return candidates;
573
+ };
574
+ // why: shared chunks load topologically, so an acyclic dependency graph guarantees every chunk is fully evaluated before its dependents — no cross-chunk temporal-dead-zone. Modules in (or feeding) a cycle cannot be ordered safely, so they are peeled off and left inlined.
575
+ const keepAcyclic = (candidates) => {
576
+ const depsOf = index_cjs_js.createMap();
577
+ for (const [moduleKey, planned] of candidates)
578
+ depsOf.set(moduleKey, planned.resolution.crossModule.map((ref) => ref.moduleKey));
579
+ const pending = index_cjs_js$1.createSet(candidates.keys());
580
+ let changed = true;
581
+ while (changed) {
582
+ changed = false;
583
+ for (const [moduleKey, deps] of depsOf)
584
+ if (pending.has(moduleKey) && deps.every((dep) => !pending.has(dep))) {
585
+ pending.delete(moduleKey);
586
+ changed = true;
587
+ }
588
+ }
589
+ for (const moduleKey of pending)
590
+ candidates.delete(moduleKey);
591
+ return candidates;
592
+ };
593
+ /**
594
+ * Plans which first-party modules can be hoisted into shared chunks.
595
+ *
596
+ * A module qualifies only when it is inlined into at least two entries, is not
597
+ * entangled with a bare statement, presents structurally identical declarations
598
+ * (rename-insensitive) in a consistent order across every copy, references
599
+ * nothing unresolvable, and —
600
+ * after closure and acyclic peeling — depends only on other hoisted modules
601
+ * through a cycle-free graph. Anything failing these is left inlined, so the
602
+ * worst case equals the unmodified output.
603
+ *
604
+ * @param entries - Parsed entries with their per-module attribution.
605
+ * @param owners - First-party ownership index.
606
+ * @returns Map from module key to its hoist plan.
607
+ *
608
+ * @example Planning hoists for a set of entries
609
+ * ```typescript
610
+ * const plan = planHoists(entries, owners)
611
+ * ```
612
+ */
613
+ const planHoists = (entries, owners) => {
614
+ const ownedNames = invertOwners(owners);
615
+ const candidates = index_cjs_js.createMap();
616
+ for (const [moduleKey, indexes] of collectAppearances(entries)) {
617
+ if (indexes.length < 2)
618
+ continue;
619
+ const planned = planCandidate(entries, owners, moduleKey, indexes, ownedNames.get(moduleKey) ?? index_cjs_js$1.createSet([]));
620
+ if (planned)
621
+ candidates.set(moduleKey, planned);
622
+ }
623
+ return keepAcyclic(closeOverDependencies(candidates));
624
+ };
625
+
626
+ const esmBinding = (decl) => (decl.base === decl.localName ? decl.base : `${decl.base} as ${decl.localName}`);
627
+ const cjsBinding = (decl) => (decl.base === decl.localName ? decl.base : `${decl.base}: ${decl.localName}`);
628
+ const renderImport = (hoist, format) => format === 'esm'
629
+ ? `import { ${hoist.decls.map(esmBinding).join(', ')} } from '${hoist.specifier}';`
630
+ : `const { ${hoist.decls.map(cjsBinding).join(', ')} } = require('${hoist.specifier}');`;
631
+ const applyEdits = (source, edits) => {
632
+ let code = source;
633
+ for (const edit of index_cjs_js$3.from(edits).sort((a, b) => b.start - a.start))
634
+ code = `${code.slice(0, edit.start)}${edit.text}${code.slice(edit.end)}`;
635
+ // why: splicing whole statements leaves runs of blank lines; collapse them so the trimmed entry stays readable.
636
+ return code.replace(/\n{3,}/g, '\n\n');
637
+ };
638
+ // why: liveness over-approximates — every identifier node (property names included) counts as a use, so trimming an import can only drop a name nothing references, never one that survives.
639
+ const collectIdentifierNames = (source) => {
640
+ const names = index_cjs_js$1.createSet([]);
641
+ const visit = (node) => {
642
+ if (ts__default.default.isIdentifier(node))
643
+ names.add(node.text);
644
+ ts__default.default.forEachChild(node, visit);
645
+ };
646
+ visit(parseChunk(source));
647
+ return names;
648
+ };
649
+ /**
650
+ * Rewrites an entry bundle to consume hoisted modules from `_shared/` chunks
651
+ * instead of inlining them.
652
+ *
653
+ * Splices every hoisted declaration (and its leading comments) out of the entry
654
+ * and prepends an import/`require` binding the chunk's base export to the
655
+ * entry's local name — aliasing when rollup renamed the local (`foo as foo$1`).
656
+ * Only the hoisted symbols the entry still references after splicing are
657
+ * re-imported: a private helper used solely by another hoisted export (e.g. a
658
+ * reducer's `handlers`, used only by the hoisted `rootReducer`) is seen as dead
659
+ * against the spliced body and omitted from the import, while the chunk it lives
660
+ * in keeps it. The bundle's export surface is left untouched: surviving spliced
661
+ * names are now supplied by the inserted imports, so the published API is
662
+ * byte-for-byte identical to before.
663
+ *
664
+ * @param parsed - The parsed entry bundle.
665
+ * @param hoists - The modules hoisted out of this entry, each with its chunk specifier.
666
+ * @param format - Output module format.
667
+ * @returns The rewritten entry source, or the original source when `hoists` is empty.
668
+ *
669
+ * @example Rewriting an entry to import a shared module
670
+ * ```typescript
671
+ * const rewritten = rewriteEntry(parseEntry(source, 'esm'), [{ decls, specifier: './_shared/state/index.esm.js' }], 'esm')
672
+ * ```
673
+ */
674
+ const rewriteEntry = (parsed, hoists, format) => {
675
+ if (hoists.length === 0)
676
+ return parsed.sourceFile.text;
677
+ const deletions = [];
678
+ for (const hoist of hoists)
679
+ for (const decl of hoist.decls)
680
+ deletions.push({ start: decl.statement.getFullStart(), end: decl.statement.getEnd(), text: '' });
681
+ // why: liveness is measured on the body WITHOUT the hoisted decls (and before re-inserting imports), so a private symbol used only by another hoisted decl (e.g. `handlers`, used only by the hoisted `rootReducer`) is correctly seen as dead and never re-imported.
682
+ const spliced = applyEdits(parsed.sourceFile.text, deletions);
683
+ const live = collectIdentifierNames(spliced);
684
+ const liveHoists = hoists
685
+ .map((hoist) => ({ ...hoist, decls: hoist.decls.filter((decl) => live.has(decl.localName)) }))
686
+ .filter((hoist) => hoist.decls.length > 0);
687
+ if (liveHoists.length === 0)
688
+ return spliced;
689
+ const block = liveHoists.map((hoist) => renderImport(hoist, format)).join('\n');
690
+ const insertion = parsed.headerEnd > 0 ? `\n${block}` : `${block}\n`;
691
+ return applyEdits(parsed.sourceFile.text, [...deletions, { start: parsed.headerEnd, end: parsed.headerEnd, text: insertion }]);
692
+ };
693
+
694
+ const log = index_cjs_js$4.logger.channel('builder:bundle:dedupe');
695
+ const FORMATS = ['esm', 'cjs'];
696
+ const toSpecifier = (relative) => (relative.startsWith('.') ? relative : `./${relative}`);
697
+ const recomputeSpecifier = (specifier, fromDir, baseDir) =>
698
+ // why: relative `_dependencies`/`_shared` edges move with the chunk; bare and node-builtin specifiers resolve identically from anywhere, so they pass through verbatim.
699
+ specifier.startsWith('.') ? toSpecifier(index_cjs_js$2.relativePath(fromDir, index_cjs_js$2.join(baseDir, specifier))) : specifier;
700
+ const locateEntries = (context, format) => {
701
+ const locations = [];
702
+ for (const entry of context.entryPointDiscovery.entryPoints) {
703
+ const dir = entryDirOf(entry, context);
704
+ const file = index_cjs_js$2.join(dir, chunkFileName(format));
705
+ if (index_cjs_js$2.exists(file))
706
+ locations.push({ dir, file });
707
+ }
708
+ return locations;
709
+ };
710
+ const chunkFileFor = (context, moduleKey, format) => index_cjs_js$2.join(context.outputPath, sharedDirFor(moduleKey), chunkFileName(format));
711
+ const buildChunkPlan = (planned, context, chunkDir, canonicalDir, format) => {
712
+ const crossImports = planned.resolution.crossModule.map((ref) => ({
713
+ ref: ref.ref,
714
+ exported: ref.base,
715
+ specifier: toSpecifier(index_cjs_js$2.relativePath(chunkDir, chunkFileFor(context, ref.moduleKey, format))),
716
+ }));
717
+ const depImports = planned.resolution.depImports.map((dep) => ({
718
+ ref: dep.ref,
719
+ kind: dep.binding.kind,
720
+ imported: dep.binding.imported,
721
+ specifier: recomputeSpecifier(dep.binding.specifier, chunkDir, canonicalDir),
722
+ }));
723
+ return { decls: planned.decls, crossImports, depImports };
724
+ };
725
+ const writeChunks = (context, plan, locations, format, report) => {
726
+ for (const [moduleKey, planned] of plan) {
727
+ const chunkDir = index_cjs_js$2.join(context.outputPath, sharedDirFor(moduleKey));
728
+ const chunkPlan = buildChunkPlan(planned, context, chunkDir, locations[planned.canonicalEntryIndex].dir, format);
729
+ const source = renderChunk(chunkPlan, format);
730
+ index_cjs_js$2.ensureDir(chunkDir);
731
+ index_cjs_js$2.writeFileContent(chunkFileFor(context, moduleKey, format), source);
732
+ report.chunksWritten += 1;
733
+ report.bytesReclaimed -= Buffer.byteLength(source);
734
+ }
735
+ };
736
+ const rewriteEntries = (context, plan, entries, locations, format, report) => {
737
+ for (const [index, entry] of entries.entries()) {
738
+ const hoists = [];
739
+ for (const [moduleKey] of plan) {
740
+ const decls = entry.byModule.get(moduleKey);
741
+ if (decls === undefined)
742
+ continue;
743
+ hoists.push({
744
+ decls,
745
+ specifier: toSpecifier(index_cjs_js$2.relativePath(locations[index].dir, chunkFileFor(context, moduleKey, format))),
746
+ });
747
+ for (const decl of decls)
748
+ report.bytesReclaimed += Buffer.byteLength(decl.text);
749
+ }
750
+ if (hoists.length > 0)
751
+ index_cjs_js$2.writeFileContent(locations[index].file, rewriteEntry(entry.parsed, hoists, format));
752
+ }
753
+ };
754
+ const processFormat = (context, owners, format, report) => {
755
+ const locations = locateEntries(context, format);
756
+ if (locations.length < 2)
757
+ return;
758
+ const entries = locations.map((location) => {
759
+ const parsed = parseEntry(index_cjs_js$2.readFileContent(location.file), format);
760
+ return { parsed, byModule: attribute(parsed, owners) };
761
+ });
762
+ const plan = planHoists(entries, owners);
763
+ if (plan.size === 0)
764
+ return;
765
+ writeChunks(context, plan, locations, format, report);
766
+ rewriteEntries(context, plan, entries, locations, format, report);
767
+ };
768
+ /**
769
+ * Lifts first-party modules that are inlined into multiple entry bundles into
770
+ * shared `_shared/<srcPath>/index.<fmt>.js` chunks and rewrites every consuming
771
+ * entry to import them.
772
+ *
773
+ * Runs as an additive post-emit pass over the already-bundled `esm` and `cjs`
774
+ * outputs, each processed independently; `iife`/`umd`/`bin` and `.d.ts` outputs
775
+ * are never read. Per-entry isolated bundling is untouched. Every hoist is
776
+ * proven safe by {@link planHoists} before it happens — structurally identical
777
+ * copies, resolvable references, and cycle-free module-initialization — so any module
778
+ * that cannot be proven safe is left inlined and the output is, worst case,
779
+ * identical to the input.
780
+ *
781
+ * @param context - Resolved build context. `outputPath` locates the bundles and
782
+ * `projectRoot/src` drives ownership attribution.
783
+ * @param monitor - Optional memory monitor; a checkpoint is captured after each
784
+ * format so the pass is observable.
785
+ * @returns Counts of chunks written and net bytes reclaimed.
786
+ *
787
+ * @example Hoisting after the dependency prune
788
+ * ```typescript
789
+ * const report = hoistSharedFirstParty(context, monitor)
790
+ * ```
791
+ */
792
+ const hoistSharedFirstParty = (context, monitor) => {
793
+ const report = { chunksWritten: 0, bytesReclaimed: 0 };
794
+ const srcRoot = index_cjs_js$2.join(context.projectRoot, 'src');
795
+ if (!index_cjs_js$2.exists(srcRoot))
796
+ return report;
797
+ const owners = indexOwners(srcRoot);
798
+ for (const format of FORMATS) {
799
+ processFormat(context, owners, format, report);
800
+ monitor?.check(`bundle:dedupe:shared-first-party:${format}:end`);
801
+ }
802
+ if (report.chunksWritten > 0)
803
+ log.info(`hoisted ${report.chunksWritten} shared chunk(s), reclaimed ${report.bytesReclaimed} byte(s)`);
804
+ return report;
805
+ };
806
+
807
+ exports.attribute = attribute;
808
+ exports.baseName = baseName;
809
+ exports.chunkFileName = chunkFileName;
810
+ exports.fingerprintOf = fingerprintOf;
811
+ exports.hoistSharedFirstParty = hoistSharedFirstParty;
812
+ exports.indexOwners = indexOwners;
813
+ exports.parseEntry = parseEntry;
814
+ exports.planHoists = planHoists;
815
+ exports.renderChunk = renderChunk;
816
+ exports.resolveModuleRefs = resolveModuleRefs;
817
+ exports.rewriteEntry = rewriteEntry;
818
+ exports.sharedDirFor = sharedDirFor;