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