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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/CHANGELOG.md +665 -0
  2. package/dist/AssetGraph.js +591 -0
  3. package/dist/Atlaspack.js +658 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +108 -0
  6. package/dist/BundleGraph.js +1635 -0
  7. package/dist/CommittedAsset.js +142 -0
  8. package/dist/Dependency.js +125 -0
  9. package/dist/Environment.js +132 -0
  10. package/dist/EnvironmentManager.js +108 -0
  11. package/dist/IdentifierRegistry.js +38 -0
  12. package/dist/InternalConfig.js +37 -0
  13. package/dist/PackagerRunner.js +545 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1360 -0
  16. package/dist/SymbolPropagation.js +620 -0
  17. package/dist/TargetDescriptor.schema.js +143 -0
  18. package/dist/Transformation.js +490 -0
  19. package/dist/UncommittedAsset.js +315 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +305 -0
  22. package/dist/assetUtils.js +168 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +70 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +57 -0
  25. package/dist/atlaspack-v3/fs.js +52 -0
  26. package/dist/atlaspack-v3/index.js +25 -0
  27. package/dist/atlaspack-v3/jsCallable.js +16 -0
  28. package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
  29. package/dist/atlaspack-v3/worker/compat/bitflags.js +94 -0
  30. package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
  31. package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
  32. package/dist/atlaspack-v3/worker/compat/index.js +25 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +76 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-logger.js +26 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-options.js +122 -0
  37. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  38. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  39. package/dist/atlaspack-v3/worker/worker.js +297 -0
  40. package/dist/constants.js +17 -0
  41. package/dist/dumpGraphToGraphViz.js +281 -0
  42. package/dist/index.js +62 -0
  43. package/dist/loadAtlaspackPlugin.js +128 -0
  44. package/dist/loadDotEnv.js +41 -0
  45. package/dist/projectPath.js +83 -0
  46. package/dist/public/Asset.js +279 -0
  47. package/dist/public/Bundle.js +224 -0
  48. package/dist/public/BundleGraph.js +359 -0
  49. package/dist/public/BundleGroup.js +53 -0
  50. package/dist/public/Config.js +286 -0
  51. package/dist/public/Dependency.js +138 -0
  52. package/dist/public/Environment.js +278 -0
  53. package/dist/public/MutableBundleGraph.js +277 -0
  54. package/dist/public/PluginOptions.js +80 -0
  55. package/dist/public/Symbols.js +248 -0
  56. package/dist/public/Target.js +69 -0
  57. package/dist/registerCoreWithSerializer.js +38 -0
  58. package/dist/requests/AssetGraphRequest.js +429 -0
  59. package/dist/requests/AssetGraphRequestRust.js +262 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +65 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +445 -0
  64. package/dist/requests/ConfigRequest.js +222 -0
  65. package/dist/requests/DevDepRequest.js +204 -0
  66. package/dist/requests/EntryRequest.js +314 -0
  67. package/dist/requests/PackageRequest.js +62 -0
  68. package/dist/requests/PathRequest.js +349 -0
  69. package/dist/requests/TargetRequest.js +1311 -0
  70. package/dist/requests/ValidationRequest.js +49 -0
  71. package/dist/requests/WriteBundleRequest.js +254 -0
  72. package/dist/requests/WriteBundlesRequest.js +184 -0
  73. package/dist/requests/asset-graph-diff.js +128 -0
  74. package/dist/requests/asset-graph-dot.js +131 -0
  75. package/dist/resolveOptions.js +268 -0
  76. package/dist/rustWorkerThreadDylibHack.js +19 -0
  77. package/dist/serializerCore.browser.js +43 -0
  78. package/dist/summarizeRequest.js +39 -0
  79. package/dist/types.js +31 -0
  80. package/dist/utils.js +172 -0
  81. package/dist/worker.js +123 -0
  82. package/lib/AssetGraph.js +111 -14
  83. package/lib/Atlaspack.js +81 -37
  84. package/lib/AtlaspackConfig.js +15 -3
  85. package/lib/AtlaspackConfig.schema.js +7 -5
  86. package/lib/BundleGraph.js +90 -32
  87. package/lib/CommittedAsset.js +6 -0
  88. package/lib/Dependency.js +8 -2
  89. package/lib/Environment.js +15 -8
  90. package/lib/EnvironmentManager.js +143 -0
  91. package/lib/IdentifierRegistry.js +1 -3
  92. package/lib/InternalConfig.js +3 -2
  93. package/lib/PackagerRunner.js +90 -27
  94. package/lib/ReporterRunner.js +6 -9
  95. package/lib/RequestTracker.js +266 -156
  96. package/lib/SymbolPropagation.js +42 -18
  97. package/lib/TargetDescriptor.schema.js +7 -1
  98. package/lib/Transformation.js +26 -10
  99. package/lib/UncommittedAsset.js +30 -9
  100. package/lib/Validation.js +18 -2
  101. package/lib/applyRuntimes.js +9 -1
  102. package/lib/assetUtils.js +7 -4
  103. package/lib/atlaspack-v3/AtlaspackV3.js +32 -7
  104. package/lib/atlaspack-v3/NapiWorkerPool.js +3 -0
  105. package/lib/atlaspack-v3/fs.js +3 -1
  106. package/lib/atlaspack-v3/index.js +28 -1
  107. package/lib/atlaspack-v3/jsCallable.js +0 -2
  108. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  109. package/lib/atlaspack-v3/worker/compat/bitflags.js +7 -6
  110. package/lib/atlaspack-v3/worker/compat/dependency.js +3 -0
  111. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  112. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +14 -9
  113. package/lib/atlaspack-v3/worker/compat/plugin-config.js +8 -10
  114. package/lib/atlaspack-v3/worker/compat/plugin-options.js +1 -0
  115. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  116. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  117. package/lib/atlaspack-v3/worker/index.js +3 -0
  118. package/lib/atlaspack-v3/worker/worker.js +43 -7
  119. package/lib/constants.js +0 -1
  120. package/lib/dumpGraphToGraphViz.js +71 -16
  121. package/lib/index.js +45 -1
  122. package/lib/loadDotEnv.js +4 -1
  123. package/lib/projectPath.js +5 -0
  124. package/lib/public/Asset.js +21 -11
  125. package/lib/public/Bundle.js +15 -16
  126. package/lib/public/BundleGraph.js +10 -4
  127. package/lib/public/BundleGroup.js +4 -5
  128. package/lib/public/Config.js +118 -17
  129. package/lib/public/Dependency.js +8 -6
  130. package/lib/public/Environment.js +12 -7
  131. package/lib/public/MutableBundleGraph.js +54 -12
  132. package/lib/public/PluginOptions.js +2 -2
  133. package/lib/public/Symbols.js +11 -11
  134. package/lib/public/Target.js +7 -6
  135. package/lib/registerCoreWithSerializer.js +5 -3
  136. package/lib/requests/AssetGraphRequest.js +42 -5
  137. package/lib/requests/AssetGraphRequestRust.js +126 -62
  138. package/lib/requests/AssetRequest.js +23 -6
  139. package/lib/requests/AtlaspackBuildRequest.js +10 -4
  140. package/lib/requests/AtlaspackConfigRequest.js +27 -16
  141. package/lib/requests/BundleGraphRequest.js +34 -19
  142. package/lib/requests/ConfigRequest.js +28 -4
  143. package/lib/requests/DevDepRequest.js +31 -5
  144. package/lib/requests/EntryRequest.js +2 -0
  145. package/lib/requests/PackageRequest.js +2 -1
  146. package/lib/requests/PathRequest.js +24 -3
  147. package/lib/requests/TargetRequest.js +122 -57
  148. package/lib/requests/ValidationRequest.js +5 -1
  149. package/lib/requests/WriteBundleRequest.js +39 -11
  150. package/lib/requests/WriteBundlesRequest.js +51 -4
  151. package/lib/requests/asset-graph-diff.js +12 -7
  152. package/lib/requests/asset-graph-dot.js +1 -7
  153. package/lib/resolveOptions.js +36 -10
  154. package/lib/rustWorkerThreadDylibHack.js +0 -1
  155. package/lib/types/AssetGraph.d.ts +80 -0
  156. package/lib/types/Atlaspack.d.ts +52 -0
  157. package/lib/types/AtlaspackConfig.d.ts +65 -0
  158. package/lib/types/AtlaspackConfig.schema.d.ts +46 -0
  159. package/lib/types/BundleGraph.d.ts +182 -0
  160. package/lib/types/CommittedAsset.d.ts +23 -0
  161. package/lib/types/Dependency.d.ts +44 -0
  162. package/lib/types/Environment.d.ts +11 -0
  163. package/lib/types/EnvironmentManager.d.ts +37 -0
  164. package/lib/types/IdentifierRegistry.d.ts +6 -0
  165. package/lib/types/InternalConfig.d.ts +24 -0
  166. package/lib/types/PackagerRunner.d.ts +85 -0
  167. package/lib/types/ReporterRunner.d.ts +25 -0
  168. package/lib/types/RequestTracker.d.ts +385 -0
  169. package/lib/types/SymbolPropagation.d.ts +11 -0
  170. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  171. package/lib/types/Transformation.d.ts +72 -0
  172. package/lib/types/UncommittedAsset.d.ts +61 -0
  173. package/lib/types/Validation.d.ts +37 -0
  174. package/lib/types/applyRuntimes.d.ts +25 -0
  175. package/lib/types/assetUtils.d.ts +42 -0
  176. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +26 -0
  177. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +12 -0
  178. package/lib/types/atlaspack-v3/fs.d.ts +12 -0
  179. package/lib/types/atlaspack-v3/index.d.ts +5 -0
  180. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  181. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  182. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +15 -0
  183. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  184. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  185. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -1
  186. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  187. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +37 -0
  188. package/lib/types/atlaspack-v3/worker/compat/plugin-logger.d.ts +9 -0
  189. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +22 -0
  190. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  191. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  192. package/lib/types/atlaspack-v3/worker/worker.d.ts +60 -0
  193. package/lib/types/constants.d.ts +13 -0
  194. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  195. package/lib/types/index.d.ts +8 -0
  196. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  197. package/lib/types/loadDotEnv.d.ts +3 -0
  198. package/lib/types/projectPath.d.ts +19 -0
  199. package/lib/types/public/Asset.d.ts +74 -0
  200. package/lib/types/public/Bundle.d.ts +45 -0
  201. package/lib/types/public/BundleGraph.d.ts +70 -0
  202. package/lib/types/public/BundleGroup.d.ts +12 -0
  203. package/lib/types/public/Config.d.ts +75 -0
  204. package/lib/types/public/Dependency.d.ts +32 -0
  205. package/lib/types/public/Environment.d.ts +34 -0
  206. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  207. package/lib/types/public/PluginOptions.d.ts +25 -0
  208. package/lib/types/public/Symbols.d.ts +81 -0
  209. package/lib/types/public/Target.d.ts +16 -0
  210. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  211. package/lib/types/requests/AssetGraphRequest.d.ts +74 -0
  212. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  213. package/lib/types/requests/AssetRequest.d.ts +16 -0
  214. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  215. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  216. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  217. package/lib/types/requests/ConfigRequest.d.ts +59 -0
  218. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  219. package/lib/types/requests/EntryRequest.d.ts +36 -0
  220. package/lib/types/requests/PackageRequest.d.ts +27 -0
  221. package/lib/types/requests/PathRequest.d.ts +48 -0
  222. package/lib/types/requests/TargetRequest.d.ts +48 -0
  223. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  224. package/lib/types/requests/WriteBundleRequest.d.ts +28 -0
  225. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  226. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  227. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  228. package/lib/types/resolveOptions.d.ts +3 -0
  229. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  230. package/lib/types/serializerCore.browser.d.ts +3 -0
  231. package/lib/types/summarizeRequest.d.ts +10 -0
  232. package/lib/types/types.d.ts +493 -0
  233. package/lib/types/utils.d.ts +23 -0
  234. package/lib/types/worker.d.ts +44 -0
  235. package/lib/types.js +8 -1
  236. package/lib/utils.js +17 -2
  237. package/lib/worker.js +29 -13
  238. package/package.json +24 -34
  239. package/src/{AssetGraph.js → AssetGraph.ts} +156 -52
  240. package/src/{Atlaspack.js → Atlaspack.ts} +114 -61
  241. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +16 -19
  242. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  243. package/src/{BundleGraph.js → BundleGraph.ts} +231 -140
  244. package/src/{CommittedAsset.js → CommittedAsset.ts} +14 -12
  245. package/src/{Dependency.js → Dependency.ts} +59 -42
  246. package/src/{Environment.js → Environment.ts} +24 -15
  247. package/src/EnvironmentManager.ts +154 -0
  248. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  249. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  250. package/src/{PackagerRunner.js → PackagerRunner.ts} +178 -86
  251. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  252. package/src/{RequestTracker.js → RequestTracker.ts} +572 -357
  253. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +165 -57
  254. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +7 -1
  255. package/src/{Transformation.js → Transformation.ts} +71 -62
  256. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +57 -36
  257. package/src/{Validation.js → Validation.ts} +32 -17
  258. package/src/{applyRuntimes.js → applyRuntimes.ts} +35 -26
  259. package/src/{assetUtils.js → assetUtils.ts} +47 -35
  260. package/src/atlaspack-v3/AtlaspackV3.ts +122 -0
  261. package/src/atlaspack-v3/{NapiWorkerPool.js → NapiWorkerPool.ts} +10 -5
  262. package/src/atlaspack-v3/{fs.js → fs.ts} +3 -4
  263. package/src/atlaspack-v3/{index.js → index.ts} +2 -4
  264. package/src/atlaspack-v3/jsCallable.ts +14 -0
  265. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  266. package/src/atlaspack-v3/worker/compat/{bitflags.js → bitflags.ts} +9 -10
  267. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +12 -12
  268. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  269. package/src/atlaspack-v3/worker/compat/index.ts +9 -0
  270. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +20 -19
  271. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +27 -26
  272. package/src/atlaspack-v3/worker/compat/{plugin-logger.js → plugin-logger.ts} +0 -2
  273. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +4 -5
  274. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  275. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  276. package/src/atlaspack-v3/worker/index.js +2 -1
  277. package/src/atlaspack-v3/worker/{worker.js → worker.ts} +102 -66
  278. package/src/{constants.js → constants.ts} +0 -3
  279. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  280. package/src/index.ts +18 -0
  281. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  282. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  283. package/src/{projectPath.js → projectPath.ts} +20 -9
  284. package/src/public/{Asset.js → Asset.ts} +40 -27
  285. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  286. package/src/public/{BundleGraph.js → BundleGraph.ts} +81 -50
  287. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  288. package/src/public/{Config.js → Config.ts} +171 -33
  289. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  290. package/src/public/{Environment.js → Environment.ts} +28 -17
  291. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  292. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  293. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  294. package/src/public/{Target.js → Target.ts} +10 -8
  295. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  296. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +84 -49
  297. package/src/requests/AssetGraphRequestRust.ts +352 -0
  298. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  299. package/src/requests/{AtlaspackBuildRequest.js → AtlaspackBuildRequest.ts} +46 -32
  300. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  301. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +71 -58
  302. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +71 -50
  303. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  304. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  305. package/src/requests/{PackageRequest.js → PackageRequest.ts} +20 -22
  306. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  307. package/src/requests/{TargetRequest.js → TargetRequest.ts} +260 -179
  308. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  309. package/src/requests/{WriteBundleRequest.js → WriteBundleRequest.ts} +77 -49
  310. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +109 -37
  311. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  312. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  313. package/src/{resolveOptions.js → resolveOptions.ts} +56 -24
  314. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  315. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  316. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  317. package/src/types.ts +647 -0
  318. package/src/{utils.js → utils.ts} +52 -21
  319. package/src/{worker.js → worker.ts} +49 -41
  320. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +37 -8
  321. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  322. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  323. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +75 -15
  324. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  325. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  326. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  327. package/test/Environment.test.ts +153 -0
  328. package/test/EnvironmentManager.test.ts +188 -0
  329. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  330. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  331. package/test/PackagerRunner.test.ts +0 -0
  332. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  333. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  334. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  335. package/test/PublicEnvironment.test.ts +49 -0
  336. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  337. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +314 -59
  338. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  339. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +66 -92
  340. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  341. package/test/fixtures/custom-targets/package.json +6 -0
  342. package/test/public/Config.test.ts +104 -0
  343. package/test/requests/{AssetGraphRequestRust.test.js → AssetGraphRequestRust.test.ts} +164 -134
  344. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  345. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  346. package/test/{test-utils.js → test-utils.ts} +4 -11
  347. package/test/{utils.test.js → utils.test.ts} +1 -3
  348. package/tsconfig.json +57 -0
  349. package/tsconfig.tsbuildinfo +1 -0
  350. package/index.d.ts +0 -30
  351. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  352. package/src/atlaspack-v3/jsCallable.js +0 -18
  353. package/src/index.js +0 -13
  354. package/src/requests/AssetGraphRequestRust.js +0 -263
  355. package/src/types.js +0 -600
  356. package/test/Environment.test.js +0 -119
  357. package/test/PackagerRunner.test.js +0 -27
  358. package/test/PublicEnvironment.test.js +0 -27
@@ -1,23 +1,53 @@
1
- // @flow strict-local
2
-
3
1
  import assert from 'assert';
4
2
  import nullthrows from 'nullthrows';
5
3
  import RequestTracker, {
6
- type RunAPI,
4
+ RunAPI,
7
5
  cleanUpOrphans,
6
+ runInvalidation,
7
+ getBiggestFSEventsInvalidations,
8
+ invalidateRequestGraphFSEvents,
9
+ requestTypes,
8
10
  } from '../src/RequestTracker';
9
11
  import {Graph} from '@atlaspack/graph';
12
+ import {LMDBLiteCache} from '@atlaspack/cache';
10
13
  import WorkerFarm from '@atlaspack/workers';
11
14
  import {DEFAULT_OPTIONS} from './test-utils';
12
15
  import {FILE_CREATE, FILE_UPDATE, INITIAL_BUILD} from '../src/constants';
13
16
  import {makeDeferredWithPromise} from '@atlaspack/utils';
14
17
  import {toProjectPath} from '../src/projectPath';
15
18
  import {DEFAULT_FEATURE_FLAGS, setFeatureFlags} from '../../feature-flags/src';
16
-
17
- const options = DEFAULT_OPTIONS;
18
- const farm = new WorkerFarm({workerPath: require.resolve('../src/worker')});
19
+ import sinon from 'sinon';
20
+ import type {AtlaspackOptions} from '../src/types';
21
+ import createAtlaspackBuildRequest from '../src/requests/AtlaspackBuildRequest';
22
+ import Atlaspack from '../src/Atlaspack';
23
+ import {MemoryFS, NodeFS} from '@atlaspack/fs';
24
+ import {OverlayFS} from '../../fs/src/OverlayFS';
25
+ import path from 'path';
26
+ import createAssetGraphRequest from '../src/requests/AssetGraphRequest';
27
+
28
+ const options = {
29
+ ...DEFAULT_OPTIONS,
30
+ cache: new LMDBLiteCache(DEFAULT_OPTIONS.cacheDir),
31
+ } as const;
19
32
 
20
33
  describe('RequestTracker', () => {
34
+ let farm: any;
35
+ before(() => {
36
+ farm = new WorkerFarm({workerPath: require.resolve('../src/worker')});
37
+ });
38
+
39
+ beforeEach(async () => {
40
+ await options.cache.ensure();
41
+
42
+ for (const key of options.cache.keys()) {
43
+ await options.cache.getNativeRef().delete(key);
44
+ }
45
+ });
46
+
47
+ after(() => {
48
+ farm.end();
49
+ });
50
+
21
51
  it('should not run requests that have not been invalidated', async () => {
22
52
  let tracker = new RequestTracker({farm, options});
23
53
  await tracker.runRequest({
@@ -67,7 +97,7 @@ describe('RequestTracker', () => {
67
97
  await tracker.runRequest({
68
98
  id: 'abc',
69
99
  type: 7,
70
- run: async ({api}) => {
100
+ run: async ({api}: any) => {
71
101
  await api.runRequest({
72
102
  id: 'xyz',
73
103
  type: 7,
@@ -84,7 +114,7 @@ describe('RequestTracker', () => {
84
114
  assert(
85
115
  tracker
86
116
  .getInvalidRequests()
87
- .map((req) => req.id)
117
+ .map((req: any) => req.id)
88
118
  .includes('abc'),
89
119
  );
90
120
  });
@@ -107,7 +137,7 @@ describe('RequestTracker', () => {
107
137
  assert(
108
138
  tracker
109
139
  .getInvalidRequests()
110
- .map((req) => req.id)
140
+ .map((req: any) => req.id)
111
141
  .includes('abc'),
112
142
  );
113
143
  });
@@ -117,7 +147,7 @@ describe('RequestTracker', () => {
117
147
  await tracker.runRequest({
118
148
  id: 'abc',
119
149
  type: 7,
120
- run: async ({api}) => {
150
+ run: async ({api}: any) => {
121
151
  await api.runRequest({
122
152
  id: 'xyz',
123
153
  type: 7,
@@ -132,7 +162,7 @@ describe('RequestTracker', () => {
132
162
  await tracker.runRequest({
133
163
  id: 'abc',
134
164
  type: 7,
135
- run: async ({api}) => {
165
+ run: async ({api}: any) => {
136
166
  await api.runRequest({
137
167
  id: '123',
138
168
  type: 7,
@@ -150,8 +180,7 @@ describe('RequestTracker', () => {
150
180
  await tracker.runRequest({
151
181
  id: 'abc',
152
182
  type: 7,
153
- // $FlowFixMe string isn't a valid result
154
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
183
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
155
184
  let result = await Promise.resolve('hello');
156
185
  api.storeResult(result);
157
186
  },
@@ -166,39 +195,13 @@ describe('RequestTracker', () => {
166
195
  assert(result === 'hello');
167
196
  });
168
197
 
169
- it('should reject all in progress requests when the abort controller aborts', async () => {
170
- let tracker = new RequestTracker({farm, options});
171
- let p = tracker
172
- .runRequest({
173
- id: 'abc',
174
- type: 7,
175
- run: async () => {
176
- await Promise.resolve('hello');
177
- },
178
- input: null,
179
- })
180
- .then(null, () => {
181
- /* do nothing */
182
- });
183
- // $FlowFixMe
184
- tracker.setSignal({aborted: true});
185
- await p;
186
- assert(
187
- tracker
188
- .getInvalidRequests()
189
- .map((req) => req.id)
190
- .includes('abc'),
191
- );
192
- });
193
-
194
198
  it('should write cache to disk and store index', async () => {
195
199
  let tracker = new RequestTracker({farm, options});
196
200
 
197
201
  await tracker.runRequest({
198
202
  id: 'abc',
199
203
  type: 7,
200
- // $FlowFixMe string isn't a valid result
201
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
204
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
202
205
  let result = await Promise.resolve();
203
206
  api.storeResult(result);
204
207
  },
@@ -230,8 +233,7 @@ describe('RequestTracker', () => {
230
233
  let requestA = tracker.runRequest({
231
234
  id: 'abc',
232
235
  type: 7,
233
- // $FlowFixMe string isn't a valid result
234
- run: async ({api}: {api: RunAPI<string>, ...}) => {
236
+ run: async ({api}: {api: RunAPI<string>}) => {
235
237
  await lockA.promise;
236
238
  api.storeResult('a');
237
239
  return 'a';
@@ -243,8 +245,7 @@ describe('RequestTracker', () => {
243
245
  let requestB = tracker.runRequest({
244
246
  id: 'abc',
245
247
  type: 7,
246
- // $FlowFixMe string isn't a valid result
247
- run: async ({api}: {api: RunAPI<string>, ...}) => {
248
+ run: async ({api}: {api: RunAPI<string>}) => {
248
249
  calledB = true;
249
250
  await lockB.promise;
250
251
  api.storeResult('b');
@@ -293,8 +294,7 @@ describe('RequestTracker', () => {
293
294
  let requestB = tracker.runRequest({
294
295
  id: 'abc',
295
296
  type: 7,
296
- // $FlowFixMe string isn't a valid result
297
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
297
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
298
298
  await lockB.promise;
299
299
  api.storeResult('b');
300
300
  },
@@ -396,8 +396,7 @@ describe('RequestTracker', () => {
396
396
  await tracker.runRequest({
397
397
  id: contentKey,
398
398
  type: 7,
399
- // $FlowFixMe string isn't a valid result
400
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
399
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
401
400
  let result = await Promise.resolve('a');
402
401
  api.storeResult(result);
403
402
  },
@@ -410,8 +409,7 @@ describe('RequestTracker', () => {
410
409
  {
411
410
  id: contentKey,
412
411
  type: 7,
413
- // $FlowFixMe string isn't a valid result
414
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
412
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
415
413
  let result = await Promise.resolve('b');
416
414
  api.storeResult(result);
417
415
  },
@@ -453,7 +451,7 @@ describe('RequestTracker', () => {
453
451
  });
454
452
 
455
453
  describe('respondToFSEvents', () => {
456
- [true, false].forEach((value) => {
454
+ [true, false].forEach((value: any) => {
457
455
  beforeEach(() => {
458
456
  setFeatureFlags({
459
457
  ...DEFAULT_FEATURE_FLAGS,
@@ -473,8 +471,7 @@ describe('RequestTracker', () => {
473
471
  await tracker.runRequest({
474
472
  id: 'abc',
475
473
  type: 7,
476
- // $FlowFixMe string isn't a valid result
477
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
474
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
478
475
  api.invalidateOnFileUpdate(toProjectPath('', 'my-file'));
479
476
  let result = await Promise.resolve('hello');
480
477
  api.storeResult(result);
@@ -482,7 +479,7 @@ describe('RequestTracker', () => {
482
479
  input: null,
483
480
  });
484
481
  const requestId = tracker.graph.getNodeIdByContentKey('abc');
485
- const invalidated = await tracker.respondToFSEvents(
482
+ const {didInvalidate: invalidated} = await tracker.respondToFSEvents(
486
483
  [
487
484
  {
488
485
  type: 'update',
@@ -506,8 +503,7 @@ describe('RequestTracker', () => {
506
503
  await tracker.runRequest({
507
504
  id: 'abc',
508
505
  type: 7,
509
- // $FlowFixMe string isn't a valid result
510
- run: async ({api}: {api: RunAPI<string | void>, ...}) => {
506
+ run: async ({api}: {api: RunAPI<string | undefined>}) => {
511
507
  api.invalidateOnFileCreate({
512
508
  fileName: 'package.json',
513
509
  aboveFilePath: toProjectPath(
@@ -521,7 +517,7 @@ describe('RequestTracker', () => {
521
517
  input: null,
522
518
  });
523
519
  const requestId = tracker.graph.getNodeIdByContentKey('abc');
524
- const invalidated = await tracker.respondToFSEvents(
520
+ const {didInvalidate: invalidated} = await tracker.respondToFSEvents(
525
521
  [
526
522
  {
527
523
  type: 'create',
@@ -542,6 +538,171 @@ describe('RequestTracker', () => {
542
538
  });
543
539
  });
544
540
  });
541
+
542
+ describe('incremental bundling', () => {
543
+ async function runIncrementalBundlingScenario(
544
+ incrementalBundlingVersioning: boolean,
545
+ ) {
546
+ const fs = new OverlayFS(new MemoryFS(farm), new NodeFS());
547
+ const appRoot = __dirname;
548
+ await fs.mkdirp(path.join(appRoot, 'app'));
549
+ await fs.writeFile(path.join(appRoot, 'app', 'package.json'), '{}');
550
+ await fs.writeFile(path.join(appRoot, 'app', '.git'), '');
551
+ await fs.writeFile(
552
+ path.join(appRoot, 'app', '.parcelrc'),
553
+ '{"extends":"@atlaspack/config-default"}',
554
+ );
555
+ await fs.writeFile(
556
+ path.join(appRoot, 'app', 'target.js'),
557
+ 'console.log("hello")',
558
+ );
559
+
560
+ const atlaspack = new Atlaspack({
561
+ featureFlags: {
562
+ incrementalBundlingVersioning,
563
+ },
564
+ workerFarm: farm,
565
+ entries: [path.join(appRoot, 'app', 'target.js')],
566
+ cache: new LMDBLiteCache(DEFAULT_OPTIONS.cacheDir),
567
+ inputFS: fs,
568
+ outputFS: fs,
569
+ });
570
+ await atlaspack._init();
571
+ const options = atlaspack._getResolvedAtlaspackOptions();
572
+ const tracker = new RequestTracker({farm, options});
573
+ let {ref: optionsRef} = await farm.createSharedReference(options, false);
574
+
575
+ const getAssetRequests = () =>
576
+ runRequestSpy
577
+ .getCalls()
578
+ .map((call: any) => call.args[0])
579
+ .filter(
580
+ (request: any) => request.type === requestTypes.asset_request,
581
+ );
582
+
583
+ // Running the build once builds one asset
584
+ const runRequestSpy = sinon.spy(tracker, 'runRequest');
585
+ await tracker.runRequest(
586
+ createAtlaspackBuildRequest({
587
+ optionsRef,
588
+ requestedAssetIds: new Set(),
589
+ }),
590
+ );
591
+ assert.equal(getAssetRequests().length, 1);
592
+ runRequestSpy.resetHistory();
593
+
594
+ // Running the build again with no invalidations does not build any assets
595
+ await tracker.runRequest(
596
+ createAtlaspackBuildRequest({
597
+ optionsRef,
598
+ requestedAssetIds: new Set(),
599
+ }),
600
+ );
601
+ assert.equal(getAssetRequests().length, 0);
602
+ runRequestSpy.resetHistory();
603
+
604
+ // Running the build again with a file change builds the asset again
605
+ tracker.respondToFSEvents(
606
+ [
607
+ {
608
+ type: 'update',
609
+ path: path.join(appRoot, 'app', 'target.js'),
610
+ },
611
+ ],
612
+ Number.MAX_VALUE,
613
+ );
614
+ await tracker.runRequest(
615
+ createAtlaspackBuildRequest({
616
+ optionsRef,
617
+ requestedAssetIds: new Set(),
618
+ }),
619
+ );
620
+ assert.equal(getAssetRequests().length, 1);
621
+ runRequestSpy.resetHistory();
622
+
623
+ // Run the asset graph request, but not bundling
624
+ await fs.writeFile(
625
+ path.join(appRoot, 'app', 'target.js'),
626
+ 'require("./dep.js")',
627
+ );
628
+ await fs.writeFile(
629
+ path.join(appRoot, 'app', 'dep.js'),
630
+ 'console.log("dep")',
631
+ );
632
+ tracker.respondToFSEvents(
633
+ [
634
+ {
635
+ type: 'update',
636
+ path: path.join(appRoot, 'app', 'target.js'),
637
+ },
638
+ ],
639
+ Number.MAX_VALUE,
640
+ );
641
+ const assetGraphRequestResult = await tracker.runRequest(
642
+ createAssetGraphRequest({
643
+ name: 'Main',
644
+ entries: [
645
+ toProjectPath(
646
+ path.join(appRoot, 'app'),
647
+ path.join(appRoot, 'app', 'target.js'),
648
+ ),
649
+ ],
650
+ optionsRef,
651
+ shouldBuildLazily: false,
652
+ lazyIncludes: [],
653
+ lazyExcludes: [],
654
+ requestedAssetIds: new Set(),
655
+ }),
656
+ );
657
+ assert.equal(getAssetRequests().length, 2);
658
+ assert.equal(
659
+ assetGraphRequestResult.assetGraph.safeToIncrementallyBundle,
660
+ false,
661
+ );
662
+
663
+ // Now make another change
664
+ tracker.respondToFSEvents(
665
+ [
666
+ {
667
+ type: 'update',
668
+ path: path.join(appRoot, 'app', 'target.js'),
669
+ },
670
+ {
671
+ type: 'update',
672
+ path: path.join(appRoot, 'app', 'dep.js'),
673
+ },
674
+ ],
675
+ Number.MAX_VALUE,
676
+ );
677
+ // And run the build again
678
+
679
+ if (!incrementalBundlingVersioning) {
680
+ await assert.rejects(async () => {
681
+ await tracker.runRequest(
682
+ createAtlaspackBuildRequest({
683
+ optionsRef,
684
+ requestedAssetIds: new Set(),
685
+ }),
686
+ );
687
+ });
688
+ } else {
689
+ await tracker.runRequest(
690
+ createAtlaspackBuildRequest({
691
+ optionsRef,
692
+ requestedAssetIds: new Set(),
693
+ }),
694
+ );
695
+ }
696
+ }
697
+
698
+ it('throws a content key not found exception without bundling versioning', async () => {
699
+ await runIncrementalBundlingScenario(false);
700
+ });
701
+
702
+ it('works fine with bundling versioning', async () => {
703
+ await runIncrementalBundlingScenario(true);
704
+ });
705
+ });
545
706
  });
546
707
 
547
708
  describe('cleanUpOrphans', () => {
@@ -562,8 +723,8 @@ root --- node1 --- node2 ----------- orphan1 --- orphan2
562
723
 
563
724
  */
564
725
 
565
- const getNonNullNodes = (graph) =>
566
- graph.nodes.filter((node) => node != null);
726
+ const getNonNullNodes = (graph: any) =>
727
+ graph.nodes.filter((node: any) => node != null);
567
728
 
568
729
  graph.addEdge(root, node1);
569
730
  graph.addEdge(node1, node2);
@@ -584,3 +745,97 @@ root --- node1 --- node2 ----------- orphan1 --- orphan2
584
745
  assert.equal(Array.from(graph.getAllEdges()).length, 3);
585
746
  });
586
747
  });
748
+
749
+ describe('runInvalidation', () => {
750
+ it('calls an invalidationFn and tracks the number of invalidated nodes', async () => {
751
+ const mockRequestTracker = {
752
+ getInvalidNodeCount: sinon.stub(),
753
+ } as const;
754
+
755
+ mockRequestTracker.getInvalidNodeCount.returns(10000);
756
+ const result = await runInvalidation(mockRequestTracker, {
757
+ key: 'fsEvents',
758
+ fn: () => {
759
+ mockRequestTracker.getInvalidNodeCount.returns(30000);
760
+ return {
761
+ biggestInvalidations: [{path: 'my-file', count: 10000}],
762
+ };
763
+ },
764
+ });
765
+
766
+ assert.equal(result.key, 'fsEvents');
767
+ assert.equal(result.count, 20000);
768
+ assert.deepEqual(result.detail, {
769
+ biggestInvalidations: [{path: 'my-file', count: 10000}],
770
+ });
771
+ assert(result.duration > 0, 'Duration was not reported');
772
+ });
773
+ });
774
+
775
+ describe('invalidateRequestGraphFSEvents', () => {
776
+ it('calls requestGraph.respondToFSEvents and returns the biggest invalidations', async () => {
777
+ const requestGraph = {
778
+ respondToFSEvents: sinon.stub(),
779
+ } as const;
780
+
781
+ requestGraph.respondToFSEvents.returns({
782
+ invalidationsByPath: new Map([
783
+ ['file-1', 10],
784
+ ['file-2', 5000],
785
+ ['file-3', 8000],
786
+ ]),
787
+ });
788
+ const options: AtlaspackOptions = {
789
+ unstableFileInvalidations: undefined,
790
+ };
791
+
792
+ const result = await invalidateRequestGraphFSEvents(requestGraph, options, [
793
+ {
794
+ path: 'file-1',
795
+ type: 'create',
796
+ },
797
+ {
798
+ path: 'file-2',
799
+ type: 'update',
800
+ },
801
+ {
802
+ path: 'file-3',
803
+ type: 'delete',
804
+ },
805
+ ]);
806
+
807
+ assert.deepEqual(result.biggestInvalidations, [
808
+ {path: 'file-3', count: 8000},
809
+ {path: 'file-2', count: 5000},
810
+ {path: 'file-1', count: 10},
811
+ ]);
812
+ assert.equal(requestGraph.respondToFSEvents.callCount, 1);
813
+ assert.deepEqual(requestGraph.respondToFSEvents.args[0], [
814
+ [
815
+ {path: 'file-1', type: 'create'},
816
+ {path: 'file-2', type: 'update'},
817
+ {path: 'file-3', type: 'delete'},
818
+ ],
819
+ options,
820
+ 10000,
821
+ true,
822
+ ]);
823
+ });
824
+ });
825
+
826
+ describe('getBiggestFSEventsInvalidations', () => {
827
+ it('returns the paths that invalidated the most nodes', () => {
828
+ const invalidationsByPath = new Map([
829
+ ['file-1', 10],
830
+ ['file-2', 5000],
831
+ ['file-3', 8000],
832
+ ['file-4', 1000],
833
+ ['file-5', 1000],
834
+ ]);
835
+
836
+ assert.deepEqual(getBiggestFSEventsInvalidations(invalidationsByPath, 2), [
837
+ {path: 'file-3', count: 8000},
838
+ {path: 'file-2', count: 5000},
839
+ ]);
840
+ });
841
+ });