@atlaspack/core 2.16.2-canary.49 → 2.16.2-canary.491

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/CHANGELOG.md +1348 -0
  2. package/dist/AssetGraph.js +523 -0
  3. package/dist/Atlaspack.js +701 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +117 -0
  6. package/dist/BundleGraph.js +1906 -0
  7. package/dist/CommittedAsset.js +142 -0
  8. package/dist/Dependency.js +125 -0
  9. package/dist/Environment.js +132 -0
  10. package/dist/EnvironmentManager.js +108 -0
  11. package/dist/IdentifierRegistry.js +38 -0
  12. package/dist/InternalConfig.js +37 -0
  13. package/dist/PackagerRunner.js +470 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1297 -0
  16. package/dist/SymbolPropagation.js +624 -0
  17. package/dist/TargetDescriptor.schema.js +146 -0
  18. package/dist/Transformation.js +514 -0
  19. package/dist/UncommittedAsset.js +310 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +384 -0
  22. package/dist/assetUtils.js +169 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +83 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +114 -0
  25. package/dist/atlaspack-v3/fs.js +53 -0
  26. package/dist/atlaspack-v3/index.js +25 -0
  27. package/dist/atlaspack-v3/jsCallable.js +16 -0
  28. package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
  29. package/dist/atlaspack-v3/worker/compat/bitflags.js +98 -0
  30. package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
  31. package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
  32. package/dist/atlaspack-v3/worker/compat/index.js +24 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +64 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-options.js +137 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  37. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  38. package/dist/atlaspack-v3/worker/side-effect-detector.js +243 -0
  39. package/dist/atlaspack-v3/worker/worker.js +398 -0
  40. package/dist/constants.js +17 -0
  41. package/dist/dumpGraphToGraphViz.js +281 -0
  42. package/dist/index.js +62 -0
  43. package/dist/loadAtlaspackPlugin.js +128 -0
  44. package/dist/loadDotEnv.js +41 -0
  45. package/dist/projectPath.js +83 -0
  46. package/dist/public/Asset.js +279 -0
  47. package/dist/public/Bundle.js +224 -0
  48. package/dist/public/BundleGraph.js +371 -0
  49. package/dist/public/BundleGroup.js +53 -0
  50. package/dist/public/Config.js +286 -0
  51. package/dist/public/Dependency.js +138 -0
  52. package/dist/public/Environment.js +278 -0
  53. package/dist/public/MutableBundleGraph.js +277 -0
  54. package/dist/public/PluginOptions.js +80 -0
  55. package/dist/public/Symbols.js +248 -0
  56. package/dist/public/Target.js +69 -0
  57. package/dist/registerCoreWithSerializer.js +38 -0
  58. package/dist/requests/AssetGraphRequest.js +430 -0
  59. package/dist/requests/AssetGraphRequestRust.js +471 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +98 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +381 -0
  64. package/dist/requests/BundleGraphRequestRust.js +324 -0
  65. package/dist/requests/BundleGraphRequestUtils.js +262 -0
  66. package/dist/requests/ConfigRequest.js +246 -0
  67. package/dist/requests/DevDepRequest.js +204 -0
  68. package/dist/requests/EntryRequest.js +314 -0
  69. package/dist/requests/PackageRequest.js +89 -0
  70. package/dist/requests/PathRequest.js +349 -0
  71. package/dist/requests/TargetRequest.js +1316 -0
  72. package/dist/requests/ValidationRequest.js +49 -0
  73. package/dist/requests/WriteBundleRequest.js +522 -0
  74. package/dist/requests/WriteBundlesRequest.js +190 -0
  75. package/dist/requests/asset-graph-diff.js +128 -0
  76. package/dist/requests/asset-graph-dot.js +131 -0
  77. package/dist/resolveOptions.js +267 -0
  78. package/dist/rustWorkerThreadDylibHack.js +19 -0
  79. package/dist/serializerCore.browser.js +43 -0
  80. package/dist/summarizeRequest.js +39 -0
  81. package/dist/types.js +31 -0
  82. package/dist/utils.js +172 -0
  83. package/dist/worker.js +123 -0
  84. package/lib/AssetGraph.js +53 -15
  85. package/lib/Atlaspack.js +140 -56
  86. package/lib/AtlaspackConfig.js +17 -6
  87. package/lib/AtlaspackConfig.schema.js +16 -5
  88. package/lib/BundleGraph.js +390 -43
  89. package/lib/CommittedAsset.js +8 -2
  90. package/lib/Dependency.js +9 -3
  91. package/lib/Environment.js +16 -10
  92. package/lib/EnvironmentManager.js +143 -0
  93. package/lib/IdentifierRegistry.js +2 -4
  94. package/lib/InternalConfig.js +3 -2
  95. package/lib/PackagerRunner.js +46 -82
  96. package/lib/ReporterRunner.js +8 -12
  97. package/lib/RequestTracker.js +191 -152
  98. package/lib/SymbolPropagation.js +52 -29
  99. package/lib/TargetDescriptor.schema.js +10 -1
  100. package/lib/Transformation.js +68 -19
  101. package/lib/UncommittedAsset.js +17 -24
  102. package/lib/Validation.js +20 -5
  103. package/lib/applyRuntimes.js +98 -7
  104. package/lib/assetUtils.js +16 -6
  105. package/lib/atlaspack-v3/AtlaspackV3.js +58 -15
  106. package/lib/atlaspack-v3/NapiWorkerPool.js +63 -2
  107. package/lib/atlaspack-v3/fs.js +4 -1
  108. package/lib/atlaspack-v3/index.js +28 -1
  109. package/lib/atlaspack-v3/jsCallable.js +0 -2
  110. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  111. package/lib/atlaspack-v3/worker/compat/bitflags.js +31 -25
  112. package/lib/atlaspack-v3/worker/compat/dependency.js +4 -1
  113. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  114. package/lib/atlaspack-v3/worker/compat/index.js +0 -11
  115. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +16 -11
  116. package/lib/atlaspack-v3/worker/compat/plugin-config.js +14 -35
  117. package/lib/atlaspack-v3/worker/compat/plugin-options.js +16 -2
  118. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  119. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  120. package/lib/atlaspack-v3/worker/index.js +3 -0
  121. package/lib/atlaspack-v3/worker/side-effect-detector.js +214 -0
  122. package/lib/atlaspack-v3/worker/worker.js +231 -79
  123. package/lib/constants.js +0 -1
  124. package/lib/dumpGraphToGraphViz.js +72 -17
  125. package/lib/index.js +46 -3
  126. package/lib/loadAtlaspackPlugin.js +2 -3
  127. package/lib/loadDotEnv.js +5 -2
  128. package/lib/projectPath.js +6 -1
  129. package/lib/public/Asset.js +22 -12
  130. package/lib/public/Bundle.js +16 -18
  131. package/lib/public/BundleGraph.js +27 -25
  132. package/lib/public/BundleGroup.js +5 -6
  133. package/lib/public/Config.js +113 -41
  134. package/lib/public/Dependency.js +9 -7
  135. package/lib/public/Environment.js +13 -8
  136. package/lib/public/MutableBundleGraph.js +56 -15
  137. package/lib/public/PluginOptions.js +2 -2
  138. package/lib/public/Symbols.js +12 -12
  139. package/lib/public/Target.js +8 -7
  140. package/lib/registerCoreWithSerializer.js +7 -4
  141. package/lib/requests/AssetGraphRequest.js +61 -40
  142. package/lib/requests/AssetGraphRequestRust.js +314 -82
  143. package/lib/requests/AssetRequest.js +24 -7
  144. package/lib/requests/AtlaspackBuildRequest.js +53 -7
  145. package/lib/requests/AtlaspackConfigRequest.js +29 -19
  146. package/lib/requests/BundleGraphRequest.js +61 -130
  147. package/lib/requests/BundleGraphRequestRust.js +381 -0
  148. package/lib/requests/BundleGraphRequestUtils.js +280 -0
  149. package/lib/requests/ConfigRequest.js +55 -7
  150. package/lib/requests/DevDepRequest.js +32 -6
  151. package/lib/requests/EntryRequest.js +4 -3
  152. package/lib/requests/PackageRequest.js +56 -12
  153. package/lib/requests/PathRequest.js +26 -6
  154. package/lib/requests/TargetRequest.js +129 -60
  155. package/lib/requests/ValidationRequest.js +6 -2
  156. package/lib/requests/WriteBundleRequest.js +329 -20
  157. package/lib/requests/WriteBundlesRequest.js +64 -10
  158. package/lib/requests/asset-graph-diff.js +13 -8
  159. package/lib/requests/asset-graph-dot.js +2 -8
  160. package/lib/resolveOptions.js +37 -14
  161. package/lib/rustWorkerThreadDylibHack.js +0 -1
  162. package/lib/serializerCore.browser.js +1 -2
  163. package/lib/summarizeRequest.js +1 -1
  164. package/lib/types/AssetGraph.d.ts +55 -0
  165. package/lib/types/Atlaspack.d.ts +52 -0
  166. package/lib/types/AtlaspackConfig.d.ts +65 -0
  167. package/lib/types/AtlaspackConfig.schema.d.ts +53 -0
  168. package/lib/types/BundleGraph.d.ts +232 -0
  169. package/lib/types/CommittedAsset.d.ts +23 -0
  170. package/lib/types/Dependency.d.ts +44 -0
  171. package/lib/types/Environment.d.ts +11 -0
  172. package/lib/types/EnvironmentManager.d.ts +37 -0
  173. package/lib/types/IdentifierRegistry.d.ts +6 -0
  174. package/lib/types/InternalConfig.d.ts +23 -0
  175. package/lib/types/PackagerRunner.d.ts +85 -0
  176. package/lib/types/ReporterRunner.d.ts +25 -0
  177. package/lib/types/RequestTracker.d.ts +385 -0
  178. package/lib/types/SymbolPropagation.d.ts +11 -0
  179. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  180. package/lib/types/Transformation.d.ts +72 -0
  181. package/lib/types/UncommittedAsset.d.ts +61 -0
  182. package/lib/types/Validation.d.ts +37 -0
  183. package/lib/types/applyRuntimes.d.ts +25 -0
  184. package/lib/types/assetUtils.d.ts +42 -0
  185. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +35 -0
  186. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +13 -0
  187. package/lib/types/atlaspack-v3/fs.d.ts +13 -0
  188. package/lib/types/atlaspack-v3/index.d.ts +6 -0
  189. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  190. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  191. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +14 -0
  192. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  193. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  194. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -2
  195. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  196. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +29 -0
  197. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +23 -0
  198. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  199. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  200. package/lib/types/atlaspack-v3/worker/side-effect-detector.d.ts +76 -0
  201. package/lib/types/atlaspack-v3/worker/worker.d.ts +81 -0
  202. package/lib/types/constants.d.ts +13 -0
  203. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  204. package/lib/types/index.d.ts +8 -0
  205. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  206. package/lib/types/loadDotEnv.d.ts +3 -0
  207. package/lib/types/projectPath.d.ts +19 -0
  208. package/lib/types/public/Asset.d.ts +74 -0
  209. package/lib/types/public/Bundle.d.ts +45 -0
  210. package/lib/types/public/BundleGraph.d.ts +72 -0
  211. package/lib/types/public/BundleGroup.d.ts +12 -0
  212. package/lib/types/public/Config.d.ts +75 -0
  213. package/lib/types/public/Dependency.d.ts +32 -0
  214. package/lib/types/public/Environment.d.ts +34 -0
  215. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  216. package/lib/types/public/PluginOptions.d.ts +25 -0
  217. package/lib/types/public/Symbols.d.ts +81 -0
  218. package/lib/types/public/Target.d.ts +16 -0
  219. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  220. package/lib/types/requests/AssetGraphRequest.d.ts +76 -0
  221. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  222. package/lib/types/requests/AssetRequest.d.ts +16 -0
  223. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  224. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  225. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  226. package/lib/types/requests/BundleGraphRequestRust.d.ts +34 -0
  227. package/lib/types/requests/BundleGraphRequestUtils.d.ts +38 -0
  228. package/lib/types/requests/ConfigRequest.d.ts +67 -0
  229. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  230. package/lib/types/requests/EntryRequest.d.ts +36 -0
  231. package/lib/types/requests/PackageRequest.d.ts +27 -0
  232. package/lib/types/requests/PathRequest.d.ts +48 -0
  233. package/lib/types/requests/TargetRequest.d.ts +48 -0
  234. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  235. package/lib/types/requests/WriteBundleRequest.d.ts +80 -0
  236. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  237. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  238. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  239. package/lib/types/resolveOptions.d.ts +3 -0
  240. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  241. package/lib/types/serializerCore.browser.d.ts +3 -0
  242. package/lib/types/summarizeRequest.d.ts +10 -0
  243. package/lib/types/types.d.ts +496 -0
  244. package/lib/types/utils.d.ts +23 -0
  245. package/lib/types/worker.d.ts +44 -0
  246. package/lib/types.js +8 -1
  247. package/lib/utils.js +18 -3
  248. package/lib/worker.js +32 -15
  249. package/package.json +27 -37
  250. package/src/{AssetGraph.js → AssetGraph.ts} +87 -51
  251. package/src/{Atlaspack.js → Atlaspack.ts} +181 -72
  252. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +25 -19
  253. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  254. package/src/{BundleGraph.js → BundleGraph.ts} +575 -145
  255. package/src/{CommittedAsset.js → CommittedAsset.ts} +15 -13
  256. package/src/{Dependency.js → Dependency.ts} +59 -42
  257. package/src/{Environment.js → Environment.ts} +24 -15
  258. package/src/EnvironmentManager.ts +154 -0
  259. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  260. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  261. package/src/{PackagerRunner.js → PackagerRunner.ts} +114 -159
  262. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  263. package/src/{RequestTracker.js → RequestTracker.ts} +444 -355
  264. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +178 -61
  265. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +10 -1
  266. package/src/{Transformation.js → Transformation.ts} +110 -65
  267. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +45 -49
  268. package/src/{Validation.js → Validation.ts} +32 -17
  269. package/src/{applyRuntimes.js → applyRuntimes.ts} +135 -26
  270. package/src/{assetUtils.js → assetUtils.ts} +49 -36
  271. package/src/atlaspack-v3/AtlaspackV3.ts +183 -0
  272. package/src/atlaspack-v3/NapiWorkerPool.ts +129 -0
  273. package/src/atlaspack-v3/{fs.js → fs.ts} +8 -4
  274. package/src/atlaspack-v3/{index.js → index.ts} +3 -4
  275. package/src/atlaspack-v3/jsCallable.ts +14 -0
  276. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  277. package/src/atlaspack-v3/worker/compat/bitflags.ts +102 -0
  278. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +13 -13
  279. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  280. package/src/atlaspack-v3/worker/compat/index.ts +8 -0
  281. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +21 -20
  282. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +24 -59
  283. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +19 -5
  284. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  285. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  286. package/src/atlaspack-v3/worker/index.js +2 -1
  287. package/src/atlaspack-v3/worker/side-effect-detector.ts +298 -0
  288. package/src/atlaspack-v3/worker/worker.ts +548 -0
  289. package/src/{constants.js → constants.ts} +0 -3
  290. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  291. package/src/index.ts +18 -0
  292. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  293. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  294. package/src/{projectPath.js → projectPath.ts} +20 -9
  295. package/src/public/{Asset.js → Asset.ts} +41 -28
  296. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  297. package/src/public/{BundleGraph.js → BundleGraph.ts} +103 -68
  298. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  299. package/src/public/{Config.js → Config.ts} +160 -56
  300. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  301. package/src/public/{Environment.js → Environment.ts} +28 -17
  302. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  303. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  304. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  305. package/src/public/{Target.js → Target.ts} +10 -8
  306. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  307. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +117 -90
  308. package/src/requests/AssetGraphRequestRust.ts +557 -0
  309. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  310. package/src/requests/AtlaspackBuildRequest.ts +168 -0
  311. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  312. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +119 -199
  313. package/src/requests/BundleGraphRequestRust.ts +470 -0
  314. package/src/requests/BundleGraphRequestUtils.ts +323 -0
  315. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +110 -50
  316. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  317. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  318. package/src/requests/{PackageRequest.js → PackageRequest.ts} +52 -25
  319. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  320. package/src/requests/{TargetRequest.js → TargetRequest.ts} +265 -179
  321. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  322. package/src/requests/WriteBundleRequest.ts +734 -0
  323. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +134 -50
  324. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  325. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  326. package/src/{resolveOptions.js → resolveOptions.ts} +57 -27
  327. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  328. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  329. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  330. package/src/types.ts +651 -0
  331. package/src/{utils.js → utils.ts} +52 -21
  332. package/src/{worker.js → worker.ts} +50 -42
  333. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +5 -8
  334. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  335. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  336. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +76 -16
  337. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  338. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  339. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  340. package/test/Environment.test.ts +153 -0
  341. package/test/EnvironmentManager.test.ts +188 -0
  342. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  343. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  344. package/test/PackagerRunner.test.ts +0 -0
  345. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  346. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  347. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  348. package/test/PublicEnvironment.test.ts +49 -0
  349. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  350. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +136 -58
  351. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  352. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +91 -92
  353. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  354. package/test/fixtures/custom-targets/package.json +6 -0
  355. package/test/public/Config.test.ts +104 -0
  356. package/test/requests/AssetGraphRequestRust.test.ts +443 -0
  357. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  358. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  359. package/test/requests/WriteBundleRequest.test.ts +602 -0
  360. package/test/{test-utils.js → test-utils.ts} +3 -4
  361. package/test/{utils.test.js → utils.test.ts} +1 -3
  362. package/tsconfig.json +60 -0
  363. package/tsconfig.tsbuildinfo +1 -0
  364. package/index.d.ts +0 -30
  365. package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
  366. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  367. package/src/atlaspack-v3/NapiWorkerPool.js +0 -53
  368. package/src/atlaspack-v3/jsCallable.js +0 -18
  369. package/src/atlaspack-v3/worker/compat/bitflags.js +0 -100
  370. package/src/atlaspack-v3/worker/compat/plugin-logger.js +0 -47
  371. package/src/atlaspack-v3/worker/worker.js +0 -369
  372. package/src/index.js +0 -13
  373. package/src/requests/AssetGraphRequestRust.js +0 -263
  374. package/src/requests/AtlaspackBuildRequest.js +0 -111
  375. package/src/requests/WriteBundleRequest.js +0 -369
  376. package/src/types.js +0 -600
  377. package/test/Environment.test.js +0 -119
  378. package/test/PackagerRunner.test.js +0 -27
  379. package/test/PublicEnvironment.test.js +0 -27
  380. package/test/requests/AssetGraphRequestRust.test.js +0 -411
@@ -1,4 +1,3 @@
1
- // @flow strict-local
2
1
  import type {
3
2
  Config as IConfig,
4
3
  ConfigResult,
@@ -20,20 +19,98 @@ import {
20
19
  } from '@atlaspack/utils';
21
20
  import Environment from './Environment';
22
21
  import {fromProjectPath, toProjectPath} from '../projectPath';
23
- import {getFeatureFlag} from '@atlaspack/feature-flags';
22
+ import {fromEnvironmentId} from '../EnvironmentManager';
24
23
 
25
24
  const internalConfigToConfig: DefaultWeakMap<
26
25
  AtlaspackOptions,
27
- WeakMap<Config, PublicConfig>,
26
+ WeakMap<Config, PublicConfig>
28
27
  > = new DefaultWeakMap(() => new WeakMap());
29
28
 
30
- export default class PublicConfig implements IConfig {
31
- #config /*: Config */;
32
- #pkg /*: ?PackageJSON */;
33
- #pkgFilePath /*: ?FilePath */;
34
- #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
+ }
35
93
 
36
- constructor(config: Config, options: AtlaspackOptions): PublicConfig {
94
+ reportPath([...path, prop]);
95
+
96
+ return value;
97
+ },
98
+ });
99
+ };
100
+
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) {
37
114
  let existing = internalConfigToConfig.get(options).get(config);
38
115
  if (existing != null) {
39
116
  return existing;
@@ -46,7 +123,7 @@ export default class PublicConfig implements IConfig {
46
123
  }
47
124
 
48
125
  get env(): Environment {
49
- return new Environment(this.#config.env, this.#options);
126
+ return new Environment(fromEnvironmentId(this.#config.env), this.#options);
50
127
  }
51
128
 
52
129
  get searchPath(): FilePath {
@@ -61,7 +138,6 @@ export default class PublicConfig implements IConfig {
61
138
  return this.#config.isSource;
62
139
  }
63
140
 
64
- // $FlowFixMe
65
141
  setResult(result: any): void {
66
142
  this.#config.result = result;
67
143
  }
@@ -76,7 +152,7 @@ export default class PublicConfig implements IConfig {
76
152
  );
77
153
  }
78
154
 
79
- invalidateOnConfigKeyChange(filePath: FilePath, configKey: string) {
155
+ invalidateOnConfigKeyChange(filePath: FilePath, configKey: string[]) {
80
156
  this.#config.invalidateOnConfigKeyChange.push({
81
157
  filePath: toProjectPath(this.#options.projectRoot, filePath),
82
158
  configKey,
@@ -87,31 +163,43 @@ export default class PublicConfig implements IConfig {
87
163
  this.#config.devDeps.push({
88
164
  ...devDep,
89
165
  resolveFrom: toProjectPath(this.#options.projectRoot, devDep.resolveFrom),
90
- additionalInvalidations: devDep.additionalInvalidations?.map((i) => ({
91
- ...i,
92
- resolveFrom: toProjectPath(this.#options.projectRoot, i.resolveFrom),
93
- })),
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
+ ),
94
178
  });
95
179
  }
96
180
 
97
181
  invalidateOnFileCreate(invalidation: FileCreateInvalidation) {
182
+ // @ts-expect-error TS2339
98
183
  if (invalidation.glob != null) {
99
- // $FlowFixMe
100
184
  this.#config.invalidateOnFileCreate.push(invalidation);
185
+ // @ts-expect-error TS2339
101
186
  } else if (invalidation.filePath != null) {
102
187
  this.#config.invalidateOnFileCreate.push({
103
188
  filePath: toProjectPath(
104
189
  this.#options.projectRoot,
190
+ // @ts-expect-error TS2339
105
191
  invalidation.filePath,
106
192
  ),
107
193
  });
108
194
  } else {
195
+ // @ts-expect-error TS2339
109
196
  invariant(invalidation.aboveFilePath != null);
110
197
  this.#config.invalidateOnFileCreate.push({
111
- // $FlowFixMe
198
+ // @ts-expect-error TS2339
112
199
  fileName: invalidation.fileName,
113
200
  aboveFilePath: toProjectPath(
114
201
  this.#options.projectRoot,
202
+ // @ts-expect-error TS2339
115
203
  invalidation.aboveFilePath,
116
204
  ),
117
205
  });
@@ -134,59 +222,66 @@ export default class PublicConfig implements IConfig {
134
222
  searchPath: FilePath,
135
223
  fileNames: Array<string>,
136
224
  options:
137
- | ?{|
225
+ | {
138
226
  /**
139
227
  * @deprecated Use `configKey` instead.
140
228
  */
141
- packageKey?: string,
142
- parse?: boolean,
143
- exclude?: boolean,
144
- |}
145
- | ?{|
229
+ packageKey?: string;
230
+ parse?: boolean;
231
+ exclude?: boolean;
232
+ }
233
+ | null
234
+ | undefined
235
+ | {
146
236
  /**
147
- * If specified, only invalidate when this config key changes.
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.
148
239
  */
149
- configKey?: string,
150
- |},
151
- ): Promise<?ConfigResultWithFilePath<T>> {
240
+ readTracking?: boolean;
241
+ }
242
+ | null
243
+ | undefined,
244
+ ): Promise<ConfigResultWithFilePath<T> | null | undefined> {
245
+ // @ts-expect-error TS2339
152
246
  let packageKey = options?.packageKey;
153
247
  if (packageKey != null) {
154
248
  let pkg = await this.getConfigFrom(searchPath, ['package.json'], {
155
249
  exclude: true,
156
250
  });
157
251
 
252
+ // @ts-expect-error TS18046
158
253
  if (pkg && pkg.contents[packageKey]) {
159
254
  // Invalidate only when the package key changes
160
- this.invalidateOnConfigKeyChange(pkg.filePath, packageKey);
255
+ this.invalidateOnConfigKeyChange(pkg.filePath, [packageKey]);
161
256
 
162
257
  return {
258
+ // @ts-expect-error TS18046
163
259
  contents: pkg.contents[packageKey],
164
260
  filePath: pkg.filePath,
165
261
  };
166
262
  }
167
263
  }
168
264
 
169
- if (getFeatureFlag('granularTsConfigInvalidation')) {
170
- const configKey = options?.configKey;
171
- if (configKey != null) {
172
- for (let fileName of fileNames) {
173
- let config = await this.getConfigFrom(searchPath, [fileName], {
174
- exclude: true,
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,
175
280
  });
176
-
177
- if (config && config.contents[configKey]) {
178
- // Invalidate only when the package key changes
179
- this.invalidateOnConfigKeyChange(config.filePath, configKey);
180
-
181
- return {
182
- contents: config.contents[configKey],
183
- filePath: config.filePath,
184
- };
185
- }
186
281
  }
187
-
188
- // fall through so that file above invalidations are registered
189
282
  }
283
+
284
+ // fall through so that file above invalidations are registered
190
285
  }
191
286
 
192
287
  if (fileNames.length === 0) {
@@ -201,6 +296,7 @@ export default class PublicConfig implements IConfig {
201
296
  });
202
297
  }
203
298
 
299
+ // @ts-expect-error TS2339
204
300
  let parse = options && options.parse;
205
301
  let configFilePath = await resolveConfig(
206
302
  this.#options.inputFS,
@@ -212,6 +308,7 @@ export default class PublicConfig implements IConfig {
212
308
  return null;
213
309
  }
214
310
 
311
+ // @ts-expect-error TS2339
215
312
  if (!options || !options.exclude) {
216
313
  this.invalidateOnFileChange(configFilePath);
217
314
  }
@@ -237,7 +334,6 @@ export default class PublicConfig implements IConfig {
237
334
  );
238
335
 
239
336
  if (
240
- // $FlowFixMe
241
337
  Object.prototype.toString.call(config) === '[object Module]' &&
242
338
  config.default != null
243
339
  ) {
@@ -268,21 +364,29 @@ export default class PublicConfig implements IConfig {
268
364
 
269
365
  getConfig<T>(
270
366
  filePaths: Array<FilePath>,
271
- options: ?{|
272
- packageKey?: string,
273
- parse?: boolean,
274
- exclude?: boolean,
275
- |},
276
- ): 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> {
277
379
  return this.getConfigFrom(this.searchPath, filePaths, options);
278
380
  }
279
381
 
280
- async getPackage(): Promise<?PackageJSON> {
382
+ async getPackage(): Promise<PackageJSON | null | undefined> {
281
383
  if (this.#pkg) {
282
384
  return this.#pkg;
283
385
  }
284
386
 
285
- let pkgConfig = await this.getConfig<PackageJSON>(['package.json']);
387
+ let pkgConfig = await this.getConfig<PackageJSON>(['package.json'], {
388
+ readTracking: true,
389
+ });
286
390
  if (!pkgConfig) {
287
391
  return null;
288
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) {