@wyw-in-js/transform 1.1.0 → 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 -29
  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 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  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 +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  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 +3 -6
  178. package/types/index.js +24 -82
  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 +2 -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 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -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 +0 -23
  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.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  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 -23
  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
@@ -0,0 +1 @@
1
+ {"mappings":"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","names":[],"sources":["../../../src/transform/generators/rewriteOxcBarrelImports.ts"],"version":3,"sourcesContent":["/* eslint-disable no-continue, @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any, no-param-reassign */\nimport path from 'path';\n\nimport { parseSync } from 'oxc-parser';\nimport type {\n ExportAllDeclaration,\n ExportNamedDeclaration,\n ImportDeclaration,\n ImportSpecifier,\n ModuleExportName,\n Program,\n Statement,\n} from 'oxc-parser';\n\nimport { oxcShaker } from '../../shaker';\nimport { TransformCacheCollection } from '../../cache';\nimport { EventEmitter } from '../../utils/EventEmitter';\nimport { collectOxcExportsAndImports } from '../../utils/collectOxcExportsAndImports';\nimport { analyzeOxcBarrelFile } from '../oxcBarrelManifest';\nimport { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { ITransformAction, Services } from '../types';\nimport type {\n BarrelBlockedReason,\n BarrelManifest,\n BarrelManifestCacheEntry,\n BarrelManifestExport,\n BarrelResolvedBinding,\n RawBarrelManifest,\n} from '../barrelManifest.types';\n\nconst NODE_MODULES_SEGMENT = `${path.sep}node_modules${path.sep}`;\n\ntype RewriteResult = {\n code: string;\n fullyRewrittenSources: string[];\n generatedSources: string[];\n imports: Map<string, string[]> | null;\n optimizedCount: number;\n partialFallbackSources: string[];\n preResolvedImports: IEntrypointDependency[];\n skippedCount: number;\n};\n\ntype RewriteMode = 'full' | 'partial' | 'unchanged';\n\ntype StatementRewriteResult = {\n generatedSources: string[];\n mode: RewriteMode;\n statements: string[];\n};\n\ntype ResolvedDependencyMap = Map<string, IEntrypointDependency>;\n\ntype StarCandidate = {\n binding: BarrelResolvedBinding;\n exported: string;\n};\n\ntype RewrittenImportSpecifier =\n | {\n kind: 'default';\n local: string;\n source: string;\n }\n | {\n imported: string;\n kind: 'named';\n local: string;\n source: string;\n };\n\ntype RewrittenExportSpecifier =\n | {\n exported: string;\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n exported: string;\n kind: 'namespace';\n source: string;\n };\n\ntype IneligibleBarrelEntry = Exclude<BarrelManifestCacheEntry, BarrelManifest>;\n\ntype Replacement = {\n end: number;\n start: number;\n value: string;\n};\n\nconst createAnalysisServices = (services: Services): Services => ({\n ...services,\n cache: new TransformCacheCollection({\n barrelManifests: services.cache.barrelManifests,\n exports: services.cache.exports,\n }),\n eventEmitter: EventEmitter.dummy,\n});\n\nconst addBinding = (\n manifest: Record<string, BarrelManifestExport>,\n exported: string,\n binding: BarrelResolvedBinding,\n explicitExports: Set<string>\n) => {\n const existing = manifest[exported];\n if (explicitExports.has(exported)) {\n return;\n }\n\n if (!existing) {\n manifest[exported] = binding;\n return;\n }\n\n if (existing.kind === 'blocked') {\n return;\n }\n\n if (!isSameBinding(existing, binding)) {\n manifest[exported] = {\n kind: 'blocked',\n reason: 'ambiguous',\n };\n }\n};\n\nconst addBlockedExport = (\n manifest: Record<string, BarrelManifestExport>,\n exported: string,\n reason: BarrelBlockedReason\n) => {\n manifest[exported] = {\n kind: 'blocked',\n reason,\n };\n};\n\nconst addImport = (\n imports: Map<string, string[]>,\n source: string,\n imported: string\n): void => {\n const bucket = imports.get(source) ?? [];\n if (!bucket.includes(imported)) {\n bucket.push(imported);\n }\n\n imports.set(source, bucket);\n};\n\nconst applyReplacements = (\n code: string,\n replacements: Replacement[]\n): string => {\n let result = code;\n replacements\n .sort((a, b) => b.start - a.start)\n .forEach((replacement) => {\n result =\n result.slice(0, replacement.start) +\n replacement.value +\n result.slice(replacement.end);\n });\n\n return result;\n};\n\nconst buildResolvedDependencyMap = (\n resolvedImports: IEntrypointDependency[]\n): ResolvedDependencyMap =>\n new Map(resolvedImports.map((dependency) => [dependency.source, dependency]));\n\nconst isSameBinding = (\n left: BarrelResolvedBinding,\n right: BarrelResolvedBinding\n): boolean => {\n if (left.kind !== right.kind) {\n return false;\n }\n\n if (left.source !== right.source) {\n return false;\n }\n\n if (left.kind === 'named' && right.kind === 'named') {\n return left.imported === right.imported;\n }\n\n return true;\n};\n\nconst isValidIdentifier = (name: string): boolean =>\n /^[$A-Z_a-z][$\\w]*$/.test(name);\n\nconst canEmitNamedReexport = (imported: string): boolean =>\n imported === 'default' || isValidIdentifier(imported);\n\nconst quote = (value: string): string => JSON.stringify(value);\n\nconst moduleName = (node: ModuleExportName): string =>\n node.type === 'Literal' ? String(node.value) : node.name;\n\nconst importedNameCode = (name: string): string =>\n name === 'default' || isValidIdentifier(name) ? name : quote(name);\n\nconst exportedNameCode = (name: string): string =>\n isValidIdentifier(name) ? name : quote(name);\n\nconst importSpecifierCode = (specifier: RewrittenImportSpecifier): string => {\n if (specifier.kind === 'default') {\n return specifier.local;\n }\n\n const imported = importedNameCode(specifier.imported);\n return imported === specifier.local\n ? imported\n : `${imported} as ${specifier.local}`;\n};\n\nconst exportSpecifierCode = (specifier: RewrittenExportSpecifier): string => {\n if (specifier.kind === 'namespace') {\n return `* as ${specifier.exported}`;\n }\n\n const imported = importedNameCode(specifier.imported);\n const exported = exportedNameCode(specifier.exported);\n return imported === exported ? imported : `${imported} as ${exported}`;\n};\n\nfunction parseProgram(code: string, filename: string): Program {\n const parsed = parseSync(filename, code, {\n astType:\n filename.endsWith('.ts') || filename.endsWith('.tsx') ? 'ts' : 'js',\n range: true,\n sourceType: 'module',\n });\n const fatalError = parsed.errors.find((error) => error.severity === 'Error');\n if (fatalError) {\n throw new Error(fatalError.message);\n }\n\n return parsed.program as Program;\n}\n\nfunction createAnalysisEntrypoint(\n services: Services,\n filename: string,\n loadedCode?: string\n): Entrypoint {\n return Entrypoint.createRoot(services, filename, ['*'], loadedCode);\n}\n\nfunction getUniqueSources(raw: RawBarrelManifest): string[] {\n return Array.from(\n new Set([\n ...raw.reexports.map((reexport) => reexport.source),\n ...raw.exportAll,\n ])\n );\n}\n\nfunction buildImportsForResolve(raw: RawBarrelManifest): Map<string, string[]> {\n return new Map(getUniqueSources(raw).map((source) => [source, []]));\n}\n\nfunction getReexportResolutionMap(\n resolvedImports: IEntrypointDependency[]\n): Map<string, string | null> {\n return new Map(\n resolvedImports.map((dependency) => [\n dependency.source,\n dependency.resolved,\n ])\n );\n}\n\nfunction isBarrelEntry(\n entry: BarrelManifestCacheEntry\n): entry is BarrelManifest {\n return entry.kind === 'barrel';\n}\n\nfunction isRawBarrelManifest(\n entry: BarrelManifestCacheEntry | RawBarrelManifest\n): entry is RawBarrelManifest {\n return 'reexports' in entry;\n}\n\nfunction shouldUseDirectExports(\n reason: IneligibleBarrelEntry['reason']\n): boolean {\n return reason === 'impure';\n}\n\nfunction emitRewriteSkipped(\n action: ITransformAction,\n source: string,\n reason: BarrelBlockedReason\n) {\n action.services.eventEmitter.single({\n file: action.entrypoint.name,\n kind: 'barrelRewriteSkipped',\n reason,\n source,\n });\n}\n\nfunction getManifestExport(\n manifest: BarrelManifest,\n exported: string\n): BarrelManifestExport | null {\n return manifest.exports[exported] ?? null;\n}\n\nfunction collectOptimizedImports(\n code: string,\n filename: string\n): Map<string, string[]> {\n const imports = new Map<string, string[]>();\n const program = parseProgram(code, filename);\n\n for (const statement of program.body as Statement[]) {\n if (statement.type === 'ImportDeclaration') {\n if (statement.importKind === 'type') {\n continue;\n }\n\n if (statement.specifiers.length === 0) {\n addImport(imports, statement.source.value, 'side-effect');\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (\n specifier.type === 'ImportSpecifier' &&\n specifier.importKind === 'type'\n ) {\n continue;\n }\n\n if (specifier.type === 'ImportDefaultSpecifier') {\n addImport(imports, statement.source.value, 'default');\n continue;\n }\n\n if (specifier.type === 'ImportNamespaceSpecifier') {\n addImport(imports, statement.source.value, '*');\n continue;\n }\n\n addImport(\n imports,\n statement.source.value,\n moduleName(specifier.imported)\n );\n }\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration' && statement.source) {\n if (statement.exportKind === 'type') {\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (\n specifier.type === 'ExportSpecifier' &&\n specifier.exportKind !== 'type'\n ) {\n addImport(\n imports,\n statement.source.value,\n moduleName(specifier.local)\n );\n }\n }\n continue;\n }\n\n if (statement.type === 'ExportAllDeclaration') {\n if (statement.exportKind !== 'type') {\n addImport(imports, statement.source.value, '*');\n }\n }\n }\n\n return imports;\n}\n\nfunction groupImportSpecifiers(\n optimized: RewrittenImportSpecifier[]\n): string[] {\n const grouped = new Map<\n string,\n {\n defaults: RewrittenImportSpecifier[];\n named: RewrittenImportSpecifier[];\n }\n >();\n\n for (const specifier of optimized) {\n if (!grouped.has(specifier.source)) {\n grouped.set(specifier.source, {\n defaults: [],\n named: [],\n });\n }\n\n const bucket = grouped.get(specifier.source)!;\n if (specifier.kind === 'default') {\n bucket.defaults.push(specifier);\n } else {\n bucket.named.push(specifier);\n }\n }\n\n const declarations: string[] = [];\n for (const [source, bucket] of grouped) {\n const named = bucket.named.map(importSpecifierCode);\n if (bucket.defaults.length === 0) {\n declarations.push(\n `import { ${named.join(', ')} } from ${quote(source)};`\n );\n continue;\n }\n\n const firstDefault = importSpecifierCode(bucket.defaults[0]);\n declarations.push(\n named.length > 0\n ? `import ${firstDefault}, { ${named.join(', ')} } from ${quote(\n source\n )};`\n : `import ${firstDefault} from ${quote(source)};`\n );\n\n bucket.defaults.slice(1).forEach((specifier) => {\n declarations.push(\n `import ${importSpecifierCode(specifier)} from ${quote(source)};`\n );\n });\n }\n\n return declarations;\n}\n\nfunction groupExportSpecifiers(\n optimized: RewrittenExportSpecifier[]\n): string[] {\n const grouped = new Map<string, RewrittenExportSpecifier[]>();\n const namespaceDeclarations: string[] = [];\n\n for (const specifier of optimized) {\n if (specifier.kind === 'namespace') {\n namespaceDeclarations.push(\n `export * as ${specifier.exported} from ${quote(specifier.source)};`\n );\n continue;\n }\n\n if (!grouped.has(specifier.source)) {\n grouped.set(specifier.source, []);\n }\n\n grouped.get(specifier.source)!.push(specifier);\n }\n\n return [\n ...namespaceDeclarations,\n ...Array.from(grouped.entries()).map(\n ([source, specifiers]) =>\n `export { ${specifiers\n .map(exportSpecifierCode)\n .join(', ')} } from ${quote(source)};`\n ),\n ];\n}\n\nconst sourceLiteral = (source: string): string => quote(source);\n\nfunction createImportFallback(\n code: string,\n statement: ImportDeclaration,\n fallbackSpecifiers: ImportDeclaration['specifiers']\n): string | null {\n if (fallbackSpecifiers.length === 0) {\n return null;\n }\n\n const defaults = fallbackSpecifiers.filter(\n (specifier) => specifier.type === 'ImportDefaultSpecifier'\n );\n const namespaces = fallbackSpecifiers.filter(\n (specifier) => specifier.type === 'ImportNamespaceSpecifier'\n );\n const named = fallbackSpecifiers.filter(\n (specifier): specifier is ImportSpecifier =>\n specifier.type === 'ImportSpecifier'\n );\n const renderedNamed = named.map((specifier) =>\n code.slice(specifier.start, specifier.end)\n );\n const source = sourceLiteral(statement.source.value);\n\n if (defaults.length > 0) {\n const prefix = code.slice(defaults[0].start, defaults[0].end);\n if (namespaces.length > 0) {\n return `import ${prefix}, ${code.slice(\n namespaces[0].start,\n namespaces[0].end\n )} from ${source};`;\n }\n\n if (renderedNamed.length > 0) {\n return `import ${prefix}, { ${renderedNamed.join(\n ', '\n )} } from ${source};`;\n }\n\n return `import ${prefix} from ${source};`;\n }\n\n if (namespaces.length > 0) {\n return `import ${code.slice(\n namespaces[0].start,\n namespaces[0].end\n )} from ${source};`;\n }\n\n return `import { ${renderedNamed.join(', ')} } from ${source};`;\n}\n\nfunction createExportFallback(\n code: string,\n statement: ExportNamedDeclaration,\n fallbackSpecifiers: ExportNamedDeclaration['specifiers']\n): string | null {\n if (!statement.source || fallbackSpecifiers.length === 0) {\n return null;\n }\n\n return `export { ${fallbackSpecifiers\n .map((specifier) => code.slice(specifier.start, specifier.end))\n .join(', ')} } from ${sourceLiteral(statement.source.value)};`;\n}\n\nfunction* getNamedBinding(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n imported: string,\n stack: Set<string>\n): Generator<any, BarrelManifestExport, any> {\n if (stack.has(targetResolved)) {\n return {\n kind: 'blocked',\n reason: 'cycle',\n };\n }\n\n const targetManifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n const resolved = getManifestExport(targetManifest, imported);\n if (resolved) {\n return resolved;\n }\n\n return {\n kind: 'blocked',\n reason: targetManifest.complete ? 'unresolved' : 'unknown-star',\n };\n }\n\n return {\n kind: 'named',\n imported,\n source: targetResolved,\n };\n}\n\nfunction* getStarCandidates(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n stack: Set<string>\n): Generator<\n any,\n { candidates: StarCandidate[]; complete: boolean; dependencies: string[] },\n any\n> {\n if (stack.has(targetResolved)) {\n return {\n candidates: [],\n complete: false,\n dependencies: [],\n };\n }\n\n const targetManifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n if (!targetManifest.complete) {\n return {\n candidates: [],\n complete: false,\n dependencies: [],\n };\n }\n\n return {\n candidates: Object.entries(targetManifest.exports)\n .filter(\n ([exported, binding]) =>\n exported !== 'default' && binding.kind !== 'blocked'\n )\n .map(([exported, binding]) => ({\n binding: binding as BarrelResolvedBinding,\n exported,\n })),\n complete: true,\n dependencies: [],\n };\n }\n\n if (!shouldUseDirectExports(targetManifest.reason)) {\n return {\n candidates: [],\n complete: false,\n dependencies: [],\n };\n }\n\n const exports = yield* getExportsForFile.call(\n this,\n analysisServices,\n targetResolved\n );\n const dependencies = yield* getWildcardExportDependencies.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n return {\n candidates: exports\n .filter((exported) => exported !== 'default')\n .map((exported) => ({\n binding: {\n kind: 'named',\n imported: exported,\n source: targetResolved,\n } satisfies BarrelResolvedBinding,\n exported,\n })),\n complete: true,\n dependencies,\n };\n}\n\nfunction* getWildcardExportDependencies(\n this: ITransformAction,\n analysisServices: Services,\n filename: string,\n stack: Set<string>\n): Generator<any, string[], any> {\n if (stack.has(filename)) {\n return [];\n }\n\n const loadedAndParsed = analysisServices.loadAndParseFn(\n analysisServices,\n filename,\n undefined,\n analysisServices.log\n );\n\n if (\n loadedAndParsed.evaluator === 'ignored' ||\n loadedAndParsed.evaluator !== oxcShaker\n ) {\n return [];\n }\n\n const exportNames = yield* getExportsForFile.call(\n this,\n analysisServices,\n filename\n );\n this.services.cache.add('exports', filename, exportNames);\n\n const wildcardReexports = collectOxcExportsAndImports(\n loadedAndParsed.code,\n filename\n ).reexports.filter((reexport) => reexport.exported === '*');\n\n if (wildcardReexports.length === 0) {\n return [];\n }\n\n const resolveEntrypoint = createAnalysisEntrypoint(\n analysisServices,\n filename,\n loadedAndParsed.code\n );\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n resolveEntrypoint,\n {\n imports: new Map(\n wildcardReexports.map((reexport) => [reexport.source, []])\n ),\n },\n null\n );\n\n const dependencies = new Set<string>();\n const nextStack = new Set(stack);\n nextStack.add(filename);\n\n for (const dependency of resolvedImports) {\n if (!dependency.resolved) {\n continue;\n }\n\n dependencies.add(dependency.resolved);\n const nested = yield* getWildcardExportDependencies.call(\n this,\n analysisServices,\n dependency.resolved,\n nextStack\n );\n nested.forEach((item) => dependencies.add(item));\n }\n\n this.services.cache.setCacheDependencies('exports', filename, dependencies);\n\n return [...dependencies];\n}\n\nfunction* getExportsForFile(\n this: ITransformAction,\n services: Services,\n filename: string\n): Generator<any, string[], any> {\n const entrypoint = createAnalysisEntrypoint(services, filename);\n return yield* this.getNext('getExports', entrypoint, undefined, null);\n}\n\nfunction* getOrBuildOxcBarrelManifest(\n this: ITransformAction,\n analysisServices: Services,\n filename: string,\n stack: Set<string> = new Set()\n): Generator<any, BarrelManifestCacheEntry, any> {\n const cached = this.services.cache.get('barrelManifests', filename);\n if (cached) {\n this.services.eventEmitter.single({\n file: filename,\n kind: 'barrelManifest',\n status: 'hit',\n });\n return cached;\n }\n\n const loadedAndParsed = analysisServices.loadAndParseFn(\n analysisServices,\n filename,\n undefined,\n analysisServices.log\n );\n\n if (filename.includes(NODE_MODULES_SEGMENT)) {\n const externalEntry = {\n kind: 'ineligible',\n reason: 'custom-evaluator',\n } as const;\n this.services.cache.add('barrelManifests', filename, externalEntry);\n return externalEntry;\n }\n\n if (loadedAndParsed.evaluator === 'ignored') {\n const ignoredEntry = {\n kind: 'ineligible',\n reason: 'ignored',\n } as const;\n this.services.cache.add('barrelManifests', filename, ignoredEntry);\n return ignoredEntry;\n }\n\n if (loadedAndParsed.evaluator !== oxcShaker) {\n const customEntry = {\n kind: 'ineligible',\n reason: 'custom-evaluator',\n } as const;\n this.services.cache.add('barrelManifests', filename, customEntry);\n return customEntry;\n }\n\n const analyzed = analyzeOxcBarrelFile(loadedAndParsed.code, filename);\n if (!isRawBarrelManifest(analyzed)) {\n this.services.cache.add('barrelManifests', filename, analyzed);\n return analyzed;\n }\n\n const resolveEntrypoint = createAnalysisEntrypoint(\n analysisServices,\n filename,\n loadedAndParsed.code\n );\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n resolveEntrypoint,\n {\n imports: buildImportsForResolve(analyzed),\n },\n null\n );\n const manifestDependencies = resolvedImports.flatMap((dependency) =>\n dependency.resolved ? [dependency.resolved] : []\n );\n\n const resolutionMap = getReexportResolutionMap(resolvedImports);\n const manifest: BarrelManifest = {\n complete: analyzed.complete,\n exports: {},\n kind: 'barrel',\n };\n const explicitExports = new Set<string>(analyzed.explicitExports);\n const nextStack = new Set(stack);\n nextStack.add(filename);\n\n for (const reexport of analyzed.reexports) {\n explicitExports.add(reexport.exported);\n const targetResolved = resolutionMap.get(reexport.source);\n\n if (!targetResolved) {\n manifest.complete = false;\n addBlockedExport(manifest.exports, reexport.exported, 'unresolved');\n continue;\n }\n\n if (reexport.kind === 'namespace') {\n const namespaceBinding = yield* getNamespaceBinding.call(\n this,\n analysisServices,\n targetResolved,\n nextStack\n );\n manifest.exports[reexport.exported] = namespaceBinding;\n if (namespaceBinding.kind === 'blocked') {\n manifest.complete = false;\n }\n continue;\n }\n\n const binding = yield* getNamedBinding.call(\n this,\n analysisServices,\n targetResolved,\n reexport.imported,\n nextStack\n );\n manifest.exports[reexport.exported] = binding;\n if (binding.kind === 'blocked') {\n manifest.complete = false;\n }\n }\n\n for (const exportAllSource of analyzed.exportAll) {\n const targetResolved = resolutionMap.get(exportAllSource);\n if (!targetResolved) {\n manifest.complete = false;\n continue;\n }\n\n const { candidates, complete, dependencies } =\n yield* getStarCandidates.call(\n this,\n analysisServices,\n targetResolved,\n nextStack\n );\n manifestDependencies.push(...dependencies);\n\n if (!complete) {\n manifest.complete = false;\n continue;\n }\n\n for (const candidate of candidates) {\n addBinding(\n manifest.exports,\n candidate.exported,\n candidate.binding,\n explicitExports\n );\n }\n }\n\n this.services.cache.add('barrelManifests', filename, manifest);\n this.services.cache.setCacheDependencies(\n 'barrelManifests',\n filename,\n manifestDependencies\n );\n this.services.eventEmitter.single({\n complete: manifest.complete,\n file: filename,\n kind: 'barrelManifest',\n status: 'built',\n });\n\n return manifest;\n}\n\nfunction* getNamespaceBinding(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n stack: Set<string>\n): Generator<any, BarrelManifestExport, any> {\n if (stack.has(targetResolved)) {\n return {\n kind: 'blocked',\n reason: 'cycle',\n };\n }\n\n const targetManifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n return {\n kind: 'blocked',\n reason: 'namespace-barrel',\n };\n }\n\n return {\n kind: 'namespace',\n source: targetResolved,\n };\n}\n\nfunction getResolvedDependency(\n dependencies: ResolvedDependencyMap,\n source: string\n): IEntrypointDependency | undefined {\n return dependencies.get(source);\n}\n\nfunction* rewriteImportDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n code: string,\n statement: ImportDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved || statement.specifiers.length === 0) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const manifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const optimized: RewrittenImportSpecifier[] = [];\n const fallback = [] as ImportDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (specifier.type === 'ImportNamespaceSpecifier') {\n fallback.push(specifier);\n continue;\n }\n\n if (specifier.type === 'ImportDefaultSpecifier') {\n const binding = getManifestExport(manifest, 'default');\n if (binding?.kind === 'named' && binding.imported === 'default') {\n optimized.push({\n kind: 'default',\n local: specifier.local.name,\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n continue;\n }\n\n const imported = moduleName(specifier.imported);\n const binding = getManifestExport(manifest, imported);\n\n if (binding?.kind === 'named') {\n optimized.push({\n imported: binding.imported,\n kind: 'named',\n local: specifier.local.name,\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n }\n\n if (optimized.length === 0) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const rewritten = groupImportSpecifiers(optimized);\n const fallbackDeclaration = createImportFallback(code, statement, fallback);\n const mode: RewriteMode = fallbackDeclaration ? 'partial' : 'full';\n\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode,\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode,\n statements: fallbackDeclaration\n ? [fallbackDeclaration, ...rewritten]\n : rewritten,\n };\n}\n\nfunction* rewriteExportNamedDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n code: string,\n statement: ExportNamedDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n if (!statement.source) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const manifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const optimized: RewrittenExportSpecifier[] = [];\n const fallback = [] as ExportNamedDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ExportSpecifier') {\n fallback.push(specifier);\n continue;\n }\n\n const imported = moduleName(specifier.local);\n const exported = moduleName(specifier.exported);\n const binding = getManifestExport(manifest, imported);\n\n if (binding?.kind === 'named' && canEmitNamedReexport(binding.imported)) {\n optimized.push({\n exported,\n imported: binding.imported,\n kind: 'named',\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'namespace' && isValidIdentifier(exported)) {\n optimized.push({\n exported,\n kind: 'namespace',\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n }\n\n if (optimized.length === 0) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const rewritten = groupExportSpecifiers(optimized);\n const fallbackDeclaration = createExportFallback(code, statement, fallback);\n const mode: RewriteMode = fallbackDeclaration ? 'partial' : 'full';\n\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode,\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode,\n statements: fallbackDeclaration\n ? [fallbackDeclaration, ...rewritten]\n : rewritten,\n };\n}\n\nfunction* rewriteExportAllDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n code: string,\n statement: ExportAllDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n if (statement.exported) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const manifest = yield* getOrBuildOxcBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest) || !manifest.complete) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n const optimized: RewrittenExportSpecifier[] = [];\n let hasUnrewritableExport = false;\n for (const [exported, binding] of Object.entries(manifest.exports)) {\n if (exported === 'default' || binding.kind === 'blocked') {\n continue;\n }\n\n if (binding.kind === 'namespace') {\n if (!isValidIdentifier(exported)) {\n emitRewriteSkipped(this, statement.source.value, 'namespace-barrel');\n hasUnrewritableExport = true;\n continue;\n }\n\n optimized.push({\n exported,\n kind: 'namespace',\n source: binding.source,\n });\n continue;\n }\n\n if (!canEmitNamedReexport(binding.imported)) {\n emitRewriteSkipped(this, statement.source.value, 'unknown-star');\n hasUnrewritableExport = true;\n continue;\n }\n\n optimized.push({\n exported,\n imported: binding.imported,\n kind: 'named',\n source: binding.source,\n });\n }\n\n if (hasUnrewritableExport) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [code.slice(statement.start, statement.end)],\n };\n }\n\n if (optimized.length === 0) {\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode: 'full',\n optimized: 0,\n source: statement.source.value,\n });\n\n return {\n generatedSources: [],\n mode: 'full',\n statements: [],\n };\n }\n\n this.services.eventEmitter.single({\n complete: true,\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode: 'full',\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode: 'full',\n statements: groupExportSpecifiers(optimized),\n };\n}\n\nexport function* rewriteOptimizedOxcBarrelImports(\n this: ITransformAction,\n code: string,\n filename: string,\n resolvedImports: IEntrypointDependency[]\n): Generator<any, RewriteResult, any> {\n const dependencies = buildResolvedDependencyMap(resolvedImports);\n const analysisServices = createAnalysisServices(this.services);\n const program = parseProgram(code, filename);\n const replacements: Replacement[] = [];\n const generatedSources = new Set<string>();\n let optimizedCount = 0;\n const sourceModes = new Map<string, Exclude<RewriteMode, 'unchanged'>>();\n let skippedCount = 0;\n\n const recordSourceMode = (\n source: string,\n mode: RewriteMode,\n statementChanged: boolean\n ) => {\n if (mode === 'unchanged') {\n return;\n }\n\n if (statementChanged) {\n optimizedCount += 1;\n }\n\n if (mode === 'partial') {\n sourceModes.set(source, 'partial');\n return;\n }\n\n if (!sourceModes.has(source)) {\n sourceModes.set(source, 'full');\n }\n };\n\n for (const statement of program.body as Statement[]) {\n let rewritten: StatementRewriteResult | null = null;\n let source: string | null = null;\n\n if (statement.type === 'ImportDeclaration') {\n source = statement.source.value;\n rewritten = yield* rewriteImportDeclaration.call(\n this,\n analysisServices,\n code,\n statement,\n dependencies\n );\n } else if (\n statement.type === 'ExportNamedDeclaration' &&\n statement.source\n ) {\n source = statement.source.value;\n rewritten = yield* rewriteExportNamedDeclaration.call(\n this,\n analysisServices,\n code,\n statement,\n dependencies\n );\n } else if (statement.type === 'ExportAllDeclaration') {\n source = statement.source.value;\n rewritten = yield* rewriteExportAllDeclaration.call(\n this,\n analysisServices,\n code,\n statement,\n dependencies\n );\n if (\n rewritten.mode === 'unchanged' &&\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === code.slice(statement.start, statement.end)\n ) {\n skippedCount += 1;\n }\n }\n\n if (!rewritten || source === null) {\n continue;\n }\n\n const original = code.slice(statement.start, statement.end);\n const next = rewritten.statements.join('\\n');\n const statementChanged = next !== original;\n recordSourceMode(source, rewritten.mode, statementChanged);\n rewritten.generatedSources.forEach((generatedSource) =>\n generatedSources.add(generatedSource)\n );\n\n if (statementChanged) {\n replacements.push({\n end: statement.end,\n start: statement.start,\n value: next,\n });\n }\n }\n\n const rewrittenCode =\n replacements.length > 0 ? applyReplacements(code, replacements) : code;\n const imports = collectOptimizedImports(rewrittenCode, filename);\n const preResolvedImports = Array.from(imports.entries()).flatMap(\n ([source, only]) => {\n const dependency = dependencies.get(source);\n if (dependency) {\n return [\n {\n ...dependency,\n only,\n },\n ];\n }\n\n if (generatedSources.has(source)) {\n return [\n {\n only,\n resolved: source,\n source,\n },\n ];\n }\n\n return [];\n }\n );\n\n return {\n code: rewrittenCode,\n fullyRewrittenSources: Array.from(sourceModes.entries())\n .filter(([, mode]) => mode === 'full')\n .map(([source]) => source),\n generatedSources: Array.from(generatedSources),\n imports,\n optimizedCount,\n partialFallbackSources: Array.from(sourceModes.entries())\n .filter(([, mode]) => mode === 'partial')\n .map(([source]) => source),\n preResolvedImports,\n skippedCount,\n };\n}\n"],"file":"rewriteOxcBarrelImports.js"}
@@ -1,255 +1,246 @@
1
- import { buildOptions } from '../../options/buildOptions';
2
- import dynamicImportPlugin from '../../plugins/dynamic-import';
3
- import preevalPlugin from '../../plugins/preeval';
4
- import { emitCommonJS, shakeToESM, shaker } from '../../shaker';
5
- import { getTransformMetadata } from '../../utils/TransformMetadata';
6
- import { getPluginKey } from '../../utils/getPluginKey';
7
- import { rewriteOptimizedBarrelImports } from './rewriteBarrelImports';
8
- const EMPTY_FILE = '=== empty file ===';
9
- const hasKeyInList = (plugin, list) => {
10
- const pluginKey = getPluginKey(plugin);
11
- return pluginKey ? list.some(i => pluginKey.includes(i)) : false;
1
+ import { oxcShaker } from "../../shaker.js";
2
+ import { collectOxcExportsAndImports } from "../../utils/collectOxcExportsAndImports.js";
3
+ import { emitOxcCommonJS, stripTypesAndJsxWithOxc } from "../../utils/oxcEmit.js";
4
+ import { runOxcPreevalStage } from "../../utils/oxcPreevalStage.js";
5
+ import { shakeOxcToESM } from "../../utils/oxcShaker.js";
6
+ import { rewriteOptimizedOxcBarrelImports } from "./rewriteOxcBarrelImports.js";
7
+ import { resolveStaticOxcPreevalValues } from "./resolveStaticOxcValues.js";
8
+ const EMPTY_FILE = "=== empty file ===";
9
+ const collectImportsFromOxc = (code, filename) => {
10
+ const imports = new Map();
11
+ const addImport = (source, imported) => {
12
+ const bucket = imports.get(source) ?? [];
13
+ if (!bucket.includes(imported)) {
14
+ bucket.push(imported);
15
+ }
16
+ imports.set(source, bucket);
17
+ };
18
+ collectOxcExportsAndImports(code, filename).imports.forEach((item) => {
19
+ addImport(item.source, item.imported || "side-effect");
20
+ });
21
+ return imports;
12
22
  };
13
- function runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter) {
14
- const preShakePlugins = evalConfig.plugins?.filter(i => hasKeyInList(i, pluginOptions.highPriorityPlugins)) ?? [];
15
- const plugins = [...preShakePlugins, [preevalPlugin, {
16
- ...pluginOptions,
17
- eventEmitter
18
- }], dynamicImportPlugin, ...(evalConfig.plugins ?? []).filter(i => !hasKeyInList(i, pluginOptions.highPriorityPlugins))];
19
- const transformConfig = buildOptions({
20
- ...evalConfig,
21
- envName: 'wyw-in-js',
22
- plugins
23
- });
24
- const result = babel.transformFromAstSync(originalAst, code, transformConfig);
25
- if (!result || !result.ast?.program) {
26
- throw new Error('Babel transform failed');
27
- }
28
- return result;
29
- }
30
- const isPrevalOnly = only => only.length === 1 && only[0] === '__wywPreval';
31
- const prepareEvaluatorInput = (services, item, originalAst) => {
32
- const {
33
- only,
34
- loadedAndParsed,
35
- log
36
- } = item;
37
- if (loadedAndParsed.evaluator === 'ignored') {
38
- throw new Error(`Cannot prepare ignored entrypoint ${item.name}`);
39
- }
40
- const {
41
- code,
42
- evalConfig
43
- } = loadedAndParsed;
44
- const {
45
- options,
46
- babel,
47
- eventEmitter
48
- } = services;
49
- const {
50
- pluginOptions
51
- } = options;
52
- const preevalStageResult = eventEmitter.perf('transform:preeval', () => runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter));
53
- const transformMetadata = getTransformMetadata(preevalStageResult.metadata);
54
- if (isPrevalOnly(only) && !transformMetadata) {
55
- log('[evaluator:end] no metadata');
56
- return {
57
- kind: 'short-circuit',
58
- code: preevalStageResult.code
59
- };
60
- }
61
- log('[preeval] metadata %O', transformMetadata);
62
- return {
63
- kind: 'continue',
64
- ast: preevalStageResult.ast,
65
- code: preevalStageResult.code,
66
- evalConfig,
67
- evaluatorConfig: {
68
- onlyExports: only,
69
- highPriorityPlugins: pluginOptions.highPriorityPlugins,
70
- features: pluginOptions.features,
71
- importOverrides: pluginOptions.importOverrides,
72
- root: options.root
73
- },
74
- metadata: transformMetadata ?? null
75
- };
23
+ const isPrevalOnly = (only) => only.length === 1 && only[0] === "__wywPreval";
24
+ const hasWywPrevalExport = (code, filename) => Object.hasOwn(collectOxcExportsAndImports(code, filename).exports, "__wywPreval");
25
+ const normalizeOxcPreparedESM = (code) => code.replace(/^(?:[ \t]*\n)+/, "").replace(/[ \t\n]+$/, "").replace(/\n{2,}/g, "\n").replace(/^const /gm, "var ");
26
+ const ensureOxcPreevalResult = (services, item, originalAst) => {
27
+ const cached = item.getPreevalResult();
28
+ if (cached) {
29
+ return cached;
30
+ }
31
+ const { loadedAndParsed } = item;
32
+ if (loadedAndParsed.evaluator === "ignored") {
33
+ throw new Error("Cannot run Oxc preeval for an ignored entrypoint.");
34
+ }
35
+ const filename = loadedAndParsed.evalConfig.filename ?? item.name;
36
+ const { eventEmitter } = services;
37
+ const { pluginOptions } = services.options;
38
+ const root = services.options.root ?? process.cwd();
39
+ const preevalStageResult = eventEmitter.perf("transform:preeval", () => {
40
+ const result = runOxcPreevalStage(loadedAndParsed.code, {
41
+ filename,
42
+ root
43
+ }, {
44
+ ...pluginOptions,
45
+ eventEmitter
46
+ });
47
+ return {
48
+ ast: originalAst,
49
+ baseCode: result.baseCode,
50
+ code: result.code,
51
+ dependencyNames: result.dependencyNames,
52
+ evalCode: result.code,
53
+ metadata: result.metadata,
54
+ staticSideEffectImportLocals: [],
55
+ staticDependencies: result.staticDependencies,
56
+ staticValueCache: result.staticValueCache,
57
+ staticValueCandidates: result.staticValueCandidates
58
+ };
59
+ });
60
+ item.setPreevalResult(preevalStageResult);
61
+ return preevalStageResult;
62
+ };
63
+ const prepareOxcCodeImpl = (services, item, originalAst, options = {}) => {
64
+ const { only, loadedAndParsed, log } = item;
65
+ if (loadedAndParsed.evaluator === "ignored") {
66
+ log("is ignored");
67
+ return [
68
+ loadedAndParsed.code ?? "",
69
+ null,
70
+ null
71
+ ];
72
+ }
73
+ const filename = loadedAndParsed.evalConfig.filename ?? item.name;
74
+ const { eventEmitter } = services;
75
+ const { pluginOptions } = services.options;
76
+ const root = services.options.root ?? process.cwd();
77
+ const preevalStageResult = ensureOxcPreevalResult(services, item, originalAst);
78
+ const transformMetadata = preevalStageResult.metadata;
79
+ const preevalCode = options.stripForEvalRuntime && preevalStageResult.evalCode ? preevalStageResult.evalCode : preevalStageResult.code;
80
+ if (isPrevalOnly(only) && !transformMetadata && !hasWywPrevalExport(preevalCode, filename) && options.shortCircuitOnMissingMetadata !== false) {
81
+ log("[evaluator:end] no metadata");
82
+ const strippedCode = stripTypesAndJsxWithOxc(preevalCode, filename).code;
83
+ return [
84
+ normalizeOxcPreparedESM(strippedCode),
85
+ collectImportsFromOxc(strippedCode, filename),
86
+ null
87
+ ];
88
+ }
89
+ log("[preeval] metadata %O", transformMetadata);
90
+ log("[evaluator:start] using %s", loadedAndParsed.evaluator.name);
91
+ log.extend("source")("%s", preevalCode);
92
+ const shaken = eventEmitter.perf("transform:evaluator", () => shakeOxcToESM(preevalCode, filename, {
93
+ importOverrides: pluginOptions.importOverrides,
94
+ onlyExports: only,
95
+ root
96
+ }));
97
+ log("[evaluator:end]");
98
+ if (!options.emitCommonJS) {
99
+ const preparedCode = options.stripForEvalRuntime ? stripTypesAndJsxWithOxc(shaken.code, filename).code : shaken.code;
100
+ return [
101
+ normalizeOxcPreparedESM(preparedCode),
102
+ options.stripForEvalRuntime ? collectImportsFromOxc(preparedCode, filename) : shaken.imports,
103
+ transformMetadata ?? null
104
+ ];
105
+ }
106
+ const emitted = eventEmitter.perf("transform:emitCommonJS", () => emitOxcCommonJS(shaken.code, filename));
107
+ return [
108
+ emitted.code,
109
+ shaken.imports,
110
+ transformMetadata ?? null
111
+ ];
76
112
  };
77
- export const prepareCode = (services, item, originalAst) => {
78
- const {
79
- log,
80
- loadedAndParsed
81
- } = item;
82
- if (loadedAndParsed.evaluator === 'ignored') {
83
- log('is ignored');
84
- return [loadedAndParsed.code ?? '', null, null];
85
- }
86
- const {
87
- evaluator
88
- } = loadedAndParsed;
89
- const {
90
- babel,
91
- eventEmitter
92
- } = services;
93
- const prepared = prepareEvaluatorInput(services, item, originalAst);
94
- if (prepared.kind === 'short-circuit') {
95
- return [prepared.code, null, null];
96
- }
97
- log('[evaluator:start] using %s', evaluator.name);
98
- log.extend('source')('%s', prepared.code);
99
- const [, transformedCode, imports] = eventEmitter.perf('transform:evaluator', () => evaluator(prepared.evalConfig, prepared.ast, prepared.code, prepared.evaluatorConfig, babel));
100
- log('[evaluator:end]');
101
- return [transformedCode, imports, prepared.metadata];
113
+ const prepareCodeImpl = (services, item, originalAst, options = {}) => {
114
+ const { log, loadedAndParsed } = item;
115
+ if (loadedAndParsed.evaluator === "ignored") {
116
+ log("is ignored");
117
+ return [
118
+ loadedAndParsed.code ?? "",
119
+ null,
120
+ null
121
+ ];
122
+ }
123
+ const { evaluator } = loadedAndParsed;
124
+ if (evaluator !== oxcShaker) {
125
+ throw new Error(`[wyw-in-js] ${item.name} matched a legacy evaluator. The Oxc runtime path supports only the default Oxc evaluator.`);
126
+ }
127
+ return prepareOxcCodeImpl(services, item, originalAst, options);
102
128
  };
129
+ export const prepareCode = (services, item, originalAst) => prepareCodeImpl(services, item, originalAst);
130
+ export const prepareCodeForEvalRuntime = (services, item, originalAst) => prepareCodeImpl(services, item, originalAst, {
131
+ shortCircuitOnMissingMetadata: true,
132
+ stripForEvalRuntime: true
133
+ });
103
134
  export function* internalTransform(prepareFn) {
104
- const {
105
- only,
106
- loadedAndParsed,
107
- log
108
- } = this.entrypoint;
109
- if (loadedAndParsed.evaluator === 'ignored') {
110
- log('is ignored');
111
- return {
112
- code: loadedAndParsed.code ?? '',
113
- metadata: null
114
- };
115
- }
116
- log('>> (%o)', only);
117
- const [preparedCode, imports, metadata] = prepareFn(this.services, this.entrypoint, loadedAndParsed.ast);
118
- if (loadedAndParsed.code === preparedCode) {
119
- log('<< (%o)\n === no changes ===', only);
120
- } else {
121
- log('<< (%o)', only);
122
- log.extend('source')('%s', preparedCode || EMPTY_FILE);
123
- }
124
- if (preparedCode === '') {
125
- log('is skipped');
126
- return {
127
- code: loadedAndParsed.code ?? '',
128
- metadata: null
129
- };
130
- }
131
- if (imports !== null && imports.size > 0) {
132
- const resolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
133
- imports
134
- });
135
- if (resolvedImports.length !== 0) {
136
- yield ['processImports', this.entrypoint, {
137
- resolved: resolvedImports
138
- }];
139
- }
140
- }
141
- return {
142
- code: preparedCode,
143
- metadata
144
- };
135
+ const { only, loadedAndParsed, log } = this.entrypoint;
136
+ if (loadedAndParsed.evaluator === "ignored") {
137
+ log("is ignored");
138
+ return {
139
+ code: loadedAndParsed.code ?? "",
140
+ metadata: null
141
+ };
142
+ }
143
+ if (loadedAndParsed.evaluator !== oxcShaker) {
144
+ throw new Error(`[wyw-in-js] ${this.entrypoint.name} matched a legacy evaluator. The Oxc runtime path supports only the default Oxc evaluator.`);
145
+ }
146
+ log(">> (%o)", only);
147
+ if (loadedAndParsed.evaluator === oxcShaker) {
148
+ ensureOxcPreevalResult(this.services, this.entrypoint, null);
149
+ yield* resolveStaticOxcPreevalValues.call(this);
150
+ }
151
+ const [preparedCode, imports, metadata] = prepareFn(this.services, this.entrypoint, null);
152
+ let finalPreparedCode = preparedCode;
153
+ if (loadedAndParsed.evaluator === oxcShaker) {
154
+ if (metadata === null && isPrevalOnly(only)) {
155
+ log("skip resolving imports for __wywPreval-only entrypoint without metadata");
156
+ return {
157
+ code: finalPreparedCode,
158
+ metadata: null
159
+ };
160
+ }
161
+ let nextCode = preparedCode;
162
+ let nextResolvedImports = [];
163
+ let skippedParentDependencyTracking = [];
164
+ if (imports !== null && imports.size > 0) {
165
+ const resolvedImports = yield* this.getNext("resolveImports", this.entrypoint, {
166
+ imports,
167
+ phase: "initial"
168
+ });
169
+ if (resolvedImports.length > 0) {
170
+ const rewritten = yield* rewriteOptimizedOxcBarrelImports.call(this, preparedCode, loadedAndParsed.evalConfig.filename ?? this.entrypoint.name, resolvedImports);
171
+ nextCode = rewritten.code;
172
+ if (rewritten.optimizedCount > 0) {
173
+ skippedParentDependencyTracking = rewritten.generatedSources;
174
+ const fullyRewrittenSources = new Set(rewritten.fullyRewrittenSources);
175
+ const partialFallbackSources = new Set(rewritten.partialFallbackSources);
176
+ for (const dependency of resolvedImports) {
177
+ if (dependency.resolved && (fullyRewrittenSources.has(dependency.source) || partialFallbackSources.has(dependency.source))) {
178
+ if (partialFallbackSources.has(dependency.source)) {
179
+ this.entrypoint.addDependency(dependency);
180
+ } else {
181
+ this.entrypoint.addInvalidationDependency(dependency);
182
+ }
183
+ this.entrypoint.markInvalidateOnDependencyChange(dependency.resolved);
184
+ }
185
+ }
186
+ nextResolvedImports = yield* this.getNext("resolveImports", this.entrypoint, {
187
+ imports: rewritten.imports,
188
+ phase: "rewritten",
189
+ preResolved: rewritten.preResolvedImports
190
+ });
191
+ } else {
192
+ nextResolvedImports = resolvedImports;
193
+ }
194
+ }
195
+ }
196
+ if (nextResolvedImports.length !== 0) {
197
+ yield [
198
+ "processImports",
199
+ this.entrypoint,
200
+ {
201
+ resolved: nextResolvedImports,
202
+ skipParentDependencyTracking: skippedParentDependencyTracking
203
+ }
204
+ ];
205
+ }
206
+ finalPreparedCode = this.services.eventEmitter.perf("transform:emitCommonJS", () => emitOxcCommonJS(nextCode, loadedAndParsed.evalConfig.filename ?? this.entrypoint.name).code);
207
+ }
208
+ if (loadedAndParsed.code === finalPreparedCode) {
209
+ log("<< (%o)\n === no changes ===", only);
210
+ } else {
211
+ log("<< (%o)", only);
212
+ log.extend("source")("%s", finalPreparedCode || EMPTY_FILE);
213
+ }
214
+ if (finalPreparedCode === "") {
215
+ log("is skipped");
216
+ return {
217
+ code: loadedAndParsed.code ?? "",
218
+ metadata
219
+ };
220
+ }
221
+ if (metadata === null && isPrevalOnly(only)) {
222
+ log("skip resolving imports for __wywPreval-only entrypoint without metadata");
223
+ return {
224
+ code: finalPreparedCode,
225
+ metadata: null
226
+ };
227
+ }
228
+ if (loadedAndParsed.evaluator !== oxcShaker && imports !== null && imports.size > 0) {
229
+ const resolvedImports = yield* this.getNext("resolveImports", this.entrypoint, { imports });
230
+ if (resolvedImports.length !== 0) {
231
+ yield [
232
+ "processImports",
233
+ this.entrypoint,
234
+ { resolved: resolvedImports }
235
+ ];
236
+ }
237
+ }
238
+ return {
239
+ code: finalPreparedCode,
240
+ metadata
241
+ };
145
242
  }
146
-
147
- /**
148
- * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
149
- * Emits resolveImports and processImports events.
150
- */
151
243
  export function* transform() {
152
- const {
153
- only,
154
- loadedAndParsed,
155
- log
156
- } = this.entrypoint;
157
- if (loadedAndParsed.evaluator === 'ignored') {
158
- log('is ignored');
159
- return {
160
- code: loadedAndParsed.code ?? '',
161
- metadata: null
162
- };
163
- }
164
- if (loadedAndParsed.evaluator !== shaker) {
165
- return yield* internalTransform.call(this, prepareCode);
166
- }
167
- log('>> (%o)', only);
168
- const prepared = prepareEvaluatorInput(this.services, this.entrypoint, loadedAndParsed.ast);
169
- if (prepared.kind === 'short-circuit') {
170
- if (loadedAndParsed.code === prepared.code) {
171
- log('<< (%o)\n === no changes ===', only);
172
- } else {
173
- log('<< (%o)', only);
174
- log.extend('source')('%s', prepared.code || EMPTY_FILE);
175
- }
176
- if (prepared.code === '') {
177
- log('is skipped');
178
- return {
179
- code: loadedAndParsed.code ?? '',
180
- metadata: null
181
- };
182
- }
183
- return {
184
- code: prepared.code,
185
- metadata: null
186
- };
187
- }
188
- log('[evaluator:start] using %s', loadedAndParsed.evaluator.name);
189
- log.extend('source')('%s', prepared.code);
190
- const {
191
- babel,
192
- eventEmitter
193
- } = this.services;
194
- const [shakenAst, shakenCode, shakenImports] = eventEmitter.perf('transform:evaluator', () => shakeToESM(prepared.evalConfig, prepared.ast, prepared.code, prepared.evaluatorConfig, babel));
195
- let nextAst = shakenAst;
196
- let nextCode = shakenCode;
197
- let nextResolvedImports = [];
198
- if (shakenImports !== null && shakenImports.size > 0) {
199
- const resolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
200
- imports: shakenImports,
201
- phase: 'initial'
202
- });
203
- if (resolvedImports.length > 0) {
204
- const rewritten = yield* rewriteOptimizedBarrelImports.call(this, shakenAst, shakenCode, resolvedImports);
205
- nextAst = rewritten.ast;
206
- nextCode = rewritten.code;
207
- if (rewritten.optimizedCount > 0) {
208
- const fullyRewrittenSources = new Set(rewritten.fullyRewrittenSources);
209
- const partialFallbackSources = new Set(rewritten.partialFallbackSources);
210
- for (const dependency of resolvedImports) {
211
- if (dependency.resolved && (fullyRewrittenSources.has(dependency.source) || partialFallbackSources.has(dependency.source))) {
212
- if (partialFallbackSources.has(dependency.source)) {
213
- this.entrypoint.addDependency(dependency);
214
- } else {
215
- this.entrypoint.addInvalidationDependency(dependency);
216
- }
217
- this.entrypoint.markInvalidateOnDependencyChange(dependency.resolved);
218
- }
219
- }
220
- nextResolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
221
- imports: rewritten.imports,
222
- phase: 'rewritten',
223
- preResolved: rewritten.preResolvedImports
224
- });
225
- } else {
226
- nextResolvedImports = resolvedImports;
227
- }
228
- }
229
- }
230
- if (nextResolvedImports.length !== 0) {
231
- yield ['processImports', this.entrypoint, {
232
- resolved: nextResolvedImports
233
- }];
234
- }
235
- const [, preparedCode] = eventEmitter.perf('transform:emitCommonJS', () => emitCommonJS(prepared.evalConfig, nextAst, nextCode, babel));
236
- log('[evaluator:end]');
237
- if (loadedAndParsed.code === preparedCode) {
238
- log('<< (%o)\n === no changes ===', only);
239
- } else {
240
- log('<< (%o)', only);
241
- log.extend('source')('%s', preparedCode || EMPTY_FILE);
242
- }
243
- if (preparedCode === '') {
244
- log('is skipped');
245
- return {
246
- code: loadedAndParsed.code ?? '',
247
- metadata: null
248
- };
249
- }
250
- return {
251
- code: preparedCode,
252
- metadata: prepared.metadata
253
- };
244
+ return yield* internalTransform.call(this, prepareCode);
254
245
  }
255
- //# sourceMappingURL=transform.js.map
246
+ //# sourceMappingURL=transform.js.map