@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
@@ -13,8 +13,7 @@ function _path() {
13
13
  };
14
14
  return data;
15
15
  }
16
- var _AssetGraph = _interopRequireDefault(require("../AssetGraph"));
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
17
  /** @description Renders AssetGraph into GraphViz Dot format */
19
18
  function assetGraphToDot(assetGraph, {
20
19
  sort = false,
@@ -41,8 +40,6 @@ function assetGraphToDot(assetGraph, {
41
40
  edges.push(entry);
42
41
  }
43
42
  });
44
-
45
- // $FlowFixMe
46
43
  const nodeStylesList = Object.entries(nodeStyles);
47
44
  if (sort) {
48
45
  edges.sort();
@@ -83,18 +80,15 @@ function fromCwd(input) {
83
80
  }
84
81
  function getNodeName(node) {
85
82
  if (node.type === 'asset_group') {
86
- // $FlowFixMe
83
+ // @ts-expect-error TS2345
87
84
  return [`asset_group`, node.id, fromCwd(node.value.filePath)].join('\\n');
88
85
  } else if (node.type === 'asset') {
89
- // $FlowFixMe
90
86
  return [`asset`, node.id, fromCwd(node.value.filePath)].join('\\n');
91
87
  } else if (node.type === 'dependency') {
92
88
  return [`dependency`, node.id, node.value.specifier].join('\\n');
93
89
  } else if (node.type === 'entry_specifier') {
94
- // $FlowFixMe
95
90
  return [`entry_specifier`, node.value].join('\\n');
96
91
  } else if (node.type === 'entry_file') {
97
- // $FlowFixMe
98
92
  return [`entry_file`, fromCwd(node.value.filePath)].join('\\n');
99
93
  }
100
94
  return 'ROOT';
@@ -57,7 +57,7 @@ var _loadDotEnv = _interopRequireDefault(require("./loadDotEnv"));
57
57
  var _projectPath = require("./projectPath");
58
58
  var _AtlaspackConfigRequest = require("./requests/AtlaspackConfigRequest");
59
59
  var _constants = require("./constants");
60
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
60
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
61
61
  // Default cache directory name
62
62
  const DEFAULT_CACHE_DIRNAME = '.parcel-cache';
63
63
  const LOCK_FILE_NAMES = ['yarn.lock', 'package-lock.json', 'pnpm-lock.yaml'];
@@ -106,6 +106,21 @@ async function resolveOptions(initialOptions) {
106
106
  } else {
107
107
  entries = [_path().default.resolve(inputCwd, initialOptions.entries)];
108
108
  }
109
+
110
+ // When allowExplicitTargetEntries is enabled and no entries are provided,
111
+ // automatically derive entries from target sources
112
+ if ((0, _featureFlags().getFeatureFlag)('allowExplicitTargetEntries') && initialOptions.targets && !Array.isArray(initialOptions.targets) && entries.length === 0) {
113
+ const targetSources = new Set();
114
+ for (const [, target] of Object.entries(initialOptions.targets)) {
115
+ if (target.source) {
116
+ const sources = Array.isArray(target.source) ? target.source : [target.source];
117
+ for (const source of sources) {
118
+ targetSources.add(source);
119
+ }
120
+ }
121
+ }
122
+ entries = Array.from(targetSources);
123
+ }
109
124
  let shouldMakeEntryReferFolder = false;
110
125
  if (entries.length === 1 && !(0, _utils().isGlob)(entries[0])) {
111
126
  let [entry] = entries;
@@ -115,13 +130,21 @@ async function resolveOptions(initialOptions) {
115
130
  // ignore failing stat call
116
131
  }
117
132
  }
133
+ let projectRoot;
134
+ if (initialOptions.projectRoot) {
135
+ // Use explicitly provided projectRoot
136
+ if (!_path().default.isAbsolute(initialOptions.projectRoot)) {
137
+ throw new Error('Specified project root must be an absolute path');
138
+ }
139
+ projectRoot = initialOptions.projectRoot;
140
+ } else {
141
+ // getRootDir treats the input as files, so getRootDir(["/home/user/myproject"]) returns "/home/user".
142
+ // Instead we need to make the the entry refer to some file inside the specified folders if entries refers to the directory.
143
+ let entryRoot = (0, _utils().getRootDir)(shouldMakeEntryReferFolder ? [_path().default.join(entries[0], 'index')] : entries);
144
+ let projectRootFile = (await (0, _utils().resolveConfig)(inputFS, _path().default.join(entryRoot, 'index'), [...LOCK_FILE_NAMES, '.git', '.hg'], _path().default.parse(entryRoot).root)) || _path().default.join(inputCwd, 'index'); // ? Should this just be rootDir
118
145
 
119
- // getRootDir treats the input as files, so getRootDir(["/home/user/myproject"]) returns "/home/user".
120
- // Instead we need to make the the entry refer to some file inside the specified folders if entries refers to the directory.
121
- let entryRoot = (0, _utils().getRootDir)(shouldMakeEntryReferFolder ? [_path().default.join(entries[0], 'index')] : entries);
122
- let projectRootFile = (await (0, _utils().resolveConfig)(inputFS, _path().default.join(entryRoot, 'index'), [...LOCK_FILE_NAMES, '.git', '.hg'], _path().default.parse(entryRoot).root)) || _path().default.join(inputCwd, 'index'); // ? Should this just be rootDir
123
-
124
- let projectRoot = _path().default.dirname(projectRootFile);
146
+ projectRoot = _path().default.dirname(projectRootFile);
147
+ }
125
148
  const gitRoot = await findGitRepositoryRoot(inputFS, projectRoot);
126
149
  if (inputFS instanceof _fs().NodeVCSAwareFS) {
127
150
  inputFS.setGitRepoPath(gitRoot);
@@ -139,18 +162,17 @@ async function resolveOptions(initialOptions) {
139
162
  // where symlinked dependencies outside the project root need to trigger HMR
140
163
  // updates. Default to the project root if not provided.
141
164
  let watchDir = initialOptions.watchDir != null ? _path().default.resolve(initialOptions.watchDir) : projectRoot;
142
- let cache = function createCache() {
165
+ function createCache() {
143
166
  if (initialOptions.cache) {
144
167
  return initialOptions.cache;
145
168
  }
146
- const needsRustLmdbCache = (0, _featureFlags().getFeatureFlag)('atlaspackV3');
147
- if (!(0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
148
- if (!needsRustLmdbCache && !(outputFS instanceof _fs().NodeFS)) {
149
- return new (_cache().FSCache)(outputFS, cacheDir);
150
- }
169
+ const needsRustLmdbCache = (0, _featureFlags().getFeatureFlag)('atlaspackV3') || (0, _featureFlags().getFeatureFlag)('nativePackager');
170
+ if (!needsRustLmdbCache && !(outputFS instanceof _fs().NodeFS)) {
171
+ return new (_cache().FSCache)(outputFS, cacheDir);
151
172
  }
152
173
  return new (_cache().LMDBLiteCache)(cacheDir);
153
- }();
174
+ }
175
+ let cache = createCache();
154
176
  let mode = initialOptions.mode ?? 'development';
155
177
  let shouldOptimize = (initialOptions === null || initialOptions === void 0 || (_initialOptions$defau = initialOptions.defaultTargetOptions) === null || _initialOptions$defau === void 0 ? void 0 : _initialOptions$defau.shouldOptimize) ?? mode === 'production';
156
178
  let publicUrl = (initialOptions === null || initialOptions === void 0 || (_initialOptions$defau2 = initialOptions.defaultTargetOptions) === null || _initialOptions$defau2 === void 0 ? void 0 : _initialOptions$defau2.publicUrl) ?? '/';
@@ -195,6 +217,7 @@ async function resolveOptions(initialOptions) {
195
217
  } : false,
196
218
  shouldDisableCache: initialOptions.shouldDisableCache ?? false,
197
219
  shouldProfile: initialOptions.shouldProfile ?? false,
220
+ nativeProfiler: initialOptions.nativeProfiler,
198
221
  shouldTrace: initialOptions.shouldTrace ?? false,
199
222
  cacheDir,
200
223
  watchDir,
@@ -14,7 +14,6 @@ exports.loadRustWorkerThreadDylibHack = loadRustWorkerThreadDylibHack;
14
14
  */
15
15
  function loadRustWorkerThreadDylibHack() {
16
16
  try {
17
- // $FlowFixMe
18
17
  require('@parcel/rust'); // eslint-disable-line
19
18
  } catch (err) {
20
19
  /* ignore */
@@ -18,8 +18,7 @@ function msgpackr() {
18
18
  };
19
19
  return data;
20
20
  }
21
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ 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); }
23
22
  let encoder = new (msgpackr().Encoder)({
24
23
  structuredClone: true
25
24
  });
@@ -11,7 +11,7 @@ function _path() {
11
11
  };
12
12
  return data;
13
13
  }
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  const NODE_MODULES = `${_path().default.sep}node_modules${_path().default.sep}`;
16
16
  const BUFFER_LIMIT = 5000000; // 5mb
17
17
 
@@ -0,0 +1,55 @@
1
+ import type { GraphVisitor } from '@atlaspack/types';
2
+ import type { ContentGraphOpts, ContentKey, NodeId, SerializedContentGraph } from '@atlaspack/graph';
3
+ import type { Asset, AssetGraphNode, AssetGroup, AssetGroupNode, AssetNode, Dependency, DependencyNode, Entry, EntryFileNode, EntrySpecifierNode, Environment, Target } from './types';
4
+ import { ContentGraph } from '@atlaspack/graph';
5
+ import { ProjectPath } from './projectPath';
6
+ type InitOpts = {
7
+ entries?: Array<ProjectPath>;
8
+ targets?: Array<Target>;
9
+ assetGroups?: Array<AssetGroup>;
10
+ };
11
+ type AssetGraphOpts = ContentGraphOpts<AssetGraphNode> & {
12
+ hash?: string | null | undefined;
13
+ };
14
+ type SerializedAssetGraph = SerializedContentGraph<AssetGraphNode> & {
15
+ hash?: string | null | undefined;
16
+ };
17
+ export declare function nodeFromDep(dep: Dependency): DependencyNode;
18
+ export declare function nodeFromAssetGroup(assetGroup: AssetGroup): AssetGroupNode;
19
+ export declare function nodeFromAsset(asset: Asset): AssetNode;
20
+ export declare function nodeFromEntrySpecifier(entry: ProjectPath): EntrySpecifierNode;
21
+ export declare function nodeFromEntryFile(entry: Entry): EntryFileNode;
22
+ export default class AssetGraph extends ContentGraph<AssetGraphNode> {
23
+ onNodeRemoved: ((nodeId: NodeId) => unknown) | null | undefined;
24
+ hash: string | null | undefined;
25
+ envCache: Map<string, Environment>;
26
+ safeToIncrementallyBundle: boolean;
27
+ undeferredDependencies: Set<Dependency>;
28
+ constructor(opts?: AssetGraphOpts | null);
29
+ static deserialize(opts: AssetGraphOpts): AssetGraph;
30
+ serialize(): SerializedAssetGraph;
31
+ /**
32
+ * Determine if we can incrementally bundle, which will not require a full bundling pass
33
+ * but just update assets into the bundle graph output.
34
+ */
35
+ canIncrementallyBundle(): boolean;
36
+ normalizeEnvironment(input: Asset | Dependency | AssetGroup): void;
37
+ setRootConnections({ entries, assetGroups }: InitOpts): void;
38
+ addNode(node: AssetGraphNode): NodeId;
39
+ removeNode(nodeId: NodeId): void;
40
+ resolveEntry(entry: ProjectPath, resolved: Array<Entry>, correspondingRequest: ContentKey): void;
41
+ resolveTargets(entry: Entry, targets: Array<Target>, correspondingRequest: string): void;
42
+ resolveDependency(dependency: Dependency, assetGroup: AssetGroup | null | undefined, correspondingRequest: string): void;
43
+ shouldVisitChild(nodeId: NodeId, childNodeId: NodeId): boolean;
44
+ markParentsWithHasDeferred(nodeId: NodeId): void;
45
+ unmarkParentsWithHasDeferred(nodeId: NodeId): void;
46
+ shouldDeferDependency(dependency: Dependency, sideEffects: boolean | null | undefined, canDefer: boolean): boolean;
47
+ resolveAssetGroup(assetGroup: AssetGroup, assets: Array<Asset>, correspondingRequest: ContentKey): void;
48
+ resolveAsset(assetNode: AssetNode, dependentAssets: Array<Asset>): void;
49
+ getIncomingDependencies(asset: Asset): Array<Dependency>;
50
+ traverseAssets<TContext>(visit: GraphVisitor<Asset, TContext>, startNodeId?: NodeId | null): TContext | null | undefined;
51
+ getEntryAssetGroupNodes(): Array<AssetGroupNode>;
52
+ getEntryAssets(): Array<Asset>;
53
+ getHash(): string;
54
+ }
55
+ export {};
@@ -0,0 +1,52 @@
1
+ import type { Asset, AsyncSubscription, BuildEvent, BuildSuccessEvent, InitialAtlaspackOptions, AtlaspackTransformOptions, AtlaspackResolveOptions, AtlaspackResolveResult } from '@atlaspack/types';
2
+ import type { AtlaspackOptions } from './types';
3
+ import type { FarmOptions } from '@atlaspack/workers';
4
+ import type { Diagnostic } from '@atlaspack/diagnostic';
5
+ import ThrowableDiagnostic from '@atlaspack/diagnostic';
6
+ import WorkerFarm from '@atlaspack/workers';
7
+ import { AtlaspackV3 } from './atlaspack-v3';
8
+ import type { AssetGraphRequestResult } from './requests/AssetGraphRequest';
9
+ export declare const INTERNAL_TRANSFORM: symbol;
10
+ export declare const INTERNAL_RESOLVE: symbol;
11
+ export declare let WORKER_PATH: string;
12
+ export default class Atlaspack {
13
+ #private;
14
+ rustAtlaspack: AtlaspackV3 | null | undefined;
15
+ isProfiling: boolean;
16
+ constructor(options: InitialAtlaspackOptions);
17
+ _init(): Promise<void>;
18
+ run(): Promise<BuildSuccessEvent>;
19
+ _end(): Promise<void>;
20
+ writeRequestTrackerToCache(): Promise<void>;
21
+ _startNextBuild(): Promise<BuildEvent | null | undefined>;
22
+ watch(cb?: (err?: Error | null | undefined, buildEvent?: BuildEvent) => unknown): Promise<AsyncSubscription>;
23
+ _build({ signal, startTime, }?: {
24
+ signal?: AbortSignal;
25
+ startTime?: number;
26
+ }): Promise<BuildEvent>;
27
+ _getWatcherSubscription(): Promise<AsyncSubscription>;
28
+ _getResolvedAtlaspackOptions(): AtlaspackOptions;
29
+ startProfiling(): Promise<void>;
30
+ stopProfiling(): Promise<void>;
31
+ takeHeapSnapshot(): Promise<void>;
32
+ /**
33
+ * Must be called between builds otherwise there is global state that will
34
+ * break things unexpectedly.
35
+ */
36
+ clearBuildCaches(): Promise<void>;
37
+ unstable_invalidate(): Promise<void>;
38
+ /**
39
+ * Build the asset graph
40
+ */
41
+ unstable_buildAssetGraph(writeToCache?: boolean): Promise<AssetGraphRequestResult>;
42
+ /**
43
+ * Copy the cache to a new directory and compact it.
44
+ */
45
+ unstable_compactCache(): Promise<void>;
46
+ unstable_transform(options: AtlaspackTransformOptions): Promise<Array<Asset>>;
47
+ unstable_resolve(request: AtlaspackResolveOptions): Promise<AtlaspackResolveResult | null | undefined>;
48
+ }
49
+ export declare class BuildError extends ThrowableDiagnostic {
50
+ constructor(diagnostic: Array<Diagnostic> | Diagnostic);
51
+ }
52
+ export declare function createWorkerFarm(options?: Partial<FarmOptions>): WorkerFarm;
@@ -0,0 +1,65 @@
1
+ import type { Glob, Transformer, Resolver, Bundler, Namer, Runtime, PackageName, Optimizer, Compressor, Packager, Reporter, Semver, Validator, FilePath } from '@atlaspack/types';
2
+ import type { ProcessedAtlaspackConfig, AtlaspackPluginNode, PureAtlaspackConfigPipeline, ExtendableAtlaspackConfigPipeline, AtlaspackOptions } from './types';
3
+ import ThrowableDiagnostic from '@atlaspack/diagnostic';
4
+ import { ProjectPath } from './projectPath';
5
+ type GlobMap<T> = Partial<Record<Glob, T>>;
6
+ type SerializedAtlaspackConfig = {
7
+ $$raw: boolean;
8
+ config: ProcessedAtlaspackConfig;
9
+ options: AtlaspackOptions;
10
+ };
11
+ export type LoadedPlugin<T> = {
12
+ name: string;
13
+ version: Semver;
14
+ plugin: T;
15
+ resolveFrom: ProjectPath;
16
+ keyPath?: string;
17
+ };
18
+ export declare class AtlaspackConfig {
19
+ options: AtlaspackOptions;
20
+ filePath: ProjectPath;
21
+ resolvers: PureAtlaspackConfigPipeline;
22
+ transformers: GlobMap<ExtendableAtlaspackConfigPipeline>;
23
+ bundler: AtlaspackPluginNode | null | undefined;
24
+ namers: PureAtlaspackConfigPipeline;
25
+ runtimes: PureAtlaspackConfigPipeline;
26
+ packagers: GlobMap<AtlaspackPluginNode>;
27
+ validators: GlobMap<ExtendableAtlaspackConfigPipeline>;
28
+ optimizers: GlobMap<ExtendableAtlaspackConfigPipeline>;
29
+ compressors: GlobMap<ExtendableAtlaspackConfigPipeline>;
30
+ reporters: PureAtlaspackConfigPipeline;
31
+ pluginCache: Map<PackageName, any>;
32
+ regexCache: Map<string, RegExp>;
33
+ constructor(config: ProcessedAtlaspackConfig, options: AtlaspackOptions);
34
+ static deserialize(serialized: SerializedAtlaspackConfig): AtlaspackConfig;
35
+ getConfig(): ProcessedAtlaspackConfig;
36
+ serialize(): SerializedAtlaspackConfig;
37
+ _loadPlugin<T>(node: AtlaspackPluginNode): Promise<{
38
+ plugin: T;
39
+ version: Semver;
40
+ resolveFrom: ProjectPath;
41
+ }>;
42
+ loadPlugin<T>(node: AtlaspackPluginNode): Promise<LoadedPlugin<T>>;
43
+ invalidatePlugin(packageName: PackageName): void;
44
+ loadPlugins<T>(plugins: PureAtlaspackConfigPipeline): Promise<Array<LoadedPlugin<T>>>;
45
+ getResolvers(): Promise<Array<LoadedPlugin<Resolver<unknown>>>>;
46
+ _getValidatorNodes(filePath: ProjectPath): ReadonlyArray<AtlaspackPluginNode>;
47
+ getValidatorNames(filePath: ProjectPath): Array<string>;
48
+ getValidators(filePath: ProjectPath): Promise<Array<LoadedPlugin<Validator>>>;
49
+ getNamedPipelines(): ReadonlyArray<string>;
50
+ getTransformers(filePath: ProjectPath, pipeline?: string | null, allowEmpty?: boolean): Promise<Array<LoadedPlugin<Transformer<unknown>>>>;
51
+ getBundler(): Promise<LoadedPlugin<Bundler<unknown>>>;
52
+ getNamers(): Promise<Array<LoadedPlugin<Namer<unknown>>>>;
53
+ getRuntimes(): Promise<Array<LoadedPlugin<Runtime<unknown>>>>;
54
+ getPackager(filePath: FilePath): Promise<LoadedPlugin<Packager<unknown, unknown>>>;
55
+ _getOptimizerNodes(filePath: FilePath, pipeline?: string | null): PureAtlaspackConfigPipeline;
56
+ getOptimizerNames(filePath: FilePath, pipeline?: string | null): Array<string>;
57
+ getOptimizers(filePath: FilePath, pipeline?: string | null): Promise<Array<LoadedPlugin<Optimizer<unknown, unknown>>>>;
58
+ getCompressors(filePath: FilePath): Promise<Array<LoadedPlugin<Compressor>>>;
59
+ getReporters(): Promise<Array<LoadedPlugin<Reporter>>>;
60
+ isGlobMatch(projectPath: ProjectPath, pattern: Glob, pipeline?: string | null): boolean;
61
+ matchGlobMap<T>(filePath: ProjectPath, globMap: Partial<Record<Glob, T>>): T | null | undefined;
62
+ matchGlobMapPipelines(filePath: ProjectPath, globMap: Partial<Record<Glob, ExtendableAtlaspackConfigPipeline>>, pipeline?: string | null): PureAtlaspackConfigPipeline;
63
+ missingPluginError(plugins: GlobMap<ExtendableAtlaspackConfigPipeline> | GlobMap<AtlaspackPluginNode> | PureAtlaspackConfigPipeline, message: string, key: string): Promise<ThrowableDiagnostic>;
64
+ }
65
+ export {};
@@ -0,0 +1,53 @@
1
+ import type { PackageName } from '@atlaspack/types';
2
+ import type { SchemaEntity } from '@atlaspack/utils';
3
+ export declare function validatePackageName(pkg: PackageName | null | undefined, pluginType: string, key: string): void;
4
+ declare const _default: {
5
+ type: string;
6
+ properties: {
7
+ $schema: {
8
+ type: string;
9
+ };
10
+ extends: {
11
+ oneOf: ({
12
+ type: string;
13
+ __validate: (val: string) => void;
14
+ items?: undefined;
15
+ } | {
16
+ type: string;
17
+ items: {
18
+ type: string;
19
+ __validate: (val: string) => void;
20
+ };
21
+ __validate?: undefined;
22
+ })[];
23
+ };
24
+ bundler: {
25
+ type: string;
26
+ __validate: (arg1: string) => void;
27
+ };
28
+ resolvers: SchemaEntity;
29
+ transformers: SchemaEntity;
30
+ validators: SchemaEntity;
31
+ namers: SchemaEntity;
32
+ packagers: SchemaEntity;
33
+ optimizers: SchemaEntity;
34
+ compressors: SchemaEntity;
35
+ reporters: SchemaEntity;
36
+ runtimes: SchemaEntity;
37
+ unstable_alias: {
38
+ type: string;
39
+ properties: {};
40
+ additionalProperties: {
41
+ type: string;
42
+ };
43
+ };
44
+ filePath: {
45
+ type: string;
46
+ };
47
+ resolveFrom: {
48
+ type: string;
49
+ };
50
+ };
51
+ additionalProperties: boolean;
52
+ };
53
+ export default _default;
@@ -0,0 +1,232 @@
1
+ import type { GraphVisitor, FilePath, TraversalActions, BundleBehavior as IBundleBehavior, Symbol } from '@atlaspack/types';
2
+ import type { ContentGraphOpts, NodeId, SerializedContentGraph } from '@atlaspack/graph';
3
+ import type { Asset, AssetNode, Bundle, BundleGraphNode, BundleGroup, Dependency, DependencyNode, InternalSourceLocation, Target, Condition } from './types';
4
+ import type AssetGraph from './AssetGraph';
5
+ import type { ProjectPath } from './projectPath';
6
+ import { ContentGraph } from '@atlaspack/graph';
7
+ import type { EnvironmentRef } from './EnvironmentManager';
8
+ export declare const bundleGraphEdgeTypes: {
9
+ readonly null: 1;
10
+ readonly contains: 2;
11
+ readonly bundle: 3;
12
+ readonly references: 4;
13
+ readonly internal_async: 5;
14
+ readonly conditional: 6;
15
+ };
16
+ export type BundleGraphEdgeType = (typeof bundleGraphEdgeTypes)[keyof typeof bundleGraphEdgeTypes];
17
+ type InternalSymbolResolution = {
18
+ asset: Asset;
19
+ exportSymbol: string;
20
+ symbol: Symbol | null | undefined | false;
21
+ loc: InternalSourceLocation | null | undefined;
22
+ };
23
+ type InternalExportSymbolResolution = InternalSymbolResolution & {
24
+ readonly exportAs: Symbol | string;
25
+ };
26
+ type BundleGraphOpts = {
27
+ graph: ContentGraphOpts<BundleGraphNode, BundleGraphEdgeType>;
28
+ bundleContentHashes: Map<string, string>;
29
+ assetPublicIds: Set<string>;
30
+ publicIdByAssetId: Map<string, string>;
31
+ conditions: Map<string, Condition>;
32
+ };
33
+ type SerializedBundleGraph = {
34
+ $$raw: true;
35
+ graph: SerializedContentGraph<BundleGraphNode, BundleGraphEdgeType>;
36
+ bundleContentHashes: Map<string, string>;
37
+ assetPublicIds: Set<string>;
38
+ publicIdByAssetId: Map<string, string>;
39
+ conditions: Map<string, Condition>;
40
+ };
41
+ /**
42
+ * Stores assets, dependencies, bundle groups, bundles, and the relationships between them.
43
+ * The BundleGraph is passed to the bundler plugin wrapped in a MutableBundleGraph,
44
+ * and is passed to packagers and optimizers wrapped in the public BundleGraph object, both
45
+ * of which implement public api for this structure. This is the internal structure.
46
+ */
47
+ export default class BundleGraph {
48
+ /** A set of all existing concise asset ids present in the BundleGraph */
49
+ _assetPublicIds: Set<string>;
50
+ /** Maps full asset ids (currently 32-character strings) to concise ids (minimum of 5 character strings) */
51
+ _publicIdByAssetId: Map<string, string>;
52
+ /**
53
+ * A cache of bundle hashes by bundle id.
54
+ *
55
+ * TODO: These hashes are being invalidated in mutative methods, but this._graph is not a private
56
+ * property so it is possible to reach in and mutate the graph without invalidating these hashes.
57
+ * It needs to be exposed in BundlerRunner for now based on how applying runtimes works and the
58
+ * BundlerRunner takes care of invalidating hashes when runtimes are applied, but this is not ideal.
59
+ */
60
+ _bundleContentHashes: Map<string, string>;
61
+ _targetEntryRoots: Map<ProjectPath, FilePath>;
62
+ /** The internal core Graph structure */
63
+ _graph: ContentGraph<BundleGraphNode, BundleGraphEdgeType>;
64
+ _bundlePublicIds: Set<string>;
65
+ _conditions: Map<string, Condition>;
66
+ constructor({ graph, publicIdByAssetId, assetPublicIds, bundleContentHashes, conditions, }: {
67
+ graph: ContentGraph<BundleGraphNode, BundleGraphEdgeType>;
68
+ publicIdByAssetId: Map<string, string>;
69
+ assetPublicIds: Set<string>;
70
+ bundleContentHashes: Map<string, string>;
71
+ conditions: Map<string, Condition>;
72
+ });
73
+ /**
74
+ * Produce a BundleGraph from an AssetGraph by removing asset groups and retargeting dependencies
75
+ * based on the symbol data (resolving side-effect free reexports).
76
+ */
77
+ static fromAssetGraph(assetGraph: AssetGraph, isProduction: boolean, publicIdByAssetId?: Map<string, string>, assetPublicIds?: Set<string>): BundleGraph;
78
+ serialize(): SerializedBundleGraph;
79
+ static deserialize(serialized: BundleGraphOpts): BundleGraph;
80
+ /**
81
+ * Serialize the bundle graph for efficient transfer to native Rust code.
82
+ * Returns a JSON string of nodes, an array of edges, and a map of asset IDs to public IDs.
83
+ */
84
+ serializeForNative(): {
85
+ nodesJson: string;
86
+ edges: [number, number, BundleGraphEdgeType][];
87
+ publicIdByAssetId: Record<string, string>;
88
+ environmentsJson: string;
89
+ };
90
+ /**
91
+ * Serialize only the given asset nodes for native incremental update.
92
+ * Same node shape and env/omit logic as serializeForNative.
93
+ */
94
+ serializeAssetNodesForNative(assetIds: Array<string>): string;
95
+ /**
96
+ * Remove null and undefined values from an object to reduce JSON size.
97
+ * Preserves false, 0, empty strings, and arrays.
98
+ */
99
+ private _omitNulls;
100
+ createBundle(opts: {
101
+ readonly entryAsset: Asset;
102
+ readonly bundleRoots?: Array<Asset>;
103
+ readonly target: Target;
104
+ readonly needsStableName?: boolean | null | undefined;
105
+ readonly bundleBehavior?: IBundleBehavior | null | undefined;
106
+ readonly shouldContentHash: boolean;
107
+ readonly env: EnvironmentRef;
108
+ } | {
109
+ readonly type: string;
110
+ readonly env: EnvironmentRef;
111
+ readonly uniqueKey: string;
112
+ readonly target: Target;
113
+ readonly needsStableName?: boolean | null | undefined;
114
+ readonly bundleBehavior?: IBundleBehavior | null | undefined;
115
+ readonly isSplittable?: boolean | null | undefined;
116
+ readonly pipeline?: string | null | undefined;
117
+ readonly shouldContentHash: boolean;
118
+ }): Bundle;
119
+ addAssetToBundle(asset: Asset, bundle: Bundle): void;
120
+ addAssetGraphToBundle(asset: Asset, bundle: Bundle, shouldSkipDependency?: (arg1: Dependency) => boolean): void;
121
+ markDependencyReferenceable(dependency: Dependency): void;
122
+ addEntryToBundle(asset: Asset, bundle: Bundle, shouldSkipDependency?: (arg1: Dependency) => boolean): void;
123
+ internalizeAsyncDependency(bundle: Bundle, dependency: Dependency): void;
124
+ isDependencySkipped(dependency: Dependency): boolean;
125
+ getParentBundlesOfBundleGroup(bundleGroup: BundleGroup): Array<Bundle>;
126
+ resolveAsyncDependency(dependency: Dependency, bundle?: Bundle | null): {
127
+ type: 'bundle_group';
128
+ value: BundleGroup;
129
+ } | {
130
+ type: 'asset';
131
+ value: Asset;
132
+ } | null | undefined;
133
+ getReferencedBundle(dependency: Dependency, fromBundle: Bundle): Bundle | null | undefined;
134
+ removeAssetGraphFromBundle(asset: Asset, bundle: Bundle): void;
135
+ /**
136
+ * Remove a bundle from the bundle graph. Remove its bundle group if it is
137
+ * the only bundle in the group.
138
+ */
139
+ removeBundle(bundle: Bundle): Set<BundleGroup>;
140
+ removeBundleGroup(bundleGroup: BundleGroup): void;
141
+ _removeExternalDependency(bundle: Bundle, dependency: Dependency): void;
142
+ createAssetReference(dependency: Dependency, asset: Asset, bundle: Bundle): void;
143
+ createBundleReference(from: Bundle, to: Bundle): void;
144
+ createBundleConditionalReference(from: Bundle, to: Bundle): void;
145
+ getBundlesWithAsset(asset: Asset): Array<Bundle>;
146
+ getBundlesWithDependency(dependency: Dependency): Array<Bundle>;
147
+ getDependencyAssets(dependency: Dependency): Array<Asset>;
148
+ getResolvedAsset(dep: Dependency, bundle?: Bundle | null): Asset | null | undefined;
149
+ getDependencies(asset: Asset): Array<Dependency>;
150
+ traverseAssets<TContext>(bundle: Bundle, visit: GraphVisitor<Asset, TContext>, startAsset?: Asset): TContext | null | undefined;
151
+ isAssetReferenced(bundle: Bundle, asset: Asset): boolean;
152
+ isAssetReferencedFastCheck(bundle: Bundle, asset: Asset): boolean | null;
153
+ getReferencedAssets(bundle: Bundle): Set<Asset>;
154
+ hasParentBundleOfType(bundle: Bundle, type: string): boolean;
155
+ getParentBundles(bundle: Bundle): Array<Bundle>;
156
+ isAssetReachableFromBundle(asset: Asset, bundle: Bundle): boolean;
157
+ /**
158
+ * Performs a depth-first traversal of all assets and dependencies contained
159
+ * within a bundle. Only visits nodes that are directly contained in the bundle
160
+ * (connected via a `contains` edge).
161
+ *
162
+ * Entry Asset Ordering:
163
+ * The traversal guarantees that entry assets are visited in the exact order they
164
+ * appear in `bundle.entryAssetIds`. This ordering is critical for several reasons:
165
+ *
166
+ * 1. **Code Execution Order in Packagers**: Packagers (ScopeHoistingPackager,
167
+ * DevPackager) use this traversal to concatenate assets into the final bundle.
168
+ * The traversal order determines the execution order of code in the output.
169
+ * Entry assets must be processed in their defined order to ensure correct
170
+ * initialization sequences.
171
+ *
172
+ * 2. **Runtime Injection**: Runtime assets (HMR, bundle manifests) are prepended
173
+ * to `entryAssetIds` via `unshift()` in `applyRuntimes.ts`. By honoring the
174
+ * array order, runtimes are guaranteed to be visited (and thus output) before
175
+ * application entry points, ensuring the runtime infrastructure is available
176
+ * when application code executes.
177
+ *
178
+ * 3. **Deterministic Builds**: Consistent traversal order ensures reproducible
179
+ * bundle output, which is essential for caching and build verification.
180
+ *
181
+ * The sorting only applies at the first traversal level (direct children of the
182
+ * start node). Subsequent levels follow standard DFS order based on the graph's
183
+ * edge structure.
184
+ *
185
+ * @param bundle - The bundle to traverse
186
+ * @param visit - Visitor callback receiving asset or dependency nodes
187
+ * @param startAsset - Optional asset to start traversal from (defaults to bundle root)
188
+ */
189
+ traverseBundle<TContext>(bundle: Bundle, visit: GraphVisitor<AssetNode | DependencyNode, TContext>, startAsset?: Asset): TContext | null | undefined;
190
+ traverse<TContext>(visit: GraphVisitor<AssetNode | DependencyNode, TContext>, start?: Asset): TContext | null | undefined;
191
+ getChildBundles(bundle: Bundle): Array<Bundle>;
192
+ traverseBundles<TContext>(visit: GraphVisitor<Bundle, TContext>, startBundle?: Bundle | null): TContext | null | undefined;
193
+ getBundles(opts?: {
194
+ includeInline: boolean;
195
+ }): Array<Bundle>;
196
+ getTotalSize(asset: Asset): number;
197
+ getReferencingBundles(bundle: Bundle): Array<Bundle>;
198
+ getBundleGroupsContainingBundle(bundle: Bundle): Array<BundleGroup>;
199
+ getDirectParentBundleGroups(bundle: Bundle): Array<BundleGroup>;
200
+ getBundlesInBundleGroup(bundleGroup: BundleGroup, opts?: {
201
+ includeInline: boolean;
202
+ }): Array<Bundle>;
203
+ getReferencedBundles(bundle: Bundle, opts?: {
204
+ recursive?: boolean;
205
+ includeInline?: boolean;
206
+ }): Array<Bundle>;
207
+ getIncomingDependencies(asset: Asset): Array<Dependency>;
208
+ getAssetWithDependency(dep: Dependency): Asset | null | undefined;
209
+ bundleHasAsset(bundle: Bundle, asset: Asset): boolean;
210
+ bundleHasDependency(bundle: Bundle, dependency: Dependency): boolean;
211
+ filteredTraverse<TValue, TContext>(bundleNodeId: NodeId, filter: (arg1: NodeId, arg2: TraversalActions) => TValue | null | undefined, visit: GraphVisitor<TValue, TContext>): TContext | null | undefined;
212
+ getSymbolResolution(asset: Asset, symbol: Symbol, boundary?: Bundle | null): InternalSymbolResolution;
213
+ getAssetById(contentKey: string): Asset;
214
+ getAssetPublicId(asset: Asset): string;
215
+ getExportedSymbols(asset: Asset, boundary?: Bundle | null): Array<InternalExportSymbolResolution>;
216
+ getContentHash(bundle: Bundle): string;
217
+ getInlineBundles(bundle: Bundle): Array<Bundle>;
218
+ getHash(bundle: Bundle): string;
219
+ getBundleGraphHash(): string;
220
+ addBundleToBundleGroup(bundle: Bundle, bundleGroup: BundleGroup): void;
221
+ getUsedSymbolsAsset(asset: Asset): ReadonlySet<Symbol> | null | undefined;
222
+ getUsedSymbolsDependency(dep: Dependency): ReadonlySet<Symbol> | null | undefined;
223
+ merge(other: BundleGraph): void;
224
+ isEntryBundleGroup(bundleGroup: BundleGroup): boolean;
225
+ /**
226
+ * Update the asset in a Bundle Graph and clear the associated Bundle hash.
227
+ */
228
+ updateAsset(asset: AssetNode): void;
229
+ getEntryRoot(projectRoot: FilePath, target: Target): FilePath;
230
+ getReferencedConditionalBundles(bundle: Bundle): Array<Bundle>;
231
+ }
232
+ export {};
@@ -0,0 +1,23 @@
1
+ import { Readable } from 'stream';
2
+ import type { AST, Blob } from '@atlaspack/types';
3
+ import SourceMap from '@atlaspack/source-map';
4
+ import type { Asset, Dependency, AtlaspackOptions } from './types';
5
+ export default class CommittedAsset {
6
+ key: string | null | undefined;
7
+ value: Asset;
8
+ options: AtlaspackOptions;
9
+ content: Promise<Buffer | string> | null | undefined;
10
+ mapBuffer: Promise<Buffer | null | undefined> | null | undefined;
11
+ map: Promise<SourceMap | null | undefined> | null | undefined;
12
+ ast: Promise<AST> | null | undefined;
13
+ code: string | null | undefined;
14
+ constructor(value: Asset, options: AtlaspackOptions);
15
+ getContent(): Blob | Promise<Buffer | string>;
16
+ getCode(): Promise<string>;
17
+ getBuffer(): Promise<Buffer>;
18
+ getStream(): Readable;
19
+ getMapBuffer(): Promise<Buffer | null | undefined>;
20
+ getMap(): Promise<SourceMap | null | undefined>;
21
+ getAST(): Promise<AST | null | undefined>;
22
+ getDependencies(): Array<Dependency>;
23
+ }