@atlaspack/core 2.16.2-canary.48 → 2.16.2-canary.481

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/CHANGELOG.md +1324 -0
  2. package/dist/AssetGraph.js +523 -0
  3. package/dist/Atlaspack.js +701 -0
  4. package/dist/AtlaspackConfig.js +324 -0
  5. package/dist/AtlaspackConfig.schema.js +117 -0
  6. package/dist/BundleGraph.js +1906 -0
  7. package/dist/CommittedAsset.js +142 -0
  8. package/dist/Dependency.js +125 -0
  9. package/dist/Environment.js +132 -0
  10. package/dist/EnvironmentManager.js +108 -0
  11. package/dist/IdentifierRegistry.js +38 -0
  12. package/dist/InternalConfig.js +37 -0
  13. package/dist/PackagerRunner.js +470 -0
  14. package/dist/ReporterRunner.js +151 -0
  15. package/dist/RequestTracker.js +1297 -0
  16. package/dist/SymbolPropagation.js +624 -0
  17. package/dist/TargetDescriptor.schema.js +146 -0
  18. package/dist/Transformation.js +514 -0
  19. package/dist/UncommittedAsset.js +310 -0
  20. package/dist/Validation.js +196 -0
  21. package/dist/applyRuntimes.js +384 -0
  22. package/dist/assetUtils.js +169 -0
  23. package/dist/atlaspack-v3/AtlaspackV3.js +83 -0
  24. package/dist/atlaspack-v3/NapiWorkerPool.js +114 -0
  25. package/dist/atlaspack-v3/fs.js +53 -0
  26. package/dist/atlaspack-v3/index.js +25 -0
  27. package/dist/atlaspack-v3/jsCallable.js +16 -0
  28. package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
  29. package/dist/atlaspack-v3/worker/compat/bitflags.js +98 -0
  30. package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
  31. package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
  32. package/dist/atlaspack-v3/worker/compat/index.js +24 -0
  33. package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
  34. package/dist/atlaspack-v3/worker/compat/plugin-config.js +64 -0
  35. package/dist/atlaspack-v3/worker/compat/plugin-options.js +137 -0
  36. package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
  37. package/dist/atlaspack-v3/worker/compat/target.js +14 -0
  38. package/dist/atlaspack-v3/worker/side-effect-detector.js +243 -0
  39. package/dist/atlaspack-v3/worker/worker.js +398 -0
  40. package/dist/constants.js +17 -0
  41. package/dist/dumpGraphToGraphViz.js +281 -0
  42. package/dist/index.js +62 -0
  43. package/dist/loadAtlaspackPlugin.js +128 -0
  44. package/dist/loadDotEnv.js +41 -0
  45. package/dist/projectPath.js +83 -0
  46. package/dist/public/Asset.js +279 -0
  47. package/dist/public/Bundle.js +224 -0
  48. package/dist/public/BundleGraph.js +371 -0
  49. package/dist/public/BundleGroup.js +53 -0
  50. package/dist/public/Config.js +286 -0
  51. package/dist/public/Dependency.js +138 -0
  52. package/dist/public/Environment.js +278 -0
  53. package/dist/public/MutableBundleGraph.js +277 -0
  54. package/dist/public/PluginOptions.js +80 -0
  55. package/dist/public/Symbols.js +248 -0
  56. package/dist/public/Target.js +69 -0
  57. package/dist/registerCoreWithSerializer.js +38 -0
  58. package/dist/requests/AssetGraphRequest.js +430 -0
  59. package/dist/requests/AssetGraphRequestRust.js +471 -0
  60. package/dist/requests/AssetRequest.js +130 -0
  61. package/dist/requests/AtlaspackBuildRequest.js +98 -0
  62. package/dist/requests/AtlaspackConfigRequest.js +493 -0
  63. package/dist/requests/BundleGraphRequest.js +381 -0
  64. package/dist/requests/BundleGraphRequestRust.js +324 -0
  65. package/dist/requests/BundleGraphRequestUtils.js +262 -0
  66. package/dist/requests/ConfigRequest.js +246 -0
  67. package/dist/requests/DevDepRequest.js +204 -0
  68. package/dist/requests/EntryRequest.js +314 -0
  69. package/dist/requests/PackageRequest.js +89 -0
  70. package/dist/requests/PathRequest.js +349 -0
  71. package/dist/requests/TargetRequest.js +1316 -0
  72. package/dist/requests/ValidationRequest.js +49 -0
  73. package/dist/requests/WriteBundleRequest.js +522 -0
  74. package/dist/requests/WriteBundlesRequest.js +190 -0
  75. package/dist/requests/asset-graph-diff.js +128 -0
  76. package/dist/requests/asset-graph-dot.js +131 -0
  77. package/dist/resolveOptions.js +267 -0
  78. package/dist/rustWorkerThreadDylibHack.js +19 -0
  79. package/dist/serializerCore.browser.js +43 -0
  80. package/dist/summarizeRequest.js +39 -0
  81. package/dist/types.js +31 -0
  82. package/dist/utils.js +172 -0
  83. package/dist/worker.js +123 -0
  84. package/lib/AssetGraph.js +53 -15
  85. package/lib/Atlaspack.js +140 -56
  86. package/lib/AtlaspackConfig.js +17 -6
  87. package/lib/AtlaspackConfig.schema.js +16 -5
  88. package/lib/BundleGraph.js +390 -43
  89. package/lib/CommittedAsset.js +8 -2
  90. package/lib/Dependency.js +9 -3
  91. package/lib/Environment.js +16 -10
  92. package/lib/EnvironmentManager.js +143 -0
  93. package/lib/IdentifierRegistry.js +2 -4
  94. package/lib/InternalConfig.js +3 -2
  95. package/lib/PackagerRunner.js +46 -82
  96. package/lib/ReporterRunner.js +8 -12
  97. package/lib/RequestTracker.js +191 -152
  98. package/lib/SymbolPropagation.js +52 -29
  99. package/lib/TargetDescriptor.schema.js +10 -1
  100. package/lib/Transformation.js +68 -19
  101. package/lib/UncommittedAsset.js +17 -24
  102. package/lib/Validation.js +20 -5
  103. package/lib/applyRuntimes.js +98 -7
  104. package/lib/assetUtils.js +16 -6
  105. package/lib/atlaspack-v3/AtlaspackV3.js +58 -15
  106. package/lib/atlaspack-v3/NapiWorkerPool.js +63 -2
  107. package/lib/atlaspack-v3/fs.js +4 -1
  108. package/lib/atlaspack-v3/index.js +28 -1
  109. package/lib/atlaspack-v3/jsCallable.js +0 -2
  110. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
  111. package/lib/atlaspack-v3/worker/compat/bitflags.js +31 -25
  112. package/lib/atlaspack-v3/worker/compat/dependency.js +4 -1
  113. package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
  114. package/lib/atlaspack-v3/worker/compat/index.js +0 -11
  115. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +16 -11
  116. package/lib/atlaspack-v3/worker/compat/plugin-config.js +14 -35
  117. package/lib/atlaspack-v3/worker/compat/plugin-options.js +16 -2
  118. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
  119. package/lib/atlaspack-v3/worker/compat/target.js +2 -0
  120. package/lib/atlaspack-v3/worker/index.js +3 -0
  121. package/lib/atlaspack-v3/worker/side-effect-detector.js +214 -0
  122. package/lib/atlaspack-v3/worker/worker.js +231 -79
  123. package/lib/constants.js +0 -1
  124. package/lib/dumpGraphToGraphViz.js +72 -17
  125. package/lib/index.js +46 -3
  126. package/lib/loadAtlaspackPlugin.js +2 -3
  127. package/lib/loadDotEnv.js +5 -2
  128. package/lib/projectPath.js +6 -1
  129. package/lib/public/Asset.js +22 -12
  130. package/lib/public/Bundle.js +16 -18
  131. package/lib/public/BundleGraph.js +27 -25
  132. package/lib/public/BundleGroup.js +5 -6
  133. package/lib/public/Config.js +118 -18
  134. package/lib/public/Dependency.js +9 -7
  135. package/lib/public/Environment.js +13 -8
  136. package/lib/public/MutableBundleGraph.js +56 -15
  137. package/lib/public/PluginOptions.js +2 -2
  138. package/lib/public/Symbols.js +12 -12
  139. package/lib/public/Target.js +8 -7
  140. package/lib/registerCoreWithSerializer.js +7 -4
  141. package/lib/requests/AssetGraphRequest.js +61 -40
  142. package/lib/requests/AssetGraphRequestRust.js +314 -82
  143. package/lib/requests/AssetRequest.js +24 -7
  144. package/lib/requests/AtlaspackBuildRequest.js +53 -7
  145. package/lib/requests/AtlaspackConfigRequest.js +29 -19
  146. package/lib/requests/BundleGraphRequest.js +61 -130
  147. package/lib/requests/BundleGraphRequestRust.js +381 -0
  148. package/lib/requests/BundleGraphRequestUtils.js +280 -0
  149. package/lib/requests/ConfigRequest.js +55 -7
  150. package/lib/requests/DevDepRequest.js +32 -6
  151. package/lib/requests/EntryRequest.js +4 -3
  152. package/lib/requests/PackageRequest.js +56 -12
  153. package/lib/requests/PathRequest.js +26 -6
  154. package/lib/requests/TargetRequest.js +129 -60
  155. package/lib/requests/ValidationRequest.js +6 -2
  156. package/lib/requests/WriteBundleRequest.js +329 -20
  157. package/lib/requests/WriteBundlesRequest.js +64 -10
  158. package/lib/requests/asset-graph-diff.js +13 -8
  159. package/lib/requests/asset-graph-dot.js +2 -8
  160. package/lib/resolveOptions.js +37 -14
  161. package/lib/rustWorkerThreadDylibHack.js +0 -1
  162. package/lib/serializerCore.browser.js +1 -2
  163. package/lib/summarizeRequest.js +1 -1
  164. package/lib/types/AssetGraph.d.ts +55 -0
  165. package/lib/types/Atlaspack.d.ts +52 -0
  166. package/lib/types/AtlaspackConfig.d.ts +65 -0
  167. package/lib/types/AtlaspackConfig.schema.d.ts +53 -0
  168. package/lib/types/BundleGraph.d.ts +232 -0
  169. package/lib/types/CommittedAsset.d.ts +23 -0
  170. package/lib/types/Dependency.d.ts +44 -0
  171. package/lib/types/Environment.d.ts +11 -0
  172. package/lib/types/EnvironmentManager.d.ts +37 -0
  173. package/lib/types/IdentifierRegistry.d.ts +6 -0
  174. package/lib/types/InternalConfig.d.ts +23 -0
  175. package/lib/types/PackagerRunner.d.ts +85 -0
  176. package/lib/types/ReporterRunner.d.ts +25 -0
  177. package/lib/types/RequestTracker.d.ts +385 -0
  178. package/lib/types/SymbolPropagation.d.ts +11 -0
  179. package/lib/types/TargetDescriptor.schema.d.ts +5 -0
  180. package/lib/types/Transformation.d.ts +72 -0
  181. package/lib/types/UncommittedAsset.d.ts +61 -0
  182. package/lib/types/Validation.d.ts +37 -0
  183. package/lib/types/applyRuntimes.d.ts +25 -0
  184. package/lib/types/assetUtils.d.ts +42 -0
  185. package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +35 -0
  186. package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +13 -0
  187. package/lib/types/atlaspack-v3/fs.d.ts +13 -0
  188. package/lib/types/atlaspack-v3/index.d.ts +6 -0
  189. package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
  190. package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
  191. package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +14 -0
  192. package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
  193. package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
  194. package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -2
  195. package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
  196. package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +29 -0
  197. package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +23 -0
  198. package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
  199. package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
  200. package/lib/types/atlaspack-v3/worker/side-effect-detector.d.ts +76 -0
  201. package/lib/types/atlaspack-v3/worker/worker.d.ts +81 -0
  202. package/lib/types/constants.d.ts +13 -0
  203. package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
  204. package/lib/types/index.d.ts +8 -0
  205. package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
  206. package/lib/types/loadDotEnv.d.ts +3 -0
  207. package/lib/types/projectPath.d.ts +19 -0
  208. package/lib/types/public/Asset.d.ts +74 -0
  209. package/lib/types/public/Bundle.d.ts +45 -0
  210. package/lib/types/public/BundleGraph.d.ts +72 -0
  211. package/lib/types/public/BundleGroup.d.ts +12 -0
  212. package/lib/types/public/Config.d.ts +75 -0
  213. package/lib/types/public/Dependency.d.ts +32 -0
  214. package/lib/types/public/Environment.d.ts +34 -0
  215. package/lib/types/public/MutableBundleGraph.d.ts +26 -0
  216. package/lib/types/public/PluginOptions.d.ts +25 -0
  217. package/lib/types/public/Symbols.d.ts +81 -0
  218. package/lib/types/public/Target.d.ts +16 -0
  219. package/lib/types/registerCoreWithSerializer.d.ts +2 -0
  220. package/lib/types/requests/AssetGraphRequest.d.ts +76 -0
  221. package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
  222. package/lib/types/requests/AssetRequest.d.ts +16 -0
  223. package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
  224. package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
  225. package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
  226. package/lib/types/requests/BundleGraphRequestRust.d.ts +34 -0
  227. package/lib/types/requests/BundleGraphRequestUtils.d.ts +38 -0
  228. package/lib/types/requests/ConfigRequest.d.ts +67 -0
  229. package/lib/types/requests/DevDepRequest.d.ts +30 -0
  230. package/lib/types/requests/EntryRequest.d.ts +36 -0
  231. package/lib/types/requests/PackageRequest.d.ts +27 -0
  232. package/lib/types/requests/PathRequest.d.ts +48 -0
  233. package/lib/types/requests/TargetRequest.d.ts +48 -0
  234. package/lib/types/requests/ValidationRequest.d.ts +20 -0
  235. package/lib/types/requests/WriteBundleRequest.d.ts +80 -0
  236. package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
  237. package/lib/types/requests/asset-graph-diff.d.ts +1 -0
  238. package/lib/types/requests/asset-graph-dot.d.ts +9 -0
  239. package/lib/types/resolveOptions.d.ts +3 -0
  240. package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
  241. package/lib/types/serializerCore.browser.d.ts +3 -0
  242. package/lib/types/summarizeRequest.d.ts +10 -0
  243. package/lib/types/types.d.ts +496 -0
  244. package/lib/types/utils.d.ts +23 -0
  245. package/lib/types/worker.d.ts +44 -0
  246. package/lib/types.js +8 -1
  247. package/lib/utils.js +18 -3
  248. package/lib/worker.js +32 -15
  249. package/package.json +26 -36
  250. package/src/{AssetGraph.js → AssetGraph.ts} +87 -51
  251. package/src/{Atlaspack.js → Atlaspack.ts} +181 -72
  252. package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +25 -19
  253. package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
  254. package/src/{BundleGraph.js → BundleGraph.ts} +575 -145
  255. package/src/{CommittedAsset.js → CommittedAsset.ts} +15 -13
  256. package/src/{Dependency.js → Dependency.ts} +59 -42
  257. package/src/{Environment.js → Environment.ts} +24 -15
  258. package/src/EnvironmentManager.ts +154 -0
  259. package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
  260. package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
  261. package/src/{PackagerRunner.js → PackagerRunner.ts} +114 -159
  262. package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
  263. package/src/{RequestTracker.js → RequestTracker.ts} +444 -355
  264. package/src/{SymbolPropagation.js → SymbolPropagation.ts} +178 -61
  265. package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +10 -1
  266. package/src/{Transformation.js → Transformation.ts} +110 -65
  267. package/src/{UncommittedAsset.js → UncommittedAsset.ts} +45 -49
  268. package/src/{Validation.js → Validation.ts} +32 -17
  269. package/src/{applyRuntimes.js → applyRuntimes.ts} +135 -26
  270. package/src/{assetUtils.js → assetUtils.ts} +49 -36
  271. package/src/atlaspack-v3/AtlaspackV3.ts +183 -0
  272. package/src/atlaspack-v3/NapiWorkerPool.ts +129 -0
  273. package/src/atlaspack-v3/{fs.js → fs.ts} +8 -4
  274. package/src/atlaspack-v3/{index.js → index.ts} +3 -4
  275. package/src/atlaspack-v3/jsCallable.ts +14 -0
  276. package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
  277. package/src/atlaspack-v3/worker/compat/bitflags.ts +102 -0
  278. package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +13 -13
  279. package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
  280. package/src/atlaspack-v3/worker/compat/index.ts +8 -0
  281. package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +21 -20
  282. package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +25 -56
  283. package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +19 -5
  284. package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
  285. package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
  286. package/src/atlaspack-v3/worker/index.js +2 -1
  287. package/src/atlaspack-v3/worker/side-effect-detector.ts +298 -0
  288. package/src/atlaspack-v3/worker/worker.ts +548 -0
  289. package/src/{constants.js → constants.ts} +0 -3
  290. package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
  291. package/src/index.ts +18 -0
  292. package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
  293. package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
  294. package/src/{projectPath.js → projectPath.ts} +20 -9
  295. package/src/public/{Asset.js → Asset.ts} +41 -28
  296. package/src/public/{Bundle.js → Bundle.ts} +28 -29
  297. package/src/public/{BundleGraph.js → BundleGraph.ts} +103 -68
  298. package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
  299. package/src/public/{Config.js → Config.ts} +171 -33
  300. package/src/public/{Dependency.js → Dependency.ts} +20 -17
  301. package/src/public/{Environment.js → Environment.ts} +28 -17
  302. package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
  303. package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
  304. package/src/public/{Symbols.js → Symbols.ts} +75 -36
  305. package/src/public/{Target.js → Target.ts} +10 -8
  306. package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
  307. package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +117 -90
  308. package/src/requests/AssetGraphRequestRust.ts +557 -0
  309. package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
  310. package/src/requests/AtlaspackBuildRequest.ts +168 -0
  311. package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
  312. package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +119 -199
  313. package/src/requests/BundleGraphRequestRust.ts +470 -0
  314. package/src/requests/BundleGraphRequestUtils.ts +323 -0
  315. package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +110 -50
  316. package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
  317. package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
  318. package/src/requests/{PackageRequest.js → PackageRequest.ts} +52 -25
  319. package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
  320. package/src/requests/{TargetRequest.js → TargetRequest.ts} +265 -179
  321. package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
  322. package/src/requests/WriteBundleRequest.ts +734 -0
  323. package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +134 -50
  324. package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
  325. package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
  326. package/src/{resolveOptions.js → resolveOptions.ts} +57 -27
  327. package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
  328. package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
  329. package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
  330. package/src/types.ts +651 -0
  331. package/src/{utils.js → utils.ts} +52 -21
  332. package/src/{worker.js → worker.ts} +50 -42
  333. package/test/{AssetGraph.test.js → AssetGraph.test.ts} +5 -8
  334. package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
  335. package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
  336. package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +76 -16
  337. package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
  338. package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
  339. package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
  340. package/test/Environment.test.ts +153 -0
  341. package/test/EnvironmentManager.test.ts +188 -0
  342. package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
  343. package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
  344. package/test/PackagerRunner.test.ts +0 -0
  345. package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
  346. package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
  347. package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
  348. package/test/PublicEnvironment.test.ts +49 -0
  349. package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
  350. package/test/{RequestTracker.test.js → RequestTracker.test.ts} +136 -58
  351. package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
  352. package/test/{TargetRequest.test.js → TargetRequest.test.ts} +91 -92
  353. package/test/fixtures/config-with-reporters/.parcelrc +7 -0
  354. package/test/fixtures/custom-targets/package.json +6 -0
  355. package/test/public/Config.test.ts +104 -0
  356. package/test/requests/AssetGraphRequestRust.test.ts +443 -0
  357. package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
  358. package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
  359. package/test/requests/WriteBundleRequest.test.ts +602 -0
  360. package/test/{test-utils.js → test-utils.ts} +3 -4
  361. package/test/{utils.test.js → utils.test.ts} +1 -3
  362. package/tsconfig.json +60 -0
  363. package/tsconfig.tsbuildinfo +1 -0
  364. package/index.d.ts +0 -30
  365. package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
  366. package/src/atlaspack-v3/AtlaspackV3.js +0 -87
  367. package/src/atlaspack-v3/NapiWorkerPool.js +0 -53
  368. package/src/atlaspack-v3/jsCallable.js +0 -18
  369. package/src/atlaspack-v3/worker/compat/bitflags.js +0 -100
  370. package/src/atlaspack-v3/worker/compat/plugin-logger.js +0 -47
  371. package/src/atlaspack-v3/worker/worker.js +0 -369
  372. package/src/index.js +0 -13
  373. package/src/requests/AssetGraphRequestRust.js +0 -263
  374. package/src/requests/AtlaspackBuildRequest.js +0 -111
  375. package/src/requests/WriteBundleRequest.js +0 -369
  376. package/src/types.js +0 -600
  377. package/test/Environment.test.js +0 -119
  378. package/test/PackagerRunner.test.js +0 -27
  379. package/test/PublicEnvironment.test.js +0 -27
  380. package/test/requests/AssetGraphRequestRust.test.js +0 -411
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _MutableAsset_astDirty, _MutableAsset_ast, _MutableAsset_contents, _MutableAsset_inner, _MutableAsset_map, _MutableAsset_projectRoot, _MutableAsset_sourceMap;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MutableAsset = void 0;
19
+ const source_map_1 = __importDefault(require("@atlaspack/source-map"));
20
+ const stream_1 = require("stream");
21
+ const bitflags_1 = require("./bitflags");
22
+ const asset_symbols_1 = require("./asset-symbols");
23
+ class MutableAsset {
24
+ get astGenerator() {
25
+ throw new Error('get MutableAsset.astGenerator');
26
+ }
27
+ // @ts-expect-error TS1051
28
+ set astGenerator(value) {
29
+ throw new Error('set MutableAsset.astGenerator');
30
+ }
31
+ constructor(asset, contents, env, fs, map, projectRoot) {
32
+ _MutableAsset_astDirty.set(this, void 0);
33
+ _MutableAsset_ast.set(this, void 0);
34
+ _MutableAsset_contents.set(this, void 0);
35
+ _MutableAsset_inner.set(this, void 0);
36
+ _MutableAsset_map.set(this, void 0);
37
+ _MutableAsset_projectRoot.set(this, void 0);
38
+ _MutableAsset_sourceMap.set(this, void 0);
39
+ this.bundleBehavior = bitflags_1.bundleBehaviorMap.fromNullable(asset.bundleBehavior);
40
+ this.env = env;
41
+ this.filePath = asset.filePath;
42
+ this.fs = fs;
43
+ this.id = asset.id;
44
+ this.isBundleSplittable = asset.isBundleSplittable;
45
+ this.isSource = asset.isSource;
46
+ this.meta = asset.meta;
47
+ this.pipeline = asset.pipeline;
48
+ this.query = new URLSearchParams(asset.query);
49
+ this.sideEffects = asset.sideEffects;
50
+ this.stats = asset.stats;
51
+ this.symbols = new asset_symbols_1.MutableAssetSymbols(asset.symbols);
52
+ this.type = asset.type;
53
+ this.uniqueKey = asset.uniqueKey;
54
+ __classPrivateFieldSet(this, _MutableAsset_astDirty, false, "f");
55
+ __classPrivateFieldSet(this, _MutableAsset_contents, contents, "f");
56
+ __classPrivateFieldSet(this, _MutableAsset_inner, asset, "f");
57
+ __classPrivateFieldSet(this, _MutableAsset_map, map, "f");
58
+ __classPrivateFieldSet(this, _MutableAsset_projectRoot, projectRoot, "f");
59
+ }
60
+ // eslint-disable-next-line require-await
61
+ async getAST() {
62
+ return __classPrivateFieldGet(this, _MutableAsset_ast, "f");
63
+ }
64
+ setAST(ast) {
65
+ __classPrivateFieldSet(this, _MutableAsset_astDirty, true, "f");
66
+ __classPrivateFieldSet(this, _MutableAsset_ast, ast, "f");
67
+ }
68
+ isASTDirty() {
69
+ return __classPrivateFieldGet(this, _MutableAsset_astDirty, "f");
70
+ }
71
+ // eslint-disable-next-line require-await
72
+ async getCode() {
73
+ return __classPrivateFieldGet(this, _MutableAsset_contents, "f").toString();
74
+ }
75
+ setCode(code) {
76
+ __classPrivateFieldSet(this, _MutableAsset_contents, Buffer.from(code), "f");
77
+ }
78
+ // eslint-disable-next-line require-await
79
+ async getBuffer() {
80
+ return __classPrivateFieldGet(this, _MutableAsset_contents, "f");
81
+ }
82
+ setBuffer(buf) {
83
+ __classPrivateFieldSet(this, _MutableAsset_contents, buf, "f");
84
+ }
85
+ getStream() {
86
+ return stream_1.Readable.from(__classPrivateFieldGet(this, _MutableAsset_contents, "f"));
87
+ }
88
+ setStream(stream) {
89
+ const data = [];
90
+ stream.on('data', (chunk) => {
91
+ data.push(chunk);
92
+ });
93
+ stream.on('end', () => {
94
+ __classPrivateFieldSet(this, _MutableAsset_contents, Buffer.concat(data), "f");
95
+ });
96
+ stream.on('error', () => {
97
+ throw new Error('MutableAsset.setStream()');
98
+ });
99
+ }
100
+ getMap() {
101
+ // Only create the source map if it is requested
102
+ if (!__classPrivateFieldGet(this, _MutableAsset_sourceMap, "f") && __classPrivateFieldGet(this, _MutableAsset_map, "f") && typeof __classPrivateFieldGet(this, _MutableAsset_map, "f") === 'string') {
103
+ let sourceMap = new source_map_1.default(__classPrivateFieldGet(this, _MutableAsset_projectRoot, "f"));
104
+ sourceMap.addVLQMap(JSON.parse(__classPrivateFieldGet(this, _MutableAsset_map, "f")));
105
+ __classPrivateFieldSet(this, _MutableAsset_sourceMap, sourceMap, "f");
106
+ }
107
+ return Promise.resolve(__classPrivateFieldGet(this, _MutableAsset_sourceMap, "f"));
108
+ }
109
+ // eslint-disable-next-line no-unused-vars
110
+ setMap(sourceMap) {
111
+ this.isMapDirty = true;
112
+ __classPrivateFieldSet(this, _MutableAsset_sourceMap, sourceMap, "f");
113
+ }
114
+ getMapBuffer() {
115
+ throw new Error('getMapBuffer() is considered an internal implementation detail, please use getMap() instead');
116
+ }
117
+ getDependencies() {
118
+ throw new Error('MutableAsset.getDependencies');
119
+ }
120
+ // eslint-disable-next-line no-unused-vars
121
+ addDependency(options) {
122
+ throw new Error('MutableAsset.addDependency()');
123
+ }
124
+ // eslint-disable-next-line no-unused-vars
125
+ addURLDependency(url, opts) {
126
+ throw new Error('MutableAsset.addURLDependency()');
127
+ }
128
+ // eslint-disable-next-line no-unused-vars
129
+ setEnvironment(opts) {
130
+ throw new Error('MutableAsset.setEnvironment()');
131
+ }
132
+ // eslint-disable-next-line no-unused-vars
133
+ invalidateOnFileChange(invalidation) {
134
+ // TODO: Forward invalidations to Rust
135
+ }
136
+ // eslint-disable-next-line no-unused-vars
137
+ invalidateOnFileCreate(invalidation) {
138
+ // TODO: Forward invalidations to Rust
139
+ }
140
+ // eslint-disable-next-line no-unused-vars
141
+ invalidateOnEnvChange(invalidation) {
142
+ // TODO: Forward invalidations to Rust
143
+ }
144
+ invalidateOnStartup() {
145
+ // TODO: Forward invalidations to Rust
146
+ }
147
+ invalidateOnBuild() {
148
+ // TODO: Forward invalidations to Rust
149
+ }
150
+ }
151
+ exports.MutableAsset = MutableAsset;
152
+ _MutableAsset_astDirty = new WeakMap(), _MutableAsset_ast = new WeakMap(), _MutableAsset_contents = new WeakMap(), _MutableAsset_inner = new WeakMap(), _MutableAsset_map = new WeakMap(), _MutableAsset_projectRoot = new WeakMap(), _MutableAsset_sourceMap = new WeakMap();
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ var _PluginConfig_inner;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.PluginConfig = void 0;
19
+ const Config_1 = __importDefault(require("../../../public/Config"));
20
+ const InternalConfig_1 = require("../../../InternalConfig");
21
+ class PluginConfig {
22
+ constructor(configOpts, options) {
23
+ _PluginConfig_inner.set(this, void 0);
24
+ let internalConfig = (0, InternalConfig_1.createConfig)(configOpts);
25
+ this.isSource = internalConfig.isSource;
26
+ this.searchPath = internalConfig.searchPath;
27
+ // @ts-expect-error TS2564
28
+ this.env = internalConfig.env;
29
+ __classPrivateFieldSet(this, _PluginConfig_inner, new Config_1.default(internalConfig, options), "f");
30
+ }
31
+ // eslint-disable-next-line no-unused-vars
32
+ invalidateOnFileChange(filePath) { }
33
+ // eslint-disable-next-line no-unused-vars
34
+ invalidateOnFileCreate(invalidations) { }
35
+ // eslint-disable-next-line no-unused-vars
36
+ invalidateOnEnvChange(invalidation) { }
37
+ invalidateOnStartup() { }
38
+ invalidateOnBuild() { }
39
+ // eslint-disable-next-line no-unused-vars
40
+ addDevDependency(options) { }
41
+ // eslint-disable-next-line no-unused-vars
42
+ setCacheKey(key) { }
43
+ getConfig(
44
+ // eslint-disable-next-line no-unused-vars
45
+ filePaths,
46
+ // eslint-disable-next-line no-unused-vars
47
+ options) {
48
+ return __classPrivateFieldGet(this, _PluginConfig_inner, "f").getConfig(filePaths, options);
49
+ }
50
+ getConfigFrom(
51
+ // eslint-disable-next-line no-unused-vars
52
+ searchPath,
53
+ // eslint-disable-next-line no-unused-vars
54
+ filePaths,
55
+ // eslint-disable-next-line no-unused-vars
56
+ options) {
57
+ return __classPrivateFieldGet(this, _PluginConfig_inner, "f").getConfigFrom(searchPath, filePaths, options);
58
+ }
59
+ getPackage() {
60
+ return __classPrivateFieldGet(this, _PluginConfig_inner, "f").getPackage();
61
+ }
62
+ }
63
+ exports.PluginConfig = PluginConfig;
64
+ _PluginConfig_inner = new WeakMap();
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var _PluginOptions_options;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PluginOptions = void 0;
16
+ class PluginOptions {
17
+ get env() {
18
+ if (!('env' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
19
+ return process.env;
20
+ // throw new Error('PluginOptions.env');
21
+ }
22
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").env;
23
+ }
24
+ get projectRoot() {
25
+ if (!('projectRoot' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
26
+ throw new Error('PluginOptions.projectRoot');
27
+ }
28
+ this.used = true;
29
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").projectRoot;
30
+ }
31
+ get packageManager() {
32
+ if (!('packageManager' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
33
+ throw new Error('PluginOptions.packageManager');
34
+ }
35
+ this.used = true;
36
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").packageManager;
37
+ }
38
+ get mode() {
39
+ if (!('mode' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
40
+ throw new Error('PluginOptions.mode');
41
+ }
42
+ this.used = true;
43
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").mode;
44
+ }
45
+ get parcelVersion() {
46
+ if (!('parcelVersion' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
47
+ return 'UNKNOWN VERSION';
48
+ // throw new Error('PluginOptions.parcelVersion');
49
+ }
50
+ this.used = true;
51
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").parcelVersion;
52
+ }
53
+ get hmrOptions() {
54
+ if (!('hmrOptions' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
55
+ throw new Error('PluginOptions.hmrOptions');
56
+ }
57
+ this.used = true;
58
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").hmrOptions;
59
+ }
60
+ get serveOptions() {
61
+ if (!('serveOptions' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
62
+ throw new Error('PluginOptions.serveOptions');
63
+ }
64
+ this.used = true;
65
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").serveOptions;
66
+ }
67
+ get shouldBuildLazily() {
68
+ if (!('shouldBuildLazily' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
69
+ throw new Error('PluginOptions.shouldBuildLazily');
70
+ }
71
+ this.used = true;
72
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").shouldBuildLazily;
73
+ }
74
+ get shouldAutoInstall() {
75
+ if (!('shouldAutoInstall' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
76
+ throw new Error('PluginOptions.shouldAutoInstall');
77
+ }
78
+ this.used = true;
79
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").shouldAutoInstall;
80
+ }
81
+ get logLevel() {
82
+ if (!('logLevel' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
83
+ throw new Error('PluginOptions.logLevel');
84
+ }
85
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").logLevel;
86
+ }
87
+ get cacheDir() {
88
+ if (!('cacheDir' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
89
+ throw new Error('PluginOptions.cacheDir');
90
+ }
91
+ this.used = true;
92
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").cacheDir;
93
+ }
94
+ get inputFS() {
95
+ if (!('inputFS' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
96
+ throw new Error('PluginOptions.inputFS');
97
+ }
98
+ this.used = true;
99
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").inputFS;
100
+ }
101
+ get outputFS() {
102
+ if (!('outputFS' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
103
+ throw new Error('PluginOptions.outputFS');
104
+ }
105
+ this.used = true;
106
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").outputFS;
107
+ }
108
+ get instanceId() {
109
+ if (!('instanceId' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
110
+ throw new Error('PluginOptions.instanceId');
111
+ }
112
+ this.used = true;
113
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").instanceId;
114
+ }
115
+ get detailedReport() {
116
+ if (!('detailedReport' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
117
+ throw new Error('PluginOptions.detailedReport');
118
+ }
119
+ this.used = true;
120
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").detailedReport;
121
+ }
122
+ get featureFlags() {
123
+ if (!('featureFlags' in __classPrivateFieldGet(this, _PluginOptions_options, "f"))) {
124
+ throw new Error('PluginOptions.featureFlags');
125
+ }
126
+ this.used = true;
127
+ return __classPrivateFieldGet(this, _PluginOptions_options, "f").featureFlags;
128
+ }
129
+ constructor(options) {
130
+ _PluginOptions_options.set(this, void 0);
131
+ this.used = false;
132
+ // @ts-expect-error TS2322
133
+ __classPrivateFieldSet(this, _PluginOptions_options, options, "f");
134
+ }
135
+ }
136
+ exports.PluginOptions = PluginOptions;
137
+ _PluginOptions_options = new WeakMap();
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginTracer = void 0;
4
+ class PluginTracer {
5
+ // @ts-expect-error TS2416
6
+ createMeasurement() {
7
+ throw new Error('PluginTracer.createMeasurement');
8
+ }
9
+ }
10
+ exports.PluginTracer = PluginTracer;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Target = void 0;
4
+ class Target {
5
+ constructor(inner, env) {
6
+ this.distDir = inner.distDir;
7
+ this.distEntry = inner.distEntry;
8
+ this.name = inner.name;
9
+ this.publicUrl = inner.publicUrl;
10
+ this.loc = inner.loc;
11
+ this.env = env;
12
+ }
13
+ }
14
+ exports.Target = Target;
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultDetector = exports.SideEffectDetector = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ /**
6
+ * Side effect detector using AsyncLocalStorage to track filesystem and environment variable
7
+ * access across concurrent async operations in a Node.js worker thread.
8
+ *
9
+ * Usage:
10
+ * const detector = new SideEffectDetector();
11
+ * detector.install();
12
+ *
13
+ * const [result, sideEffects] = await detector.monitorSideEffects(async () => {
14
+ * return await someOperation();
15
+ * });
16
+ *
17
+ * console.log(sideEffects.fsUsage); // Array of filesystem accesses
18
+ * console.log(sideEffects.envUsage); // Array of environment variable accesses
19
+ */
20
+ class SideEffectDetector {
21
+ constructor() {
22
+ this.asyncStorage = new async_hooks_1.AsyncLocalStorage();
23
+ this.patchesInstalled = false;
24
+ this.originalMethods = {};
25
+ }
26
+ /**
27
+ * Install global patches for filesystem and environment variable monitoring.
28
+ * This should be called once when the worker starts up.
29
+ */
30
+ install() {
31
+ if (this.patchesInstalled) {
32
+ return;
33
+ }
34
+ this._patchFilesystem();
35
+ this._patchProcessEnv();
36
+ this.patchesInstalled = true;
37
+ }
38
+ /**
39
+ * Monitor side effects for an async operation.
40
+ *
41
+ * @param {Function} fn - Async function to monitor
42
+ * @param {Object} options - Optional configuration
43
+ * @param {string} options.label - Optional label for debugging
44
+ * @returns {Promise<[any, SideEffects]>} Tuple of [result, sideEffects]
45
+ */
46
+ monitorSideEffects(packageName, fn) {
47
+ if (!this.patchesInstalled) {
48
+ throw new Error('SideEffectDetector: install() must be called before monitorSideEffects()');
49
+ }
50
+ const context = {
51
+ fsUsage: [],
52
+ envUsage: {
53
+ vars: new Set(),
54
+ didEnumerate: false,
55
+ },
56
+ packageName: packageName,
57
+ };
58
+ return this.asyncStorage.run(context, async () => {
59
+ const result = await fn();
60
+ return [result, context];
61
+ });
62
+ }
63
+ /**
64
+ * Get the current monitoring context, if any.
65
+ * Useful for debugging or custom instrumentation.
66
+ *
67
+ * @returns {Object|null} Current context or null if not monitoring
68
+ */
69
+ getCurrentContext() {
70
+ return this.asyncStorage.getStore() || null;
71
+ }
72
+ /**
73
+ * Check if currently monitoring side effects.
74
+ *
75
+ * @returns {boolean}
76
+ */
77
+ isMonitoring() {
78
+ return this.asyncStorage.getStore() !== undefined;
79
+ }
80
+ /**
81
+ * Patch filesystem methods to record access.
82
+ * @private
83
+ */
84
+ _patchFilesystem() {
85
+ // Inline require this to avoid babel transformer issue
86
+ const fs = require('fs');
87
+ const methodsToPatch = [
88
+ // Sync methods
89
+ 'readFileSync',
90
+ 'writeFileSync',
91
+ 'appendFileSync',
92
+ 'existsSync',
93
+ 'statSync',
94
+ 'lstatSync',
95
+ 'readdirSync',
96
+ 'mkdirSync',
97
+ 'rmdirSync',
98
+ 'unlinkSync',
99
+ 'copyFileSync',
100
+ 'renameSync',
101
+ 'chmodSync',
102
+ 'chownSync',
103
+ // Async methods
104
+ 'readFile',
105
+ 'writeFile',
106
+ 'appendFile',
107
+ 'stat',
108
+ 'lstat',
109
+ 'readdir',
110
+ 'mkdir',
111
+ 'rmdir',
112
+ 'unlink',
113
+ 'copyFile',
114
+ 'rename',
115
+ 'chmod',
116
+ 'chown',
117
+ ];
118
+ methodsToPatch.forEach((method) => {
119
+ if (typeof fs[method] === 'function') {
120
+ this.originalMethods[method] = fs[method];
121
+ const self = this;
122
+ // @ts-expect-error Dynamic method patching
123
+ fs[method] = function (path, ...args) {
124
+ // Record filesystem access in current context
125
+ const context = self.asyncStorage.getStore();
126
+ if (context) {
127
+ context.fsUsage.push({
128
+ method,
129
+ path: typeof path === 'string' ? path : path?.toString(),
130
+ });
131
+ }
132
+ return self.originalMethods[method].call(this, path, ...args);
133
+ };
134
+ }
135
+ });
136
+ // Handle fs.promises methods
137
+ if (fs.promises) {
138
+ const promiseMethodsToPatch = [
139
+ 'readFile',
140
+ 'writeFile',
141
+ 'appendFile',
142
+ 'stat',
143
+ 'lstat',
144
+ 'readdir',
145
+ 'mkdir',
146
+ 'rmdir',
147
+ 'unlink',
148
+ 'copyFile',
149
+ 'rename',
150
+ 'chmod',
151
+ 'chown',
152
+ ];
153
+ const promises = fs.promises;
154
+ promiseMethodsToPatch.forEach((method) => {
155
+ if (typeof promises[method] === 'function') {
156
+ const originalKey = `promises_${method}`;
157
+ this.originalMethods[originalKey] = promises[method];
158
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
159
+ const self = this;
160
+ promises[method] = function (path, ...args) {
161
+ const context = self.asyncStorage.getStore();
162
+ if (context) {
163
+ context.fsUsage.push({
164
+ method: `promises.${method}`,
165
+ path: typeof path === 'string' ? path : String(path),
166
+ });
167
+ }
168
+ return self.originalMethods[originalKey].call(this, path, ...args);
169
+ };
170
+ }
171
+ });
172
+ }
173
+ }
174
+ /**
175
+ * Patch process.env to record environment variable access.
176
+ * @private
177
+ */
178
+ _patchProcessEnv() {
179
+ if (this.originalMethods.processEnv) {
180
+ return; // Already patched
181
+ }
182
+ this.originalMethods.processEnv = process.env;
183
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
184
+ const self = this;
185
+ // The following environment variables are allowed to be accessed by transformers
186
+ const allowedVars = new Set([
187
+ 'ATLASPACK_ENABLE_SENTRY',
188
+ // TODO we should also add the other atlaspack env vars here
189
+ 'NODE_V8_COVERAGE',
190
+ 'VSCODE_INSPECTOR_OPTIONS',
191
+ 'NODE_INSPECTOR_IPC',
192
+ 'FORCE_COLOR',
193
+ 'NO_COLOR',
194
+ 'TTY',
195
+ ]);
196
+ // Create a proxy that intercepts property access
197
+ process.env = new Proxy(this.originalMethods.processEnv, {
198
+ get(target, property) {
199
+ const context = self.asyncStorage.getStore();
200
+ if (context && typeof property === 'string') {
201
+ // Only record if this is a real environment variable access
202
+ // (not internal properties like 'constructor', 'valueOf', etc.)
203
+ if (!allowedVars.has(property) &&
204
+ (property in target || !property.startsWith('_'))) {
205
+ context.envUsage.vars.add(property);
206
+ }
207
+ }
208
+ return target[property];
209
+ },
210
+ set(target, property, value) {
211
+ const context = self.asyncStorage.getStore();
212
+ if (context && typeof property === 'string') {
213
+ if (!allowedVars.has(property) && property in target) {
214
+ context.envUsage.vars.add(property);
215
+ }
216
+ }
217
+ target[property] = value;
218
+ return true;
219
+ },
220
+ has(target, property) {
221
+ const context = self.asyncStorage.getStore();
222
+ if (context && typeof property === 'string') {
223
+ if (!allowedVars.has(property) && property in target) {
224
+ context.envUsage.vars.add(property);
225
+ }
226
+ }
227
+ return property in target;
228
+ },
229
+ ownKeys(target) {
230
+ const context = self.asyncStorage.getStore();
231
+ if (context) {
232
+ context.envUsage.didEnumerate = true;
233
+ }
234
+ return Object.keys(target);
235
+ },
236
+ });
237
+ }
238
+ }
239
+ exports.SideEffectDetector = SideEffectDetector;
240
+ /**
241
+ * Default instance for convenience. Most workers will only need one detector.
242
+ */
243
+ exports.defaultDetector = new SideEffectDetector();