@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
@@ -1,5 +1,3 @@
1
- // @flow strict-local
2
-
3
1
  import type {
4
2
  FilePath,
5
3
  FileCreateInvalidation,
@@ -20,6 +18,14 @@ import baseX from 'base-x';
20
18
  import {hashObject} from '@atlaspack/utils';
21
19
  import {fromProjectPath, toProjectPath} from './projectPath';
22
20
 
21
+ // flow-to-ts helpers
22
+ export type SetComplement<A, B extends A> = A extends B ? never : A;
23
+ export type Diff<T extends U, U extends object> = Pick<
24
+ T,
25
+ SetComplement<keyof T, keyof U>
26
+ >;
27
+ // /flow-to-ts helpers
28
+
23
29
  const base62 = baseX(
24
30
  '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
25
31
  );
@@ -28,7 +34,7 @@ export function getBundleGroupId(bundleGroup: BundleGroup): string {
28
34
  return 'bundle_group:' + bundleGroup.target.name + bundleGroup.entryAssetId;
29
35
  }
30
36
 
31
- export function assertSignalNotAborted(signal: ?AbortSignal): void {
37
+ export function assertSignalNotAborted(signal?: AbortSignal | null): void {
32
38
  if (signal && signal.aborted) {
33
39
  throw new BuildAbortError();
34
40
  }
@@ -40,7 +46,7 @@ export class BuildAbortError extends Error {
40
46
 
41
47
  export function getPublicId(
42
48
  id: string,
43
- alreadyExists: (string) => boolean,
49
+ alreadyExists: (arg1: string) => boolean,
44
50
  ): string {
45
51
  let encoded = base62.encode(Buffer.from(id, 'hex'));
46
52
  for (let end = 5; end <= encoded.length; end++) {
@@ -74,7 +80,7 @@ const ignoreOptions = new Set([
74
80
 
75
81
  export function optionsProxy(
76
82
  options: AtlaspackOptions,
77
- invalidateOnOptionChange: (string) => void,
83
+ invalidateOnOptionChange: (arg1: string) => void,
78
84
  addDevDependency?: (devDep: InternalDevDepOptions) => void,
79
85
  ): AtlaspackOptions {
80
86
  let packageManager = addDevDependency
@@ -85,7 +91,7 @@ export function optionsProxy(
85
91
  )
86
92
  : options.packageManager;
87
93
  return new Proxy(options, {
88
- get(target, prop) {
94
+ get(target: AtlaspackOptions, prop: string) {
89
95
  if (prop === 'packageManager') {
90
96
  return packageManager;
91
97
  }
@@ -94,6 +100,7 @@ export function optionsProxy(
94
100
  invalidateOnOptionChange(prop);
95
101
  }
96
102
 
103
+ // @ts-expect-error TS7053
97
104
  return target[prop];
98
105
  },
99
106
  });
@@ -104,7 +111,7 @@ function proxyPackageManager(
104
111
  packageManager: PackageManager,
105
112
  addDevDependency: (devDep: InternalDevDepOptions) => void,
106
113
  ): PackageManager {
107
- let require = (id: string, from: string, opts) => {
114
+ let require = (id: string, from: string, opts: any) => {
108
115
  addDevDependency({
109
116
  specifier: id,
110
117
  resolveFrom: toProjectPath(projectRoot, from),
@@ -114,19 +121,20 @@ function proxyPackageManager(
114
121
  };
115
122
 
116
123
  return new Proxy(packageManager, {
117
- get(target, prop) {
124
+ get(target: PackageManager, prop: string) {
118
125
  if (prop === 'require') {
119
126
  return require;
120
127
  }
121
128
 
122
- // $FlowFixMe
129
+ // @ts-expect-error TS7053
123
130
  return target[prop];
124
131
  },
125
132
  });
126
133
  }
127
134
 
128
- export function hashFromOption(value: mixed): string {
135
+ export function hashFromOption(value: unknown): string {
129
136
  if (typeof value === 'object' && value != null) {
137
+ // @ts-expect-error TS2345
130
138
  return hashObject(value);
131
139
  }
132
140
 
@@ -137,18 +145,25 @@ export function invalidateOnFileCreateToInternal(
137
145
  projectRoot: FilePath,
138
146
  invalidation: FileCreateInvalidation,
139
147
  ): InternalFileCreateInvalidation {
148
+ // @ts-expect-error TS2339
140
149
  if (invalidation.glob != null) {
150
+ // @ts-expect-error TS2339
141
151
  return {glob: toProjectPath(projectRoot, invalidation.glob)};
152
+ // @ts-expect-error TS2339
142
153
  } else if (invalidation.filePath != null) {
143
154
  return {
155
+ // @ts-expect-error TS2339
144
156
  filePath: toProjectPath(projectRoot, invalidation.filePath),
145
157
  };
146
158
  } else {
147
159
  invariant(
160
+ // @ts-expect-error TS2339
148
161
  invalidation.aboveFilePath != null && invalidation.fileName != null,
149
162
  );
150
163
  return {
164
+ // @ts-expect-error TS2339
151
165
  fileName: invalidation.fileName,
166
+ // @ts-expect-error TS2339
152
167
  aboveFilePath: toProjectPath(projectRoot, invalidation.aboveFilePath),
153
168
  };
154
169
  }
@@ -167,8 +182,8 @@ export function createInvalidations(): Invalidations {
167
182
 
168
183
  export function fromInternalSourceLocation(
169
184
  projectRoot: FilePath,
170
- loc: ?InternalSourceLocation,
171
- ): ?SourceLocation {
185
+ loc?: InternalSourceLocation | null,
186
+ ): SourceLocation | null | undefined {
172
187
  if (!loc) return loc;
173
188
 
174
189
  return {
@@ -180,8 +195,8 @@ export function fromInternalSourceLocation(
180
195
 
181
196
  export function toInternalSourceLocation(
182
197
  projectRoot: FilePath,
183
- loc: ?SourceLocation,
184
- ): ?InternalSourceLocation {
198
+ loc?: SourceLocation | null,
199
+ ): InternalSourceLocation | null | undefined {
185
200
  if (!loc) return loc;
186
201
 
187
202
  return {
@@ -190,17 +205,33 @@ export function toInternalSourceLocation(
190
205
  end: loc.end,
191
206
  };
192
207
  }
193
- export function toInternalSymbols<T: {|loc: ?SourceLocation|}>(
208
+ export function toInternalSymbols<
209
+ T extends {
210
+ loc: SourceLocation | null | undefined;
211
+ },
212
+ >(
194
213
  projectRoot: FilePath,
195
- symbols: ?Map<Symbol, T>,
196
- ): ?Map<
197
- Symbol,
198
- {|loc: ?InternalSourceLocation, ...$Rest<T, {|loc: ?SourceLocation|}>|},
199
- > {
214
+ symbols?: Map<symbol, T> | null,
215
+ ):
216
+ | Map<
217
+ symbol,
218
+ {
219
+ loc: InternalSourceLocation | null | undefined;
220
+ } & Partial<
221
+ Diff<
222
+ T,
223
+ {
224
+ loc: SourceLocation | null | undefined;
225
+ }
226
+ >
227
+ >
228
+ >
229
+ | null
230
+ | undefined {
200
231
  if (!symbols) return symbols;
201
232
 
202
233
  return new Map(
203
- [...symbols].map(([k, {loc, ...v}]) => [
234
+ [...symbols].map(([k, {loc, ...v}]: [any, any]) => [
204
235
  k,
205
236
  {
206
237
  ...v,
@@ -1,5 +1,3 @@
1
- // @flow strict-local
2
-
3
1
  import type {
4
2
  Bundle,
5
3
  AtlaspackOptions,
@@ -14,16 +12,17 @@ import invariant from 'assert';
14
12
  import nullthrows from 'nullthrows';
15
13
  import BundleGraph from './BundleGraph';
16
14
  import Transformation, {
17
- type TransformationOpts,
18
- type TransformationResult,
15
+ TransformationOpts,
16
+ TransformationResult,
19
17
  } from './Transformation';
20
18
  import {reportWorker, report} from './ReporterRunner';
21
- import PackagerRunner, {type RunPackagerRunnerResult} from './PackagerRunner';
22
- import Validation, {type ValidationOpts} from './Validation';
19
+ import PackagerRunner, {RunPackagerRunnerResult} from './PackagerRunner';
20
+ import Validation, {ValidationOpts} from './Validation';
23
21
  import {AtlaspackConfig} from './AtlaspackConfig';
24
22
  import {registerCoreWithSerializer} from './registerCoreWithSerializer';
25
23
  import {clearBuildCaches} from '@atlaspack/build-cache';
26
- import {init as initSourcemaps} from '@parcel/source-map';
24
+ import {init as initSourcemaps} from '@atlaspack/source-map';
25
+ // @ts-expect-error TS2305
27
26
  import {init as initRust} from '@atlaspack/rust';
28
27
  import WorkerFarm from '@atlaspack/workers';
29
28
  import {setFeatureFlags} from '@atlaspack/feature-flags';
@@ -32,43 +31,48 @@ import '@atlaspack/cache'; // register with serializer
32
31
  import '@atlaspack/package-manager';
33
32
  import '@atlaspack/fs';
34
33
 
35
- // $FlowFixMe
36
- if (process.env.ATLASPACK_BUILD_REPL && process.browser) {
37
- /* eslint-disable import/no-extraneous-dependencies, monorepo/no-internal-import */
38
- require('@atlaspack/repl/src/atlaspack/BrowserPackageManager.js');
39
- // $FlowFixMe
40
- require('@atlaspack/repl/src/atlaspack/ExtendedMemoryFS.js');
41
- /* eslint-enable import/no-extraneous-dependencies, monorepo/no-internal-import */
42
- }
34
+ // flow-to-ts helpers
35
+ export type SetComplement<A, B extends A> = A extends B ? never : A;
36
+ export type Diff<T extends U, U extends object> = Pick<
37
+ T,
38
+ SetComplement<keyof T, keyof U>
39
+ >;
40
+ // /flow-to-ts helpers
43
41
 
44
42
  registerCoreWithSerializer();
45
43
 
46
44
  // Remove the workerApi type from the TransformationOpts and ValidationOpts types:
47
45
  // https://github.com/facebook/flow/issues/2835
48
- type WorkerTransformationOpts = {|
49
- ...$Diff<TransformationOpts, {|workerApi: mixed, options: AtlaspackOptions|}>,
50
- optionsRef: SharedReference,
51
- configCachePath: string,
52
- |};
53
- type WorkerValidationOpts = {|
54
- ...$Diff<ValidationOpts, {|workerApi: mixed, options: AtlaspackOptions|}>,
55
- optionsRef: SharedReference,
56
- configCachePath: string,
57
- |};
46
+ type WorkerTransformationOpts = Diff<
47
+ TransformationOpts,
48
+ {
49
+ workerApi: unknown;
50
+ options: AtlaspackOptions;
51
+ }
52
+ > & {
53
+ optionsRef: SharedReference;
54
+ configCachePath: string;
55
+ };
56
+ type WorkerValidationOpts = Diff<
57
+ // @ts-expect-error TS2344
58
+ ValidationOpts,
59
+ {
60
+ workerApi: unknown;
61
+ options: AtlaspackOptions;
62
+ }
63
+ > & {
64
+ optionsRef: SharedReference;
65
+ configCachePath: string;
66
+ };
58
67
 
59
68
  // TODO: this should eventually be replaced by an in memory cache layer
60
69
  let atlaspackConfigCache = new Map();
61
70
 
62
- function loadOptions(ref, workerApi) {
63
- return nullthrows(
64
- ((workerApi.getSharedReference(
65
- ref,
66
- // $FlowFixMe
67
- ): any): AtlaspackOptions),
68
- );
71
+ function loadOptions(ref: SharedReference, workerApi: WorkerApi) {
72
+ return nullthrows(workerApi.getSharedReference(ref) as AtlaspackOptions);
69
73
  }
70
74
 
71
- async function loadConfig(cachePath, options) {
75
+ async function loadConfig(cachePath: string, options: AtlaspackOptions) {
72
76
  let config = atlaspackConfigCache.get(cachePath);
73
77
  if (config && config.options === options) {
74
78
  return config;
@@ -101,6 +105,7 @@ export async function runTransform(
101
105
  return new Transformation({
102
106
  workerApi,
103
107
  options,
108
+ // @ts-expect-error TS2783
104
109
  config,
105
110
  ...rest,
106
111
  }).run();
@@ -116,8 +121,10 @@ export async function runValidate(
116
121
 
117
122
  return new Validation({
118
123
  workerApi,
124
+ // @ts-expect-error TS2783
119
125
  report: reportWorker.bind(null, workerApi),
120
126
  options,
127
+ // @ts-expect-error TS2783
121
128
  config,
122
129
  ...rest,
123
130
  }).run();
@@ -133,15 +140,15 @@ export async function runPackage(
133
140
  previousDevDeps,
134
141
  invalidDevDeps,
135
142
  previousInvalidations,
136
- }: {|
137
- bundle: Bundle,
138
- bundleGraphReference: SharedReference,
139
- configCachePath: string,
140
- optionsRef: SharedReference,
141
- previousDevDeps: Map<string, string>,
142
- invalidDevDeps: Array<DevDepSpecifier>,
143
- previousInvalidations: Array<RequestInvalidation>,
144
- |},
143
+ }: {
144
+ bundle: Bundle;
145
+ bundleGraphReference: SharedReference;
146
+ configCachePath: string;
147
+ optionsRef: SharedReference;
148
+ previousDevDeps: Map<string, string>;
149
+ invalidDevDeps: Array<DevDepSpecifier>;
150
+ previousInvalidations: Array<RequestInvalidation>;
151
+ },
145
152
  ): Promise<RunPackagerRunnerResult> {
146
153
  let bundleGraph = workerApi.getSharedReference(bundleGraphReference);
147
154
  invariant(bundleGraph instanceof BundleGraph);
@@ -151,6 +158,7 @@ export async function runPackage(
151
158
  let runner = new PackagerRunner({
152
159
  config: atlaspackConfig,
153
160
  options,
161
+ // @ts-expect-error TS2322
154
162
  report: WorkerFarm.isWorker() ? reportWorker.bind(null, workerApi) : report,
155
163
  previousDevDeps,
156
164
  previousInvalidations,
@@ -1,7 +1,7 @@
1
- // @flow strict-local
2
1
  import assert from 'assert';
3
2
  import invariant from 'assert';
4
3
  import nullthrows from 'nullthrows';
4
+ import {serialize, deserialize} from '@atlaspack/build-cache';
5
5
  import AssetGraph, {
6
6
  nodeFromAssetGroup,
7
7
  nodeFromDep,
@@ -9,24 +9,21 @@ import AssetGraph, {
9
9
  nodeFromAsset,
10
10
  } from '../src/AssetGraph';
11
11
  import {createDependency as _createDependency} from '../src/Dependency';
12
- import {
13
- createAsset as _createAsset,
14
- type AssetOptions,
15
- } from '../src/assetUtils';
12
+ import {createAsset as _createAsset, AssetOptions} from '../src/assetUtils';
16
13
  import {DEFAULT_ENV, DEFAULT_TARGETS} from './test-utils';
17
14
  import {toProjectPath as _toProjectPath} from '../src/projectPath';
18
15
 
19
- const stats = {size: 0, time: 0};
16
+ const stats = {size: 0, time: 0} as const;
20
17
 
21
18
  function createAsset(opts: AssetOptions) {
22
19
  return _createAsset('/', opts);
23
20
  }
24
21
 
25
- function createDependency(opts) {
22
+ function createDependency(opts: any) {
26
23
  return _createDependency('/', opts);
27
24
  }
28
25
 
29
- function toProjectPath(p) {
26
+ function toProjectPath(p: any) {
30
27
  return _toProjectPath('/', p);
31
28
  }
32
29
 
@@ -1,7 +1,6 @@
1
- // @flow strict-local
2
-
3
1
  import type {InitialAtlaspackOptions} from '@atlaspack/types';
4
2
  import WorkerFarm from '@atlaspack/workers';
3
+ import {FILE_CONFIG_NO_REPORTERS} from '@atlaspack/test-utils';
5
4
  // flowlint-next-line untyped-import:off
6
5
  import sinon from 'sinon';
7
6
  import assert from 'assert';
@@ -11,7 +10,7 @@ import Atlaspack, {createWorkerFarm} from '../src/Atlaspack';
11
10
  describe('Atlaspack', function () {
12
11
  this.timeout(75000);
13
12
 
14
- let workerFarm;
13
+ let workerFarm: any;
15
14
  before(() => {
16
15
  workerFarm = createWorkerFarm();
17
16
  });
@@ -22,7 +21,6 @@ describe('Atlaspack', function () {
22
21
  workerFarm.ending = true;
23
22
  let atlaspack = createAtlaspack({workerFarm});
24
23
 
25
- // $FlowFixMe
26
24
  await assert.rejects(() => atlaspack.run(), {
27
25
  name: 'Error',
28
26
  message: 'Supplied WorkerFarm is ending',
@@ -32,7 +30,7 @@ describe('Atlaspack', function () {
32
30
  });
33
31
 
34
32
  describe('atlaspack.end()', () => {
35
- let endSpy;
33
+ let endSpy: any;
36
34
  beforeEach(() => {
37
35
  endSpy = sinon.spy(WorkerFarm.prototype, 'end');
38
36
  });
@@ -78,7 +76,7 @@ describe('Atlaspack', function () {
78
76
  describe('AtlaspackAPI', function () {
79
77
  this.timeout(75000);
80
78
 
81
- let workerFarm;
79
+ let workerFarm: any;
82
80
  beforeEach(() => {
83
81
  workerFarm = createWorkerFarm();
84
82
  });
@@ -132,10 +130,7 @@ function createAtlaspack(opts?: InitialAtlaspackOptions) {
132
130
  return new Atlaspack({
133
131
  entries: [path.join(__dirname, 'fixtures/atlaspack/index.js')],
134
132
  logLevel: 'info',
135
- defaultConfig: path.join(
136
- path.dirname(require.resolve('@atlaspack/test-utils')),
137
- '.parcelrc-no-reporters',
138
- ),
133
+ defaultConfig: FILE_CONFIG_NO_REPORTERS,
139
134
  shouldDisableCache: true,
140
135
  ...opts,
141
136
  });
@@ -1,5 +1,3 @@
1
- // @flow strict-local
2
-
3
1
  import assert from 'assert';
4
2
  import path from 'path';
5
3
 
@@ -138,7 +136,6 @@ describe('AtlaspackConfig', () => {
138
136
  );
139
137
  let atlaspackConfig = new AtlaspackConfig(config, DEFAULT_OPTIONS);
140
138
 
141
- // $FlowFixMe
142
139
  await assert.rejects(() => atlaspackConfig.getTransformers('test.js'), {
143
140
  name: 'Error',
144
141
  diagnostics: [
@@ -173,7 +170,6 @@ describe('AtlaspackConfig', () => {
173
170
  );
174
171
  let code = await DEFAULT_OPTIONS.inputFS.readFile(configFilePath, 'utf8');
175
172
 
176
- // $FlowFixMe
177
173
  await assert.rejects(
178
174
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
179
175
  {
@@ -263,7 +259,6 @@ describe('AtlaspackConfig', () => {
263
259
  'index.json',
264
260
  );
265
261
 
266
- // $FlowFixMe
267
262
  await assert.rejects(() => atlaspackConfig.getTransformers('test.js'), {
268
263
  name: 'Error',
269
264
  diagnostics: [
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import assert from 'assert';
3
2
  import path from 'path';
4
3
 
@@ -24,7 +23,6 @@ describe('AtlaspackConfigRequest', () => {
24
23
  it('should require pipeline to be an array', () => {
25
24
  assert.throws(() => {
26
25
  validateConfigFile(
27
- // $FlowExpectedError[incompatible-call]
28
26
  {
29
27
  filePath: '.parcelrc',
30
28
  resolvers: '123',
@@ -39,7 +37,6 @@ describe('AtlaspackConfigRequest', () => {
39
37
  validateConfigFile(
40
38
  {
41
39
  filePath: '.parcelrc',
42
- // $FlowExpectedError[incompatible-call]
43
40
  resolvers: [1, '123', 5],
44
41
  },
45
42
  '.parcelrc',
@@ -72,7 +69,6 @@ describe('AtlaspackConfigRequest', () => {
72
69
  validateConfigFile(
73
70
  {
74
71
  filePath: '.parcelrc',
75
- // $FlowExpectedError[incompatible-call]
76
72
  transformers: ['parcel-transformer-test', '...'],
77
73
  },
78
74
  '.parcelrc',
@@ -83,7 +79,6 @@ describe('AtlaspackConfigRequest', () => {
83
79
  it('should require extends to be a string or array of strings', () => {
84
80
  assert.throws(() => {
85
81
  validateConfigFile(
86
- // $FlowExpectedError[incompatible-call]
87
82
  {
88
83
  filePath: '.parcelrc',
89
84
  extends: 2,
@@ -96,7 +91,6 @@ describe('AtlaspackConfigRequest', () => {
96
91
  validateConfigFile(
97
92
  {
98
93
  filePath: '.parcelrc',
99
- // $FlowExpectedError[incompatible-call]
100
94
  extends: [2, 7],
101
95
  },
102
96
  '.parcelrc',
@@ -126,9 +120,9 @@ describe('AtlaspackConfigRequest', () => {
126
120
  assert.throws(
127
121
  () => {
128
122
  validateConfigFile(
129
- // $FlowExpectedError
130
123
  {
131
124
  extends: '@atlaspack/config-default',
125
+
132
126
  '@atlaspack/transformer-js': {
133
127
  inlineEnvironment: false,
134
128
  },
@@ -136,10 +130,10 @@ describe('AtlaspackConfigRequest', () => {
136
130
  '.parcelrc',
137
131
  );
138
132
  },
139
- (e) => {
133
+ (e: any) => {
140
134
  assert.strictEqual(
141
135
  e.diagnostics[0].codeFrames[0].codeHighlights[0].message,
142
- `Possible values: "$schema", "bundler", "resolvers", "transformers", "validators", "namers", "packagers", "optimizers", "compressors", "reporters", "runtimes", "filePath", "resolveFrom"`,
136
+ `Possible values: "$schema", "bundler", "resolvers", "transformers", "validators", "namers", "packagers", "optimizers", "compressors", "reporters", "runtimes", "unstable\\_alias", "filePath", "resolveFrom"`,
143
137
  );
144
138
  return true;
145
139
  },
@@ -396,7 +390,7 @@ describe('AtlaspackConfigRequest', () => {
396
390
  });
397
391
 
398
392
  it('should call a merger function if provided', () => {
399
- let merger = (a, b) => [a, b];
393
+ let merger = (a: any, b: any) => [a, b];
400
394
  assert.deepEqual(
401
395
  mergeMaps({'*.js': 'base-js'}, {'*.js': 'ext-js'}, merger),
402
396
  {'*.js': ['base-js', 'ext-js']},
@@ -512,7 +506,6 @@ describe('AtlaspackConfigRequest', () => {
512
506
  validators: {},
513
507
  };
514
508
 
515
- // $FlowFixMe
516
509
  assert.deepEqual(mergeConfigs(base, ext), merged);
517
510
  });
518
511
  });
@@ -608,7 +601,6 @@ describe('AtlaspackConfigRequest', () => {
608
601
  column: 14,
609
602
  };
610
603
 
611
- // $FlowFixMe[prop-missing]
612
604
  await assert.rejects(
613
605
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
614
606
  {
@@ -646,7 +638,6 @@ describe('AtlaspackConfigRequest', () => {
646
638
  );
647
639
  let code = await DEFAULT_OPTIONS.inputFS.readFile(configFilePath, 'utf8');
648
640
 
649
- // $FlowFixMe[prop-missing]
650
641
  await assert.rejects(
651
642
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
652
643
  {
@@ -685,7 +676,6 @@ describe('AtlaspackConfigRequest', () => {
685
676
  );
686
677
  let code = await DEFAULT_OPTIONS.inputFS.readFile(configFilePath, 'utf8');
687
678
 
688
- // $FlowFixMe[prop-missing]
689
679
  await assert.rejects(
690
680
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
691
681
  {
@@ -724,7 +714,6 @@ describe('AtlaspackConfigRequest', () => {
724
714
  );
725
715
  let code = await DEFAULT_OPTIONS.inputFS.readFile(configFilePath, 'utf8');
726
716
 
727
- // $FlowFixMe[prop-missing]
728
717
  await assert.rejects(
729
718
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
730
719
  {
@@ -763,7 +752,6 @@ describe('AtlaspackConfigRequest', () => {
763
752
  );
764
753
  let code = await DEFAULT_OPTIONS.inputFS.readFile(configFilePath, 'utf8');
765
754
 
766
- // $FlowFixMe[prop-missing]
767
755
  await assert.rejects(
768
756
  () => parseAndProcessConfig(configFilePath, code, DEFAULT_OPTIONS),
769
757
  {
@@ -813,6 +801,78 @@ describe('AtlaspackConfigRequest', () => {
813
801
  });
814
802
  });
815
803
 
804
+ describe('additionalReporters', () => {
805
+ it('should deduplicate reporters by packageName', async () => {
806
+ const configPath = path.join(
807
+ __dirname,
808
+ 'fixtures',
809
+ 'config-with-reporters',
810
+ '.parcelrc',
811
+ );
812
+
813
+ const options = {
814
+ ...DEFAULT_OPTIONS,
815
+ projectRoot: path.join(__dirname, 'fixtures', 'config-with-reporters'),
816
+ config: configPath,
817
+ additionalReporters: [
818
+ {
819
+ packageName: '@atlaspack/reporter-cli',
820
+ resolveFrom: '/custom/path',
821
+ },
822
+ {
823
+ packageName: '@atlaspack/reporter-dev-server',
824
+ resolveFrom: '/another/path',
825
+ },
826
+ ],
827
+ };
828
+
829
+ const result = await resolveAtlaspackConfig(options);
830
+ assert(result !== null && result !== undefined);
831
+
832
+ const {config} = result;
833
+
834
+ // With feature flag enabled, should have 3 reporters (with deduplication)
835
+ assert(
836
+ config.reporters && config.reporters.length === 3,
837
+ 'Should have exactly 3 reporters with deduplication',
838
+ );
839
+
840
+ const cliReporter = config.reporters?.find(
841
+ (r) => r.packageName === '@atlaspack/reporter-cli',
842
+ );
843
+ const bundleAnalyzerReporter = config.reporters?.find(
844
+ (r) => r.packageName === '@atlaspack/reporter-bundle-analyzer',
845
+ );
846
+ const devServerReporter = config.reporters?.find(
847
+ (r) => r.packageName === '@atlaspack/reporter-dev-server',
848
+ );
849
+
850
+ assert(cliReporter, 'CLI reporter should exist');
851
+ assert.equal(
852
+ cliReporter.resolveFrom,
853
+ '/custom/path',
854
+ 'CLI reporter should use additional reporter resolveFrom',
855
+ );
856
+
857
+ assert(
858
+ bundleAnalyzerReporter,
859
+ 'Bundle analyzer reporter should exist from original config',
860
+ );
861
+
862
+ assert(devServerReporter, 'Dev server reporter should exist');
863
+ assert.equal(devServerReporter.resolveFrom, '/another/path');
864
+
865
+ const cliReporters = config.reporters?.filter(
866
+ (r) => r.packageName === '@atlaspack/reporter-cli',
867
+ );
868
+ assert.equal(
869
+ cliReporters?.length,
870
+ 1,
871
+ 'Should have exactly one CLI reporter after deduplication',
872
+ );
873
+ });
874
+ });
875
+
816
876
  describe('resolve', () => {
817
877
  it('should return null if there is no .parcelrc file found', async () => {
818
878
  let resolved = await resolveAtlaspackConfig(DEFAULT_OPTIONS);