@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,324 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.default = createBundleGraphRequestRust;
40
+ exports.getBundleGraph = getBundleGraph;
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const diagnostic_1 = __importDefault(require("@atlaspack/diagnostic"));
43
+ const graph_1 = require("@atlaspack/graph");
44
+ const logger_1 = require("@atlaspack/logger");
45
+ const feature_flags_1 = require("@atlaspack/feature-flags");
46
+ const BundleGraph_1 = __importStar(require("../BundleGraph"));
47
+ const ReporterRunner_1 = require("../ReporterRunner");
48
+ const dumpGraphToGraphViz_1 = __importDefault(require("../dumpGraphToGraphViz"));
49
+ const nullthrows_1 = __importDefault(require("nullthrows"));
50
+ const rust_1 = require("@atlaspack/rust");
51
+ const PluginOptions_1 = __importDefault(require("../public/PluginOptions"));
52
+ const applyRuntimes_1 = __importDefault(require("../applyRuntimes"));
53
+ const constants_1 = require("../constants");
54
+ const utils_1 = require("../utils");
55
+ const DevDepRequest_1 = require("./DevDepRequest");
56
+ const RequestTracker_1 = require("../RequestTracker");
57
+ const AtlaspackConfigRequest_1 = __importStar(require("./AtlaspackConfigRequest"));
58
+ const BundleGraphRequestUtils_1 = require("./BundleGraphRequestUtils");
59
+ const EnvironmentManager_1 = require("../EnvironmentManager");
60
+ const Environment_1 = require("../Environment");
61
+ function createBundleGraphRequestRust(input) {
62
+ return {
63
+ type: RequestTracker_1.requestTypes.bundle_graph_request,
64
+ id: 'BundleGraphRust',
65
+ run: async (runInput) => {
66
+ const { api, options, rustAtlaspack } = runInput;
67
+ (0, assert_1.default)(rustAtlaspack, 'BundleGraphRequestRust requires rustAtlaspack');
68
+ let { bundleGraphPromise, commitPromise } = await rustAtlaspack.buildBundleGraph((eventJson) => {
69
+ let event = JSON.parse(eventJson);
70
+ (0, ReporterRunner_1.report)(event);
71
+ });
72
+ let [serializedBundleGraph, bundleGraphError] = (await bundleGraphPromise);
73
+ if (bundleGraphError) {
74
+ throw new diagnostic_1.default({ diagnostic: bundleGraphError });
75
+ }
76
+ // Don’t reuse previous JS result yet; we just rebuild from scratch.
77
+ let { bundleGraph, changedAssets } = (0, logger_1.instrument)('atlaspack_v3_getBundleGraph', () => getBundleGraph(serializedBundleGraph));
78
+ (0, BundleGraphRequestUtils_1.dumpBundleGraphSnapshot)(bundleGraph, 'rust');
79
+ const runner = new NativeBundlerRunner({ api, options }, input.optionsRef);
80
+ await runner.loadConfigs();
81
+ // Name all bundles
82
+ const namers = await runner.config.getNamers();
83
+ const bundles = bundleGraph.getBundles({ includeInline: true });
84
+ await Promise.all(bundles.map((b) => (0, BundleGraphRequestUtils_1.nameBundle)(namers, b, bundleGraph, options, runner.pluginOptions, runner.configs)));
85
+ // Apply runtimes
86
+ const changedRuntimes = await (0, logger_1.instrumentAsync)('applyRuntimes', () => (0, applyRuntimes_1.default)({
87
+ bundleGraph,
88
+ api,
89
+ config: runner.config,
90
+ options,
91
+ optionsRef: input.optionsRef,
92
+ pluginOptions: runner.pluginOptions,
93
+ previousDevDeps: runner.previousDevDeps,
94
+ devDepRequests: runner.devDepRequests,
95
+ configs: runner.configs,
96
+ }));
97
+ // Add dev deps for namers
98
+ for (const namer of namers) {
99
+ const devDepRequest = await (0, DevDepRequest_1.createDevDependency)({
100
+ specifier: namer.name,
101
+ resolveFrom: namer.resolveFrom,
102
+ }, runner.previousDevDeps, options);
103
+ await (0, BundleGraphRequestUtils_1.runDevDepRequest)(api, devDepRequest, runner.devDepRequests);
104
+ }
105
+ (0, BundleGraphRequestUtils_1.validateBundles)(bundleGraph);
106
+ bundleGraph.getBundleGraphHash();
107
+ await (0, dumpGraphToGraphViz_1.default)(
108
+ // @ts-expect-error Accessing internal graph for debug output
109
+ bundleGraph._graph, 'after_runtimes_native', BundleGraph_1.bundleGraphEdgeTypes);
110
+ let [_commitResult, commitError] = await commitPromise;
111
+ if (commitError) {
112
+ throw new diagnostic_1.default({
113
+ diagnostic: {
114
+ message: 'Error committing bundle graph in Rust: ' + commitError.message,
115
+ },
116
+ });
117
+ }
118
+ return {
119
+ bundleGraph,
120
+ changedAssets: changedRuntimes,
121
+ assetRequests: [],
122
+ didIncrementallyBundle: false,
123
+ };
124
+ },
125
+ input,
126
+ };
127
+ }
128
+ function mapSymbols({ exported, ...symbol }) {
129
+ let jsSymbol = {
130
+ local: symbol.local ?? undefined,
131
+ loc: symbol.loc ?? undefined,
132
+ isWeak: symbol.isWeak,
133
+ meta: {
134
+ isEsm: symbol.isEsmExport,
135
+ isStaticBindingSafe: symbol.isStaticBindingSafe,
136
+ },
137
+ };
138
+ if (symbol.exported) {
139
+ jsSymbol.exported = symbol.exported;
140
+ }
141
+ return [exported, jsSymbol];
142
+ }
143
+ function normalizeEnv(env) {
144
+ if (!env)
145
+ return env;
146
+ env.id = env.id || (0, Environment_1.getEnvironmentHash)(env);
147
+ return (0, EnvironmentManager_1.toEnvironmentRef)(env);
148
+ }
149
+ function getBundleGraph(serializedGraph) {
150
+ // Build a fresh internal bundle graph.
151
+ const publicIdByAssetId = new Map(Object.entries(serializedGraph.publicIdByAssetId ?? {}));
152
+ const assetPublicIds = new Set(serializedGraph.assetPublicIds ?? []);
153
+ // BundleGraph constructor expects a ContentGraph under `_graph`.
154
+ // We reuse the internal graph class by creating an empty instance and then adding nodes.
155
+ const graph = new BundleGraph_1.default({
156
+ // We intentionally start with an empty graph and add nodes/edges from the Rust payload.
157
+ // `ContentGraph` will allocate as needed.
158
+ graph: new graph_1.ContentGraph(),
159
+ bundleContentHashes: new Map(),
160
+ publicIdByAssetId,
161
+ assetPublicIds,
162
+ conditions: new Map(),
163
+ });
164
+ // Root must exist at node id 0.
165
+ const rootNodeId = graph._graph.addNodeByContentKey('@@root', {
166
+ id: '@@root',
167
+ type: 'root',
168
+ value: null,
169
+ });
170
+ graph._graph.setRootNodeId(rootNodeId);
171
+ let entry = 0;
172
+ const changedAssets = new Map();
173
+ const decoder = new TextDecoder();
174
+ // Create nodes in order.
175
+ for (let i = 0; i < serializedGraph.nodes.length; i++) {
176
+ // Nodes come back as buffers (same as AssetGraphRequestRust)
177
+ let node = JSON.parse(decoder.decode(serializedGraph.nodes[i]));
178
+ if (node.type === 'root') {
179
+ continue;
180
+ }
181
+ if (node.type === 'entry') {
182
+ let id = 'entry:' + ++entry;
183
+ graph._graph.addNodeByContentKey(id, { id, type: 'root', value: null });
184
+ continue;
185
+ }
186
+ if (node.type === 'asset') {
187
+ let asset = node.value;
188
+ let id = asset.id;
189
+ asset.committed = true;
190
+ asset.contentKey = id;
191
+ asset.env = { ...asset.env };
192
+ asset.env.id = (0, feature_flags_1.getFeatureFlag)('environmentDeduplication')
193
+ ? (0, Environment_1.getEnvironmentHash)(asset.env)
194
+ : (0, Environment_1.getEnvironmentHash)(asset.env);
195
+ asset.env = normalizeEnv(asset.env);
196
+ asset.mapKey = `map:${asset.id}`;
197
+ asset.dependencies = new Map();
198
+ asset.meta.isV3 = true;
199
+ if (asset.symbols != null) {
200
+ asset.symbols = new Map(asset.symbols.map(mapSymbols));
201
+ }
202
+ changedAssets.set(id, asset);
203
+ const assetNode = {
204
+ id,
205
+ type: 'asset',
206
+ usedSymbols: new Set(),
207
+ usedSymbolsDownDirty: true,
208
+ usedSymbolsUpDirty: true,
209
+ value: asset,
210
+ };
211
+ graph._graph.addNodeByContentKey(id, assetNode);
212
+ continue;
213
+ }
214
+ if (node.type === 'dependency') {
215
+ let { dependency, id } = node.value;
216
+ dependency.id = id;
217
+ dependency.env = { ...dependency.env };
218
+ dependency.env.id = (0, Environment_1.getEnvironmentHash)(dependency.env);
219
+ dependency.env = normalizeEnv(dependency.env);
220
+ if (dependency.symbols != null) {
221
+ dependency.symbols = new Map(dependency.symbols?.map(mapSymbols));
222
+ }
223
+ let usedSymbolsDown = new Set();
224
+ let usedSymbolsUp = new Map();
225
+ if (dependency.isEntry && dependency.isLibrary) {
226
+ usedSymbolsDown.add('*');
227
+ usedSymbolsUp.set('*', undefined);
228
+ }
229
+ const depNode = {
230
+ id,
231
+ type: 'dependency',
232
+ deferred: false,
233
+ excluded: false,
234
+ hasDeferred: node.has_deferred,
235
+ // @ts-expect-error Flow types expect a more specific symbol set type
236
+ usedSymbolsDown,
237
+ usedSymbolsDownDirty: true,
238
+ usedSymbolsUp,
239
+ usedSymbolsUpDirtyDown: true,
240
+ usedSymbolsUpDirtyUp: true,
241
+ value: dependency,
242
+ };
243
+ graph._graph.addNodeByContentKey(id, depNode);
244
+ continue;
245
+ }
246
+ if (node.type === 'bundle') {
247
+ node.value.env = normalizeEnv(node.value.env);
248
+ node.value.target.env = normalizeEnv(node.value.target.env);
249
+ graph._graph.addNodeByContentKey(node.id, node);
250
+ continue;
251
+ }
252
+ if (node.type === 'bundle_group' || node.type === 'bundleGroup') {
253
+ // Rust serializer may emit bundleGroup nodes either as `{id,type,value:{...}}`
254
+ // or as `{type:"bundleGroup", id, target, entryAssetId}`.
255
+ if (node.value == null) {
256
+ node.value = {
257
+ target: node.target,
258
+ entryAssetId: node.entryAssetId ?? node.entry_asset_id,
259
+ };
260
+ }
261
+ // Normalize entry asset id field naming
262
+ if (node.value.entryAssetId == null &&
263
+ node.value.entry_asset_id != null) {
264
+ node.value.entryAssetId = node.value.entry_asset_id;
265
+ }
266
+ node.value.target.env = normalizeEnv(node.value.target.env);
267
+ // Normalise to the expected snake_case type
268
+ node.type = 'bundle_group';
269
+ graph._graph.addNodeByContentKey(node.id, node);
270
+ continue;
271
+ }
272
+ }
273
+ // Apply edges
274
+ for (let i = 0; i < serializedGraph.edges.length; i += 3) {
275
+ const from = serializedGraph.edges[i];
276
+ const to = serializedGraph.edges[i + 1];
277
+ const type = serializedGraph.edges[i + 2];
278
+ const fromNode = graph._graph.getNode(from);
279
+ const toNode = graph._graph.getNode(to);
280
+ if (fromNode?.type === 'asset' && toNode?.type === 'dependency') {
281
+ fromNode.value.dependencies.set(toNode.value.id, toNode.value);
282
+ }
283
+ // If we are adding a references edge, remove existing null edge.
284
+ if (type === BundleGraph_1.bundleGraphEdgeTypes.references &&
285
+ graph._graph.hasEdge(from, to, BundleGraph_1.bundleGraphEdgeTypes.null)) {
286
+ graph._graph.removeEdge(from, to, BundleGraph_1.bundleGraphEdgeTypes.null);
287
+ }
288
+ graph._graph.addEdge(from, to, type);
289
+ }
290
+ return { bundleGraph: graph, changedAssets };
291
+ }
292
+ class NativeBundlerRunner {
293
+ constructor({ api, options }, optionsRef) {
294
+ this.options = options;
295
+ this.api = api;
296
+ this.optionsRef = optionsRef;
297
+ this.previousDevDeps = new Map();
298
+ this.devDepRequests = new Map();
299
+ this.configs = new Map();
300
+ this.pluginOptions = new PluginOptions_1.default((0, utils_1.optionsProxy)(this.options, api.invalidateOnOptionChange));
301
+ const key = (0, rust_1.hashString)(`${constants_1.ATLASPACK_VERSION}:BundleGraph:${JSON.stringify(options.entries) ?? ''}${options.mode}${options.shouldBuildLazily ? 'lazy' : 'eager'}`);
302
+ this.cacheKey = `BundleGraph/${constants_1.ATLASPACK_VERSION}/${options.mode}/${key}`;
303
+ }
304
+ async loadConfigs() {
305
+ const configResult = (0, nullthrows_1.default)(await this.api.runRequest((0, AtlaspackConfigRequest_1.default)()));
306
+ this.config = (0, AtlaspackConfigRequest_1.getCachedAtlaspackConfig)(configResult, this.options);
307
+ const { devDeps, invalidDevDeps } = await (0, DevDepRequest_1.getDevDepRequests)(this.api);
308
+ this.previousDevDeps = devDeps;
309
+ (0, DevDepRequest_1.invalidateDevDeps)(invalidDevDeps, this.options, this.config);
310
+ const bundler = await this.config.getBundler();
311
+ await this.loadPluginConfig(bundler);
312
+ const namers = await this.config.getNamers();
313
+ for (const namer of namers) {
314
+ await this.loadPluginConfig(namer);
315
+ }
316
+ const runtimes = await this.config.getRuntimes();
317
+ for (const runtime of runtimes) {
318
+ await this.loadPluginConfig(runtime);
319
+ }
320
+ }
321
+ async loadPluginConfig(plugin) {
322
+ await (0, BundleGraphRequestUtils_1.loadPluginConfigWithDevDeps)(plugin, this.options, this.api, this.previousDevDeps, this.devDepRequests, this.configs);
323
+ }
324
+ }
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.validateBundles = validateBundles;
40
+ exports.dumpBundleGraphSnapshot = dumpBundleGraphSnapshot;
41
+ exports.nameBundle = nameBundle;
42
+ exports.loadPluginConfigWithDevDeps = loadPluginConfigWithDevDeps;
43
+ exports.runDevDepRequest = runDevDepRequest;
44
+ const assert_1 = __importDefault(require("assert"));
45
+ const fs_1 = __importDefault(require("fs"));
46
+ const nullthrows_1 = __importDefault(require("nullthrows"));
47
+ const path_1 = __importDefault(require("path"));
48
+ const logger_1 = require("@atlaspack/logger");
49
+ const diagnostic_1 = __importStar(require("@atlaspack/diagnostic"));
50
+ const utils_1 = require("@atlaspack/utils");
51
+ const BundleGraph_1 = require("../BundleGraph");
52
+ const BundleGraph_2 = __importDefault(require("../public/BundleGraph"));
53
+ const Bundle_1 = require("../public/Bundle");
54
+ const InternalConfig_1 = require("../InternalConfig");
55
+ const DevDepRequest_1 = require("./DevDepRequest");
56
+ const ConfigRequest_1 = require("./ConfigRequest");
57
+ const projectPath_1 = require("../projectPath");
58
+ const profiler_1 = require("@atlaspack/profiler");
59
+ /**
60
+ * Validates that all bundles have unique names.
61
+ * Throws an assertion error if duplicate bundle names are found.
62
+ */
63
+ function validateBundles(bundleGraph) {
64
+ const bundles = bundleGraph.getBundles();
65
+ const bundleNames = bundles.map((b) => (0, projectPath_1.joinProjectPath)(b.target.distDir, (0, nullthrows_1.default)(b.name)));
66
+ assert_1.default.deepEqual(bundleNames, (0, utils_1.unique)(bundleNames), 'Bundles must have unique name. Conflicting names: ' +
67
+ [
68
+ ...(0, utils_1.setSymmetricDifference)(new Set(bundleNames), new Set((0, utils_1.unique)(bundleNames))),
69
+ ].join());
70
+ }
71
+ /**
72
+ * Dump a canonical JSON snapshot of the bundle graph for parity comparison.
73
+ * Gated by ATLASPACK_DUMP_BUNDLE_GRAPH environment variable which specifies the output directory.
74
+ * The snapshot captures bundle identity, type, contained assets, and bundle group structure
75
+ * in a deterministic, sorted format suitable for diffing.
76
+ */
77
+ function dumpBundleGraphSnapshot(bundleGraph, variant) {
78
+ let outDir = process.env.ATLASPACK_DUMP_BUNDLE_GRAPH;
79
+ if (!outDir)
80
+ return;
81
+ let filename = variant === 'js' ? 'bundle-graph-js.json' : 'bundle-graph-rust.json';
82
+ let outPath = path_1.default.join(outDir, filename);
83
+ fs_1.default.mkdirSync(outDir, { recursive: true });
84
+ let bundles = bundleGraph.getBundles();
85
+ let bundlesSnapshot = bundles
86
+ .map((bundle) => {
87
+ let bundleNodeId = bundleGraph._graph.getNodeIdByContentKey(bundle.id);
88
+ let containedAssetNodeIds = bundleGraph._graph.getNodeIdsConnectedFrom(bundleNodeId, BundleGraph_1.bundleGraphEdgeTypes.contains);
89
+ let containedAssets = containedAssetNodeIds
90
+ .map((nodeId) => bundleGraph._graph.getNode(nodeId))
91
+ .flatMap((node) => {
92
+ if (node?.type !== 'asset')
93
+ return [];
94
+ return [
95
+ {
96
+ id: node.value.id,
97
+ filePath: (0, projectPath_1.fromProjectPathRelative)(node.value.filePath),
98
+ },
99
+ ];
100
+ })
101
+ .sort((a, b) => a.filePath.localeCompare(b.filePath));
102
+ // Resolve mainEntry and entry asset file paths
103
+ let mainEntryPath = null;
104
+ let entryAssetPaths = [];
105
+ if (bundle.mainEntryId) {
106
+ let mainEntryNodeId = bundleGraph._graph.getNodeIdByContentKey(bundle.mainEntryId);
107
+ let mainEntryNode = bundleGraph._graph.getNode(mainEntryNodeId);
108
+ if (mainEntryNode?.type === 'asset') {
109
+ mainEntryPath = (0, projectPath_1.fromProjectPathRelative)(mainEntryNode.value.filePath);
110
+ }
111
+ }
112
+ for (let entryId of bundle.entryAssetIds) {
113
+ let entryNodeId = bundleGraph._graph.getNodeIdByContentKey(entryId);
114
+ let entryNode = bundleGraph._graph.getNode(entryNodeId);
115
+ if (entryNode?.type === 'asset') {
116
+ entryAssetPaths.push((0, projectPath_1.fromProjectPathRelative)(entryNode.value.filePath));
117
+ }
118
+ }
119
+ entryAssetPaths.sort();
120
+ return {
121
+ id: bundle.id,
122
+ type: bundle.type,
123
+ bundleBehavior: bundle.bundleBehavior ?? null,
124
+ needsStableName: bundle.needsStableName,
125
+ isSplittable: bundle.isSplittable,
126
+ isPlaceholder: bundle.isPlaceholder,
127
+ mainEntryPath,
128
+ entryAssetPaths,
129
+ assets: containedAssets.map((a) => a.filePath),
130
+ };
131
+ })
132
+ .sort((a, b) => {
133
+ // Sort by mainEntryPath first, then by sorted assets as tiebreaker
134
+ let aKey = a.mainEntryPath || a.assets.join(',');
135
+ let bKey = b.mainEntryPath || b.assets.join(',');
136
+ return aKey.localeCompare(bKey);
137
+ });
138
+ let bundleGroupsSnapshot = bundleGraph._graph.nodes
139
+ .flatMap((node) => {
140
+ if (node?.type !== 'bundle_group')
141
+ return [];
142
+ let bundleGroup = node.value;
143
+ // Resolve entry asset file path
144
+ let entryAssetPath = null;
145
+ try {
146
+ let entryNodeId = bundleGraph._graph.getNodeIdByContentKey(bundleGroup.entryAssetId);
147
+ let entryNode = bundleGraph._graph.getNode(entryNodeId);
148
+ if (entryNode?.type === 'asset') {
149
+ entryAssetPath = (0, projectPath_1.fromProjectPathRelative)(entryNode.value.filePath);
150
+ }
151
+ }
152
+ catch {
153
+ // Content key not found
154
+ }
155
+ let bundlesInGroup = bundleGraph.getBundlesInBundleGroup(bundleGroup);
156
+ let bundlePaths = bundlesInGroup
157
+ .map((b) => {
158
+ // Use mainEntry file path if available, otherwise bundle id as fallback
159
+ if (b.mainEntryId) {
160
+ try {
161
+ let nodeId = bundleGraph._graph.getNodeIdByContentKey(b.mainEntryId);
162
+ let node = bundleGraph._graph.getNode(nodeId);
163
+ if (node?.type === 'asset') {
164
+ return (0, projectPath_1.fromProjectPathRelative)(node.value.filePath);
165
+ }
166
+ }
167
+ catch {
168
+ // fallback
169
+ }
170
+ }
171
+ return `[bundle:${b.id}]`;
172
+ })
173
+ .sort();
174
+ return [
175
+ {
176
+ entryAssetPath: entryAssetPath ?? `[unknown:${bundleGroup.entryAssetId}]`,
177
+ bundlePaths,
178
+ },
179
+ ];
180
+ })
181
+ .sort((a, b) => a.entryAssetPath.localeCompare(b.entryAssetPath));
182
+ let totalAssets = bundleGraph._graph.nodes.filter((node) => node?.type === 'asset').length;
183
+ let snapshot = {
184
+ version: 1,
185
+ variant,
186
+ stats: {
187
+ totalBundles: bundlesSnapshot.length,
188
+ totalBundleGroups: bundleGroupsSnapshot.length,
189
+ totalAssets,
190
+ },
191
+ bundles: bundlesSnapshot,
192
+ bundleGroups: bundleGroupsSnapshot,
193
+ };
194
+ fs_1.default.writeFileSync(outPath, JSON.stringify(snapshot, null, 2), 'utf8');
195
+ // eslint-disable-next-line no-console
196
+ console.log(`[BundleGraphSnapshot] Wrote ${variant} snapshot to ${outPath}`);
197
+ }
198
+ /**
199
+ * Names a bundle by running through the configured namers until one returns a name.
200
+ */
201
+ async function nameBundle(namers, internalBundle, internalBundleGraph, options, pluginOptions, configs) {
202
+ const bundle = Bundle_1.Bundle.get(internalBundle, internalBundleGraph, options);
203
+ const bundleGraph = new BundleGraph_2.default(internalBundleGraph, Bundle_1.NamedBundle.get.bind(Bundle_1.NamedBundle), options);
204
+ for (const namer of namers) {
205
+ let measurement;
206
+ try {
207
+ measurement = profiler_1.tracer.createMeasurement(namer.name, 'namer', bundle.id);
208
+ const name = await namer.plugin.name({
209
+ bundle,
210
+ bundleGraph,
211
+ config: configs.get(namer.name)?.result,
212
+ options: pluginOptions,
213
+ logger: new logger_1.PluginLogger({ origin: namer.name }),
214
+ tracer: new profiler_1.PluginTracer({ origin: namer.name, category: 'namer' }),
215
+ });
216
+ if (name != null) {
217
+ internalBundle.name = name;
218
+ const { hashReference } = internalBundle;
219
+ internalBundle.displayName = name.includes(hashReference)
220
+ ? name.replace(hashReference, '[hash]')
221
+ : name;
222
+ return;
223
+ }
224
+ }
225
+ catch (e) {
226
+ throw new diagnostic_1.default({
227
+ diagnostic: (0, diagnostic_1.errorToDiagnostic)(e, {
228
+ origin: namer.name,
229
+ }),
230
+ });
231
+ }
232
+ finally {
233
+ measurement && measurement.end();
234
+ }
235
+ }
236
+ throw new Error('Unable to name bundle');
237
+ }
238
+ /**
239
+ * Loads configuration for a plugin and tracks its dev dependencies.
240
+ */
241
+ async function loadPluginConfigWithDevDeps(plugin, options, api, previousDevDeps, devDepRequests, configs) {
242
+ const config = (0, InternalConfig_1.createConfig)({
243
+ plugin: plugin.name,
244
+ searchPath: (0, projectPath_1.toProjectPathUnsafe)('index'),
245
+ });
246
+ await (0, ConfigRequest_1.loadPluginConfig)(plugin, config, options);
247
+ await (0, ConfigRequest_1.runConfigRequest)(api, config);
248
+ for (const devDep of config.devDeps) {
249
+ const devDepRequest = await (0, DevDepRequest_1.createDevDependency)(devDep, previousDevDeps, options);
250
+ await runDevDepRequest(api, devDepRequest, devDepRequests);
251
+ }
252
+ configs.set(plugin.name, config);
253
+ }
254
+ /**
255
+ * Runs a dev dependency request and tracks it in the devDepRequests map.
256
+ */
257
+ async function runDevDepRequest(api, devDepRequest, devDepRequests) {
258
+ const { specifier, resolveFrom } = devDepRequest;
259
+ const key = `${specifier}:${(0, projectPath_1.fromProjectPathRelative)(resolveFrom)}`;
260
+ devDepRequests.set(key, devDepRequest);
261
+ await (0, DevDepRequest_1.runDevDepRequest)(api, devDepRequest);
262
+ }