@atlaspack/core 2.16.2-canary.48 → 2.16.2-canary.481

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 (380) hide show
  1. package/CHANGELOG.md +1324 -0
  2. package/dist/AssetGraph.js +523 -0
  3. package/dist/Atlaspack.js +701 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +117 -0
  6. package/dist/BundleGraph.js +1906 -0
  7. package/dist/CommittedAsset.js +142 -0
  8. package/dist/Dependency.js +125 -0
  9. package/dist/Environment.js +132 -0
  10. package/dist/EnvironmentManager.js +108 -0
  11. package/dist/IdentifierRegistry.js +38 -0
  12. package/dist/InternalConfig.js +37 -0
  13. package/dist/PackagerRunner.js +470 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1297 -0
  16. package/dist/SymbolPropagation.js +624 -0
  17. package/dist/TargetDescriptor.schema.js +146 -0
  18. package/dist/Transformation.js +514 -0
  19. package/dist/UncommittedAsset.js +310 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +384 -0
  22. package/dist/assetUtils.js +169 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +83 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +114 -0
  25. package/dist/atlaspack-v3/fs.js +53 -0
  26. package/dist/atlaspack-v3/index.js +25 -0
  27. package/dist/atlaspack-v3/jsCallable.js +16 -0
  28. package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
  29. package/dist/atlaspack-v3/worker/compat/bitflags.js +98 -0
  30. package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
  31. package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
  32. package/dist/atlaspack-v3/worker/compat/index.js +24 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +64 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-options.js +137 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  37. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  38. package/dist/atlaspack-v3/worker/side-effect-detector.js +243 -0
  39. package/dist/atlaspack-v3/worker/worker.js +398 -0
  40. package/dist/constants.js +17 -0
  41. package/dist/dumpGraphToGraphViz.js +281 -0
  42. package/dist/index.js +62 -0
  43. package/dist/loadAtlaspackPlugin.js +128 -0
  44. package/dist/loadDotEnv.js +41 -0
  45. package/dist/projectPath.js +83 -0
  46. package/dist/public/Asset.js +279 -0
  47. package/dist/public/Bundle.js +224 -0
  48. package/dist/public/BundleGraph.js +371 -0
  49. package/dist/public/BundleGroup.js +53 -0
  50. package/dist/public/Config.js +286 -0
  51. package/dist/public/Dependency.js +138 -0
  52. package/dist/public/Environment.js +278 -0
  53. package/dist/public/MutableBundleGraph.js +277 -0
  54. package/dist/public/PluginOptions.js +80 -0
  55. package/dist/public/Symbols.js +248 -0
  56. package/dist/public/Target.js +69 -0
  57. package/dist/registerCoreWithSerializer.js +38 -0
  58. package/dist/requests/AssetGraphRequest.js +430 -0
  59. package/dist/requests/AssetGraphRequestRust.js +471 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +98 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +381 -0
  64. package/dist/requests/BundleGraphRequestRust.js +324 -0
  65. package/dist/requests/BundleGraphRequestUtils.js +262 -0
  66. package/dist/requests/ConfigRequest.js +246 -0
  67. package/dist/requests/DevDepRequest.js +204 -0
  68. package/dist/requests/EntryRequest.js +314 -0
  69. package/dist/requests/PackageRequest.js +89 -0
  70. package/dist/requests/PathRequest.js +349 -0
  71. package/dist/requests/TargetRequest.js +1316 -0
  72. package/dist/requests/ValidationRequest.js +49 -0
  73. package/dist/requests/WriteBundleRequest.js +522 -0
  74. package/dist/requests/WriteBundlesRequest.js +190 -0
  75. package/dist/requests/asset-graph-diff.js +128 -0
  76. package/dist/requests/asset-graph-dot.js +131 -0
  77. package/dist/resolveOptions.js +267 -0
  78. package/dist/rustWorkerThreadDylibHack.js +19 -0
  79. package/dist/serializerCore.browser.js +43 -0
  80. package/dist/summarizeRequest.js +39 -0
  81. package/dist/types.js +31 -0
  82. package/dist/utils.js +172 -0
  83. package/dist/worker.js +123 -0
  84. package/lib/AssetGraph.js +53 -15
  85. package/lib/Atlaspack.js +140 -56
  86. package/lib/AtlaspackConfig.js +17 -6
  87. package/lib/AtlaspackConfig.schema.js +16 -5
  88. package/lib/BundleGraph.js +390 -43
  89. package/lib/CommittedAsset.js +8 -2
  90. package/lib/Dependency.js +9 -3
  91. package/lib/Environment.js +16 -10
  92. package/lib/EnvironmentManager.js +143 -0
  93. package/lib/IdentifierRegistry.js +2 -4
  94. package/lib/InternalConfig.js +3 -2
  95. package/lib/PackagerRunner.js +46 -82
  96. package/lib/ReporterRunner.js +8 -12
  97. package/lib/RequestTracker.js +191 -152
  98. package/lib/SymbolPropagation.js +52 -29
  99. package/lib/TargetDescriptor.schema.js +10 -1
  100. package/lib/Transformation.js +68 -19
  101. package/lib/UncommittedAsset.js +17 -24
  102. package/lib/Validation.js +20 -5
  103. package/lib/applyRuntimes.js +98 -7
  104. package/lib/assetUtils.js +16 -6
  105. package/lib/atlaspack-v3/AtlaspackV3.js +58 -15
  106. package/lib/atlaspack-v3/NapiWorkerPool.js +63 -2
  107. package/lib/atlaspack-v3/fs.js +4 -1
  108. package/lib/atlaspack-v3/index.js +28 -1
  109. package/lib/atlaspack-v3/jsCallable.js +0 -2
  110. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  111. package/lib/atlaspack-v3/worker/compat/bitflags.js +31 -25
  112. package/lib/atlaspack-v3/worker/compat/dependency.js +4 -1
  113. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  114. package/lib/atlaspack-v3/worker/compat/index.js +0 -11
  115. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +16 -11
  116. package/lib/atlaspack-v3/worker/compat/plugin-config.js +14 -35
  117. package/lib/atlaspack-v3/worker/compat/plugin-options.js +16 -2
  118. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  119. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  120. package/lib/atlaspack-v3/worker/index.js +3 -0
  121. package/lib/atlaspack-v3/worker/side-effect-detector.js +214 -0
  122. package/lib/atlaspack-v3/worker/worker.js +231 -79
  123. package/lib/constants.js +0 -1
  124. package/lib/dumpGraphToGraphViz.js +72 -17
  125. package/lib/index.js +46 -3
  126. package/lib/loadAtlaspackPlugin.js +2 -3
  127. package/lib/loadDotEnv.js +5 -2
  128. package/lib/projectPath.js +6 -1
  129. package/lib/public/Asset.js +22 -12
  130. package/lib/public/Bundle.js +16 -18
  131. package/lib/public/BundleGraph.js +27 -25
  132. package/lib/public/BundleGroup.js +5 -6
  133. package/lib/public/Config.js +118 -18
  134. package/lib/public/Dependency.js +9 -7
  135. package/lib/public/Environment.js +13 -8
  136. package/lib/public/MutableBundleGraph.js +56 -15
  137. package/lib/public/PluginOptions.js +2 -2
  138. package/lib/public/Symbols.js +12 -12
  139. package/lib/public/Target.js +8 -7
  140. package/lib/registerCoreWithSerializer.js +7 -4
  141. package/lib/requests/AssetGraphRequest.js +61 -40
  142. package/lib/requests/AssetGraphRequestRust.js +314 -82
  143. package/lib/requests/AssetRequest.js +24 -7
  144. package/lib/requests/AtlaspackBuildRequest.js +53 -7
  145. package/lib/requests/AtlaspackConfigRequest.js +29 -19
  146. package/lib/requests/BundleGraphRequest.js +61 -130
  147. package/lib/requests/BundleGraphRequestRust.js +381 -0
  148. package/lib/requests/BundleGraphRequestUtils.js +280 -0
  149. package/lib/requests/ConfigRequest.js +55 -7
  150. package/lib/requests/DevDepRequest.js +32 -6
  151. package/lib/requests/EntryRequest.js +4 -3
  152. package/lib/requests/PackageRequest.js +56 -12
  153. package/lib/requests/PathRequest.js +26 -6
  154. package/lib/requests/TargetRequest.js +129 -60
  155. package/lib/requests/ValidationRequest.js +6 -2
  156. package/lib/requests/WriteBundleRequest.js +329 -20
  157. package/lib/requests/WriteBundlesRequest.js +64 -10
  158. package/lib/requests/asset-graph-diff.js +13 -8
  159. package/lib/requests/asset-graph-dot.js +2 -8
  160. package/lib/resolveOptions.js +37 -14
  161. package/lib/rustWorkerThreadDylibHack.js +0 -1
  162. package/lib/serializerCore.browser.js +1 -2
  163. package/lib/summarizeRequest.js +1 -1
  164. package/lib/types/AssetGraph.d.ts +55 -0
  165. package/lib/types/Atlaspack.d.ts +52 -0
  166. package/lib/types/AtlaspackConfig.d.ts +65 -0
  167. package/lib/types/AtlaspackConfig.schema.d.ts +53 -0
  168. package/lib/types/BundleGraph.d.ts +232 -0
  169. package/lib/types/CommittedAsset.d.ts +23 -0
  170. package/lib/types/Dependency.d.ts +44 -0
  171. package/lib/types/Environment.d.ts +11 -0
  172. package/lib/types/EnvironmentManager.d.ts +37 -0
  173. package/lib/types/IdentifierRegistry.d.ts +6 -0
  174. package/lib/types/InternalConfig.d.ts +23 -0
  175. package/lib/types/PackagerRunner.d.ts +85 -0
  176. package/lib/types/ReporterRunner.d.ts +25 -0
  177. package/lib/types/RequestTracker.d.ts +385 -0
  178. package/lib/types/SymbolPropagation.d.ts +11 -0
  179. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  180. package/lib/types/Transformation.d.ts +72 -0
  181. package/lib/types/UncommittedAsset.d.ts +61 -0
  182. package/lib/types/Validation.d.ts +37 -0
  183. package/lib/types/applyRuntimes.d.ts +25 -0
  184. package/lib/types/assetUtils.d.ts +42 -0
  185. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +35 -0
  186. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +13 -0
  187. package/lib/types/atlaspack-v3/fs.d.ts +13 -0
  188. package/lib/types/atlaspack-v3/index.d.ts +6 -0
  189. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  190. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  191. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +14 -0
  192. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  193. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  194. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -2
  195. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  196. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +29 -0
  197. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +23 -0
  198. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  199. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  200. package/lib/types/atlaspack-v3/worker/side-effect-detector.d.ts +76 -0
  201. package/lib/types/atlaspack-v3/worker/worker.d.ts +81 -0
  202. package/lib/types/constants.d.ts +13 -0
  203. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  204. package/lib/types/index.d.ts +8 -0
  205. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  206. package/lib/types/loadDotEnv.d.ts +3 -0
  207. package/lib/types/projectPath.d.ts +19 -0
  208. package/lib/types/public/Asset.d.ts +74 -0
  209. package/lib/types/public/Bundle.d.ts +45 -0
  210. package/lib/types/public/BundleGraph.d.ts +72 -0
  211. package/lib/types/public/BundleGroup.d.ts +12 -0
  212. package/lib/types/public/Config.d.ts +75 -0
  213. package/lib/types/public/Dependency.d.ts +32 -0
  214. package/lib/types/public/Environment.d.ts +34 -0
  215. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  216. package/lib/types/public/PluginOptions.d.ts +25 -0
  217. package/lib/types/public/Symbols.d.ts +81 -0
  218. package/lib/types/public/Target.d.ts +16 -0
  219. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  220. package/lib/types/requests/AssetGraphRequest.d.ts +76 -0
  221. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  222. package/lib/types/requests/AssetRequest.d.ts +16 -0
  223. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  224. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  225. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  226. package/lib/types/requests/BundleGraphRequestRust.d.ts +34 -0
  227. package/lib/types/requests/BundleGraphRequestUtils.d.ts +38 -0
  228. package/lib/types/requests/ConfigRequest.d.ts +67 -0
  229. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  230. package/lib/types/requests/EntryRequest.d.ts +36 -0
  231. package/lib/types/requests/PackageRequest.d.ts +27 -0
  232. package/lib/types/requests/PathRequest.d.ts +48 -0
  233. package/lib/types/requests/TargetRequest.d.ts +48 -0
  234. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  235. package/lib/types/requests/WriteBundleRequest.d.ts +80 -0
  236. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  237. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  238. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  239. package/lib/types/resolveOptions.d.ts +3 -0
  240. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  241. package/lib/types/serializerCore.browser.d.ts +3 -0
  242. package/lib/types/summarizeRequest.d.ts +10 -0
  243. package/lib/types/types.d.ts +496 -0
  244. package/lib/types/utils.d.ts +23 -0
  245. package/lib/types/worker.d.ts +44 -0
  246. package/lib/types.js +8 -1
  247. package/lib/utils.js +18 -3
  248. package/lib/worker.js +32 -15
  249. package/package.json +26 -36
  250. package/src/{AssetGraph.js → AssetGraph.ts} +87 -51
  251. package/src/{Atlaspack.js → Atlaspack.ts} +181 -72
  252. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +25 -19
  253. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  254. package/src/{BundleGraph.js → BundleGraph.ts} +575 -145
  255. package/src/{CommittedAsset.js → CommittedAsset.ts} +15 -13
  256. package/src/{Dependency.js → Dependency.ts} +59 -42
  257. package/src/{Environment.js → Environment.ts} +24 -15
  258. package/src/EnvironmentManager.ts +154 -0
  259. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  260. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  261. package/src/{PackagerRunner.js → PackagerRunner.ts} +114 -159
  262. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  263. package/src/{RequestTracker.js → RequestTracker.ts} +444 -355
  264. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +178 -61
  265. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +10 -1
  266. package/src/{Transformation.js → Transformation.ts} +110 -65
  267. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +45 -49
  268. package/src/{Validation.js → Validation.ts} +32 -17
  269. package/src/{applyRuntimes.js → applyRuntimes.ts} +135 -26
  270. package/src/{assetUtils.js → assetUtils.ts} +49 -36
  271. package/src/atlaspack-v3/AtlaspackV3.ts +183 -0
  272. package/src/atlaspack-v3/NapiWorkerPool.ts +129 -0
  273. package/src/atlaspack-v3/{fs.js → fs.ts} +8 -4
  274. package/src/atlaspack-v3/{index.js → index.ts} +3 -4
  275. package/src/atlaspack-v3/jsCallable.ts +14 -0
  276. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  277. package/src/atlaspack-v3/worker/compat/bitflags.ts +102 -0
  278. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +13 -13
  279. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  280. package/src/atlaspack-v3/worker/compat/index.ts +8 -0
  281. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +21 -20
  282. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +25 -56
  283. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +19 -5
  284. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  285. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  286. package/src/atlaspack-v3/worker/index.js +2 -1
  287. package/src/atlaspack-v3/worker/side-effect-detector.ts +298 -0
  288. package/src/atlaspack-v3/worker/worker.ts +548 -0
  289. package/src/{constants.js → constants.ts} +0 -3
  290. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  291. package/src/index.ts +18 -0
  292. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  293. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  294. package/src/{projectPath.js → projectPath.ts} +20 -9
  295. package/src/public/{Asset.js → Asset.ts} +41 -28
  296. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  297. package/src/public/{BundleGraph.js → BundleGraph.ts} +103 -68
  298. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  299. package/src/public/{Config.js → Config.ts} +171 -33
  300. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  301. package/src/public/{Environment.js → Environment.ts} +28 -17
  302. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  303. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  304. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  305. package/src/public/{Target.js → Target.ts} +10 -8
  306. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  307. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +117 -90
  308. package/src/requests/AssetGraphRequestRust.ts +557 -0
  309. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  310. package/src/requests/AtlaspackBuildRequest.ts +168 -0
  311. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  312. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +119 -199
  313. package/src/requests/BundleGraphRequestRust.ts +470 -0
  314. package/src/requests/BundleGraphRequestUtils.ts +323 -0
  315. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +110 -50
  316. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  317. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  318. package/src/requests/{PackageRequest.js → PackageRequest.ts} +52 -25
  319. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  320. package/src/requests/{TargetRequest.js → TargetRequest.ts} +265 -179
  321. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  322. package/src/requests/WriteBundleRequest.ts +734 -0
  323. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +134 -50
  324. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  325. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  326. package/src/{resolveOptions.js → resolveOptions.ts} +57 -27
  327. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  328. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  329. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  330. package/src/types.ts +651 -0
  331. package/src/{utils.js → utils.ts} +52 -21
  332. package/src/{worker.js → worker.ts} +50 -42
  333. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +5 -8
  334. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  335. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  336. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +76 -16
  337. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  338. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  339. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  340. package/test/Environment.test.ts +153 -0
  341. package/test/EnvironmentManager.test.ts +188 -0
  342. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  343. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  344. package/test/PackagerRunner.test.ts +0 -0
  345. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  346. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  347. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  348. package/test/PublicEnvironment.test.ts +49 -0
  349. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  350. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +136 -58
  351. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  352. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +91 -92
  353. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  354. package/test/fixtures/custom-targets/package.json +6 -0
  355. package/test/public/Config.test.ts +104 -0
  356. package/test/requests/AssetGraphRequestRust.test.ts +443 -0
  357. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  358. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  359. package/test/requests/WriteBundleRequest.test.ts +602 -0
  360. package/test/{test-utils.js → test-utils.ts} +3 -4
  361. package/test/{utils.test.js → utils.test.ts} +1 -3
  362. package/tsconfig.json +60 -0
  363. package/tsconfig.tsbuildinfo +1 -0
  364. package/index.d.ts +0 -30
  365. package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
  366. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  367. package/src/atlaspack-v3/NapiWorkerPool.js +0 -53
  368. package/src/atlaspack-v3/jsCallable.js +0 -18
  369. package/src/atlaspack-v3/worker/compat/bitflags.js +0 -100
  370. package/src/atlaspack-v3/worker/compat/plugin-logger.js +0 -47
  371. package/src/atlaspack-v3/worker/worker.js +0 -369
  372. package/src/index.js +0 -13
  373. package/src/requests/AssetGraphRequestRust.js +0 -263
  374. package/src/requests/AtlaspackBuildRequest.js +0 -111
  375. package/src/requests/WriteBundleRequest.js +0 -369
  376. package/src/types.js +0 -600
  377. package/test/Environment.test.js +0 -119
  378. package/test/PackagerRunner.test.js +0 -27
  379. package/test/PublicEnvironment.test.js +0 -27
  380. package/test/requests/AssetGraphRequestRust.test.js +0 -411
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = createBundleGraphRequestRust;
7
+ exports.getBundleGraph = getBundleGraph;
8
+ function _assert() {
9
+ const data = _interopRequireDefault(require("assert"));
10
+ _assert = function () {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ function _diagnostic() {
16
+ const data = _interopRequireDefault(require("@atlaspack/diagnostic"));
17
+ _diagnostic = function () {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
22
+ function _graph() {
23
+ const data = require("@atlaspack/graph");
24
+ _graph = function () {
25
+ return data;
26
+ };
27
+ return data;
28
+ }
29
+ function _logger() {
30
+ const data = require("@atlaspack/logger");
31
+ _logger = function () {
32
+ return data;
33
+ };
34
+ return data;
35
+ }
36
+ function _featureFlags() {
37
+ const data = require("@atlaspack/feature-flags");
38
+ _featureFlags = function () {
39
+ return data;
40
+ };
41
+ return data;
42
+ }
43
+ var _BundleGraph = _interopRequireWildcard(require("../BundleGraph"));
44
+ var _ReporterRunner = require("../ReporterRunner");
45
+ var _dumpGraphToGraphViz = _interopRequireDefault(require("../dumpGraphToGraphViz"));
46
+ function _nullthrows() {
47
+ const data = _interopRequireDefault(require("nullthrows"));
48
+ _nullthrows = function () {
49
+ return data;
50
+ };
51
+ return data;
52
+ }
53
+ function _rust() {
54
+ const data = require("@atlaspack/rust");
55
+ _rust = function () {
56
+ return data;
57
+ };
58
+ return data;
59
+ }
60
+ var _PluginOptions = _interopRequireDefault(require("../public/PluginOptions"));
61
+ var _applyRuntimes = _interopRequireDefault(require("../applyRuntimes"));
62
+ var _constants = require("../constants");
63
+ var _utils = require("../utils");
64
+ var _DevDepRequest = require("./DevDepRequest");
65
+ var _RequestTracker = require("../RequestTracker");
66
+ var _AtlaspackConfigRequest = _interopRequireWildcard(require("./AtlaspackConfigRequest"));
67
+ var _BundleGraphRequestUtils = require("./BundleGraphRequestUtils");
68
+ var _EnvironmentManager = require("../EnvironmentManager");
69
+ var _Environment = require("../Environment");
70
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
71
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
72
+ function createBundleGraphRequestRust(input) {
73
+ return {
74
+ type: _RequestTracker.requestTypes.bundle_graph_request,
75
+ id: 'BundleGraphRust',
76
+ run: async runInput => {
77
+ const {
78
+ api,
79
+ options,
80
+ rustAtlaspack
81
+ } = runInput;
82
+ (0, _assert().default)(rustAtlaspack, 'BundleGraphRequestRust requires rustAtlaspack');
83
+ let {
84
+ bundleGraphPromise,
85
+ commitPromise
86
+ } = await rustAtlaspack.buildBundleGraph(eventJson => {
87
+ let event = JSON.parse(eventJson);
88
+ (0, _ReporterRunner.report)(event);
89
+ });
90
+ let [serializedBundleGraph, bundleGraphError] = await bundleGraphPromise;
91
+ if (bundleGraphError) {
92
+ throw new (_diagnostic().default)({
93
+ diagnostic: bundleGraphError
94
+ });
95
+ }
96
+
97
+ // Don’t reuse previous JS result yet; we just rebuild from scratch.
98
+ let {
99
+ bundleGraph,
100
+ changedAssets
101
+ } = (0, _logger().instrument)('atlaspack_v3_getBundleGraph', () => getBundleGraph(serializedBundleGraph));
102
+ (0, _BundleGraphRequestUtils.dumpBundleGraphSnapshot)(bundleGraph, 'rust');
103
+ const runner = new NativeBundlerRunner({
104
+ api,
105
+ options
106
+ }, input.optionsRef);
107
+ await runner.loadConfigs();
108
+
109
+ // Name all bundles
110
+ const namers = await runner.config.getNamers();
111
+ const bundles = bundleGraph.getBundles({
112
+ includeInline: true
113
+ });
114
+ await Promise.all(bundles.map(b => (0, _BundleGraphRequestUtils.nameBundle)(namers, b, bundleGraph, options, runner.pluginOptions, runner.configs)));
115
+
116
+ // Apply runtimes
117
+ const changedRuntimes = await (0, _logger().instrumentAsync)('applyRuntimes', () => (0, _applyRuntimes.default)({
118
+ bundleGraph,
119
+ api,
120
+ config: runner.config,
121
+ options,
122
+ optionsRef: input.optionsRef,
123
+ pluginOptions: runner.pluginOptions,
124
+ previousDevDeps: runner.previousDevDeps,
125
+ devDepRequests: runner.devDepRequests,
126
+ configs: runner.configs
127
+ }));
128
+
129
+ // Add dev deps for namers
130
+ for (const namer of namers) {
131
+ const devDepRequest = await (0, _DevDepRequest.createDevDependency)({
132
+ specifier: namer.name,
133
+ resolveFrom: namer.resolveFrom
134
+ }, runner.previousDevDeps, options);
135
+ await (0, _BundleGraphRequestUtils.runDevDepRequest)(api, devDepRequest, runner.devDepRequests);
136
+ }
137
+ (0, _BundleGraphRequestUtils.validateBundles)(bundleGraph);
138
+ bundleGraph.getBundleGraphHash();
139
+ await (0, _dumpGraphToGraphViz.default)(
140
+ // @ts-expect-error Accessing internal graph for debug output
141
+ bundleGraph._graph, 'after_runtimes_native', _BundleGraph.bundleGraphEdgeTypes);
142
+ let [_commitResult, commitError] = await commitPromise;
143
+ if (commitError) {
144
+ throw new (_diagnostic().default)({
145
+ diagnostic: {
146
+ message: 'Error committing bundle graph in Rust: ' + commitError.message
147
+ }
148
+ });
149
+ }
150
+ return {
151
+ bundleGraph,
152
+ changedAssets: changedRuntimes,
153
+ assetRequests: [],
154
+ didIncrementallyBundle: false
155
+ };
156
+ },
157
+ input
158
+ };
159
+ }
160
+ function mapSymbols({
161
+ exported,
162
+ ...symbol
163
+ }) {
164
+ let jsSymbol = {
165
+ local: symbol.local ?? undefined,
166
+ loc: symbol.loc ?? undefined,
167
+ isWeak: symbol.isWeak,
168
+ meta: {
169
+ isEsm: symbol.isEsmExport,
170
+ isStaticBindingSafe: symbol.isStaticBindingSafe
171
+ }
172
+ };
173
+ if (symbol.exported) {
174
+ jsSymbol.exported = symbol.exported;
175
+ }
176
+ return [exported, jsSymbol];
177
+ }
178
+ function normalizeEnv(env) {
179
+ if (!env) return env;
180
+ env.id = env.id || (0, _Environment.getEnvironmentHash)(env);
181
+ return (0, _EnvironmentManager.toEnvironmentRef)(env);
182
+ }
183
+ function getBundleGraph(serializedGraph) {
184
+ // Build a fresh internal bundle graph.
185
+ const publicIdByAssetId = new Map(Object.entries(serializedGraph.publicIdByAssetId ?? {}));
186
+ const assetPublicIds = new Set(serializedGraph.assetPublicIds ?? []);
187
+
188
+ // BundleGraph constructor expects a ContentGraph under `_graph`.
189
+ // We reuse the internal graph class by creating an empty instance and then adding nodes.
190
+ const graph = new _BundleGraph.default({
191
+ // We intentionally start with an empty graph and add nodes/edges from the Rust payload.
192
+ // `ContentGraph` will allocate as needed.
193
+ graph: new (_graph().ContentGraph)(),
194
+ bundleContentHashes: new Map(),
195
+ publicIdByAssetId,
196
+ assetPublicIds,
197
+ conditions: new Map()
198
+ });
199
+
200
+ // Root must exist at node id 0.
201
+ const rootNodeId = graph._graph.addNodeByContentKey('@@root', {
202
+ id: '@@root',
203
+ type: 'root',
204
+ value: null
205
+ });
206
+ graph._graph.setRootNodeId(rootNodeId);
207
+ let entry = 0;
208
+ const changedAssets = new Map();
209
+ const decoder = new TextDecoder();
210
+
211
+ // Create nodes in order.
212
+ for (let i = 0; i < serializedGraph.nodes.length; i++) {
213
+ // Nodes come back as buffers (same as AssetGraphRequestRust)
214
+ let node = JSON.parse(decoder.decode(serializedGraph.nodes[i]));
215
+ if (node.type === 'root') {
216
+ continue;
217
+ }
218
+ if (node.type === 'entry') {
219
+ let id = 'entry:' + ++entry;
220
+ graph._graph.addNodeByContentKey(id, {
221
+ id,
222
+ type: 'root',
223
+ value: null
224
+ });
225
+ continue;
226
+ }
227
+ if (node.type === 'asset') {
228
+ let asset = node.value;
229
+ let id = asset.id;
230
+ asset.committed = true;
231
+ asset.contentKey = id;
232
+ asset.env = {
233
+ ...asset.env
234
+ };
235
+ asset.env.id = (0, _featureFlags().getFeatureFlag)('environmentDeduplication') ? (0, _Environment.getEnvironmentHash)(asset.env) : (0, _Environment.getEnvironmentHash)(asset.env);
236
+ asset.env = normalizeEnv(asset.env);
237
+ asset.mapKey = `map:${asset.id}`;
238
+ asset.dependencies = new Map();
239
+ asset.meta.isV3 = true;
240
+ if (asset.symbols != null) {
241
+ asset.symbols = new Map(asset.symbols.map(mapSymbols));
242
+ }
243
+ changedAssets.set(id, asset);
244
+ const assetNode = {
245
+ id,
246
+ type: 'asset',
247
+ usedSymbols: new Set(),
248
+ usedSymbolsDownDirty: true,
249
+ usedSymbolsUpDirty: true,
250
+ value: asset
251
+ };
252
+ graph._graph.addNodeByContentKey(id, assetNode);
253
+ continue;
254
+ }
255
+ if (node.type === 'dependency') {
256
+ let {
257
+ dependency,
258
+ id
259
+ } = node.value;
260
+ dependency.id = id;
261
+ dependency.env = {
262
+ ...dependency.env
263
+ };
264
+ dependency.env.id = (0, _Environment.getEnvironmentHash)(dependency.env);
265
+ dependency.env = normalizeEnv(dependency.env);
266
+ if (dependency.symbols != null) {
267
+ var _dependency$symbols;
268
+ dependency.symbols = new Map((_dependency$symbols = dependency.symbols) === null || _dependency$symbols === void 0 ? void 0 : _dependency$symbols.map(mapSymbols));
269
+ }
270
+ let usedSymbolsDown = new Set();
271
+ let usedSymbolsUp = new Map();
272
+ if (dependency.isEntry && dependency.isLibrary) {
273
+ usedSymbolsDown.add('*');
274
+ usedSymbolsUp.set('*', undefined);
275
+ }
276
+ const depNode = {
277
+ id,
278
+ type: 'dependency',
279
+ deferred: false,
280
+ excluded: false,
281
+ hasDeferred: node.has_deferred,
282
+ // @ts-expect-error Flow types expect a more specific symbol set type
283
+ usedSymbolsDown,
284
+ usedSymbolsDownDirty: true,
285
+ usedSymbolsUp,
286
+ usedSymbolsUpDirtyDown: true,
287
+ usedSymbolsUpDirtyUp: true,
288
+ value: dependency
289
+ };
290
+ graph._graph.addNodeByContentKey(id, depNode);
291
+ continue;
292
+ }
293
+ if (node.type === 'bundle') {
294
+ node.value.env = normalizeEnv(node.value.env);
295
+ node.value.target.env = normalizeEnv(node.value.target.env);
296
+ graph._graph.addNodeByContentKey(node.id, node);
297
+ continue;
298
+ }
299
+ if (node.type === 'bundle_group' || node.type === 'bundleGroup') {
300
+ // Rust serializer may emit bundleGroup nodes either as `{id,type,value:{...}}`
301
+ // or as `{type:"bundleGroup", id, target, entryAssetId}`.
302
+ if (node.value == null) {
303
+ node.value = {
304
+ target: node.target,
305
+ entryAssetId: node.entryAssetId ?? node.entry_asset_id
306
+ };
307
+ }
308
+
309
+ // Normalize entry asset id field naming
310
+ if (node.value.entryAssetId == null && node.value.entry_asset_id != null) {
311
+ node.value.entryAssetId = node.value.entry_asset_id;
312
+ }
313
+ node.value.target.env = normalizeEnv(node.value.target.env);
314
+ // Normalise to the expected snake_case type
315
+ node.type = 'bundle_group';
316
+ graph._graph.addNodeByContentKey(node.id, node);
317
+ continue;
318
+ }
319
+ }
320
+
321
+ // Apply edges
322
+ for (let i = 0; i < serializedGraph.edges.length; i += 3) {
323
+ const from = serializedGraph.edges[i];
324
+ const to = serializedGraph.edges[i + 1];
325
+ const type = serializedGraph.edges[i + 2];
326
+ const fromNode = graph._graph.getNode(from);
327
+ const toNode = graph._graph.getNode(to);
328
+ if ((fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'asset' && (toNode === null || toNode === void 0 ? void 0 : toNode.type) === 'dependency') {
329
+ fromNode.value.dependencies.set(toNode.value.id, toNode.value);
330
+ }
331
+
332
+ // If we are adding a references edge, remove existing null edge.
333
+ if (type === _BundleGraph.bundleGraphEdgeTypes.references && graph._graph.hasEdge(from, to, _BundleGraph.bundleGraphEdgeTypes.null)) {
334
+ graph._graph.removeEdge(from, to, _BundleGraph.bundleGraphEdgeTypes.null);
335
+ }
336
+ graph._graph.addEdge(from, to, type);
337
+ }
338
+ return {
339
+ bundleGraph: graph,
340
+ changedAssets
341
+ };
342
+ }
343
+ class NativeBundlerRunner {
344
+ constructor({
345
+ api,
346
+ options
347
+ }, optionsRef) {
348
+ this.options = options;
349
+ this.api = api;
350
+ this.optionsRef = optionsRef;
351
+ this.previousDevDeps = new Map();
352
+ this.devDepRequests = new Map();
353
+ this.configs = new Map();
354
+ this.pluginOptions = new _PluginOptions.default((0, _utils.optionsProxy)(this.options, api.invalidateOnOptionChange));
355
+ const key = (0, _rust().hashString)(`${_constants.ATLASPACK_VERSION}:BundleGraph:${JSON.stringify(options.entries) ?? ''}${options.mode}${options.shouldBuildLazily ? 'lazy' : 'eager'}`);
356
+ this.cacheKey = `BundleGraph/${_constants.ATLASPACK_VERSION}/${options.mode}/${key}`;
357
+ }
358
+ async loadConfigs() {
359
+ const configResult = (0, _nullthrows().default)(await this.api.runRequest((0, _AtlaspackConfigRequest.default)()));
360
+ this.config = (0, _AtlaspackConfigRequest.getCachedAtlaspackConfig)(configResult, this.options);
361
+ const {
362
+ devDeps,
363
+ invalidDevDeps
364
+ } = await (0, _DevDepRequest.getDevDepRequests)(this.api);
365
+ this.previousDevDeps = devDeps;
366
+ (0, _DevDepRequest.invalidateDevDeps)(invalidDevDeps, this.options, this.config);
367
+ const bundler = await this.config.getBundler();
368
+ await this.loadPluginConfig(bundler);
369
+ const namers = await this.config.getNamers();
370
+ for (const namer of namers) {
371
+ await this.loadPluginConfig(namer);
372
+ }
373
+ const runtimes = await this.config.getRuntimes();
374
+ for (const runtime of runtimes) {
375
+ await this.loadPluginConfig(runtime);
376
+ }
377
+ }
378
+ async loadPluginConfig(plugin) {
379
+ await (0, _BundleGraphRequestUtils.loadPluginConfigWithDevDeps)(plugin, this.options, this.api, this.previousDevDeps, this.devDepRequests, this.configs);
380
+ }
381
+ }
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dumpBundleGraphSnapshot = dumpBundleGraphSnapshot;
7
+ exports.loadPluginConfigWithDevDeps = loadPluginConfigWithDevDeps;
8
+ exports.nameBundle = nameBundle;
9
+ exports.runDevDepRequest = runDevDepRequest;
10
+ exports.validateBundles = validateBundles;
11
+ function _assert() {
12
+ const data = _interopRequireDefault(require("assert"));
13
+ _assert = function () {
14
+ return data;
15
+ };
16
+ return data;
17
+ }
18
+ function _fs() {
19
+ const data = _interopRequireDefault(require("fs"));
20
+ _fs = function () {
21
+ return data;
22
+ };
23
+ return data;
24
+ }
25
+ function _nullthrows() {
26
+ const data = _interopRequireDefault(require("nullthrows"));
27
+ _nullthrows = function () {
28
+ return data;
29
+ };
30
+ return data;
31
+ }
32
+ function _path() {
33
+ const data = _interopRequireDefault(require("path"));
34
+ _path = function () {
35
+ return data;
36
+ };
37
+ return data;
38
+ }
39
+ function _logger() {
40
+ const data = require("@atlaspack/logger");
41
+ _logger = function () {
42
+ return data;
43
+ };
44
+ return data;
45
+ }
46
+ function _diagnostic() {
47
+ const data = _interopRequireWildcard(require("@atlaspack/diagnostic"));
48
+ _diagnostic = function () {
49
+ return data;
50
+ };
51
+ return data;
52
+ }
53
+ function _utils() {
54
+ const data = require("@atlaspack/utils");
55
+ _utils = function () {
56
+ return data;
57
+ };
58
+ return data;
59
+ }
60
+ var _BundleGraph = require("../BundleGraph");
61
+ var _BundleGraph2 = _interopRequireDefault(require("../public/BundleGraph"));
62
+ var _Bundle = require("../public/Bundle");
63
+ var _InternalConfig = require("../InternalConfig");
64
+ var _DevDepRequest = require("./DevDepRequest");
65
+ var _ConfigRequest = require("./ConfigRequest");
66
+ var _projectPath = require("../projectPath");
67
+ function _profiler() {
68
+ const data = require("@atlaspack/profiler");
69
+ _profiler = function () {
70
+ return data;
71
+ };
72
+ return data;
73
+ }
74
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
75
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
76
+ /**
77
+ * Shared utilities for BundleGraphRequest and BundleGraphRequestRust.
78
+ *
79
+ * This module contains common functionality used by both the JS and native
80
+ * bundling paths, such as bundle validation, naming, and configuration loading.
81
+ */
82
+
83
+ /**
84
+ * Validates that all bundles have unique names.
85
+ * Throws an assertion error if duplicate bundle names are found.
86
+ */
87
+ function validateBundles(bundleGraph) {
88
+ const bundles = bundleGraph.getBundles();
89
+ const bundleNames = bundles.map(b => (0, _projectPath.joinProjectPath)(b.target.distDir, (0, _nullthrows().default)(b.name)));
90
+ _assert().default.deepEqual(bundleNames, (0, _utils().unique)(bundleNames), 'Bundles must have unique name. Conflicting names: ' + [...(0, _utils().setSymmetricDifference)(new Set(bundleNames), new Set((0, _utils().unique)(bundleNames)))].join());
91
+ }
92
+
93
+ /**
94
+ * Dump a canonical JSON snapshot of the bundle graph for parity comparison.
95
+ * Gated by ATLASPACK_DUMP_BUNDLE_GRAPH environment variable which specifies the output directory.
96
+ * The snapshot captures bundle identity, type, contained assets, and bundle group structure
97
+ * in a deterministic, sorted format suitable for diffing.
98
+ */
99
+ function dumpBundleGraphSnapshot(bundleGraph, variant) {
100
+ let outDir = process.env.ATLASPACK_DUMP_BUNDLE_GRAPH;
101
+ if (!outDir) return;
102
+ let filename = variant === 'js' ? 'bundle-graph-js.json' : 'bundle-graph-rust.json';
103
+ let outPath = _path().default.join(outDir, filename);
104
+ _fs().default.mkdirSync(outDir, {
105
+ recursive: true
106
+ });
107
+ let bundles = bundleGraph.getBundles();
108
+ let bundlesSnapshot = bundles.map(bundle => {
109
+ let bundleNodeId = bundleGraph._graph.getNodeIdByContentKey(bundle.id);
110
+ let containedAssetNodeIds = bundleGraph._graph.getNodeIdsConnectedFrom(bundleNodeId, _BundleGraph.bundleGraphEdgeTypes.contains);
111
+ let containedAssets = containedAssetNodeIds.map(nodeId => bundleGraph._graph.getNode(nodeId)).flatMap(node => {
112
+ if ((node === null || node === void 0 ? void 0 : node.type) !== 'asset') return [];
113
+ return [{
114
+ id: node.value.id,
115
+ filePath: (0, _projectPath.fromProjectPathRelative)(node.value.filePath)
116
+ }];
117
+ }).sort((a, b) => a.filePath.localeCompare(b.filePath));
118
+
119
+ // Resolve mainEntry and entry asset file paths
120
+ let mainEntryPath = null;
121
+ let entryAssetPaths = [];
122
+ if (bundle.mainEntryId) {
123
+ let mainEntryNodeId = bundleGraph._graph.getNodeIdByContentKey(bundle.mainEntryId);
124
+ let mainEntryNode = bundleGraph._graph.getNode(mainEntryNodeId);
125
+ if ((mainEntryNode === null || mainEntryNode === void 0 ? void 0 : mainEntryNode.type) === 'asset') {
126
+ mainEntryPath = (0, _projectPath.fromProjectPathRelative)(mainEntryNode.value.filePath);
127
+ }
128
+ }
129
+ for (let entryId of bundle.entryAssetIds) {
130
+ let entryNodeId = bundleGraph._graph.getNodeIdByContentKey(entryId);
131
+ let entryNode = bundleGraph._graph.getNode(entryNodeId);
132
+ if ((entryNode === null || entryNode === void 0 ? void 0 : entryNode.type) === 'asset') {
133
+ entryAssetPaths.push((0, _projectPath.fromProjectPathRelative)(entryNode.value.filePath));
134
+ }
135
+ }
136
+ entryAssetPaths.sort();
137
+ return {
138
+ id: bundle.id,
139
+ type: bundle.type,
140
+ bundleBehavior: bundle.bundleBehavior ?? null,
141
+ needsStableName: bundle.needsStableName,
142
+ isSplittable: bundle.isSplittable,
143
+ isPlaceholder: bundle.isPlaceholder,
144
+ mainEntryPath,
145
+ entryAssetPaths,
146
+ assets: containedAssets.map(a => a.filePath)
147
+ };
148
+ }).sort((a, b) => {
149
+ // Sort by mainEntryPath first, then by sorted assets as tiebreaker
150
+ let aKey = a.mainEntryPath || a.assets.join(',');
151
+ let bKey = b.mainEntryPath || b.assets.join(',');
152
+ return aKey.localeCompare(bKey);
153
+ });
154
+ let bundleGroupsSnapshot = bundleGraph._graph.nodes.flatMap(node => {
155
+ if ((node === null || node === void 0 ? void 0 : node.type) !== 'bundle_group') return [];
156
+ let bundleGroup = node.value;
157
+
158
+ // Resolve entry asset file path
159
+ let entryAssetPath = null;
160
+ try {
161
+ let entryNodeId = bundleGraph._graph.getNodeIdByContentKey(bundleGroup.entryAssetId);
162
+ let entryNode = bundleGraph._graph.getNode(entryNodeId);
163
+ if ((entryNode === null || entryNode === void 0 ? void 0 : entryNode.type) === 'asset') {
164
+ entryAssetPath = (0, _projectPath.fromProjectPathRelative)(entryNode.value.filePath);
165
+ }
166
+ } catch {
167
+ // Content key not found
168
+ }
169
+ let bundlesInGroup = bundleGraph.getBundlesInBundleGroup(bundleGroup);
170
+ let bundlePaths = bundlesInGroup.map(b => {
171
+ // Use mainEntry file path if available, otherwise bundle id as fallback
172
+ if (b.mainEntryId) {
173
+ try {
174
+ let nodeId = bundleGraph._graph.getNodeIdByContentKey(b.mainEntryId);
175
+ let node = bundleGraph._graph.getNode(nodeId);
176
+ if ((node === null || node === void 0 ? void 0 : node.type) === 'asset') {
177
+ return (0, _projectPath.fromProjectPathRelative)(node.value.filePath);
178
+ }
179
+ } catch {
180
+ // fallback
181
+ }
182
+ }
183
+ return `[bundle:${b.id}]`;
184
+ }).sort();
185
+ return [{
186
+ entryAssetPath: entryAssetPath ?? `[unknown:${bundleGroup.entryAssetId}]`,
187
+ bundlePaths
188
+ }];
189
+ }).sort((a, b) => a.entryAssetPath.localeCompare(b.entryAssetPath));
190
+ let totalAssets = bundleGraph._graph.nodes.filter(node => (node === null || node === void 0 ? void 0 : node.type) === 'asset').length;
191
+ let snapshot = {
192
+ version: 1,
193
+ variant,
194
+ stats: {
195
+ totalBundles: bundlesSnapshot.length,
196
+ totalBundleGroups: bundleGroupsSnapshot.length,
197
+ totalAssets
198
+ },
199
+ bundles: bundlesSnapshot,
200
+ bundleGroups: bundleGroupsSnapshot
201
+ };
202
+ _fs().default.writeFileSync(outPath, JSON.stringify(snapshot, null, 2), 'utf8');
203
+ // eslint-disable-next-line no-console
204
+ console.log(`[BundleGraphSnapshot] Wrote ${variant} snapshot to ${outPath}`);
205
+ }
206
+
207
+ /**
208
+ * Names a bundle by running through the configured namers until one returns a name.
209
+ */
210
+ async function nameBundle(namers, internalBundle, internalBundleGraph, options, pluginOptions, configs) {
211
+ const bundle = _Bundle.Bundle.get(internalBundle, internalBundleGraph, options);
212
+ const bundleGraph = new _BundleGraph2.default(internalBundleGraph, _Bundle.NamedBundle.get.bind(_Bundle.NamedBundle), options);
213
+ for (const namer of namers) {
214
+ let measurement;
215
+ try {
216
+ var _configs$get;
217
+ measurement = _profiler().tracer.createMeasurement(namer.name, 'namer', bundle.id);
218
+ const name = await namer.plugin.name({
219
+ bundle,
220
+ bundleGraph,
221
+ config: (_configs$get = configs.get(namer.name)) === null || _configs$get === void 0 ? void 0 : _configs$get.result,
222
+ options: pluginOptions,
223
+ logger: new (_logger().PluginLogger)({
224
+ origin: namer.name
225
+ }),
226
+ tracer: new (_profiler().PluginTracer)({
227
+ origin: namer.name,
228
+ category: 'namer'
229
+ })
230
+ });
231
+ if (name != null) {
232
+ internalBundle.name = name;
233
+ const {
234
+ hashReference
235
+ } = internalBundle;
236
+ internalBundle.displayName = name.includes(hashReference) ? name.replace(hashReference, '[hash]') : name;
237
+ return;
238
+ }
239
+ } catch (e) {
240
+ throw new (_diagnostic().default)({
241
+ diagnostic: (0, _diagnostic().errorToDiagnostic)(e, {
242
+ origin: namer.name
243
+ })
244
+ });
245
+ } finally {
246
+ measurement && measurement.end();
247
+ }
248
+ }
249
+ throw new Error('Unable to name bundle');
250
+ }
251
+
252
+ /**
253
+ * Loads configuration for a plugin and tracks its dev dependencies.
254
+ */
255
+ async function loadPluginConfigWithDevDeps(plugin, options, api, previousDevDeps, devDepRequests, configs) {
256
+ const config = (0, _InternalConfig.createConfig)({
257
+ plugin: plugin.name,
258
+ searchPath: (0, _projectPath.toProjectPathUnsafe)('index')
259
+ });
260
+ await (0, _ConfigRequest.loadPluginConfig)(plugin, config, options);
261
+ await (0, _ConfigRequest.runConfigRequest)(api, config);
262
+ for (const devDep of config.devDeps) {
263
+ const devDepRequest = await (0, _DevDepRequest.createDevDependency)(devDep, previousDevDeps, options);
264
+ await runDevDepRequest(api, devDepRequest, devDepRequests);
265
+ }
266
+ configs.set(plugin.name, config);
267
+ }
268
+
269
+ /**
270
+ * Runs a dev dependency request and tracks it in the devDepRequests map.
271
+ */
272
+ async function runDevDepRequest(api, devDepRequest, devDepRequests) {
273
+ const {
274
+ specifier,
275
+ resolveFrom
276
+ } = devDepRequest;
277
+ const key = `${specifier}:${(0, _projectPath.fromProjectPathRelative)(resolveFrom)}`;
278
+ devDepRequests.set(key, devDepRequest);
279
+ await (0, _DevDepRequest.runDevDepRequest)(api, devDepRequest);
280
+ }