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

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 (801) hide show
  1. package/esm/cache.js +433 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +171 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2275 -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/runner.js +1878 -0
  14. package/esm/eval/runner.js.map +1 -0
  15. package/esm/eval/serialize.js +333 -0
  16. package/esm/eval/serialize.js.map +1 -0
  17. package/esm/eval/writeQueue.js +81 -0
  18. package/esm/eval/writeQueue.js.map +1 -0
  19. package/esm/evaluators/index.js +11 -12
  20. package/esm/evaluators/index.js.map +1 -1
  21. package/esm/index.js +25 -29
  22. package/esm/index.js.map +1 -1
  23. package/esm/module.js +923 -520
  24. package/esm/module.js.map +1 -1
  25. package/esm/shaker.js +14 -80
  26. package/esm/shaker.js.map +1 -1
  27. package/esm/transform/BaseEntrypoint.js +162 -164
  28. package/esm/transform/BaseEntrypoint.js.map +1 -1
  29. package/esm/transform/Entrypoint.helpers.js +96 -253
  30. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  31. package/esm/transform/Entrypoint.js +336 -270
  32. package/esm/transform/Entrypoint.js.map +1 -1
  33. package/esm/transform/Entrypoint.types.js +1 -1
  34. package/esm/transform/Entrypoint.types.js.map +1 -1
  35. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  36. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  37. package/esm/transform/actions/AbortError.js +6 -6
  38. package/esm/transform/actions/AbortError.js.map +1 -1
  39. package/esm/transform/actions/BaseAction.js +140 -136
  40. package/esm/transform/actions/BaseAction.js.map +1 -1
  41. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  42. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  43. package/esm/transform/actions/actionRunner.js +63 -66
  44. package/esm/transform/actions/actionRunner.js.map +1 -1
  45. package/esm/transform/actions/types.js +1 -1
  46. package/esm/transform/actions/types.js.map +1 -1
  47. package/esm/transform/barrelManifest.types.js +2 -0
  48. package/esm/transform/barrelManifest.types.js.map +1 -0
  49. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  50. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  51. package/esm/transform/generators/collect.js +27 -55
  52. package/esm/transform/generators/collect.js.map +1 -1
  53. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  54. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  55. package/esm/transform/generators/evalFile.js +48 -47
  56. package/esm/transform/generators/evalFile.js.map +1 -1
  57. package/esm/transform/generators/extract.js +78 -90
  58. package/esm/transform/generators/extract.js.map +1 -1
  59. package/esm/transform/generators/getExports.js +57 -74
  60. package/esm/transform/generators/getExports.js.map +1 -1
  61. package/esm/transform/generators/index.js +11 -11
  62. package/esm/transform/generators/index.js.map +1 -1
  63. package/esm/transform/generators/processEntrypoint.js +93 -67
  64. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  65. package/esm/transform/generators/processImports.js +102 -67
  66. package/esm/transform/generators/processImports.js.map +1 -1
  67. package/esm/transform/generators/resolveImports.js +212 -197
  68. package/esm/transform/generators/resolveImports.js.map +1 -1
  69. package/esm/transform/generators/resolveStaticOxcValues/cache.js +182 -0
  70. package/esm/transform/generators/resolveStaticOxcValues/cache.js.map +1 -0
  71. package/esm/transform/generators/resolveStaticOxcValues/candidateResolver.js +146 -0
  72. package/esm/transform/generators/resolveStaticOxcValues/candidateResolver.js.map +1 -0
  73. package/esm/transform/generators/resolveStaticOxcValues/dependencies.js +33 -0
  74. package/esm/transform/generators/resolveStaticOxcValues/dependencies.js.map +1 -0
  75. package/esm/transform/generators/resolveStaticOxcValues/environment.js +29 -0
  76. package/esm/transform/generators/resolveStaticOxcValues/environment.js.map +1 -0
  77. package/esm/transform/generators/resolveStaticOxcValues/exportResolver.js +351 -0
  78. package/esm/transform/generators/resolveStaticOxcValues/exportResolver.js.map +1 -0
  79. package/esm/transform/generators/resolveStaticOxcValues/exportTargets.js +253 -0
  80. package/esm/transform/generators/resolveStaticOxcValues/exportTargets.js.map +1 -0
  81. package/esm/transform/generators/resolveStaticOxcValues/objectAssign.js +310 -0
  82. package/esm/transform/generators/resolveStaticOxcValues/objectAssign.js.map +1 -0
  83. package/esm/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js +74 -0
  84. package/esm/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js.map +1 -0
  85. package/esm/transform/generators/resolveStaticOxcValues/opaqueRuntime.js +229 -0
  86. package/esm/transform/generators/resolveStaticOxcValues/opaqueRuntime.js.map +1 -0
  87. package/esm/transform/generators/resolveStaticOxcValues/processorStaticExport.js +172 -0
  88. package/esm/transform/generators/resolveStaticOxcValues/processorStaticExport.js.map +1 -0
  89. package/esm/transform/generators/resolveStaticOxcValues/processorStaticModel.js +476 -0
  90. package/esm/transform/generators/resolveStaticOxcValues/processorStaticModel.js.map +1 -0
  91. package/esm/transform/generators/resolveStaticOxcValues/processorTarget.js +55 -0
  92. package/esm/transform/generators/resolveStaticOxcValues/processorTarget.js.map +1 -0
  93. package/esm/transform/generators/resolveStaticOxcValues/programAnalysis.js +123 -0
  94. package/esm/transform/generators/resolveStaticOxcValues/programAnalysis.js.map +1 -0
  95. package/esm/transform/generators/resolveStaticOxcValues/prune.js +186 -0
  96. package/esm/transform/generators/resolveStaticOxcValues/prune.js.map +1 -0
  97. package/esm/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js +183 -0
  98. package/esm/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js.map +1 -0
  99. package/esm/transform/generators/resolveStaticOxcValues/staticExpression.js +298 -0
  100. package/esm/transform/generators/resolveStaticOxcValues/staticExpression.js.map +1 -0
  101. package/esm/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js +298 -0
  102. package/esm/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js.map +1 -0
  103. package/esm/transform/generators/resolveStaticOxcValues/types.js +3 -0
  104. package/esm/transform/generators/resolveStaticOxcValues/types.js.map +1 -0
  105. package/esm/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js +59 -0
  106. package/esm/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js.map +1 -0
  107. package/esm/transform/generators/resolveStaticOxcValues.js +2 -0
  108. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  109. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  110. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  111. package/esm/transform/generators/transform.js +251 -248
  112. package/esm/transform/generators/transform.js.map +1 -1
  113. package/esm/transform/generators/workflow.js +87 -90
  114. package/esm/transform/generators/workflow.js.map +1 -1
  115. package/esm/transform/helpers/loadWywOptions.js +183 -74
  116. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  117. package/esm/transform/helpers/withDefaultServices.js +13 -22
  118. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  119. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  120. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  121. package/esm/transform/oxcBarrelManifest.js +349 -0
  122. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  123. package/esm/transform/rootLog.js +3 -3
  124. package/esm/transform/rootLog.js.map +1 -1
  125. package/esm/transform/syntax.js +2 -0
  126. package/esm/transform/syntax.js.map +1 -0
  127. package/esm/transform/types.js +2 -2
  128. package/esm/transform/types.js.map +1 -1
  129. package/esm/transform.js +125 -147
  130. package/esm/transform.js.map +1 -1
  131. package/esm/types.js +4 -1
  132. package/esm/types.js.map +1 -1
  133. package/esm/utils/EventEmitter.js +79 -48
  134. package/esm/utils/EventEmitter.js.map +1 -1
  135. package/esm/utils/ShakerMetadata.js +2 -2
  136. package/esm/utils/ShakerMetadata.js.map +1 -1
  137. package/esm/utils/TransformDiagnostics.js +9 -9
  138. package/esm/utils/TransformDiagnostics.js.map +1 -1
  139. package/esm/utils/TransformMetadata.js +24 -26
  140. package/esm/utils/TransformMetadata.js.map +1 -1
  141. package/esm/utils/applyOxcProcessors/applyOxcProcessors.js +160 -0
  142. package/esm/utils/applyOxcProcessors/applyOxcProcessors.js.map +1 -0
  143. package/esm/utils/applyOxcProcessors/cleanupBindings.js +157 -0
  144. package/esm/utils/applyOxcProcessors/cleanupBindings.js.map +1 -0
  145. package/esm/utils/applyOxcProcessors/cleanupRemovals.js +431 -0
  146. package/esm/utils/applyOxcProcessors/cleanupRemovals.js.map +1 -0
  147. package/esm/utils/applyOxcProcessors/displayName.js +93 -0
  148. package/esm/utils/applyOxcProcessors/displayName.js.map +1 -0
  149. package/esm/utils/applyOxcProcessors/expressionValues.js +152 -0
  150. package/esm/utils/applyOxcProcessors/expressionValues.js.map +1 -0
  151. package/esm/utils/applyOxcProcessors/processorFactory.js +62 -0
  152. package/esm/utils/applyOxcProcessors/processorFactory.js.map +1 -0
  153. package/esm/utils/applyOxcProcessors/processorUsages.js +143 -0
  154. package/esm/utils/applyOxcProcessors/processorUsages.js.map +1 -0
  155. package/esm/utils/applyOxcProcessors/sameFileStaticValues.js +207 -0
  156. package/esm/utils/applyOxcProcessors/sameFileStaticValues.js.map +1 -0
  157. package/esm/utils/applyOxcProcessors/shared.js +29 -0
  158. package/esm/utils/applyOxcProcessors/shared.js.map +1 -0
  159. package/esm/utils/applyOxcProcessors/types.js +2 -0
  160. package/esm/utils/applyOxcProcessors/types.js.map +1 -0
  161. package/esm/utils/applyOxcProcessors.js +2 -0
  162. package/esm/utils/applyOxcProcessors.js.map +1 -0
  163. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  164. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  165. package/esm/utils/collectOxcRuntime/normalizeRuntimeCode.js +157 -0
  166. package/esm/utils/collectOxcRuntime/normalizeRuntimeCode.js.map +1 -0
  167. package/esm/utils/collectOxcRuntime/sourceMap.js +36 -0
  168. package/esm/utils/collectOxcRuntime/sourceMap.js.map +1 -0
  169. package/esm/utils/collectOxcRuntime/types.js +2 -0
  170. package/esm/utils/collectOxcRuntime/types.js.map +1 -0
  171. package/esm/utils/collectOxcRuntime.js +32 -0
  172. package/esm/utils/collectOxcRuntime.js.map +1 -0
  173. package/esm/utils/collectOxcTemplateDependencies/expressionExtraction.js +496 -0
  174. package/esm/utils/collectOxcTemplateDependencies/expressionExtraction.js.map +1 -0
  175. package/esm/utils/collectOxcTemplateDependencies/expressionReplacements.js +113 -0
  176. package/esm/utils/collectOxcTemplateDependencies/expressionReplacements.js.map +1 -0
  177. package/esm/utils/collectOxcTemplateDependencies/scopeAnalysis.js +387 -0
  178. package/esm/utils/collectOxcTemplateDependencies/scopeAnalysis.js.map +1 -0
  179. package/esm/utils/collectOxcTemplateDependencies/staticBindings.js +17 -0
  180. package/esm/utils/collectOxcTemplateDependencies/staticBindings.js.map +1 -0
  181. package/esm/utils/collectOxcTemplateDependencies/staticEvaluator.js +540 -0
  182. package/esm/utils/collectOxcTemplateDependencies/staticEvaluator.js.map +1 -0
  183. package/esm/utils/collectOxcTemplateDependencies/types.js +2 -0
  184. package/esm/utils/collectOxcTemplateDependencies/types.js.map +1 -0
  185. package/esm/utils/collectOxcTemplateDependencies.js +4 -0
  186. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  187. package/esm/utils/dispose-polyfill.js +3 -4
  188. package/esm/utils/dispose-polyfill.js.map +1 -1
  189. package/esm/utils/getFileIdx.js +6 -6
  190. package/esm/utils/getFileIdx.js.map +1 -1
  191. package/esm/utils/getPluginKey.js +12 -12
  192. package/esm/utils/getPluginKey.js.map +1 -1
  193. package/esm/utils/getVisitorKeys.js +9 -3
  194. package/esm/utils/getVisitorKeys.js.map +1 -1
  195. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  196. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  197. package/esm/utils/hasWywPreval.js +5 -5
  198. package/esm/utils/hasWywPreval.js.map +1 -1
  199. package/esm/utils/importOverrides.js +75 -90
  200. package/esm/utils/importOverrides.js.map +1 -1
  201. package/esm/utils/isNode.js +2 -2
  202. package/esm/utils/isNode.js.map +1 -1
  203. package/esm/utils/isNotNull.js +2 -2
  204. package/esm/utils/isNotNull.js.map +1 -1
  205. package/esm/utils/isSerializable.js +11 -11
  206. package/esm/utils/isSerializable.js.map +1 -1
  207. package/esm/utils/nativeResolver.js +93 -0
  208. package/esm/utils/nativeResolver.js.map +1 -0
  209. package/esm/utils/oxc/ast.js +28 -0
  210. package/esm/utils/oxc/ast.js.map +1 -0
  211. package/esm/utils/oxc/parse.js +3 -0
  212. package/esm/utils/oxc/parse.js.map +1 -0
  213. package/esm/utils/oxc/replacements.js +14 -0
  214. package/esm/utils/oxc/replacements.js.map +1 -0
  215. package/esm/utils/oxc/sourceLocations.js +59 -0
  216. package/esm/utils/oxc/sourceLocations.js.map +1 -0
  217. package/esm/utils/oxcAstService.js +121 -0
  218. package/esm/utils/oxcAstService.js.map +1 -0
  219. package/esm/utils/oxcEmit.js +447 -0
  220. package/esm/utils/oxcEmit.js.map +1 -0
  221. package/esm/utils/oxcPreevalStage/evalStrategy.js +3 -0
  222. package/esm/utils/oxcPreevalStage/evalStrategy.js.map +1 -0
  223. package/esm/utils/oxcPreevalStage/prepareCode.js +21 -0
  224. package/esm/utils/oxcPreevalStage/prepareCode.js.map +1 -0
  225. package/esm/utils/oxcPreevalStage/prevalExport.js +23 -0
  226. package/esm/utils/oxcPreevalStage/prevalExport.js.map +1 -0
  227. package/esm/utils/oxcPreevalStage/processors.js +17 -0
  228. package/esm/utils/oxcPreevalStage/processors.js.map +1 -0
  229. package/esm/utils/oxcPreevalStage/staticOverlay.js +18 -0
  230. package/esm/utils/oxcPreevalStage/staticOverlay.js.map +1 -0
  231. package/esm/utils/oxcPreevalStage/types.js +2 -0
  232. package/esm/utils/oxcPreevalStage/types.js.map +1 -0
  233. package/esm/utils/oxcPreevalStage.js +41 -0
  234. package/esm/utils/oxcPreevalStage.js.map +1 -0
  235. package/esm/utils/oxcPreevalTransforms.js +1065 -0
  236. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  237. package/esm/utils/oxcShaker.js +662 -0
  238. package/esm/utils/oxcShaker.js.map +1 -0
  239. package/esm/utils/parseOxc.js +37 -0
  240. package/esm/utils/parseOxc.js.map +1 -0
  241. package/esm/utils/parseRequest.js +27 -27
  242. package/esm/utils/parseRequest.js.map +1 -1
  243. package/esm/utils/peek.js +1 -1
  244. package/esm/utils/peek.js.map +1 -1
  245. package/esm/utils/processorLookup.js +125 -0
  246. package/esm/utils/processorLookup.js.map +1 -0
  247. package/esm/utils/processorStaticSemantics.js +157 -0
  248. package/esm/utils/processorStaticSemantics.js.map +1 -0
  249. package/esm/utils/resolveWithConditions.js +99 -0
  250. package/esm/utils/resolveWithConditions.js.map +1 -0
  251. package/esm/vm/createVmContext.js +140 -141
  252. package/esm/vm/createVmContext.js.map +1 -1
  253. package/esm/vm/process.js +11 -13
  254. package/esm/vm/process.js.map +1 -1
  255. package/package.json +19 -26
  256. package/types/cache.d.ts +17 -8
  257. package/types/cache.js +245 -95
  258. package/types/debug/fileReporter.js +68 -23
  259. package/types/eval/broker.d.ts +92 -0
  260. package/types/eval/broker.js +2411 -0
  261. package/types/eval/lru.d.ts +10 -0
  262. package/types/eval/lru.js +36 -0
  263. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  264. package/types/eval/prepareModuleOnDemand.js +24 -0
  265. package/types/eval/protocol.d.ts +111 -0
  266. package/types/eval/protocol.js +1 -0
  267. package/types/eval/serialize.d.ts +78 -0
  268. package/types/eval/serialize.js +357 -0
  269. package/types/eval/writeQueue.d.ts +13 -0
  270. package/types/eval/writeQueue.js +80 -0
  271. package/types/evaluators/index.d.ts +2 -2
  272. package/types/evaluators/index.js +6 -9
  273. package/types/index.d.ts +3 -6
  274. package/types/index.js +24 -82
  275. package/types/module.d.ts +38 -7
  276. package/types/module.js +613 -192
  277. package/types/shaker.d.ts +2 -10
  278. package/types/shaker.js +10 -100
  279. package/types/transform/BaseEntrypoint.js +6 -11
  280. package/types/transform/Entrypoint.d.ts +15 -15
  281. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  282. package/types/transform/Entrypoint.helpers.js +43 -203
  283. package/types/transform/Entrypoint.js +130 -53
  284. package/types/transform/Entrypoint.types.d.ts +31 -6
  285. package/types/transform/Entrypoint.types.js +1 -2
  286. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  287. package/types/transform/EvaluatedEntrypoint.js +7 -6
  288. package/types/transform/actions/AbortError.js +2 -7
  289. package/types/transform/actions/BaseAction.js +4 -8
  290. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  291. package/types/transform/actions/actionRunner.js +8 -12
  292. package/types/transform/actions/types.d.ts +2 -2
  293. package/types/transform/actions/types.js +1 -2
  294. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  295. package/types/transform/barrelManifest.types.js +1 -0
  296. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  297. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  298. package/types/transform/generators/collect.js +13 -39
  299. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  300. package/types/transform/generators/evalFile.d.ts +2 -2
  301. package/types/transform/generators/evalFile.js +26 -28
  302. package/types/transform/generators/extract.js +5 -8
  303. package/types/transform/generators/getExports.js +23 -30
  304. package/types/transform/generators/index.d.ts +2 -2
  305. package/types/transform/generators/index.js +11 -14
  306. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  307. package/types/transform/generators/processEntrypoint.js +60 -26
  308. package/types/transform/generators/processImports.d.ts +0 -3
  309. package/types/transform/generators/processImports.js +60 -20
  310. package/types/transform/generators/resolveImports.d.ts +3 -1
  311. package/types/transform/generators/resolveImports.js +66 -23
  312. package/types/transform/generators/resolveStaticOxcValues/cache.d.ts +25 -0
  313. package/types/transform/generators/resolveStaticOxcValues/cache.js +182 -0
  314. package/types/transform/generators/resolveStaticOxcValues/candidateResolver.d.ts +5 -0
  315. package/types/transform/generators/resolveStaticOxcValues/candidateResolver.js +149 -0
  316. package/types/transform/generators/resolveStaticOxcValues/dependencies.d.ts +6 -0
  317. package/types/transform/generators/resolveStaticOxcValues/dependencies.js +37 -0
  318. package/types/transform/generators/resolveStaticOxcValues/environment.d.ts +12 -0
  319. package/types/transform/generators/resolveStaticOxcValues/environment.js +32 -0
  320. package/types/transform/generators/resolveStaticOxcValues/exportResolver.d.ts +4 -0
  321. package/types/transform/generators/resolveStaticOxcValues/exportResolver.js +358 -0
  322. package/types/transform/generators/resolveStaticOxcValues/exportTargets.d.ts +20 -0
  323. package/types/transform/generators/resolveStaticOxcValues/exportTargets.js +285 -0
  324. package/types/transform/generators/resolveStaticOxcValues/objectAssign.d.ts +41 -0
  325. package/types/transform/generators/resolveStaticOxcValues/objectAssign.js +352 -0
  326. package/types/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.d.ts +6 -0
  327. package/types/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js +88 -0
  328. package/types/transform/generators/resolveStaticOxcValues/opaqueRuntime.d.ts +13 -0
  329. package/types/transform/generators/resolveStaticOxcValues/opaqueRuntime.js +263 -0
  330. package/types/transform/generators/resolveStaticOxcValues/processorStaticExport.d.ts +4 -0
  331. package/types/transform/generators/resolveStaticOxcValues/processorStaticExport.js +191 -0
  332. package/types/transform/generators/resolveStaticOxcValues/processorStaticModel.d.ts +40 -0
  333. package/types/transform/generators/resolveStaticOxcValues/processorStaticModel.js +516 -0
  334. package/types/transform/generators/resolveStaticOxcValues/processorTarget.d.ts +5 -0
  335. package/types/transform/generators/resolveStaticOxcValues/processorTarget.js +62 -0
  336. package/types/transform/generators/resolveStaticOxcValues/programAnalysis.d.ts +11 -0
  337. package/types/transform/generators/resolveStaticOxcValues/programAnalysis.js +133 -0
  338. package/types/transform/generators/resolveStaticOxcValues/prune.d.ts +15 -0
  339. package/types/transform/generators/resolveStaticOxcValues/prune.js +220 -0
  340. package/types/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.d.ts +2 -0
  341. package/types/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js +197 -0
  342. package/types/transform/generators/resolveStaticOxcValues/staticExpression.d.ts +25 -0
  343. package/types/transform/generators/resolveStaticOxcValues/staticExpression.js +391 -0
  344. package/types/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.d.ts +14 -0
  345. package/types/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js +304 -0
  346. package/types/transform/generators/resolveStaticOxcValues/types.d.ts +99 -0
  347. package/types/transform/generators/resolveStaticOxcValues/types.js +2 -0
  348. package/types/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.d.ts +7 -0
  349. package/types/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js +64 -0
  350. package/types/transform/generators/resolveStaticOxcValues.d.ts +1 -0
  351. package/types/transform/generators/resolveStaticOxcValues.js +1 -0
  352. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  353. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  354. package/types/transform/generators/transform.d.ts +3 -7
  355. package/types/transform/generators/transform.js +217 -199
  356. package/types/transform/generators/workflow.js +62 -45
  357. package/types/transform/helpers/loadWywOptions.js +115 -21
  358. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  359. package/types/transform/helpers/withDefaultServices.js +6 -44
  360. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  361. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  362. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  363. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  364. package/types/transform/rootLog.js +2 -5
  365. package/types/transform/syntax.d.ts +38 -0
  366. package/types/transform/syntax.js +1 -0
  367. package/types/transform/types.d.ts +9 -6
  368. package/types/transform/types.js +1 -4
  369. package/types/transform.d.ts +2 -2
  370. package/types/transform.js +90 -101
  371. package/types/types.d.ts +0 -23
  372. package/types/types.js +1 -2
  373. package/types/utils/EventEmitter.d.ts +16 -1
  374. package/types/utils/EventEmitter.js +47 -18
  375. package/types/utils/ShakerMetadata.js +1 -5
  376. package/types/utils/TransformDiagnostics.js +3 -7
  377. package/types/utils/TransformMetadata.js +8 -16
  378. package/types/utils/applyOxcProcessors/applyOxcProcessors.d.ts +8 -0
  379. package/types/utils/applyOxcProcessors/applyOxcProcessors.js +167 -0
  380. package/types/utils/applyOxcProcessors/cleanupBindings.d.ts +12 -0
  381. package/types/utils/applyOxcProcessors/cleanupBindings.js +189 -0
  382. package/types/utils/applyOxcProcessors/cleanupRemovals.d.ts +16 -0
  383. package/types/utils/applyOxcProcessors/cleanupRemovals.js +482 -0
  384. package/types/utils/applyOxcProcessors/displayName.d.ts +9 -0
  385. package/types/utils/applyOxcProcessors/displayName.js +113 -0
  386. package/types/utils/applyOxcProcessors/expressionValues.d.ts +11 -0
  387. package/types/utils/applyOxcProcessors/expressionValues.js +170 -0
  388. package/types/utils/applyOxcProcessors/processorFactory.d.ts +7 -0
  389. package/types/utils/applyOxcProcessors/processorFactory.js +70 -0
  390. package/types/utils/applyOxcProcessors/processorUsages.d.ts +16 -0
  391. package/types/utils/applyOxcProcessors/processorUsages.js +163 -0
  392. package/types/utils/applyOxcProcessors/sameFileStaticValues.d.ts +23 -0
  393. package/types/utils/applyOxcProcessors/sameFileStaticValues.js +211 -0
  394. package/types/utils/applyOxcProcessors/shared.d.ts +10 -0
  395. package/types/utils/applyOxcProcessors/shared.js +37 -0
  396. package/types/utils/applyOxcProcessors/types.d.ts +88 -0
  397. package/types/utils/applyOxcProcessors/types.js +1 -0
  398. package/types/utils/applyOxcProcessors.d.ts +1 -0
  399. package/types/utils/applyOxcProcessors.js +1 -0
  400. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  401. package/types/utils/collectOxcExportsAndImports.js +957 -0
  402. package/types/utils/collectOxcRuntime/normalizeRuntimeCode.d.ts +1 -0
  403. package/types/utils/collectOxcRuntime/normalizeRuntimeCode.js +185 -0
  404. package/types/utils/collectOxcRuntime/sourceMap.d.ts +2 -0
  405. package/types/utils/collectOxcRuntime/sourceMap.js +37 -0
  406. package/types/utils/collectOxcRuntime/types.d.ts +16 -0
  407. package/types/utils/collectOxcRuntime/types.js +1 -0
  408. package/types/utils/collectOxcRuntime.d.ts +4 -0
  409. package/types/utils/collectOxcRuntime.js +31 -0
  410. package/types/utils/collectOxcTemplateDependencies/expressionExtraction.d.ts +6 -0
  411. package/types/utils/collectOxcTemplateDependencies/expressionExtraction.js +550 -0
  412. package/types/utils/collectOxcTemplateDependencies/expressionReplacements.d.ts +11 -0
  413. package/types/utils/collectOxcTemplateDependencies/expressionReplacements.js +131 -0
  414. package/types/utils/collectOxcTemplateDependencies/scopeAnalysis.d.ts +20 -0
  415. package/types/utils/collectOxcTemplateDependencies/scopeAnalysis.js +434 -0
  416. package/types/utils/collectOxcTemplateDependencies/staticBindings.d.ts +7 -0
  417. package/types/utils/collectOxcTemplateDependencies/staticBindings.js +13 -0
  418. package/types/utils/collectOxcTemplateDependencies/staticEvaluator.d.ts +13 -0
  419. package/types/utils/collectOxcTemplateDependencies/staticEvaluator.js +626 -0
  420. package/types/utils/collectOxcTemplateDependencies/types.d.ts +116 -0
  421. package/types/utils/collectOxcTemplateDependencies/types.js +1 -0
  422. package/types/utils/collectOxcTemplateDependencies.d.ts +4 -0
  423. package/types/utils/collectOxcTemplateDependencies.js +3 -0
  424. package/types/utils/getFileIdx.js +1 -4
  425. package/types/utils/getPluginKey.d.ts +5 -2
  426. package/types/utils/getPluginKey.js +2 -6
  427. package/types/utils/getVisitorKeys.d.ts +4 -4
  428. package/types/utils/getVisitorKeys.js +9 -6
  429. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  430. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  431. package/types/utils/hasWywPreval.js +1 -4
  432. package/types/utils/importOverrides.js +17 -27
  433. package/types/utils/isNode.d.ts +2 -2
  434. package/types/utils/isNode.js +2 -6
  435. package/types/utils/isNotNull.js +1 -4
  436. package/types/utils/isSerializable.js +3 -6
  437. package/types/utils/nativeResolver.d.ts +13 -0
  438. package/types/utils/nativeResolver.js +91 -0
  439. package/types/utils/oxc/ast.d.ts +4 -0
  440. package/types/utils/oxc/ast.js +37 -0
  441. package/types/utils/oxc/parse.d.ts +3 -0
  442. package/types/utils/oxc/parse.js +2 -0
  443. package/types/utils/oxc/replacements.d.ts +12 -0
  444. package/types/utils/oxc/replacements.js +18 -0
  445. package/types/utils/oxc/sourceLocations.d.ts +5 -0
  446. package/types/utils/oxc/sourceLocations.js +63 -0
  447. package/types/utils/oxcAstService.d.ts +11 -0
  448. package/types/utils/oxcAstService.js +79 -0
  449. package/types/utils/oxcEmit.d.ts +19 -0
  450. package/types/utils/oxcEmit.js +506 -0
  451. package/types/utils/oxcPreevalStage/evalStrategy.d.ts +3 -0
  452. package/types/utils/oxcPreevalStage/evalStrategy.js +2 -0
  453. package/types/utils/oxcPreevalStage/prepareCode.d.ts +3 -0
  454. package/types/utils/oxcPreevalStage/prepareCode.js +20 -0
  455. package/types/utils/oxcPreevalStage/prevalExport.d.ts +1 -0
  456. package/types/utils/oxcPreevalStage/prevalExport.js +22 -0
  457. package/types/utils/oxcPreevalStage/processors.d.ts +10 -0
  458. package/types/utils/oxcPreevalStage/processors.js +16 -0
  459. package/types/utils/oxcPreevalStage/staticOverlay.d.ts +3 -0
  460. package/types/utils/oxcPreevalStage/staticOverlay.js +23 -0
  461. package/types/utils/oxcPreevalStage/types.d.ts +22 -0
  462. package/types/utils/oxcPreevalStage/types.js +1 -0
  463. package/types/utils/oxcPreevalStage.d.ts +4 -0
  464. package/types/utils/oxcPreevalStage.js +40 -0
  465. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  466. package/types/utils/oxcPreevalTransforms.js +1192 -0
  467. package/types/utils/oxcShaker.d.ts +13 -0
  468. package/types/utils/oxcShaker.js +751 -0
  469. package/types/utils/parseOxc.d.ts +11 -0
  470. package/types/utils/parseOxc.js +38 -0
  471. package/types/utils/parseRequest.js +2 -7
  472. package/types/utils/peek.js +1 -5
  473. package/types/utils/processorLookup.d.ts +8 -0
  474. package/types/utils/processorLookup.js +135 -0
  475. package/types/utils/processorStaticSemantics.d.ts +13 -0
  476. package/types/utils/processorStaticSemantics.js +191 -0
  477. package/types/utils/resolveWithConditions.d.ts +12 -0
  478. package/types/utils/resolveWithConditions.js +103 -0
  479. package/types/vm/createVmContext.d.ts +2 -2
  480. package/types/vm/createVmContext.js +25 -62
  481. package/types/vm/process.js +20 -26
  482. package/esm/babel.js +0 -2
  483. package/esm/babel.js.map +0 -1
  484. package/esm/options/buildOptions.js +0 -168
  485. package/esm/options/buildOptions.js.map +0 -1
  486. package/esm/options/buildOptions.test.js +0 -138
  487. package/esm/options/buildOptions.test.js.map +0 -1
  488. package/esm/options/loadBabelOptions.js +0 -24
  489. package/esm/options/loadBabelOptions.js.map +0 -1
  490. package/esm/plugins/babel-transform.js +0 -53
  491. package/esm/plugins/babel-transform.js.map +0 -1
  492. package/esm/plugins/collector.js +0 -60
  493. package/esm/plugins/collector.js.map +0 -1
  494. package/esm/plugins/dynamic-import.js +0 -56
  495. package/esm/plugins/dynamic-import.js.map +0 -1
  496. package/esm/plugins/preeval.js +0 -73
  497. package/esm/plugins/preeval.js.map +0 -1
  498. package/esm/plugins/shaker.js +0 -680
  499. package/esm/plugins/shaker.js.map +0 -1
  500. package/esm/transform/barrelManifest.js +0 -291
  501. package/esm/transform/barrelManifest.js.map +0 -1
  502. package/esm/transform/generators/explodeReexports.js +0 -64
  503. package/esm/transform/generators/explodeReexports.js.map +0 -1
  504. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  505. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  506. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  507. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  508. package/esm/utils/collectExportsAndImports.js +0 -1157
  509. package/esm/utils/collectExportsAndImports.js.map +0 -1
  510. package/esm/utils/collectTemplateDependencies.js +0 -228
  511. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  512. package/esm/utils/createId.js +0 -6
  513. package/esm/utils/createId.js.map +0 -1
  514. package/esm/utils/findIdentifiers.js +0 -62
  515. package/esm/utils/findIdentifiers.js.map +0 -1
  516. package/esm/utils/getConstantStringValue.js +0 -58
  517. package/esm/utils/getConstantStringValue.js.map +0 -1
  518. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  519. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  520. package/esm/utils/getScope.js +0 -6
  521. package/esm/utils/getScope.js.map +0 -1
  522. package/esm/utils/getSource.js +0 -15
  523. package/esm/utils/getSource.js.map +0 -1
  524. package/esm/utils/getTagProcessor.js +0 -404
  525. package/esm/utils/getTagProcessor.js.map +0 -1
  526. package/esm/utils/isExports.js +0 -22
  527. package/esm/utils/isExports.js.map +0 -1
  528. package/esm/utils/isGlobal.js +0 -6
  529. package/esm/utils/isGlobal.js.map +0 -1
  530. package/esm/utils/isNodePath.js +0 -4
  531. package/esm/utils/isNodePath.js.map +0 -1
  532. package/esm/utils/isRemoved.js +0 -46
  533. package/esm/utils/isRemoved.js.map +0 -1
  534. package/esm/utils/isRequire.js +0 -13
  535. package/esm/utils/isRequire.js.map +0 -1
  536. package/esm/utils/isTypedNode.js +0 -6
  537. package/esm/utils/isTypedNode.js.map +0 -1
  538. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  539. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  540. package/esm/utils/removeDangerousCode.js +0 -276
  541. package/esm/utils/removeDangerousCode.js.map +0 -1
  542. package/esm/utils/replaceImportMetaEnv.js +0 -44
  543. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  544. package/esm/utils/scopeHelpers.js +0 -527
  545. package/esm/utils/scopeHelpers.js.map +0 -1
  546. package/esm/utils/traversalCache.js +0 -23
  547. package/esm/utils/traversalCache.js.map +0 -1
  548. package/esm/utils/unwrapExpression.js +0 -18
  549. package/esm/utils/unwrapExpression.js.map +0 -1
  550. package/esm/utils/unwrapSequence.js +0 -14
  551. package/esm/utils/unwrapSequence.js.map +0 -1
  552. package/esm/utils/valueToLiteral.js +0 -59
  553. package/esm/utils/valueToLiteral.js.map +0 -1
  554. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  555. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  556. package/lib/babel.js +0 -2
  557. package/lib/babel.js.map +0 -1
  558. package/lib/cache.js +0 -308
  559. package/lib/cache.js.map +0 -1
  560. package/lib/debug/fileReporter.js +0 -153
  561. package/lib/debug/fileReporter.js.map +0 -1
  562. package/lib/evaluators/index.js +0 -20
  563. package/lib/evaluators/index.js.map +0 -1
  564. package/lib/index.js +0 -286
  565. package/lib/index.js.map +0 -1
  566. package/lib/module.js +0 -552
  567. package/lib/module.js.map +0 -1
  568. package/lib/options/buildOptions.js +0 -176
  569. package/lib/options/buildOptions.js.map +0 -1
  570. package/lib/options/buildOptions.test.js +0 -141
  571. package/lib/options/buildOptions.test.js.map +0 -1
  572. package/lib/options/loadBabelOptions.js +0 -31
  573. package/lib/options/loadBabelOptions.js.map +0 -1
  574. package/lib/plugins/babel-transform.js +0 -60
  575. package/lib/plugins/babel-transform.js.map +0 -1
  576. package/lib/plugins/collector.js +0 -70
  577. package/lib/plugins/collector.js.map +0 -1
  578. package/lib/plugins/dynamic-import.js +0 -61
  579. package/lib/plugins/dynamic-import.js.map +0 -1
  580. package/lib/plugins/preeval.js +0 -81
  581. package/lib/plugins/preeval.js.map +0 -1
  582. package/lib/plugins/shaker.js +0 -691
  583. package/lib/plugins/shaker.js.map +0 -1
  584. package/lib/shaker.js +0 -95
  585. package/lib/shaker.js.map +0 -1
  586. package/lib/transform/BaseEntrypoint.js +0 -179
  587. package/lib/transform/BaseEntrypoint.js.map +0 -1
  588. package/lib/transform/Entrypoint.helpers.js +0 -279
  589. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  590. package/lib/transform/Entrypoint.js +0 -289
  591. package/lib/transform/Entrypoint.js.map +0 -1
  592. package/lib/transform/Entrypoint.types.js +0 -2
  593. package/lib/transform/Entrypoint.types.js.map +0 -1
  594. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  595. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  596. package/lib/transform/actions/AbortError.js +0 -16
  597. package/lib/transform/actions/AbortError.js.map +0 -1
  598. package/lib/transform/actions/BaseAction.js +0 -150
  599. package/lib/transform/actions/BaseAction.js.map +0 -1
  600. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  601. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  602. package/lib/transform/actions/actionRunner.js +0 -82
  603. package/lib/transform/actions/actionRunner.js.map +0 -1
  604. package/lib/transform/actions/types.js +0 -2
  605. package/lib/transform/actions/types.js.map +0 -1
  606. package/lib/transform/barrelManifest.js +0 -300
  607. package/lib/transform/barrelManifest.js.map +0 -1
  608. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  609. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  610. package/lib/transform/generators/collect.js +0 -66
  611. package/lib/transform/generators/collect.js.map +0 -1
  612. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  613. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  614. package/lib/transform/generators/evalFile.js +0 -57
  615. package/lib/transform/generators/evalFile.js.map +0 -1
  616. package/lib/transform/generators/explodeReexports.js +0 -71
  617. package/lib/transform/generators/explodeReexports.js.map +0 -1
  618. package/lib/transform/generators/extract.js +0 -102
  619. package/lib/transform/generators/extract.js.map +0 -1
  620. package/lib/transform/generators/getExports.js +0 -85
  621. package/lib/transform/generators/getExports.js.map +0 -1
  622. package/lib/transform/generators/index.js +0 -19
  623. package/lib/transform/generators/index.js.map +0 -1
  624. package/lib/transform/generators/processEntrypoint.js +0 -76
  625. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  626. package/lib/transform/generators/processImports.js +0 -82
  627. package/lib/transform/generators/processImports.js.map +0 -1
  628. package/lib/transform/generators/resolveImports.js +0 -221
  629. package/lib/transform/generators/resolveImports.js.map +0 -1
  630. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  631. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  632. package/lib/transform/generators/transform.js +0 -272
  633. package/lib/transform/generators/transform.js.map +0 -1
  634. package/lib/transform/generators/workflow.js +0 -100
  635. package/lib/transform/generators/workflow.js.map +0 -1
  636. package/lib/transform/helpers/loadWywOptions.js +0 -88
  637. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  638. package/lib/transform/helpers/withDefaultServices.js +0 -31
  639. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  640. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  641. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  642. package/lib/transform/rootLog.js +0 -9
  643. package/lib/transform/rootLog.js.map +0 -1
  644. package/lib/transform/types.js +0 -8
  645. package/lib/transform/types.js.map +0 -1
  646. package/lib/transform.js +0 -160
  647. package/lib/transform.js.map +0 -1
  648. package/lib/types.js +0 -2
  649. package/lib/types.js.map +0 -1
  650. package/lib/utils/EventEmitter.js +0 -61
  651. package/lib/utils/EventEmitter.js.map +0 -1
  652. package/lib/utils/ShakerMetadata.js +0 -9
  653. package/lib/utils/ShakerMetadata.js.map +0 -1
  654. package/lib/utils/TransformDiagnostics.js +0 -20
  655. package/lib/utils/TransformDiagnostics.js.map +0 -1
  656. package/lib/utils/TransformMetadata.js +0 -45
  657. package/lib/utils/TransformMetadata.js.map +0 -1
  658. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  659. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  660. package/lib/utils/collectExportsAndImports.js +0 -1173
  661. package/lib/utils/collectExportsAndImports.js.map +0 -1
  662. package/lib/utils/collectTemplateDependencies.js +0 -242
  663. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  664. package/lib/utils/createId.js +0 -13
  665. package/lib/utils/createId.js.map +0 -1
  666. package/lib/utils/dispose-polyfill.js +0 -9
  667. package/lib/utils/dispose-polyfill.js.map +0 -1
  668. package/lib/utils/findIdentifiers.js +0 -73
  669. package/lib/utils/findIdentifiers.js.map +0 -1
  670. package/lib/utils/getConstantStringValue.js +0 -66
  671. package/lib/utils/getConstantStringValue.js.map +0 -1
  672. package/lib/utils/getFileIdx.js +0 -16
  673. package/lib/utils/getFileIdx.js.map +0 -1
  674. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  675. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  676. package/lib/utils/getPluginKey.js +0 -21
  677. package/lib/utils/getPluginKey.js.map +0 -1
  678. package/lib/utils/getScope.js +0 -12
  679. package/lib/utils/getScope.js.map +0 -1
  680. package/lib/utils/getSource.js +0 -24
  681. package/lib/utils/getSource.js.map +0 -1
  682. package/lib/utils/getTagProcessor.js +0 -424
  683. package/lib/utils/getTagProcessor.js.map +0 -1
  684. package/lib/utils/getVisitorKeys.js +0 -11
  685. package/lib/utils/getVisitorKeys.js.map +0 -1
  686. package/lib/utils/hasWywPreval.js +0 -13
  687. package/lib/utils/hasWywPreval.js.map +0 -1
  688. package/lib/utils/importOverrides.js +0 -119
  689. package/lib/utils/importOverrides.js.map +0 -1
  690. package/lib/utils/isExports.js +0 -27
  691. package/lib/utils/isExports.js.map +0 -1
  692. package/lib/utils/isGlobal.js +0 -13
  693. package/lib/utils/isGlobal.js.map +0 -1
  694. package/lib/utils/isNode.js +0 -9
  695. package/lib/utils/isNode.js.map +0 -1
  696. package/lib/utils/isNodePath.js +0 -10
  697. package/lib/utils/isNodePath.js.map +0 -1
  698. package/lib/utils/isNotNull.js +0 -10
  699. package/lib/utils/isNotNull.js.map +0 -1
  700. package/lib/utils/isRemoved.js +0 -52
  701. package/lib/utils/isRemoved.js.map +0 -1
  702. package/lib/utils/isRequire.js +0 -18
  703. package/lib/utils/isRequire.js.map +0 -1
  704. package/lib/utils/isSerializable.js +0 -19
  705. package/lib/utils/isSerializable.js.map +0 -1
  706. package/lib/utils/isTypedNode.js +0 -13
  707. package/lib/utils/isTypedNode.js.map +0 -1
  708. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  709. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  710. package/lib/utils/parseRequest.js +0 -37
  711. package/lib/utils/parseRequest.js.map +0 -1
  712. package/lib/utils/peek.js +0 -9
  713. package/lib/utils/peek.js.map +0 -1
  714. package/lib/utils/removeDangerousCode.js +0 -284
  715. package/lib/utils/removeDangerousCode.js.map +0 -1
  716. package/lib/utils/replaceImportMetaEnv.js +0 -50
  717. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  718. package/lib/utils/scopeHelpers.js +0 -557
  719. package/lib/utils/scopeHelpers.js.map +0 -1
  720. package/lib/utils/traversalCache.js +0 -31
  721. package/lib/utils/traversalCache.js.map +0 -1
  722. package/lib/utils/unwrapExpression.js +0 -25
  723. package/lib/utils/unwrapExpression.js.map +0 -1
  724. package/lib/utils/unwrapSequence.js +0 -20
  725. package/lib/utils/unwrapSequence.js.map +0 -1
  726. package/lib/utils/valueToLiteral.js +0 -65
  727. package/lib/utils/valueToLiteral.js.map +0 -1
  728. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  729. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  730. package/lib/vm/createVmContext.js +0 -166
  731. package/lib/vm/createVmContext.js.map +0 -1
  732. package/lib/vm/process.js +0 -38
  733. package/lib/vm/process.js.map +0 -1
  734. package/types/babel.d.ts +0 -2
  735. package/types/babel.js +0 -2
  736. package/types/options/buildOptions.d.ts +0 -6
  737. package/types/options/buildOptions.js +0 -178
  738. package/types/options/loadBabelOptions.d.ts +0 -3
  739. package/types/options/loadBabelOptions.js +0 -26
  740. package/types/plugins/babel-transform.d.ts +0 -4
  741. package/types/plugins/babel-transform.js +0 -49
  742. package/types/plugins/collector.d.ts +0 -23
  743. package/types/plugins/collector.js +0 -62
  744. package/types/plugins/dynamic-import.d.ts +0 -6
  745. package/types/plugins/dynamic-import.js +0 -60
  746. package/types/plugins/preeval.d.ts +0 -16
  747. package/types/plugins/preeval.js +0 -69
  748. package/types/plugins/shaker.d.ts +0 -14
  749. package/types/plugins/shaker.js +0 -724
  750. package/types/transform/generators/explodeReexports.d.ts +0 -7
  751. package/types/transform/generators/explodeReexports.js +0 -65
  752. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  753. package/types/utils/addIdentifierToWywPreval.js +0 -74
  754. package/types/utils/collectExportsAndImports.d.ts +0 -31
  755. package/types/utils/collectExportsAndImports.js +0 -1147
  756. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  757. package/types/utils/collectTemplateDependencies.js +0 -220
  758. package/types/utils/createId.d.ts +0 -2
  759. package/types/utils/createId.js +0 -9
  760. package/types/utils/findIdentifiers.d.ts +0 -6
  761. package/types/utils/findIdentifiers.js +0 -67
  762. package/types/utils/getConstantStringValue.d.ts +0 -2
  763. package/types/utils/getConstantStringValue.js +0 -94
  764. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  765. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  766. package/types/utils/getScope.d.ts +0 -2
  767. package/types/utils/getScope.js +0 -10
  768. package/types/utils/getSource.d.ts +0 -2
  769. package/types/utils/getSource.js +0 -22
  770. package/types/utils/getTagProcessor.d.ts +0 -13
  771. package/types/utils/getTagProcessor.js +0 -411
  772. package/types/utils/isExports.d.ts +0 -6
  773. package/types/utils/isExports.js +0 -19
  774. package/types/utils/isGlobal.d.ts +0 -2
  775. package/types/utils/isGlobal.js +0 -9
  776. package/types/utils/isNodePath.d.ts +0 -3
  777. package/types/utils/isNodePath.js +0 -6
  778. package/types/utils/isRemoved.d.ts +0 -5
  779. package/types/utils/isRemoved.js +0 -41
  780. package/types/utils/isRequire.d.ts +0 -6
  781. package/types/utils/isRequire.js +0 -14
  782. package/types/utils/isTypedNode.d.ts +0 -5
  783. package/types/utils/isTypedNode.js +0 -9
  784. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  785. package/types/utils/isUnnecessaryReactCall.js +0 -75
  786. package/types/utils/removeDangerousCode.d.ts +0 -4
  787. package/types/utils/removeDangerousCode.js +0 -326
  788. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  789. package/types/utils/replaceImportMetaEnv.js +0 -39
  790. package/types/utils/scopeHelpers.d.ts +0 -12
  791. package/types/utils/scopeHelpers.js +0 -580
  792. package/types/utils/traversalCache.d.ts +0 -4
  793. package/types/utils/traversalCache.js +0 -27
  794. package/types/utils/unwrapExpression.d.ts +0 -2
  795. package/types/utils/unwrapExpression.js +0 -57
  796. package/types/utils/unwrapSequence.d.ts +0 -8
  797. package/types/utils/unwrapSequence.js +0 -16
  798. package/types/utils/valueToLiteral.d.ts +0 -3
  799. package/types/utils/valueToLiteral.js +0 -63
  800. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  801. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,691 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = shakerPlugin;
7
- var _path = _interopRequireDefault(require("path"));
8
- var _shared = require("@wyw-in-js/shared");
9
- var _collectExportsAndImports = require("../utils/collectExportsAndImports");
10
- var _getFileIdx = require("../utils/getFileIdx");
11
- var _isRemoved = require("../utils/isRemoved");
12
- var _scopeHelpers = require("../utils/scopeHelpers");
13
- var _traversalCache = require("../utils/traversalCache");
14
- var _parseRequest = require("../utils/parseRequest");
15
- var _importOverrides = require("../utils/importOverrides");
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- const warnedDynamicImportFiles = new Set();
18
- function getNonParamBinding(exportPath, name) {
19
- var _exportPath$scope$par, _exportPath$scope$par2;
20
- const binding = exportPath.scope.getBinding(name);
21
- if (binding && binding.kind !== 'param') {
22
- return binding;
23
- }
24
-
25
- // When `exportPath` is inside a function scope, a parameter can shadow
26
- // the actual export binding (e.g. `export function fallback(fallback) {}`).
27
- // In such cases we need the binding from the declaration scope.
28
- return (_exportPath$scope$par = (_exportPath$scope$par2 = exportPath.scope.parent) === null || _exportPath$scope$par2 === void 0 ? void 0 : _exportPath$scope$par2.getBinding(name)) !== null && _exportPath$scope$par !== void 0 ? _exportPath$scope$par : binding;
29
- }
30
- function getBindingForExport(exportPath) {
31
- if (exportPath.isIdentifier()) {
32
- return getNonParamBinding(exportPath, exportPath.node.name);
33
- }
34
- const variableDeclarator = exportPath.findParent(p => p.isVariableDeclarator());
35
- if (variableDeclarator) {
36
- const id = variableDeclarator.get('id');
37
- if (id.isIdentifier()) {
38
- return variableDeclarator.scope.getBinding(id.node.name);
39
- }
40
- }
41
- if (exportPath.isAssignmentExpression()) {
42
- const left = exportPath.get('left');
43
- if (left.isIdentifier()) {
44
- return getNonParamBinding(exportPath, left.node.name);
45
- }
46
- }
47
- if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {
48
- const {
49
- id
50
- } = exportPath.node;
51
- if (!id) {
52
- // `export default function() {}` / `export default class {}` (anonymous)
53
- return undefined;
54
- }
55
- return getNonParamBinding(exportPath, id.name);
56
- }
57
- if (exportPath.isTSEnumDeclaration()) {
58
- return getNonParamBinding(exportPath, exportPath.node.id.name);
59
- }
60
- return undefined;
61
- }
62
- const withoutRemoved = items => items.filter(({
63
- local
64
- }) => !(0, _isRemoved.isRemoved)(local));
65
- function rearrangeExports({
66
- types: t
67
- }, root, exportRefs, exports) {
68
- const rearranged = {
69
- ...exports
70
- };
71
- const rootScope = root.scope;
72
- exportRefs.forEach((refs, name) => {
73
- var _constantViolations;
74
- if (refs.length <= 1) {
75
- if (refs.length === 1) {
76
- // Maybe exports is assigned to another variable?
77
- const declarator = refs[0].findParent(p => p.isVariableDeclarator());
78
- if (!declarator) {
79
- return;
80
- }
81
- } else {
82
- return;
83
- }
84
- }
85
- const uid = rootScope.generateUid(name);
86
- // Define variable in the beginning
87
- const [declaration] = root.unshiftContainer('body', [t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))])]);
88
- rootScope.registerDeclaration(declaration);
89
- const constantViolations = [];
90
- // Replace every reference with defined variable
91
- refs.forEach(ref => {
92
- const [replaced] = ref.replaceWith(t.identifier(uid));
93
- if (replaced.isBindingIdentifier()) {
94
- constantViolations.push(replaced);
95
- } else {
96
- (0, _scopeHelpers.reference)(replaced);
97
- }
98
- });
99
- constantViolations.forEach(id => {
100
- rootScope.registerConstantViolation(id);
101
- });
102
- const assigmentToExport = t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.identifier('exports'), t.identifier(name)), t.identifier(uid)));
103
-
104
- // export.foo = _foo will be inserted either after the last _foo assigment or in the end of the file
105
- const body = root.get('body');
106
- const lastViolation = (_constantViolations = constantViolations[constantViolations.length - 1]) !== null && _constantViolations !== void 0 ? _constantViolations : body[body.length - 1];
107
- const pathInRoot = root.get('body').find(n => lastViolation.isDescendant(n));
108
- const [pushed] = pathInRoot.insertAfter(assigmentToExport);
109
- const local = pushed.get('expression.right');
110
- (0, _scopeHelpers.reference)(local);
111
- rearranged[name] = local;
112
- });
113
- return rearranged;
114
- }
115
- const getPropertyAssignmentStatement = (ref, bindingName) => {
116
- const assignment = ref.findParent(parent => parent.isAssignmentExpression());
117
- if (!(assignment !== null && assignment !== void 0 && assignment.isAssignmentExpression())) return null;
118
- const left = assignment.get('left');
119
- if (!left.isMemberExpression()) return null;
120
- const object = left.get('object');
121
- if (!object.isIdentifier({
122
- name: bindingName
123
- })) return null;
124
- const statement = assignment.parentPath;
125
- return statement !== null && statement !== void 0 && statement.isExpressionStatement() ? statement : null;
126
- };
127
- const isWithinAliveExport = (ref, aliveExports) => [...aliveExports].some(alive => alive === ref || alive.isAncestor(ref));
128
- function getExportPathsForVariableDeclaration(declaration, exports) {
129
- const exportPaths = [];
130
- declaration.get('declarations').forEach(declarator => {
131
- Object.keys(declarator.getOuterBindingIdentifiers()).forEach(name => {
132
- const exportPath = exports[name];
133
- if (exportPath && !exportPaths.includes(exportPath)) {
134
- exportPaths.push(exportPath);
135
- }
136
- });
137
- });
138
- return exportPaths;
139
- }
140
- function getDeclaratorExportLiveness(declarator, exports, aliveExports) {
141
- const bindingNames = Object.keys(declarator.getOuterBindingIdentifiers());
142
- if (bindingNames.length === 0) {
143
- return null;
144
- }
145
- let liveness = null;
146
- for (const name of bindingNames) {
147
- const exportPath = exports[name];
148
- if (!exportPath) {
149
- return null;
150
- }
151
- const isAlive = aliveExports.has(exportPath);
152
- if (liveness === null) {
153
- liveness = isAlive;
154
- } else if (liveness !== isAlive) {
155
- return null;
156
- }
157
- }
158
- return liveness;
159
- }
160
- function hasRuntimeReferencesToEnum(path) {
161
- if (!path.isTSEnumDeclaration()) {
162
- return false;
163
- }
164
- const enumId = path.get('id');
165
- const bindingName = enumId.node.name;
166
- const program = path.scope.getProgramParent().path;
167
- let hasReference = false;
168
- program.traverse({
169
- Identifier(identifier) {
170
- if (hasReference || identifier.node.name !== bindingName) {
171
- return;
172
- }
173
- if (identifier.findParent(ancestor => ancestor === path)) {
174
- return;
175
- }
176
- if (identifier.find(ancestor => ancestor.isTSType() || ancestor.isFlowType())) {
177
- return;
178
- }
179
- if (!identifier.isReferencedIdentifier()) {
180
- return;
181
- }
182
- const localBinding = identifier.scope.getBinding(bindingName);
183
- if (localBinding && localBinding.path !== enumId) {
184
- return;
185
- }
186
- hasReference = true;
187
- identifier.stop();
188
- }
189
- });
190
- return hasReference;
191
- }
192
- function stripExportKeepDeclaration(path, exports, aliveExports, t) {
193
- const exportDeclaration = path.findParent(p => p.isExportNamedDeclaration());
194
- if (!exportDeclaration) return null;
195
- const declaration = exportDeclaration.get('declaration');
196
- if (!declaration.node) return null;
197
- if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration() || declaration.isTSEnumDeclaration()) {
198
- exportDeclaration.replaceWith(t.cloneNode(declaration.node, true));
199
- return [path];
200
- }
201
- if (declaration.isVariableDeclaration()) {
202
- const declarators = declaration.get('declarations');
203
- const staleExportPaths = getExportPathsForVariableDeclaration(declaration, exports);
204
- if (declarators.length === 1) {
205
- exportDeclaration.replaceWith(t.cloneNode(declaration.node, true));
206
- return staleExportPaths.length > 0 ? staleExportPaths : [path];
207
- }
208
- const segments = [];
209
- for (const declarator of declarators) {
210
- const isAlive = getDeclaratorExportLiveness(declarator, exports, aliveExports);
211
- if (isAlive === null) {
212
- return null;
213
- }
214
- const clonedDeclarator = t.cloneNode(declarator.node, true);
215
- const currentSegment = segments[segments.length - 1];
216
- if (currentSegment && currentSegment.alive === isAlive) {
217
- currentSegment.declarators.push(clonedDeclarator);
218
- } else {
219
- segments.push({
220
- alive: isAlive,
221
- declarators: [clonedDeclarator]
222
- });
223
- }
224
- }
225
- exportDeclaration.replaceWithMultiple(segments.map(({
226
- alive,
227
- declarators: groupedDeclarators
228
- }) => {
229
- const groupedDeclaration = t.variableDeclaration(declaration.node.kind, groupedDeclarators);
230
- return alive ? t.exportNamedDeclaration(groupedDeclaration, []) : groupedDeclaration;
231
- }));
232
- return staleExportPaths.length > 0 ? staleExportPaths : [path];
233
- }
234
- return null;
235
- }
236
- function shakerPlugin(babel, {
237
- keepSideEffects = false,
238
- ifUnknownExport = 'skip-shaking',
239
- importOverrides,
240
- onlyExports,
241
- root
242
- }) {
243
- const shakerLogger = _shared.logger.extend('shaker');
244
- return {
245
- name: '@wyw-in-js/transform/shaker',
246
- pre(file) {
247
- this.filename = file.opts.filename;
248
- const log = shakerLogger.extend((0, _getFileIdx.getFileIdx)(this.filename));
249
- log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);
250
- const onlyExportsSet = new Set(onlyExports);
251
- const shouldKeepOverride = override => !!override && ('mock' in override || 'noShake' in override);
252
- const hasImportOverride = (() => {
253
- if (!importOverrides || Object.keys(importOverrides).length === 0) {
254
- return () => false;
255
- }
256
- const cache = new Map();
257
- return source => {
258
- var _getImportOverride;
259
- const cached = cache.get(source);
260
- if (cached !== undefined) {
261
- return cached;
262
- }
263
- const strippedSource = (0, _parseRequest.stripQueryAndHash)(source);
264
- const direct = (_getImportOverride = (0, _importOverrides.getImportOverride)(importOverrides, source)) !== null && _getImportOverride !== void 0 ? _getImportOverride : strippedSource !== source ? (0, _importOverrides.getImportOverride)(importOverrides, strippedSource) : null;
265
- if (direct) {
266
- const result = shouldKeepOverride(direct);
267
- cache.set(source, result);
268
- return result;
269
- }
270
- const isFileImport = strippedSource.startsWith('.') || _path.default.isAbsolute(strippedSource);
271
- if (!isFileImport) {
272
- cache.set(source, false);
273
- return false;
274
- }
275
- try {
276
- const resolved = (0, _shared.syncResolve)(strippedSource, this.filename, []);
277
- const {
278
- key
279
- } = (0, _importOverrides.toImportKey)({
280
- source: strippedSource,
281
- resolved,
282
- root
283
- });
284
- const override = (0, _importOverrides.getImportOverride)(importOverrides, key);
285
- const result = shouldKeepOverride(override);
286
- cache.set(source, result);
287
- return result;
288
- } catch {
289
- cache.set(source, false);
290
- return false;
291
- }
292
- };
293
- })();
294
- const collected = (0, _collectExportsAndImports.collectExportsAndImports)(file.path);
295
- const {
296
- imports
297
- } = collected;
298
- const sideEffectImports = imports.filter(_collectExportsAndImports.sideEffectImport);
299
- log('import-and-exports', [`imports: ${imports.length} (side-effects: ${sideEffectImports.length})`, `exports: ${Object.values(collected.exports).length}`, `reexports: ${collected.reexports.length}`].join(', '));
300
-
301
- // We cannot just throw out exports if they are referred in the code
302
- // Let's dome some replacements
303
- const exports = rearrangeExports(babel, file.path, collected.exportRefs, collected.exports);
304
- Object.values(exports).forEach(local => {
305
- if (local.isAssignmentExpression()) {
306
- const left = local.get('left');
307
- if (left.isIdentifier()) {
308
- // For some reason babel does not mark id in AssignmentExpression as a reference
309
- // So we need to do it manually
310
- (0, _scopeHelpers.reference)(left, left, true);
311
- }
312
- }
313
- });
314
- const hasWywPreval = exports.__wywPreval !== undefined;
315
- const hasDefault = exports.default !== undefined;
316
-
317
- // If __wywPreval is not exported, we can remove it from onlyExports
318
- if (onlyExportsSet.has('__wywPreval') && !hasWywPreval) {
319
- onlyExportsSet.delete('__wywPreval');
320
- }
321
- if (onlyExportsSet.size === 0) {
322
- // Fast-lane: if there are no exports to keep, we can just shake out the whole file
323
- this.imports = [];
324
- this.exports = {};
325
- this.reexports = [];
326
- this.deadExports = Object.keys(exports);
327
- file.path.get('body').forEach(p => {
328
- p.remove();
329
- });
330
- return;
331
- }
332
- const importedAsSideEffect = onlyExportsSet.has('side-effect');
333
- onlyExportsSet.delete('side-effect');
334
-
335
- // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be
336
- // shaken as they will break interopRequireDefault babel helper
337
- // See example in shaker-plugin.test.ts
338
- // Real-world example was found in preact/compat npm package
339
- if (onlyExportsSet.has('default') && hasDefault && !collected.isEsModule) {
340
- this.imports = imports;
341
- this.exports = exports;
342
- this.reexports = collected.reexports;
343
- this.deadExports = [];
344
- return;
345
- }
346
- if (!onlyExportsSet.has('*')) {
347
- // __esModule should be kept alive
348
- onlyExportsSet.add('__esModule');
349
- const aliveExports = new Set();
350
- const importNames = imports.map(({
351
- imported
352
- }) => imported);
353
- Object.entries(exports).forEach(([exported, local]) => {
354
- if (onlyExportsSet.has(exported)) {
355
- aliveExports.add(local);
356
- return;
357
- }
358
- const binding = local.isIdentifier() && local.scope.getBinding(local.node.name);
359
- if (binding && (binding.path.isImportSpecifier() || binding.path.isImportDefaultSpecifier() || binding.path.isImportNamespaceSpecifier()) && importNames.includes(local.node.name || '')) {
360
- aliveExports.add(local);
361
- return;
362
- }
363
- if ([...aliveExports].some(alive => alive === local)) {
364
- // It's possible to export multiple values from a single variable initializer, e.g
365
- // export const { foo, bar } = baz();
366
- // We need to treat all of them as used if any of them are used, since otherwise
367
- // we'll attempt to delete the baz() call
368
- aliveExports.add(local);
369
- }
370
- });
371
- collected.reexports.forEach(exp => {
372
- if (onlyExportsSet.has(exp.exported)) {
373
- aliveExports.add(exp.local);
374
- }
375
- });
376
- const exportToPath = new Map();
377
- Object.entries(exports).forEach(([exported, local]) => {
378
- exportToPath.set(exported, local);
379
- });
380
- collected.reexports.forEach(exp => {
381
- exportToPath.set(exp.exported, exp.local);
382
- });
383
- const notFoundExports = [...onlyExportsSet].filter(exp => exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)));
384
- exportToPath.clear();
385
- const isAllExportsFound = notFoundExports.length === 0;
386
- if (!isAllExportsFound && ifUnknownExport !== 'ignore') {
387
- if (ifUnknownExport === 'error') {
388
- throw new Error(`Unknown export(s) requested: ${onlyExports.join(',')}`);
389
- }
390
- if (ifUnknownExport === 'reexport-all') {
391
- // If there are unknown exports, we have keep alive all re-exports.
392
- if (exports['*'] !== undefined) {
393
- aliveExports.add(exports['*']);
394
- }
395
- collected.reexports.forEach(exp => {
396
- if (exp.exported === '*') {
397
- aliveExports.add(exp.local);
398
- }
399
- });
400
- }
401
- if (ifUnknownExport === 'skip-shaking') {
402
- this.imports = imports;
403
- this.exports = exports;
404
- this.reexports = collected.reexports;
405
- this.deadExports = [];
406
- return;
407
- }
408
- }
409
- const forDeleting = [...Object.values(exports), ...collected.reexports.map(i => i.local)].filter(exp => !aliveExports.has(exp));
410
- const forDeletingSet = new Set(forDeleting);
411
- const queueForDeleting = path => {
412
- if ((0, _isRemoved.isRemoved)(path) || forDeletingSet.has(path)) {
413
- return false;
414
- }
415
- forDeletingSet.add(path);
416
- forDeleting.push(path);
417
- return true;
418
- };
419
- if (!keepSideEffects && !importedAsSideEffect) {
420
- // Drop side-effect imports for eval-only builds unless they were explicitly requested.
421
- // This prevents evaluating unrelated runtime code (e.g. Radix) during __wywPreval eval.
422
- sideEffectImports.forEach(i => {
423
- if (hasImportOverride(i.source)) {
424
- return;
425
- }
426
- queueForDeleting(i.local);
427
- });
428
- }
429
- const deleted = new Set();
430
- let dereferenced = [];
431
- let changed = true;
432
- while (changed) {
433
- changed = false;
434
- // eslint-disable-next-line no-restricted-syntax
435
- for (const path of forDeleting) {
436
- if (deleted.has(path)) {
437
- // eslint-disable-next-line no-continue
438
- continue;
439
- }
440
- const binding = getBindingForExport(path);
441
- const action = (0, _scopeHelpers.findActionForNode)(path);
442
- const parent = action === null || action === void 0 ? void 0 : action[1];
443
- const outerReferences = ((binding === null || binding === void 0 ? void 0 : binding.referencePaths) || []).filter(ref => {
444
- if (ref === parent || parent !== null && parent !== void 0 && parent.isAncestor(ref)) {
445
- return false;
446
- }
447
- return !forDeleting.some(candidate => candidate !== path && !(0, _isRemoved.isRemoved)(candidate) && (candidate === ref || candidate.isAncestor(ref)));
448
- });
449
- const bindingName = binding === null || binding === void 0 ? void 0 : binding.identifier.name;
450
- const removableAssignmentStatements = new Set();
451
- const removableOuterReferences = outerReferences.filter(ref => {
452
- if (!bindingName) return false;
453
- const statement = getPropertyAssignmentStatement(ref, bindingName);
454
- if (!statement || isWithinAliveExport(statement, aliveExports)) {
455
- return false;
456
- }
457
- removableAssignmentStatements.add(statement);
458
- return true;
459
- });
460
- const blockingReferences = outerReferences.filter(ref => !removableOuterReferences.includes(ref));
461
- if (blockingReferences.length > 0 && path.isIdentifier()) {
462
- // Temporary deref it in order to simplify further checks.
463
- (0, _scopeHelpers.dereference)(path);
464
- dereferenced.push(path);
465
- }
466
- const strippedEnum = !deleted.has(path) && hasRuntimeReferencesToEnum(path) ? stripExportKeepDeclaration(path, exports, aliveExports, babel.types) : null;
467
- if (strippedEnum) {
468
- strippedEnum.forEach(stalePath => {
469
- deleted.add(stalePath);
470
- });
471
- changed = true;
472
- // eslint-disable-next-line no-continue
473
- continue;
474
- }
475
- const strippedWithBlocking = !deleted.has(path) && binding && blockingReferences.length > 0 ? stripExportKeepDeclaration(path, exports, aliveExports, babel.types) : null;
476
- if (strippedWithBlocking) {
477
- strippedWithBlocking.forEach(stalePath => {
478
- deleted.add(stalePath);
479
- });
480
- changed = true;
481
- // eslint-disable-next-line no-continue
482
- continue;
483
- }
484
- if (!deleted.has(path) && (!binding || blockingReferences.length === 0)) {
485
- // For variable declaration exports, `path` is the init expression
486
- // (not the Identifier). Other forDeleting candidates whose init
487
- // expressions are ancestors of references to this binding can
488
- // incorrectly filter them out of outerReferences. Those candidates
489
- // may later survive via stripExportKeepDeclaration, leaving a
490
- // dangling reference. Strip the export keyword but keep the
491
- // declaration so the unreferenced sweep removes it only when dead.
492
- // This only applies to expression paths (variable init), not
493
- // Identifiers (function/class declarations) which can't be
494
- // ancestors of external references.
495
- const strippedWithoutBlocking = binding && !path.isIdentifier() ? stripExportKeepDeclaration(path, exports, aliveExports, babel.types) : null;
496
- if (strippedWithoutBlocking) {
497
- strippedWithoutBlocking.forEach(stalePath => {
498
- deleted.add(stalePath);
499
- });
500
- if (removableAssignmentStatements.size > 0) {
501
- for (const statement of removableAssignmentStatements) {
502
- if (queueForDeleting(statement)) {
503
- changed = true;
504
- }
505
- }
506
- }
507
- changed = true;
508
- // eslint-disable-next-line no-continue
509
- continue;
510
- }
511
- if (removableAssignmentStatements.size > 0) {
512
- for (const statement of removableAssignmentStatements) {
513
- if (queueForDeleting(statement)) {
514
- changed = true;
515
- }
516
- }
517
- }
518
- if (action) {
519
- (0, _scopeHelpers.applyAction)(action);
520
- } else {
521
- (0, _scopeHelpers.removeWithRelated)([path]);
522
- }
523
- deleted.add(path);
524
- changed = true;
525
- }
526
- }
527
- dereferenced.forEach(path => {
528
- // If path is still alive, we need to reference it back
529
- if (!(0, _isRemoved.isRemoved)(path)) {
530
- (0, _scopeHelpers.reference)(path);
531
- }
532
- });
533
- dereferenced = [];
534
-
535
- // stripExportKeepDeclaration replaces ExportNamedDeclaration with
536
- // its declaration, creating new AST nodes. The old scope bindings
537
- // become stale (pointing at disconnected paths). Recrawl so
538
- // getAllBindings() returns fresh bindings with correct .referenced.
539
- file.scope.crawl();
540
-
541
- // Find and mark for deleting all unreferenced variables
542
- const unreferenced = Object.values(file.scope.getAllBindings()).filter(i => !i.referenced);
543
- for (const binding of unreferenced) {
544
- if (binding.path.isVariableDeclarator()) {
545
- const id = binding.path.get('id');
546
- // Skip destructured patterns — removing the declarator would kill
547
- // sibling bindings that may still be referenced (e.g. export {B}
548
- // from `const [A, B] = createContext(...)` when only A is dead).
549
- if (!id.isArrayPattern() && !id.isObjectPattern() && !(0, _isRemoved.isRemoved)(id) && !forDeletingSet.has(id)) {
550
- // Drop dead variable declarations, e.g. `const foo = make();` when `foo` is no longer referenced.
551
- for (const violation of binding.constantViolations) {
552
- if (queueForDeleting(violation)) {
553
- changed = true;
554
- }
555
- }
556
- if (queueForDeleting(id)) {
557
- changed = true;
558
- }
559
- }
560
- }
561
-
562
- // Drop import specifiers whose bindings lost all references during shaking
563
- // (e.g. when we keep only __wywPreval and the rest of the module is removed).
564
- if ((binding.path.isImportSpecifier() || binding.path.isImportDefaultSpecifier() || binding.path.isImportNamespaceSpecifier()) && !(0, _isRemoved.isRemoved)(binding.path) && !forDeletingSet.has(binding.path)) {
565
- if (queueForDeleting(binding.path)) {
566
- changed = true;
567
- }
568
- }
569
- }
570
- }
571
- }
572
- this.imports = withoutRemoved(imports);
573
- this.exports = {};
574
- this.deadExports = [];
575
- Object.entries(exports).forEach(([exported, local]) => {
576
- if ((0, _isRemoved.isRemoved)(local)) {
577
- this.deadExports.push(exported);
578
- } else {
579
- this.exports[exported] = local;
580
- }
581
- });
582
- this.reexports = withoutRemoved(collected.reexports);
583
- },
584
- visitor: {},
585
- post(file) {
586
- const log = shakerLogger.extend((0, _getFileIdx.getFileIdx)(file.opts.filename));
587
- const dynamicImportWarningsEnabled = Boolean(process.env.WYW_WARN_DYNAMIC_IMPORTS) && process.env.WYW_WARN_DYNAMIC_IMPORTS !== '0' && process.env.WYW_WARN_DYNAMIC_IMPORTS !== 'false';
588
- const filename = file.opts.filename;
589
- if (dynamicImportWarningsEnabled && !warnedDynamicImportFiles.has(filename)) {
590
- const dynamicImports = this.imports.filter(imp => !(0, _collectExportsAndImports.sideEffectImport)(imp) && imp.type === 'dynamic');
591
- if (dynamicImports.length > 0) {
592
- const sources = Array.from(new Set(dynamicImports.map(imp => imp.source))).sort();
593
- const sourcesToWarn = (() => {
594
- if (!importOverrides || Object.keys(importOverrides).length === 0) {
595
- return sources;
596
- }
597
- const shouldWarn = source => {
598
- var _getImportOverride2;
599
- const strippedSource = (0, _parseRequest.stripQueryAndHash)(source);
600
- const direct = (_getImportOverride2 = (0, _importOverrides.getImportOverride)(importOverrides, source)) !== null && _getImportOverride2 !== void 0 ? _getImportOverride2 : strippedSource !== source ? (0, _importOverrides.getImportOverride)(importOverrides, strippedSource) : undefined;
601
- if (direct !== undefined) {
602
- return false;
603
- }
604
- const isFileImport = strippedSource.startsWith('.') || _path.default.isAbsolute(strippedSource);
605
- if (!isFileImport) {
606
- return true;
607
- }
608
- try {
609
- const resolved = (0, _shared.syncResolve)(strippedSource, filename, []);
610
- const importKey = (0, _importOverrides.toImportKey)({
611
- source: strippedSource,
612
- resolved,
613
- root
614
- }).key;
615
- return (0, _importOverrides.getImportOverride)(importOverrides, importKey) === undefined;
616
- } catch {
617
- return true;
618
- }
619
- };
620
- return sources.filter(shouldWarn);
621
- })();
622
- if (sourcesToWarn.length > 0) {
623
- warnedDynamicImportFiles.add(filename);
624
- const overrideKeys = sourcesToWarn.map(source => {
625
- const strippedSource = (0, _parseRequest.stripQueryAndHash)(source);
626
- const isFileImport = strippedSource.startsWith('.') || _path.default.isAbsolute(strippedSource);
627
- if (!isFileImport) {
628
- return {
629
- source,
630
- key: source
631
- };
632
- }
633
- try {
634
- const resolved = (0, _shared.syncResolve)(strippedSource, filename, []);
635
- return {
636
- source,
637
- key: (0, _importOverrides.toImportKey)({
638
- source: strippedSource,
639
- resolved,
640
- root
641
- }).key
642
- };
643
- } catch {
644
- return {
645
- source,
646
- key: strippedSource
647
- };
648
- }
649
- }).filter((item, index, array) => {
650
- const firstIndexForKey = array.findIndex(i => i.key === item.key);
651
- return firstIndexForKey === index;
652
- });
653
- const warning = [`[wyw-in-js] Dynamic imports reached prepare stage`, ``, `file: ${filename}`, `count: ${sourcesToWarn.length}`, `sources:`, ...sourcesToWarn.map(source => ` - ${source}`), ``, `note: these imports will be resolved/processed even if they are lazy (e.g. React.lazy(() => import(...)))`, ``, `tip: if the imported module is runtime-only or heavy, mock it during evaluation via importOverrides:`, ` importOverrides: {`, ...overrideKeys.map(({
654
- key,
655
- source
656
- }) => ` '${key}': { mock: './path/to/mock' }, // from ${source}`), ` }`, ``, `note: importOverrides affects only build-time evaluation (it does not change your bundler runtime behavior)`].join('\n');
657
- // eslint-disable-next-line no-console
658
- console.warn(warning);
659
- }
660
- }
661
- }
662
- const processedImports = new Set();
663
- const imports = new Map();
664
- const addImport = ({
665
- imported,
666
- source
667
- }) => {
668
- if (processedImports.has(`${source}:${imported}`)) {
669
- return;
670
- }
671
- if (!imports.has(source)) {
672
- imports.set(source, []);
673
- }
674
- if (imported) {
675
- imports.get(source).push(imported);
676
- }
677
- processedImports.add(`${source}:${imported}`);
678
- };
679
- this.imports.forEach(addImport);
680
- this.reexports.forEach(addImport);
681
- log('end', `remaining imports: %O`, imports);
682
-
683
- // eslint-disable-next-line no-param-reassign
684
- file.metadata.wywEvaluator = {
685
- imports
686
- };
687
- (0, _traversalCache.invalidateTraversalCache)(file.path);
688
- }
689
- };
690
- }
691
- //# sourceMappingURL=shaker.js.map