@atlaspack/core 2.16.2-canary.21 → 2.16.2-canary.211

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 (355) hide show
  1. package/CHANGELOG.md +561 -0
  2. package/dist/AssetGraph.js +591 -0
  3. package/dist/Atlaspack.js +656 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +108 -0
  6. package/dist/BundleGraph.js +1628 -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 +531 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1368 -0
  16. package/dist/SymbolPropagation.js +617 -0
  17. package/dist/TargetDescriptor.schema.js +143 -0
  18. package/dist/Transformation.js +487 -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 +292 -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 +246 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +60 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +490 -0
  63. package/dist/requests/BundleGraphRequest.js +441 -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 +65 -0
  68. package/dist/requests/PathRequest.js +349 -0
  69. package/dist/requests/TargetRequest.js +1310 -0
  70. package/dist/requests/ValidationRequest.js +49 -0
  71. package/dist/requests/WriteBundleRequest.js +254 -0
  72. package/dist/requests/WriteBundlesRequest.js +165 -0
  73. package/dist/requests/asset-graph-diff.js +126 -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 +82 -35
  84. package/lib/AtlaspackConfig.js +15 -3
  85. package/lib/AtlaspackConfig.schema.js +7 -5
  86. package/lib/BundleGraph.js +83 -30
  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 +66 -23
  94. package/lib/ReporterRunner.js +6 -9
  95. package/lib/RequestTracker.js +256 -139
  96. package/lib/SymbolPropagation.js +22 -3
  97. package/lib/TargetDescriptor.schema.js +7 -1
  98. package/lib/Transformation.js +16 -9
  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 +34 -6
  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 +41 -4
  137. package/lib/requests/AssetGraphRequestRust.js +29 -14
  138. package/lib/requests/AssetRequest.js +23 -6
  139. package/lib/requests/AtlaspackBuildRequest.js +6 -2
  140. package/lib/requests/AtlaspackConfigRequest.js +12 -11
  141. package/lib/requests/BundleGraphRequest.js +29 -18
  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 +7 -2
  146. package/lib/requests/PathRequest.js +24 -3
  147. package/lib/requests/TargetRequest.js +120 -56
  148. package/lib/requests/ValidationRequest.js +5 -1
  149. package/lib/requests/WriteBundleRequest.js +39 -11
  150. package/lib/requests/WriteBundlesRequest.js +24 -2
  151. package/lib/requests/asset-graph-diff.js +8 -3
  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 +80 -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 +58 -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 +29 -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 +26 -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} +113 -60
  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} +213 -133
  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} +149 -81
  251. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  252. package/src/{RequestTracker.js → RequestTracker.ts} +558 -336
  253. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +137 -39
  254. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +7 -1
  255. package/src/{Transformation.js → Transformation.ts} +67 -61
  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} +94 -65
  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} +83 -48
  297. package/src/requests/{AssetGraphRequestRust.js → AssetGraphRequestRust.ts} +36 -29
  298. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  299. package/src/requests/{AtlaspackBuildRequest.js → AtlaspackBuildRequest.ts} +30 -31
  300. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +58 -51
  301. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +66 -57
  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} +21 -21
  306. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  307. package/src/requests/{TargetRequest.js → TargetRequest.ts} +259 -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} +77 -34
  311. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +14 -14
  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} +3 -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} +54 -92
  340. package/test/public/Config.test.ts +104 -0
  341. package/test/requests/{AssetGraphRequestRust.test.js → AssetGraphRequestRust.test.ts} +163 -134
  342. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  343. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  344. package/test/{test-utils.js → test-utils.ts} +4 -11
  345. package/test/{utils.test.js → utils.test.ts} +1 -3
  346. package/tsconfig.json +57 -0
  347. package/tsconfig.tsbuildinfo +1 -0
  348. package/index.d.ts +0 -30
  349. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  350. package/src/atlaspack-v3/jsCallable.js +0 -18
  351. package/src/index.js +0 -13
  352. package/src/types.js +0 -600
  353. package/test/Environment.test.js +0 -119
  354. package/test/PackagerRunner.test.js +0 -27
  355. package/test/PublicEnvironment.test.js +0 -27
@@ -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
  }
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import type {
3
2
  Dependency as IDependency,
4
3
  Environment as IEnvironment,
@@ -27,6 +26,7 @@ import {
27
26
  } from '../types';
28
27
  import {fromProjectPath} from '../projectPath';
29
28
  import {fromInternalSourceLocation} from '../utils';
29
+ import {fromEnvironmentId} from '../EnvironmentManager';
30
30
 
31
31
  const SpecifierTypeNames = Object.keys(SpecifierTypeMap);
32
32
  const PriorityNames = Object.keys(Priority);
@@ -37,7 +37,7 @@ const internalDependencyToDependency: WeakMap<InternalDependency, Dependency> =
37
37
  new WeakMap();
38
38
  const _dependencyToInternalDependency: WeakMap<
39
39
  IDependency,
40
- InternalDependency,
40
+ InternalDependency
41
41
  > = new WeakMap();
42
42
  export function dependencyToInternalDependency(
43
43
  dependency: IDependency,
@@ -58,10 +58,10 @@ export function getPublicDependency(
58
58
  }
59
59
 
60
60
  export default class Dependency implements IDependency {
61
- #dep /*: InternalDependency */;
62
- #options /*: AtlaspackOptions */;
61
+ #dep: InternalDependency;
62
+ #options: AtlaspackOptions;
63
63
 
64
- constructor(dep: InternalDependency, options: AtlaspackOptions): Dependency {
64
+ constructor(dep: InternalDependency, options: AtlaspackOptions) {
65
65
  this.#dep = dep;
66
66
  this.#options = options;
67
67
  _dependencyToInternalDependency.set(this, dep);
@@ -69,7 +69,6 @@ export default class Dependency implements IDependency {
69
69
  return this;
70
70
  }
71
71
 
72
- // $FlowFixMe
73
72
  [inspect](): string {
74
73
  return `Dependency(${String(this.sourcePath)} -> ${this.specifier})`;
75
74
  }
@@ -83,10 +82,12 @@ export default class Dependency implements IDependency {
83
82
  }
84
83
 
85
84
  get specifierType(): SpecifierType {
85
+ // @ts-expect-error TS2322
86
86
  return SpecifierTypeNames[this.#dep.specifierType];
87
87
  }
88
88
 
89
89
  get priority(): DependencyPriority {
90
+ // @ts-expect-error TS2322
90
91
  return PriorityNames[this.#dep.priority];
91
92
  }
92
93
 
@@ -94,7 +95,7 @@ export default class Dependency implements IDependency {
94
95
  return this.#dep.needsStableName;
95
96
  }
96
97
 
97
- get bundleBehavior(): ?BundleBehavior {
98
+ get bundleBehavior(): BundleBehavior | null | undefined {
98
99
  let bundleBehavior = this.#dep.bundleBehavior;
99
100
  return bundleBehavior == null ? null : BundleBehaviorNames[bundleBehavior];
100
101
  }
@@ -107,15 +108,15 @@ export default class Dependency implements IDependency {
107
108
  return this.#dep.isOptional;
108
109
  }
109
110
 
110
- get loc(): ?SourceLocation {
111
+ get loc(): SourceLocation | null | undefined {
111
112
  return fromInternalSourceLocation(this.#options.projectRoot, this.#dep.loc);
112
113
  }
113
114
 
114
115
  get env(): IEnvironment {
115
- return new Environment(this.#dep.env, this.#options);
116
+ return new Environment(fromEnvironmentId(this.#dep.env), this.#options);
116
117
  }
117
118
 
118
- get packageConditions(): ?Array<string> {
119
+ get packageConditions(): Array<string> | null | undefined {
119
120
  // Merge custom conditions with conditions stored as bitflags.
120
121
  // Order is not important because exports conditions are resolved
121
122
  // in the order they are declared in the package.json.
@@ -123,6 +124,7 @@ export default class Dependency implements IDependency {
123
124
  if (this.#dep.packageConditions) {
124
125
  conditions = conditions ? [...conditions] : [];
125
126
  for (let key in ExportsCondition) {
127
+ // @ts-expect-error TS7053
126
128
  if (this.#dep.packageConditions & ExportsCondition[key]) {
127
129
  conditions.push(key);
128
130
  }
@@ -137,40 +139,41 @@ export default class Dependency implements IDependency {
137
139
  }
138
140
 
139
141
  get symbols(): IMutableDependencySymbols {
142
+ // @ts-expect-error TS2322
140
143
  return new MutableDependencySymbols(this.#options, this.#dep);
141
144
  }
142
145
 
143
- get target(): ?Target {
146
+ get target(): Target | null | undefined {
144
147
  let target = this.#dep.target;
145
148
  return target ? new Target(target, this.#options) : null;
146
149
  }
147
150
 
148
- get sourceAssetId(): ?string {
151
+ get sourceAssetId(): string | null | undefined {
149
152
  // TODO: does this need to be public?
150
153
  return this.#dep.sourceAssetId;
151
154
  }
152
155
 
153
- get sourcePath(): ?FilePath {
156
+ get sourcePath(): FilePath | null | undefined {
154
157
  // TODO: does this need to be public?
155
158
  return fromProjectPath(this.#options.projectRoot, this.#dep.sourcePath);
156
159
  }
157
160
 
158
- get sourceAssetType(): ?string {
161
+ get sourceAssetType(): string | null | undefined {
159
162
  return this.#dep.sourceAssetType;
160
163
  }
161
164
 
162
- get resolveFrom(): ?string {
165
+ get resolveFrom(): string | null | undefined {
163
166
  return fromProjectPath(
164
167
  this.#options.projectRoot,
165
168
  this.#dep.resolveFrom ?? this.#dep.sourcePath,
166
169
  );
167
170
  }
168
171
 
169
- get range(): ?string {
172
+ get range(): string | null | undefined {
170
173
  return this.#dep.range;
171
174
  }
172
175
 
173
- get pipeline(): ?string {
176
+ get pipeline(): string | null | undefined {
174
177
  return this.#dep.pipeline;
175
178
  }
176
179
  }
@@ -1,4 +1,3 @@
1
- // @flow strict-local
2
1
  import type {
3
2
  Environment as IEnvironment,
4
3
  EnvironmentContext,
@@ -10,6 +9,7 @@ import type {
10
9
  SourceLocation,
11
10
  SourceType,
12
11
  TargetSourceMapOptions,
12
+ EnvMap,
13
13
  } from '@atlaspack/types';
14
14
  import type {
15
15
  Environment as InternalEnvironment,
@@ -27,12 +27,17 @@ export const BROWSER_ENVS: Set<string> = new Set<string>([
27
27
  'web-worker',
28
28
  'service-worker',
29
29
  'worklet',
30
+ 'tesseract',
30
31
  'electron-renderer',
31
32
  ]);
32
33
  const ELECTRON_ENVS = new Set(['electron-main', 'electron-renderer']);
33
34
  const NODE_ENVS = new Set(['node', ...ELECTRON_ENVS]);
34
35
  const WORKER_ENVS = new Set(['web-worker', 'service-worker']);
35
- export const ISOLATED_ENVS: Set<string> = new Set([...WORKER_ENVS, 'worklet']);
36
+ export const ISOLATED_ENVS: Set<string> = new Set([
37
+ ...WORKER_ENVS,
38
+ 'worklet',
39
+ 'tesseract',
40
+ ]);
36
41
 
37
42
  const ALL_BROWSERS = [
38
43
  'chrome',
@@ -139,15 +144,15 @@ const supportData = {
139
144
  android: '71',
140
145
  samsung: '10.1',
141
146
  },
142
- };
147
+ } as const;
143
148
 
144
149
  const internalEnvironmentToEnvironment: WeakMap<
145
150
  InternalEnvironment,
146
- Environment,
151
+ Environment
147
152
  > = new WeakMap();
148
153
  const _environmentToInternalEnvironment: WeakMap<
149
154
  IEnvironment,
150
- InternalEnvironment,
155
+ InternalEnvironment
151
156
  > = new WeakMap();
152
157
  export function environmentToInternalEnvironment(
153
158
  environment: IEnvironment,
@@ -156,13 +161,12 @@ export function environmentToInternalEnvironment(
156
161
  }
157
162
 
158
163
  export default class Environment implements IEnvironment {
159
- #environment /*: InternalEnvironment */;
160
- #options /*: AtlaspackOptions */;
164
+ // @ts-expect-error TS2564
165
+ #environment: InternalEnvironment;
166
+ // @ts-expect-error TS2564
167
+ #options: AtlaspackOptions;
161
168
 
162
- constructor(
163
- env: InternalEnvironment,
164
- options: AtlaspackOptions,
165
- ): Environment {
169
+ constructor(env: InternalEnvironment, options: AtlaspackOptions) {
166
170
  let existing = internalEnvironmentToEnvironment.get(env);
167
171
  if (existing != null) {
168
172
  return existing;
@@ -190,7 +194,7 @@ export default class Environment implements IEnvironment {
190
194
  get includeNodeModules():
191
195
  | boolean
192
196
  | Array<PackageName>
193
- | {[PackageName]: boolean, ...} {
197
+ | Partial<Record<PackageName, boolean>> {
194
198
  return this.#environment.includeNodeModules;
195
199
  }
196
200
 
@@ -214,11 +218,11 @@ export default class Environment implements IEnvironment {
214
218
  return this.#environment.shouldScopeHoist;
215
219
  }
216
220
 
217
- get sourceMap(): ?TargetSourceMapOptions {
221
+ get sourceMap(): TargetSourceMapOptions | null | undefined {
218
222
  return this.#environment.sourceMap;
219
223
  }
220
224
 
221
- get loc(): ?SourceLocation {
225
+ get loc(): SourceLocation | null | undefined {
222
226
  return fromInternalSourceLocation(
223
227
  this.#options.projectRoot,
224
228
  this.#environment.loc,
@@ -229,7 +233,10 @@ export default class Environment implements IEnvironment {
229
233
  return this.#environment.unstableSingleFileOutput;
230
234
  }
231
235
 
232
- // $FlowFixMe[unsupported-syntax]
236
+ get customEnv(): EnvMap | null | undefined {
237
+ return this.#environment.customEnv;
238
+ }
239
+
233
240
  [inspect](): string {
234
241
  return `Env(${this.#environment.context})`;
235
242
  }
@@ -258,9 +265,13 @@ export default class Environment implements IEnvironment {
258
265
  return this.#environment.context === 'worklet';
259
266
  }
260
267
 
268
+ isTesseract(): boolean {
269
+ return this.#environment.context === 'tesseract';
270
+ }
271
+
261
272
  matchesEngines(
262
273
  minVersions: VersionMap,
263
- defaultValue?: boolean = false,
274
+ defaultValue: boolean = false,
264
275
  ): boolean {
265
276
  // Determine if the environment matches some minimum version requirements.
266
277
  // For browsers, we run a browserslist query with and without the minimum
@@ -306,7 +317,7 @@ export default class Environment implements IEnvironment {
306
317
  }
307
318
 
308
319
  function getExcludedBrowsers(minVersions: VersionMap) {
309
- let browsers = [];
320
+ let browsers: Array<string> = [];
310
321
  for (let browser of ALL_BROWSERS) {
311
322
  let version = minVersions[browser];
312
323
  if (version) {