@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,190 @@
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 = createWriteBundlesRequest;
7
+ const feature_flags_1 = require("@atlaspack/feature-flags");
8
+ const RequestTracker_1 = require("../RequestTracker");
9
+ const types_1 = require("../types");
10
+ const ReporterRunner_1 = require("../ReporterRunner");
11
+ const constants_1 = require("../constants");
12
+ const projectPath_1 = require("../projectPath");
13
+ const nullthrows_1 = __importDefault(require("nullthrows"));
14
+ const rust_1 = require("@atlaspack/rust");
15
+ const PackageRequest_1 = require("./PackageRequest");
16
+ const WriteBundleRequest_1 = __importDefault(require("./WriteBundleRequest"));
17
+ const utils_1 = require("@atlaspack/utils");
18
+ /** Length of the hash suffix in output filenames (e.g. .runtime.13dc01ac.js). */
19
+ const NAME_HASH_DISPLAY_LEN = 8;
20
+ /** Use at most NAME_HASH_DISPLAY_LEN chars for the name hash so filenames stay short. */
21
+ function nameHashForFilename(hash) {
22
+ return hash.length <= NAME_HASH_DISPLAY_LEN
23
+ ? hash
24
+ : hash.slice(-NAME_HASH_DISPLAY_LEN);
25
+ }
26
+ function reportPackagingProgress(completeBundles, totalBundles) {
27
+ if (!(0, feature_flags_1.getFeatureFlag)('cliProgressReportingImprovements')) {
28
+ return;
29
+ }
30
+ (0, ReporterRunner_1.report)({
31
+ type: 'buildProgress',
32
+ phase: 'packagingAndOptimizing',
33
+ totalBundles,
34
+ completeBundles,
35
+ });
36
+ }
37
+ /**
38
+ * Packages, optimizes, and writes all bundles to the dist directory.
39
+ */
40
+ function createWriteBundlesRequest(input) {
41
+ return {
42
+ type: RequestTracker_1.requestTypes.write_bundles_request,
43
+ id: 'write_bundles:' + input.bundleGraph.getBundleGraphHash(),
44
+ run,
45
+ input,
46
+ };
47
+ }
48
+ async function run({ input, api, farm, options, }) {
49
+ let { bundleGraph, optionsRef } = input;
50
+ let { ref, dispose } = await farm.createSharedReference(bundleGraph);
51
+ api.invalidateOnOptionChange('shouldContentHash');
52
+ let res = new Map();
53
+ let bundleInfoMap = {};
54
+ let writeEarlyPromises = {};
55
+ let hashRefToNameHash = new Map();
56
+ // Include inline bundles so that non-inline bundles referenced from inline bundles are written to
57
+ // separate files. This ensures that source maps are written and work.
58
+ const allBundles = bundleGraph.getBundles({
59
+ includeInline: (0, feature_flags_1.getFeatureFlag)('inlineBundlesSourceMapFixes'),
60
+ });
61
+ const bundles = allBundles
62
+ .filter((bundle) => bundle.bundleBehavior !== types_1.BundleBehavior.inline &&
63
+ bundle.bundleBehavior !== types_1.BundleBehavior.inlineIsolated)
64
+ .filter((bundle) => {
65
+ // Do not package and write placeholder bundles to disk. We just
66
+ // need to update the name so other bundles can reference it.
67
+ if (bundle.isPlaceholder) {
68
+ const nameHash = nameHashForFilename(bundle.id);
69
+ hashRefToNameHash.set(bundle.hashReference, nameHash);
70
+ let name = (0, nullthrows_1.default)(bundle.name, `Expected ${bundle.type} bundle to have a name`).replace(bundle.hashReference, nameHash);
71
+ res.set(bundle.id, {
72
+ filePath: (0, projectPath_1.joinProjectPath)(bundle.target.distDir, name),
73
+ bundleId: bundle.id,
74
+ type: bundle.type, // FIXME: this is wrong if the packager changes the type...
75
+ stats: {
76
+ time: 0,
77
+ size: 0,
78
+ },
79
+ });
80
+ return false;
81
+ }
82
+ return true;
83
+ });
84
+ let cachedBundles = new Set(bundles.filter((b) => api.canSkipSubrequest(bundleGraph.getHash(b))));
85
+ // Package on the main thread if there is only one bundle to package.
86
+ // This avoids the cost of serializing the bundle graph for single file change builds.
87
+ let useMainThread = bundles.length === 1 || bundles.length - cachedBundles.size <= 1;
88
+ try {
89
+ let completeBundles = cachedBundles.size;
90
+ reportPackagingProgress(completeBundles, bundles.length);
91
+ await Promise.all(bundles.map(async (bundle) => {
92
+ let request = (0, PackageRequest_1.createPackageRequest)({
93
+ bundle,
94
+ bundleGraph,
95
+ bundleGraphReference: ref,
96
+ optionsRef,
97
+ useMainThread,
98
+ });
99
+ let info = await api.runRequest(request);
100
+ if (!cachedBundles.has(bundle)) {
101
+ completeBundles++;
102
+ reportPackagingProgress(completeBundles, bundles.length);
103
+ }
104
+ if (!useMainThread) {
105
+ // Force a refresh of the cache to avoid a race condition
106
+ // between threaded reads and writes that can result in an LMDB cache miss:
107
+ // 1. The main thread has read some value from cache, necessitating a read transaction.
108
+ // 2. Concurrently, Thread A finishes a packaging request.
109
+ // 3. Subsequently, the main thread is tasked with this request, but fails because the read transaction is stale.
110
+ // This only occurs if the reading thread has a transaction that was created before the writing thread committed,
111
+ // and the transaction is still live when the reading thread attempts to get the written value.
112
+ // See https://github.com/parcel-bundler/parcel/issues/9121
113
+ options.cache.refresh();
114
+ }
115
+ bundleInfoMap[bundle.id] = info;
116
+ if (!info.hashReferences.length) {
117
+ hashRefToNameHash.set(bundle.hashReference, nameHashForFilename(options.shouldContentHash ? info.hash : bundle.id));
118
+ let writeBundleRequest = (0, WriteBundleRequest_1.default)({
119
+ bundle,
120
+ info,
121
+ hashRefToNameHash,
122
+ bundleGraph,
123
+ });
124
+ let promise = api.runRequest(writeBundleRequest);
125
+ // If the promise rejects before we await it (below), we don't want to crash the build.
126
+ promise.catch(() => { });
127
+ writeEarlyPromises[bundle.id] = promise;
128
+ }
129
+ }));
130
+ assignComplexNameHashes(hashRefToNameHash, bundles, bundleInfoMap, options);
131
+ await Promise.all(bundles.map((bundle) => {
132
+ let promise = writeEarlyPromises[bundle.id] ??
133
+ api.runRequest((0, WriteBundleRequest_1.default)({
134
+ bundle,
135
+ info: bundleInfoMap[bundle.id],
136
+ hashRefToNameHash,
137
+ bundleGraph,
138
+ }));
139
+ return promise.then((r) => res.set(bundle.id, r));
140
+ }));
141
+ let result = { bundleInfo: res };
142
+ if (utils_1.debugTools['scope-hoisting-stats']) {
143
+ // Aggregate scope hoisting stats from all bundles
144
+ let aggregatedScopeHoistingStats = {
145
+ totalAssets: 0,
146
+ wrappedAssets: 0,
147
+ };
148
+ for (let bundle of bundles) {
149
+ let bundleInfo = bundleInfoMap[bundle.id];
150
+ if (bundleInfo?.scopeHoistingStats) {
151
+ aggregatedScopeHoistingStats.totalAssets +=
152
+ bundleInfo.scopeHoistingStats.totalAssets;
153
+ aggregatedScopeHoistingStats.wrappedAssets +=
154
+ bundleInfo.scopeHoistingStats.wrappedAssets;
155
+ }
156
+ }
157
+ result.scopeHoistingStats = aggregatedScopeHoistingStats;
158
+ }
159
+ api.storeResult(result);
160
+ return result;
161
+ }
162
+ finally {
163
+ await dispose();
164
+ }
165
+ }
166
+ function assignComplexNameHashes(hashRefToNameHash, bundles, bundleInfoMap, options) {
167
+ for (let bundle of bundles) {
168
+ if (hashRefToNameHash.get(bundle.hashReference) != null) {
169
+ continue;
170
+ }
171
+ hashRefToNameHash.set(bundle.hashReference, nameHashForFilename(options.shouldContentHash
172
+ ? (0, rust_1.hashString)([...getBundlesIncludedInHash(bundle.id, bundleInfoMap)]
173
+ .map((bundleId) => bundleInfoMap[bundleId].hash)
174
+ .join(':'))
175
+ : bundle.id));
176
+ }
177
+ }
178
+ function getBundlesIncludedInHash(bundleId, bundleInfoMap, included = new Set()) {
179
+ included.add(bundleId);
180
+ for (let hashRef of bundleInfoMap[bundleId]?.hashReferences ?? []) {
181
+ let referencedId = getIdFromHashRef(hashRef);
182
+ if (!included.has(referencedId)) {
183
+ getBundlesIncludedInHash(referencedId, bundleInfoMap, included);
184
+ }
185
+ }
186
+ return included;
187
+ }
188
+ function getIdFromHashRef(hashRef) {
189
+ return hashRef.slice(constants_1.HASH_REF_PREFIX.length);
190
+ }
@@ -0,0 +1,128 @@
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
+ /* eslint-disable no-console */
7
+ // @ts-expect-error missing types
8
+ const default_1 = __importDefault(require("rfdc/default"));
9
+ const jest_diff_1 = require("jest-diff");
10
+ const projectPath_1 = require("../projectPath");
11
+ function filterNode(node) {
12
+ let clone = (0, default_1.default)(node);
13
+ // Clean up anything you don't want to see in the diff
14
+ // delete clone.id;
15
+ delete clone.value.id;
16
+ delete clone.value.meta.id;
17
+ delete clone.value.sourceAssetId;
18
+ delete clone.value.env.id;
19
+ delete clone.value.isEsm;
20
+ delete clone.value.shouldWrap;
21
+ delete clone.value.contentKey;
22
+ delete clone.value.placeholder;
23
+ delete clone.value.code;
24
+ delete clone.value.hasCjsExports;
25
+ delete clone.value.staticExports;
26
+ delete clone.value.isConstantModule;
27
+ delete clone.value.hasNodeReplacements;
28
+ delete clone.value.stats;
29
+ delete clone.value.astKey;
30
+ delete clone.value.astGenerator;
31
+ delete clone.value.dependencies;
32
+ return clone;
33
+ }
34
+ // @ts-expect-error missing return type
35
+ function compactDeep(obj, ignoredPatterns = [], currentPath = '$') {
36
+ if (obj instanceof Map) {
37
+ const copy = {};
38
+ Array.from(obj.entries()).forEach(([k, v]) => {
39
+ if (v != null) {
40
+ copy[k] = compactDeep(v, ignoredPatterns, `${currentPath}.${k}`);
41
+ }
42
+ });
43
+ return copy;
44
+ }
45
+ else if (Array.isArray(obj)) {
46
+ // @ts-expect-error implicit any
47
+ return obj.map((v) => compactDeep(v, ignoredPatterns, `${currentPath}[]`));
48
+ }
49
+ else if (typeof obj === 'object') {
50
+ const copy = {};
51
+ Object.entries(obj ?? {}).forEach(([key, value]) => {
52
+ const path = `${currentPath}.${key}`;
53
+ if (ignoredPatterns.some((pattern) => path.includes(pattern))) {
54
+ return;
55
+ }
56
+ // Equivalent false == null
57
+ if (key === 'isWeak' && value === false) {
58
+ return;
59
+ }
60
+ if (value != null) {
61
+ copy[key] = compactDeep(value, ignoredPatterns, path);
62
+ }
63
+ });
64
+ return copy;
65
+ }
66
+ else if (obj != null) {
67
+ return obj;
68
+ }
69
+ }
70
+ function assetGraphDiff(jsAssetGraph, rustAssetGraph, projectRoot) {
71
+ const getNodes = (graph) => {
72
+ let nodes = {};
73
+ // @ts-expect-error implicit any
74
+ graph.traverse((nodeId) => {
75
+ let node = graph.getNode(nodeId) ?? null;
76
+ if (!node)
77
+ return;
78
+ if (node.type === 'dependency') {
79
+ let sourcePath = node.value.sourcePath
80
+ ? (0, projectPath_1.toProjectPath)(projectRoot, node.value.sourcePath)
81
+ : (0, projectPath_1.toProjectPath)(projectRoot, 'entry');
82
+ nodes[`dep:${sourcePath}:${node.value.specifier}`] = filterNode(node);
83
+ }
84
+ else if (node.type === 'asset') {
85
+ nodes[`asset:${(0, projectPath_1.toProjectPath)(projectRoot, node.value.filePath)}`] =
86
+ filterNode(node);
87
+ }
88
+ });
89
+ return nodes;
90
+ };
91
+ const jsNodes = getNodes(jsAssetGraph);
92
+ const rustNodes = getNodes(rustAssetGraph);
93
+ const all = new Set([...Object.keys(jsNodes), ...Object.keys(rustNodes)]);
94
+ const missing = [];
95
+ const extra = [];
96
+ for (const key of all.keys()) {
97
+ if (process.env.NATIVE_COMPARE !== 'true') {
98
+ continue;
99
+ }
100
+ let jsNode = jsNodes[key];
101
+ let rustNode = rustNodes[key];
102
+ if (!rustNode) {
103
+ missing.push(key);
104
+ continue;
105
+ }
106
+ if (!jsNode) {
107
+ extra.push(key);
108
+ continue;
109
+ }
110
+ console.log(key);
111
+ const ignoredPatterns = [
112
+ // ignored because we don't copy the environment ID back from rust
113
+ // in the target value
114
+ '$.value.target.env.id',
115
+ // ignore asset.mapKey because we don't do persistence on rust yet
116
+ '$.value.mapKey',
117
+ // ignore this because it's just the output hash. We don't need to compute
118
+ // this yet
119
+ '$.value.outputHash',
120
+ // ignore correspondingRequest from all nodes
121
+ '$.correspondingRequest',
122
+ ];
123
+ console.log((0, jest_diff_1.diff)(compactDeep(jsNode, ignoredPatterns), compactDeep(rustNode, ignoredPatterns)));
124
+ }
125
+ console.log('Missing', missing);
126
+ console.log('Extra', extra);
127
+ }
128
+ module.exports = assetGraphDiff;
@@ -0,0 +1,131 @@
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.assetGraphToDot = assetGraphToDot;
7
+ exports.getDebugAssetGraphDotPath = getDebugAssetGraphDotPath;
8
+ exports.getDebugAssetGraphDotOptions = getDebugAssetGraphDotOptions;
9
+ const path_1 = __importDefault(require("path"));
10
+ /** @description Renders AssetGraph into GraphViz Dot format */
11
+ function assetGraphToDot(assetGraph, { sort = false, style = true } = {}) {
12
+ const edges = [];
13
+ const nodeStyles = {};
14
+ assetGraph.traverse((nodeId) => {
15
+ let node = assetGraph.getNode(nodeId) ?? null;
16
+ if (!node)
17
+ return;
18
+ const fromIds = assetGraph.getNodeIdsConnectedTo(nodeId);
19
+ for (const fromId of fromIds) {
20
+ let fromNode = assetGraph.getNode(fromId) ?? null;
21
+ if (!fromNode)
22
+ throw new Error('No Node');
23
+ const edgeStyle = getEdgeStyle(node);
24
+ const nodeStyle = getNodeStyle(node);
25
+ let entry = `"${getNodeName(fromNode)}" -> "${getNodeName(node)}"`;
26
+ if (edgeStyle) {
27
+ entry += ` [${edgeStyle}]`;
28
+ }
29
+ if (nodeStyle) {
30
+ nodeStyles[getNodeName(node)] = nodeStyle;
31
+ }
32
+ edges.push(entry);
33
+ }
34
+ });
35
+ const nodeStylesList = Object.entries(nodeStyles);
36
+ if (sort) {
37
+ edges.sort();
38
+ nodeStylesList.sort();
39
+ }
40
+ let digraph = `digraph {\n\tnode [shape=rectangle]\n`;
41
+ if (style) {
42
+ digraph += nodeStylesList
43
+ .map(([node, style]) => `\t"${node}" [${style}]\n`)
44
+ .join('');
45
+ }
46
+ digraph += edges.map((v) => `\t${v}\n`).join('');
47
+ digraph += `}\n`;
48
+ return digraph;
49
+ }
50
+ function getDebugAssetGraphDotPath() {
51
+ let debugAssetGraphDot = process.env.DEBUG_ASSET_GRAPH_DOT;
52
+ if (debugAssetGraphDot === undefined || debugAssetGraphDot === '') {
53
+ return null;
54
+ }
55
+ if (!path_1.default.isAbsolute(debugAssetGraphDot)) {
56
+ debugAssetGraphDot = path_1.default.join(process.cwd(), debugAssetGraphDot);
57
+ }
58
+ return debugAssetGraphDot;
59
+ }
60
+ function getDebugAssetGraphDotOptions() {
61
+ const options = {};
62
+ let style = process.env.DEBUG_ASSET_GRAPH_DOT_STYLE;
63
+ if (style !== undefined) {
64
+ options.style = style === 'true';
65
+ }
66
+ let sort = process.env.DEBUG_ASSET_GRAPH_DOT_SORT;
67
+ if (sort !== undefined) {
68
+ options.sort = sort === 'true';
69
+ }
70
+ return options;
71
+ }
72
+ function fromCwd(input) {
73
+ return path_1.default.relative(process.cwd(), input);
74
+ }
75
+ function getNodeName(node) {
76
+ if (node.type === 'asset_group') {
77
+ // @ts-expect-error TS2345
78
+ return [`asset_group`, node.id, fromCwd(node.value.filePath)].join('\\n');
79
+ }
80
+ else if (node.type === 'asset') {
81
+ return [`asset`, node.id, fromCwd(node.value.filePath)].join('\\n');
82
+ }
83
+ else if (node.type === 'dependency') {
84
+ return [`dependency`, node.id, node.value.specifier].join('\\n');
85
+ }
86
+ else if (node.type === 'entry_specifier') {
87
+ return [`entry_specifier`, node.value].join('\\n');
88
+ }
89
+ else if (node.type === 'entry_file') {
90
+ return [`entry_file`, fromCwd(node.value.filePath)].join('\\n');
91
+ }
92
+ return 'ROOT';
93
+ }
94
+ function getEdgeStyle(node) {
95
+ if (node.type === 'asset_group') {
96
+ return ``;
97
+ }
98
+ else if (node.type === 'asset') {
99
+ return ``;
100
+ }
101
+ else if (node.type === 'dependency') {
102
+ if (node.value.priority === 2) {
103
+ return `style="dashed"`;
104
+ }
105
+ }
106
+ else if (node.type === 'entry_specifier') {
107
+ return ``;
108
+ }
109
+ else if (node.type === 'entry_file') {
110
+ return ``;
111
+ }
112
+ return '';
113
+ }
114
+ function getNodeStyle(node) {
115
+ if (node.type === 'asset_group') {
116
+ return `fillcolor="#E8F5E9", style="filled"`;
117
+ }
118
+ else if (node.type === 'asset') {
119
+ return `fillcolor="#DCEDC8", style="filled"`;
120
+ }
121
+ else if (node.type === 'dependency') {
122
+ return `fillcolor="#BBDEFB", style="filled"`;
123
+ }
124
+ else if (node.type === 'entry_specifier') {
125
+ return `fillcolor="#FFF9C4", style="filled"`;
126
+ }
127
+ else if (node.type === 'entry_file') {
128
+ return `fillcolor="#FFE0B2", style="filled"`;
129
+ }
130
+ return '';
131
+ }