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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -29
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +3 -6
  178. package/types/index.js +24 -82
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +2 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +0 -23
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -23
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,1147 +0,0 @@
1
- "use strict";
2
- /* eslint @typescript-eslint/no-use-before-define: ["error", { "functions": false }] */
3
- /* eslint-disable no-restricted-syntax,no-continue */
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.explicitImport = exports.sideEffectImport = void 0;
6
- exports.collectExportsAndImports = collectExportsAndImports;
7
- const shared_1 = require("@wyw-in-js/shared");
8
- const getScope_1 = require("./getScope");
9
- const isExports_1 = require("./isExports");
10
- const isNotNull_1 = require("./isNotNull");
11
- const isRequire_1 = require("./isRequire");
12
- const isTypedNode_1 = require("./isTypedNode");
13
- const getConstantStringValue_1 = require("./getConstantStringValue");
14
- const traversalCache_1 = require("./traversalCache");
15
- const sideEffectImport = (item) => item.imported === 'side-effect';
16
- exports.sideEffectImport = sideEffectImport;
17
- const explicitImport = (item) => item.imported !== 'side-effect';
18
- exports.explicitImport = explicitImport;
19
- function getValue({ node }) {
20
- return node.type === 'Identifier' ? node.name : node.value;
21
- }
22
- // We ignore imports and exports of types
23
- const isType = (p) => ('importKind' in p.node && p.node.importKind === 'type') ||
24
- ('exportKind' in p.node && p.node.exportKind === 'type');
25
- const collectors = {
26
- ImportSpecifier(path, source) {
27
- if (isType(path))
28
- return [];
29
- const imported = getValue(path.get('imported'));
30
- const local = path.get('local');
31
- return [{ imported, local, source, type: 'esm' }];
32
- },
33
- ImportDefaultSpecifier(path, source) {
34
- const local = path.get('local');
35
- return [{ imported: 'default', local, source, type: 'esm' }];
36
- },
37
- ImportNamespaceSpecifier(path, source) {
38
- const local = path.get('local');
39
- return unfoldNamespaceImport({ imported: '*', local, source, type: 'esm' });
40
- },
41
- };
42
- function collectFromImportDeclaration(path, state) {
43
- // If importKind is specified, and it's not a value, ignore that import
44
- if (isType(path))
45
- return;
46
- const source = getValue(path.get('source'));
47
- const specifiers = path.get('specifiers');
48
- if (specifiers.length === 0) {
49
- state.imports.push({ imported: 'side-effect', local: path, source });
50
- }
51
- specifiers.forEach((specifier) => {
52
- if (specifier.isImportSpecifier() && isType(specifier))
53
- return;
54
- const collector = collectors[specifier.node.type];
55
- state.imports.push(...collector(specifier, source));
56
- });
57
- }
58
- function getAncestorsWhile(path, cond) {
59
- const result = [];
60
- let current = path;
61
- while (current && cond(current)) {
62
- result.push(current);
63
- current = current.parentPath;
64
- }
65
- return result;
66
- }
67
- function whatIsDestructed(objectPattern) {
68
- const destructedProps = [];
69
- objectPattern.traverse({
70
- Identifier(identifier) {
71
- if (identifier.isBindingIdentifier()) {
72
- const parent = identifier.parentPath;
73
- if (parent.isObjectProperty({ value: identifier.node })) {
74
- const chain = getAncestorsWhile(parent, (p) => p !== objectPattern)
75
- .filter((0, isTypedNode_1.isTypedNode)('ObjectProperty'))
76
- .map((p) => {
77
- const key = p.get('key');
78
- if (!key.isIdentifier()) {
79
- // TODO: try to process other type of keys or at least warn about this
80
- return null;
81
- }
82
- return key;
83
- })
84
- .filter(isNotNull_1.isNotNull);
85
- chain.reverse();
86
- if (chain.length > 0) {
87
- destructedProps.push({
88
- what: chain[0].node.name,
89
- as: identifier,
90
- });
91
- }
92
- return;
93
- }
94
- if (parent.isRestElement({ argument: identifier.node })) {
95
- destructedProps.push({
96
- what: '*',
97
- as: identifier,
98
- });
99
- }
100
- }
101
- },
102
- });
103
- return destructedProps;
104
- }
105
- const debug = shared_1.logger.extend('evaluator:collectExportsAndImports');
106
- function importFromVariableDeclarator(path, isSync) {
107
- const id = path.get('id');
108
- if (id.isIdentifier()) {
109
- // It's the simplest case when the full namespace is imported
110
- return [
111
- {
112
- as: id,
113
- what: '*',
114
- },
115
- ];
116
- }
117
- if (!isSync) {
118
- // Something went wrong
119
- // Is it something like `const { … } = import(…)`?
120
- debug('`import` should be awaited');
121
- return [];
122
- }
123
- if (id.isObjectPattern()) {
124
- return whatIsDestructed(id);
125
- }
126
- // What else it can be?
127
- debug('importFromVariableDeclarator: unknown type of id %o', id.node.type);
128
- return [];
129
- }
130
- const findIIFE = (path) => {
131
- if (path.isCallExpression() && path.get('callee').isFunctionExpression()) {
132
- return path;
133
- }
134
- if (!path.parentPath) {
135
- return null;
136
- }
137
- return findIIFE(path.parentPath);
138
- };
139
- function exportFromVariableDeclarator(path) {
140
- const id = path.get('id');
141
- const init = path.get('init');
142
- // If there is no init and id is an identifier, we should find IIFE
143
- if (!init.node && id.isIdentifier()) {
144
- const binding = (0, getScope_1.getScope)(path).getBinding(id.node.name);
145
- if (!binding) {
146
- return {};
147
- }
148
- const iife = [
149
- ...binding.referencePaths,
150
- ...binding.constantViolations,
151
- binding.path,
152
- ]
153
- .map(findIIFE)
154
- .find(isNotNull_1.isNotNull);
155
- if (!iife) {
156
- return {};
157
- }
158
- return {
159
- [id.node.name]: iife,
160
- };
161
- }
162
- if (!init || !init.isExpression()) {
163
- return {};
164
- }
165
- if (id.isIdentifier()) {
166
- // It is `export const a = 1;`
167
- return {
168
- [id.node.name]: init,
169
- };
170
- }
171
- if (id.isObjectPattern()) {
172
- // It is `export const { a, ...rest } = obj;`
173
- return whatIsDestructed(id).reduce((acc, destructed) => ({
174
- ...acc,
175
- [destructed.as.node.name]: init,
176
- }), {});
177
- }
178
- if (id.isArrayPattern()) {
179
- // It is `export const [a, , b, ...rest] = arr;`
180
- const exported = new Set();
181
- id.traverse({
182
- Identifier(identifier) {
183
- if (identifier.isBindingIdentifier()) {
184
- exported.add(identifier.node.name);
185
- }
186
- },
187
- });
188
- if (exported.size === 0) {
189
- return {};
190
- }
191
- const result = {};
192
- exported.forEach((name) => {
193
- result[name] = init;
194
- });
195
- return result;
196
- }
197
- // What else it can be?
198
- debug('exportFromVariableDeclarator: unknown type of id %o', id.node.type);
199
- return {};
200
- }
201
- function collectFromDynamicImport(path, state) {
202
- const { parentPath: callExpression } = path;
203
- if (!callExpression.isCallExpression()) {
204
- // It's wrong `import`
205
- return;
206
- }
207
- const [sourcePath] = callExpression.get('arguments');
208
- if (!sourcePath || !sourcePath.isExpression()) {
209
- // Import should have at least one argument
210
- return;
211
- }
212
- const source = (0, getConstantStringValue_1.getConstantStringValue)(sourcePath.node);
213
- if (source === null) {
214
- return;
215
- }
216
- let { parentPath: container, key } = callExpression;
217
- let isAwaited = false;
218
- if (container.isAwaitExpression()) {
219
- // If it's not awaited import, it imports the full namespace
220
- isAwaited = true;
221
- key = container.key;
222
- container = container.parentPath;
223
- }
224
- // Is it `const something = await import("something")`?
225
- if (key === 'init' && container.isVariableDeclarator()) {
226
- importFromVariableDeclarator(container, isAwaited).map((prop) => state.imports.push({
227
- imported: prop.what,
228
- local: prop.as,
229
- source,
230
- type: 'dynamic',
231
- }));
232
- }
233
- }
234
- function getCalleeName(path) {
235
- const callee = path.get('callee');
236
- if (callee.isIdentifier()) {
237
- return callee.node.name;
238
- }
239
- if (callee.isMemberExpression()) {
240
- const property = callee.get('property');
241
- if (property.isIdentifier()) {
242
- return property.node.name;
243
- }
244
- }
245
- return undefined;
246
- }
247
- const matchCall = (p, rules) => {
248
- const name = getCalleeName(p);
249
- if (name === undefined) {
250
- return false;
251
- }
252
- return rules.some(([n, ...args]) => {
253
- if (name !== n)
254
- return false;
255
- const fnArgs = p.get('arguments');
256
- if (fnArgs.length !== args.length)
257
- return false;
258
- return args.every((arg, i) => {
259
- if (arg === '*')
260
- return true;
261
- if (typeof arg === 'function')
262
- return arg(fnArgs[i]);
263
- return arg === fnArgs[i];
264
- });
265
- });
266
- };
267
- function getImportExportTypeByInteropFunction(path, argPath) {
268
- if (matchCall(path, [['__exportStar', argPath, (p) => (0, isExports_1.isExports)(p)]])) {
269
- return 're-export:*';
270
- }
271
- if (matchCall(path, [
272
- ['_interopRequireDefault', argPath], // babel and swc <1.3.50
273
- ['_interop_require_default', argPath], // swc >=1.3.50
274
- ['__importDefault', argPath], // ?
275
- ])) {
276
- return 'default';
277
- }
278
- if (matchCall(path, [
279
- ['_interopRequireWildcard', argPath], // babel and swc <1.3.50
280
- ['_interop_require_wildcard', argPath], // swc >=1.3.50
281
- ['__importStar', argPath], // ?
282
- ['__toESM', argPath], // esbuild >=0.14.7
283
- ['__toModule', argPath], // esbuild <0.14.7
284
- ])) {
285
- return 'import:*';
286
- }
287
- if (matchCall(path, [
288
- ['_extends', isEmptyObject, argPath], // babel and swc
289
- ['__rest', argPath, isArrayExpression], // tsc and esbuild <=0.11.3
290
- ['__objRest', argPath, isArrayExpression], // esbuild >0.11.3
291
- ['_objectWithoutProperties', argPath, isArrayExpression], // babel and swc <1.3.50
292
- ['_object_without_properties', argPath, isArrayExpression], // swc >=1.3.50
293
- ['_objectDestructuringEmpty', argPath], // swc <1.3.50
294
- ['_object_destructuring_empty', argPath], // swc >=1.3.50
295
- ])) {
296
- return 'import:*';
297
- }
298
- return undefined;
299
- }
300
- function isAlreadyProcessed(path) {
301
- if (path.isCallExpression() &&
302
- path.get('callee').isIdentifier({ name: '__toCommonJS' })) {
303
- // because its esbuild and we already processed all exports
304
- return true;
305
- }
306
- return false;
307
- }
308
- function isRequireCall(path) {
309
- return path.isCallExpression() && (0, isRequire_1.isRequire)(path.get('callee'));
310
- }
311
- function isEmptyObject(path) {
312
- return path.isObjectExpression() && path.node.properties.length === 0;
313
- }
314
- function isArrayExpression(path) {
315
- return path.isArrayExpression();
316
- }
317
- function isCallExpression(pathOrName) {
318
- if (typeof pathOrName === 'string') {
319
- return (p) => p.isCallExpression() &&
320
- p.get('callee').isIdentifier({ name: pathOrName });
321
- }
322
- return pathOrName.isCallExpression();
323
- }
324
- function isObjectExpression(path) {
325
- return path.isObjectExpression();
326
- }
327
- function isIdentifier(name) {
328
- return (path) => path.isIdentifier({ name });
329
- }
330
- function collectFromRequire(path, state) {
331
- if (!(0, isRequire_1.isRequire)(path))
332
- return;
333
- // This method can be reached many times from multiple visitors for the same path
334
- // So we need to check if we already processed it
335
- if (state.processedRequires.has(path))
336
- return;
337
- state.processedRequires.add(path);
338
- const { parentPath: callExpression } = path;
339
- if (!callExpression.isCallExpression()) {
340
- // It's wrong `require`
341
- return;
342
- }
343
- const [sourcePath] = callExpression.get('arguments');
344
- if (!sourcePath || !sourcePath.isExpression()) {
345
- // Import should have at least one argument
346
- return;
347
- }
348
- const source = (0, getConstantStringValue_1.getConstantStringValue)(sourcePath.node);
349
- if (source === null) {
350
- return;
351
- }
352
- const { parentPath: container, key } = callExpression;
353
- if (container.isCallExpression()) {
354
- // It may be transpiled import such as
355
- // `var _atomic = _interopRequireDefault(require("@linaria/atomic"));`
356
- const imported = getImportExportTypeByInteropFunction(container, callExpression);
357
- if (!imported) {
358
- // It's not a transpiled import.
359
- // TODO: Can we guess that it's a namespace import?
360
- debug('Unknown wrapper of require: %o', container.node.callee);
361
- return;
362
- }
363
- if (imported === 're-export:*') {
364
- state.reexports.push({
365
- exported: '*',
366
- imported: '*',
367
- local: path,
368
- source,
369
- });
370
- return;
371
- }
372
- let { parentPath: variableDeclarator } = container;
373
- if (variableDeclarator.isCallExpression()) {
374
- if (variableDeclarator.get('callee').isIdentifier({ name: '_extends' })) {
375
- variableDeclarator = variableDeclarator.parentPath;
376
- }
377
- }
378
- if (!variableDeclarator.isVariableDeclarator()) {
379
- // TODO: Where else it can be?
380
- debug('Unexpected require inside %o', variableDeclarator.node.type);
381
- return;
382
- }
383
- const id = variableDeclarator.get('id');
384
- if (!id.isIdentifier()) {
385
- debug('Id should be Identifier %o', variableDeclarator.node.type);
386
- return;
387
- }
388
- if (imported === 'import:*') {
389
- const unfolded = unfoldNamespaceImport({
390
- imported: '*',
391
- local: id,
392
- source,
393
- type: 'cjs',
394
- });
395
- state.imports.push(...unfolded);
396
- }
397
- else {
398
- state.imports.push({
399
- imported,
400
- local: id,
401
- source,
402
- type: 'cjs',
403
- });
404
- }
405
- }
406
- if (container.isMemberExpression()) {
407
- // It is `require('@linaria/shaker').dep`
408
- const property = container.get('property');
409
- if (!property.isIdentifier() && !property.isStringLiteral()) {
410
- debug('Property should be Identifier or StringLiteral %s', property.node.type);
411
- return;
412
- }
413
- const { parentPath: variableDeclarator } = container;
414
- if (variableDeclarator.isVariableDeclarator()) {
415
- // It is `const … = require('@linaria/shaker').dep`;
416
- const id = variableDeclarator.get('id');
417
- if (id.isIdentifier()) {
418
- state.imports.push({
419
- imported: getValue(property),
420
- local: id,
421
- source,
422
- type: 'cjs',
423
- });
424
- }
425
- else {
426
- debug('Id should be Identifier %o', variableDeclarator.node.type);
427
- }
428
- }
429
- else {
430
- // Maybe require is passed as an argument to some function?
431
- // Just use the whole MemberExpression as a local
432
- state.imports.push({
433
- imported: getValue(property),
434
- local: container,
435
- source,
436
- type: 'cjs',
437
- });
438
- }
439
- return;
440
- }
441
- // Is it `const something = require("something")`?
442
- if (key === 'init' && container.isVariableDeclarator()) {
443
- importFromVariableDeclarator(container, true).forEach((prop) => {
444
- if (prop.what === '*') {
445
- const unfolded = unfoldNamespaceImport({
446
- imported: '*',
447
- local: prop.as,
448
- source,
449
- type: 'cjs',
450
- });
451
- state.imports.push(...unfolded);
452
- }
453
- else {
454
- state.imports.push({
455
- imported: prop.what,
456
- local: prop.as,
457
- source,
458
- type: 'cjs',
459
- });
460
- }
461
- });
462
- }
463
- if (container.isExpressionStatement()) {
464
- // Looks like standalone require
465
- state.imports.push({
466
- imported: 'side-effect',
467
- local: container,
468
- source,
469
- });
470
- }
471
- }
472
- function collectFromWywDynamicImport(path, state) {
473
- if (!path.isIdentifier({ name: '__wyw_dynamic_import' })) {
474
- return;
475
- }
476
- const { parentPath: callExpression } = path;
477
- if (!callExpression.isCallExpression()) {
478
- return;
479
- }
480
- const [sourcePath] = callExpression.get('arguments');
481
- if (!sourcePath || !sourcePath.isExpression()) {
482
- return;
483
- }
484
- const source = (0, getConstantStringValue_1.getConstantStringValue)(sourcePath.node);
485
- if (source === null) {
486
- return;
487
- }
488
- let { parentPath: container, key } = callExpression;
489
- let isAwaited = false;
490
- if (container.isAwaitExpression()) {
491
- // If it's not awaited import, it imports the full namespace
492
- isAwaited = true;
493
- key = container.key;
494
- container = container.parentPath;
495
- }
496
- // Is it `const something = await __wyw_dynamic_import("something")`?
497
- if (key === 'init' && container.isVariableDeclarator()) {
498
- importFromVariableDeclarator(container, isAwaited).forEach((prop) => {
499
- if (prop.what === '*') {
500
- const unfolded = unfoldNamespaceImport({
501
- imported: '*',
502
- local: prop.as,
503
- source,
504
- type: 'dynamic',
505
- });
506
- state.imports.push(...unfolded);
507
- return;
508
- }
509
- state.imports.push({
510
- imported: prop.what,
511
- local: prop.as,
512
- source,
513
- type: 'dynamic',
514
- });
515
- });
516
- return;
517
- }
518
- state.imports.push({
519
- imported: '*',
520
- local: path,
521
- source,
522
- type: 'dynamic',
523
- });
524
- }
525
- function collectFromVariableDeclarator(path, state) {
526
- let found = false;
527
- path.traverse({
528
- Identifier(identifierPath) {
529
- if ((0, isRequire_1.isRequire)(identifierPath)) {
530
- collectFromRequire(identifierPath, state);
531
- found = true;
532
- }
533
- },
534
- });
535
- if (found) {
536
- path.skip();
537
- }
538
- }
539
- function isChainOfVoidAssignment(path) {
540
- const right = path.get('right');
541
- if (right.isUnaryExpression({ operator: 'void' })) {
542
- return true;
543
- }
544
- if (right.isAssignmentExpression()) {
545
- return isChainOfVoidAssignment(right);
546
- }
547
- return false;
548
- }
549
- function getReturnValue(path) {
550
- if (path.node.params.length !== 0)
551
- return undefined;
552
- const body = path.get('body');
553
- if (body.isExpression()) {
554
- return body;
555
- }
556
- if (body.node.body.length === 1) {
557
- const returnStatement = body.get('body')?.[0];
558
- if (!returnStatement.isReturnStatement())
559
- return undefined;
560
- const argument = returnStatement.get('argument');
561
- if (!argument.isExpression())
562
- return undefined;
563
- return argument;
564
- }
565
- return undefined;
566
- }
567
- function getGetterValueFromDescriptor(descriptor) {
568
- const props = descriptor
569
- .get('properties')
570
- .filter((0, isTypedNode_1.isTypedNode)('ObjectProperty'));
571
- const getter = props.find((p) => p.get('key').isIdentifier({ name: 'get' }));
572
- const value = getter?.get('value');
573
- if (value?.isFunctionExpression() || value?.isArrowFunctionExpression()) {
574
- return getReturnValue(value);
575
- }
576
- const valueProp = props.find((p) => p.get('key').isIdentifier({ name: 'value' }));
577
- const valueValue = valueProp?.get('value');
578
- return valueValue?.isExpression() ? valueValue : undefined;
579
- }
580
- function addExport(path, exported, state) {
581
- function getRelatedImport() {
582
- if (path.isMemberExpression()) {
583
- const object = path.get('object');
584
- if (!object.isIdentifier()) {
585
- return undefined;
586
- }
587
- const objectBinding = object.scope.getBinding(object.node.name);
588
- if (!objectBinding) {
589
- return undefined;
590
- }
591
- if (objectBinding.path.isVariableDeclarator()) {
592
- collectFromVariableDeclarator(objectBinding.path, state);
593
- }
594
- const found = state.imports.find((i) => objectBinding.identifier === i.local.node ||
595
- objectBinding.referencePaths.some((p) => i.local.isAncestor(p)));
596
- if (!found) {
597
- return undefined;
598
- }
599
- const property = path.get('property');
600
- let what = '*';
601
- if (path.node.computed && property.isStringLiteral()) {
602
- what = property.node.value;
603
- }
604
- else if (!path.node.computed && property.isIdentifier()) {
605
- what = property.node.name;
606
- }
607
- return {
608
- import: { ...found, local: path },
609
- what,
610
- };
611
- }
612
- return undefined;
613
- }
614
- const relatedImport = getRelatedImport();
615
- if (relatedImport) {
616
- // eslint-disable-next-line no-param-reassign
617
- state.reexports.push({
618
- local: relatedImport.import.local,
619
- imported: relatedImport.import.imported,
620
- source: relatedImport.import.source,
621
- exported,
622
- });
623
- }
624
- else {
625
- // eslint-disable-next-line no-param-reassign
626
- state.exports[exported] = path;
627
- }
628
- }
629
- const saveRef = (state, exportName, memberExpression) => {
630
- // Save all export.____ usages for later
631
- if (!state.exportRefs.has(exportName)) {
632
- state.exportRefs.set(exportName, []);
633
- }
634
- state.exportRefs.get(exportName).push(memberExpression);
635
- };
636
- function collectFromExports(path, state) {
637
- if (!(0, isExports_1.isExports)(path))
638
- return;
639
- if (path.parentPath.isMemberExpression({ object: path.node })) {
640
- // It is `exports.prop = …`
641
- const memberExpression = path.parentPath;
642
- const property = memberExpression.get('property');
643
- if (!property.isIdentifier() || memberExpression.node.computed) {
644
- return;
645
- }
646
- const exportName = property.node.name;
647
- const assignmentExpression = memberExpression.parentPath;
648
- if (!assignmentExpression.isAssignmentExpression({
649
- left: memberExpression.node,
650
- })) {
651
- // If it's not `exports.prop = …`. Just save it.
652
- saveRef(state, exportName, memberExpression);
653
- return;
654
- }
655
- const right = assignmentExpression.get('right');
656
- if (isChainOfVoidAssignment(assignmentExpression)) {
657
- // It is `exports.foo = void 0`
658
- return;
659
- }
660
- if (exportName === '__esModule') {
661
- // eslint-disable-next-line no-param-reassign
662
- state.isEsModule = true;
663
- return;
664
- }
665
- saveRef(state, exportName, memberExpression);
666
- // eslint-disable-next-line no-param-reassign
667
- state.exports[property.node.name] = right;
668
- return;
669
- }
670
- if (path.parentPath.isCallExpression() &&
671
- path.parentPath.get('callee').matchesPattern('Object.defineProperty')) {
672
- const [obj, prop, descriptor] = path.parentPath.get('arguments');
673
- if (obj?.isIdentifier(path.node) &&
674
- prop?.isStringLiteral() &&
675
- descriptor?.isObjectExpression()) {
676
- if (prop.node.value === '__esModule') {
677
- // eslint-disable-next-line no-param-reassign
678
- state.isEsModule = true;
679
- }
680
- else {
681
- /**
682
- * Object.defineProperty(exports, "token", {
683
- * enumerable: true,
684
- * get: function get() {
685
- * return _unknownPackage.token;
686
- * }
687
- * });
688
- */
689
- const exported = prop.node.value;
690
- const local = getGetterValueFromDescriptor(descriptor);
691
- if (local) {
692
- addExport(local, exported, state);
693
- }
694
- }
695
- }
696
- else if (obj?.isIdentifier(path.node) &&
697
- prop?.isIdentifier() &&
698
- descriptor?.isObjectExpression()) {
699
- /**
700
- * Object.defineProperty(exports, key, {
701
- * enumerable: true,
702
- * get: function get() {
703
- * return _unknownPackage[key];
704
- * }
705
- * });
706
- */
707
- const local = getGetterValueFromDescriptor(descriptor);
708
- if (local) {
709
- addExport(local, '*', state);
710
- }
711
- }
712
- }
713
- }
714
- function collectFromRequireOrExports(path, state) {
715
- if ((0, isRequire_1.isRequire)(path)) {
716
- collectFromRequire(path, state);
717
- }
718
- else if (path.isIdentifier({ name: '__wyw_dynamic_import' })) {
719
- collectFromWywDynamicImport(path, state);
720
- }
721
- else if ((0, isExports_1.isExports)(path)) {
722
- collectFromExports(path, state);
723
- }
724
- }
725
- function unfoldNamespaceImport(importItem) {
726
- const result = [];
727
- const { local } = importItem;
728
- if (!local.isIdentifier()) {
729
- // TODO: handle it
730
- return [importItem];
731
- }
732
- const binding = (0, getScope_1.getScope)(local).getBinding(local.node.name);
733
- if (!binding?.referenced) {
734
- // Imported namespace is not referenced and probably not used,
735
- // but it can have side effects, so we should keep it as is
736
- return [
737
- {
738
- ...importItem,
739
- imported: 'side-effect',
740
- },
741
- ];
742
- }
743
- for (const referencePath of binding?.referencePaths ?? []) {
744
- if (referencePath.find((ancestor) => ancestor.isTSType() || ancestor.isFlowType())) {
745
- continue;
746
- }
747
- const { parentPath } = referencePath;
748
- if (parentPath?.isMemberExpression() && referencePath.key === 'object') {
749
- const property = parentPath.get('property');
750
- const object = parentPath.get('object');
751
- let imported;
752
- if (parentPath.node.computed && property.isStringLiteral()) {
753
- imported = property.node.value;
754
- }
755
- else if (!parentPath.node.computed && property.isIdentifier()) {
756
- imported = property.node.name;
757
- }
758
- else {
759
- imported = null;
760
- }
761
- if (object.isIdentifier() && imported) {
762
- result.push({
763
- ...importItem,
764
- imported,
765
- local: parentPath,
766
- });
767
- }
768
- else {
769
- result.push(importItem);
770
- break;
771
- }
772
- continue;
773
- }
774
- if (parentPath?.isVariableDeclarator() && referencePath.key === 'init') {
775
- importFromVariableDeclarator(parentPath, true).map((prop) => result.push({ ...importItem, imported: prop.what, local: prop.as }));
776
- continue;
777
- }
778
- if (parentPath?.isCallExpression() &&
779
- referencePath.listKey === 'arguments') {
780
- // The defined variable is used as a function argument. Let's try to figure out what is imported.
781
- const importType = getImportExportTypeByInteropFunction(parentPath, referencePath);
782
- if (!importType) {
783
- // Imported value is used as an unknown function argument,
784
- // so we can't predict usage and import it as is.
785
- result.push(importItem);
786
- break;
787
- }
788
- if (importType === 'default') {
789
- result.push({
790
- ...importItem,
791
- imported: 'default',
792
- local: parentPath.get('id'),
793
- });
794
- continue;
795
- }
796
- if (importType === 'import:*') {
797
- result.push(importItem);
798
- break;
799
- }
800
- debug('unfoldNamespaceImports: unknown import type %o', importType);
801
- result.push(importItem);
802
- continue;
803
- }
804
- if (parentPath?.isExportSpecifier() ||
805
- parentPath?.isExportDefaultDeclaration()) {
806
- // The whole namespace is re-exported
807
- result.push(importItem);
808
- break;
809
- }
810
- // Otherwise, we can't predict usage and import it as is
811
- // TODO: handle more cases
812
- debug('unfoldNamespaceImports: unknown reference %o', referencePath.node.type);
813
- result.push(importItem);
814
- break;
815
- }
816
- return result;
817
- }
818
- function collectFromExportAllDeclaration(path, state) {
819
- if (isType(path))
820
- return;
821
- const source = path.get('source')?.node?.value;
822
- if (!source)
823
- return;
824
- // It is `export * from './css';`
825
- state.reexports.push({
826
- exported: '*',
827
- imported: '*',
828
- local: path,
829
- source,
830
- });
831
- }
832
- function collectFromExportSpecifier(path, source, state) {
833
- if (path.isExportSpecifier()) {
834
- const exported = getValue(path.get('exported'));
835
- if (source) {
836
- // It is `export { foo } from './css';`
837
- const imported = path.get('local').node.name;
838
- state.reexports.push({
839
- exported,
840
- imported,
841
- local: path,
842
- source,
843
- });
844
- }
845
- else {
846
- const local = path.get('local');
847
- // eslint-disable-next-line no-param-reassign
848
- state.exports[exported] = local;
849
- }
850
- return;
851
- }
852
- if (path.isExportDefaultSpecifier() && source) {
853
- // It is `export default from './css';`
854
- state.reexports.push({
855
- exported: 'default',
856
- imported: 'default',
857
- local: path,
858
- source,
859
- });
860
- }
861
- if (path.isExportNamespaceSpecifier() && source) {
862
- const exported = path.get('exported').node.name;
863
- // It is `export * as foo from './css';`
864
- state.reexports.push({
865
- exported,
866
- imported: '*',
867
- local: path,
868
- source,
869
- });
870
- }
871
- // TODO: handle other cases
872
- debug('collectFromExportSpecifier: unprocessed ExportSpecifier %o', path.node.type);
873
- }
874
- function collectFromExportNamedDeclaration(path, state) {
875
- if (isType(path))
876
- return;
877
- const source = path.get('source')?.node?.value;
878
- const specifiers = path.get('specifiers');
879
- if (specifiers) {
880
- specifiers.forEach((specifier) => collectFromExportSpecifier(specifier, source, state));
881
- }
882
- const declaration = path.get('declaration');
883
- if (declaration.isVariableDeclaration()) {
884
- declaration.get('declarations').forEach((declarator) => {
885
- // eslint-disable-next-line no-param-reassign
886
- state.exports = {
887
- ...state.exports,
888
- ...exportFromVariableDeclarator(declarator),
889
- };
890
- });
891
- }
892
- if (declaration.isTSEnumDeclaration()) {
893
- // eslint-disable-next-line no-param-reassign
894
- state.exports[declaration.get('id').node.name] = declaration;
895
- }
896
- if (declaration.isFunctionDeclaration()) {
897
- const id = declaration.get('id');
898
- if (id.isIdentifier()) {
899
- // eslint-disable-next-line no-param-reassign
900
- state.exports[id.node.name] = id;
901
- }
902
- }
903
- if (declaration.isClassDeclaration()) {
904
- const id = declaration.get('id');
905
- if (id.isIdentifier()) {
906
- // eslint-disable-next-line no-param-reassign
907
- state.exports[id.node.name] = id;
908
- }
909
- }
910
- }
911
- function collectFromExportDefaultDeclaration(path, state) {
912
- if (isType(path))
913
- return;
914
- // eslint-disable-next-line no-param-reassign
915
- state.exports.default = path.get('declaration');
916
- }
917
- function collectFromAssignmentExpression(path, state) {
918
- if (isChainOfVoidAssignment(path)) {
919
- return;
920
- }
921
- const left = path.get('left');
922
- const right = path.get('right');
923
- let exported;
924
- const isExportRef = left.isMemberExpression() && (0, isExports_1.isExports)(left.get('object'));
925
- if (isExportRef) {
926
- const property = left.get('property');
927
- if (!left.node.computed && property.isIdentifier()) {
928
- exported = property.node.name;
929
- }
930
- else if (left.node.computed && property.isStringLiteral()) {
931
- exported = property.node.value;
932
- }
933
- }
934
- else if ((0, isExports_1.isExports)(left)) {
935
- // module.exports = ...
936
- if (!isAlreadyProcessed(right)) {
937
- exported = 'default';
938
- }
939
- }
940
- if (!exported)
941
- return;
942
- if (exported === '__esModule') {
943
- // eslint-disable-next-line no-param-reassign
944
- state.isEsModule = true;
945
- return;
946
- }
947
- if (!isRequireCall(right)) {
948
- const relatedImport = state.imports.find((imp) => imp.local === right);
949
- if (relatedImport) {
950
- state.reexports.push({
951
- exported,
952
- ...relatedImport,
953
- });
954
- }
955
- else {
956
- // eslint-disable-next-line no-param-reassign
957
- state.exports[exported] = right;
958
- }
959
- if (isExportRef) {
960
- saveRef(state, exported, left);
961
- }
962
- path.skip();
963
- return;
964
- }
965
- const sourcePath = right.get('arguments')?.[0];
966
- const source = sourcePath.isStringLiteral()
967
- ? sourcePath.node.value
968
- : undefined;
969
- if (!source)
970
- return;
971
- // It is `exports.foo = require('./css');`
972
- if (state.exports[exported]) {
973
- // eslint-disable-next-line no-param-reassign
974
- delete state.exports[exported];
975
- }
976
- state.reexports.push({
977
- exported,
978
- imported: '*',
979
- local: path,
980
- source,
981
- });
982
- path.skip();
983
- }
984
- function collectAllFromCall(path, require, state) {
985
- const requireCall = typeof require === 'number' ? path.get('arguments')[require] : require;
986
- if (!requireCall.isCallExpression())
987
- return;
988
- const callee = requireCall.get('callee');
989
- const sourcePath = requireCall.get('arguments')?.[0];
990
- if (!(0, isRequire_1.isRequire)(callee) || !sourcePath.isStringLiteral())
991
- return;
992
- const source = sourcePath.node.value;
993
- if (!source)
994
- return;
995
- state.reexports.push({
996
- exported: '*',
997
- imported: '*',
998
- local: path,
999
- source,
1000
- });
1001
- path.skip();
1002
- }
1003
- function collectFromMap(map, state) {
1004
- const properties = map.get('properties');
1005
- properties.forEach((property) => {
1006
- if (!property.isObjectProperty())
1007
- return;
1008
- const key = property.get('key');
1009
- const value = property.get('value');
1010
- if (!key.isIdentifier())
1011
- return;
1012
- const exported = key.node.name;
1013
- if (!value.isFunction())
1014
- return;
1015
- if (value.node.params.length !== 0)
1016
- return;
1017
- const returnValue = getReturnValue(value);
1018
- if (!returnValue)
1019
- return;
1020
- addExport(returnValue, exported, state);
1021
- });
1022
- }
1023
- function collectMapFromCall(path, mapPosition, state) {
1024
- const map = path.get('arguments')[mapPosition];
1025
- if (!map.isObjectExpression())
1026
- return;
1027
- collectFromMap(map, state);
1028
- path.skip();
1029
- }
1030
- function collectFromEsbuildReExportCall(path, state) {
1031
- const [sourceExports, someCall, exports] = path.get('arguments');
1032
- if (!sourceExports.isIdentifier({ name: 'source_exports' }) &&
1033
- !(0, isExports_1.isExports)(sourceExports))
1034
- return;
1035
- if (!someCall.isCallExpression())
1036
- return;
1037
- let requireCall = someCall;
1038
- while (!(0, isRequire_1.isRequire)(requireCall.get('callee'))) {
1039
- const args = requireCall.get('arguments');
1040
- if (args.length !== 1) {
1041
- return;
1042
- }
1043
- const firstArg = args[0];
1044
- if (!firstArg.isCallExpression()) {
1045
- return;
1046
- }
1047
- requireCall = firstArg;
1048
- }
1049
- if (exports !== undefined && !(0, isExports_1.isExports)(exports))
1050
- return;
1051
- const sourcePath = requireCall.get('arguments')?.[0];
1052
- if (!sourcePath.isStringLiteral())
1053
- return;
1054
- state.reexports.push({
1055
- exported: '*',
1056
- imported: '*',
1057
- local: path,
1058
- source: sourcePath.node.value,
1059
- });
1060
- path.skip();
1061
- }
1062
- function collectFromCallExpression(path, state) {
1063
- const maybeExportStart = path.get('callee');
1064
- if (!maybeExportStart.isIdentifier()) {
1065
- return;
1066
- }
1067
- if (matchCall(path, [
1068
- ['__exportStar', isExports_1.isExports, isCallExpression('__toModule')],
1069
- ])) {
1070
- // __exportStar(exports, __toModule(require('…')));
1071
- const secondArg = path.get('arguments')[1];
1072
- collectAllFromCall(path, secondArg.get('arguments')[0], state);
1073
- return;
1074
- }
1075
- // TypeScript & swc
1076
- if (matchCall(path, [
1077
- ['__exportStart', isRequireCall, isExports_1.isExports],
1078
- ['_exportStar', isRequireCall, isExports_1.isExports],
1079
- ['_export_star', isRequireCall, isExports_1.isExports],
1080
- ['__export', isRequireCall], // TypeScript <=3.8.3
1081
- ])) {
1082
- collectAllFromCall(path, 0, state);
1083
- return;
1084
- }
1085
- if (matchCall(path, [['_export', isExports_1.isExports, isObjectExpression]])) {
1086
- collectMapFromCall(path, 1, state);
1087
- return;
1088
- }
1089
- if (matchCall(path, [
1090
- ['_extends', isEmptyObject, isRequireCall], // swc <=1.3.16
1091
- ])) {
1092
- collectAllFromCall(path, 1, state);
1093
- return;
1094
- }
1095
- // esbuild
1096
- if (matchCall(path, [
1097
- ['__export', isExports_1.isExports, isObjectExpression],
1098
- ['__export', isIdentifier('source_exports'), isObjectExpression],
1099
- ])) {
1100
- collectMapFromCall(path, 1, state);
1101
- return;
1102
- }
1103
- if (matchCall(path, [
1104
- // Different variants of re-exports in esbuild
1105
- [
1106
- '__reExport',
1107
- isIdentifier('source_exports'),
1108
- isCallExpression,
1109
- isExports_1.isExports,
1110
- ],
1111
- ['__reExport', isIdentifier('source_exports'), isCallExpression],
1112
- ['__reExport', isExports_1.isExports, isCallExpression],
1113
- ])) {
1114
- collectFromEsbuildReExportCall(path, state);
1115
- }
1116
- }
1117
- function collectExportsAndImports(path, cacheMode = 'enabled') {
1118
- const localState = {
1119
- deadExports: [],
1120
- exportRefs: new Map(),
1121
- exports: {},
1122
- imports: [],
1123
- reexports: [],
1124
- isEsModule: path.node.sourceType === 'module',
1125
- processedRequires: new WeakSet(),
1126
- };
1127
- const cache = cacheMode !== 'disabled'
1128
- ? (0, traversalCache_1.getTraversalCache)(path, 'collectExportsAndImports')
1129
- : undefined;
1130
- if (cacheMode === 'enabled' && cache?.has(path)) {
1131
- return cache.get(path) ?? localState;
1132
- }
1133
- path.traverse({
1134
- AssignmentExpression: collectFromAssignmentExpression,
1135
- CallExpression: collectFromCallExpression,
1136
- ExportAllDeclaration: collectFromExportAllDeclaration,
1137
- ExportDefaultDeclaration: collectFromExportDefaultDeclaration,
1138
- ExportNamedDeclaration: collectFromExportNamedDeclaration,
1139
- ImportDeclaration: collectFromImportDeclaration,
1140
- Import: collectFromDynamicImport,
1141
- Identifier: collectFromRequireOrExports,
1142
- VariableDeclarator: collectFromVariableDeclarator,
1143
- }, localState);
1144
- const { processedRequires, ...state } = localState;
1145
- cache?.set(path, state);
1146
- return state;
1147
- }