@atlaspack/core 2.16.2-canary.27 → 2.16.2-canary.270

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 (358) hide show
  1. package/CHANGELOG.md +665 -0
  2. package/dist/AssetGraph.js +591 -0
  3. package/dist/Atlaspack.js +658 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +108 -0
  6. package/dist/BundleGraph.js +1635 -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 +545 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1360 -0
  16. package/dist/SymbolPropagation.js +620 -0
  17. package/dist/TargetDescriptor.schema.js +143 -0
  18. package/dist/Transformation.js +490 -0
  19. package/dist/UncommittedAsset.js +315 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +305 -0
  22. package/dist/assetUtils.js +168 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +70 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +57 -0
  25. package/dist/atlaspack-v3/fs.js +52 -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 +94 -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 +25 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +76 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-logger.js +26 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-options.js +122 -0
  37. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  38. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  39. package/dist/atlaspack-v3/worker/worker.js +297 -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 +359 -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 +429 -0
  59. package/dist/requests/AssetGraphRequestRust.js +262 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +65 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +445 -0
  64. package/dist/requests/ConfigRequest.js +222 -0
  65. package/dist/requests/DevDepRequest.js +204 -0
  66. package/dist/requests/EntryRequest.js +314 -0
  67. package/dist/requests/PackageRequest.js +62 -0
  68. package/dist/requests/PathRequest.js +349 -0
  69. package/dist/requests/TargetRequest.js +1311 -0
  70. package/dist/requests/ValidationRequest.js +49 -0
  71. package/dist/requests/WriteBundleRequest.js +254 -0
  72. package/dist/requests/WriteBundlesRequest.js +184 -0
  73. package/dist/requests/asset-graph-diff.js +128 -0
  74. package/dist/requests/asset-graph-dot.js +131 -0
  75. package/dist/resolveOptions.js +268 -0
  76. package/dist/rustWorkerThreadDylibHack.js +19 -0
  77. package/dist/serializerCore.browser.js +43 -0
  78. package/dist/summarizeRequest.js +39 -0
  79. package/dist/types.js +31 -0
  80. package/dist/utils.js +172 -0
  81. package/dist/worker.js +123 -0
  82. package/lib/AssetGraph.js +111 -14
  83. package/lib/Atlaspack.js +81 -37
  84. package/lib/AtlaspackConfig.js +15 -3
  85. package/lib/AtlaspackConfig.schema.js +7 -5
  86. package/lib/BundleGraph.js +90 -32
  87. package/lib/CommittedAsset.js +6 -0
  88. package/lib/Dependency.js +8 -2
  89. package/lib/Environment.js +15 -8
  90. package/lib/EnvironmentManager.js +143 -0
  91. package/lib/IdentifierRegistry.js +1 -3
  92. package/lib/InternalConfig.js +3 -2
  93. package/lib/PackagerRunner.js +90 -27
  94. package/lib/ReporterRunner.js +6 -9
  95. package/lib/RequestTracker.js +266 -156
  96. package/lib/SymbolPropagation.js +42 -18
  97. package/lib/TargetDescriptor.schema.js +7 -1
  98. package/lib/Transformation.js +26 -10
  99. package/lib/UncommittedAsset.js +30 -9
  100. package/lib/Validation.js +18 -2
  101. package/lib/applyRuntimes.js +9 -1
  102. package/lib/assetUtils.js +7 -4
  103. package/lib/atlaspack-v3/AtlaspackV3.js +32 -7
  104. package/lib/atlaspack-v3/NapiWorkerPool.js +3 -0
  105. package/lib/atlaspack-v3/fs.js +3 -1
  106. package/lib/atlaspack-v3/index.js +28 -1
  107. package/lib/atlaspack-v3/jsCallable.js +0 -2
  108. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  109. package/lib/atlaspack-v3/worker/compat/bitflags.js +7 -6
  110. package/lib/atlaspack-v3/worker/compat/dependency.js +3 -0
  111. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  112. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +14 -9
  113. package/lib/atlaspack-v3/worker/compat/plugin-config.js +8 -10
  114. package/lib/atlaspack-v3/worker/compat/plugin-options.js +1 -0
  115. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  116. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  117. package/lib/atlaspack-v3/worker/index.js +3 -0
  118. package/lib/atlaspack-v3/worker/worker.js +43 -7
  119. package/lib/constants.js +0 -1
  120. package/lib/dumpGraphToGraphViz.js +71 -16
  121. package/lib/index.js +45 -1
  122. package/lib/loadDotEnv.js +4 -1
  123. package/lib/projectPath.js +5 -0
  124. package/lib/public/Asset.js +21 -11
  125. package/lib/public/Bundle.js +15 -16
  126. package/lib/public/BundleGraph.js +10 -4
  127. package/lib/public/BundleGroup.js +4 -5
  128. package/lib/public/Config.js +118 -17
  129. package/lib/public/Dependency.js +8 -6
  130. package/lib/public/Environment.js +12 -7
  131. package/lib/public/MutableBundleGraph.js +54 -12
  132. package/lib/public/PluginOptions.js +2 -2
  133. package/lib/public/Symbols.js +11 -11
  134. package/lib/public/Target.js +7 -6
  135. package/lib/registerCoreWithSerializer.js +5 -3
  136. package/lib/requests/AssetGraphRequest.js +42 -5
  137. package/lib/requests/AssetGraphRequestRust.js +126 -62
  138. package/lib/requests/AssetRequest.js +23 -6
  139. package/lib/requests/AtlaspackBuildRequest.js +10 -4
  140. package/lib/requests/AtlaspackConfigRequest.js +27 -16
  141. package/lib/requests/BundleGraphRequest.js +34 -19
  142. package/lib/requests/ConfigRequest.js +28 -4
  143. package/lib/requests/DevDepRequest.js +31 -5
  144. package/lib/requests/EntryRequest.js +2 -0
  145. package/lib/requests/PackageRequest.js +2 -1
  146. package/lib/requests/PathRequest.js +24 -3
  147. package/lib/requests/TargetRequest.js +122 -57
  148. package/lib/requests/ValidationRequest.js +5 -1
  149. package/lib/requests/WriteBundleRequest.js +39 -11
  150. package/lib/requests/WriteBundlesRequest.js +51 -4
  151. package/lib/requests/asset-graph-diff.js +12 -7
  152. package/lib/requests/asset-graph-dot.js +1 -7
  153. package/lib/resolveOptions.js +36 -10
  154. package/lib/rustWorkerThreadDylibHack.js +0 -1
  155. package/lib/types/AssetGraph.d.ts +80 -0
  156. package/lib/types/Atlaspack.d.ts +52 -0
  157. package/lib/types/AtlaspackConfig.d.ts +65 -0
  158. package/lib/types/AtlaspackConfig.schema.d.ts +46 -0
  159. package/lib/types/BundleGraph.d.ts +182 -0
  160. package/lib/types/CommittedAsset.d.ts +23 -0
  161. package/lib/types/Dependency.d.ts +44 -0
  162. package/lib/types/Environment.d.ts +11 -0
  163. package/lib/types/EnvironmentManager.d.ts +37 -0
  164. package/lib/types/IdentifierRegistry.d.ts +6 -0
  165. package/lib/types/InternalConfig.d.ts +24 -0
  166. package/lib/types/PackagerRunner.d.ts +85 -0
  167. package/lib/types/ReporterRunner.d.ts +25 -0
  168. package/lib/types/RequestTracker.d.ts +385 -0
  169. package/lib/types/SymbolPropagation.d.ts +11 -0
  170. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  171. package/lib/types/Transformation.d.ts +72 -0
  172. package/lib/types/UncommittedAsset.d.ts +61 -0
  173. package/lib/types/Validation.d.ts +37 -0
  174. package/lib/types/applyRuntimes.d.ts +25 -0
  175. package/lib/types/assetUtils.d.ts +42 -0
  176. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +26 -0
  177. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +12 -0
  178. package/lib/types/atlaspack-v3/fs.d.ts +12 -0
  179. package/lib/types/atlaspack-v3/index.d.ts +5 -0
  180. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  181. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  182. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +15 -0
  183. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  184. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  185. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -1
  186. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  187. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +37 -0
  188. package/lib/types/atlaspack-v3/worker/compat/plugin-logger.d.ts +9 -0
  189. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +22 -0
  190. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  191. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  192. package/lib/types/atlaspack-v3/worker/worker.d.ts +60 -0
  193. package/lib/types/constants.d.ts +13 -0
  194. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  195. package/lib/types/index.d.ts +8 -0
  196. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  197. package/lib/types/loadDotEnv.d.ts +3 -0
  198. package/lib/types/projectPath.d.ts +19 -0
  199. package/lib/types/public/Asset.d.ts +74 -0
  200. package/lib/types/public/Bundle.d.ts +45 -0
  201. package/lib/types/public/BundleGraph.d.ts +70 -0
  202. package/lib/types/public/BundleGroup.d.ts +12 -0
  203. package/lib/types/public/Config.d.ts +75 -0
  204. package/lib/types/public/Dependency.d.ts +32 -0
  205. package/lib/types/public/Environment.d.ts +34 -0
  206. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  207. package/lib/types/public/PluginOptions.d.ts +25 -0
  208. package/lib/types/public/Symbols.d.ts +81 -0
  209. package/lib/types/public/Target.d.ts +16 -0
  210. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  211. package/lib/types/requests/AssetGraphRequest.d.ts +74 -0
  212. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  213. package/lib/types/requests/AssetRequest.d.ts +16 -0
  214. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  215. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  216. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  217. package/lib/types/requests/ConfigRequest.d.ts +59 -0
  218. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  219. package/lib/types/requests/EntryRequest.d.ts +36 -0
  220. package/lib/types/requests/PackageRequest.d.ts +27 -0
  221. package/lib/types/requests/PathRequest.d.ts +48 -0
  222. package/lib/types/requests/TargetRequest.d.ts +48 -0
  223. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  224. package/lib/types/requests/WriteBundleRequest.d.ts +28 -0
  225. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  226. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  227. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  228. package/lib/types/resolveOptions.d.ts +3 -0
  229. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  230. package/lib/types/serializerCore.browser.d.ts +3 -0
  231. package/lib/types/summarizeRequest.d.ts +10 -0
  232. package/lib/types/types.d.ts +493 -0
  233. package/lib/types/utils.d.ts +23 -0
  234. package/lib/types/worker.d.ts +44 -0
  235. package/lib/types.js +8 -1
  236. package/lib/utils.js +17 -2
  237. package/lib/worker.js +29 -13
  238. package/package.json +24 -34
  239. package/src/{AssetGraph.js → AssetGraph.ts} +156 -52
  240. package/src/{Atlaspack.js → Atlaspack.ts} +114 -61
  241. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +16 -19
  242. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  243. package/src/{BundleGraph.js → BundleGraph.ts} +231 -140
  244. package/src/{CommittedAsset.js → CommittedAsset.ts} +14 -12
  245. package/src/{Dependency.js → Dependency.ts} +59 -42
  246. package/src/{Environment.js → Environment.ts} +24 -15
  247. package/src/EnvironmentManager.ts +154 -0
  248. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  249. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  250. package/src/{PackagerRunner.js → PackagerRunner.ts} +178 -86
  251. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  252. package/src/{RequestTracker.js → RequestTracker.ts} +572 -357
  253. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +165 -57
  254. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +7 -1
  255. package/src/{Transformation.js → Transformation.ts} +71 -62
  256. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +57 -36
  257. package/src/{Validation.js → Validation.ts} +32 -17
  258. package/src/{applyRuntimes.js → applyRuntimes.ts} +35 -26
  259. package/src/{assetUtils.js → assetUtils.ts} +47 -35
  260. package/src/atlaspack-v3/AtlaspackV3.ts +122 -0
  261. package/src/atlaspack-v3/{NapiWorkerPool.js → NapiWorkerPool.ts} +10 -5
  262. package/src/atlaspack-v3/{fs.js → fs.ts} +3 -4
  263. package/src/atlaspack-v3/{index.js → index.ts} +2 -4
  264. package/src/atlaspack-v3/jsCallable.ts +14 -0
  265. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  266. package/src/atlaspack-v3/worker/compat/{bitflags.js → bitflags.ts} +9 -10
  267. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +12 -12
  268. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  269. package/src/atlaspack-v3/worker/compat/index.ts +9 -0
  270. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +20 -19
  271. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +27 -26
  272. package/src/atlaspack-v3/worker/compat/{plugin-logger.js → plugin-logger.ts} +0 -2
  273. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +4 -5
  274. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  275. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  276. package/src/atlaspack-v3/worker/index.js +2 -1
  277. package/src/atlaspack-v3/worker/{worker.js → worker.ts} +102 -66
  278. package/src/{constants.js → constants.ts} +0 -3
  279. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  280. package/src/index.ts +18 -0
  281. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  282. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  283. package/src/{projectPath.js → projectPath.ts} +20 -9
  284. package/src/public/{Asset.js → Asset.ts} +40 -27
  285. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  286. package/src/public/{BundleGraph.js → BundleGraph.ts} +81 -50
  287. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  288. package/src/public/{Config.js → Config.ts} +171 -33
  289. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  290. package/src/public/{Environment.js → Environment.ts} +28 -17
  291. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  292. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  293. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  294. package/src/public/{Target.js → Target.ts} +10 -8
  295. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  296. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +84 -49
  297. package/src/requests/AssetGraphRequestRust.ts +352 -0
  298. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  299. package/src/requests/{AtlaspackBuildRequest.js → AtlaspackBuildRequest.ts} +46 -32
  300. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  301. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +71 -58
  302. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +71 -50
  303. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  304. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  305. package/src/requests/{PackageRequest.js → PackageRequest.ts} +20 -22
  306. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  307. package/src/requests/{TargetRequest.js → TargetRequest.ts} +260 -179
  308. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  309. package/src/requests/{WriteBundleRequest.js → WriteBundleRequest.ts} +77 -49
  310. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +109 -37
  311. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  312. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  313. package/src/{resolveOptions.js → resolveOptions.ts} +56 -24
  314. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  315. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  316. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  317. package/src/types.ts +647 -0
  318. package/src/{utils.js → utils.ts} +52 -21
  319. package/src/{worker.js → worker.ts} +49 -41
  320. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +37 -8
  321. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  322. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  323. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +75 -15
  324. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  325. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  326. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  327. package/test/Environment.test.ts +153 -0
  328. package/test/EnvironmentManager.test.ts +188 -0
  329. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  330. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  331. package/test/PackagerRunner.test.ts +0 -0
  332. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  333. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  334. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  335. package/test/PublicEnvironment.test.ts +49 -0
  336. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  337. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +314 -59
  338. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  339. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +66 -92
  340. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  341. package/test/fixtures/custom-targets/package.json +6 -0
  342. package/test/public/Config.test.ts +104 -0
  343. package/test/requests/{AssetGraphRequestRust.test.js → AssetGraphRequestRust.test.ts} +164 -134
  344. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  345. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  346. package/test/{test-utils.js → test-utils.ts} +4 -11
  347. package/test/{utils.test.js → utils.test.ts} +1 -3
  348. package/tsconfig.json +57 -0
  349. package/tsconfig.tsbuildinfo +1 -0
  350. package/index.d.ts +0 -30
  351. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  352. package/src/atlaspack-v3/jsCallable.js +0 -18
  353. package/src/index.js +0 -13
  354. package/src/requests/AssetGraphRequestRust.js +0 -263
  355. package/src/types.js +0 -600
  356. package/test/Environment.test.js +0 -119
  357. package/test/PackagerRunner.test.js +0 -27
  358. package/test/PublicEnvironment.test.js +0 -27
@@ -26,6 +26,13 @@ function _nullthrows() {
26
26
  };
27
27
  return data;
28
28
  }
29
+ function _featureFlags() {
30
+ const data = require("@atlaspack/feature-flags");
31
+ _featureFlags = function () {
32
+ return data;
33
+ };
34
+ return data;
35
+ }
29
36
  function _utils() {
30
37
  const data = require("@atlaspack/utils");
31
38
  _utils = function () {
@@ -66,9 +73,10 @@ function createAssetGraphRequest(requestInput) {
66
73
  run: async input => {
67
74
  let prevResult = await input.api.getPreviousResult();
68
75
  let builder = new AssetGraphBuilder(input, prevResult);
69
- let assetGraphRequest = await await builder.build();
76
+ let assetGraphRequest = await builder.build();
70
77
 
71
78
  // early break for incremental bundling if production or flag is off;
79
+ assetGraphRequest.assetGraph.setDisableIncrementalBundling(!input.options.shouldBundleIncrementally || input.options.mode === 'production');
72
80
  if (!input.options.shouldBundleIncrementally || input.options.mode === 'production') {
73
81
  assetGraphRequest.assetGraph.safeToIncrementallyBundle = false;
74
82
  }
@@ -116,8 +124,15 @@ class AssetGraphBuilder {
116
124
  this.shouldBuildLazily = shouldBuildLazily ?? false;
117
125
  this.lazyIncludes = lazyIncludes ?? [];
118
126
  this.lazyExcludes = lazyExcludes ?? [];
119
- this.cacheKey = (0, _rust().hashString)(`${_constants.ATLASPACK_VERSION}${name}${JSON.stringify(entries) ?? ''}${options.mode}${options.shouldBuildLazily ? 'lazy' : 'eager'}`) + '-AssetGraph';
120
- this.isSingleChangeRebuild = api.getInvalidSubRequests().filter(req => req.requestType === 'asset_request').length === 1;
127
+ if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
128
+ const key = (0, _rust().hashString)(`${_constants.ATLASPACK_VERSION}${name}${JSON.stringify(entries) ?? ''}${options.mode}${options.shouldBuildLazily ? 'lazy' : 'eager'}`);
129
+ this.cacheKey = `AssetGraph/${_constants.ATLASPACK_VERSION}/${options.mode}/${key}`;
130
+ } else {
131
+ this.cacheKey = (0, _rust().hashString)(`${_constants.ATLASPACK_VERSION}${name}${JSON.stringify(entries) ?? ''}${options.mode}${options.shouldBuildLazily ? 'lazy' : 'eager'}`) + '-AssetGraph';
132
+ }
133
+ this.isSingleChangeRebuild = api.getInvalidSubRequests()
134
+ // @ts-expect-error TS2367
135
+ .filter(req => req.requestType === 'asset_request').length === 1;
121
136
  this.queue = new (_utils().PromiseQueue)();
122
137
  assetGraph.onNodeRemoved = nodeId => {
123
138
  this.assetGroupsWithRemovedParents.delete(nodeId);
@@ -156,7 +171,9 @@ class AssetGraphBuilder {
156
171
  const visitChildren = nodeId => {
157
172
  for (let childNodeId of this.assetGraph.getNodeIdsConnectedFrom(nodeId)) {
158
173
  let child = (0, _nullthrows().default)(this.assetGraph.getNode(childNodeId));
159
- if ((!visited.has(childNodeId) || child.hasDeferred) && this.shouldVisitChild(nodeId, childNodeId)) {
174
+ if (
175
+ // @ts-expect-error TS2339
176
+ (!visited.has(childNodeId) || child.hasDeferred) && this.shouldVisitChild(nodeId, childNodeId)) {
160
177
  if (child.type === 'asset_group') {
161
178
  visitedAssetGroups.add(childNodeId);
162
179
  }
@@ -317,7 +334,14 @@ class AssetGraphBuilder {
317
334
  }
318
335
  shouldSkipRequest(nodeId) {
319
336
  let node = (0, _nullthrows().default)(this.assetGraph.getNode(nodeId));
320
- return node.complete === true || !typesWithRequests.has(node.type) || node.correspondingRequest != null && this.api.canSkipSubrequest(node.correspondingRequest);
337
+ return (
338
+ // @ts-expect-error TS2339
339
+ node.complete === true || !typesWithRequests.has(node.type) ||
340
+ // @ts-expect-error TS2339
341
+ node.correspondingRequest != null &&
342
+ // @ts-expect-error TS2339
343
+ this.api.canSkipSubrequest(node.correspondingRequest)
344
+ );
321
345
  }
322
346
  queueCorrespondingRequest(nodeId, errors) {
323
347
  let promise;
@@ -356,6 +380,7 @@ class AssetGraphBuilder {
356
380
  let didEntriesChange = prevEntries.length !== currentEntries.length || prevEntries.every((entryId, index) => entryId === currentEntries[index]);
357
381
  if (didEntriesChange) {
358
382
  this.assetGraph.safeToIncrementallyBundle = false;
383
+ this.assetGraph.setNeedsBundling();
359
384
  }
360
385
  }
361
386
  }
@@ -378,6 +403,7 @@ class AssetGraphBuilder {
378
403
  }
379
404
  async runAssetRequest(input) {
380
405
  this.assetRequests.push(input);
406
+ // @ts-expect-error TS2345
381
407
  let request = (0, _AssetRequest.default)({
382
408
  ...input,
383
409
  name: this.name,
@@ -389,16 +415,26 @@ class AssetGraphBuilder {
389
415
  });
390
416
  if (assets != null) {
391
417
  for (let asset of assets) {
418
+ // Pass the runtimeAssetRequiringExecutionOnLoad flag from the asset
419
+ // group down to the asset itself, for reading in the packager.
420
+ if (input.runtimeAssetRequiringExecutionOnLoad) {
421
+ asset.meta = {
422
+ ...(asset.meta ?? {}),
423
+ runtimeAssetRequiringExecutionOnLoad: input.runtimeAssetRequiringExecutionOnLoad
424
+ };
425
+ }
392
426
  if (this.assetGraph.safeToIncrementallyBundle) {
393
427
  let otherAsset = this.assetGraph.getNodeByContentKey(asset.id);
394
428
  if (otherAsset != null) {
395
429
  (0, _assert().default)(otherAsset.type === 'asset');
396
430
  if (!this._areDependenciesEqualForAssets(asset, otherAsset.value)) {
397
431
  this.assetGraph.safeToIncrementallyBundle = false;
432
+ this.assetGraph.setNeedsBundling();
398
433
  }
399
434
  } else {
400
435
  // adding a new entry or dependency
401
436
  this.assetGraph.safeToIncrementallyBundle = false;
437
+ this.assetGraph.setNeedsBundling();
402
438
  }
403
439
  }
404
440
  this.changedAssets.set(asset.id, asset);
@@ -407,6 +443,7 @@ class AssetGraphBuilder {
407
443
  this.assetGraph.resolveAssetGroup(input, assets, request.id);
408
444
  } else {
409
445
  this.assetGraph.safeToIncrementallyBundle = false;
446
+ this.assetGraph.setNeedsBundling();
410
447
  }
411
448
  this.isSingleChangeRebuild = false;
412
449
  }
@@ -26,11 +26,19 @@ function _logger() {
26
26
  };
27
27
  return data;
28
28
  }
29
- var _AssetGraph = _interopRequireWildcard(require("../AssetGraph"));
29
+ function _featureFlags() {
30
+ const data = require("@atlaspack/feature-flags");
31
+ _featureFlags = function () {
32
+ return data;
33
+ };
34
+ return data;
35
+ }
36
+ var _AssetGraph = _interopRequireDefault(require("../AssetGraph"));
30
37
  var _RequestTracker = require("../RequestTracker");
31
38
  var _SymbolPropagation = require("../SymbolPropagation");
32
- 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); }
33
- 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; }
39
+ var _EnvironmentManager = require("../EnvironmentManager");
40
+ var _Environment = require("../Environment");
41
+ var _dumpGraphToGraphViz = _interopRequireDefault(require("../dumpGraphToGraphViz"));
34
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
43
  function createAssetGraphRequestRust(rustAtlaspack) {
36
44
  return input => ({
@@ -39,11 +47,25 @@ function createAssetGraphRequestRust(rustAtlaspack) {
39
47
  run: async input => {
40
48
  let options = input.options;
41
49
  let serializedAssetGraph = await rustAtlaspack.buildAssetGraph();
50
+
51
+ // Newly created nodes
42
52
  serializedAssetGraph.nodes = serializedAssetGraph.nodes.map(node => JSON.parse(node));
53
+
54
+ // Updated existing nodes
55
+ serializedAssetGraph.updates = serializedAssetGraph.updates.map(node => JSON.parse(node));
56
+
57
+ // Don't reuse a previous asset graph result if Rust didn't have one too
58
+ let prevResult = null;
59
+ if (serializedAssetGraph.hadPreviousGraph) {
60
+ prevResult = await input.api.getPreviousResult();
61
+ }
43
62
  let {
44
63
  assetGraph,
45
64
  changedAssets
46
- } = (0, _logger().instrument)('atlaspack_v3_getAssetGraph', () => getAssetGraph(serializedAssetGraph));
65
+ } = (0, _logger().instrument)('atlaspack_v3_getAssetGraph', () => {
66
+ var _prevResult;
67
+ return getAssetGraph(serializedAssetGraph, (_prevResult = prevResult) === null || _prevResult === void 0 ? void 0 : _prevResult.assetGraph);
68
+ });
47
69
  let changedAssetsPropagation = new Set(changedAssets.keys());
48
70
  let errors = (0, _SymbolPropagation.propagateSymbols)({
49
71
  options,
@@ -60,7 +82,8 @@ function createAssetGraphRequestRust(rustAtlaspack) {
60
82
  diagnostic: [...errors.values()][0]
61
83
  });
62
84
  }
63
- return {
85
+ await (0, _dumpGraphToGraphViz.default)(assetGraph, 'AssetGraphV3');
86
+ let result = {
64
87
  assetGraph,
65
88
  assetRequests: [],
66
89
  assetGroupsWithRemovedParents: new Set(),
@@ -68,19 +91,56 @@ function createAssetGraphRequestRust(rustAtlaspack) {
68
91
  changedAssetsPropagation,
69
92
  previousSymbolPropagationErrors: undefined
70
93
  };
94
+ await input.api.storeResult(result);
95
+ input.api.invalidateOnBuild();
96
+ return result;
71
97
  },
72
98
  input
73
99
  });
74
100
  }
101
+ function getAssetGraph(serializedGraph, prevAssetGraph) {
102
+ let graph;
103
+ let reuseEdges = false;
104
+ if (prevAssetGraph && serializedGraph.safeToSkipBundling) {
105
+ graph = new _AssetGraph.default({
106
+ _contentKeyToNodeId: prevAssetGraph._contentKeyToNodeId,
107
+ _nodeIdToContentKey: prevAssetGraph._nodeIdToContentKey,
108
+ nodes: prevAssetGraph.nodes,
109
+ rootNodeId: prevAssetGraph.rootNodeId,
110
+ adjacencyList: prevAssetGraph.adjacencyList
111
+ });
112
+ reuseEdges = true;
113
+ } else if (prevAssetGraph && (serializedGraph.updates.length > 0 || serializedGraph.nodes.length > 0)) {
114
+ graph = new _AssetGraph.default({
115
+ _contentKeyToNodeId: prevAssetGraph._contentKeyToNodeId,
116
+ _nodeIdToContentKey: prevAssetGraph._nodeIdToContentKey,
117
+ nodes: prevAssetGraph.nodes,
118
+ initialCapacity: serializedGraph.edges.length,
119
+ // Accomodate the root node
120
+ initialNodeCapacity: prevAssetGraph.nodes.length + 1,
121
+ rootNodeId: prevAssetGraph.rootNodeId
122
+ });
123
+ graph.safeToIncrementallyBundle = false;
124
+ } else {
125
+ graph = new _AssetGraph.default({
126
+ _contentKeyToNodeId: new Map(),
127
+ _nodeIdToContentKey: new Map(),
128
+ initialCapacity: serializedGraph.edges.length,
129
+ // Accomodate the root node
130
+ initialNodeCapacity: serializedGraph.nodes.length + 1
131
+ });
132
+ let rootNodeId = graph.addNodeByContentKey('@@root', {
133
+ id: '@@root',
134
+ type: 'root',
135
+ value: null
136
+ });
137
+ graph.setRootNodeId(rootNodeId);
138
+ graph.safeToIncrementallyBundle = false;
139
+ }
140
+ (0, _assert().default)(graph, 'Asset graph not initialized');
141
+ (0, _assert().default)(graph.rootNodeId != null, 'Asset graph has no root node');
75
142
 
76
- // $FlowFixMe
77
- function getAssetGraph(serializedGraph) {
78
- let graph = new _AssetGraph.default({
79
- _contentKeyToNodeId: new Map(),
80
- _nodeIdToContentKey: new Map(),
81
- initialCapacity: serializedGraph.edges.length
82
- });
83
- graph.safeToIncrementallyBundle = false;
143
+ // @ts-expect-error TS7031
84
144
  function mapSymbols({
85
145
  exported,
86
146
  ...symbol
@@ -88,19 +148,16 @@ function getAssetGraph(serializedGraph) {
88
148
  let jsSymbol = {
89
149
  local: symbol.local ?? undefined,
90
150
  loc: symbol.loc ?? undefined,
91
- meta: undefined,
92
- isWeak: symbol.isWeak
151
+ isWeak: symbol.isWeak,
152
+ meta: {
153
+ isEsm: symbol.isEsmExport,
154
+ isStaticBindingSafe: symbol.isStaticBindingSafe
155
+ }
93
156
  };
94
157
  if (symbol.exported) {
95
- // $FlowFixMe
158
+ // @ts-expect-error TS2339
96
159
  jsSymbol.exported = symbol.exported;
97
160
  }
98
- if (symbol.isEsmExport) {
99
- // $FlowFixMe
100
- jsSymbol.meta = {
101
- isEsm: true
102
- };
103
- }
104
161
  return [exported, jsSymbol];
105
162
  }
106
163
 
@@ -112,20 +169,26 @@ function getAssetGraph(serializedGraph) {
112
169
  let envKey = [env.context, env.engines.atlaspack, env.engines.browsers, env.engines.electron, env.engines.node, env.includeNodeModules, env.isLibrary, env.outputFormat, env.shouldScopeHoist, env.shouldOptimize, env.sourceType].join(':');
113
170
  let envId = envs.get(envKey);
114
171
  if (envId == null) {
115
- envId = envs.size;
172
+ envId = envs.size.toString();
116
173
  envs.set(envKey, envId);
117
174
  }
118
175
  return envId;
119
176
  };
120
- for (let node of serializedGraph.nodes) {
121
- if (node.type === 'root') {
122
- let index = graph.addNodeByContentKey('@@root', {
123
- id: '@@root',
124
- type: 'root',
125
- value: null
126
- });
127
- graph.setRootNodeId(index);
128
- } else if (node.type === 'entry') {
177
+ function updateNode(newNode, isUpdateNode) {
178
+ if (isUpdateNode) {
179
+ let existingNode = graph.getNodeByContentKey(newNode.id);
180
+ (0, _assert().default)(existingNode && existingNode.type === newNode.type);
181
+ Object.assign(existingNode, newNode);
182
+ } else {
183
+ graph.addNodeByContentKey(newNode.id, newNode);
184
+ }
185
+ }
186
+ let nodeTypeSwitchoverIndex = serializedGraph.nodes.length;
187
+ let nodesCount = serializedGraph.nodes.length + serializedGraph.updates.length;
188
+ for (let index = 0; index < nodesCount; index++) {
189
+ let isUpdateNode = index >= nodeTypeSwitchoverIndex;
190
+ let node = isUpdateNode ? serializedGraph.updates[index - nodeTypeSwitchoverIndex] : serializedGraph.nodes[index];
191
+ if (node.type === 'entry') {
129
192
  let id = 'entry:' + ++entry;
130
193
  graph.addNodeByContentKey(id, {
131
194
  id: id,
@@ -137,8 +200,11 @@ function getAssetGraph(serializedGraph) {
137
200
  let id = asset.id;
138
201
  asset.committed = true;
139
202
  asset.contentKey = id;
140
- asset.env.id = getEnvId(asset.env);
203
+ asset.env.id = (0, _featureFlags().getFeatureFlag)('environmentDeduplication') ?
204
+ // TODO: Rust can do this and avoid copying a significant amount of data over
205
+ (0, _Environment.getEnvironmentHash)(asset.env) : getEnvId(asset.env);
141
206
  asset.mapKey = `map:${asset.id}`;
207
+ asset.env = (0, _EnvironmentManager.toEnvironmentRef)(asset.env);
142
208
 
143
209
  // This is populated later when we map the edges between assets and dependencies
144
210
  asset.dependencies = new Map();
@@ -150,19 +216,25 @@ function getAssetGraph(serializedGraph) {
150
216
  asset.symbols = new Map(asset.symbols.map(mapSymbols));
151
217
  }
152
218
  changedAssets.set(id, asset);
153
- graph.addNodeByContentKey(id, {
219
+ let assetNode = {
154
220
  id,
155
221
  type: 'asset',
156
222
  usedSymbols: new Set(),
157
223
  usedSymbolsDownDirty: true,
158
224
  usedSymbolsUpDirty: true,
159
225
  value: asset
160
- });
226
+ };
227
+ updateNode(assetNode, isUpdateNode);
161
228
  } else if (node.type === 'dependency') {
162
- let id = node.value.id;
163
- let dependency = node.value.dependency;
229
+ let {
230
+ dependency,
231
+ id
232
+ } = node.value;
164
233
  dependency.id = id;
165
- dependency.env.id = getEnvId(dependency.env);
234
+ dependency.env.id = (0, _featureFlags().getFeatureFlag)('environmentDeduplication') ?
235
+ // TODO: Rust can do this and avoid copying a significant amount of data over
236
+ (0, _Environment.getEnvironmentHash)(dependency.env) : getEnvId(dependency.env);
237
+ dependency.env = (0, _EnvironmentManager.toEnvironmentRef)(dependency.env);
166
238
  if (dependency.symbols != null) {
167
239
  var _dependency$symbols;
168
240
  dependency.symbols = new Map((_dependency$symbols = dependency.symbols) === null || _dependency$symbols === void 0 ? void 0 : _dependency$symbols.map(mapSymbols));
@@ -173,43 +245,35 @@ function getAssetGraph(serializedGraph) {
173
245
  usedSymbolsDown.add('*');
174
246
  usedSymbolsUp.set('*', undefined);
175
247
  }
176
- graph.addNodeByContentKey(id, {
248
+ let depNode = {
177
249
  id,
178
250
  type: 'dependency',
179
251
  deferred: false,
180
252
  excluded: false,
181
253
  hasDeferred: node.has_deferred,
254
+ // @ts-expect-error TS2322
182
255
  usedSymbolsDown,
183
256
  usedSymbolsDownDirty: true,
184
257
  usedSymbolsUp,
185
258
  usedSymbolsUpDirtyDown: true,
186
259
  usedSymbolsUpDirtyUp: true,
187
260
  value: dependency
188
- });
261
+ };
262
+ updateNode(depNode, isUpdateNode);
189
263
  }
190
264
  }
191
- for (let i = 0; i < serializedGraph.edges.length; i += 2) {
192
- let from = serializedGraph.edges[i];
193
- let to = serializedGraph.edges[i + 1];
194
- let fromNode = graph.getNode(from);
195
- let toNode = graph.getNode(to);
196
- if ((fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'dependency') {
197
- (0, _assert().default)((toNode === null || toNode === void 0 ? void 0 : toNode.type) === 'asset');
198
-
199
- // For backwards compatibility, create asset group node if needed.
200
- let assetGroupNode = (0, _AssetGraph.nodeFromAssetGroup)({
201
- filePath: toNode.value.filePath,
202
- env: fromNode.value.env,
203
- pipeline: toNode.value.pipeline,
204
- sideEffects: Boolean(toNode.value.sideEffects)
205
- });
206
- let index = graph.addNodeByContentKeyIfNeeded(assetGroupNode.id, assetGroupNode);
207
- graph.addEdge(from, index);
208
- graph.addEdge(index, to);
209
- } else if ((fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'asset' && (toNode === null || toNode === void 0 ? void 0 : toNode.type) === 'dependency') {
210
- fromNode.value.dependencies.set(toNode.value.id, toNode.value);
211
- graph.addEdge(from, to);
212
- } else {
265
+ if (!reuseEdges) {
266
+ for (let i = 0; i < serializedGraph.edges.length; i += 2) {
267
+ let from = serializedGraph.edges[i];
268
+ let to = serializedGraph.edges[i + 1];
269
+ let fromNode = graph.getNode(from);
270
+ let toNode = graph.getNode(to);
271
+ if ((fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'dependency') {
272
+ (0, _assert().default)((toNode === null || toNode === void 0 ? void 0 : toNode.type) === 'asset');
273
+ }
274
+ if ((fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'asset' && (toNode === null || toNode === void 0 ? void 0 : toNode.type) === 'dependency') {
275
+ fromNode.value.dependencies.set(toNode.value.id, toNode.value);
276
+ }
213
277
  graph.addEdge(from, to);
214
278
  }
215
279
  }
@@ -31,6 +31,7 @@ var _ConfigRequest = require("./ConfigRequest");
31
31
  var _projectPath = require("../projectPath");
32
32
  var _ReporterRunner = require("../ReporterRunner");
33
33
  var _RequestTracker = require("../RequestTracker");
34
+ var _EnvironmentManager = require("../EnvironmentManager");
34
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
36
  function createAssetRequest(input) {
36
37
  return {
@@ -42,8 +43,10 @@ function createAssetRequest(input) {
42
43
  }
43
44
  const type = 'asset_request';
44
45
  function getId(input) {
45
- return (0, _rust().hashString)(type + (0, _projectPath.fromProjectPathRelative)(input.filePath) + input.env.id + String(input.isSource) + String(input.sideEffects) + (input.code ?? '') + ':' + (input.pipeline ?? '') + ':' + (input.query ?? ''));
46
+ return (0, _rust().hashString)(type + (0, _projectPath.fromProjectPathRelative)(input.filePath) + (0, _EnvironmentManager.toEnvironmentId)(input.env) + String(input.isSource) + String(input.sideEffects) + (input.code ?? '') + ':' + (input.pipeline ?? '') + ':' + (input.query ?? ''));
46
47
  }
48
+
49
+ // @ts-expect-error TS7031
47
50
  async function run({
48
51
  input,
49
52
  api,
@@ -64,17 +67,31 @@ async function run({
64
67
  } = input;
65
68
  let {
66
69
  cachePath
67
- } = (0, _nullthrows().default)(await api.runRequest((0, _AtlaspackConfigRequest.default)()));
68
- let previousDevDepRequests = new Map(await Promise.all(api.getSubRequests().filter(req => req.requestType === _RequestTracker.requestTypes.dev_dep_request).map(async req => [req.id, (0, _nullthrows().default)(await api.getRequestResult(req.id))])));
70
+ } = (0, _nullthrows().default)(
71
+ // @ts-expect-error TS2347
72
+ await api.runRequest((0, _AtlaspackConfigRequest.default)()));
73
+ let previousDevDepRequests = new Map(await Promise.all(api.getSubRequests()
74
+ // @ts-expect-error TS7006
75
+ .filter(req => req.requestType === _RequestTracker.requestTypes.dev_dep_request)
76
+ // @ts-expect-error TS7006
77
+ .map(async req => [req.id,
78
+ // @ts-expect-error TS2347
79
+ (0, _nullthrows().default)(await api.getRequestResult(req.id))])));
69
80
  let request = {
70
81
  ...rest,
71
82
  invalidateReason,
72
- devDeps: new Map([...previousDevDepRequests.entries()].filter(([id]) => api.canSkipSubrequest(id)).map(([, req]) => [`${req.specifier}:${(0, _projectPath.fromProjectPathRelative)(req.resolveFrom)}`, req.hash])),
73
- invalidDevDeps: await Promise.all([...previousDevDepRequests.entries()].filter(([id]) => !api.canSkipSubrequest(id)).flatMap(([, req]) => {
83
+ devDeps: new Map([...previousDevDepRequests.entries()]
84
+ // @ts-expect-error TS2769
85
+ .filter(([id]) => api.canSkipSubrequest(id)).map(([, req]) => [`${req.specifier}:${(0, _projectPath.fromProjectPathRelative)(req.resolveFrom)}`, req.hash])),
86
+ invalidDevDeps: await Promise.all([...previousDevDepRequests.entries()]
87
+ // @ts-expect-error TS2769
88
+ .filter(([id]) => !api.canSkipSubrequest(id)).flatMap(([, req]) => {
74
89
  return [{
75
90
  specifier: req.specifier,
76
91
  resolveFrom: req.resolveFrom
77
- }, ...(req.additionalInvalidations ?? []).map(i => ({
92
+ },
93
+ // @ts-expect-error TS7006
94
+ ...(req.additionalInvalidations ?? []).map(i => ({
78
95
  specifier: i.specifier,
79
96
  resolveFrom: i.resolveFrom
80
97
  }))];
@@ -54,12 +54,14 @@ async function run({
54
54
  force: Boolean(rustAtlaspack) || options.shouldBuildLazily && requestedAssetIds.size > 0
55
55
  });
56
56
 
57
- // $FlowFixMe Added in Flow 0.121.0 upgrade in #4381 (Windows only)
57
+ // @ts-expect-error TS2345
58
58
  (0, _dumpGraphToGraphViz.default)(bundleGraph._graph, 'BundleGraph', _BundleGraph.bundleGraphEdgeTypes);
59
59
  await (0, _ReporterRunner.report)({
60
60
  type: 'buildProgress',
61
61
  phase: 'bundled',
62
- bundleGraph: new _BundleGraph2.default(bundleGraph, (bundle, bundleGraph, options) => _Bundle.NamedBundle.get(bundle, bundleGraph, options), options),
62
+ bundleGraph: new _BundleGraph2.default(bundleGraph,
63
+ // @ts-expect-error TS2304
64
+ (bundle, bundleGraph, options) => _Bundle.NamedBundle.get(bundle, bundleGraph, options), options),
63
65
  changedAssets: new Map(Array.from(changedAssets).map(([id, asset]) => [id, (0, _Asset.assetFromValue)(asset, options)]))
64
66
  });
65
67
  let packagingMeasurement = _profiler().tracer.createMeasurement('packaging');
@@ -67,13 +69,17 @@ async function run({
67
69
  bundleGraph,
68
70
  optionsRef
69
71
  });
70
- let bundleInfo = await api.runRequest(writeBundlesRequest);
72
+ let {
73
+ bundleInfo,
74
+ scopeHoistingStats
75
+ } = await api.runRequest(writeBundlesRequest);
71
76
  packagingMeasurement && packagingMeasurement.end();
72
77
  (0, _utils.assertSignalNotAborted)(signal);
73
78
  return {
74
79
  bundleGraph,
75
80
  bundleInfo,
76
81
  changedAssets,
77
- assetRequests
82
+ assetRequests,
83
+ scopeHoistingStats
78
84
  };
79
85
  }
@@ -68,6 +68,8 @@ var _utils2 = require("../utils");
68
68
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
69
69
  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); }
70
70
  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; }
71
+ // @ts-expect-error TS2344
72
+
71
73
  const type = 'atlaspack_config_request';
72
74
  function createAtlaspackConfigRequest() {
73
75
  return {
@@ -117,10 +119,12 @@ function getCachedAtlaspackConfig(result, options) {
117
119
  } = result;
118
120
  let config = atlaspackConfigCache.get(cachePath);
119
121
  if (config) {
122
+ // @ts-expect-error TS2740
120
123
  return config;
121
124
  }
122
125
  config = new _AtlaspackConfig.AtlaspackConfig(processedConfig, options);
123
126
  atlaspackConfigCache.set(cachePath, config);
127
+ // @ts-expect-error TS2322
124
128
  return config;
125
129
  }
126
130
  async function loadAtlaspackConfig(options) {
@@ -157,13 +161,23 @@ async function resolveAtlaspackConfig(options) {
157
161
  extendedFiles
158
162
  } = await parseAndProcessConfig(configPath, contents, options);
159
163
  if (options.additionalReporters.length > 0) {
160
- config.reporters = [...options.additionalReporters.map(({
161
- packageName,
162
- resolveFrom
163
- }) => ({
164
+ var _config$reporters;
165
+ const reporterMap = new Map();
166
+ options.additionalReporters.forEach(({
164
167
  packageName,
165
168
  resolveFrom
166
- })), ...(config.reporters ?? [])];
169
+ }) => {
170
+ reporterMap.set(packageName, {
171
+ packageName,
172
+ resolveFrom
173
+ });
174
+ });
175
+ (_config$reporters = config.reporters) === null || _config$reporters === void 0 || _config$reporters.forEach(reporter => {
176
+ if (!reporterMap.has(reporter.packageName)) {
177
+ reporterMap.set(reporter.packageName, reporter);
178
+ }
179
+ });
180
+ config.reporters = Array.from(reporterMap.values());
167
181
  }
168
182
  return {
169
183
  config,
@@ -207,7 +221,6 @@ async function parseAndProcessConfig(configPath, contents, options) {
207
221
  function processPipeline(options, pipeline, keyPath, filePath) {
208
222
  if (pipeline) {
209
223
  return pipeline.map((pkg, i) => {
210
- // $FlowFixMe
211
224
  if (pkg === '...') return pkg;
212
225
  return {
213
226
  packageName: pkg,
@@ -218,14 +231,8 @@ function processPipeline(options, pipeline, keyPath, filePath) {
218
231
  }
219
232
  }
220
233
  const RESERVED_PIPELINES = new Set(['node:', 'npm:', 'http:', 'https:', 'data:', 'tel:', 'mailto:']);
221
- async function processMap(
222
- // $FlowFixMe
223
- map, keyPath, filePath, options
224
- // $FlowFixMe
225
- ) {
234
+ async function processMap(map, keyPath, filePath, options) {
226
235
  if (!map) return undefined;
227
-
228
- // $FlowFixMe
229
236
  let res = {};
230
237
  for (let k in map) {
231
238
  let i = k.indexOf(':');
@@ -268,6 +275,7 @@ async function processConfig(configFile, options) {
268
275
  } : {
269
276
  /*::...null*/
270
277
  }),
278
+ // @ts-expect-error TS2322
271
279
  resolvers: processPipeline(options, configFile.resolvers, '/resolvers', configFile.filePath),
272
280
  transformers: await processMap(configFile.transformers, '/transformers', configFile.filePath, options),
273
281
  bundler: configFile.bundler != null ? {
@@ -275,11 +283,14 @@ async function processConfig(configFile, options) {
275
283
  resolveFrom: (0, _projectPath.toProjectPath)(options.projectRoot, configFile.filePath),
276
284
  keyPath: '/bundler'
277
285
  } : undefined,
286
+ // @ts-expect-error TS2322
278
287
  namers: processPipeline(options, configFile.namers, '/namers', configFile.filePath),
288
+ // @ts-expect-error TS2322
279
289
  runtimes: processPipeline(options, configFile.runtimes, '/runtimes', configFile.filePath),
280
290
  packagers: await processMap(configFile.packagers, '/packagers', configFile.filePath, options),
281
291
  optimizers: await processMap(configFile.optimizers, '/optimizers', configFile.filePath, options),
282
292
  compressors: await processMap(configFile.compressors, '/compressors', configFile.filePath, options),
293
+ // @ts-expect-error TS2322
283
294
  reporters: processPipeline(options, configFile.reporters, '/reporters', configFile.filePath),
284
295
  validators: await processMap(configFile.validators, '/validators', configFile.filePath, options)
285
296
  };
@@ -462,14 +473,14 @@ function mergeMaps(base, ext, merger) {
462
473
  let res = {};
463
474
  // Add the extension options first so they have higher precedence in the output glob map
464
475
  for (let k in ext) {
465
- //$FlowFixMe Flow doesn't correctly infer the type. See https://github.com/facebook/flow/issues/1736.
466
476
  let key = k;
467
- res[key] = merger && base[key] != null ? merger(base[key], ext[key]) : ext[key];
477
+ res[key] =
478
+ // @ts-expect-error TS2345
479
+ merger && base[key] != null ? merger(base[key], ext[key]) : ext[key];
468
480
  }
469
481
 
470
482
  // Add base options that aren't defined in the extension
471
483
  for (let k in base) {
472
- // $FlowFixMe
473
484
  let key = k;
474
485
  if (res[key] == null) {
475
486
  res[key] = base[key];