@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,523 @@
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.nodeFromDep = nodeFromDep;
7
+ exports.nodeFromAssetGroup = nodeFromAssetGroup;
8
+ exports.nodeFromAsset = nodeFromAsset;
9
+ exports.nodeFromEntrySpecifier = nodeFromEntrySpecifier;
10
+ exports.nodeFromEntryFile = nodeFromEntryFile;
11
+ const assert_1 = __importDefault(require("assert"));
12
+ const rust_1 = require("@atlaspack/rust");
13
+ const utils_1 = require("@atlaspack/utils");
14
+ const nullthrows_1 = __importDefault(require("nullthrows"));
15
+ const graph_1 = require("@atlaspack/graph");
16
+ const Dependency_1 = require("./Dependency");
17
+ const projectPath_1 = require("./projectPath");
18
+ const EnvironmentManager_1 = require("./EnvironmentManager");
19
+ const feature_flags_1 = require("@atlaspack/feature-flags");
20
+ function nodeFromDep(dep) {
21
+ return {
22
+ id: dep.id,
23
+ type: 'dependency',
24
+ value: dep,
25
+ deferred: false,
26
+ excluded: false,
27
+ usedSymbolsDown: new Set(),
28
+ usedSymbolsUp: new Map(),
29
+ usedSymbolsDownDirty: true,
30
+ usedSymbolsUpDirtyDown: true,
31
+ usedSymbolsUpDirtyUp: true,
32
+ };
33
+ }
34
+ function nodeFromAssetGroup(assetGroup) {
35
+ return {
36
+ id: (0, rust_1.hashString)(
37
+ // @ts-expect-error TS2345
38
+ (0, projectPath_1.fromProjectPathRelative)(assetGroup.filePath) +
39
+ // @ts-expect-error TS2345
40
+ (0, EnvironmentManager_1.toEnvironmentId)(assetGroup.env) +
41
+ String(assetGroup.isSource) +
42
+ String(assetGroup.sideEffects) +
43
+ (assetGroup.code ?? '') +
44
+ ':' +
45
+ (assetGroup.pipeline ?? '') +
46
+ ':' +
47
+ (assetGroup.query ?? '')),
48
+ type: 'asset_group',
49
+ value: assetGroup,
50
+ usedSymbolsDownDirty: true,
51
+ };
52
+ }
53
+ function nodeFromAsset(asset) {
54
+ return {
55
+ id: asset.id,
56
+ type: 'asset',
57
+ value: asset,
58
+ usedSymbols: new Set(),
59
+ usedSymbolsDownDirty: true,
60
+ usedSymbolsUpDirty: true,
61
+ };
62
+ }
63
+ function nodeFromEntrySpecifier(entry) {
64
+ return {
65
+ id: 'entry_specifier:' + (0, projectPath_1.fromProjectPathRelative)(entry),
66
+ type: 'entry_specifier',
67
+ value: entry,
68
+ };
69
+ }
70
+ function nodeFromEntryFile(entry) {
71
+ return {
72
+ id: 'entry_file:' + (0, utils_1.hashObject)(entry),
73
+ type: 'entry_file',
74
+ value: entry,
75
+ };
76
+ }
77
+ // @ts-expect-error TS2417
78
+ class AssetGraph extends graph_1.ContentGraph {
79
+ constructor(opts) {
80
+ this.safeToIncrementallyBundle = true;
81
+ if (opts) {
82
+ let { hash, ...rest } = opts;
83
+ // @ts-expect-error TS2345
84
+ super(rest);
85
+ this.hash = hash;
86
+ }
87
+ else {
88
+ super();
89
+ this.setRootNodeId(this.addNode({
90
+ id: '@@root',
91
+ type: 'root',
92
+ value: null,
93
+ }));
94
+ }
95
+ this.undeferredDependencies = new Set();
96
+ this.envCache = new Map();
97
+ }
98
+ static deserialize(opts) {
99
+ return new AssetGraph(opts);
100
+ }
101
+ serialize() {
102
+ return {
103
+ ...super.serialize(),
104
+ hash: this.hash,
105
+ };
106
+ }
107
+ /**
108
+ * Determine if we can incrementally bundle, which will not require a full bundling pass
109
+ * but just update assets into the bundle graph output.
110
+ */
111
+ canIncrementallyBundle() {
112
+ return this.safeToIncrementallyBundle;
113
+ }
114
+ // Deduplicates Environments by making them referentially equal
115
+ normalizeEnvironment(input) {
116
+ if ((0, feature_flags_1.getFeatureFlag)('environmentDeduplication')) {
117
+ return;
118
+ }
119
+ // @ts-expect-error TS2345
120
+ let { id, context } = (0, EnvironmentManager_1.fromEnvironmentId)(input.env);
121
+ let idAndContext = `${id}-${context}`;
122
+ let env = this.envCache.get(idAndContext);
123
+ if (env) {
124
+ input.env = (0, EnvironmentManager_1.toEnvironmentRef)(env);
125
+ }
126
+ else {
127
+ // @ts-expect-error TS2345
128
+ this.envCache.set(idAndContext, (0, EnvironmentManager_1.fromEnvironmentId)(input.env));
129
+ }
130
+ }
131
+ setRootConnections({ entries, assetGroups }) {
132
+ let nodes = [];
133
+ if (entries) {
134
+ for (let entry of entries) {
135
+ let node = nodeFromEntrySpecifier(entry);
136
+ nodes.push(node);
137
+ }
138
+ }
139
+ else if (assetGroups) {
140
+ for (const assetGroup of assetGroups) {
141
+ // Adding nodes individually ensures we do not encounter a range stack size exceeded error
142
+ // when there are >100000 asset groups
143
+ nodes.push(nodeFromAssetGroup(assetGroup));
144
+ }
145
+ }
146
+ this.replaceNodeIdsConnectedTo((0, nullthrows_1.default)(this.rootNodeId), nodes.map((node) => this.addNode(node)));
147
+ }
148
+ addNode(node) {
149
+ this.hash = null;
150
+ let existing = this.getNodeByContentKey(node.id);
151
+ if (existing != null) {
152
+ (0, assert_1.default)(existing.type === node.type);
153
+ existing.value = node.value;
154
+ let existingId = this.getNodeIdByContentKey(node.id);
155
+ this.updateNode(existingId, existing);
156
+ return existingId;
157
+ }
158
+ return super.addNodeByContentKey(node.id, node);
159
+ }
160
+ removeNode(nodeId) {
161
+ this.hash = null;
162
+ this.onNodeRemoved && this.onNodeRemoved(nodeId);
163
+ return super.removeNode(nodeId);
164
+ }
165
+ resolveEntry(entry, resolved, correspondingRequest) {
166
+ let entrySpecifierNodeId = this.getNodeIdByContentKey(nodeFromEntrySpecifier(entry).id);
167
+ let entrySpecifierNode = (0, nullthrows_1.default)(this.getNode(entrySpecifierNodeId));
168
+ (0, assert_1.default)(entrySpecifierNode.type === 'entry_specifier');
169
+ entrySpecifierNode.correspondingRequest = correspondingRequest;
170
+ this.replaceNodeIdsConnectedTo(entrySpecifierNodeId, resolved.map((file) => this.addNode(nodeFromEntryFile(file))));
171
+ }
172
+ resolveTargets(entry, targets, correspondingRequest) {
173
+ let depNodes = targets.map((target) => {
174
+ let node = nodeFromDep(
175
+ // The passed project path is ignored in this case, because there is no `loc`
176
+ (0, Dependency_1.createDependency)('', {
177
+ specifier: (0, projectPath_1.fromProjectPathRelative)(entry.filePath),
178
+ specifierType: 'url',
179
+ pipeline: target.pipeline,
180
+ target: target,
181
+ env: target.env,
182
+ isEntry: true,
183
+ needsStableName: true,
184
+ // @ts-expect-error TS2322
185
+ symbols: (0, EnvironmentManager_1.fromEnvironmentId)(target.env).isLibrary
186
+ ? new Map([['*', { local: '*', isWeak: true, loc: null }]])
187
+ : undefined,
188
+ }));
189
+ if ((0, EnvironmentManager_1.fromEnvironmentId)(node.value.env).isLibrary) {
190
+ // in library mode, all of the entry's symbols are "used"
191
+ node.usedSymbolsDown.add('*');
192
+ node.usedSymbolsUp.set('*', undefined);
193
+ }
194
+ return node;
195
+ });
196
+ let entryNodeId = this.getNodeIdByContentKey(nodeFromEntryFile(entry).id);
197
+ let entryNode = (0, nullthrows_1.default)(this.getNode(entryNodeId));
198
+ (0, assert_1.default)(entryNode.type === 'entry_file');
199
+ entryNode.correspondingRequest = correspondingRequest;
200
+ this.replaceNodeIdsConnectedTo(entryNodeId, depNodes.map((node) => this.addNode(node)));
201
+ }
202
+ resolveDependency(dependency, assetGroup, correspondingRequest) {
203
+ let depNodeId = this.getNodeIdByContentKey(dependency.id);
204
+ let depNode = (0, nullthrows_1.default)(this.getNode(depNodeId));
205
+ (0, assert_1.default)(depNode.type === 'dependency');
206
+ depNode.correspondingRequest = correspondingRequest;
207
+ if (!assetGroup) {
208
+ return;
209
+ }
210
+ let assetGroupNode = nodeFromAssetGroup(assetGroup);
211
+ let existing = this.getNodeByContentKey(assetGroupNode.id);
212
+ if (existing != null) {
213
+ (0, assert_1.default)(existing.type === 'asset_group');
214
+ assetGroupNode.value.canDefer =
215
+ assetGroupNode.value.canDefer && existing.value.canDefer;
216
+ }
217
+ let assetGroupNodeId = this.addNode(assetGroupNode);
218
+ this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(dependency.id), [
219
+ assetGroupNodeId,
220
+ ]);
221
+ this.replaceNodeIdsConnectedTo(depNodeId, [assetGroupNodeId]);
222
+ }
223
+ shouldVisitChild(nodeId, childNodeId) {
224
+ let node = (0, nullthrows_1.default)(this.getNode(nodeId));
225
+ let childNode = (0, nullthrows_1.default)(this.getNode(childNodeId));
226
+ if (node.type !== 'dependency' ||
227
+ childNode.type !== 'asset_group' ||
228
+ childNode.deferred === false) {
229
+ return true;
230
+ }
231
+ // Node types are proved above
232
+ let dependencyNode = node;
233
+ let assetGroupNode = childNode;
234
+ let { sideEffects, canDefer = true } = assetGroupNode.value;
235
+ let dependency = dependencyNode.value;
236
+ let dependencyPreviouslyDeferred = dependencyNode.hasDeferred;
237
+ let assetGroupPreviouslyDeferred = assetGroupNode.deferred;
238
+ let defer = this.shouldDeferDependency(dependency, sideEffects, canDefer);
239
+ dependencyNode.hasDeferred = defer;
240
+ assetGroupNode.deferred = defer;
241
+ if (!dependencyPreviouslyDeferred && defer) {
242
+ this.markParentsWithHasDeferred(nodeId);
243
+ }
244
+ else if (assetGroupPreviouslyDeferred && !defer) {
245
+ this.unmarkParentsWithHasDeferred(childNodeId);
246
+ }
247
+ return !defer;
248
+ }
249
+ // Dependency: mark parent Asset <- AssetGroup with hasDeferred true
250
+ markParentsWithHasDeferred(nodeId) {
251
+ this.traverseAncestors(nodeId, (traversedNodeId, _, actions) => {
252
+ let traversedNode = (0, nullthrows_1.default)(this.getNode(traversedNodeId));
253
+ if (traversedNode.type === 'asset') {
254
+ traversedNode.hasDeferred = true;
255
+ }
256
+ else if (traversedNode.type === 'asset_group') {
257
+ traversedNode.hasDeferred = true;
258
+ actions.skipChildren();
259
+ }
260
+ else if (nodeId !== traversedNodeId) {
261
+ actions.skipChildren();
262
+ }
263
+ });
264
+ }
265
+ // AssetGroup: update hasDeferred of all parent Dependency <- Asset <- AssetGroup
266
+ unmarkParentsWithHasDeferred(nodeId) {
267
+ this.traverseAncestors(nodeId, (traversedNodeId, ctx, actions) => {
268
+ let traversedNode = (0, nullthrows_1.default)(this.getNode(traversedNodeId));
269
+ if (traversedNode.type === 'asset') {
270
+ let hasDeferred = this.getNodeIdsConnectedFrom(traversedNodeId).some((childNodeId) => {
271
+ let childNode = (0, nullthrows_1.default)(this.getNode(childNodeId));
272
+ // @ts-expect-error TS2339
273
+ return childNode.hasDeferred == null
274
+ ? false
275
+ : // @ts-expect-error TS2339
276
+ childNode.hasDeferred;
277
+ });
278
+ if (!hasDeferred) {
279
+ delete traversedNode.hasDeferred;
280
+ }
281
+ return { hasDeferred };
282
+ }
283
+ else if (traversedNode.type === 'asset_group' &&
284
+ nodeId !== traversedNodeId) {
285
+ // @ts-expect-error TS2339
286
+ if (!ctx?.hasDeferred) {
287
+ this.safeToIncrementallyBundle = false;
288
+ delete traversedNode.hasDeferred;
289
+ }
290
+ actions.skipChildren();
291
+ }
292
+ else if (traversedNode.type === 'dependency') {
293
+ this.safeToIncrementallyBundle = false;
294
+ traversedNode.hasDeferred = false;
295
+ }
296
+ else if (nodeId !== traversedNodeId) {
297
+ actions.skipChildren();
298
+ }
299
+ });
300
+ }
301
+ // Defer transforming this dependency if it is marked as weak, there are no side effects,
302
+ // no re-exported symbols are used by ancestor dependencies and the re-exporting asset isn't
303
+ // using a wildcard and isn't an entry (in library mode).
304
+ // This helps with performance building large libraries like `lodash-es`, which re-exports
305
+ // a huge number of functions since we can avoid even transforming the files that aren't used.
306
+ shouldDeferDependency(dependency, sideEffects, canDefer) {
307
+ let dependencySymbols = dependency.symbols;
308
+ // Doing this separately keeps Flow happy further down
309
+ if (!dependencySymbols) {
310
+ return false;
311
+ }
312
+ let isDeferrable = [...dependencySymbols].every(([, { isWeak }]) => isWeak) &&
313
+ sideEffects === false &&
314
+ canDefer &&
315
+ !dependencySymbols.has('*');
316
+ if (!isDeferrable) {
317
+ return false;
318
+ }
319
+ let depNodeId = this.getNodeIdByContentKey(dependency.id);
320
+ let depNode = this.getNode(depNodeId);
321
+ (0, assert_1.default)(depNode);
322
+ let assets = this.getNodeIdsConnectedTo(depNodeId);
323
+ let symbols = new Map([...dependencySymbols].map(([key, val]) => [val.local, key]));
324
+ (0, assert_1.default)(assets.length === 1);
325
+ let firstAsset = (0, nullthrows_1.default)(this.getNode(assets[0]));
326
+ (0, assert_1.default)(firstAsset.type === 'asset');
327
+ let resolvedAsset = firstAsset.value;
328
+ // This doesn't change from here, so checking it now saves
329
+ // us some calls to `getIncomingDependency`
330
+ if (!resolvedAsset.symbols) {
331
+ return true;
332
+ }
333
+ let deps = this.getIncomingDependencies(resolvedAsset);
334
+ return deps.every((d) => {
335
+ // If this dependency has already been through this process, and we
336
+ // know it's not deferrable, then there's no need to re-check
337
+ if (this.undeferredDependencies.has(d)) {
338
+ return false;
339
+ }
340
+ let depIsDeferrable = d.symbols &&
341
+ !((0, EnvironmentManager_1.fromEnvironmentId)(d.env).isLibrary && d.isEntry) &&
342
+ !d.symbols.has('*') &&
343
+ ![...d.symbols.keys()].some((symbol) => {
344
+ let assetSymbol = resolvedAsset.symbols?.get(symbol)?.local;
345
+ return assetSymbol != null && symbols.has(assetSymbol);
346
+ });
347
+ if (!depIsDeferrable) {
348
+ // Mark this dep as not deferrable so it doesn't have to be re-checked
349
+ this.undeferredDependencies.add(d);
350
+ return false;
351
+ }
352
+ });
353
+ }
354
+ resolveAssetGroup(assetGroup, assets, correspondingRequest) {
355
+ this.normalizeEnvironment(assetGroup);
356
+ let assetGroupNode = nodeFromAssetGroup(assetGroup);
357
+ // @ts-expect-error TS2322
358
+ assetGroupNode = this.getNodeByContentKey(assetGroupNode.id);
359
+ if (!assetGroupNode) {
360
+ return;
361
+ }
362
+ (0, assert_1.default)(assetGroupNode.type === 'asset_group');
363
+ assetGroupNode.correspondingRequest = correspondingRequest;
364
+ let assetsByKey = new Map();
365
+ for (let asset of assets) {
366
+ if (asset.uniqueKey != null) {
367
+ assetsByKey.set(asset.uniqueKey, asset);
368
+ }
369
+ }
370
+ let dependentAssetKeys = new Set();
371
+ for (let asset of assets) {
372
+ for (let dep of asset.dependencies.values()) {
373
+ if (assetsByKey.has(dep.specifier)) {
374
+ dependentAssetKeys.add(dep.specifier);
375
+ }
376
+ }
377
+ }
378
+ let assetObjects = [];
379
+ let assetNodeIds = [];
380
+ for (let asset of assets) {
381
+ this.normalizeEnvironment(asset);
382
+ let isDirect = !dependentAssetKeys.has(asset.uniqueKey);
383
+ let dependentAssets = [];
384
+ for (let dep of asset.dependencies.values()) {
385
+ let dependentAsset = assetsByKey.get(dep.specifier);
386
+ if (dependentAsset) {
387
+ dependentAssets.push(dependentAsset);
388
+ if (dependentAsset.id === asset.id) {
389
+ // Don't orphan circular dependencies.
390
+ isDirect = true;
391
+ }
392
+ }
393
+ }
394
+ let id = this.addNode(nodeFromAsset(asset));
395
+ assetObjects.push({
396
+ assetNodeId: id,
397
+ dependentAssets,
398
+ });
399
+ if (isDirect) {
400
+ assetNodeIds.push(id);
401
+ }
402
+ }
403
+ this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(assetGroupNode.id), assetNodeIds);
404
+ for (let { assetNodeId, dependentAssets } of assetObjects) {
405
+ // replaceNodesConnectedTo has merged the value into the existing node, retrieve
406
+ // the actual current node.
407
+ let assetNode = (0, nullthrows_1.default)(this.getNode(assetNodeId));
408
+ (0, assert_1.default)(assetNode.type === 'asset');
409
+ this.resolveAsset(assetNode, dependentAssets);
410
+ }
411
+ }
412
+ resolveAsset(assetNode, dependentAssets) {
413
+ let depNodeIds = [];
414
+ let depNodesWithAssets = [];
415
+ for (let dep of assetNode.value.dependencies.values()) {
416
+ this.normalizeEnvironment(dep);
417
+ let depNode = nodeFromDep(dep);
418
+ let existing = this.getNodeByContentKey(depNode.id);
419
+ if (existing?.type === 'dependency' &&
420
+ existing.value.resolverMeta != null) {
421
+ depNode.value.meta = {
422
+ ...depNode.value.meta,
423
+ ...existing.value.resolverMeta,
424
+ };
425
+ if ((0, feature_flags_1.getFeatureFlag)('hmrImprovements')) {
426
+ depNode.value.resolverMeta = existing.value.resolverMeta;
427
+ }
428
+ }
429
+ if ((0, feature_flags_1.getFeatureFlag)('hmrImprovements')) {
430
+ if (existing?.type === 'dependency' &&
431
+ existing.value.resolverPriority != null) {
432
+ depNode.value.priority = existing.value.resolverPriority;
433
+ depNode.value.resolverPriority = existing.value.resolverPriority;
434
+ }
435
+ }
436
+ let dependentAsset = dependentAssets.find((a) => a.uniqueKey === dep.specifier);
437
+ if (dependentAsset) {
438
+ depNode.complete = true;
439
+ depNodesWithAssets.push([depNode, nodeFromAsset(dependentAsset)]);
440
+ }
441
+ depNode.value.sourceAssetType = assetNode.value.type;
442
+ depNodeIds.push(this.addNode(depNode));
443
+ }
444
+ assetNode.usedSymbolsUpDirty = true;
445
+ assetNode.usedSymbolsDownDirty = true;
446
+ this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(assetNode.id), depNodeIds);
447
+ for (let [depNode, dependentAssetNode] of depNodesWithAssets) {
448
+ let depAssetNodeId = this.addNode(dependentAssetNode);
449
+ this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(depNode.id), [
450
+ depAssetNodeId,
451
+ ]);
452
+ }
453
+ }
454
+ getIncomingDependencies(asset) {
455
+ let nodeId = this.getNodeIdByContentKey(asset.id);
456
+ let assetGroupIds = this.getNodeIdsConnectedTo(nodeId);
457
+ let dependencies = [];
458
+ for (let i = 0; i < assetGroupIds.length; i++) {
459
+ let assetGroupId = assetGroupIds[i];
460
+ // Sometimes assets are connected directly to dependencies
461
+ // rather than through an asset group. This happens due to
462
+ // inline dependencies on assets via uniqueKey. See resolveAsset.
463
+ let node = this.getNode(assetGroupId);
464
+ if (node?.type === 'dependency') {
465
+ dependencies.push(node.value);
466
+ continue;
467
+ }
468
+ let assetIds = this.getNodeIdsConnectedTo(assetGroupId);
469
+ for (let j = 0; j < assetIds.length; j++) {
470
+ let node = this.getNode(assetIds[j]);
471
+ if (!node || node.type !== 'dependency') {
472
+ continue;
473
+ }
474
+ dependencies.push(node.value);
475
+ }
476
+ }
477
+ return dependencies;
478
+ }
479
+ traverseAssets(visit, startNodeId) {
480
+ return this.filteredTraverse((nodeId) => {
481
+ let node = (0, nullthrows_1.default)(this.getNode(nodeId));
482
+ return node.type === 'asset' ? node.value : null;
483
+ }, visit, startNodeId);
484
+ }
485
+ getEntryAssetGroupNodes() {
486
+ let entryNodes = [];
487
+ this.traverse((nodeId, _, actions) => {
488
+ let node = (0, nullthrows_1.default)(this.getNode(nodeId));
489
+ if (node.type === 'asset_group') {
490
+ entryNodes.push(node);
491
+ actions.skipChildren();
492
+ }
493
+ });
494
+ return entryNodes;
495
+ }
496
+ getEntryAssets() {
497
+ let entries = [];
498
+ this.traverseAssets((asset, ctx, traversal) => {
499
+ entries.push(asset);
500
+ traversal.skipChildren();
501
+ });
502
+ return entries;
503
+ }
504
+ getHash() {
505
+ if (this.hash != null) {
506
+ return this.hash;
507
+ }
508
+ let hash = new rust_1.Hash();
509
+ // TODO: sort??
510
+ this.traverse((nodeId) => {
511
+ let node = (0, nullthrows_1.default)(this.getNode(nodeId));
512
+ if (node.type === 'asset') {
513
+ hash.writeString((0, nullthrows_1.default)(node.value.outputHash));
514
+ }
515
+ else if (node.type === 'dependency' && node.value.target) {
516
+ hash.writeString(JSON.stringify(node.value.target));
517
+ }
518
+ });
519
+ this.hash = hash.finish();
520
+ return this.hash;
521
+ }
522
+ }
523
+ exports.default = AssetGraph;