@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
@@ -1,57 +1,20 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.rewriteOptimizedBarrelImports = rewriteOptimizedBarrelImports;
40
- /* eslint-disable no-continue, @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any, no-param-reassign, prefer-destructuring */
41
- const generator_1 = __importDefault(require("@babel/generator"));
42
- const t = __importStar(require("@babel/types"));
43
- const EventEmitter_1 = require("../../utils/EventEmitter");
44
- const shaker_1 = require("../../shaker");
45
- const cache_1 = require("../../cache");
46
- const Entrypoint_1 = require("../Entrypoint");
47
- const barrelManifest_1 = require("../barrelManifest");
1
+ /* eslint-disable no-continue, @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any, no-param-reassign */
2
+ import path from 'path';
3
+ import { parseSync } from 'oxc-parser';
4
+ import { oxcShaker } from '../../shaker';
5
+ import { TransformCacheCollection } from '../../cache';
6
+ import { EventEmitter } from '../../utils/EventEmitter';
7
+ import { collectOxcExportsAndImports } from '../../utils/collectOxcExportsAndImports';
8
+ import { analyzeOxcBarrelFile } from '../oxcBarrelManifest';
9
+ import { Entrypoint } from '../Entrypoint';
10
+ const NODE_MODULES_SEGMENT = `${path.sep}node_modules${path.sep}`;
48
11
  const createAnalysisServices = (services) => ({
49
12
  ...services,
50
- cache: new cache_1.TransformCacheCollection({
13
+ cache: new TransformCacheCollection({
51
14
  barrelManifests: services.cache.barrelManifests,
52
15
  exports: services.cache.exports,
53
16
  }),
54
- eventEmitter: EventEmitter_1.EventEmitter.dummy,
17
+ eventEmitter: EventEmitter.dummy,
55
18
  });
56
19
  const addBinding = (manifest, exported, binding, explicitExports) => {
57
20
  const existing = manifest[exported];
@@ -78,11 +41,26 @@ const addBlockedExport = (manifest, exported, reason) => {
78
41
  reason,
79
42
  };
80
43
  };
44
+ const addImport = (imports, source, imported) => {
45
+ const bucket = imports.get(source) ?? [];
46
+ if (!bucket.includes(imported)) {
47
+ bucket.push(imported);
48
+ }
49
+ imports.set(source, bucket);
50
+ };
51
+ const applyReplacements = (code, replacements) => {
52
+ let result = code;
53
+ replacements
54
+ .sort((a, b) => b.start - a.start)
55
+ .forEach((replacement) => {
56
+ result =
57
+ result.slice(0, replacement.start) +
58
+ replacement.value +
59
+ result.slice(replacement.end);
60
+ });
61
+ return result;
62
+ };
81
63
  const buildResolvedDependencyMap = (resolvedImports) => new Map(resolvedImports.map((dependency) => [dependency.source, dependency]));
82
- const cloneExportedName = (name) => t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name);
83
- const cloneImportedName = (name) => name === 'default' || t.isValidIdentifier(name)
84
- ? t.identifier(name)
85
- : t.stringLiteral(name);
86
64
  const isSameBinding = (left, right) => {
87
65
  if (left.kind !== right.kind) {
88
66
  return false;
@@ -95,8 +73,43 @@ const isSameBinding = (left, right) => {
95
73
  }
96
74
  return true;
97
75
  };
76
+ const isValidIdentifier = (name) => /^[$A-Z_a-z][$\w]*$/.test(name);
77
+ const canEmitNamedReexport = (imported) => imported === 'default' || isValidIdentifier(imported);
78
+ const quote = (value) => JSON.stringify(value);
79
+ const moduleName = (node) => node.type === 'Literal' ? String(node.value) : node.name;
80
+ const importedNameCode = (name) => name === 'default' || isValidIdentifier(name) ? name : quote(name);
81
+ const exportedNameCode = (name) => isValidIdentifier(name) ? name : quote(name);
82
+ const importSpecifierCode = (specifier) => {
83
+ if (specifier.kind === 'default') {
84
+ return specifier.local;
85
+ }
86
+ const imported = importedNameCode(specifier.imported);
87
+ return imported === specifier.local
88
+ ? imported
89
+ : `${imported} as ${specifier.local}`;
90
+ };
91
+ const exportSpecifierCode = (specifier) => {
92
+ if (specifier.kind === 'namespace') {
93
+ return `* as ${specifier.exported}`;
94
+ }
95
+ const imported = importedNameCode(specifier.imported);
96
+ const exported = exportedNameCode(specifier.exported);
97
+ return imported === exported ? imported : `${imported} as ${exported}`;
98
+ };
99
+ function parseProgram(code, filename) {
100
+ const parsed = parseSync(filename, code, {
101
+ astType: filename.endsWith('.ts') || filename.endsWith('.tsx') ? 'ts' : 'js',
102
+ range: true,
103
+ sourceType: 'module',
104
+ });
105
+ const fatalError = parsed.errors.find((error) => error.severity === 'Error');
106
+ if (fatalError) {
107
+ throw new Error(fatalError.message);
108
+ }
109
+ return parsed.program;
110
+ }
98
111
  function createAnalysisEntrypoint(services, filename, loadedCode) {
99
- return Entrypoint_1.Entrypoint.createRoot(services, filename, ['*'], loadedCode);
112
+ return Entrypoint.createRoot(services, filename, ['*'], loadedCode);
100
113
  }
101
114
  function getUniqueSources(raw) {
102
115
  return Array.from(new Set([
@@ -122,65 +135,62 @@ function isRawBarrelManifest(entry) {
122
135
  function shouldUseDirectExports(reason) {
123
136
  return reason === 'impure';
124
137
  }
125
- const getModuleName = (node) => t.isIdentifier(node) ? node.name : node.value;
126
- const canEmitNamedReexport = (imported) => imported === 'default' || t.isValidIdentifier(imported);
127
- function collectOptimizedImports(ast) {
138
+ function emitRewriteSkipped(action, source, reason) {
139
+ action.services.eventEmitter.single({
140
+ file: action.entrypoint.name,
141
+ kind: 'barrelRewriteSkipped',
142
+ reason,
143
+ source,
144
+ });
145
+ }
146
+ function getManifestExport(manifest, exported) {
147
+ return manifest.exports[exported] ?? null;
148
+ }
149
+ function collectOptimizedImports(code, filename) {
128
150
  const imports = new Map();
129
- const addImport = (source, imported) => {
130
- if (!imports.has(source)) {
131
- imports.set(source, []);
132
- }
133
- if (!imports.get(source).includes(imported)) {
134
- imports.get(source).push(imported);
135
- }
136
- };
137
- const program = ast.program;
151
+ const program = parseProgram(code, filename);
138
152
  for (const statement of program.body) {
139
- if (t.isImportDeclaration(statement) &&
140
- t.isStringLiteral(statement.source)) {
153
+ if (statement.type === 'ImportDeclaration') {
154
+ if (statement.importKind === 'type') {
155
+ continue;
156
+ }
141
157
  if (statement.specifiers.length === 0) {
142
- addImport(statement.source.value, 'side-effect');
158
+ addImport(imports, statement.source.value, 'side-effect');
143
159
  continue;
144
160
  }
145
161
  for (const specifier of statement.specifiers) {
146
- if (t.isImportDefaultSpecifier(specifier)) {
147
- addImport(statement.source.value, 'default');
162
+ if (specifier.type === 'ImportSpecifier' &&
163
+ specifier.importKind === 'type') {
148
164
  continue;
149
165
  }
150
- if (t.isImportNamespaceSpecifier(specifier)) {
151
- addImport(statement.source.value, '*');
166
+ if (specifier.type === 'ImportDefaultSpecifier') {
167
+ addImport(imports, statement.source.value, 'default');
152
168
  continue;
153
169
  }
154
- if (t.isImportSpecifier(specifier)) {
155
- addImport(statement.source.value, t.isIdentifier(specifier.imported)
156
- ? specifier.imported.name
157
- : specifier.imported.value);
170
+ if (specifier.type === 'ImportNamespaceSpecifier') {
171
+ addImport(imports, statement.source.value, '*');
172
+ continue;
158
173
  }
174
+ addImport(imports, statement.source.value, moduleName(specifier.imported));
159
175
  }
160
176
  continue;
161
177
  }
162
- if (t.isExportNamedDeclaration(statement) &&
163
- statement.source &&
164
- t.isStringLiteral(statement.source)) {
178
+ if (statement.type === 'ExportNamedDeclaration' && statement.source) {
179
+ if (statement.exportKind === 'type') {
180
+ continue;
181
+ }
165
182
  for (const specifier of statement.specifiers) {
166
- if (t.isExportNamespaceSpecifier(specifier)) {
167
- addImport(statement.source.value, '*');
168
- continue;
169
- }
170
- if (t.isExportDefaultSpecifier(specifier)) {
171
- addImport(statement.source.value, 'default');
172
- continue;
173
- }
174
- if (t.isExportSpecifier(specifier)) {
175
- addImport(statement.source.value, getModuleName(specifier.local));
183
+ if (specifier.type === 'ExportSpecifier' &&
184
+ specifier.exportKind !== 'type') {
185
+ addImport(imports, statement.source.value, moduleName(specifier.local));
176
186
  }
177
187
  }
178
188
  continue;
179
189
  }
180
- if (t.isExportAllDeclaration(statement) &&
181
- statement.source &&
182
- t.isStringLiteral(statement.source)) {
183
- addImport(statement.source.value, '*');
190
+ if (statement.type === 'ExportAllDeclaration') {
191
+ if (statement.exportKind !== 'type') {
192
+ addImport(imports, statement.source.value, '*');
193
+ }
184
194
  }
185
195
  }
186
196
  return imports;
@@ -196,64 +206,81 @@ function groupImportSpecifiers(optimized) {
196
206
  }
197
207
  const bucket = grouped.get(specifier.source);
198
208
  if (specifier.kind === 'default') {
199
- bucket.defaults.push(t.importDefaultSpecifier(specifier.local));
200
- continue;
209
+ bucket.defaults.push(specifier);
210
+ }
211
+ else {
212
+ bucket.named.push(specifier);
201
213
  }
202
- bucket.named.push(t.importSpecifier(specifier.local, cloneImportedName(specifier.imported)));
203
214
  }
204
215
  const declarations = [];
205
216
  for (const [source, bucket] of grouped) {
217
+ const named = bucket.named.map(importSpecifierCode);
206
218
  if (bucket.defaults.length === 0) {
207
- declarations.push(t.importDeclaration(bucket.named, t.stringLiteral(source)));
219
+ declarations.push(`import { ${named.join(', ')} } from ${quote(source)};`);
208
220
  continue;
209
221
  }
210
- declarations.push(t.importDeclaration([bucket.defaults[0], ...bucket.named], t.stringLiteral(source)));
211
- for (const defaultSpecifier of bucket.defaults.slice(1)) {
212
- declarations.push(t.importDeclaration([defaultSpecifier], t.stringLiteral(source)));
213
- }
222
+ const firstDefault = importSpecifierCode(bucket.defaults[0]);
223
+ declarations.push(named.length > 0
224
+ ? `import ${firstDefault}, { ${named.join(', ')} } from ${quote(source)};`
225
+ : `import ${firstDefault} from ${quote(source)};`);
226
+ bucket.defaults.slice(1).forEach((specifier) => {
227
+ declarations.push(`import ${importSpecifierCode(specifier)} from ${quote(source)};`);
228
+ });
214
229
  }
215
230
  return declarations;
216
231
  }
217
232
  function groupExportSpecifiers(optimized) {
218
233
  const grouped = new Map();
234
+ const namespaceDeclarations = [];
219
235
  for (const specifier of optimized) {
220
- if (!grouped.has(specifier.source)) {
221
- grouped.set(specifier.source, []);
222
- }
223
236
  if (specifier.kind === 'namespace') {
224
- grouped
225
- .get(specifier.source)
226
- .push(t.exportNamespaceSpecifier(t.identifier(specifier.exported)));
237
+ namespaceDeclarations.push(`export * as ${specifier.exported} from ${quote(specifier.source)};`);
227
238
  continue;
228
239
  }
229
- grouped
230
- .get(specifier.source)
231
- .push(t.exportSpecifier(t.identifier(specifier.imported), cloneExportedName(specifier.exported)));
240
+ if (!grouped.has(specifier.source)) {
241
+ grouped.set(specifier.source, []);
242
+ }
243
+ grouped.get(specifier.source).push(specifier);
232
244
  }
233
- return Array.from(grouped.entries()).map(([source, specifiers]) => t.exportNamedDeclaration(null, specifiers, t.stringLiteral(source)));
245
+ return [
246
+ ...namespaceDeclarations,
247
+ ...Array.from(grouped.entries()).map(([source, specifiers]) => `export { ${specifiers
248
+ .map(exportSpecifierCode)
249
+ .join(', ')} } from ${quote(source)};`),
250
+ ];
234
251
  }
235
- function createImportFallback(statement, fallbackSpecifiers) {
252
+ const sourceLiteral = (source) => quote(source);
253
+ function createImportFallback(code, statement, fallbackSpecifiers) {
236
254
  if (fallbackSpecifiers.length === 0) {
237
255
  return null;
238
256
  }
239
- return t.importDeclaration(fallbackSpecifiers, t.stringLiteral(statement.source.value));
257
+ const defaults = fallbackSpecifiers.filter((specifier) => specifier.type === 'ImportDefaultSpecifier');
258
+ const namespaces = fallbackSpecifiers.filter((specifier) => specifier.type === 'ImportNamespaceSpecifier');
259
+ const named = fallbackSpecifiers.filter((specifier) => specifier.type === 'ImportSpecifier');
260
+ const renderedNamed = named.map((specifier) => code.slice(specifier.start, specifier.end));
261
+ const source = sourceLiteral(statement.source.value);
262
+ if (defaults.length > 0) {
263
+ const prefix = code.slice(defaults[0].start, defaults[0].end);
264
+ if (namespaces.length > 0) {
265
+ return `import ${prefix}, ${code.slice(namespaces[0].start, namespaces[0].end)} from ${source};`;
266
+ }
267
+ if (renderedNamed.length > 0) {
268
+ return `import ${prefix}, { ${renderedNamed.join(', ')} } from ${source};`;
269
+ }
270
+ return `import ${prefix} from ${source};`;
271
+ }
272
+ if (namespaces.length > 0) {
273
+ return `import ${code.slice(namespaces[0].start, namespaces[0].end)} from ${source};`;
274
+ }
275
+ return `import { ${renderedNamed.join(', ')} } from ${source};`;
240
276
  }
241
- function createExportFallback(statement, fallbackSpecifiers) {
277
+ function createExportFallback(code, statement, fallbackSpecifiers) {
242
278
  if (!statement.source || fallbackSpecifiers.length === 0) {
243
279
  return null;
244
280
  }
245
- return t.exportNamedDeclaration(null, fallbackSpecifiers, t.stringLiteral(statement.source.value));
246
- }
247
- function emitRewriteSkipped(action, source, reason) {
248
- action.services.eventEmitter.single({
249
- file: action.entrypoint.name,
250
- kind: 'barrelRewriteSkipped',
251
- reason,
252
- source,
253
- });
254
- }
255
- function getManifestExport(manifest, exported) {
256
- return manifest.exports[exported] ?? null;
281
+ return `export { ${fallbackSpecifiers
282
+ .map((specifier) => code.slice(specifier.start, specifier.end))
283
+ .join(', ')} } from ${sourceLiteral(statement.source.value)};`;
257
284
  }
258
285
  function* getNamedBinding(analysisServices, targetResolved, imported, stack) {
259
286
  if (stack.has(targetResolved)) {
@@ -262,7 +289,7 @@ function* getNamedBinding(analysisServices, targetResolved, imported, stack) {
262
289
  reason: 'cycle',
263
290
  };
264
291
  }
265
- const targetManifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, targetResolved, stack);
292
+ const targetManifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, targetResolved, stack);
266
293
  if (isBarrelEntry(targetManifest)) {
267
294
  const resolved = getManifestExport(targetManifest, imported);
268
295
  if (resolved) {
@@ -284,14 +311,16 @@ function* getStarCandidates(analysisServices, targetResolved, stack) {
284
311
  return {
285
312
  candidates: [],
286
313
  complete: false,
314
+ dependencies: [],
287
315
  };
288
316
  }
289
- const targetManifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, targetResolved, stack);
317
+ const targetManifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, targetResolved, stack);
290
318
  if (isBarrelEntry(targetManifest)) {
291
319
  if (!targetManifest.complete) {
292
320
  return {
293
321
  candidates: [],
294
322
  complete: false,
323
+ dependencies: [],
295
324
  };
296
325
  }
297
326
  return {
@@ -302,15 +331,18 @@ function* getStarCandidates(analysisServices, targetResolved, stack) {
302
331
  exported,
303
332
  })),
304
333
  complete: true,
334
+ dependencies: [],
305
335
  };
306
336
  }
307
337
  if (!shouldUseDirectExports(targetManifest.reason)) {
308
338
  return {
309
339
  candidates: [],
310
340
  complete: false,
341
+ dependencies: [],
311
342
  };
312
343
  }
313
344
  const exports = yield* getExportsForFile.call(this, analysisServices, targetResolved);
345
+ const dependencies = yield* getWildcardExportDependencies.call(this, analysisServices, targetResolved, stack);
314
346
  return {
315
347
  candidates: exports
316
348
  .filter((exported) => exported !== 'default')
@@ -323,13 +355,47 @@ function* getStarCandidates(analysisServices, targetResolved, stack) {
323
355
  exported,
324
356
  })),
325
357
  complete: true,
358
+ dependencies,
326
359
  };
327
360
  }
361
+ function* getWildcardExportDependencies(analysisServices, filename, stack) {
362
+ if (stack.has(filename)) {
363
+ return [];
364
+ }
365
+ const loadedAndParsed = analysisServices.loadAndParseFn(analysisServices, filename, undefined, analysisServices.log);
366
+ if (loadedAndParsed.evaluator === 'ignored' ||
367
+ loadedAndParsed.evaluator !== oxcShaker) {
368
+ return [];
369
+ }
370
+ const exportNames = yield* getExportsForFile.call(this, analysisServices, filename);
371
+ this.services.cache.add('exports', filename, exportNames);
372
+ const wildcardReexports = collectOxcExportsAndImports(loadedAndParsed.code, filename).reexports.filter((reexport) => reexport.exported === '*');
373
+ if (wildcardReexports.length === 0) {
374
+ return [];
375
+ }
376
+ const resolveEntrypoint = createAnalysisEntrypoint(analysisServices, filename, loadedAndParsed.code);
377
+ const resolvedImports = yield* this.getNext('resolveImports', resolveEntrypoint, {
378
+ imports: new Map(wildcardReexports.map((reexport) => [reexport.source, []])),
379
+ }, null);
380
+ const dependencies = new Set();
381
+ const nextStack = new Set(stack);
382
+ nextStack.add(filename);
383
+ for (const dependency of resolvedImports) {
384
+ if (!dependency.resolved) {
385
+ continue;
386
+ }
387
+ dependencies.add(dependency.resolved);
388
+ const nested = yield* getWildcardExportDependencies.call(this, analysisServices, dependency.resolved, nextStack);
389
+ nested.forEach((item) => dependencies.add(item));
390
+ }
391
+ this.services.cache.setCacheDependencies('exports', filename, dependencies);
392
+ return [...dependencies];
393
+ }
328
394
  function* getExportsForFile(services, filename) {
329
395
  const entrypoint = createAnalysisEntrypoint(services, filename);
330
396
  return yield* this.getNext('getExports', entrypoint, undefined, null);
331
397
  }
332
- function* getOrBuildBarrelManifest(analysisServices, filename, stack = new Set()) {
398
+ function* getOrBuildOxcBarrelManifest(analysisServices, filename, stack = new Set()) {
333
399
  const cached = this.services.cache.get('barrelManifests', filename);
334
400
  if (cached) {
335
401
  this.services.eventEmitter.single({
@@ -340,6 +406,14 @@ function* getOrBuildBarrelManifest(analysisServices, filename, stack = new Set()
340
406
  return cached;
341
407
  }
342
408
  const loadedAndParsed = analysisServices.loadAndParseFn(analysisServices, filename, undefined, analysisServices.log);
409
+ if (filename.includes(NODE_MODULES_SEGMENT)) {
410
+ const externalEntry = {
411
+ kind: 'ineligible',
412
+ reason: 'custom-evaluator',
413
+ };
414
+ this.services.cache.add('barrelManifests', filename, externalEntry);
415
+ return externalEntry;
416
+ }
343
417
  if (loadedAndParsed.evaluator === 'ignored') {
344
418
  const ignoredEntry = {
345
419
  kind: 'ineligible',
@@ -348,7 +422,7 @@ function* getOrBuildBarrelManifest(analysisServices, filename, stack = new Set()
348
422
  this.services.cache.add('barrelManifests', filename, ignoredEntry);
349
423
  return ignoredEntry;
350
424
  }
351
- if (loadedAndParsed.evaluator !== shaker_1.shaker) {
425
+ if (loadedAndParsed.evaluator !== oxcShaker) {
352
426
  const customEntry = {
353
427
  kind: 'ineligible',
354
428
  reason: 'custom-evaluator',
@@ -356,7 +430,7 @@ function* getOrBuildBarrelManifest(analysisServices, filename, stack = new Set()
356
430
  this.services.cache.add('barrelManifests', filename, customEntry);
357
431
  return customEntry;
358
432
  }
359
- const analyzed = (0, barrelManifest_1.analyzeBarrelFile)(loadedAndParsed.ast);
433
+ const analyzed = analyzeOxcBarrelFile(loadedAndParsed.code, filename);
360
434
  if (!isRawBarrelManifest(analyzed)) {
361
435
  this.services.cache.add('barrelManifests', filename, analyzed);
362
436
  return analyzed;
@@ -403,7 +477,8 @@ function* getOrBuildBarrelManifest(analysisServices, filename, stack = new Set()
403
477
  manifest.complete = false;
404
478
  continue;
405
479
  }
406
- const { candidates, complete } = yield* getStarCandidates.call(this, analysisServices, targetResolved, nextStack);
480
+ const { candidates, complete, dependencies } = yield* getStarCandidates.call(this, analysisServices, targetResolved, nextStack);
481
+ manifestDependencies.push(...dependencies);
407
482
  if (!complete) {
408
483
  manifest.complete = false;
409
484
  continue;
@@ -429,7 +504,7 @@ function* getNamespaceBinding(analysisServices, targetResolved, stack) {
429
504
  reason: 'cycle',
430
505
  };
431
506
  }
432
- const targetManifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, targetResolved, stack);
507
+ const targetManifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, targetResolved, stack);
433
508
  if (isBarrelEntry(targetManifest)) {
434
509
  return {
435
510
  kind: 'blocked',
@@ -444,36 +519,36 @@ function* getNamespaceBinding(analysisServices, targetResolved, stack) {
444
519
  function getResolvedDependency(dependencies, source) {
445
520
  return dependencies.get(source);
446
521
  }
447
- function* rewriteImportDeclaration(analysisServices, statement, dependencies) {
522
+ function* rewriteImportDeclaration(analysisServices, code, statement, dependencies) {
448
523
  const dependency = getResolvedDependency(dependencies, statement.source.value);
449
- if (!dependency?.resolved) {
524
+ if (!dependency?.resolved || statement.specifiers.length === 0) {
450
525
  return {
451
526
  generatedSources: [],
452
527
  mode: 'unchanged',
453
- statements: [statement],
528
+ statements: [code.slice(statement.start, statement.end)],
454
529
  };
455
530
  }
456
- const manifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, dependency.resolved);
531
+ const manifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, dependency.resolved);
457
532
  if (!isBarrelEntry(manifest)) {
458
533
  return {
459
534
  generatedSources: [],
460
535
  mode: 'unchanged',
461
- statements: [statement],
536
+ statements: [code.slice(statement.start, statement.end)],
462
537
  };
463
538
  }
464
539
  const optimized = [];
465
540
  const fallback = [];
466
541
  for (const specifier of statement.specifiers) {
467
- if (t.isImportNamespaceSpecifier(specifier)) {
542
+ if (specifier.type === 'ImportNamespaceSpecifier') {
468
543
  fallback.push(specifier);
469
544
  continue;
470
545
  }
471
- if (t.isImportDefaultSpecifier(specifier)) {
546
+ if (specifier.type === 'ImportDefaultSpecifier') {
472
547
  const binding = getManifestExport(manifest, 'default');
473
548
  if (binding?.kind === 'named' && binding.imported === 'default') {
474
549
  optimized.push({
475
550
  kind: 'default',
476
- local: specifier.local,
551
+ local: specifier.local.name,
477
552
  source: binding.source,
478
553
  });
479
554
  continue;
@@ -484,15 +559,13 @@ function* rewriteImportDeclaration(analysisServices, statement, dependencies) {
484
559
  fallback.push(specifier);
485
560
  continue;
486
561
  }
487
- const imported = t.isIdentifier(specifier.imported)
488
- ? specifier.imported.name
489
- : specifier.imported.value;
562
+ const imported = moduleName(specifier.imported);
490
563
  const binding = getManifestExport(manifest, imported);
491
564
  if (binding?.kind === 'named') {
492
565
  optimized.push({
493
566
  imported: binding.imported,
494
567
  kind: 'named',
495
- local: specifier.local,
568
+ local: specifier.local.name,
496
569
  source: binding.source,
497
570
  });
498
571
  continue;
@@ -506,11 +579,11 @@ function* rewriteImportDeclaration(analysisServices, statement, dependencies) {
506
579
  return {
507
580
  generatedSources: [],
508
581
  mode: 'unchanged',
509
- statements: [statement],
582
+ statements: [code.slice(statement.start, statement.end)],
510
583
  };
511
584
  }
512
585
  const rewritten = groupImportSpecifiers(optimized);
513
- const fallbackDeclaration = createImportFallback(statement, fallback);
586
+ const fallbackDeclaration = createImportFallback(code, statement, fallback);
514
587
  const mode = fallbackDeclaration ? 'partial' : 'full';
515
588
  this.services.eventEmitter.single({
516
589
  file: this.entrypoint.name,
@@ -527,12 +600,12 @@ function* rewriteImportDeclaration(analysisServices, statement, dependencies) {
527
600
  : rewritten,
528
601
  };
529
602
  }
530
- function* rewriteExportNamedDeclaration(analysisServices, statement, dependencies) {
531
- if (!statement.source || !t.isStringLiteral(statement.source)) {
603
+ function* rewriteExportNamedDeclaration(analysisServices, code, statement, dependencies) {
604
+ if (!statement.source) {
532
605
  return {
533
606
  generatedSources: [],
534
607
  mode: 'unchanged',
535
- statements: [statement],
608
+ statements: [code.slice(statement.start, statement.end)],
536
609
  };
537
610
  }
538
611
  const dependency = getResolvedDependency(dependencies, statement.source.value);
@@ -540,43 +613,26 @@ function* rewriteExportNamedDeclaration(analysisServices, statement, dependencie
540
613
  return {
541
614
  generatedSources: [],
542
615
  mode: 'unchanged',
543
- statements: [statement],
616
+ statements: [code.slice(statement.start, statement.end)],
544
617
  };
545
618
  }
546
- const manifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, dependency.resolved);
619
+ const manifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, dependency.resolved);
547
620
  if (!isBarrelEntry(manifest)) {
548
621
  return {
549
622
  generatedSources: [],
550
623
  mode: 'unchanged',
551
- statements: [statement],
624
+ statements: [code.slice(statement.start, statement.end)],
552
625
  };
553
626
  }
554
627
  const optimized = [];
555
628
  const fallback = [];
556
629
  for (const specifier of statement.specifiers) {
557
- if (t.isExportNamespaceSpecifier(specifier)) {
630
+ if (specifier.type !== 'ExportSpecifier') {
558
631
  fallback.push(specifier);
559
632
  continue;
560
633
  }
561
- if (t.isExportDefaultSpecifier(specifier)) {
562
- const binding = getManifestExport(manifest, 'default');
563
- if (binding?.kind === 'named' && binding.imported === 'default') {
564
- optimized.push({
565
- exported: getModuleName(specifier.exported),
566
- imported: 'default',
567
- kind: 'named',
568
- source: binding.source,
569
- });
570
- continue;
571
- }
572
- if (binding?.kind === 'blocked') {
573
- emitRewriteSkipped(this, statement.source.value, binding.reason);
574
- }
575
- fallback.push(specifier);
576
- continue;
577
- }
578
- const imported = getModuleName(specifier.local);
579
- const exported = getModuleName(specifier.exported);
634
+ const imported = moduleName(specifier.local);
635
+ const exported = moduleName(specifier.exported);
580
636
  const binding = getManifestExport(manifest, imported);
581
637
  if (binding?.kind === 'named' && canEmitNamedReexport(binding.imported)) {
582
638
  optimized.push({
@@ -587,7 +643,7 @@ function* rewriteExportNamedDeclaration(analysisServices, statement, dependencie
587
643
  });
588
644
  continue;
589
645
  }
590
- if (binding?.kind === 'namespace' && t.isValidIdentifier(exported)) {
646
+ if (binding?.kind === 'namespace' && isValidIdentifier(exported)) {
591
647
  optimized.push({
592
648
  exported,
593
649
  kind: 'namespace',
@@ -604,11 +660,11 @@ function* rewriteExportNamedDeclaration(analysisServices, statement, dependencie
604
660
  return {
605
661
  generatedSources: [],
606
662
  mode: 'unchanged',
607
- statements: [statement],
663
+ statements: [code.slice(statement.start, statement.end)],
608
664
  };
609
665
  }
610
666
  const rewritten = groupExportSpecifiers(optimized);
611
- const fallbackDeclaration = createExportFallback(statement, fallback);
667
+ const fallbackDeclaration = createExportFallback(code, statement, fallback);
612
668
  const mode = fallbackDeclaration ? 'partial' : 'full';
613
669
  this.services.eventEmitter.single({
614
670
  file: this.entrypoint.name,
@@ -625,21 +681,28 @@ function* rewriteExportNamedDeclaration(analysisServices, statement, dependencie
625
681
  : rewritten,
626
682
  };
627
683
  }
628
- function* rewriteExportAllDeclaration(analysisServices, statement, dependencies) {
684
+ function* rewriteExportAllDeclaration(analysisServices, code, statement, dependencies) {
685
+ if (statement.exported) {
686
+ return {
687
+ generatedSources: [],
688
+ mode: 'unchanged',
689
+ statements: [code.slice(statement.start, statement.end)],
690
+ };
691
+ }
629
692
  const dependency = getResolvedDependency(dependencies, statement.source.value);
630
693
  if (!dependency?.resolved) {
631
694
  return {
632
695
  generatedSources: [],
633
696
  mode: 'unchanged',
634
- statements: [statement],
697
+ statements: [code.slice(statement.start, statement.end)],
635
698
  };
636
699
  }
637
- const manifest = yield* getOrBuildBarrelManifest.call(this, analysisServices, dependency.resolved);
700
+ const manifest = yield* getOrBuildOxcBarrelManifest.call(this, analysisServices, dependency.resolved);
638
701
  if (!isBarrelEntry(manifest) || !manifest.complete) {
639
702
  return {
640
703
  generatedSources: [],
641
704
  mode: 'unchanged',
642
- statements: [statement],
705
+ statements: [code.slice(statement.start, statement.end)],
643
706
  };
644
707
  }
645
708
  const optimized = [];
@@ -649,7 +712,7 @@ function* rewriteExportAllDeclaration(analysisServices, statement, dependencies)
649
712
  continue;
650
713
  }
651
714
  if (binding.kind === 'namespace') {
652
- if (!t.isValidIdentifier(exported)) {
715
+ if (!isValidIdentifier(exported)) {
653
716
  emitRewriteSkipped(this, statement.source.value, 'namespace-barrel');
654
717
  hasUnrewritableExport = true;
655
718
  continue;
@@ -677,7 +740,7 @@ function* rewriteExportAllDeclaration(analysisServices, statement, dependencies)
677
740
  return {
678
741
  generatedSources: [],
679
742
  mode: 'unchanged',
680
- statements: [statement],
743
+ statements: [code.slice(statement.start, statement.end)],
681
744
  };
682
745
  }
683
746
  if (optimized.length === 0) {
@@ -708,10 +771,11 @@ function* rewriteExportAllDeclaration(analysisServices, statement, dependencies)
708
771
  statements: groupExportSpecifiers(optimized),
709
772
  };
710
773
  }
711
- function* rewriteOptimizedBarrelImports(ast, code, resolvedImports) {
774
+ export function* rewriteOptimizedOxcBarrelImports(code, filename, resolvedImports) {
712
775
  const dependencies = buildResolvedDependencyMap(resolvedImports);
713
776
  const analysisServices = createAnalysisServices(this.services);
714
- const nextBody = [];
777
+ const program = parseProgram(code, filename);
778
+ const replacements = [];
715
779
  const generatedSources = new Set();
716
780
  let optimizedCount = 0;
717
781
  const sourceModes = new Map();
@@ -731,52 +795,45 @@ function* rewriteOptimizedBarrelImports(ast, code, resolvedImports) {
731
795
  sourceModes.set(source, 'full');
732
796
  }
733
797
  };
734
- for (const statement of ast.program.body) {
735
- if (t.isImportDeclaration(statement) &&
736
- t.isStringLiteral(statement.source)) {
737
- const rewritten = yield* rewriteImportDeclaration.call(this, analysisServices, statement, dependencies);
738
- recordSourceMode(statement.source.value, rewritten.mode, !(rewritten.statements.length === 1 &&
739
- rewritten.statements[0] === statement));
740
- for (const source of rewritten.generatedSources) {
741
- generatedSources.add(source);
742
- }
743
- nextBody.push(...rewritten.statements);
744
- continue;
745
- }
746
- if (t.isExportNamedDeclaration(statement) &&
747
- statement.source &&
748
- t.isStringLiteral(statement.source)) {
749
- const rewritten = yield* rewriteExportNamedDeclaration.call(this, analysisServices, statement, dependencies);
750
- recordSourceMode(statement.source.value, rewritten.mode, !(rewritten.statements.length === 1 &&
751
- rewritten.statements[0] === statement));
752
- for (const source of rewritten.generatedSources) {
753
- generatedSources.add(source);
754
- }
755
- nextBody.push(...rewritten.statements);
756
- continue;
757
- }
758
- if (t.isExportAllDeclaration(statement) &&
759
- statement.source &&
760
- t.isStringLiteral(statement.source)) {
761
- const rewritten = yield* rewriteExportAllDeclaration.call(this, analysisServices, statement, dependencies);
798
+ for (const statement of program.body) {
799
+ let rewritten = null;
800
+ let source = null;
801
+ if (statement.type === 'ImportDeclaration') {
802
+ source = statement.source.value;
803
+ rewritten = yield* rewriteImportDeclaration.call(this, analysisServices, code, statement, dependencies);
804
+ }
805
+ else if (statement.type === 'ExportNamedDeclaration' &&
806
+ statement.source) {
807
+ source = statement.source.value;
808
+ rewritten = yield* rewriteExportNamedDeclaration.call(this, analysisServices, code, statement, dependencies);
809
+ }
810
+ else if (statement.type === 'ExportAllDeclaration') {
811
+ source = statement.source.value;
812
+ rewritten = yield* rewriteExportAllDeclaration.call(this, analysisServices, code, statement, dependencies);
762
813
  if (rewritten.mode === 'unchanged' &&
763
814
  rewritten.statements.length === 1 &&
764
- rewritten.statements[0] === statement) {
815
+ rewritten.statements[0] === code.slice(statement.start, statement.end)) {
765
816
  skippedCount += 1;
766
817
  }
767
- recordSourceMode(statement.source.value, rewritten.mode, !(rewritten.statements.length === 1 &&
768
- rewritten.statements[0] === statement));
769
- for (const source of rewritten.generatedSources) {
770
- generatedSources.add(source);
771
- }
772
- nextBody.push(...rewritten.statements);
818
+ }
819
+ if (!rewritten || source === null) {
773
820
  continue;
774
821
  }
775
- nextBody.push(statement);
822
+ const original = code.slice(statement.start, statement.end);
823
+ const next = rewritten.statements.join('\n');
824
+ const statementChanged = next !== original;
825
+ recordSourceMode(source, rewritten.mode, statementChanged);
826
+ rewritten.generatedSources.forEach((generatedSource) => generatedSources.add(generatedSource));
827
+ if (statementChanged) {
828
+ replacements.push({
829
+ end: statement.end,
830
+ start: statement.start,
831
+ value: next,
832
+ });
833
+ }
776
834
  }
777
- ast.program.body = nextBody;
778
- const rewrittenCode = (0, generator_1.default)(ast).code;
779
- const imports = collectOptimizedImports(ast);
835
+ const rewrittenCode = replacements.length > 0 ? applyReplacements(code, replacements) : code;
836
+ const imports = collectOptimizedImports(rewrittenCode, filename);
780
837
  const preResolvedImports = Array.from(imports.entries()).flatMap(([source, only]) => {
781
838
  const dependency = dependencies.get(source);
782
839
  if (dependency) {
@@ -799,11 +856,11 @@ function* rewriteOptimizedBarrelImports(ast, code, resolvedImports) {
799
856
  return [];
800
857
  });
801
858
  return {
802
- ast,
803
859
  code: rewrittenCode,
804
860
  fullyRewrittenSources: Array.from(sourceModes.entries())
805
861
  .filter(([, mode]) => mode === 'full')
806
862
  .map(([source]) => source),
863
+ generatedSources: Array.from(generatedSources),
807
864
  imports,
808
865
  optimizedCount,
809
866
  partialFallbackSources: Array.from(sourceModes.entries())