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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/CHANGELOG.md +1324 -0
  2. package/dist/AssetGraph.js +523 -0
  3. package/dist/Atlaspack.js +701 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +117 -0
  6. package/dist/BundleGraph.js +1906 -0
  7. package/dist/CommittedAsset.js +142 -0
  8. package/dist/Dependency.js +125 -0
  9. package/dist/Environment.js +132 -0
  10. package/dist/EnvironmentManager.js +108 -0
  11. package/dist/IdentifierRegistry.js +38 -0
  12. package/dist/InternalConfig.js +37 -0
  13. package/dist/PackagerRunner.js +470 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1297 -0
  16. package/dist/SymbolPropagation.js +624 -0
  17. package/dist/TargetDescriptor.schema.js +146 -0
  18. package/dist/Transformation.js +514 -0
  19. package/dist/UncommittedAsset.js +310 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +384 -0
  22. package/dist/assetUtils.js +169 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +83 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +114 -0
  25. package/dist/atlaspack-v3/fs.js +53 -0
  26. package/dist/atlaspack-v3/index.js +25 -0
  27. package/dist/atlaspack-v3/jsCallable.js +16 -0
  28. package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
  29. package/dist/atlaspack-v3/worker/compat/bitflags.js +98 -0
  30. package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
  31. package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
  32. package/dist/atlaspack-v3/worker/compat/index.js +24 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +64 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-options.js +137 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  37. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  38. package/dist/atlaspack-v3/worker/side-effect-detector.js +243 -0
  39. package/dist/atlaspack-v3/worker/worker.js +398 -0
  40. package/dist/constants.js +17 -0
  41. package/dist/dumpGraphToGraphViz.js +281 -0
  42. package/dist/index.js +62 -0
  43. package/dist/loadAtlaspackPlugin.js +128 -0
  44. package/dist/loadDotEnv.js +41 -0
  45. package/dist/projectPath.js +83 -0
  46. package/dist/public/Asset.js +279 -0
  47. package/dist/public/Bundle.js +224 -0
  48. package/dist/public/BundleGraph.js +371 -0
  49. package/dist/public/BundleGroup.js +53 -0
  50. package/dist/public/Config.js +286 -0
  51. package/dist/public/Dependency.js +138 -0
  52. package/dist/public/Environment.js +278 -0
  53. package/dist/public/MutableBundleGraph.js +277 -0
  54. package/dist/public/PluginOptions.js +80 -0
  55. package/dist/public/Symbols.js +248 -0
  56. package/dist/public/Target.js +69 -0
  57. package/dist/registerCoreWithSerializer.js +38 -0
  58. package/dist/requests/AssetGraphRequest.js +430 -0
  59. package/dist/requests/AssetGraphRequestRust.js +471 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +98 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +381 -0
  64. package/dist/requests/BundleGraphRequestRust.js +324 -0
  65. package/dist/requests/BundleGraphRequestUtils.js +262 -0
  66. package/dist/requests/ConfigRequest.js +246 -0
  67. package/dist/requests/DevDepRequest.js +204 -0
  68. package/dist/requests/EntryRequest.js +314 -0
  69. package/dist/requests/PackageRequest.js +89 -0
  70. package/dist/requests/PathRequest.js +349 -0
  71. package/dist/requests/TargetRequest.js +1316 -0
  72. package/dist/requests/ValidationRequest.js +49 -0
  73. package/dist/requests/WriteBundleRequest.js +522 -0
  74. package/dist/requests/WriteBundlesRequest.js +190 -0
  75. package/dist/requests/asset-graph-diff.js +128 -0
  76. package/dist/requests/asset-graph-dot.js +131 -0
  77. package/dist/resolveOptions.js +267 -0
  78. package/dist/rustWorkerThreadDylibHack.js +19 -0
  79. package/dist/serializerCore.browser.js +43 -0
  80. package/dist/summarizeRequest.js +39 -0
  81. package/dist/types.js +31 -0
  82. package/dist/utils.js +172 -0
  83. package/dist/worker.js +123 -0
  84. package/lib/AssetGraph.js +53 -15
  85. package/lib/Atlaspack.js +140 -56
  86. package/lib/AtlaspackConfig.js +17 -6
  87. package/lib/AtlaspackConfig.schema.js +16 -5
  88. package/lib/BundleGraph.js +390 -43
  89. package/lib/CommittedAsset.js +8 -2
  90. package/lib/Dependency.js +9 -3
  91. package/lib/Environment.js +16 -10
  92. package/lib/EnvironmentManager.js +143 -0
  93. package/lib/IdentifierRegistry.js +2 -4
  94. package/lib/InternalConfig.js +3 -2
  95. package/lib/PackagerRunner.js +46 -82
  96. package/lib/ReporterRunner.js +8 -12
  97. package/lib/RequestTracker.js +191 -152
  98. package/lib/SymbolPropagation.js +52 -29
  99. package/lib/TargetDescriptor.schema.js +10 -1
  100. package/lib/Transformation.js +68 -19
  101. package/lib/UncommittedAsset.js +17 -24
  102. package/lib/Validation.js +20 -5
  103. package/lib/applyRuntimes.js +98 -7
  104. package/lib/assetUtils.js +16 -6
  105. package/lib/atlaspack-v3/AtlaspackV3.js +58 -15
  106. package/lib/atlaspack-v3/NapiWorkerPool.js +63 -2
  107. package/lib/atlaspack-v3/fs.js +4 -1
  108. package/lib/atlaspack-v3/index.js +28 -1
  109. package/lib/atlaspack-v3/jsCallable.js +0 -2
  110. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  111. package/lib/atlaspack-v3/worker/compat/bitflags.js +31 -25
  112. package/lib/atlaspack-v3/worker/compat/dependency.js +4 -1
  113. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  114. package/lib/atlaspack-v3/worker/compat/index.js +0 -11
  115. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +16 -11
  116. package/lib/atlaspack-v3/worker/compat/plugin-config.js +14 -35
  117. package/lib/atlaspack-v3/worker/compat/plugin-options.js +16 -2
  118. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  119. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  120. package/lib/atlaspack-v3/worker/index.js +3 -0
  121. package/lib/atlaspack-v3/worker/side-effect-detector.js +214 -0
  122. package/lib/atlaspack-v3/worker/worker.js +231 -79
  123. package/lib/constants.js +0 -1
  124. package/lib/dumpGraphToGraphViz.js +72 -17
  125. package/lib/index.js +46 -3
  126. package/lib/loadAtlaspackPlugin.js +2 -3
  127. package/lib/loadDotEnv.js +5 -2
  128. package/lib/projectPath.js +6 -1
  129. package/lib/public/Asset.js +22 -12
  130. package/lib/public/Bundle.js +16 -18
  131. package/lib/public/BundleGraph.js +27 -25
  132. package/lib/public/BundleGroup.js +5 -6
  133. package/lib/public/Config.js +118 -18
  134. package/lib/public/Dependency.js +9 -7
  135. package/lib/public/Environment.js +13 -8
  136. package/lib/public/MutableBundleGraph.js +56 -15
  137. package/lib/public/PluginOptions.js +2 -2
  138. package/lib/public/Symbols.js +12 -12
  139. package/lib/public/Target.js +8 -7
  140. package/lib/registerCoreWithSerializer.js +7 -4
  141. package/lib/requests/AssetGraphRequest.js +61 -40
  142. package/lib/requests/AssetGraphRequestRust.js +314 -82
  143. package/lib/requests/AssetRequest.js +24 -7
  144. package/lib/requests/AtlaspackBuildRequest.js +53 -7
  145. package/lib/requests/AtlaspackConfigRequest.js +29 -19
  146. package/lib/requests/BundleGraphRequest.js +61 -130
  147. package/lib/requests/BundleGraphRequestRust.js +381 -0
  148. package/lib/requests/BundleGraphRequestUtils.js +280 -0
  149. package/lib/requests/ConfigRequest.js +55 -7
  150. package/lib/requests/DevDepRequest.js +32 -6
  151. package/lib/requests/EntryRequest.js +4 -3
  152. package/lib/requests/PackageRequest.js +56 -12
  153. package/lib/requests/PathRequest.js +26 -6
  154. package/lib/requests/TargetRequest.js +129 -60
  155. package/lib/requests/ValidationRequest.js +6 -2
  156. package/lib/requests/WriteBundleRequest.js +329 -20
  157. package/lib/requests/WriteBundlesRequest.js +64 -10
  158. package/lib/requests/asset-graph-diff.js +13 -8
  159. package/lib/requests/asset-graph-dot.js +2 -8
  160. package/lib/resolveOptions.js +37 -14
  161. package/lib/rustWorkerThreadDylibHack.js +0 -1
  162. package/lib/serializerCore.browser.js +1 -2
  163. package/lib/summarizeRequest.js +1 -1
  164. package/lib/types/AssetGraph.d.ts +55 -0
  165. package/lib/types/Atlaspack.d.ts +52 -0
  166. package/lib/types/AtlaspackConfig.d.ts +65 -0
  167. package/lib/types/AtlaspackConfig.schema.d.ts +53 -0
  168. package/lib/types/BundleGraph.d.ts +232 -0
  169. package/lib/types/CommittedAsset.d.ts +23 -0
  170. package/lib/types/Dependency.d.ts +44 -0
  171. package/lib/types/Environment.d.ts +11 -0
  172. package/lib/types/EnvironmentManager.d.ts +37 -0
  173. package/lib/types/IdentifierRegistry.d.ts +6 -0
  174. package/lib/types/InternalConfig.d.ts +23 -0
  175. package/lib/types/PackagerRunner.d.ts +85 -0
  176. package/lib/types/ReporterRunner.d.ts +25 -0
  177. package/lib/types/RequestTracker.d.ts +385 -0
  178. package/lib/types/SymbolPropagation.d.ts +11 -0
  179. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  180. package/lib/types/Transformation.d.ts +72 -0
  181. package/lib/types/UncommittedAsset.d.ts +61 -0
  182. package/lib/types/Validation.d.ts +37 -0
  183. package/lib/types/applyRuntimes.d.ts +25 -0
  184. package/lib/types/assetUtils.d.ts +42 -0
  185. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +35 -0
  186. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +13 -0
  187. package/lib/types/atlaspack-v3/fs.d.ts +13 -0
  188. package/lib/types/atlaspack-v3/index.d.ts +6 -0
  189. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  190. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  191. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +14 -0
  192. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  193. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  194. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -2
  195. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  196. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +29 -0
  197. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +23 -0
  198. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  199. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  200. package/lib/types/atlaspack-v3/worker/side-effect-detector.d.ts +76 -0
  201. package/lib/types/atlaspack-v3/worker/worker.d.ts +81 -0
  202. package/lib/types/constants.d.ts +13 -0
  203. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  204. package/lib/types/index.d.ts +8 -0
  205. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  206. package/lib/types/loadDotEnv.d.ts +3 -0
  207. package/lib/types/projectPath.d.ts +19 -0
  208. package/lib/types/public/Asset.d.ts +74 -0
  209. package/lib/types/public/Bundle.d.ts +45 -0
  210. package/lib/types/public/BundleGraph.d.ts +72 -0
  211. package/lib/types/public/BundleGroup.d.ts +12 -0
  212. package/lib/types/public/Config.d.ts +75 -0
  213. package/lib/types/public/Dependency.d.ts +32 -0
  214. package/lib/types/public/Environment.d.ts +34 -0
  215. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  216. package/lib/types/public/PluginOptions.d.ts +25 -0
  217. package/lib/types/public/Symbols.d.ts +81 -0
  218. package/lib/types/public/Target.d.ts +16 -0
  219. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  220. package/lib/types/requests/AssetGraphRequest.d.ts +76 -0
  221. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  222. package/lib/types/requests/AssetRequest.d.ts +16 -0
  223. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  224. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  225. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  226. package/lib/types/requests/BundleGraphRequestRust.d.ts +34 -0
  227. package/lib/types/requests/BundleGraphRequestUtils.d.ts +38 -0
  228. package/lib/types/requests/ConfigRequest.d.ts +67 -0
  229. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  230. package/lib/types/requests/EntryRequest.d.ts +36 -0
  231. package/lib/types/requests/PackageRequest.d.ts +27 -0
  232. package/lib/types/requests/PathRequest.d.ts +48 -0
  233. package/lib/types/requests/TargetRequest.d.ts +48 -0
  234. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  235. package/lib/types/requests/WriteBundleRequest.d.ts +80 -0
  236. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  237. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  238. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  239. package/lib/types/resolveOptions.d.ts +3 -0
  240. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  241. package/lib/types/serializerCore.browser.d.ts +3 -0
  242. package/lib/types/summarizeRequest.d.ts +10 -0
  243. package/lib/types/types.d.ts +496 -0
  244. package/lib/types/utils.d.ts +23 -0
  245. package/lib/types/worker.d.ts +44 -0
  246. package/lib/types.js +8 -1
  247. package/lib/utils.js +18 -3
  248. package/lib/worker.js +32 -15
  249. package/package.json +26 -36
  250. package/src/{AssetGraph.js → AssetGraph.ts} +87 -51
  251. package/src/{Atlaspack.js → Atlaspack.ts} +181 -72
  252. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +25 -19
  253. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  254. package/src/{BundleGraph.js → BundleGraph.ts} +575 -145
  255. package/src/{CommittedAsset.js → CommittedAsset.ts} +15 -13
  256. package/src/{Dependency.js → Dependency.ts} +59 -42
  257. package/src/{Environment.js → Environment.ts} +24 -15
  258. package/src/EnvironmentManager.ts +154 -0
  259. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  260. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  261. package/src/{PackagerRunner.js → PackagerRunner.ts} +114 -159
  262. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  263. package/src/{RequestTracker.js → RequestTracker.ts} +444 -355
  264. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +178 -61
  265. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +10 -1
  266. package/src/{Transformation.js → Transformation.ts} +110 -65
  267. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +45 -49
  268. package/src/{Validation.js → Validation.ts} +32 -17
  269. package/src/{applyRuntimes.js → applyRuntimes.ts} +135 -26
  270. package/src/{assetUtils.js → assetUtils.ts} +49 -36
  271. package/src/atlaspack-v3/AtlaspackV3.ts +183 -0
  272. package/src/atlaspack-v3/NapiWorkerPool.ts +129 -0
  273. package/src/atlaspack-v3/{fs.js → fs.ts} +8 -4
  274. package/src/atlaspack-v3/{index.js → index.ts} +3 -4
  275. package/src/atlaspack-v3/jsCallable.ts +14 -0
  276. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  277. package/src/atlaspack-v3/worker/compat/bitflags.ts +102 -0
  278. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +13 -13
  279. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  280. package/src/atlaspack-v3/worker/compat/index.ts +8 -0
  281. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +21 -20
  282. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +25 -56
  283. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +19 -5
  284. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  285. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  286. package/src/atlaspack-v3/worker/index.js +2 -1
  287. package/src/atlaspack-v3/worker/side-effect-detector.ts +298 -0
  288. package/src/atlaspack-v3/worker/worker.ts +548 -0
  289. package/src/{constants.js → constants.ts} +0 -3
  290. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  291. package/src/index.ts +18 -0
  292. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  293. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  294. package/src/{projectPath.js → projectPath.ts} +20 -9
  295. package/src/public/{Asset.js → Asset.ts} +41 -28
  296. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  297. package/src/public/{BundleGraph.js → BundleGraph.ts} +103 -68
  298. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  299. package/src/public/{Config.js → Config.ts} +171 -33
  300. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  301. package/src/public/{Environment.js → Environment.ts} +28 -17
  302. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  303. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  304. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  305. package/src/public/{Target.js → Target.ts} +10 -8
  306. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  307. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +117 -90
  308. package/src/requests/AssetGraphRequestRust.ts +557 -0
  309. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  310. package/src/requests/AtlaspackBuildRequest.ts +168 -0
  311. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  312. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +119 -199
  313. package/src/requests/BundleGraphRequestRust.ts +470 -0
  314. package/src/requests/BundleGraphRequestUtils.ts +323 -0
  315. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +110 -50
  316. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  317. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  318. package/src/requests/{PackageRequest.js → PackageRequest.ts} +52 -25
  319. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  320. package/src/requests/{TargetRequest.js → TargetRequest.ts} +265 -179
  321. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  322. package/src/requests/WriteBundleRequest.ts +734 -0
  323. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +134 -50
  324. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  325. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  326. package/src/{resolveOptions.js → resolveOptions.ts} +57 -27
  327. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  328. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  329. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  330. package/src/types.ts +651 -0
  331. package/src/{utils.js → utils.ts} +52 -21
  332. package/src/{worker.js → worker.ts} +50 -42
  333. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +5 -8
  334. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  335. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  336. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +76 -16
  337. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  338. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  339. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  340. package/test/Environment.test.ts +153 -0
  341. package/test/EnvironmentManager.test.ts +188 -0
  342. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  343. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  344. package/test/PackagerRunner.test.ts +0 -0
  345. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  346. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  347. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  348. package/test/PublicEnvironment.test.ts +49 -0
  349. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  350. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +136 -58
  351. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  352. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +91 -92
  353. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  354. package/test/fixtures/custom-targets/package.json +6 -0
  355. package/test/public/Config.test.ts +104 -0
  356. package/test/requests/AssetGraphRequestRust.test.ts +443 -0
  357. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  358. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  359. package/test/requests/WriteBundleRequest.test.ts +602 -0
  360. package/test/{test-utils.js → test-utils.ts} +3 -4
  361. package/test/{utils.test.js → utils.test.ts} +1 -3
  362. package/tsconfig.json +60 -0
  363. package/tsconfig.tsbuildinfo +1 -0
  364. package/index.d.ts +0 -30
  365. package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
  366. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  367. package/src/atlaspack-v3/NapiWorkerPool.js +0 -53
  368. package/src/atlaspack-v3/jsCallable.js +0 -18
  369. package/src/atlaspack-v3/worker/compat/bitflags.js +0 -100
  370. package/src/atlaspack-v3/worker/compat/plugin-logger.js +0 -47
  371. package/src/atlaspack-v3/worker/worker.js +0 -369
  372. package/src/index.js +0 -13
  373. package/src/requests/AssetGraphRequestRust.js +0 -263
  374. package/src/requests/AtlaspackBuildRequest.js +0 -111
  375. package/src/requests/WriteBundleRequest.js +0 -369
  376. package/src/types.js +0 -600
  377. package/test/Environment.test.js +0 -119
  378. package/test/PackagerRunner.test.js +0 -27
  379. package/test/PublicEnvironment.test.js +0 -27
  380. package/test/requests/AssetGraphRequestRust.test.js +0 -411
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createAssetGraphRequestRust = createAssetGraphRequestRust;
40
+ exports.getAssetGraph = getAssetGraph;
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const diagnostic_1 = __importDefault(require("@atlaspack/diagnostic"));
43
+ const logger_1 = __importStar(require("@atlaspack/logger"));
44
+ const feature_flags_1 = require("@atlaspack/feature-flags");
45
+ const AssetGraph_1 = __importDefault(require("../AssetGraph"));
46
+ const ReporterRunner_1 = require("../ReporterRunner");
47
+ const RequestTracker_1 = require("../RequestTracker");
48
+ const SymbolPropagation_1 = require("../SymbolPropagation");
49
+ const EnvironmentManager_1 = require("../EnvironmentManager");
50
+ const Environment_1 = require("../Environment");
51
+ const dumpGraphToGraphViz_1 = __importDefault(require("../dumpGraphToGraphViz"));
52
+ const assert_2 = __importDefault(require("assert"));
53
+ function createAssetGraphRequestRust(rustAtlaspack) {
54
+ return (input) => ({
55
+ type: RequestTracker_1.requestTypes.asset_graph_request,
56
+ id: input.name,
57
+ run: async (runInput) => {
58
+ let options = runInput.options;
59
+ let { assetGraphPromise, commitPromise } = await rustAtlaspack.buildAssetGraph((eventJson) => {
60
+ let event = JSON.parse(eventJson);
61
+ (0, ReporterRunner_1.report)(event);
62
+ });
63
+ let [serializedAssetGraph, assetGraphError] = (await assetGraphPromise);
64
+ if (assetGraphError) {
65
+ throw new diagnostic_1.default({
66
+ diagnostic: assetGraphError,
67
+ });
68
+ }
69
+ // Don't reuse a previous asset graph result if Rust didn't have one too
70
+ let prevResult = null;
71
+ if (serializedAssetGraph.hadPreviousGraph) {
72
+ prevResult =
73
+ await runInput.api.getPreviousResult();
74
+ }
75
+ let { assetGraph, changedAssets } = (0, logger_1.instrument)('atlaspack_v3_getAssetGraph', () => getAssetGraph(serializedAssetGraph, prevResult?.assetGraph));
76
+ let changedAssetsPropagation = new Set(changedAssets.keys());
77
+ let result = {
78
+ assetGraph,
79
+ assetRequests: [],
80
+ assetGroupsWithRemovedParents: new Set(),
81
+ changedAssets,
82
+ changedAssetsPropagation,
83
+ previousSymbolPropagationErrors: undefined,
84
+ };
85
+ // When v3AssetGraphSyncImprovements is enabled, wrap downstream steps
86
+ // in try/catch and store the result even on error. This prevents Rust/JS
87
+ // divergence when symbol propagation or commit_assets fails.
88
+ let storeResultOnError = (0, feature_flags_1.getFeatureFlag)('v3AssetGraphSyncImprovements');
89
+ try {
90
+ // Skip symbol propagation for runtime assets - they have pre-computed symbol data
91
+ if (input.skipSymbolProp) {
92
+ logger_1.default.verbose({
93
+ origin: '@atlaspack/core',
94
+ message: 'Skipping symbol propagation for runtime asset graph',
95
+ });
96
+ }
97
+ else {
98
+ let errors = (0, SymbolPropagation_1.propagateSymbols)({
99
+ options,
100
+ assetGraph,
101
+ changedAssetsPropagation,
102
+ assetGroupsWithRemovedParents: new Set(),
103
+ previousErrors: new Map(), //this.previousSymbolPropagationErrors,
104
+ });
105
+ if (errors.size > 0) {
106
+ // Just throw the first error. Since errors can bubble (e.g. reexporting a reexported symbol also fails),
107
+ // determining which failing export is the root cause is nontrivial (because of circular dependencies).
108
+ throw new diagnostic_1.default({
109
+ diagnostic: [...errors.values()][0],
110
+ });
111
+ }
112
+ }
113
+ await (0, dumpGraphToGraphViz_1.default)(assetGraph, 'AssetGraphV3');
114
+ let [_commitResult, commitError] = await commitPromise;
115
+ if (commitError) {
116
+ throw new diagnostic_1.default({
117
+ diagnostic: {
118
+ message: 'Error committing asset graph in Rust: ' + commitError.message,
119
+ },
120
+ });
121
+ }
122
+ await runInput.api.storeResult(result);
123
+ runInput.api.invalidateOnBuild();
124
+ }
125
+ catch (e) {
126
+ if (storeResultOnError) {
127
+ // Store the graph even on error to prevent Rust/JS divergence.
128
+ // The graph from getAssetGraph is structurally correct — only
129
+ // downstream processing (symbols, commit) failed.
130
+ await runInput.api.storeResult(result);
131
+ runInput.api.invalidateOnBuild();
132
+ }
133
+ throw e;
134
+ }
135
+ return result;
136
+ },
137
+ input,
138
+ });
139
+ }
140
+ function getAssetGraph(serializedGraph, prevAssetGraph) {
141
+ let graph;
142
+ let reuseEdges = false;
143
+ let clonePrevGraph = (0, feature_flags_1.getFeatureFlag)('v3AssetGraphSyncImprovements');
144
+ if (prevAssetGraph && serializedGraph.safeToSkipBundling) {
145
+ if (clonePrevGraph) {
146
+ graph = new AssetGraph_1.default({
147
+ _contentKeyToNodeId: new Map(prevAssetGraph._contentKeyToNodeId),
148
+ _nodeIdToContentKey: new Map(prevAssetGraph._nodeIdToContentKey),
149
+ nodes: [...prevAssetGraph.nodes],
150
+ rootNodeId: prevAssetGraph.rootNodeId,
151
+ adjacencyList: prevAssetGraph.adjacencyList,
152
+ });
153
+ }
154
+ else {
155
+ graph = new AssetGraph_1.default({
156
+ _contentKeyToNodeId: prevAssetGraph._contentKeyToNodeId,
157
+ _nodeIdToContentKey: prevAssetGraph._nodeIdToContentKey,
158
+ nodes: prevAssetGraph.nodes,
159
+ rootNodeId: prevAssetGraph.rootNodeId,
160
+ adjacencyList: prevAssetGraph.adjacencyList,
161
+ });
162
+ }
163
+ reuseEdges = true;
164
+ }
165
+ else if (prevAssetGraph &&
166
+ (serializedGraph.updates.length > 0 || serializedGraph.nodes.length > 0)) {
167
+ if (clonePrevGraph) {
168
+ graph = new AssetGraph_1.default({
169
+ _contentKeyToNodeId: new Map(prevAssetGraph._contentKeyToNodeId),
170
+ _nodeIdToContentKey: new Map(prevAssetGraph._nodeIdToContentKey),
171
+ nodes: [...prevAssetGraph.nodes],
172
+ initialCapacity: serializedGraph.edges.length,
173
+ // Accomodate the root node
174
+ initialNodeCapacity: prevAssetGraph.nodes.length + 1,
175
+ rootNodeId: prevAssetGraph.rootNodeId,
176
+ });
177
+ }
178
+ else {
179
+ graph = new AssetGraph_1.default({
180
+ _contentKeyToNodeId: prevAssetGraph._contentKeyToNodeId,
181
+ _nodeIdToContentKey: prevAssetGraph._nodeIdToContentKey,
182
+ nodes: prevAssetGraph.nodes,
183
+ initialCapacity: serializedGraph.edges.length,
184
+ // Accomodate the root node
185
+ initialNodeCapacity: prevAssetGraph.nodes.length + 1,
186
+ rootNodeId: prevAssetGraph.rootNodeId,
187
+ });
188
+ }
189
+ graph.safeToIncrementallyBundle = false;
190
+ }
191
+ else {
192
+ graph = new AssetGraph_1.default({
193
+ _contentKeyToNodeId: new Map(),
194
+ _nodeIdToContentKey: new Map(),
195
+ initialCapacity: serializedGraph.edges.length,
196
+ // Accomodate the root node
197
+ initialNodeCapacity: serializedGraph.nodes.length + 1,
198
+ });
199
+ let rootNodeId = graph.addNodeByContentKey('@@root', {
200
+ id: '@@root',
201
+ type: 'root',
202
+ value: null,
203
+ });
204
+ graph.setRootNodeId(rootNodeId);
205
+ graph.safeToIncrementallyBundle = false;
206
+ }
207
+ (0, assert_1.default)(graph, 'Asset graph not initialized');
208
+ (0, assert_1.default)(graph.rootNodeId != null, 'Asset graph has no root node');
209
+ // @ts-expect-error TS7031
210
+ function mapSymbols({ exported, ...symbol }) {
211
+ let jsSymbol = {
212
+ local: symbol.local ?? undefined,
213
+ loc: symbol.loc ?? undefined,
214
+ isWeak: symbol.isWeak,
215
+ meta: {
216
+ isEsm: symbol.isEsmExport,
217
+ isStaticBindingSafe: symbol.isStaticBindingSafe,
218
+ },
219
+ };
220
+ if (symbol.exported) {
221
+ // @ts-expect-error TS2339
222
+ jsSymbol.exported = symbol.exported;
223
+ }
224
+ return [exported, jsSymbol];
225
+ }
226
+ // See crates/atlaspack_core/src/types/environment.rs
227
+ let changedAssets = new Map();
228
+ let entry = 0;
229
+ let envs = new Map();
230
+ let getEnvId = (env) => {
231
+ let envKey = [
232
+ env.context,
233
+ env.engines.atlaspack,
234
+ env.engines.browsers,
235
+ env.engines.electron,
236
+ env.engines.node,
237
+ env.includeNodeModules,
238
+ env.isLibrary,
239
+ env.outputFormat,
240
+ env.shouldScopeHoist,
241
+ env.shouldOptimize,
242
+ env.sourceType,
243
+ ].join(':');
244
+ let envId = envs.get(envKey);
245
+ if (envId == null) {
246
+ envId = (0, Environment_1.getEnvironmentHash)(env);
247
+ envs.set(envKey, envId);
248
+ }
249
+ return envId;
250
+ };
251
+ function describeNode(node) {
252
+ const base = { type: node.type, id: node.id };
253
+ if (node.type === 'asset') {
254
+ return {
255
+ ...base,
256
+ filePath: node.value.filePath,
257
+ fileType: node.value.type,
258
+ pipeline: node.value.pipeline,
259
+ };
260
+ }
261
+ else if (node.type === 'dependency') {
262
+ return {
263
+ ...base,
264
+ specifier: node.value.specifier,
265
+ specifierType: node.value.specifierType,
266
+ sourceAssetId: node.value.sourceAssetId,
267
+ sourcePath: node.value.sourcePath,
268
+ };
269
+ }
270
+ return base;
271
+ }
272
+ function buildDivergenceDiagnostics(divergenceType, newNode, existingNode, index) {
273
+ return {
274
+ contentKey: newNode.id,
275
+ divergenceType,
276
+ newNode: describeNode(newNode),
277
+ existingNode: existingNode ? describeNode(existingNode) : null,
278
+ iterationIndex: index,
279
+ totalSerializedNodes: nodesCount,
280
+ newNodesCount: serializedGraph.nodes.length,
281
+ updatesCount: serializedGraph.updates.length,
282
+ edgesCount: serializedGraph.edges.length,
283
+ hadPreviousGraph: !!prevAssetGraph,
284
+ safeToSkipBundling: serializedGraph.safeToSkipBundling,
285
+ graphNodeCount: graph._contentKeyToNodeId.size,
286
+ };
287
+ }
288
+ function updateNode(newNode, isUpdateNode, index) {
289
+ let healDivergence = (0, feature_flags_1.getFeatureFlag)('v3AssetGraphSyncImprovements');
290
+ if (isUpdateNode) {
291
+ let existingNode = graph.getNodeByContentKey(newNode.id);
292
+ if (healDivergence) {
293
+ if (existingNode) {
294
+ (0, assert_2.default)(existingNode.type === newNode.type);
295
+ Object.assign(existingNode, newNode);
296
+ }
297
+ else {
298
+ // Rust sent an update for a node JS doesn't have.
299
+ // This means JS's graph is stale. Add the node as new instead.
300
+ // This handles the "undefined == true" error class.
301
+ let diagnostics = buildDivergenceDiagnostics('update_node_not_found', newNode, existingNode, index);
302
+ logger_1.default.warn({
303
+ origin: '@atlaspack/core',
304
+ message: `Rust/JS asset graph divergence healed: update node not found, ` +
305
+ `adding as new. contentKey=${newNode.id} type=${newNode.type} iterationIndex=${index}`,
306
+ meta: {
307
+ trackableEvent: 'asset_graph_divergence_healed',
308
+ ...diagnostics,
309
+ },
310
+ });
311
+ graph.addNodeByContentKey(newNode.id, newNode);
312
+ }
313
+ }
314
+ else {
315
+ (0, assert_2.default)(existingNode && existingNode.type === newNode.type);
316
+ Object.assign(existingNode, newNode);
317
+ }
318
+ }
319
+ else {
320
+ if (healDivergence) {
321
+ if (graph.hasContentKey(newNode.id)) {
322
+ // Rust sent a "new" node that JS already has.
323
+ // This means JS's graph has nodes that Rust considers new.
324
+ // Treat as an update instead of throwing.
325
+ // This handles the "Graph already has content key" error class.
326
+ let existingNode = graph.getNodeByContentKey(newNode.id);
327
+ let diagnostics = buildDivergenceDiagnostics('new_node_already_exists', newNode, existingNode, index);
328
+ logger_1.default.warn({
329
+ origin: '@atlaspack/core',
330
+ message: `Rust/JS asset graph divergence healed: new node already exists, ` +
331
+ `treating as update. contentKey=${newNode.id} type=${newNode.type} iterationIndex=${index}`,
332
+ meta: {
333
+ trackableEvent: 'asset_graph_divergence_healed',
334
+ ...diagnostics,
335
+ },
336
+ });
337
+ if (existingNode) {
338
+ Object.assign(existingNode, newNode);
339
+ }
340
+ }
341
+ else {
342
+ graph.addNodeByContentKey(newNode.id, newNode);
343
+ }
344
+ }
345
+ else {
346
+ try {
347
+ graph.addNodeByContentKey(newNode.id, newNode);
348
+ }
349
+ catch (e) {
350
+ if (e instanceof Error &&
351
+ e.message.includes('already has content key')) {
352
+ let existingNode = graph.getNodeByContentKey(newNode.id);
353
+ let diagnostics = buildDivergenceDiagnostics('new_node_already_exists', newNode, existingNode, index);
354
+ throw new Error(`Graph already has content key '${newNode.id}'. Diagnostics: ${JSON.stringify(diagnostics, null, 2)}`);
355
+ }
356
+ throw e;
357
+ }
358
+ }
359
+ }
360
+ }
361
+ let nodeTypeSwitchoverIndex = serializedGraph.nodes.length;
362
+ let nodesCount = serializedGraph.nodes.length + serializedGraph.updates.length;
363
+ for (let index = 0; index < nodesCount; index++) {
364
+ let isUpdateNode = index >= nodeTypeSwitchoverIndex;
365
+ let node = isUpdateNode
366
+ ? serializedGraph.updates[index - nodeTypeSwitchoverIndex]
367
+ : serializedGraph.nodes[index];
368
+ node = JSON.parse(node);
369
+ if (node.type === 'entry') {
370
+ let id = 'entry:' + ++entry;
371
+ graph.addNodeByContentKey(id, {
372
+ id: id,
373
+ type: 'root',
374
+ value: null,
375
+ });
376
+ }
377
+ else if (node.type === 'asset') {
378
+ let asset = node.value;
379
+ let id = asset.id;
380
+ asset.committed = true;
381
+ asset.contentKey = id;
382
+ asset.env.id = (0, feature_flags_1.getFeatureFlag)('environmentDeduplication')
383
+ ? // TODO: Rust can do this and avoid copying a significant amount of data over
384
+ (0, Environment_1.getEnvironmentHash)(asset.env)
385
+ : getEnvId(asset.env);
386
+ asset.mapKey = `map:${asset.id}`;
387
+ asset.env = (0, EnvironmentManager_1.toEnvironmentRef)(asset.env);
388
+ // This is populated later when we map the edges between assets and dependencies
389
+ asset.dependencies = new Map();
390
+ // We need to add this property for source map handling, as some assets like runtimes
391
+ // are processed after the Rust transformation and take the v2 code path
392
+ asset.meta.isV3 = true;
393
+ if (asset.symbols != null) {
394
+ asset.symbols = new Map(asset.symbols.map(mapSymbols));
395
+ }
396
+ changedAssets.set(id, asset);
397
+ let assetNode = {
398
+ id,
399
+ type: 'asset',
400
+ usedSymbols: new Set(),
401
+ usedSymbolsDownDirty: true,
402
+ usedSymbolsUpDirty: true,
403
+ value: asset,
404
+ };
405
+ updateNode(assetNode, isUpdateNode, index);
406
+ }
407
+ else if (node.type === 'dependency') {
408
+ let { dependency, id } = node.value;
409
+ dependency.id = id;
410
+ dependency.env.id = (0, feature_flags_1.getFeatureFlag)('environmentDeduplication')
411
+ ? // TODO: Rust can do this and avoid copying a significant amount of data over
412
+ (0, Environment_1.getEnvironmentHash)(dependency.env)
413
+ : getEnvId(dependency.env);
414
+ dependency.env = (0, EnvironmentManager_1.toEnvironmentRef)(dependency.env);
415
+ if (dependency.symbols != null) {
416
+ dependency.symbols = new Map(dependency.symbols?.map(mapSymbols));
417
+ }
418
+ let usedSymbolsDown = new Set();
419
+ let usedSymbolsUp = new Map();
420
+ if (node.used_symbols_up) {
421
+ for (let usedSymbol of node.used_symbols_up) {
422
+ // Transform Rust UsedSymbol { symbol: Symbol, asset: string, resolved_symbol: string }
423
+ // to JS format { symbol: string, asset: string } where symbol is the resolved name
424
+ const exportedName = usedSymbol.symbol.exported;
425
+ usedSymbolsUp.set(exportedName, {
426
+ asset: usedSymbol.asset,
427
+ symbol: usedSymbol.resolved_symbol ?? exportedName,
428
+ });
429
+ }
430
+ }
431
+ if (dependency.isEntry && dependency.isLibrary) {
432
+ usedSymbolsDown.add('*');
433
+ usedSymbolsUp.set('*', undefined);
434
+ }
435
+ let depNode = {
436
+ id,
437
+ type: 'dependency',
438
+ deferred: false,
439
+ excluded: false,
440
+ hasDeferred: node.has_deferred,
441
+ // @ts-expect-error TS2322
442
+ usedSymbolsDown,
443
+ usedSymbolsDownDirty: true,
444
+ usedSymbolsUp,
445
+ usedSymbolsUpDirtyDown: true,
446
+ usedSymbolsUpDirtyUp: true,
447
+ value: dependency,
448
+ };
449
+ updateNode(depNode, isUpdateNode, index);
450
+ }
451
+ }
452
+ if (!reuseEdges) {
453
+ for (let i = 0; i < serializedGraph.edges.length; i += 2) {
454
+ let from = serializedGraph.edges[i];
455
+ let to = serializedGraph.edges[i + 1];
456
+ let fromNode = graph.getNode(from);
457
+ let toNode = graph.getNode(to);
458
+ if (fromNode?.type === 'dependency') {
459
+ (0, assert_1.default)(toNode?.type === 'asset');
460
+ }
461
+ if (fromNode?.type === 'asset' && toNode?.type === 'dependency') {
462
+ fromNode.value.dependencies.set(toNode.value.id, toNode.value);
463
+ }
464
+ graph.addEdge(from, to);
465
+ }
466
+ }
467
+ return {
468
+ assetGraph: graph,
469
+ changedAssets,
470
+ };
471
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = createAssetRequest;
7
+ const nullthrows_1 = __importDefault(require("nullthrows"));
8
+ const diagnostic_1 = __importDefault(require("@atlaspack/diagnostic"));
9
+ const rust_1 = require("@atlaspack/rust");
10
+ const AtlaspackConfigRequest_1 = __importDefault(require("./AtlaspackConfigRequest"));
11
+ const DevDepRequest_1 = require("./DevDepRequest");
12
+ const ConfigRequest_1 = require("./ConfigRequest");
13
+ const projectPath_1 = require("../projectPath");
14
+ const ReporterRunner_1 = require("../ReporterRunner");
15
+ const RequestTracker_1 = require("../RequestTracker");
16
+ const EnvironmentManager_1 = require("../EnvironmentManager");
17
+ function createAssetRequest(input) {
18
+ return {
19
+ type: RequestTracker_1.requestTypes.asset_request,
20
+ id: getId(input),
21
+ run,
22
+ input,
23
+ };
24
+ }
25
+ const type = 'asset_request';
26
+ function getId(input) {
27
+ return (0, rust_1.hashString)(type +
28
+ (0, projectPath_1.fromProjectPathRelative)(input.filePath) +
29
+ (0, EnvironmentManager_1.toEnvironmentId)(input.env) +
30
+ String(input.isSource) +
31
+ String(input.sideEffects) +
32
+ (input.code ?? '') +
33
+ ':' +
34
+ (input.pipeline ?? '') +
35
+ ':' +
36
+ (input.query ?? ''));
37
+ }
38
+ // @ts-expect-error TS7031
39
+ async function run({ input, api, farm, invalidateReason, options }) {
40
+ (0, ReporterRunner_1.report)({
41
+ type: 'buildProgress',
42
+ phase: 'transforming',
43
+ filePath: (0, projectPath_1.fromProjectPath)(options.projectRoot, input.filePath),
44
+ });
45
+ api.invalidateOnFileUpdate(input.filePath);
46
+ let start = Date.now();
47
+ let { optionsRef, ...rest } = input;
48
+ let { cachePath } = (0, nullthrows_1.default)(
49
+ // @ts-expect-error TS2347
50
+ await api.runRequest((0, AtlaspackConfigRequest_1.default)()));
51
+ let previousDevDepRequests = new Map(await Promise.all(api
52
+ .getSubRequests()
53
+ // @ts-expect-error TS7006
54
+ .filter((req) => req.requestType === RequestTracker_1.requestTypes.dev_dep_request)
55
+ // @ts-expect-error TS7006
56
+ .map(async (req) => [
57
+ req.id,
58
+ // @ts-expect-error TS2347
59
+ (0, nullthrows_1.default)(await api.getRequestResult(req.id)),
60
+ ])));
61
+ let request = {
62
+ ...rest,
63
+ invalidateReason,
64
+ devDeps: new Map([...previousDevDepRequests.entries()]
65
+ // @ts-expect-error TS2769
66
+ .filter(([id]) => api.canSkipSubrequest(id))
67
+ .map(([, req]) => [
68
+ `${req.specifier}:${(0, projectPath_1.fromProjectPathRelative)(req.resolveFrom)}`,
69
+ req.hash,
70
+ ])),
71
+ invalidDevDeps: await Promise.all([...previousDevDepRequests.entries()]
72
+ // @ts-expect-error TS2769
73
+ .filter(([id]) => !api.canSkipSubrequest(id))
74
+ .flatMap(([, req]) => {
75
+ return [
76
+ {
77
+ specifier: req.specifier,
78
+ resolveFrom: req.resolveFrom,
79
+ },
80
+ // @ts-expect-error TS7006
81
+ ...(req.additionalInvalidations ?? []).map((i) => ({
82
+ specifier: i.specifier,
83
+ resolveFrom: i.resolveFrom,
84
+ })),
85
+ ];
86
+ })),
87
+ };
88
+ let { assets, configRequests, error, invalidations, devDepRequests } = (await farm.createHandle('runTransform', input.isSingleChangeRebuild)({
89
+ configCachePath: cachePath,
90
+ optionsRef,
91
+ request,
92
+ }));
93
+ let time = Date.now() - start;
94
+ if (assets) {
95
+ for (let asset of assets) {
96
+ asset.stats.time = time;
97
+ }
98
+ }
99
+ for (let filePath of invalidations.invalidateOnFileChange) {
100
+ api.invalidateOnFileUpdate(filePath);
101
+ api.invalidateOnFileDelete(filePath);
102
+ }
103
+ for (let invalidation of invalidations.invalidateOnFileCreate) {
104
+ api.invalidateOnFileCreate(invalidation);
105
+ }
106
+ for (let env of invalidations.invalidateOnEnvChange) {
107
+ api.invalidateOnEnvChange(env);
108
+ }
109
+ for (let option of invalidations.invalidateOnOptionChange) {
110
+ api.invalidateOnOptionChange(option);
111
+ }
112
+ if (invalidations.invalidateOnStartup) {
113
+ api.invalidateOnStartup();
114
+ }
115
+ if (invalidations.invalidateOnBuild) {
116
+ api.invalidateOnBuild();
117
+ }
118
+ for (let devDepRequest of devDepRequests) {
119
+ await (0, DevDepRequest_1.runDevDepRequest)(api, devDepRequest);
120
+ }
121
+ for (let configRequest of configRequests) {
122
+ await (0, ConfigRequest_1.runConfigRequest)(api, configRequest);
123
+ }
124
+ if (error != null) {
125
+ throw new diagnostic_1.default({ diagnostic: error });
126
+ }
127
+ else {
128
+ return (0, nullthrows_1.default)(assets);
129
+ }
130
+ }