@wyw-in-js/transform 1.0.8 → 2.0.0-alpha.0

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 (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -28
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +7 -8
  178. package/types/index.js +24 -77
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +6 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +4 -24
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
package/types/cache.js CHANGED
@@ -1,16 +1,10 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TransformCacheCollection = void 0;
7
- const crypto_1 = require("crypto");
8
- const node_fs_1 = __importDefault(require("node:fs"));
9
- const shared_1 = require("@wyw-in-js/shared");
10
- const getFileIdx_1 = require("./utils/getFileIdx");
11
- const parseRequest_1 = require("./utils/parseRequest");
1
+ import { createHash } from 'crypto';
2
+ import fs from 'node:fs';
3
+ import { logger } from '@wyw-in-js/shared';
4
+ import { getFileIdx } from './utils/getFileIdx';
5
+ import { stripQueryAndHash } from './utils/parseRequest';
12
6
  function hashContent(content) {
13
- return (0, crypto_1.createHash)('sha256').update(content).digest('hex');
7
+ return createHash('sha256').update(content).digest('hex');
14
8
  }
15
9
  function isMissingFileError(error) {
16
10
  if (!error || typeof error !== 'object') {
@@ -19,13 +13,13 @@ function isMissingFileError(error) {
19
13
  const { code } = error;
20
14
  return code === 'ENOENT' || code === 'ENOTDIR';
21
15
  }
22
- const cacheLogger = shared_1.logger.extend('cache');
16
+ const cacheLogger = logger.extend('cache');
23
17
  const cacheNames = ['barrelManifests', 'entrypoints', 'exports'];
24
18
  const loggers = cacheNames.reduce((acc, key) => ({
25
19
  ...acc,
26
20
  [key]: cacheLogger.extend(key),
27
21
  }), {});
28
- class TransformCacheCollection {
22
+ export class TransformCacheCollection {
29
23
  barrelManifests;
30
24
  entrypoints;
31
25
  exports;
@@ -33,30 +27,67 @@ class TransformCacheCollection {
33
27
  contentHashes = new Map();
34
28
  fileMtimes = new Map();
35
29
  exportDependencies = new Map();
30
+ keySalt = null;
31
+ invalidatedFiles = new Map();
32
+ consumedInvalidationVersions = new Map();
36
33
  constructor(caches = {}) {
37
34
  this.barrelManifests = caches.barrelManifests || new Map();
38
35
  this.entrypoints = caches.entrypoints || new Map();
39
36
  this.exports = caches.exports || new Map();
40
37
  }
38
+ setKeySalt(keySalt) {
39
+ if (this.keySalt === keySalt)
40
+ return;
41
+ const prevKeySalt = this.keySalt;
42
+ this.keySalt = keySalt;
43
+ if (prevKeySalt === null && keySalt) {
44
+ const migrate = (cache) => {
45
+ const entries = Array.from(cache.entries());
46
+ cache.clear();
47
+ entries.forEach(([key, value]) => {
48
+ cache.set(this.getKey(key), value);
49
+ });
50
+ };
51
+ migrate(this.barrelManifests);
52
+ migrate(this.entrypoints);
53
+ migrate(this.exports);
54
+ migrate(this.barrelManifestDependencies);
55
+ migrate(this.exportDependencies);
56
+ return;
57
+ }
58
+ this.barrelManifests.clear();
59
+ this.entrypoints.clear();
60
+ this.exports.clear();
61
+ this.clearCacheDependencies('all');
62
+ }
63
+ getKey(key) {
64
+ if (!this.keySalt)
65
+ return key;
66
+ return `${key}::${this.keySalt}`;
67
+ }
68
+ getKeySalt() {
69
+ return this.keySalt;
70
+ }
41
71
  add(cacheName, key, value) {
42
72
  const cache = this[cacheName];
43
- loggers[cacheName]('%s:add %s %f', (0, getFileIdx_1.getFileIdx)(key), key, () => {
73
+ const cacheKey = this.getKey(key);
74
+ loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {
44
75
  if (value === undefined) {
45
- return cache.has(key) ? 'removed' : 'noop';
76
+ return cache.has(cacheKey) ? 'removed' : 'noop';
46
77
  }
47
- if (!cache.has(key)) {
78
+ if (!cache.has(cacheKey)) {
48
79
  return 'added';
49
80
  }
50
- return cache.get(key) === value ? 'unchanged' : 'updated';
81
+ return cache.get(cacheKey) === value ? 'unchanged' : 'updated';
51
82
  });
52
83
  if (value === undefined) {
53
- cache.delete(key);
84
+ cache.delete(cacheKey);
54
85
  this.contentHashes.delete(key);
55
86
  this.clearCacheDependencies(cacheName, key);
56
87
  return;
57
88
  }
58
89
  this.clearCacheDependencies(cacheName, key);
59
- cache.set(key, value);
90
+ cache.set(cacheKey, value);
60
91
  if ('initialCode' in value) {
61
92
  const maybeOriginalCode = value
62
93
  .originalCode;
@@ -74,7 +105,7 @@ class TransformCacheCollection {
74
105
  return;
75
106
  }
76
107
  try {
77
- const fileContent = node_fs_1.default.readFileSync((0, parseRequest_1.stripQueryAndHash)(key), 'utf8');
108
+ const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');
78
109
  this.setContentHash(key, source, hashContent(fileContent));
79
110
  }
80
111
  catch {
@@ -82,9 +113,9 @@ class TransformCacheCollection {
82
113
  }
83
114
  return;
84
115
  }
85
- if (cacheName === 'barrelManifests') {
116
+ if (cacheName === 'barrelManifests' || cacheName === 'exports') {
86
117
  try {
87
- const fileContent = node_fs_1.default.readFileSync((0, parseRequest_1.stripQueryAndHash)(key), 'utf8');
118
+ const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');
88
119
  this.setContentHash(key, 'fs', hashContent(fileContent));
89
120
  }
90
121
  catch {
@@ -109,76 +140,65 @@ class TransformCacheCollection {
109
140
  }
110
141
  get(cacheName, key) {
111
142
  const cache = this[cacheName];
112
- const res = cache.get(key);
143
+ const res = cache.get(this.getKey(key));
113
144
  loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');
114
145
  return res;
115
146
  }
116
147
  has(cacheName, key) {
117
148
  const cache = this[cacheName];
118
- const res = cache.has(key);
149
+ const res = cache.has(this.getKey(key));
119
150
  loggers[cacheName]('has', key, res);
120
151
  return res;
121
152
  }
122
153
  invalidate(cacheName, key) {
123
154
  const cache = this[cacheName];
124
- if (!cache.has(key)) {
155
+ const cacheKey = this.getKey(key);
156
+ if (!cache.has(cacheKey)) {
125
157
  return;
126
158
  }
127
159
  loggers[cacheName]('invalidate', key);
128
- cache.delete(key);
160
+ cache.delete(cacheKey);
129
161
  this.clearCacheDependencies(cacheName, key);
130
162
  }
131
163
  invalidateForFile(filename) {
132
164
  cacheNames.forEach((cacheName) => {
133
165
  this.invalidate(cacheName, filename);
134
166
  });
167
+ const key = stripQueryAndHash(filename);
168
+ const version = this.invalidatedFiles.get(key) ?? 0;
169
+ this.invalidatedFiles.set(key, version + 1);
135
170
  }
136
- invalidateIfChanged(filename, content, previousVisitedFiles, source = 'loaded', changedFiles = new Set()) {
171
+ consumeInvalidation(filename) {
172
+ const key = stripQueryAndHash(filename);
173
+ const invalidationVersion = this.invalidatedFiles.get(key);
174
+ if (invalidationVersion === undefined) {
175
+ return false;
176
+ }
177
+ const consumedVersion = this.consumedInvalidationVersions.get(filename) ?? 0;
178
+ if (consumedVersion >= invalidationVersion) {
179
+ return false;
180
+ }
181
+ this.consumedInvalidationVersions.set(filename, invalidationVersion);
182
+ return true;
183
+ }
184
+ invalidateIfChanged(filename, content, previousVisitedFiles, source = 'loaded', changedFiles = new Set(), dependencyChangeMemo = new Map(), forceContentCheck = false) {
137
185
  if (changedFiles.has(filename)) {
138
186
  return true;
139
187
  }
140
188
  const visitedFiles = new Set(previousVisitedFiles);
141
189
  const fileEntrypoint = this.get('entrypoints', filename);
142
190
  let anyDepChanged = false;
143
- // We need to check all dependencies of the file
144
- // because they might have changed as well.
145
191
  if (!visitedFiles.has(filename) &&
146
192
  (fileEntrypoint || this.hasCachedDependencies(filename))) {
147
193
  visitedFiles.add(filename);
148
194
  const invalidateOnDependencyChange = fileEntrypoint?.invalidateOnDependencyChange;
149
- const dependenciesToCheck = new Map();
150
- for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {
151
- dependenciesToCheck.set(key, dependency);
152
- }
153
- for (const [key, dependency,] of fileEntrypoint?.invalidationDependencies ?? []) {
154
- if (!dependenciesToCheck.has(key)) {
155
- dependenciesToCheck.set(key, dependency);
156
- }
157
- }
158
- for (const dependencyFilename of this.getCachedDependencies(filename)) {
159
- if (![...dependenciesToCheck.values()].some((dependency) => dependency.resolved === dependencyFilename)) {
160
- dependenciesToCheck.set(dependencyFilename, {
161
- resolved: dependencyFilename,
162
- });
163
- }
164
- }
195
+ const dependenciesToCheck = this.getDependenciesToCheck(filename, fileEntrypoint);
165
196
  for (const [, dependency] of dependenciesToCheck) {
166
197
  const dependencyFilename = dependency.resolved;
167
198
  if (dependencyFilename) {
168
- let dependencyContent;
169
- try {
170
- dependencyContent = node_fs_1.default.readFileSync((0, parseRequest_1.stripQueryAndHash)(dependencyFilename), 'utf8');
171
- }
172
- catch (error) {
173
- if (!isMissingFileError(error)) {
174
- throw error;
175
- }
176
- this.invalidateForFile(dependencyFilename);
177
- anyDepChanged = true;
178
- // eslint-disable-next-line no-continue
179
- continue;
180
- }
181
- const dependencyChanged = this.invalidateIfChanged(dependencyFilename, dependencyContent, visitedFiles, 'fs', changedFiles);
199
+ const dependencyChanged = this.didDependencyChange(dependencyFilename, visitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck ||
200
+ invalidateOnDependencyChange?.has(dependencyFilename) ||
201
+ false);
182
202
  if (dependencyChanged &&
183
203
  invalidateOnDependencyChange?.has(dependencyFilename)) {
184
204
  cacheLogger('dependency affecting output has changed, invalidate all for %s', filename);
@@ -222,14 +242,163 @@ class TransformCacheCollection {
222
242
  }
223
243
  return false;
224
244
  }
245
+ getDependenciesToCheck(filename, fileEntrypoint) {
246
+ const dependenciesToCheck = new Map();
247
+ for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {
248
+ dependenciesToCheck.set(key, dependency);
249
+ }
250
+ for (const [key, dependency] of fileEntrypoint?.invalidationDependencies ??
251
+ []) {
252
+ if (!dependenciesToCheck.has(key)) {
253
+ dependenciesToCheck.set(key, dependency);
254
+ }
255
+ }
256
+ for (const dependencyFilename of this.getCachedDependencies(filename)) {
257
+ if (![...dependenciesToCheck.values()].some((dependency) => dependency.resolved === dependencyFilename)) {
258
+ dependenciesToCheck.set(dependencyFilename, {
259
+ resolved: dependencyFilename,
260
+ });
261
+ }
262
+ }
263
+ return dependenciesToCheck;
264
+ }
265
+ didDependencyChange(dependencyFilename, visitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck = false) {
266
+ if (changedFiles.has(dependencyFilename)) {
267
+ return true;
268
+ }
269
+ const memoized = dependencyChangeMemo.get(dependencyFilename);
270
+ if (memoized !== undefined) {
271
+ return memoized;
272
+ }
273
+ if (visitedFiles.has(dependencyFilename)) {
274
+ return false;
275
+ }
276
+ const strippedDependencyFilename = stripQueryAndHash(dependencyFilename);
277
+ const cachedMtime = this.fileMtimes.get(dependencyFilename);
278
+ const cachedEntrypoint = this.get('entrypoints', dependencyFilename);
279
+ if (cachedMtime !== undefined) {
280
+ let currentMtime;
281
+ try {
282
+ currentMtime = fs.statSync(strippedDependencyFilename).mtimeMs;
283
+ }
284
+ catch (error) {
285
+ if (!isMissingFileError(error)) {
286
+ throw error;
287
+ }
288
+ this.invalidateForFile(dependencyFilename);
289
+ changedFiles.add(dependencyFilename);
290
+ dependencyChangeMemo.set(dependencyFilename, true);
291
+ return true;
292
+ }
293
+ if (currentMtime === cachedMtime) {
294
+ const nestedDependencies = this.getDependenciesToCheck(dependencyFilename, cachedEntrypoint);
295
+ if (forceContentCheck &&
296
+ this.didFileContentHashChange(dependencyFilename, strippedDependencyFilename, changedFiles)) {
297
+ dependencyChangeMemo.set(dependencyFilename, true);
298
+ return true;
299
+ }
300
+ // A cached file without a cached entrypoint was invalidated earlier.
301
+ if (!cachedEntrypoint && nestedDependencies.size === 0) {
302
+ dependencyChangeMemo.set(dependencyFilename, true);
303
+ return true;
304
+ }
305
+ if (nestedDependencies.size === 0) {
306
+ dependencyChangeMemo.set(dependencyFilename, false);
307
+ return false;
308
+ }
309
+ const nextVisitedFiles = new Set(visitedFiles);
310
+ nextVisitedFiles.add(dependencyFilename);
311
+ for (const [, nestedDependency] of nestedDependencies) {
312
+ if (nestedDependency.resolved &&
313
+ this.didDependencyChange(nestedDependency.resolved, nextVisitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck)) {
314
+ this.invalidateForFile(dependencyFilename);
315
+ changedFiles.add(dependencyFilename);
316
+ dependencyChangeMemo.set(dependencyFilename, true);
317
+ return true;
318
+ }
319
+ }
320
+ dependencyChangeMemo.set(dependencyFilename, false);
321
+ return false;
322
+ }
323
+ }
324
+ let dependencyContent;
325
+ try {
326
+ dependencyContent = fs.readFileSync(strippedDependencyFilename, 'utf8');
327
+ }
328
+ catch (error) {
329
+ if (!isMissingFileError(error)) {
330
+ throw error;
331
+ }
332
+ this.invalidateForFile(dependencyFilename);
333
+ changedFiles.add(dependencyFilename);
334
+ dependencyChangeMemo.set(dependencyFilename, true);
335
+ return true;
336
+ }
337
+ const invalidated = this.invalidateIfChanged(dependencyFilename, dependencyContent, visitedFiles, 'fs', changedFiles, dependencyChangeMemo, forceContentCheck);
338
+ dependencyChangeMemo.set(dependencyFilename, invalidated);
339
+ return invalidated;
340
+ }
341
+ didFileContentHashChange(filename, strippedFilename, changedFiles) {
342
+ const previousHash = this.contentHashes.get(filename)?.fs;
343
+ if (previousHash === undefined) {
344
+ return false;
345
+ }
346
+ let content;
347
+ try {
348
+ content = fs.readFileSync(strippedFilename, 'utf8');
349
+ }
350
+ catch (error) {
351
+ if (!isMissingFileError(error)) {
352
+ throw error;
353
+ }
354
+ this.invalidateForFile(filename);
355
+ changedFiles.add(filename);
356
+ return true;
357
+ }
358
+ const nextHash = hashContent(content);
359
+ if (previousHash === nextHash) {
360
+ return false;
361
+ }
362
+ this.setContentHash(filename, 'fs', nextHash);
363
+ this.invalidateForFile(filename);
364
+ changedFiles.add(filename);
365
+ return true;
366
+ }
225
367
  setCacheDependencies(cacheName, key, dependencies) {
226
368
  const cache = this.getDependencyCache(cacheName);
227
369
  const nextDependencies = new Set([...dependencies].filter((dependency) => dependency.length > 0));
370
+ const cacheKey = this.getKey(key);
228
371
  if (nextDependencies.size === 0) {
229
- cache.delete(key);
372
+ cache.delete(cacheKey);
230
373
  return;
231
374
  }
232
- cache.set(key, nextDependencies);
375
+ cache.set(cacheKey, nextDependencies);
376
+ }
377
+ /**
378
+ * Fast check if a file changed on disk since last seen.
379
+ * Uses mtime as a fast path and only reads the file if mtime differs.
380
+ */
381
+ checkFreshness(filename, strippedFilename) {
382
+ try {
383
+ const currentMtime = fs.statSync(strippedFilename).mtimeMs;
384
+ const cachedMtime = this.fileMtimes.get(filename);
385
+ if (cachedMtime !== undefined && currentMtime === cachedMtime) {
386
+ return false;
387
+ }
388
+ const content = fs.readFileSync(strippedFilename, 'utf8');
389
+ this.fileMtimes.set(filename, currentMtime);
390
+ if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {
391
+ return true;
392
+ }
393
+ return false;
394
+ }
395
+ catch (error) {
396
+ if (!isMissingFileError(error)) {
397
+ throw error;
398
+ }
399
+ this.invalidateForFile(filename);
400
+ return true;
401
+ }
233
402
  }
234
403
  clearCacheDependencies(cacheName, key) {
235
404
  if (cacheName === 'all') {
@@ -242,7 +411,7 @@ class TransformCacheCollection {
242
411
  this.barrelManifestDependencies.clear();
243
412
  }
244
413
  else {
245
- this.barrelManifestDependencies.delete(key);
414
+ this.barrelManifestDependencies.delete(this.getKey(key));
246
415
  }
247
416
  return;
248
417
  }
@@ -251,14 +420,15 @@ class TransformCacheCollection {
251
420
  this.exportDependencies.clear();
252
421
  }
253
422
  else {
254
- this.exportDependencies.delete(key);
423
+ this.exportDependencies.delete(this.getKey(key));
255
424
  }
256
425
  }
257
426
  }
258
427
  getCachedDependencies(filename) {
428
+ const key = this.getKey(filename);
259
429
  return new Set([
260
- ...(this.barrelManifestDependencies.get(filename) ?? []),
261
- ...(this.exportDependencies.get(filename) ?? []),
430
+ ...(this.barrelManifestDependencies.get(key) ?? []),
431
+ ...(this.exportDependencies.get(key) ?? []),
262
432
  ]);
263
433
  }
264
434
  getDependencyCache(cacheName) {
@@ -269,33 +439,6 @@ class TransformCacheCollection {
269
439
  hasCachedDependencies(filename) {
270
440
  return this.getCachedDependencies(filename).size > 0;
271
441
  }
272
- /**
273
- * Fast check if a file changed on disk since last seen.
274
- * Uses mtime as a fast path — only reads the file if mtime differs.
275
- * Returns true if the file changed (cache was invalidated).
276
- */
277
- checkFreshness(filename, strippedFilename) {
278
- try {
279
- const currentMtime = node_fs_1.default.statSync(strippedFilename).mtimeMs;
280
- const cachedMtime = this.fileMtimes.get(filename);
281
- if (cachedMtime !== undefined && currentMtime === cachedMtime) {
282
- return false;
283
- }
284
- const content = node_fs_1.default.readFileSync(strippedFilename, 'utf-8');
285
- this.fileMtimes.set(filename, currentMtime);
286
- if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {
287
- return true;
288
- }
289
- return false;
290
- }
291
- catch (error) {
292
- if (!isMissingFileError(error)) {
293
- throw error;
294
- }
295
- this.invalidateForFile(filename);
296
- return true;
297
- }
298
- }
299
442
  setContentHash(filename, source, hash) {
300
443
  const current = this.contentHashes.get(filename);
301
444
  if (current) {
@@ -306,7 +449,7 @@ class TransformCacheCollection {
306
449
  }
307
450
  if (source === 'fs') {
308
451
  try {
309
- this.fileMtimes.set(filename, node_fs_1.default.statSync((0, parseRequest_1.stripQueryAndHash)(filename)).mtimeMs);
452
+ this.fileMtimes.set(filename, fs.statSync(stripQueryAndHash(filename)).mtimeMs);
310
453
  }
311
454
  catch {
312
455
  // ignore
@@ -314,4 +457,3 @@ class TransformCacheCollection {
314
457
  }
315
458
  }
316
459
  }
317
- exports.TransformCacheCollection = TransformCacheCollection;
@@ -1,17 +1,11 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createFileReporter = void 0;
7
1
  /* eslint-disable no-console */
8
- const fs_1 = require("fs");
9
- const path_1 = __importDefault(require("path"));
10
- const EventEmitter_1 = require("../utils/EventEmitter");
2
+ import { createWriteStream, existsSync, mkdirSync } from 'fs';
3
+ import path from 'path';
4
+ import { EventEmitter, isOnActionStartArgs } from '../utils/EventEmitter';
11
5
  const workingDir = process.cwd();
12
6
  function replacer(_key, value) {
13
- if (typeof value === 'string' && path_1.default.isAbsolute(value)) {
14
- return path_1.default.relative(workingDir, value);
7
+ if (typeof value === 'string' && path.isAbsolute(value)) {
8
+ return path.relative(workingDir, value);
15
9
  }
16
10
  if (value instanceof Map) {
17
11
  return Array.from(value.entries()).reduce((obj, [k, v]) => {
@@ -38,7 +32,7 @@ function printTimings(timings, startedAt, sourceRoot) {
38
32
  .sort(([a], [b]) => a.localeCompare(b))
39
33
  .forEach(([value, time]) => {
40
34
  const name = value.startsWith(sourceRoot)
41
- ? path_1.default.relative(sourceRoot, value)
35
+ ? path.relative(sourceRoot, value)
42
36
  : value;
43
37
  console.log(` ${name}: ${time}ms`);
44
38
  });
@@ -47,24 +41,25 @@ function printTimings(timings, startedAt, sourceRoot) {
47
41
  const writeJSONl = (stream, data) => {
48
42
  stream.write(`${JSON.stringify(data, replacer)}\n`);
49
43
  };
50
- const createFileReporter = (options = false) => {
44
+ export const createFileReporter = (options = false) => {
51
45
  if (!options || !options.dir) {
52
46
  return {
53
- emitter: EventEmitter_1.EventEmitter.dummy,
47
+ emitter: EventEmitter.dummy,
54
48
  onDone: () => { },
55
49
  };
56
50
  }
57
- const reportFolder = (0, fs_1.existsSync)(options.dir)
51
+ const reportFolder = existsSync(options.dir)
58
52
  ? options.dir
59
- : (0, fs_1.mkdirSync)(options.dir, {
53
+ : mkdirSync(options.dir, {
60
54
  recursive: true,
61
55
  });
62
56
  if (!reportFolder) {
63
57
  throw new Error(`Could not create directory ${options.dir}`);
64
58
  }
65
- const actionStream = (0, fs_1.createWriteStream)(path_1.default.join(options.dir, 'actions.jsonl'));
66
- const dependenciesStream = (0, fs_1.createWriteStream)(path_1.default.join(options.dir, 'dependencies.jsonl'));
67
- const entrypointStream = (0, fs_1.createWriteStream)(path_1.default.join(options.dir, 'entrypoints.jsonl'));
59
+ const actionStream = createWriteStream(path.join(options.dir, 'actions.jsonl'));
60
+ const dependenciesStream = createWriteStream(path.join(options.dir, 'dependencies.jsonl'));
61
+ const entrypointStream = createWriteStream(path.join(options.dir, 'entrypoints.jsonl'));
62
+ const staticResolveStream = createWriteStream(path.join(options.dir, 'static-resolve.jsonl'));
68
63
  const startedAt = performance.now();
69
64
  const timings = new Map();
70
65
  const addTiming = (label, key, value) => {
@@ -85,6 +80,10 @@ const createFileReporter = (options = false) => {
85
80
  const processSingleEvent = (meta) => {
86
81
  if (meta.type === 'dependency') {
87
82
  processDependencyEvent(meta);
83
+ return;
84
+ }
85
+ if (meta.type === 'staticResolve') {
86
+ writeJSONl(staticResolveStream, meta);
88
87
  }
89
88
  };
90
89
  const startTimes = new Map();
@@ -109,7 +108,7 @@ const createFileReporter = (options = false) => {
109
108
  };
110
109
  let actionId = 0;
111
110
  const onAction = (...args) => {
112
- if ((0, EventEmitter_1.isOnActionStartArgs)(args)) {
111
+ if (isOnActionStartArgs(args)) {
113
112
  const [, timestamp, type, idx, entrypointRef] = args;
114
113
  writeJSONl(actionStream, {
115
114
  actionId,
@@ -134,7 +133,7 @@ const createFileReporter = (options = false) => {
134
133
  const onEntrypointEvent = (emitterId, timestamp, event) => {
135
134
  entrypointStream.write(`${JSON.stringify([emitterId, timestamp, event])}\n`);
136
135
  };
137
- const emitter = new EventEmitter_1.EventEmitter(onEvent, onAction, onEntrypointEvent);
136
+ const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);
138
137
  return {
139
138
  emitter,
140
139
  onDone: (sourceRoot) => {
@@ -144,8 +143,9 @@ const createFileReporter = (options = false) => {
144
143
  }
145
144
  actionStream.end();
146
145
  dependenciesStream.end();
146
+ entrypointStream.end();
147
+ staticResolveStream.end();
147
148
  timings.clear();
148
149
  },
149
150
  };
150
151
  };
151
- exports.createFileReporter = createFileReporter;
@@ -0,0 +1,88 @@
1
+ import type { Entrypoint } from '../transform/Entrypoint';
2
+ import type { Services } from '../transform/types';
3
+ type EvaluateResult = {
4
+ values: Map<string, unknown> | null;
5
+ dependencies: string[];
6
+ };
7
+ export declare const stripEntrypointGlobalsFromRunnerContext: (globals: Record<string, unknown>, entrypoint: string) => Record<string, unknown>;
8
+ export declare class EvalBroker {
9
+ private readonly services;
10
+ private readonly asyncResolve;
11
+ private runner;
12
+ private runnerInputQueue;
13
+ private runnerReady;
14
+ private lastInitKey;
15
+ private lastHappyDomEnabled;
16
+ private evalQueue;
17
+ private readonly pending;
18
+ private nextId;
19
+ private readonly resolveCache;
20
+ private readonly resolveInFlight;
21
+ private readonly loadCache;
22
+ private readonly loadInFlight;
23
+ private readonly importsByModule;
24
+ private readonly onlyByModule;
25
+ private readonly runtimeDependenciesByModule;
26
+ private readonly emittedDependencies;
27
+ private readonly lastSentLoadByModule;
28
+ private pendingEvals;
29
+ private evalFlushScheduled;
30
+ private stableInitHashCache;
31
+ private evalSeq;
32
+ private happyDomDisabled;
33
+ private happyDomDisableWarned;
34
+ private activeResolveRootId;
35
+ private currentServices;
36
+ constructor(services: Services, asyncResolve: (what: string, importer: string, stack: string[]) => Promise<string | null>);
37
+ private ensureImportsMapping;
38
+ private getImportOnly;
39
+ private getLoadRequestOnly;
40
+ evaluate(entrypoint: Entrypoint, services?: Services): Promise<EvaluateResult>;
41
+ private scheduleEvalFlush;
42
+ private runEvalBatch;
43
+ private runOneEntrypoint;
44
+ private resetPerEntrypointState;
45
+ private applyModuleExports;
46
+ dispose(): void;
47
+ private createRunnerProcess;
48
+ private attachRunnerListeners;
49
+ private ensureRunner;
50
+ private initIsolatedRunner;
51
+ private replaceRunner;
52
+ private getStableInitHash;
53
+ private initRunner;
54
+ private getRunnerFeatures;
55
+ private getInitTimeoutMs;
56
+ private warnHappyDomDisabledOnce;
57
+ private onData;
58
+ private handleMessage;
59
+ private handleRunnerStderr;
60
+ private handleWarn;
61
+ private handleResolve;
62
+ private normalizeResolvedId;
63
+ private resolveImport;
64
+ private getResolveStack;
65
+ private resolveImportImpl;
66
+ private finalizeResolvedImport;
67
+ private emitDependency;
68
+ private trackRuntimeDependency;
69
+ private trackImporterDependency;
70
+ private collectEntrypointDependencies;
71
+ private applyImportOverrides;
72
+ private resolveWithNodeFallback;
73
+ private maybeWarnNodeFallback;
74
+ private handleLoad;
75
+ private loadModule;
76
+ private loadModuleImpl;
77
+ private sendLoadResult;
78
+ private sendMessage;
79
+ private handleSendMessageError;
80
+ private request;
81
+ private resolvePending;
82
+ private rejectPending;
83
+ private rejectAllPending;
84
+ private mergeKnownDependencyOnly;
85
+ }
86
+ export declare const disposeEvalBroker: (cache: Services["cache"]) => void;
87
+ export declare const getEvalBroker: (services: Services, asyncResolve: (what: string, importer: string, stack: string[]) => Promise<string | null>, cacheKey: string) => EvalBroker;
88
+ export {};