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