@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,5 +1,3 @@
1
- // @flow strict-local
2
-
3
1
  import type {
4
2
  Asset as IAsset,
5
3
  Bundle as IBundle,
@@ -10,9 +8,9 @@ import type {
10
8
  ExportSymbolResolution,
11
9
  FilePath,
12
10
  GraphVisitor,
13
- Symbol,
14
11
  NamedBundle,
15
12
  SymbolResolution,
13
+ Symbol,
16
14
  Target,
17
15
  } from '@atlaspack/types';
18
16
  import type {Bundle as InternalBundle, AtlaspackOptions} from '../types';
@@ -36,7 +34,7 @@ import BundleGroup, {bundleGroupToInternalBundleGroup} from './BundleGroup';
36
34
  // to the internal bundle.
37
35
  const _bundleGraphToInternalBundleGraph: WeakMap<
38
36
  IBundleGraph<IBundle>,
39
- InternalBundleGraph,
37
+ InternalBundleGraph
40
38
  > = new WeakMap();
41
39
  export function bundleGraphToInternalBundleGraph(
42
40
  bundleGraph: IBundleGraph<IBundle>,
@@ -44,13 +42,13 @@ export function bundleGraphToInternalBundleGraph(
44
42
  return nullthrows(_bundleGraphToInternalBundleGraph.get(bundleGraph));
45
43
  }
46
44
 
47
- type BundleFactory<TBundle: IBundle> = (
48
- InternalBundle,
49
- InternalBundleGraph,
50
- AtlaspackOptions,
45
+ type BundleFactory<TBundle extends IBundle> = (
46
+ arg1: InternalBundle,
47
+ arg2: InternalBundleGraph,
48
+ arg3: AtlaspackOptions,
51
49
  ) => TBundle;
52
50
 
53
- export default class BundleGraph<TBundle: IBundle>
51
+ export default class BundleGraph<TBundle extends IBundle>
54
52
  implements IBundleGraph<TBundle>
55
53
  {
56
54
  #graph: InternalBundleGraph;
@@ -65,7 +63,6 @@ export default class BundleGraph<TBundle: IBundle>
65
63
  this.#graph = graph;
66
64
  this.#options = options;
67
65
  this.#createBundle = createBundle;
68
- // $FlowFixMe
69
66
  _bundleGraphToInternalBundleGraph.set(this, graph);
70
67
  }
71
68
 
@@ -81,7 +78,10 @@ export default class BundleGraph<TBundle: IBundle>
81
78
  return this.#graph.isDependencySkipped(dependencyToInternalDependency(dep));
82
79
  }
83
80
 
84
- getResolvedAsset(dep: IDependency, bundle: ?IBundle): ?IAsset {
81
+ getResolvedAsset(
82
+ dep: IDependency,
83
+ bundle?: IBundle | null,
84
+ ): IAsset | null | undefined {
85
85
  let resolution = this.#graph.getResolvedAsset(
86
86
  dependencyToInternalDependency(dep),
87
87
  bundle && bundleToInternalBundle(bundle),
@@ -97,7 +97,7 @@ export default class BundleGraph<TBundle: IBundle>
97
97
  .map((dep) => getPublicDependency(dep, this.#options));
98
98
  }
99
99
 
100
- getAssetWithDependency(dep: IDependency): ?IAsset {
100
+ getAssetWithDependency(dep: IDependency): IAsset | null | undefined {
101
101
  let asset = this.#graph.getAssetWithDependency(
102
102
  dependencyToInternalDependency(dep),
103
103
  );
@@ -114,7 +114,10 @@ export default class BundleGraph<TBundle: IBundle>
114
114
 
115
115
  getReferencedBundles(
116
116
  bundle: IBundle,
117
- opts?: {|recursive?: boolean, includeInline?: boolean|},
117
+ opts?: {
118
+ recursive?: boolean;
119
+ includeInline?: boolean;
120
+ },
118
121
  ): Array<TBundle> {
119
122
  return this.#graph
120
123
  .getReferencedBundles(bundleToInternalBundle(bundle), opts)
@@ -129,11 +132,18 @@ export default class BundleGraph<TBundle: IBundle>
129
132
 
130
133
  resolveAsyncDependency(
131
134
  dependency: IDependency,
132
- bundle: ?IBundle,
133
- ): ?(
134
- | {|type: 'bundle_group', value: IBundleGroup|}
135
- | {|type: 'asset', value: IAsset|}
136
- ) {
135
+ bundle?: IBundle | null,
136
+ ):
137
+ | {
138
+ type: 'bundle_group';
139
+ value: IBundleGroup;
140
+ }
141
+ | {
142
+ type: 'asset';
143
+ value: IAsset;
144
+ }
145
+ | null
146
+ | undefined {
137
147
  let resolved = this.#graph.resolveAsyncDependency(
138
148
  dependencyToInternalDependency(dependency),
139
149
  bundle && bundleToInternalBundle(bundle),
@@ -154,7 +164,10 @@ export default class BundleGraph<TBundle: IBundle>
154
164
  };
155
165
  }
156
166
 
157
- getReferencedBundle(dependency: IDependency, bundle: IBundle): ?TBundle {
167
+ getReferencedBundle(
168
+ dependency: IDependency,
169
+ bundle: IBundle,
170
+ ): TBundle | null | undefined {
158
171
  let result = this.#graph.getReferencedBundle(
159
172
  dependencyToInternalDependency(dependency),
160
173
  bundleToInternalBundle(bundle),
@@ -194,7 +207,9 @@ export default class BundleGraph<TBundle: IBundle>
194
207
 
195
208
  getBundlesInBundleGroup(
196
209
  bundleGroup: IBundleGroup,
197
- opts?: {|includeInline: boolean|},
210
+ opts?: {
211
+ includeInline: boolean;
212
+ },
198
213
  ): Array<TBundle> {
199
214
  return this.#graph
200
215
  .getBundlesInBundleGroup(
@@ -204,7 +219,7 @@ export default class BundleGraph<TBundle: IBundle>
204
219
  .map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
205
220
  }
206
221
 
207
- getBundles(opts?: {|includeInline: boolean|}): Array<TBundle> {
222
+ getBundles(opts?: {includeInline: boolean}): Array<TBundle> {
208
223
  return this.#graph
209
224
  .getBundles(opts)
210
225
  .map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
@@ -231,7 +246,7 @@ export default class BundleGraph<TBundle: IBundle>
231
246
  getSymbolResolution(
232
247
  asset: IAsset,
233
248
  symbol: Symbol,
234
- boundary: ?IBundle,
249
+ boundary?: IBundle | null,
235
250
  ): SymbolResolution {
236
251
  let res = this.#graph.getSymbolResolution(
237
252
  assetToAssetValue(asset),
@@ -248,7 +263,7 @@ export default class BundleGraph<TBundle: IBundle>
248
263
 
249
264
  getExportedSymbols(
250
265
  asset: IAsset,
251
- boundary: ?IBundle,
266
+ boundary?: IBundle | null,
252
267
  ): Array<ExportSymbolResolution> {
253
268
  let res = this.#graph.getExportedSymbols(
254
269
  assetToAssetValue(asset),
@@ -265,10 +280,13 @@ export default class BundleGraph<TBundle: IBundle>
265
280
 
266
281
  traverse<TContext>(
267
282
  visit: GraphVisitor<BundleGraphTraversable, TContext>,
268
- start?: ?IAsset,
269
- opts?: ?{|skipUnusedDependencies?: boolean|},
270
- ): ?TContext {
283
+ start?: IAsset | null,
284
+ opts?: {
285
+ skipUnusedDependencies?: boolean;
286
+ } | null,
287
+ ): TContext | null | undefined {
271
288
  return this.#graph.traverse(
289
+ // @ts-expect-error TS2345
272
290
  mapVisitor((node, actions) => {
273
291
  // Skipping unused dependencies here is faster than doing an isDependencySkipped check inside the visitor
274
292
  // because the node needs to be re-looked up by id from the hashmap.
@@ -293,8 +311,8 @@ export default class BundleGraph<TBundle: IBundle>
293
311
 
294
312
  traverseBundles<TContext>(
295
313
  visit: GraphVisitor<TBundle, TContext>,
296
- startBundle: ?IBundle,
297
- ): ?TContext {
314
+ startBundle?: IBundle | null,
315
+ ): TContext | null | undefined {
298
316
  return this.#graph.traverseBundles(
299
317
  mapVisitor(
300
318
  (bundle) => this.#createBundle(bundle, this.#graph, this.#options),
@@ -316,7 +334,9 @@ export default class BundleGraph<TBundle: IBundle>
316
334
  .map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
317
335
  }
318
336
 
319
- getUsedSymbols(v: IAsset | IDependency): ?$ReadOnlySet<Symbol> {
337
+ getUsedSymbols(
338
+ v: IAsset | IDependency,
339
+ ): ReadonlySet<Symbol> | null | undefined {
320
340
  if (v instanceof Asset) {
321
341
  return this.#graph.getUsedSymbolsAsset(assetToAssetValue(v));
322
342
  } else {
@@ -340,16 +360,16 @@ export default class BundleGraph<TBundle: IBundle>
340
360
  getConditionsForDependencies(
341
361
  deps: Array<IDependency>,
342
362
  bundle: NamedBundle,
343
- ): Set<{|
344
- publicId: string,
345
- key: string,
346
- ifTrueDependency: IDependency,
347
- ifFalseDependency: IDependency,
348
- ifTrueBundles: Array<TBundle>,
349
- ifFalseBundles: Array<TBundle>,
350
- ifTrueAssetId: string,
351
- ifFalseAssetId: string,
352
- |}> {
363
+ ): Set<{
364
+ publicId: string;
365
+ key: string;
366
+ ifTrueDependency: IDependency;
367
+ ifFalseDependency: IDependency;
368
+ ifTrueBundles: Array<TBundle>;
369
+ ifFalseBundles: Array<TBundle>;
370
+ ifTrueAssetId: string;
371
+ ifFalseAssetId: string;
372
+ }> {
353
373
  const conditions = new Set();
354
374
  const depIds = deps.map((dep) => dep.id);
355
375
  for (const condition of this.#graph._conditions.values()) {
@@ -437,6 +457,7 @@ export default class BundleGraph<TBundle: IBundle>
437
457
  }
438
458
  }
439
459
 
460
+ // @ts-expect-error TS2322
440
461
  return conditions;
441
462
  }
442
463
 
@@ -447,12 +468,12 @@ export default class BundleGraph<TBundle: IBundle>
447
468
  string,
448
469
  Map<
449
470
  string,
450
- {|
451
- bundle: TBundle,
452
- ifTrueBundles: Array<TBundle>,
453
- ifFalseBundles: Array<TBundle>,
454
- |},
455
- >,
471
+ {
472
+ bundle: TBundle;
473
+ ifTrueBundles: Array<TBundle>;
474
+ ifFalseBundles: Array<TBundle>;
475
+ }
476
+ >
456
477
  > {
457
478
  let bundleConditions = new Map();
458
479
 
@@ -462,15 +483,15 @@ export default class BundleGraph<TBundle: IBundle>
462
483
  nullthrows(this.getAssetById(asset.id)),
463
484
  );
464
485
  let bundles = new Set<TBundle>();
465
- let ifTrueBundles = [];
466
- let ifFalseBundles = [];
486
+ let ifTrueBundles: Array<TBundle> = [];
487
+ let ifFalseBundles: Array<TBundle> = [];
467
488
  for (const asset of assets) {
468
489
  const bundlesWithAsset = this.getBundlesWithAsset(asset);
469
490
  for (const bundle of bundlesWithAsset) {
470
491
  bundles.add(bundle);
471
492
  }
472
493
  const assetDeps = this.getDependencies(asset);
473
- const depToBundles = (dep) => {
494
+ const depToBundles = (dep: Dependency) => {
474
495
  const publicDep = nullthrows(
475
496
  assetDeps.find((assetDep) => dep.id === assetDep.id),
476
497
  );
@@ -482,17 +503,27 @@ export default class BundleGraph<TBundle: IBundle>
482
503
  invariant(resolved.type === 'bundle_group');
483
504
  return this.getBundlesInBundleGroup(resolved.value);
484
505
  };
506
+ // @ts-expect-error TS2345
485
507
  ifTrueBundles.push(...depToBundles(cond.ifTrueDependency));
508
+ // @ts-expect-error TS2345
486
509
  ifFalseBundles.push(...depToBundles(cond.ifFalseDependency));
487
510
  }
488
511
 
489
512
  for (let bundle of bundles) {
490
513
  const conditions = bundleConditions.get(bundle.id) ?? new Map();
491
514
 
515
+ const currentCondition = conditions.get(cond.key);
516
+
492
517
  conditions.set(cond.key, {
493
518
  bundle,
494
- ifTrueBundles,
495
- ifFalseBundles,
519
+ ifTrueBundles: [
520
+ ...(currentCondition?.ifTrueBundles ?? []),
521
+ ...ifTrueBundles,
522
+ ],
523
+ ifFalseBundles: [
524
+ ...(currentCondition?.ifFalseBundles ?? []),
525
+ ...ifFalseBundles,
526
+ ],
496
527
  });
497
528
 
498
529
  bundleConditions.set(bundle.id, conditions);
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import type {
3
2
  BundleGroup as IBundleGroup,
4
3
  Target as ITarget,
@@ -13,11 +12,11 @@ import Target from './Target';
13
12
 
14
13
  const internalBundleGroupToBundleGroup: WeakMap<
15
14
  InternalBundleGroup,
16
- BundleGroup,
15
+ BundleGroup
17
16
  > = new WeakMap();
18
17
  const _bundleGroupToInternalBundleGroup: WeakMap<
19
18
  IBundleGroup,
20
- InternalBundleGroup,
19
+ InternalBundleGroup
21
20
  > = new WeakMap();
22
21
  export function bundleGroupToInternalBundleGroup(
23
22
  target: IBundleGroup,
@@ -28,13 +27,12 @@ export function bundleGroupToInternalBundleGroup(
28
27
  const inspect = Symbol.for('nodejs.util.inspect.custom');
29
28
 
30
29
  export default class BundleGroup implements IBundleGroup {
31
- #bundleGroup /*: InternalBundleGroup */;
32
- #options /*: AtlaspackOptions */;
30
+ // @ts-expect-error TS2564
31
+ #bundleGroup: InternalBundleGroup;
32
+ // @ts-expect-error TS2564
33
+ #options: AtlaspackOptions;
33
34
 
34
- constructor(
35
- bundleGroup: InternalBundleGroup,
36
- options: AtlaspackOptions,
37
- ): BundleGroup {
35
+ constructor(bundleGroup: InternalBundleGroup, options: AtlaspackOptions) {
38
36
  let existing = internalBundleGroupToBundleGroup.get(bundleGroup);
39
37
  if (existing != null) {
40
38
  return existing;
@@ -55,7 +53,6 @@ export default class BundleGroup implements IBundleGroup {
55
53
  return this.#bundleGroup.entryAssetId;
56
54
  }
57
55
 
58
- // $FlowFixMe
59
56
  [inspect]() {
60
57
  return `BundleGroup(${this.entryAssetId})`;
61
58
  }
@@ -1,4 +1,3 @@
1
- // @flow strict-local
2
1
  import type {
3
2
  Config as IConfig,
4
3
  ConfigResult,
@@ -20,19 +19,98 @@ import {
20
19
  } from '@atlaspack/utils';
21
20
  import Environment from './Environment';
22
21
  import {fromProjectPath, toProjectPath} from '../projectPath';
22
+ import {fromEnvironmentId} from '../EnvironmentManager';
23
23
 
24
24
  const internalConfigToConfig: DefaultWeakMap<
25
25
  AtlaspackOptions,
26
- WeakMap<Config, PublicConfig>,
26
+ WeakMap<Config, PublicConfig>
27
27
  > = new DefaultWeakMap(() => new WeakMap());
28
28
 
29
- export default class PublicConfig implements IConfig {
30
- #config /*: Config */;
31
- #pkg /*: ?PackageJSON */;
32
- #pkgFilePath /*: ?FilePath */;
33
- #options /*: AtlaspackOptions */;
29
+ /**
30
+ * Implements read tracking over an object.
31
+ *
32
+ * Calling this function with a non-trivial object like a class instance will fail to work.
33
+ *
34
+ * We track reads to fields that resolve to:
35
+ *
36
+ * - primitive values
37
+ * - arrays
38
+ *
39
+ * That is, reading a nested field `a.b.c` will make a single call to `onRead` with the path
40
+ * `['a', 'b', 'c']`.
41
+ *
42
+ * In case the value is null or an array, we will track the read as well.
43
+ *
44
+ * Iterating over `Object.keys(obj.field)` will register a read for the `['field']` path.
45
+ * Other reads work normally.
46
+ *
47
+ * @example
48
+ *
49
+ * const usedPaths = new Set();
50
+ * const onRead = (path) => {
51
+ * usedPaths.add(path);
52
+ * };
53
+ *
54
+ * const config = makeConfigProxy(onRead, {a: {b: {c: 'd'}}})
55
+ * console.log(config.a.b.c);
56
+ * console.log(Array.from(usedPaths));
57
+ * // We get a single read for the path
58
+ * // ['a', 'b', 'c']
59
+ *
60
+ */
61
+ export function makeConfigProxy<T>(
62
+ onRead: (path: string[]) => void,
63
+ config: T,
64
+ ): T {
65
+ const reportedPaths = new Set();
66
+ const reportPath = (path: Array<string>) => {
67
+ if (reportedPaths.has(path)) {
68
+ return;
69
+ }
70
+ reportedPaths.add(path);
71
+ onRead(path);
72
+ };
73
+
74
+ const makeProxy = (target: T, path: Array<string>) => {
75
+ // @ts-expect-error TS2345
76
+ return new Proxy(target, {
77
+ ownKeys(target: T) {
78
+ reportPath(path);
79
+
80
+ return Object.getOwnPropertyNames(target);
81
+ },
82
+ get(target: T, prop: string) {
83
+ // @ts-expect-error TS7053
84
+ const value = target[prop];
85
+
86
+ if (
87
+ typeof value === 'object' &&
88
+ value != null &&
89
+ !Array.isArray(value)
90
+ ) {
91
+ return makeProxy(value, [...path, prop]);
92
+ }
93
+
94
+ reportPath([...path, prop]);
95
+
96
+ return value;
97
+ },
98
+ });
99
+ };
34
100
 
35
- constructor(config: Config, options: AtlaspackOptions): PublicConfig {
101
+ // @ts-expect-error TS2322
102
+ return makeProxy(config, []);
103
+ }
104
+
105
+ export default class PublicConfig implements IConfig {
106
+ // @ts-expect-error TS2564
107
+ #config: Config;
108
+ #pkg: PackageJSON | null | undefined;
109
+ #pkgFilePath: FilePath | null | undefined;
110
+ // @ts-expect-error TS2564
111
+ #options: AtlaspackOptions;
112
+
113
+ constructor(config: Config, options: AtlaspackOptions) {
36
114
  let existing = internalConfigToConfig.get(options).get(config);
37
115
  if (existing != null) {
38
116
  return existing;
@@ -45,7 +123,7 @@ export default class PublicConfig implements IConfig {
45
123
  }
46
124
 
47
125
  get env(): Environment {
48
- return new Environment(this.#config.env, this.#options);
126
+ return new Environment(fromEnvironmentId(this.#config.env), this.#options);
49
127
  }
50
128
 
51
129
  get searchPath(): FilePath {
@@ -60,7 +138,6 @@ export default class PublicConfig implements IConfig {
60
138
  return this.#config.isSource;
61
139
  }
62
140
 
63
- // $FlowFixMe
64
141
  setResult(result: any): void {
65
142
  this.#config.result = result;
66
143
  }
@@ -75,7 +152,7 @@ export default class PublicConfig implements IConfig {
75
152
  );
76
153
  }
77
154
 
78
- invalidateOnConfigKeyChange(filePath: FilePath, configKey: string) {
155
+ invalidateOnConfigKeyChange(filePath: FilePath, configKey: string[]) {
79
156
  this.#config.invalidateOnConfigKeyChange.push({
80
157
  filePath: toProjectPath(this.#options.projectRoot, filePath),
81
158
  configKey,
@@ -86,31 +163,43 @@ export default class PublicConfig implements IConfig {
86
163
  this.#config.devDeps.push({
87
164
  ...devDep,
88
165
  resolveFrom: toProjectPath(this.#options.projectRoot, devDep.resolveFrom),
89
- additionalInvalidations: devDep.additionalInvalidations?.map((i) => ({
90
- ...i,
91
- resolveFrom: toProjectPath(this.#options.projectRoot, i.resolveFrom),
92
- })),
166
+ additionalInvalidations: devDep.additionalInvalidations?.map(
167
+ (i: {
168
+ // @ts-expect-error TS2304
169
+ range?: SemverRange | null | undefined;
170
+ resolveFrom: FilePath;
171
+ // @ts-expect-error TS2304
172
+ specifier: DependencySpecifier;
173
+ }) => ({
174
+ ...i,
175
+ resolveFrom: toProjectPath(this.#options.projectRoot, i.resolveFrom),
176
+ }),
177
+ ),
93
178
  });
94
179
  }
95
180
 
96
181
  invalidateOnFileCreate(invalidation: FileCreateInvalidation) {
182
+ // @ts-expect-error TS2339
97
183
  if (invalidation.glob != null) {
98
- // $FlowFixMe
99
184
  this.#config.invalidateOnFileCreate.push(invalidation);
185
+ // @ts-expect-error TS2339
100
186
  } else if (invalidation.filePath != null) {
101
187
  this.#config.invalidateOnFileCreate.push({
102
188
  filePath: toProjectPath(
103
189
  this.#options.projectRoot,
190
+ // @ts-expect-error TS2339
104
191
  invalidation.filePath,
105
192
  ),
106
193
  });
107
194
  } else {
195
+ // @ts-expect-error TS2339
108
196
  invariant(invalidation.aboveFilePath != null);
109
197
  this.#config.invalidateOnFileCreate.push({
110
- // $FlowFixMe
198
+ // @ts-expect-error TS2339
111
199
  fileName: invalidation.fileName,
112
200
  aboveFilePath: toProjectPath(
113
201
  this.#options.projectRoot,
202
+ // @ts-expect-error TS2339
114
203
  invalidation.aboveFilePath,
115
204
  ),
116
205
  });
@@ -132,29 +221,69 @@ export default class PublicConfig implements IConfig {
132
221
  async getConfigFrom<T>(
133
222
  searchPath: FilePath,
134
223
  fileNames: Array<string>,
135
- options: ?{|
136
- packageKey?: string,
137
- parse?: boolean,
138
- exclude?: boolean,
139
- |},
140
- ): Promise<?ConfigResultWithFilePath<T>> {
224
+ options:
225
+ | {
226
+ /**
227
+ * @deprecated Use `configKey` instead.
228
+ */
229
+ packageKey?: string;
230
+ parse?: boolean;
231
+ exclude?: boolean;
232
+ }
233
+ | null
234
+ | undefined
235
+ | {
236
+ /**
237
+ * If specified, this function will return a proxy object that will track reads to
238
+ * config fields and only register invalidations for when those keys change.
239
+ */
240
+ readTracking?: boolean;
241
+ }
242
+ | null
243
+ | undefined,
244
+ ): Promise<ConfigResultWithFilePath<T> | null | undefined> {
245
+ // @ts-expect-error TS2339
141
246
  let packageKey = options?.packageKey;
142
247
  if (packageKey != null) {
143
248
  let pkg = await this.getConfigFrom(searchPath, ['package.json'], {
144
249
  exclude: true,
145
250
  });
146
251
 
252
+ // @ts-expect-error TS18046
147
253
  if (pkg && pkg.contents[packageKey]) {
148
254
  // Invalidate only when the package key changes
149
- this.invalidateOnConfigKeyChange(pkg.filePath, packageKey);
255
+ this.invalidateOnConfigKeyChange(pkg.filePath, [packageKey]);
150
256
 
151
257
  return {
258
+ // @ts-expect-error TS18046
152
259
  contents: pkg.contents[packageKey],
153
260
  filePath: pkg.filePath,
154
261
  };
155
262
  }
156
263
  }
157
264
 
265
+ // @ts-expect-error TS2339
266
+ const readTracking = options?.readTracking;
267
+ if (readTracking === true) {
268
+ for (let fileName of fileNames) {
269
+ const config = await this.getConfigFrom(searchPath, [fileName], {
270
+ exclude: true,
271
+ });
272
+
273
+ if (config != null) {
274
+ // @ts-expect-error TS2322
275
+ return Promise.resolve({
276
+ contents: makeConfigProxy((keyPath) => {
277
+ this.invalidateOnConfigKeyChange(config.filePath, keyPath);
278
+ }, config.contents),
279
+ filePath: config.filePath,
280
+ });
281
+ }
282
+ }
283
+
284
+ // fall through so that file above invalidations are registered
285
+ }
286
+
158
287
  if (fileNames.length === 0) {
159
288
  return null;
160
289
  }
@@ -167,6 +296,7 @@ export default class PublicConfig implements IConfig {
167
296
  });
168
297
  }
169
298
 
299
+ // @ts-expect-error TS2339
170
300
  let parse = options && options.parse;
171
301
  let configFilePath = await resolveConfig(
172
302
  this.#options.inputFS,
@@ -178,6 +308,7 @@ export default class PublicConfig implements IConfig {
178
308
  return null;
179
309
  }
180
310
 
311
+ // @ts-expect-error TS2339
181
312
  if (!options || !options.exclude) {
182
313
  this.invalidateOnFileChange(configFilePath);
183
314
  }
@@ -203,7 +334,6 @@ export default class PublicConfig implements IConfig {
203
334
  );
204
335
 
205
336
  if (
206
- // $FlowFixMe
207
337
  Object.prototype.toString.call(config) === '[object Module]' &&
208
338
  config.default != null
209
339
  ) {
@@ -234,21 +364,29 @@ export default class PublicConfig implements IConfig {
234
364
 
235
365
  getConfig<T>(
236
366
  filePaths: Array<FilePath>,
237
- options: ?{|
238
- packageKey?: string,
239
- parse?: boolean,
240
- exclude?: boolean,
241
- |},
242
- ): Promise<?ConfigResultWithFilePath<T>> {
367
+ options:
368
+ | {
369
+ packageKey?: string;
370
+ parse?: boolean;
371
+ exclude?: boolean;
372
+ }
373
+ | null
374
+ | undefined
375
+ | {
376
+ readTracking?: boolean;
377
+ },
378
+ ): Promise<ConfigResultWithFilePath<T> | null | undefined> {
243
379
  return this.getConfigFrom(this.searchPath, filePaths, options);
244
380
  }
245
381
 
246
- async getPackage(): Promise<?PackageJSON> {
382
+ async getPackage(): Promise<PackageJSON | null | undefined> {
247
383
  if (this.#pkg) {
248
384
  return this.#pkg;
249
385
  }
250
386
 
251
- let pkgConfig = await this.getConfig<PackageJSON>(['package.json']);
387
+ let pkgConfig = await this.getConfig<PackageJSON>(['package.json'], {
388
+ readTracking: true,
389
+ });
252
390
  if (!pkgConfig) {
253
391
  return null;
254
392
  }