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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -28
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +7 -8
  178. package/types/index.js +24 -77
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +6 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +4 -24
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -0,0 +1 @@
1
+ {"mappings":"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","names":[],"sources":["../../src/utils/oxcPreevalTransforms.ts"],"version":3,"sourcesContent":["/* eslint-disable no-restricted-syntax,no-continue */\n\nimport type {\n CallExpression,\n Expression,\n ImportExpression,\n Node,\n Program,\n} from 'oxc-parser';\n\nimport type { CodeRemoverOptions } from '@wyw-in-js/shared';\n\nimport { collectOxcExportsAndImports } from './collectOxcExportsAndImports';\nimport { EventEmitter } from './EventEmitter';\nimport { parseOxcProgramCached } from './parseOxc';\n\ntype AnyNode = Node & Record<string, unknown>;\n\ntype Replacement = {\n end: number;\n start: number;\n value: string;\n};\n\ntype Scope = {\n bindings: Map<string, Expression | null>;\n key: string;\n names: Set<string>;\n parent: Scope | null;\n};\n\ntype ImportBinding = {\n imported: string | 'default' | '*';\n local: string;\n source: string;\n};\n\ntype OxcFunctionLikeNode = Node & {\n async: boolean;\n body: Node;\n id?: { name: string } | null;\n type:\n | 'ArrowFunctionExpression'\n | 'FunctionDeclaration'\n | 'FunctionExpression';\n};\n\nconst ssrCheckFields = new Set([\n 'document',\n 'location',\n 'navigator',\n 'sessionStorage',\n 'localStorage',\n 'window',\n]);\n\nconst forbiddenGlobals = new Set([\n ...ssrCheckFields,\n '$RefreshReg$',\n '$RefreshSig$',\n 'XMLHttpRequest',\n 'clearImmediate',\n 'clearInterval',\n 'clearTimeout',\n 'fetch',\n 'navigator',\n 'setImmediate',\n 'setInterval',\n 'setTimeout',\n]);\n\nconst alwaysForbiddenIdentifiers = new Set(['$RefreshReg$', '$RefreshSig$']);\nconst promiseCallbackMethods = new Set(['then', 'catch', 'finally']);\nconst jsxRuntimeSources = new Set([\n 'react/jsx-runtime',\n 'react/jsx-dev-runtime',\n]);\nconst defaultPlaceholder = '...';\nconst defaultReactComponentTypes = [\n 'ExoticComponent',\n 'FC',\n 'ForwardRefExoticComponent',\n 'FunctionComponent',\n 'LazyExoticComponent',\n 'MemoExoticComponent',\n 'NamedExoticComponent',\n];\nconst generatedProcessorHelperNameRe = /^_exp\\d*$/;\nconst requireCallRe = /\\brequire\\s*\\(/;\nconst windowTokenRe = /\\bwindow\\b/;\nconst removableOwnerTypes = new Set([\n 'DoWhileStatement',\n 'ExpressionStatement',\n 'ForInStatement',\n 'ForOfStatement',\n 'ForStatement',\n 'FunctionDeclaration',\n 'IfStatement',\n 'PropertyDefinition',\n 'ReturnStatement',\n 'VariableDeclaration',\n 'WhileStatement',\n]);\nconst importMetaEnvRe = /\\bimport\\s*\\.\\s*meta\\s*\\.\\s*env\\b/;\n\nconst createScope = (parent: Scope | null, key: string): Scope => ({\n bindings: new Map(),\n key,\n names: new Set(),\n parent,\n});\n\nconst createsScope = (node: Node): boolean =>\n node.type === 'Program' ||\n node.type === 'BlockStatement' ||\n node.type === 'FunctionDeclaration' ||\n node.type === 'FunctionExpression' ||\n node.type === 'ArrowFunctionExpression';\n\nconst hasBinding = (scope: Scope, name: string): boolean => {\n let current: Scope | null = scope;\n while (current) {\n if (current.names.has(name)) {\n return true;\n }\n\n current = current.parent;\n }\n\n return false;\n};\n\nconst getBindingKey = (scope: Scope, name: string): string | null => {\n let current: Scope | null = scope;\n while (current) {\n if (current.names.has(name)) {\n return `${current.key}\\0${name}`;\n }\n\n current = current.parent;\n }\n\n return null;\n};\n\nconst getStaticBinding = (\n scope: Scope,\n name: string\n): Expression | null | undefined => {\n let current: Scope | null = scope;\n while (current) {\n if (current.bindings.has(name)) {\n return current.bindings.get(name);\n }\n\n current = current.parent;\n }\n\n return undefined;\n};\n\nconst isFileLikeRequireSpecifier = (value: string): boolean =>\n value.startsWith('.') || value.startsWith('/') || value.startsWith('file:');\n\nconst isNode = (value: unknown): value is Node =>\n !!value &&\n typeof value === 'object' &&\n 'type' in value &&\n typeof (value as { type?: unknown }).type === 'string';\n\nconst getChildren = (node: Node): Node[] => {\n const result: Node[] = [];\n const record = node as AnyNode;\n\n Object.keys(record).forEach((key) => {\n if (key === 'type' || key === 'start' || key === 'end' || key === 'range') {\n return;\n }\n\n const value = record[key];\n if (isNode(value)) {\n result.push(value);\n return;\n }\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n if (isNode(item)) {\n result.push(item);\n }\n });\n }\n });\n\n return result;\n};\n\nconst parseOxc = (code: string, filename: string): Program => {\n return parseOxcProgramCached(filename, code, 'unambiguous');\n};\n\nconst unwrapExpression = (node: Expression): Expression => {\n if (\n node.type === 'TSAsExpression' ||\n node.type === 'TSSatisfiesExpression' ||\n node.type === 'TSNonNullExpression' ||\n node.type === 'TSTypeAssertion' ||\n node.type === 'ParenthesizedExpression'\n ) {\n return unwrapExpression(node.expression);\n }\n\n return node;\n};\n\nconst getMemberPropertyName = (node: Node): string | null => {\n if (node.type !== 'MemberExpression') {\n return null;\n }\n\n if (node.computed) {\n return node.property.type === 'Literal' &&\n typeof node.property.value === 'string'\n ? node.property.value\n : null;\n }\n\n return node.property.type === 'Identifier' ? node.property.name : null;\n};\n\nconst isStringLikeExpression = (node: Expression): boolean => {\n const expression = unwrapExpression(node);\n\n if (expression.type === 'Literal' && typeof expression.value === 'string') {\n return true;\n }\n\n if (expression.type === 'TemplateLiteral') {\n return true;\n }\n\n if (expression.type === 'BinaryExpression' && expression.operator === '+') {\n return (\n isStringLikeExpression(expression.left) ||\n isStringLikeExpression(expression.right)\n );\n }\n\n if (\n expression.type === 'CallExpression' &&\n expression.callee.type === 'MemberExpression' &&\n getMemberPropertyName(expression.callee) === 'concat'\n ) {\n return isStringLikeExpression(expression.callee.object);\n }\n\n return false;\n};\n\nconst templateLiteralToConcat = (code: string, node: Expression): string => {\n if (node.type !== 'TemplateLiteral' || node.expressions.length === 0) {\n return code.slice(node.start, node.end);\n }\n\n const parts: string[] = [];\n node.quasis.forEach((quasi, index) => {\n const cooked = quasi.value.cooked ?? quasi.value.raw;\n if (cooked !== '') {\n parts.push(JSON.stringify(cooked));\n }\n\n const expression = node.expressions[index];\n if (expression) {\n parts.push(code.slice(expression.start, expression.end));\n }\n });\n\n return parts.length > 0 ? parts.join(' + ') : '\"\"';\n};\n\nconst dynamicImportArgumentCode = (code: string, node: Expression): string => {\n if (node.type === 'TemplateLiteral') {\n return templateLiteralToConcat(code, node);\n }\n\n return code.slice(node.start, node.end);\n};\n\nconst evaluateStaticValue = (\n node: Expression,\n scope: Scope,\n seen = new Set<string>()\n): unknown | undefined => {\n const expression = unwrapExpression(node);\n\n if (expression.type === 'Literal') {\n return expression.value;\n }\n\n if (expression.type === 'TemplateLiteral') {\n let result = '';\n\n for (let idx = 0; idx < expression.quasis.length; idx += 1) {\n result += expression.quasis[idx]?.value.cooked ?? '';\n\n const nextExpression = expression.expressions[idx];\n if (!nextExpression) {\n continue;\n }\n\n const value = evaluateStaticValue(nextExpression, scope, seen);\n if (\n value === undefined ||\n (typeof value !== 'string' && typeof value !== 'number')\n ) {\n return undefined;\n }\n\n result += String(value);\n }\n\n return result;\n }\n\n if (expression.type === 'Identifier') {\n if (seen.has(expression.name)) {\n return undefined;\n }\n\n const binding = getStaticBinding(scope, expression.name);\n if (!binding) {\n return undefined;\n }\n\n return evaluateStaticValue(\n binding,\n scope,\n new Set([...seen, expression.name])\n );\n }\n\n if (expression.type === 'BinaryExpression' && expression.operator === '+') {\n const left = evaluateStaticValue(expression.left, scope, seen);\n const right = evaluateStaticValue(expression.right, scope, seen);\n\n if (left === undefined || right === undefined) {\n return undefined;\n }\n\n if (typeof left === 'number' && typeof right === 'number') {\n return left + right;\n }\n\n if (\n (typeof left === 'string' || typeof left === 'number') &&\n (typeof right === 'string' || typeof right === 'number')\n ) {\n return `${left}${right}`;\n }\n }\n\n if (\n expression.type === 'CallExpression' &&\n expression.callee.type === 'MemberExpression'\n ) {\n const objectValue = evaluateStaticValue(\n expression.callee.object,\n scope,\n seen\n );\n const propertyName = getMemberPropertyName(expression.callee);\n if (!propertyName) {\n return undefined;\n }\n\n if (typeof objectValue === 'string') {\n if (propertyName === 'toLowerCase' && expression.arguments.length === 0) {\n return objectValue.toLowerCase();\n }\n\n if (propertyName === 'toUpperCase' && expression.arguments.length === 0) {\n return objectValue.toUpperCase();\n }\n\n if (propertyName === 'trim' && expression.arguments.length === 0) {\n return objectValue.trim();\n }\n\n if (propertyName === 'concat') {\n const args = expression.arguments.map((argument) =>\n argument.type === 'SpreadElement'\n ? undefined\n : evaluateStaticValue(argument, scope, seen)\n );\n if (\n args.some((value) => value === undefined) ||\n args.some(\n (value) => typeof value !== 'string' && typeof value !== 'number'\n )\n ) {\n return undefined;\n }\n\n return objectValue.concat(...args.map((value) => String(value)));\n }\n }\n }\n\n return undefined;\n};\n\nconst isLiteralRequireArg = (node: Expression): boolean => {\n const expression = unwrapExpression(node);\n\n if (expression.type === 'Literal' && typeof expression.value === 'string') {\n return true;\n }\n\n if (\n expression.type === 'TemplateLiteral' &&\n expression.expressions.length === 0\n ) {\n return true;\n }\n\n return false;\n};\n\nconst applyReplacements = (\n code: string,\n replacements: Replacement[]\n): string => {\n let result = code;\n replacements\n .sort((a, b) => b.start - a.start)\n .forEach((replacement) => {\n result =\n result.slice(0, replacement.start) +\n replacement.value +\n result.slice(replacement.end);\n });\n\n return result;\n};\n\nconst isIdentifierNamed = (value: unknown, name: string): boolean =>\n isNode(value) && value.type === 'Identifier' && value.name === name;\n\nconst isImportMeta = (node: unknown): boolean => {\n if (!isNode(node) || node.type !== 'MetaProperty') {\n return false;\n }\n\n const metaProperty = node as AnyNode;\n return (\n isIdentifierNamed(metaProperty.meta, 'import') &&\n isIdentifierNamed(metaProperty.property, 'meta')\n );\n};\n\nconst isImportMetaEnv = (node: Node): boolean => {\n if (node.type !== 'MemberExpression') {\n return false;\n }\n\n if (node.computed || !isIdentifierNamed(node.property, 'env')) {\n return false;\n }\n\n return isImportMeta(node.object);\n};\n\nconst collectBindingNames = (node: Node): string[] => {\n if (node.type === 'Identifier') {\n return [node.name];\n }\n\n if (node.type === 'RestElement') {\n return collectBindingNames(node.argument);\n }\n\n if (node.type === 'AssignmentPattern') {\n return collectBindingNames(node.left);\n }\n\n if (node.type === 'ObjectPattern') {\n return node.properties.flatMap((property) =>\n property.type === 'RestElement'\n ? collectBindingNames(property.argument)\n : collectBindingNames(property.value)\n );\n }\n\n if (node.type === 'ArrayPattern') {\n return node.elements.flatMap((element) =>\n element ? collectBindingNames(element) : []\n );\n }\n\n if (node.type === 'TSParameterProperty') {\n return collectBindingNames(node.parameter);\n }\n\n return [];\n};\n\nconst predeclareScopeNames = (node: Node, scope: Scope): void => {\n if (\n node.type === 'FunctionDeclaration' ||\n node.type === 'FunctionExpression' ||\n node.type === 'ArrowFunctionExpression'\n ) {\n if (node.type !== 'ArrowFunctionExpression' && node.id) {\n scope.names.add(node.id.name);\n }\n\n node.params.forEach((param) => {\n collectBindingNames(param).forEach((name) => {\n scope.names.add(name);\n });\n });\n }\n\n const visitScopeDescendants = (child: Node): void => {\n if (child.type === 'VariableDeclarator') {\n collectBindingNames(child.id).forEach((name) => {\n scope.names.add(name);\n });\n } else if (child.type === 'FunctionDeclaration' && child.id) {\n scope.names.add(child.id.name);\n } else if (child.type === 'ClassDeclaration' && child.id) {\n scope.names.add(child.id.name);\n } else if (\n child.type === 'ImportDefaultSpecifier' ||\n child.type === 'ImportNamespaceSpecifier' ||\n child.type === 'ImportSpecifier'\n ) {\n scope.names.add(child.local.name);\n }\n\n if (createsScope(child)) {\n return;\n }\n\n getChildren(child).forEach(visitScopeDescendants);\n };\n\n getChildren(node).forEach(visitScopeDescendants);\n};\n\nconst declareBindings = (node: Node, scope: Scope): void => {\n if (node.type === 'VariableDeclarator') {\n const names = collectBindingNames(node.id);\n names.forEach((name) => {\n scope.names.add(name);\n scope.bindings.set(name, null);\n });\n\n if (node.id.type === 'Identifier' && node.init) {\n scope.bindings.set(node.id.name, node.init);\n }\n return;\n }\n\n if (node.type === 'FunctionDeclaration' && node.id) {\n scope.names.add(node.id.name);\n scope.bindings.set(node.id.name, null);\n }\n\n if (node.type === 'ClassDeclaration' && node.id) {\n scope.names.add(node.id.name);\n scope.bindings.set(node.id.name, null);\n return;\n }\n\n if (\n node.type === 'ImportDefaultSpecifier' ||\n node.type === 'ImportNamespaceSpecifier' ||\n node.type === 'ImportSpecifier'\n ) {\n scope.names.add(node.local.name);\n scope.bindings.set(node.local.name, null);\n return;\n }\n\n if (\n node.type === 'FunctionDeclaration' ||\n node.type === 'FunctionExpression' ||\n node.type === 'ArrowFunctionExpression'\n ) {\n node.params.forEach((param) => {\n collectBindingNames(param).forEach((name) => {\n scope.names.add(name);\n scope.bindings.set(name, null);\n });\n });\n }\n};\n\nconst visit = (\n node: Node,\n scope: Scope,\n enter: (\n node: Node,\n scope: Scope,\n parent: Node | null,\n ancestors: Node[]\n ) => void,\n parent: Node | null = null,\n ancestors: Node[] = []\n): void => {\n let currentScope = scope;\n if (createsScope(node)) {\n currentScope = createScope(scope, `${node.type}:${node.start}:${node.end}`);\n predeclareScopeNames(node, currentScope);\n }\n\n declareBindings(node, currentScope);\n enter(node, currentScope, parent, ancestors);\n\n getChildren(node).forEach((child) =>\n visit(child, currentScope, enter, node, [...ancestors, node])\n );\n};\n\nexport const replaceImportMetaEnvWithOxc = (\n code: string,\n filename: string\n): string => {\n if (!importMetaEnvRe.test(code)) {\n return code;\n }\n\n const replacements: Replacement[] = [];\n\n visit(parseOxc(code, filename), createScope(null, 'root'), (node) => {\n if (!isImportMetaEnv(node)) {\n return;\n }\n\n replacements.push({\n end: node.end,\n start: node.start,\n value: '__wyw_import_meta_env',\n });\n });\n\n return applyReplacements(code, replacements);\n};\n\ntype CombinedSyntaxRewriteOptions = {\n addRequireFallback: boolean;\n eventEmitter?: EventEmitter;\n rewriteDynamicImports: boolean;\n};\n\ntype RequireFallbackCandidate = {\n call: CallExpression;\n scope: Scope;\n};\n\nfunction collectDynamicImportAndRequireFallbackReplacements(\n code: string,\n filename: string,\n options: CombinedSyntaxRewriteOptions\n): Replacement[] {\n const eventEmitter = options.eventEmitter ?? EventEmitter.dummy;\n const dynamicImportCandidates: ImportExpression[] = [];\n const requireFallbackCandidates: RequireFallbackCandidate[] = [];\n\n eventEmitter.perf(\n 'transform:preeval:dynamicImportRequireFallback:scan',\n () => {\n visit(\n parseOxc(code, filename),\n createScope(null, 'root'),\n (node, scope) => {\n if (\n options.rewriteDynamicImports &&\n node.type === 'ImportExpression'\n ) {\n dynamicImportCandidates.push(node as ImportExpression);\n }\n\n if (!options.addRequireFallback || node.type !== 'CallExpression') {\n return;\n }\n\n const call = node as CallExpression;\n if (\n call.callee.type !== 'Identifier' ||\n call.callee.name !== 'require' ||\n hasBinding(scope, 'require') ||\n call.arguments.length !== 1\n ) {\n return;\n }\n\n const [firstArg] = call.arguments;\n if (\n !firstArg ||\n firstArg.type === 'SpreadElement' ||\n isLiteralRequireArg(firstArg)\n ) {\n return;\n }\n\n requireFallbackCandidates.push({\n call,\n scope,\n });\n }\n );\n }\n );\n\n const replacements: Replacement[] = [];\n\n eventEmitter.perf('transform:preeval:dynamicImport', () => {\n dynamicImportCandidates.forEach((importExpression) => {\n const argument = importExpression.source;\n const nextArgument = isStringLikeExpression(argument)\n ? unwrapExpression(argument)\n : argument;\n\n replacements.push({\n end: importExpression.end,\n start: importExpression.start,\n value: `__wyw_dynamic_import(${dynamicImportArgumentCode(\n code,\n nextArgument\n )})`,\n });\n });\n });\n\n eventEmitter.perf('transform:preeval:requireFallback', () => {\n requireFallbackCandidates.forEach(({ call, scope }) => {\n const [firstArg] = call.arguments;\n if (!firstArg || firstArg.type === 'SpreadElement') {\n return;\n }\n\n const staticValue = evaluateStaticValue(firstArg, scope);\n if (\n typeof staticValue === 'string' &&\n isFileLikeRequireSpecifier(staticValue)\n ) {\n replacements.push({\n end: firstArg.end,\n start: firstArg.start,\n value: JSON.stringify(staticValue),\n });\n return;\n }\n\n replacements.push({\n end: firstArg.end,\n start: firstArg.end,\n value: ', true',\n });\n });\n });\n\n return replacements;\n}\n\nexport const rewriteDynamicImportsWithOxc = (\n code: string,\n filename: string\n): string => {\n const replacements = collectDynamicImportAndRequireFallbackReplacements(\n code,\n filename,\n {\n addRequireFallback: false,\n rewriteDynamicImports: true,\n }\n );\n\n return applyReplacements(code, replacements);\n};\n\nexport const addRequireFallbackWithOxc = (\n code: string,\n filename: string\n): string => {\n const replacements = collectDynamicImportAndRequireFallbackReplacements(\n code,\n filename,\n {\n addRequireFallback: true,\n rewriteDynamicImports: false,\n }\n );\n\n return applyReplacements(code, replacements);\n};\n\nexport const rewriteDynamicImportsAndAddRequireFallbackWithOxc = (\n code: string,\n filename: string,\n options: CombinedSyntaxRewriteOptions\n): string => {\n const replacements = collectDynamicImportAndRequireFallbackReplacements(\n code,\n filename,\n options\n );\n\n return applyReplacements(code, replacements);\n};\n\nconst isBindingPosition = (node: Node, parent: Node | null): boolean => {\n if (!parent) {\n return false;\n }\n\n if (parent.type === 'VariableDeclarator' && parent.id === node) {\n return true;\n }\n\n if (\n (parent.type === 'FunctionDeclaration' ||\n parent.type === 'FunctionExpression' ||\n parent.type === 'ClassDeclaration' ||\n parent.type === 'ClassExpression') &&\n parent.id === node\n ) {\n return true;\n }\n\n if (\n parent.type === 'ImportSpecifier' &&\n (parent.local === node || parent.imported === node)\n ) {\n return true;\n }\n\n if (\n (parent.type === 'ImportDefaultSpecifier' ||\n parent.type === 'ImportNamespaceSpecifier') &&\n parent.local === node\n ) {\n return true;\n }\n\n if (\n parent.type === 'ExportSpecifier' &&\n (parent.local === node || parent.exported === node)\n ) {\n return true;\n }\n\n return false;\n};\n\nconst isPropertyOnlyIdentifier = (node: Node, parent: Node | null): boolean => {\n if (!parent) {\n return false;\n }\n\n if (\n parent.type === 'MemberExpression' &&\n !parent.computed &&\n parent.property === node\n ) {\n return true;\n }\n\n if (\n (parent.type === 'Property' ||\n parent.type === 'MethodDefinition' ||\n parent.type === 'PropertyDefinition') &&\n !parent.computed &&\n parent.key === node\n ) {\n return true;\n }\n\n return false;\n};\n\nconst isTypeContext = (ancestors: Node[]): boolean =>\n ancestors.some(\n (ancestor) =>\n ancestor.type.startsWith('TS') || ancestor.type.startsWith('JSDoc')\n );\n\nconst isInsideTypeof = (ancestors: Node[]): boolean =>\n ancestors.some(\n (ancestor) =>\n ancestor.type === 'UnaryExpression' && ancestor.operator === 'typeof'\n );\n\nconst isInsideImportDeclaration = (ancestors: Node[]): boolean =>\n ancestors.some((ancestor) => ancestor.type === 'ImportDeclaration');\n\nfunction findLastAncestor<T extends Node>(\n ancestors: Node[],\n predicate: (ancestor: Node) => ancestor is T\n): T | null;\nfunction findLastAncestor(\n ancestors: Node[],\n predicate: (ancestor: Node) => boolean\n): Node | null;\nfunction findLastAncestor(\n ancestors: Node[],\n predicate: (ancestor: Node) => boolean\n): Node | null {\n for (let idx = ancestors.length - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n if (predicate(ancestor)) {\n return ancestor;\n }\n }\n\n return null;\n}\n\nconst findRemovableOwner = (node: Node, ancestors: Node[]): Node => {\n let owner: Node = node;\n let ownerAncestorIndex = -1;\n\n if (!removableOwnerTypes.has(node.type)) {\n for (let idx = ancestors.length - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n if (removableOwnerTypes.has(ancestor.type)) {\n owner = ancestor;\n ownerAncestorIndex = idx;\n break;\n }\n }\n }\n\n const parent =\n ownerAncestorIndex > 0 ? ancestors[ownerAncestorIndex - 1] : null;\n if (\n parent?.type === 'ExportNamedDeclaration' &&\n 'declaration' in parent &&\n parent.declaration === owner\n ) {\n return parent;\n }\n\n return owner;\n};\n\ntype ExportedBindingProtection = {\n start: number;\n end: number;\n value: string;\n};\n\nconst collectReExportedLocalNames = (program: Program): Set<string> => {\n const names = new Set<string>();\n for (const stmt of program.body) {\n if (\n stmt.type !== 'ExportNamedDeclaration' ||\n stmt.declaration ||\n stmt.source\n ) {\n continue;\n }\n for (const spec of stmt.specifiers) {\n if (spec.type === 'ExportSpecifier' && spec.local.type === 'Identifier') {\n names.add(spec.local.name);\n }\n }\n }\n return names;\n};\n\n// When an offending identifier sits inside the value of a top-level export,\n// removing the surrounding declaration would strip the export binding too.\n// ESM linker then fails on consumers' `import { name } from '...'` because the\n// named export no longer exists. To keep the binding alive, replace just the\n// value (declarator init or default-export expression) with `undefined`.\nconst findExportedBindingProtection = (\n node: Node,\n ancestors: Node[],\n reExportedLocalNames: Set<string>\n): ExportedBindingProtection | null => {\n for (let idx = ancestors.length - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n\n if (ancestor.type === 'ExportDefaultDeclaration') {\n const decl = ancestor.declaration;\n if (decl && decl !== node && 'start' in decl && 'end' in decl) {\n return { start: decl.start, end: decl.end, value: 'undefined' };\n }\n return null;\n }\n\n if (ancestor.type !== 'VariableDeclarator') {\n continue;\n }\n\n if (\n ancestor.id.type !== 'Identifier' ||\n !ancestor.init ||\n ancestor.init === node\n ) {\n return null;\n }\n\n const varDecl = ancestors[idx - 1];\n const wrapper = ancestors[idx - 2] ?? null;\n\n if (varDecl?.type !== 'VariableDeclaration') {\n return null;\n }\n\n const isDirectExport =\n wrapper?.type === 'ExportNamedDeclaration' &&\n wrapper.declaration === varDecl;\n const isTopLevelDeclaration =\n wrapper === null || wrapper?.type === 'Program';\n const isReExported =\n isTopLevelDeclaration && reExportedLocalNames.has(ancestor.id.name);\n\n if (!isDirectExport && !isReExported) {\n return null;\n }\n\n return {\n start: ancestor.init.start,\n end: ancestor.init.end,\n value: 'undefined',\n };\n }\n\n return null;\n};\n\nconst findPromiseCallbackOwner = (ancestors: Node[]): Node | null => {\n for (let idx = ancestors.length - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n if (\n ancestor.type === 'NewExpression' &&\n ancestor.callee.type === 'Identifier' &&\n ancestor.callee.name === 'Promise'\n ) {\n return ancestor;\n }\n\n if (\n ancestor.type === 'CallExpression' &&\n ancestor.callee.type === 'MemberExpression' &&\n promiseCallbackMethods.has(getMemberPropertyName(ancestor.callee) ?? '')\n ) {\n return ancestor;\n }\n }\n\n return null;\n};\n\nconst containsForbiddenIdentifier = (node: Node): boolean => {\n if (node.type === 'Identifier' && alwaysForbiddenIdentifiers.has(node.name)) {\n return true;\n }\n\n return getChildren(node).some(containsForbiddenIdentifier);\n};\n\nconst collectWindowScopedNames = (program: Program): Set<string> => {\n const windowScopedNames = new Set<string>();\n\n visit(program, createScope(null, 'root'), (node, scope) => {\n if (\n node.type !== 'MemberExpression' ||\n node.object.type !== 'Identifier' ||\n node.object.name !== 'window' ||\n hasBinding(scope, 'window')\n ) {\n return;\n }\n\n const propertyName = getMemberPropertyName(node);\n if (propertyName) {\n windowScopedNames.add(propertyName);\n }\n });\n\n return windowScopedNames;\n};\n\nconst containsForbiddenReference = (\n node: Node,\n scope: Scope,\n windowScopedNames: Set<string>,\n derivedForbiddenBindings: Set<string> = new Set()\n): boolean => {\n let found = false;\n\n visit(node, scope, (child, childScope, parent, ancestors) => {\n if (\n found ||\n child.type !== 'Identifier' ||\n isTypeContext(ancestors) ||\n isInsideTypeof(ancestors) ||\n isPropertyOnlyIdentifier(child, parent) ||\n isBindingPosition(child, parent)\n ) {\n return;\n }\n\n const bindingKey = getBindingKey(childScope, child.name);\n if (\n alwaysForbiddenIdentifiers.has(child.name) ||\n (forbiddenGlobals.has(child.name) &&\n !hasBinding(childScope, child.name)) ||\n (windowScopedNames.has(child.name) &&\n !hasBinding(childScope, child.name)) ||\n (bindingKey !== null && derivedForbiddenBindings.has(bindingKey))\n ) {\n found = true;\n }\n });\n\n return found;\n};\n\nconst nameFromModuleExport = (node: Node): string | null => {\n if (node.type === 'Identifier') {\n return node.name;\n }\n\n if (node.type === 'Literal' && typeof node.value === 'string') {\n return node.value;\n }\n\n return null;\n};\n\nconst collectImportBindings = (\n code: string,\n filename: string,\n program: Program\n): ImportBinding[] => {\n const bindings = new Map<string, ImportBinding>();\n const addBinding = (binding: ImportBinding): void => {\n bindings.set(\n `${binding.local}\\0${binding.source}\\0${binding.imported}`,\n binding\n );\n };\n\n program.body.forEach((statement) => {\n if (statement.type !== 'ImportDeclaration') {\n return;\n }\n\n const source = statement.source.value;\n statement.specifiers.forEach((specifier) => {\n if (specifier.type === 'ImportDefaultSpecifier') {\n addBinding({\n imported: 'default',\n local: specifier.local.name,\n source,\n });\n return;\n }\n\n if (specifier.type === 'ImportNamespaceSpecifier') {\n addBinding({\n imported: '*',\n local: specifier.local.name,\n source,\n });\n return;\n }\n\n const imported = nameFromModuleExport(specifier.imported);\n if (!imported) {\n return;\n }\n\n addBinding({\n imported,\n local: specifier.local.name,\n source,\n });\n });\n });\n\n if (!requireCallRe.test(code)) {\n return [...bindings.values()];\n }\n\n collectOxcExportsAndImports(code, filename).imports.forEach((item) => {\n if (item.imported === 'side-effect') {\n return;\n }\n\n addBinding({\n imported: item.imported,\n local: item.local.code,\n source: item.source,\n });\n\n if (item.local.name && item.local.name !== item.local.code) {\n addBinding({\n imported: item.imported,\n local: item.local.name,\n source: item.source,\n });\n }\n });\n\n return [...bindings.values()];\n};\n\nconst getImportBinding = (\n imports: ImportBinding[],\n local: string\n): ImportBinding | undefined => imports.find((item) => item.local === local);\n\nfunction unwrapSequenceCallee(node: Expression): Expression {\n if (\n node.type === 'SequenceExpression' &&\n node.expressions.length === 2 &&\n node.expressions[0]?.type === 'Literal' &&\n node.expressions[0].value === 0\n ) {\n return node.expressions[1] as Expression;\n }\n\n return node;\n}\n\nconst getExpressionImportKey = (node: Expression): string | null => {\n const expression = unwrapSequenceCallee(node);\n\n if (expression.type === 'Identifier') {\n return expression.name;\n }\n\n if (expression.type !== 'MemberExpression') {\n return null;\n }\n\n if (expression.object.type !== 'Identifier') {\n return null;\n }\n\n const propertyName = getMemberPropertyName(expression);\n return propertyName ? `${expression.object.name}.${propertyName}` : null;\n};\n\nconst isHookOrCreateElement = (name: string): boolean =>\n name === 'createElement' || /use[A-Z]/.test(name);\n\nconst getInnermostCallee = (call: CallExpression): Expression => {\n let callee = unwrapSequenceCallee(call.callee);\n while (callee.type === 'CallExpression') {\n callee = unwrapSequenceCallee(callee.callee);\n }\n\n return callee;\n};\n\nconst getImportForExpression = (\n node: Expression,\n imports: ImportBinding[]\n): [source: string, imported: string] | undefined => {\n const expression = unwrapSequenceCallee(node);\n const directMatchKey = getExpressionImportKey(expression);\n if (directMatchKey) {\n const directMatch = getImportBinding(imports, directMatchKey);\n if (directMatch) {\n return [directMatch.source, directMatch.imported];\n }\n }\n\n if (expression.type === 'Identifier') {\n const matched = getImportBinding(imports, expression.name);\n return matched ? [matched.source, matched.imported] : undefined;\n }\n\n if (expression.type !== 'MemberExpression') {\n return undefined;\n }\n\n if (expression.object.type !== 'Identifier') {\n return undefined;\n }\n\n const propertyName = getMemberPropertyName(expression);\n if (!propertyName) {\n return undefined;\n }\n\n const objectImport = getImportBinding(imports, expression.object.name);\n if (!objectImport) {\n return undefined;\n }\n\n if (\n objectImport.imported === 'default' ||\n objectImport.imported === '*' ||\n objectImport.source === 'react'\n ) {\n return [objectImport.source, propertyName];\n }\n\n return undefined;\n};\n\nconst isReactRuntimeCall = (\n call: CallExpression,\n imports: ImportBinding[]\n): boolean => {\n const callee = unwrapSequenceCallee(call.callee);\n const matched = getImportForExpression(callee, imports);\n if (!matched) {\n return false;\n }\n\n const [source, imported] = matched;\n if (jsxRuntimeSources.has(source)) {\n return true;\n }\n\n return source === 'react' && isHookOrCreateElement(imported);\n};\n\nconst isHocCall = (\n call: CallExpression,\n hocs: Record<string, string[]>,\n imports: ImportBinding[]\n): boolean => {\n const matched = getImportForExpression(getInnermostCallee(call), imports);\n return !!matched && hocs[matched[0]]?.includes(matched[1]);\n};\n\nconst getComponentTypes = (\n options?: CodeRemoverOptions\n): Record<string, string[]> => {\n const componentTypes = {\n ...(options?.componentTypes ?? { react: [defaultPlaceholder] }),\n };\n const reactTypes = componentTypes.react;\n\n if (Array.isArray(reactTypes) && reactTypes.includes(defaultPlaceholder)) {\n const idx = reactTypes.indexOf(defaultPlaceholder);\n componentTypes.react = [...reactTypes];\n componentTypes.react.splice(idx, 1, ...defaultReactComponentTypes);\n }\n\n return componentTypes;\n};\n\nconst getTypeImport = (\n node: Node,\n imports: ImportBinding[]\n): [source: string, imported: string] | undefined => {\n if (node.type === 'Identifier') {\n const matched = getImportBinding(imports, node.name);\n return matched ? [matched.source, matched.imported] : undefined;\n }\n\n if (node.type !== 'TSQualifiedName') {\n return undefined;\n }\n\n if (node.left.type !== 'Identifier') {\n return undefined;\n }\n\n const matched = getImportBinding(imports, node.left.name);\n return matched ? [matched.source, node.right.name] : undefined;\n};\n\nconst isComponentTypeMatch = (\n id: Node,\n componentTypes: Record<string, string[]>,\n imports: ImportBinding[]\n): boolean => {\n if (id.type !== 'Identifier') {\n return false;\n }\n\n const annotation = id.typeAnnotation;\n if (\n !annotation ||\n annotation.type !== 'TSTypeAnnotation' ||\n annotation.typeAnnotation.type !== 'TSTypeReference'\n ) {\n return false;\n }\n\n const matched = getTypeImport(annotation.typeAnnotation.typeName, imports);\n return !!matched && componentTypes[matched[0]]?.includes(matched[1]);\n};\n\nconst getClassName = (node: Node): string | null =>\n node.type === 'ClassDeclaration' && node.id ? node.id.name : null;\n\nconst isFunctionLikeNode = (node: Node): node is OxcFunctionLikeNode =>\n node.type === 'FunctionDeclaration' ||\n node.type === 'FunctionExpression' ||\n node.type === 'ArrowFunctionExpression';\n\nconst isImmediatelyInvokedFunction = (\n fnNode: Node,\n ancestors: Node[],\n fnIndex: number\n): boolean => {\n // Walk past any ParenthesizedExpression / SequenceExpression wrappers that\n // sit between the function and its enclosing CallExpression. oxc-parser\n // preserves ParenthesizedExpression nodes, so `(() => {...})()` shows up\n // as CallExpression -> ParenthesizedExpression -> ArrowFunctionExpression.\n let child: Node = fnNode;\n for (let idx = fnIndex - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n if (\n ancestor.type === 'ParenthesizedExpression' &&\n 'expression' in ancestor &&\n ancestor.expression === child\n ) {\n child = ancestor;\n continue;\n }\n if (\n ancestor.type === 'SequenceExpression' &&\n Array.isArray(ancestor.expressions) &&\n ancestor.expressions[ancestor.expressions.length - 1] === child\n ) {\n child = ancestor;\n continue;\n }\n return ancestor.type === 'CallExpression' && ancestor.callee === child;\n }\n return false;\n};\n\n// A reference is \"deferred\" when it lives inside a function body that is\n// not immediately invoked. Module preeval reads exports without calling\n// them, so deferred references never run and must not be sanitized — that\n// would silently drop the binding (or remove the entire export) and break\n// importers that expect the function to be callable.\nconst isInDeferredFunctionScope = (ancestors: Node[]): boolean => {\n for (let idx = ancestors.length - 1; idx >= 0; idx -= 1) {\n const ancestor = ancestors[idx];\n if (!isFunctionLikeNode(ancestor)) {\n continue;\n }\n if (!isImmediatelyInvokedFunction(ancestor, ancestors, idx)) {\n return true;\n }\n }\n return false;\n};\n\nconst findFunctionReplacement = (ancestors: Node[]): Replacement | null => {\n const renderMethod = findLastAncestor(\n ancestors,\n (ancestor) =>\n ancestor.type === 'MethodDefinition' &&\n ancestor.key.type === 'Identifier' &&\n ancestor.key.name === 'render'\n );\n\n if (renderMethod) {\n const classDecl = findLastAncestor(\n ancestors,\n (ancestor) => ancestor.type === 'ClassDeclaration'\n );\n const className = classDecl ? getClassName(classDecl) : null;\n if (classDecl && className) {\n return {\n start: classDecl.start,\n end: classDecl.end,\n value: `function ${className}() { return null; }`,\n };\n }\n }\n\n const functionNode = findLastAncestor(ancestors, isFunctionLikeNode);\n\n if (!functionNode) {\n return null;\n }\n\n if (functionNode.type === 'ArrowFunctionExpression') {\n return {\n start: functionNode.start,\n end: functionNode.end,\n value: `${functionNode.async ? 'async ' : ''}() => { return null; }`,\n };\n }\n\n if (functionNode.type === 'FunctionDeclaration') {\n return {\n start: functionNode.start,\n end: functionNode.end,\n value: `${functionNode.async ? 'async ' : ''}function ${\n functionNode.id?.name ?? ''\n }() { return null; }`,\n };\n }\n\n return {\n start: functionNode.body.start,\n end: functionNode.body.end,\n value: '{ return null; }',\n };\n};\n\nconst normalizeReplacements = (replacements: Replacement[]): Replacement[] => {\n const sorted = [...replacements].sort((a, b) =>\n a.start === b.start ? b.end - a.end : a.start - b.start\n );\n const result: Replacement[] = [];\n\n sorted.forEach((replacement) => {\n const last = result[result.length - 1];\n if (\n last &&\n replacement.start >= last.start &&\n replacement.end <= last.end\n ) {\n return;\n }\n\n result.push(replacement);\n });\n\n return result;\n};\n\nexport const removeDangerousCodeWithOxc = (\n code: string,\n filename: string,\n options?: CodeRemoverOptions\n): string => {\n const replacements: Replacement[] = [];\n const derivedForbiddenBindings = new Set<string>();\n const program = parseOxc(code, filename);\n const imports = collectImportBindings(code, filename, program);\n const componentTypes = getComponentTypes(options);\n const hocs = options?.hocs ?? {};\n const hasHocs = Object.keys(hocs).length > 0;\n const windowScopedNames = windowTokenRe.test(code)\n ? collectWindowScopedNames(program)\n : new Set<string>();\n const reExportedLocalNames = collectReExportedLocalNames(program);\n\n const derivedBindingDiscovery = { found: true };\n while (derivedBindingDiscovery.found) {\n derivedBindingDiscovery.found = false;\n\n visit(program, createScope(null, 'root'), (node, scope) => {\n if (\n node.type !== 'VariableDeclarator' ||\n node.id.type !== 'Identifier' ||\n !node.init\n ) {\n return;\n }\n\n const bindingKey = getBindingKey(scope, node.id.name);\n if (!bindingKey || derivedForbiddenBindings.has(bindingKey)) {\n return;\n }\n\n if (\n containsForbiddenIdentifier(node.init) ||\n containsForbiddenReference(\n node.init,\n scope,\n windowScopedNames,\n derivedForbiddenBindings\n )\n ) {\n derivedForbiddenBindings.add(bindingKey);\n derivedBindingDiscovery.found = true;\n }\n });\n }\n\n visit(\n program,\n createScope(null, 'root'),\n (node, scope, parent, ancestors) => {\n if (node.type === 'JSXElement' || node.type === 'JSXFragment') {\n replacements.push(\n findFunctionReplacement(ancestors) ?? {\n start: node.start,\n end: node.end,\n value: 'null',\n }\n );\n return;\n }\n\n if (node.type === 'CallExpression') {\n if (isReactRuntimeCall(node, imports)) {\n const replacement = findFunctionReplacement(ancestors);\n if (replacement) {\n replacements.push(replacement);\n }\n\n return;\n }\n\n if (hasHocs && isHocCall(node, hocs, imports)) {\n replacements.push({\n start: node.start,\n end: node.end,\n value: '() => null',\n });\n return;\n }\n }\n\n if (\n node.type === 'VariableDeclarator' &&\n node.id.type === 'Identifier' &&\n node.init &&\n isComponentTypeMatch(node.id, componentTypes, imports)\n ) {\n replacements.push({\n start: node.init.start,\n end: node.init.end,\n value: '() => null',\n });\n return;\n }\n\n if (\n node.type === 'UnaryExpression' &&\n node.operator === 'typeof' &&\n node.argument.type === 'Identifier' &&\n ssrCheckFields.has(node.argument.name) &&\n !hasBinding(scope, node.argument.name)\n ) {\n replacements.push({\n start: node.start,\n end: node.end,\n value: '\"undefined\"',\n });\n return;\n }\n\n if (node.type === 'MetaProperty') {\n const owner = findRemovableOwner(node, ancestors);\n replacements.push({ start: owner.start, end: owner.end, value: '' });\n return;\n }\n\n if (\n node.type !== 'Identifier' ||\n isTypeContext(ancestors) ||\n isInsideTypeof(ancestors) ||\n isInsideImportDeclaration(ancestors)\n ) {\n return;\n }\n\n if (isPropertyOnlyIdentifier(node, parent)) {\n return;\n }\n\n const isAlwaysForbidden = alwaysForbiddenIdentifiers.has(node.name);\n const bindingKey = getBindingKey(scope, node.name);\n const isDerivedForbidden =\n bindingKey !== null && derivedForbiddenBindings.has(bindingKey);\n const isWindowScoped =\n windowScopedNames.has(node.name) && !hasBinding(scope, node.name);\n const isForbiddenGlobal =\n forbiddenGlobals.has(node.name) && !hasBinding(scope, node.name);\n\n if (\n !isAlwaysForbidden &&\n !isDerivedForbidden &&\n !isWindowScoped &&\n !isForbiddenGlobal\n ) {\n return;\n }\n\n if (!isAlwaysForbidden && isInDeferredFunctionScope(ancestors)) {\n return;\n }\n\n if (isBindingPosition(node, parent) && !isAlwaysForbidden) {\n return;\n }\n\n if (\n parent?.type === 'ExportDefaultDeclaration' &&\n parent.declaration === node\n ) {\n return;\n }\n\n if (\n generatedProcessorHelperNameRe.test(node.name) &&\n hasBinding(scope, node.name)\n ) {\n return;\n }\n\n const generatedHelperDeclarator = findLastAncestor(\n ancestors,\n (ancestor) =>\n ancestor.type === 'VariableDeclarator' &&\n ancestor.id.type === 'Identifier' &&\n generatedProcessorHelperNameRe.test(ancestor.id.name)\n );\n if (generatedHelperDeclarator) {\n return;\n }\n\n if (\n parent?.type === 'Property' &&\n parent.value === node &&\n hasBinding(scope, node.name)\n ) {\n return;\n }\n\n if (parent?.type === 'Property' && parent.value === node) {\n replacements.push({\n start: node.start,\n end: node.end,\n value: parent.shorthand ? `${node.name}: undefined` : 'undefined',\n });\n return;\n }\n\n const grandparent = ancestors[ancestors.length - 2] ?? null;\n if (\n parent?.type === 'MemberExpression' &&\n parent.object === node &&\n grandparent?.type === 'SpreadElement' &&\n grandparent.argument === parent\n ) {\n replacements.push({\n start: grandparent.start,\n end: grandparent.end,\n value: '...{}',\n });\n return;\n }\n\n const exportProtection = findExportedBindingProtection(\n node,\n ancestors,\n reExportedLocalNames\n );\n if (exportProtection) {\n replacements.push(exportProtection);\n return;\n }\n\n const promiseOwner = findPromiseCallbackOwner(ancestors);\n const owner = promiseOwner\n ? findRemovableOwner(promiseOwner, ancestors)\n : findRemovableOwner(node, ancestors);\n replacements.push({ start: owner.start, end: owner.end, value: '' });\n }\n );\n\n return applyReplacements(code, normalizeReplacements(replacements));\n};\n"],"file":"oxcPreevalTransforms.js"}