@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 +0,0 @@
1
- {"version":3,"file":"rewriteBarrelImports.js","names":["_generator","_interopRequireDefault","require","t","_interopRequireWildcard","_EventEmitter","_shaker","_cache","_Entrypoint","_barrelManifest","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createAnalysisServices","services","cache","TransformCacheCollection","barrelManifests","exports","eventEmitter","EventEmitter","dummy","addBinding","manifest","exported","binding","explicitExports","existing","kind","isSameBinding","reason","addBlockedExport","buildResolvedDependencyMap","resolvedImports","Map","map","dependency","source","cloneExportedName","name","isValidIdentifier","identifier","stringLiteral","cloneImportedName","left","right","imported","createAnalysisEntrypoint","filename","loadedCode","Entrypoint","createRoot","getUniqueSources","raw","Array","from","Set","reexports","reexport","exportAll","buildImportsForResolve","getReexportResolutionMap","resolved","isBarrelEntry","entry","isRawBarrelManifest","shouldUseDirectExports","getModuleName","node","isIdentifier","value","canEmitNamedReexport","collectOptimizedImports","ast","imports","addImport","includes","push","program","statement","body","isImportDeclaration","isStringLiteral","specifiers","length","specifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isExportNamedDeclaration","isExportNamespaceSpecifier","isExportDefaultSpecifier","isExportSpecifier","local","isExportAllDeclaration","groupImportSpecifiers","optimized","grouped","defaults","named","bucket","importDefaultSpecifier","importSpecifier","declarations","importDeclaration","defaultSpecifier","slice","groupExportSpecifiers","exportNamespaceSpecifier","exportSpecifier","entries","exportNamedDeclaration","createImportFallback","fallbackSpecifiers","createExportFallback","emitRewriteSkipped","action","single","file","entrypoint","getManifestExport","_manifest$exports$exp","getNamedBinding","analysisServices","targetResolved","stack","targetManifest","getOrBuildBarrelManifest","complete","getStarCandidates","candidates","filter","getExportsForFile","getNext","undefined","cached","status","loadedAndParsed","loadAndParseFn","log","evaluator","ignoredEntry","add","shaker","customEntry","analyzed","analyzeBarrelFile","resolveEntrypoint","code","manifestDependencies","flatMap","resolutionMap","nextStack","namespaceBinding","getNamespaceBinding","exportAllSource","candidate","setCacheDependencies","getResolvedDependency","dependencies","rewriteImportDeclaration","generatedSources","mode","statements","fallback","rewritten","fallbackDeclaration","rewriteExportNamedDeclaration","rewriteExportAllDeclaration","hasUnrewritableExport","rewriteOptimizedBarrelImports","nextBody","optimizedCount","sourceModes","skippedCount","recordSourceMode","statementChanged","rewrittenCode","generate","preResolvedImports","only","fullyRewrittenSources","partialFallbackSources"],"sources":["../../../src/transform/generators/rewriteBarrelImports.ts"],"sourcesContent":["/* eslint-disable no-continue, @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any, no-param-reassign, prefer-destructuring */\nimport generate from '@babel/generator';\nimport * as t from '@babel/types';\n\nimport { EventEmitter } from '../../utils/EventEmitter';\nimport { shaker } from '../../shaker';\nimport { TransformCacheCollection } from '../../cache';\nimport { Entrypoint } from '../Entrypoint';\nimport {\n analyzeBarrelFile,\n type BarrelBlockedReason,\n type BarrelManifest,\n type BarrelManifestCacheEntry,\n type BarrelManifestExport,\n type BarrelResolvedBinding,\n type RawBarrelManifest,\n} from '../barrelManifest';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { Services, ITransformAction } from '../types';\n\ntype RewriteResult = {\n ast: t.File;\n code: string;\n fullyRewrittenSources: 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: t.Statement[];\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: t.Identifier;\n source: string;\n }\n | {\n imported: string;\n kind: 'named';\n local: t.Identifier;\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\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 buildResolvedDependencyMap = (\n resolvedImports: IEntrypointDependency[]\n): ResolvedDependencyMap =>\n new Map(resolvedImports.map((dependency) => [dependency.source, dependency]));\n\nconst cloneExportedName = (name: string): t.Identifier | t.StringLiteral =>\n t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name);\n\nconst cloneImportedName = (name: string): t.Identifier | t.StringLiteral =>\n name === 'default' || t.isValidIdentifier(name)\n ? t.identifier(name)\n : t.stringLiteral(name);\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\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\nconst getModuleName = (node: t.Identifier | t.StringLiteral): string =>\n t.isIdentifier(node) ? node.name : node.value;\n\nconst canEmitNamedReexport = (imported: string): boolean =>\n imported === 'default' || t.isValidIdentifier(imported);\n\nfunction collectOptimizedImports(ast: t.File): Map<string, string[]> {\n const imports = new Map<string, string[]>();\n\n const addImport = (source: string, imported: string) => {\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (!imports.get(source)!.includes(imported)) {\n imports.get(source)!.push(imported);\n }\n };\n\n const program = ast.program;\n for (const statement of program.body) {\n if (\n t.isImportDeclaration(statement) &&\n t.isStringLiteral(statement.source)\n ) {\n if (statement.specifiers.length === 0) {\n addImport(statement.source.value, 'side-effect');\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n addImport(statement.source.value, 'default');\n continue;\n }\n\n if (t.isImportNamespaceSpecifier(specifier)) {\n addImport(statement.source.value, '*');\n continue;\n }\n\n if (t.isImportSpecifier(specifier)) {\n addImport(\n statement.source.value,\n t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value\n );\n }\n }\n continue;\n }\n\n if (\n t.isExportNamedDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n for (const specifier of statement.specifiers) {\n if (t.isExportNamespaceSpecifier(specifier)) {\n addImport(statement.source.value, '*');\n continue;\n }\n\n if (t.isExportDefaultSpecifier(specifier)) {\n addImport(statement.source.value, 'default');\n continue;\n }\n\n if (t.isExportSpecifier(specifier)) {\n addImport(statement.source.value, getModuleName(specifier.local));\n }\n }\n continue;\n }\n\n if (\n t.isExportAllDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n addImport(statement.source.value, '*');\n }\n }\n\n return imports;\n}\n\nfunction groupImportSpecifiers(\n optimized: RewrittenImportSpecifier[]\n): t.ImportDeclaration[] {\n const grouped = new Map<\n string,\n {\n defaults: t.ImportDefaultSpecifier[];\n named: t.ImportSpecifier[];\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(t.importDefaultSpecifier(specifier.local));\n continue;\n }\n\n bucket.named.push(\n t.importSpecifier(specifier.local, cloneImportedName(specifier.imported))\n );\n }\n\n const declarations: t.ImportDeclaration[] = [];\n for (const [source, bucket] of grouped) {\n if (bucket.defaults.length === 0) {\n declarations.push(\n t.importDeclaration(bucket.named, t.stringLiteral(source))\n );\n continue;\n }\n\n declarations.push(\n t.importDeclaration(\n [bucket.defaults[0], ...bucket.named],\n t.stringLiteral(source)\n )\n );\n\n for (const defaultSpecifier of bucket.defaults.slice(1)) {\n declarations.push(\n t.importDeclaration([defaultSpecifier], t.stringLiteral(source))\n );\n }\n }\n\n return declarations;\n}\n\nfunction groupExportSpecifiers(\n optimized: RewrittenExportSpecifier[]\n): t.Statement[] {\n const grouped = new Map<\n string,\n Array<t.ExportSpecifier | t.ExportNamespaceSpecifier>\n >();\n\n for (const specifier of optimized) {\n if (!grouped.has(specifier.source)) {\n grouped.set(specifier.source, []);\n }\n\n if (specifier.kind === 'namespace') {\n grouped\n .get(specifier.source)!\n .push(t.exportNamespaceSpecifier(t.identifier(specifier.exported)));\n continue;\n }\n\n grouped\n .get(specifier.source)!\n .push(\n t.exportSpecifier(\n t.identifier(specifier.imported),\n cloneExportedName(specifier.exported)\n )\n );\n }\n\n return Array.from(grouped.entries()).map(([source, specifiers]) =>\n t.exportNamedDeclaration(null, specifiers, t.stringLiteral(source))\n );\n}\n\nfunction createImportFallback(\n statement: t.ImportDeclaration,\n fallbackSpecifiers: t.ImportDeclaration['specifiers']\n): t.ImportDeclaration | null {\n if (fallbackSpecifiers.length === 0) {\n return null;\n }\n\n return t.importDeclaration(\n fallbackSpecifiers,\n t.stringLiteral(statement.source.value)\n );\n}\n\nfunction createExportFallback(\n statement: t.ExportNamedDeclaration,\n fallbackSpecifiers: t.ExportNamedDeclaration['specifiers']\n): t.ExportNamedDeclaration | null {\n if (!statement.source || fallbackSpecifiers.length === 0) {\n return null;\n }\n\n return t.exportNamedDeclaration(\n null,\n fallbackSpecifiers,\n t.stringLiteral(statement.source.value)\n );\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* 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* getOrBuildBarrelManifest.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<any, { candidates: StarCandidate[]; complete: boolean }, any> {\n if (stack.has(targetResolved)) {\n return {\n candidates: [],\n complete: false,\n };\n }\n\n const targetManifest = yield* getOrBuildBarrelManifest.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 };\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 };\n }\n\n if (!shouldUseDirectExports(targetManifest.reason)) {\n return {\n candidates: [],\n complete: false,\n };\n }\n\n const exports = yield* getExportsForFile.call(\n this,\n analysisServices,\n targetResolved\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 };\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* getOrBuildBarrelManifest(\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 (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 !== shaker) {\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 = analyzeBarrelFile(loadedAndParsed.ast);\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 } = yield* getStarCandidates.call(\n this,\n analysisServices,\n targetResolved,\n nextStack\n );\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* getOrBuildBarrelManifest.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 statement: t.ImportDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const optimized: RewrittenImportSpecifier[] = [];\n const fallback = [] as t.ImportDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (t.isImportNamespaceSpecifier(specifier)) {\n fallback.push(specifier);\n continue;\n }\n\n if (t.isImportDefaultSpecifier(specifier)) {\n const binding = getManifestExport(manifest, 'default');\n if (binding?.kind === 'named' && binding.imported === 'default') {\n optimized.push({\n kind: 'default',\n local: specifier.local,\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 = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\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,\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: [statement],\n };\n }\n\n const rewritten = groupImportSpecifiers(optimized);\n const fallbackDeclaration = createImportFallback(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 statement: t.ExportNamedDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n if (!statement.source || !t.isStringLiteral(statement.source)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\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: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const optimized: RewrittenExportSpecifier[] = [];\n const fallback = [] as t.ExportNamedDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (t.isExportNamespaceSpecifier(specifier)) {\n fallback.push(specifier);\n continue;\n }\n\n if (t.isExportDefaultSpecifier(specifier)) {\n const binding = getManifestExport(manifest, 'default');\n if (binding?.kind === 'named' && binding.imported === 'default') {\n optimized.push({\n exported: getModuleName(specifier.exported),\n imported: 'default',\n kind: 'named',\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 = getModuleName(specifier.local);\n const exported = getModuleName(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' && t.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: [statement],\n };\n }\n\n const rewritten = groupExportSpecifiers(optimized);\n const fallbackDeclaration = createExportFallback(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 statement: t.ExportAllDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest) || !manifest.complete) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\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 (!t.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: [statement],\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* rewriteOptimizedBarrelImports(\n this: ITransformAction,\n ast: t.File,\n code: string,\n resolvedImports: IEntrypointDependency[]\n): Generator<any, RewriteResult, any> {\n const dependencies = buildResolvedDependencyMap(resolvedImports);\n const analysisServices = createAnalysisServices(this.services);\n const nextBody: t.Statement[] = [];\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 ast.program.body) {\n if (\n t.isImportDeclaration(statement) &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteImportDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n if (\n t.isExportNamedDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteExportNamedDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n if (\n t.isExportAllDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteExportAllDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n if (\n rewritten.mode === 'unchanged' &&\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n ) {\n skippedCount += 1;\n }\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n nextBody.push(statement);\n }\n\n ast.program.body = nextBody;\n const rewrittenCode = generate(ast).code;\n const imports = collectOptimizedImports(ast);\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 ast,\n code: rewrittenCode,\n fullyRewrittenSources: Array.from(sourceModes.entries())\n .filter(([, mode]) => mode === 'full')\n .map(([source]) => source),\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"],"mappings":"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","ignoreList":[]}
@@ -1,272 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.internalTransform = internalTransform;
7
- exports.prepareCode = void 0;
8
- exports.transform = transform;
9
- var _buildOptions = require("../../options/buildOptions");
10
- var _dynamicImport = _interopRequireDefault(require("../../plugins/dynamic-import"));
11
- var _preeval = _interopRequireDefault(require("../../plugins/preeval"));
12
- var _shaker = require("../../shaker");
13
- var _TransformMetadata = require("../../utils/TransformMetadata");
14
- var _getPluginKey = require("../../utils/getPluginKey");
15
- var _rewriteBarrelImports = require("./rewriteBarrelImports");
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- const EMPTY_FILE = '=== empty file ===';
18
- const hasKeyInList = (plugin, list) => {
19
- const pluginKey = (0, _getPluginKey.getPluginKey)(plugin);
20
- return pluginKey ? list.some(i => pluginKey.includes(i)) : false;
21
- };
22
- function runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter) {
23
- var _evalConfig$plugins$f, _evalConfig$plugins, _evalConfig$plugins2, _result$ast;
24
- const preShakePlugins = (_evalConfig$plugins$f = (_evalConfig$plugins = evalConfig.plugins) === null || _evalConfig$plugins === void 0 ? void 0 : _evalConfig$plugins.filter(i => hasKeyInList(i, pluginOptions.highPriorityPlugins))) !== null && _evalConfig$plugins$f !== void 0 ? _evalConfig$plugins$f : [];
25
- const plugins = [...preShakePlugins, [_preeval.default, {
26
- ...pluginOptions,
27
- eventEmitter
28
- }], _dynamicImport.default, ...((_evalConfig$plugins2 = evalConfig.plugins) !== null && _evalConfig$plugins2 !== void 0 ? _evalConfig$plugins2 : []).filter(i => !hasKeyInList(i, pluginOptions.highPriorityPlugins))];
29
- const transformConfig = (0, _buildOptions.buildOptions)({
30
- ...evalConfig,
31
- envName: 'wyw-in-js',
32
- plugins
33
- });
34
- const result = babel.transformFromAstSync(originalAst, code, transformConfig);
35
- if (!result || !((_result$ast = result.ast) !== null && _result$ast !== void 0 && _result$ast.program)) {
36
- throw new Error('Babel transform failed');
37
- }
38
- return result;
39
- }
40
- const isPrevalOnly = only => only.length === 1 && only[0] === '__wywPreval';
41
- const prepareEvaluatorInput = (services, item, originalAst) => {
42
- const {
43
- only,
44
- loadedAndParsed,
45
- log
46
- } = item;
47
- if (loadedAndParsed.evaluator === 'ignored') {
48
- throw new Error(`Cannot prepare ignored entrypoint ${item.name}`);
49
- }
50
- const {
51
- code,
52
- evalConfig
53
- } = loadedAndParsed;
54
- const {
55
- options,
56
- babel,
57
- eventEmitter
58
- } = services;
59
- const {
60
- pluginOptions
61
- } = options;
62
- const preevalStageResult = eventEmitter.perf('transform:preeval', () => runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter));
63
- const transformMetadata = (0, _TransformMetadata.getTransformMetadata)(preevalStageResult.metadata);
64
- if (isPrevalOnly(only) && !transformMetadata) {
65
- log('[evaluator:end] no metadata');
66
- return {
67
- kind: 'short-circuit',
68
- code: preevalStageResult.code
69
- };
70
- }
71
- log('[preeval] metadata %O', transformMetadata);
72
- return {
73
- kind: 'continue',
74
- ast: preevalStageResult.ast,
75
- code: preevalStageResult.code,
76
- evalConfig,
77
- evaluatorConfig: {
78
- onlyExports: only,
79
- highPriorityPlugins: pluginOptions.highPriorityPlugins,
80
- features: pluginOptions.features,
81
- importOverrides: pluginOptions.importOverrides,
82
- root: options.root
83
- },
84
- metadata: transformMetadata !== null && transformMetadata !== void 0 ? transformMetadata : null
85
- };
86
- };
87
- const prepareCode = (services, item, originalAst) => {
88
- const {
89
- log,
90
- loadedAndParsed
91
- } = item;
92
- if (loadedAndParsed.evaluator === 'ignored') {
93
- var _loadedAndParsed$code;
94
- log('is ignored');
95
- return [(_loadedAndParsed$code = loadedAndParsed.code) !== null && _loadedAndParsed$code !== void 0 ? _loadedAndParsed$code : '', null, null];
96
- }
97
- const {
98
- evaluator
99
- } = loadedAndParsed;
100
- const {
101
- babel,
102
- eventEmitter
103
- } = services;
104
- const prepared = prepareEvaluatorInput(services, item, originalAst);
105
- if (prepared.kind === 'short-circuit') {
106
- return [prepared.code, null, null];
107
- }
108
- log('[evaluator:start] using %s', evaluator.name);
109
- log.extend('source')('%s', prepared.code);
110
- const [, transformedCode, imports] = eventEmitter.perf('transform:evaluator', () => evaluator(prepared.evalConfig, prepared.ast, prepared.code, prepared.evaluatorConfig, babel));
111
- log('[evaluator:end]');
112
- return [transformedCode, imports, prepared.metadata];
113
- };
114
- exports.prepareCode = prepareCode;
115
- function* internalTransform(prepareFn) {
116
- const {
117
- only,
118
- loadedAndParsed,
119
- log
120
- } = this.entrypoint;
121
- if (loadedAndParsed.evaluator === 'ignored') {
122
- var _loadedAndParsed$code2;
123
- log('is ignored');
124
- return {
125
- code: (_loadedAndParsed$code2 = loadedAndParsed.code) !== null && _loadedAndParsed$code2 !== void 0 ? _loadedAndParsed$code2 : '',
126
- metadata: null
127
- };
128
- }
129
- log('>> (%o)', only);
130
- const [preparedCode, imports, metadata] = prepareFn(this.services, this.entrypoint, loadedAndParsed.ast);
131
- if (loadedAndParsed.code === preparedCode) {
132
- log('<< (%o)\n === no changes ===', only);
133
- } else {
134
- log('<< (%o)', only);
135
- log.extend('source')('%s', preparedCode || EMPTY_FILE);
136
- }
137
- if (preparedCode === '') {
138
- var _loadedAndParsed$code3;
139
- log('is skipped');
140
- return {
141
- code: (_loadedAndParsed$code3 = loadedAndParsed.code) !== null && _loadedAndParsed$code3 !== void 0 ? _loadedAndParsed$code3 : '',
142
- metadata: null
143
- };
144
- }
145
- if (imports !== null && imports.size > 0) {
146
- const resolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
147
- imports
148
- });
149
- if (resolvedImports.length !== 0) {
150
- yield ['processImports', this.entrypoint, {
151
- resolved: resolvedImports
152
- }];
153
- }
154
- }
155
- return {
156
- code: preparedCode,
157
- metadata
158
- };
159
- }
160
-
161
- /**
162
- * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
163
- * Emits resolveImports and processImports events.
164
- */
165
- function* transform() {
166
- const {
167
- only,
168
- loadedAndParsed,
169
- log
170
- } = this.entrypoint;
171
- if (loadedAndParsed.evaluator === 'ignored') {
172
- var _loadedAndParsed$code4;
173
- log('is ignored');
174
- return {
175
- code: (_loadedAndParsed$code4 = loadedAndParsed.code) !== null && _loadedAndParsed$code4 !== void 0 ? _loadedAndParsed$code4 : '',
176
- metadata: null
177
- };
178
- }
179
- if (loadedAndParsed.evaluator !== _shaker.shaker) {
180
- return yield* internalTransform.call(this, prepareCode);
181
- }
182
- log('>> (%o)', only);
183
- const prepared = prepareEvaluatorInput(this.services, this.entrypoint, loadedAndParsed.ast);
184
- if (prepared.kind === 'short-circuit') {
185
- if (loadedAndParsed.code === prepared.code) {
186
- log('<< (%o)\n === no changes ===', only);
187
- } else {
188
- log('<< (%o)', only);
189
- log.extend('source')('%s', prepared.code || EMPTY_FILE);
190
- }
191
- if (prepared.code === '') {
192
- var _loadedAndParsed$code5;
193
- log('is skipped');
194
- return {
195
- code: (_loadedAndParsed$code5 = loadedAndParsed.code) !== null && _loadedAndParsed$code5 !== void 0 ? _loadedAndParsed$code5 : '',
196
- metadata: null
197
- };
198
- }
199
- return {
200
- code: prepared.code,
201
- metadata: null
202
- };
203
- }
204
- log('[evaluator:start] using %s', loadedAndParsed.evaluator.name);
205
- log.extend('source')('%s', prepared.code);
206
- const {
207
- babel,
208
- eventEmitter
209
- } = this.services;
210
- const [shakenAst, shakenCode, shakenImports] = eventEmitter.perf('transform:evaluator', () => (0, _shaker.shakeToESM)(prepared.evalConfig, prepared.ast, prepared.code, prepared.evaluatorConfig, babel));
211
- let nextAst = shakenAst;
212
- let nextCode = shakenCode;
213
- let nextResolvedImports = [];
214
- if (shakenImports !== null && shakenImports.size > 0) {
215
- const resolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
216
- imports: shakenImports,
217
- phase: 'initial'
218
- });
219
- if (resolvedImports.length > 0) {
220
- const rewritten = yield* _rewriteBarrelImports.rewriteOptimizedBarrelImports.call(this, shakenAst, shakenCode, resolvedImports);
221
- nextAst = rewritten.ast;
222
- nextCode = rewritten.code;
223
- if (rewritten.optimizedCount > 0) {
224
- const fullyRewrittenSources = new Set(rewritten.fullyRewrittenSources);
225
- const partialFallbackSources = new Set(rewritten.partialFallbackSources);
226
- for (const dependency of resolvedImports) {
227
- if (dependency.resolved && (fullyRewrittenSources.has(dependency.source) || partialFallbackSources.has(dependency.source))) {
228
- if (partialFallbackSources.has(dependency.source)) {
229
- this.entrypoint.addDependency(dependency);
230
- } else {
231
- this.entrypoint.addInvalidationDependency(dependency);
232
- }
233
- this.entrypoint.markInvalidateOnDependencyChange(dependency.resolved);
234
- }
235
- }
236
- nextResolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
237
- imports: rewritten.imports,
238
- phase: 'rewritten',
239
- preResolved: rewritten.preResolvedImports
240
- });
241
- } else {
242
- nextResolvedImports = resolvedImports;
243
- }
244
- }
245
- }
246
- if (nextResolvedImports.length !== 0) {
247
- yield ['processImports', this.entrypoint, {
248
- resolved: nextResolvedImports
249
- }];
250
- }
251
- const [, preparedCode] = eventEmitter.perf('transform:emitCommonJS', () => (0, _shaker.emitCommonJS)(prepared.evalConfig, nextAst, nextCode, babel));
252
- log('[evaluator:end]');
253
- if (loadedAndParsed.code === preparedCode) {
254
- log('<< (%o)\n === no changes ===', only);
255
- } else {
256
- log('<< (%o)', only);
257
- log.extend('source')('%s', preparedCode || EMPTY_FILE);
258
- }
259
- if (preparedCode === '') {
260
- var _loadedAndParsed$code6;
261
- log('is skipped');
262
- return {
263
- code: (_loadedAndParsed$code6 = loadedAndParsed.code) !== null && _loadedAndParsed$code6 !== void 0 ? _loadedAndParsed$code6 : '',
264
- metadata: null
265
- };
266
- }
267
- return {
268
- code: preparedCode,
269
- metadata: prepared.metadata
270
- };
271
- }
272
- //# sourceMappingURL=transform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform.js","names":["_buildOptions","require","_dynamicImport","_interopRequireDefault","_preeval","_shaker","_TransformMetadata","_getPluginKey","_rewriteBarrelImports","e","__esModule","default","EMPTY_FILE","hasKeyInList","plugin","list","pluginKey","getPluginKey","some","i","includes","runPreevalStage","babel","evalConfig","pluginOptions","code","originalAst","eventEmitter","_evalConfig$plugins$f","_evalConfig$plugins","_evalConfig$plugins2","_result$ast","preShakePlugins","plugins","filter","highPriorityPlugins","preevalPlugin","dynamicImportPlugin","transformConfig","buildOptions","envName","result","transformFromAstSync","ast","program","Error","isPrevalOnly","only","length","prepareEvaluatorInput","services","item","loadedAndParsed","log","evaluator","name","options","preevalStageResult","perf","transformMetadata","getTransformMetadata","metadata","kind","evaluatorConfig","onlyExports","features","importOverrides","root","prepareCode","_loadedAndParsed$code","prepared","extend","transformedCode","imports","exports","internalTransform","prepareFn","entrypoint","_loadedAndParsed$code2","preparedCode","_loadedAndParsed$code3","size","resolvedImports","getNext","resolved","transform","_loadedAndParsed$code4","shaker","call","_loadedAndParsed$code5","shakenAst","shakenCode","shakenImports","shakeToESM","nextAst","nextCode","nextResolvedImports","phase","rewritten","rewriteOptimizedBarrelImports","optimizedCount","fullyRewrittenSources","Set","partialFallbackSources","dependency","has","source","addDependency","addInvalidationDependency","markInvalidateOnDependencyChange","preResolved","preResolvedImports","emitCommonJS","_loadedAndParsed$code6"],"sources":["../../../src/transform/generators/transform.ts"],"sourcesContent":["import type {\n BabelFileResult,\n PluginItem,\n TransformOptions,\n} from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { EvaluatorConfig, StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../../babel';\nimport { buildOptions } from '../../options/buildOptions';\nimport dynamicImportPlugin from '../../plugins/dynamic-import';\nimport preevalPlugin from '../../plugins/preeval';\nimport { emitCommonJS, shakeToESM, shaker } from '../../shaker';\nimport type { EventEmitter } from '../../utils/EventEmitter';\nimport type { WYWTransformMetadata } from '../../utils/TransformMetadata';\nimport { getTransformMetadata } from '../../utils/TransformMetadata';\nimport { getPluginKey } from '../../utils/getPluginKey';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type {\n ITransformAction,\n Services,\n SyncScenarioForAction,\n} from '../types';\nimport { rewriteOptimizedBarrelImports } from './rewriteBarrelImports';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nconst hasKeyInList = (plugin: PluginItem, list: string[]): boolean => {\n const pluginKey = getPluginKey(plugin);\n return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;\n};\n\nfunction runPreevalStage(\n babel: Core,\n evalConfig: TransformOptions,\n pluginOptions: StrictOptions,\n code: string,\n originalAst: File,\n eventEmitter: EventEmitter\n): BabelFileResult {\n const preShakePlugins =\n evalConfig.plugins?.filter((i) =>\n hasKeyInList(i, pluginOptions.highPriorityPlugins)\n ) ?? [];\n\n const plugins = [\n ...preShakePlugins,\n [\n preevalPlugin,\n {\n ...pluginOptions,\n eventEmitter,\n },\n ],\n dynamicImportPlugin,\n ...(evalConfig.plugins ?? []).filter(\n (i) => !hasKeyInList(i, pluginOptions.highPriorityPlugins)\n ),\n ];\n\n const transformConfig = buildOptions({\n ...evalConfig,\n envName: 'wyw-in-js',\n plugins,\n });\n\n const result = babel.transformFromAstSync(originalAst, code, transformConfig);\n\n if (!result || !result.ast?.program) {\n throw new Error('Babel transform failed');\n }\n\n return result;\n}\n\ntype PrepareCodeFn = (\n services: Services,\n item: Entrypoint,\n originalAst: File\n) => [\n code: string,\n imports: Map<string, string[]> | null,\n metadata: WYWTransformMetadata | null,\n];\n\ntype PreparedEvaluatorInput =\n | {\n kind: 'continue';\n ast: File;\n code: string;\n evalConfig: TransformOptions;\n evaluatorConfig: EvaluatorConfig;\n metadata: WYWTransformMetadata | null;\n }\n | {\n kind: 'short-circuit';\n code: string;\n };\n\nconst isPrevalOnly = (only: string[]) =>\n only.length === 1 && only[0] === '__wywPreval';\n\nconst prepareEvaluatorInput = (\n services: Services,\n item: Entrypoint,\n originalAst: File\n): PreparedEvaluatorInput => {\n const { only, loadedAndParsed, log } = item;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error(`Cannot prepare ignored entrypoint ${item.name}`);\n }\n\n const { code, evalConfig } = loadedAndParsed;\n const { options, babel, eventEmitter } = services;\n const { pluginOptions } = options;\n\n const preevalStageResult = eventEmitter.perf('transform:preeval', () =>\n runPreevalStage(\n babel,\n evalConfig,\n pluginOptions,\n code,\n originalAst,\n eventEmitter\n )\n );\n\n const transformMetadata = getTransformMetadata(preevalStageResult.metadata);\n if (isPrevalOnly(only) && !transformMetadata) {\n log('[evaluator:end] no metadata');\n return {\n kind: 'short-circuit',\n code: preevalStageResult.code!,\n };\n }\n\n log('[preeval] metadata %O', transformMetadata);\n\n return {\n kind: 'continue',\n ast: preevalStageResult.ast!,\n code: preevalStageResult.code!,\n evalConfig,\n evaluatorConfig: {\n onlyExports: only,\n highPriorityPlugins: pluginOptions.highPriorityPlugins,\n features: pluginOptions.features,\n importOverrides: pluginOptions.importOverrides,\n root: options.root,\n },\n metadata: transformMetadata ?? null,\n };\n};\n\nexport const prepareCode = (\n services: Services,\n item: Entrypoint,\n originalAst: File\n): ReturnType<PrepareCodeFn> => {\n const { log, loadedAndParsed } = item;\n if (loadedAndParsed.evaluator === 'ignored') {\n log('is ignored');\n return [loadedAndParsed.code ?? '', null, null];\n }\n\n const { evaluator } = loadedAndParsed;\n const { babel, eventEmitter } = services;\n const prepared = prepareEvaluatorInput(services, item, originalAst);\n if (prepared.kind === 'short-circuit') {\n return [prepared.code, null, null];\n }\n\n log('[evaluator:start] using %s', evaluator.name);\n log.extend('source')('%s', prepared.code);\n\n const [, transformedCode, imports] = eventEmitter.perf(\n 'transform:evaluator',\n () =>\n evaluator(\n prepared.evalConfig,\n prepared.ast,\n prepared.code,\n prepared.evaluatorConfig,\n babel\n )\n );\n\n log('[evaluator:end]');\n\n return [transformedCode, imports, prepared.metadata];\n};\n\nexport function* internalTransform(\n this: ITransformAction,\n prepareFn: PrepareCodeFn\n): SyncScenarioForAction<ITransformAction> {\n const { only, loadedAndParsed, log } = this.entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n log('is ignored');\n return {\n code: loadedAndParsed.code ?? '',\n metadata: null,\n };\n }\n\n log('>> (%o)', only);\n\n const [preparedCode, imports, metadata] = prepareFn(\n this.services,\n this.entrypoint,\n loadedAndParsed.ast\n );\n\n if (loadedAndParsed.code === preparedCode) {\n log('<< (%o)\\n === no changes ===', only);\n } else {\n log('<< (%o)', only);\n log.extend('source')('%s', preparedCode || EMPTY_FILE);\n }\n\n if (preparedCode === '') {\n log('is skipped');\n return {\n code: loadedAndParsed.code ?? '',\n metadata: null,\n };\n }\n\n if (imports !== null && imports.size > 0) {\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n this.entrypoint,\n {\n imports,\n }\n );\n\n if (resolvedImports.length !== 0) {\n yield [\n 'processImports',\n this.entrypoint,\n {\n resolved: resolvedImports,\n },\n ];\n }\n }\n\n return {\n code: preparedCode,\n metadata,\n };\n}\n\n/**\n * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.\n * Emits resolveImports and processImports events.\n */\nexport function* transform(\n this: ITransformAction\n): SyncScenarioForAction<ITransformAction> {\n const { only, loadedAndParsed, log } = this.entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n log('is ignored');\n return {\n code: loadedAndParsed.code ?? '',\n metadata: null,\n };\n }\n\n if (loadedAndParsed.evaluator !== shaker) {\n return yield* internalTransform.call(this, prepareCode);\n }\n\n log('>> (%o)', only);\n\n const prepared = prepareEvaluatorInput(\n this.services,\n this.entrypoint,\n loadedAndParsed.ast\n );\n\n if (prepared.kind === 'short-circuit') {\n if (loadedAndParsed.code === prepared.code) {\n log('<< (%o)\\n === no changes ===', only);\n } else {\n log('<< (%o)', only);\n log.extend('source')('%s', prepared.code || EMPTY_FILE);\n }\n\n if (prepared.code === '') {\n log('is skipped');\n return {\n code: loadedAndParsed.code ?? '',\n metadata: null,\n };\n }\n\n return {\n code: prepared.code,\n metadata: null,\n };\n }\n\n log('[evaluator:start] using %s', loadedAndParsed.evaluator.name);\n log.extend('source')('%s', prepared.code);\n\n const { babel, eventEmitter } = this.services;\n const [shakenAst, shakenCode, shakenImports] = eventEmitter.perf(\n 'transform:evaluator',\n () =>\n shakeToESM(\n prepared.evalConfig,\n prepared.ast,\n prepared.code,\n prepared.evaluatorConfig,\n babel\n )\n );\n\n let nextAst = shakenAst;\n let nextCode = shakenCode;\n let nextResolvedImports: IEntrypointDependency[] = [];\n\n if (shakenImports !== null && shakenImports.size > 0) {\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n this.entrypoint,\n {\n imports: shakenImports,\n phase: 'initial',\n }\n );\n\n if (resolvedImports.length > 0) {\n const rewritten = yield* rewriteOptimizedBarrelImports.call(\n this,\n shakenAst,\n shakenCode,\n resolvedImports\n );\n\n nextAst = rewritten.ast;\n nextCode = rewritten.code;\n if (rewritten.optimizedCount > 0) {\n const fullyRewrittenSources = new Set(rewritten.fullyRewrittenSources);\n const partialFallbackSources = new Set(\n rewritten.partialFallbackSources\n );\n for (const dependency of resolvedImports) {\n if (\n dependency.resolved &&\n (fullyRewrittenSources.has(dependency.source) ||\n partialFallbackSources.has(dependency.source))\n ) {\n if (partialFallbackSources.has(dependency.source)) {\n this.entrypoint.addDependency(dependency);\n } else {\n this.entrypoint.addInvalidationDependency(dependency);\n }\n this.entrypoint.markInvalidateOnDependencyChange(\n dependency.resolved\n );\n }\n }\n\n nextResolvedImports = yield* this.getNext(\n 'resolveImports',\n this.entrypoint,\n {\n imports: rewritten.imports,\n phase: 'rewritten',\n preResolved: rewritten.preResolvedImports,\n }\n );\n } else {\n nextResolvedImports = resolvedImports;\n }\n }\n }\n\n if (nextResolvedImports.length !== 0) {\n yield [\n 'processImports',\n this.entrypoint,\n {\n resolved: nextResolvedImports,\n },\n ];\n }\n\n const [, preparedCode] = eventEmitter.perf('transform:emitCommonJS', () =>\n emitCommonJS(prepared.evalConfig, nextAst, nextCode, babel)\n );\n\n log('[evaluator:end]');\n\n if (loadedAndParsed.code === preparedCode) {\n log('<< (%o)\\n === no changes ===', only);\n } else {\n log('<< (%o)', only);\n log.extend('source')('%s', preparedCode || EMPTY_FILE);\n }\n\n if (preparedCode === '') {\n log('is skipped');\n return {\n code: loadedAndParsed.code ?? '',\n metadata: null,\n };\n }\n\n return {\n code: preparedCode,\n metadata: prepared.metadata,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.workflow = workflow;
7
- var _AbortError = require("../actions/AbortError");
8
- /**
9
- * The entry point for file processing. Sequentially calls `processEntrypoint`,
10
- * `evalFile`, `collect`, and `extract`. Returns the result of transforming
11
- * the source code as well as all artifacts obtained from code execution.
12
- */
13
- function* workflow() {
14
- var _entrypoint$loadedAnd2, _collectStageResult$c;
15
- const {
16
- cache,
17
- options
18
- } = this.services;
19
- const {
20
- entrypoint
21
- } = this;
22
- if (entrypoint.ignored) {
23
- var _entrypoint$loadedAnd;
24
- return {
25
- code: (_entrypoint$loadedAnd = entrypoint.loadedAndParsed.code) !== null && _entrypoint$loadedAnd !== void 0 ? _entrypoint$loadedAnd : '',
26
- sourceMap: options.inputSourceMap
27
- };
28
- }
29
- try {
30
- yield* this.getNext('processEntrypoint', entrypoint, undefined, null);
31
- entrypoint.assertNotSuperseded();
32
- } catch (e) {
33
- if ((0, _AbortError.isAborted)(e) && entrypoint.supersededWith) {
34
- entrypoint.log('workflow aborted, schedule the next attempt');
35
- return yield* this.getNext('workflow', entrypoint.supersededWith, undefined, null);
36
- }
37
- throw e;
38
- }
39
- const originalCode = (_entrypoint$loadedAnd2 = entrypoint.loadedAndParsed.code) !== null && _entrypoint$loadedAnd2 !== void 0 ? _entrypoint$loadedAnd2 : '';
40
-
41
- // File is ignored or does not contain any tags. Return original code.
42
- if (!entrypoint.hasWywMetadata()) {
43
- if (entrypoint.generation === 1) {
44
- // 1st generation here means that it's __wywPreval entrypoint
45
- // without __wywPreval, so we don't need it cached
46
- cache.delete('entrypoints', entrypoint.name);
47
- }
48
- return {
49
- code: originalCode,
50
- sourceMap: options.inputSourceMap
51
- };
52
- }
53
-
54
- // *** 2nd stage ***
55
-
56
- const evalStageResult = yield* this.getNext('evalFile', entrypoint, undefined, null);
57
- if (evalStageResult === null) {
58
- return {
59
- code: originalCode,
60
- sourceMap: options.inputSourceMap
61
- };
62
- }
63
- const [valueCache, dependencies] = evalStageResult;
64
-
65
- // *** 3rd stage ***
66
-
67
- const collectStageResult = yield* this.getNext('collect', entrypoint, {
68
- valueCache
69
- }, null);
70
- if (!collectStageResult.metadata) {
71
- return {
72
- code: collectStageResult.code,
73
- sourceMap: collectStageResult.map
74
- };
75
- }
76
-
77
- // *** 4th stage
78
-
79
- const extractStageResult = yield* this.getNext('extract', entrypoint, {
80
- processors: collectStageResult.metadata.processors
81
- }, null);
82
- return {
83
- ...extractStageResult,
84
- code: (_collectStageResult$c = collectStageResult.code) !== null && _collectStageResult$c !== void 0 ? _collectStageResult$c : '',
85
- dependencies,
86
- replacements: [...extractStageResult.replacements, ...collectStageResult.metadata.replacements],
87
- sourceMap: collectStageResult.map
88
- };
89
- }
90
- //# sourceMappingURL=workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.js","names":["_AbortError","require","workflow","_entrypoint$loadedAnd2","_collectStageResult$c","cache","options","services","entrypoint","ignored","_entrypoint$loadedAnd","code","loadedAndParsed","sourceMap","inputSourceMap","getNext","undefined","assertNotSuperseded","e","isAborted","supersededWith","log","originalCode","hasWywMetadata","generation","delete","name","evalStageResult","valueCache","dependencies","collectStageResult","metadata","map","extractStageResult","processors","replacements"],"sources":["../../../src/transform/generators/workflow.ts"],"sourcesContent":["import { isAborted } from '../actions/AbortError';\nimport type { IWorkflowAction, SyncScenarioForAction } from '../types';\n\n/**\n * The entry point for file processing. Sequentially calls `processEntrypoint`,\n * `evalFile`, `collect`, and `extract`. Returns the result of transforming\n * the source code as well as all artifacts obtained from code execution.\n */\nexport function* workflow(\n this: IWorkflowAction\n): SyncScenarioForAction<IWorkflowAction> {\n const { cache, options } = this.services;\n const { entrypoint } = this;\n\n if (entrypoint.ignored) {\n return {\n code: entrypoint.loadedAndParsed.code ?? '',\n sourceMap: options.inputSourceMap,\n };\n }\n\n try {\n yield* this.getNext('processEntrypoint', entrypoint, undefined, null);\n entrypoint.assertNotSuperseded();\n } catch (e) {\n if (isAborted(e) && entrypoint.supersededWith) {\n entrypoint.log('workflow aborted, schedule the next attempt');\n return yield* this.getNext(\n 'workflow',\n entrypoint.supersededWith,\n undefined,\n null\n );\n }\n\n throw e;\n }\n\n const originalCode = entrypoint.loadedAndParsed.code ?? '';\n\n // File is ignored or does not contain any tags. Return original code.\n if (!entrypoint.hasWywMetadata()) {\n if (entrypoint.generation === 1) {\n // 1st generation here means that it's __wywPreval entrypoint\n // without __wywPreval, so we don't need it cached\n cache.delete('entrypoints', entrypoint.name);\n }\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n // *** 2nd stage ***\n\n const evalStageResult = yield* this.getNext(\n 'evalFile',\n entrypoint,\n undefined,\n null\n );\n\n if (evalStageResult === null) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const [valueCache, dependencies] = evalStageResult;\n\n // *** 3rd stage ***\n\n const collectStageResult = yield* this.getNext(\n 'collect',\n entrypoint,\n {\n valueCache,\n },\n null\n );\n\n if (!collectStageResult.metadata) {\n return {\n code: collectStageResult.code!,\n sourceMap: collectStageResult.map,\n };\n }\n\n // *** 4th stage\n\n const extractStageResult = yield* this.getNext(\n 'extract',\n entrypoint,\n {\n processors: collectStageResult.metadata.processors,\n },\n null\n );\n\n return {\n ...extractStageResult,\n code: collectStageResult.code ?? '',\n dependencies,\n replacements: [\n ...extractStageResult.replacements,\n ...collectStageResult.metadata.replacements,\n ],\n sourceMap: collectStageResult.map,\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,UAAUC,QAAQA,CAAA,EAEiB;EAAA,IAAAC,sBAAA,EAAAC,qBAAA;EACxC,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,QAAQ;EACxC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAE3B,IAAIA,UAAU,CAACC,OAAO,EAAE;IAAA,IAAAC,qBAAA;IACtB,OAAO;MACLC,IAAI,GAAAD,qBAAA,GAAEF,UAAU,CAACI,eAAe,CAACD,IAAI,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,EAAE;MAC3CG,SAAS,EAAEP,OAAO,CAACQ;IACrB,CAAC;EACH;EAEA,IAAI;IACF,OAAO,IAAI,CAACC,OAAO,CAAC,mBAAmB,EAAEP,UAAU,EAAEQ,SAAS,EAAE,IAAI,CAAC;IACrER,UAAU,CAACS,mBAAmB,CAAC,CAAC;EAClC,CAAC,CAAC,OAAOC,CAAC,EAAE;IACV,IAAI,IAAAC,qBAAS,EAACD,CAAC,CAAC,IAAIV,UAAU,CAACY,cAAc,EAAE;MAC7CZ,UAAU,CAACa,GAAG,CAAC,6CAA6C,CAAC;MAC7D,OAAO,OAAO,IAAI,CAACN,OAAO,CACxB,UAAU,EACVP,UAAU,CAACY,cAAc,EACzBJ,SAAS,EACT,IACF,CAAC;IACH;IAEA,MAAME,CAAC;EACT;EAEA,MAAMI,YAAY,IAAAnB,sBAAA,GAAGK,UAAU,CAACI,eAAe,CAACD,IAAI,cAAAR,sBAAA,cAAAA,sBAAA,GAAI,EAAE;;EAE1D;EACA,IAAI,CAACK,UAAU,CAACe,cAAc,CAAC,CAAC,EAAE;IAChC,IAAIf,UAAU,CAACgB,UAAU,KAAK,CAAC,EAAE;MAC/B;MACA;MACAnB,KAAK,CAACoB,MAAM,CAAC,aAAa,EAAEjB,UAAU,CAACkB,IAAI,CAAC;IAC9C;IAEA,OAAO;MACLf,IAAI,EAAEW,YAAY;MAClBT,SAAS,EAAEP,OAAO,CAACQ;IACrB,CAAC;EACH;;EAEA;;EAEA,MAAMa,eAAe,GAAG,OAAO,IAAI,CAACZ,OAAO,CACzC,UAAU,EACVP,UAAU,EACVQ,SAAS,EACT,IACF,CAAC;EAED,IAAIW,eAAe,KAAK,IAAI,EAAE;IAC5B,OAAO;MACLhB,IAAI,EAAEW,YAAY;MAClBT,SAAS,EAAEP,OAAO,CAACQ;IACrB,CAAC;EACH;EAEA,MAAM,CAACc,UAAU,EAAEC,YAAY,CAAC,GAAGF,eAAe;;EAElD;;EAEA,MAAMG,kBAAkB,GAAG,OAAO,IAAI,CAACf,OAAO,CAC5C,SAAS,EACTP,UAAU,EACV;IACEoB;EACF,CAAC,EACD,IACF,CAAC;EAED,IAAI,CAACE,kBAAkB,CAACC,QAAQ,EAAE;IAChC,OAAO;MACLpB,IAAI,EAAEmB,kBAAkB,CAACnB,IAAK;MAC9BE,SAAS,EAAEiB,kBAAkB,CAACE;IAChC,CAAC;EACH;;EAEA;;EAEA,MAAMC,kBAAkB,GAAG,OAAO,IAAI,CAAClB,OAAO,CAC5C,SAAS,EACTP,UAAU,EACV;IACE0B,UAAU,EAAEJ,kBAAkB,CAACC,QAAQ,CAACG;EAC1C,CAAC,EACD,IACF,CAAC;EAED,OAAO;IACL,GAAGD,kBAAkB;IACrBtB,IAAI,GAAAP,qBAAA,GAAE0B,kBAAkB,CAACnB,IAAI,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IACnCyB,YAAY;IACZM,YAAY,EAAE,CACZ,GAAGF,kBAAkB,CAACE,YAAY,EAClC,GAAGL,kBAAkB,CAACC,QAAQ,CAACI,YAAY,CAC5C;IACDtB,SAAS,EAAEiB,kBAAkB,CAACE;EAChC,CAAC;AACH","ignoreList":[]}