@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
@@ -1,580 +0,0 @@
1
- "use strict";
2
- /* eslint-disable no-restricted-syntax */
3
- /* eslint @typescript-eslint/no-use-before-define: ["error", { "functions": false }] */
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.reference = reference;
6
- exports.dereference = dereference;
7
- exports.referenceAll = referenceAll;
8
- exports.findActionForNode = findActionForNode;
9
- exports.applyAction = applyAction;
10
- exports.mutate = mutate;
11
- exports.removeWithRelated = removeWithRelated;
12
- const types_1 = require("@babel/types");
13
- const findIdentifiers_1 = require("./findIdentifiers");
14
- const getScope_1 = require("./getScope");
15
- const isNotNull_1 = require("./isNotNull");
16
- const isRemoved_1 = require("./isRemoved");
17
- function validateField(node, key, val, field) {
18
- if (!(field != null && field.validate))
19
- return true;
20
- if (field.optional && val == null)
21
- return true;
22
- try {
23
- field.validate(node, key, val);
24
- return true;
25
- }
26
- catch {
27
- return false;
28
- }
29
- }
30
- function getBinding(path) {
31
- const binding = (0, getScope_1.getScope)(path).getBinding(path.node.name);
32
- if (!binding) {
33
- return undefined;
34
- }
35
- return binding;
36
- }
37
- function reference(path, referencePath = path, force = false) {
38
- if (!force && !path.isReferencedIdentifier())
39
- return;
40
- const binding = getBinding(path);
41
- if (!binding)
42
- return;
43
- if (binding.referencePaths.includes(referencePath)) {
44
- return;
45
- }
46
- binding.referenced = true;
47
- binding.referencePaths.push(referencePath ?? path);
48
- binding.references = binding.referencePaths.length;
49
- }
50
- function isReferenced(binding) {
51
- const { kind, referenced, referencePaths, path } = binding;
52
- if (path.isFunctionExpression() &&
53
- path.key === 'init' &&
54
- path.parentPath.isVariableDeclarator()) {
55
- // It is a function expression in a variable declarator
56
- const id = path.parentPath.get('id');
57
- if (id.isIdentifier()) {
58
- const idBinding = getBinding(id);
59
- return idBinding ? isReferenced(idBinding) : true;
60
- }
61
- return true;
62
- }
63
- if (!referenced) {
64
- return false;
65
- }
66
- // If it's a param binding, we can't just remove it
67
- // because it brakes the function signature. Keep it alive for now.
68
- if (kind === 'param') {
69
- return true;
70
- }
71
- // If all remaining references are in TS/Flow types, binding is unreferenced
72
- return (referencePaths.length > 0 ||
73
- referencePaths.every((i) => i.find((ancestor) => ancestor.isTSType() || ancestor.isFlowType())));
74
- }
75
- function isReferencedConstantViolation(path, binding) {
76
- if (path.find((p) => p === binding.path)) {
77
- // function a(flag) { return (a = function(flag) { flag ? 1 : 2 }) }
78
- // ^ Looks crazy, yeh? Welcome to the wonderful world of transpilers!
79
- // `a = …` here isn't a reference.
80
- return false;
81
- }
82
- if (!path.isReferenced()) {
83
- return false;
84
- }
85
- if (path.isAssignmentExpression() &&
86
- path.parentPath.isExpressionStatement()) {
87
- // A root assignment without a parent expression statement is not a reference
88
- return false;
89
- }
90
- return true;
91
- }
92
- function dereference(path) {
93
- const binding = getBinding(path);
94
- if (!binding)
95
- return null;
96
- const isReference = binding.referencePaths.includes(path);
97
- let referencesInConstantViolations = binding.constantViolations.filter((i) => isReferencedConstantViolation(i, binding));
98
- const isConstantViolation = referencesInConstantViolations.includes(path);
99
- if (!isReference && !isConstantViolation) {
100
- return null;
101
- }
102
- if (isReference) {
103
- binding.referencePaths = binding.referencePaths.filter((i) => i !== path);
104
- binding.references -= 1;
105
- }
106
- else {
107
- referencesInConstantViolations = referencesInConstantViolations.filter((i) => i !== path);
108
- }
109
- const nonTypeReferences = binding.referencePaths.filter(findIdentifiers_1.nonType);
110
- binding.referenced =
111
- nonTypeReferences.length + referencesInConstantViolations.length > 0;
112
- return binding;
113
- }
114
- function dereferenceAll(path) {
115
- return (0, findIdentifiers_1.findIdentifiers)([path])
116
- .map((identifierPath) => dereference(identifierPath))
117
- .filter(isNotNull_1.isNotNull);
118
- }
119
- function referenceAll(path) {
120
- (0, findIdentifiers_1.findIdentifiers)([path]).forEach((identifierPath) => reference(identifierPath));
121
- }
122
- const deletingNodes = new WeakSet();
123
- const isEmptyList = (list) => list.length === 0 || list.every((i) => deletingNodes.has(i));
124
- const getPathFromAction = (action) => {
125
- if (!Array.isArray(action)) {
126
- return action;
127
- }
128
- if (action[0] === 'replace' || action[0] === 'remove') {
129
- return action[1];
130
- }
131
- throw new Error(`Unknown action type: ${action[0]}`);
132
- };
133
- function isPrototypeAssignment(path) {
134
- if (!path.isAssignmentExpression()) {
135
- return false;
136
- }
137
- const { left } = path.node;
138
- if (!left) {
139
- return false;
140
- }
141
- if (left.type !== 'MemberExpression') {
142
- return false;
143
- }
144
- const { object, property } = left;
145
- if (!object || !property) {
146
- return false;
147
- }
148
- return (object.type === 'MemberExpression' &&
149
- object.property.type === 'Identifier' &&
150
- object.property.name === 'prototype');
151
- }
152
- function canFunctionBeDelete(fnPath) {
153
- if (isPrototypeAssignment(fnPath.parentPath)) {
154
- // It is a prototype assignment, we can't delete it since we can't find all usages
155
- return false;
156
- }
157
- const fnScope = fnPath.scope;
158
- const parentScope = fnScope.parent;
159
- if (parentScope.parent) {
160
- // It isn't a top-level function, so we can't delete it
161
- return true;
162
- }
163
- if (fnPath.listKey === 'arguments') {
164
- // It is passed as an argument to another function, we can't delete it
165
- return true;
166
- }
167
- return false;
168
- }
169
- function findActionForNode(path) {
170
- if ((0, isRemoved_1.isRemoved)(path))
171
- return null;
172
- deletingNodes.add(path);
173
- const parent = path.parentPath;
174
- if (!parent)
175
- return ['remove', path];
176
- if (parent.isProgram()) {
177
- // Do not delete Program node
178
- return ['remove', path];
179
- }
180
- if (parent.isClassDeclaration() || parent.isClassExpression()) {
181
- if (path.key === 'body') {
182
- return ['replace', path, { type: 'ClassBody', body: [] }];
183
- }
184
- }
185
- if (parent.isFunction()) {
186
- if (path.listKey === 'params') {
187
- // Do not remove params of functions
188
- return null;
189
- }
190
- if ((path.isBlockStatement() && isEmptyList(path.get('body'))) ||
191
- path === parent.get('body')) {
192
- if (!canFunctionBeDelete(parent)) {
193
- return [
194
- 'replace',
195
- parent,
196
- {
197
- ...parent.node,
198
- async: false,
199
- body: {
200
- type: 'BlockStatement',
201
- body: [],
202
- directives: [],
203
- },
204
- generator: false,
205
- params: [],
206
- },
207
- ];
208
- }
209
- }
210
- }
211
- if (parent.isConditionalExpression()) {
212
- if (path.key === 'test') {
213
- return ['replace', parent, parent.node.alternate];
214
- }
215
- if (path.key === 'consequent') {
216
- return ['replace', path, { type: 'Identifier', name: 'undefined' }];
217
- }
218
- if (path.key === 'alternate') {
219
- return ['replace', path, { type: 'Identifier', name: 'undefined' }];
220
- }
221
- }
222
- if (parent.isLogicalExpression({ operator: '&&' })) {
223
- return [
224
- 'replace',
225
- parent,
226
- {
227
- type: 'BooleanLiteral',
228
- value: false,
229
- },
230
- ];
231
- }
232
- if (parent.isLogicalExpression({ operator: '||' })) {
233
- return [
234
- 'replace',
235
- parent,
236
- path.key === 'left' ? parent.node.right : parent.node.left,
237
- ];
238
- }
239
- if (parent.isObjectProperty()) {
240
- // let's check if it is a special case with Object.defineProperty
241
- const key = parent.get('key');
242
- if (key.isIdentifier({ name: 'get' })) {
243
- const maybeDefineProperty = parent.parentPath.parentPath;
244
- if (maybeDefineProperty?.isCallExpression() &&
245
- maybeDefineProperty
246
- .get('callee')
247
- .matchesPattern('Object.defineProperty')) {
248
- return findActionForNode(maybeDefineProperty);
249
- }
250
- }
251
- return findActionForNode(parent);
252
- }
253
- if (parent.isTemplateLiteral()) {
254
- return [
255
- 'replace',
256
- path,
257
- {
258
- type: 'StringLiteral',
259
- value: '',
260
- },
261
- ];
262
- }
263
- if (parent.isAssignmentExpression()) {
264
- if (path.isAssignmentExpression()) {
265
- // `foo = bar = 42` should be replaced with `foo = 42`
266
- return ['replace', path, path.node.right];
267
- }
268
- return findActionForNode(parent);
269
- }
270
- if (parent.isCallExpression()) {
271
- return findActionForNode(parent);
272
- }
273
- if (parent.isForInStatement({ left: path.node })) {
274
- return findActionForNode(parent);
275
- }
276
- if (parent.isFunctionExpression({ body: path.node }) ||
277
- parent.isFunctionDeclaration() ||
278
- parent.isObjectMethod() ||
279
- parent.isClassMethod()) {
280
- return findActionForNode(parent);
281
- }
282
- if (parent.isBlockStatement()) {
283
- const body = parent.get('body');
284
- if (isEmptyList(body)) {
285
- return findActionForNode(parent);
286
- }
287
- if (path.listKey === 'body' && typeof path.key === 'number') {
288
- if (path.key > 0) {
289
- // We can check whether the previous one can be removed
290
- const prevStatement = body[path.key - 1];
291
- if (prevStatement.isIfStatement() &&
292
- prevStatement.get('consequent').isReturnStatement()) {
293
- // It's `if (…) return …`, we can remove it.
294
- return findActionForNode(prevStatement);
295
- }
296
- }
297
- else if (body.slice(1).every((statement) => deletingNodes.has(statement))) {
298
- // If it is the first statement and all other statements
299
- // are marked for deletion, we can remove the whole block.
300
- return findActionForNode(parent);
301
- }
302
- }
303
- }
304
- if (parent.isVariableDeclarator()) {
305
- if (path.key === 'init' && path.isAssignmentExpression()) {
306
- // We are removing `bar` in `var foo = bar = 42`. Path should be replaced with `var foo = 42`
307
- return ['replace', path, path.node.right];
308
- }
309
- const init = parent.get('init');
310
- if (path.key === 'id' && init.isAssignmentExpression()) {
311
- // We are removing `foo` in `var foo = bar = 42`. Ignore it.
312
- return null;
313
- }
314
- return findActionForNode(parent);
315
- }
316
- if (parent.isExportNamedDeclaration() &&
317
- ((path.key === 'specifiers' && isEmptyList(parent.get('specifiers'))) ||
318
- (path.key === 'declaration' && parent.node.declaration === path.node))) {
319
- return findActionForNode(parent);
320
- }
321
- for (const key of ['body', 'declarations', 'specifiers']) {
322
- if (path.listKey === key && typeof path.key === 'number') {
323
- const list = parent.get(key);
324
- if (isEmptyList(list)) {
325
- return findActionForNode(parent);
326
- }
327
- }
328
- }
329
- if (parent.isTryStatement()) {
330
- return findActionForNode(parent);
331
- }
332
- if (!path.listKey && path.key) {
333
- const field = types_1.NODE_FIELDS[parent.type][path.key];
334
- if (!validateField(parent.node, path.key, null, field)) {
335
- // The parent node isn't valid without this field, so we should remove it also.
336
- return findActionForNode(parent);
337
- }
338
- }
339
- for (const key of [
340
- 'argument',
341
- 'block',
342
- 'body',
343
- 'callee',
344
- 'discriminant',
345
- 'expression',
346
- 'id',
347
- 'left',
348
- 'object',
349
- 'property',
350
- 'right',
351
- 'test',
352
- ]) {
353
- if (path.key === key && parent.get(key) === path) {
354
- return findActionForNode(parent);
355
- }
356
- }
357
- return ['remove', path];
358
- }
359
- // @babel/preset-typescript transpiles enums, but doesn't reference used identifiers.
360
- function referenceEnums(program) {
361
- /*
362
- * We are looking for transpiled enums.
363
- * (function (Colors) {
364
- * Colors["BLUE"] = "#27509A";
365
- * })(Colors || (Colors = {}));
366
- */
367
- program.traverse({
368
- ExpressionStatement(expressionStatement) {
369
- const expression = expressionStatement.get('expression');
370
- if (!expression.isCallExpression())
371
- return;
372
- const callee = expression.get('callee');
373
- const args = expression.get('arguments');
374
- if (!callee.isFunctionExpression() || args.length !== 1)
375
- return;
376
- const [arg] = args;
377
- if (arg.isLogicalExpression({ operator: '||' })) {
378
- referenceAll(arg);
379
- }
380
- },
381
- });
382
- }
383
- const fixed = new WeakSet();
384
- function removeUnreferenced(items) {
385
- const referenced = new Set();
386
- items.forEach((item) => {
387
- if (!item.node || (0, isRemoved_1.isRemoved)(item))
388
- return;
389
- const binding = (0, getScope_1.getScope)(item).getBinding(item.node.name);
390
- if (!binding)
391
- return;
392
- const hasReferences = binding.referencePaths.filter((i) => !(0, isRemoved_1.isRemoved)(i)).length > 0;
393
- if (hasReferences) {
394
- referenced.add(item);
395
- return;
396
- }
397
- const forDeleting = [binding.path, ...binding.constantViolations]
398
- .map(findActionForNode)
399
- .filter(isNotNull_1.isNotNull)
400
- .map(getPathFromAction);
401
- if (forDeleting.length === 0)
402
- return;
403
- (0, findIdentifiers_1.findIdentifiers)(forDeleting).forEach((identifier) => {
404
- referenced.add(identifier);
405
- });
406
- removeWithRelated(forDeleting);
407
- });
408
- const result = [...referenced];
409
- result.sort((a, b) => a.node?.name.localeCompare(b.node?.name));
410
- return result;
411
- }
412
- function getNodeForValue(value) {
413
- if (typeof value === 'string') {
414
- return {
415
- type: 'StringLiteral',
416
- value,
417
- };
418
- }
419
- if (typeof value === 'number') {
420
- return {
421
- type: 'NumericLiteral',
422
- value,
423
- };
424
- }
425
- if (typeof value === 'boolean') {
426
- return {
427
- type: 'BooleanLiteral',
428
- value,
429
- };
430
- }
431
- if (value === null) {
432
- return {
433
- type: 'NullLiteral',
434
- };
435
- }
436
- if (value === undefined) {
437
- return {
438
- type: 'Identifier',
439
- name: 'undefined',
440
- };
441
- }
442
- return undefined;
443
- }
444
- function staticEvaluate(path) {
445
- if (!path)
446
- return;
447
- const evaluated = path.evaluate();
448
- if (evaluated.confident) {
449
- const node = getNodeForValue(evaluated.value);
450
- if (node) {
451
- applyAction(['replace', path, node]);
452
- return;
453
- }
454
- }
455
- if (path.isIfStatement()) {
456
- const test = path.get('test');
457
- if (!test.isBooleanLiteral()) {
458
- return;
459
- }
460
- const { consequent, alternate } = path.node;
461
- if (test.node.value) {
462
- applyAction(['replace', path, consequent]);
463
- }
464
- else if (alternate) {
465
- applyAction(['replace', path, alternate]);
466
- }
467
- else {
468
- applyAction(['remove', path]);
469
- }
470
- }
471
- }
472
- function applyAction(action) {
473
- mutate(action[1], (p) => {
474
- if ((0, isRemoved_1.isRemoved)(p))
475
- return;
476
- const parent = p.parentPath;
477
- if (action[0] === 'remove') {
478
- p.remove();
479
- }
480
- if (action[0] === 'replace') {
481
- p.replaceWith(action[2]);
482
- }
483
- staticEvaluate(parent);
484
- });
485
- }
486
- function removeWithRelated(paths) {
487
- if (paths.length === 0)
488
- return;
489
- const rootPath = (0, getScope_1.getScope)(paths[0]).getProgramParent()
490
- .path;
491
- if (!fixed.has(rootPath)) {
492
- // Some libraries don't care about bindings, references, and other staff
493
- // So we have to fix the scope before we can detect unused code
494
- referenceEnums(rootPath);
495
- fixed.add(rootPath);
496
- }
497
- const actions = paths
498
- .map(findActionForNode)
499
- .filter(isNotNull_1.isNotNull);
500
- const affectedPaths = actions.map(getPathFromAction);
501
- let referencedIdentifiers = (0, findIdentifiers_1.findIdentifiers)(affectedPaths, 'reference');
502
- referencedIdentifiers.sort((a, b) => a.node?.name.localeCompare(b.node?.name));
503
- const referencesOfBinding = (0, findIdentifiers_1.findIdentifiers)(affectedPaths, 'declaration')
504
- .map((i) => (i.node && (0, getScope_1.getScope)(i).getBinding(i.node.name)) ?? null)
505
- .filter(isNotNull_1.isNotNull)
506
- .reduce((acc, i) => [...acc, ...i.referencePaths.filter(findIdentifiers_1.nonType)], [])
507
- .filter((ref) =>
508
- // Do not remove `export default function`
509
- !ref.isExportDefaultDeclaration() ||
510
- !ref.get('declaration').isFunctionDeclaration());
511
- actions.forEach(applyAction);
512
- removeWithRelated(referencesOfBinding);
513
- let clean = false;
514
- while (!clean && referencedIdentifiers.length > 0) {
515
- const referenced = removeUnreferenced(referencedIdentifiers);
516
- clean =
517
- referenced.map((i) => i.node?.name).join('|') ===
518
- referencedIdentifiers.map((i) => i.node?.name).join('|');
519
- referencedIdentifiers = referenced;
520
- }
521
- }
522
- function mutate(path, fn) {
523
- const dereferenced = dereferenceAll(path);
524
- const mutated = fn(path);
525
- referenceAll(path);
526
- mutated?.forEach((p) => referenceAll(p));
527
- const dead = dereferenced.filter((p) => !isReferenced(p));
528
- const forDeleting = [];
529
- dead.forEach((binding) => {
530
- const assignments = [binding.path, ...binding.constantViolations];
531
- assignments.forEach((assignment) => {
532
- const { scope } = assignment;
533
- const declared = Object.values(assignment.getOuterBindingIdentifiers(false));
534
- if (declared.length === 1 &&
535
- 'name' in declared[0] &&
536
- declared[0].name === binding.identifier.name) {
537
- const init = assignment.get('init');
538
- if (!Array.isArray(init) && init?.isAssignmentExpression()) {
539
- // `const a = b = 1` → `b = 1`
540
- assignment.parentPath?.replaceWith({
541
- type: 'ExpressionStatement',
542
- expression: init.node,
543
- });
544
- const left = init.get('left');
545
- if (left.isIdentifier()) {
546
- // If it was forcefully referenced in the shaker
547
- dereference(left);
548
- }
549
- return;
550
- }
551
- // Only one identifier is declared, so we can remove the whole declaration
552
- forDeleting.push(assignment);
553
- return;
554
- }
555
- if (declared.every((identifier) => identifier.type === 'Identifier' &&
556
- !scope.getBinding(identifier.name)?.referenced)) {
557
- // No other identifier is referenced, so we can remove the whole declaration
558
- forDeleting.push(assignment);
559
- return;
560
- }
561
- // We can't remove the binding, but we can remove the part of it
562
- assignment.traverse({
563
- Identifier(identifier) {
564
- if (identifier.node.name === binding.identifier.name) {
565
- const parent = identifier.parentPath;
566
- if (parent.isArrayPattern() &&
567
- identifier.listKey === 'elements' &&
568
- typeof identifier.key === 'number') {
569
- parent.node.elements[identifier.key] = null;
570
- }
571
- else if (parent.isObjectProperty()) {
572
- forDeleting.push(parent);
573
- }
574
- }
575
- },
576
- });
577
- });
578
- });
579
- removeWithRelated(forDeleting);
580
- }
@@ -1,4 +0,0 @@
1
- import type { NodePath } from '@babel/traverse';
2
- import type { Node } from '@babel/types';
3
- export declare const getTraversalCache: <TValue, TKey extends NodePath | Node = NodePath>(path: NodePath, name: string) => WeakMap<TKey, TValue>;
4
- export declare const invalidateTraversalCache: (path: NodePath) => void;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.invalidateTraversalCache = exports.getTraversalCache = void 0;
4
- const caches = new WeakMap();
5
- const getTraversalCache = (path, name) => {
6
- const programPath = path.find((p) => p.isProgram());
7
- if (!programPath) {
8
- throw new Error(`Could not find program for ${path.node.type}`);
9
- }
10
- if (!caches.has(programPath)) {
11
- caches.set(programPath, new Map());
12
- }
13
- const cache = caches.get(programPath);
14
- if (!cache.has(name)) {
15
- cache.set(name, new WeakMap());
16
- }
17
- return cache.get(name);
18
- };
19
- exports.getTraversalCache = getTraversalCache;
20
- const invalidateTraversalCache = (path) => {
21
- const programPath = path.find((p) => p.isProgram());
22
- if (!programPath) {
23
- throw new Error(`Could not find program for ${path.node.type}`);
24
- }
25
- caches.delete(programPath);
26
- };
27
- exports.invalidateTraversalCache = invalidateTraversalCache;
@@ -1,2 +0,0 @@
1
- import type { Expression } from '@babel/types';
2
- export declare function unwrapExpression(node: Expression): Expression;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.unwrapExpression = unwrapExpression;
37
- const t = __importStar(require("@babel/types"));
38
- const unwrapOnce = (node) => {
39
- if (t.isTSAsExpression(node))
40
- return node.expression;
41
- if (t.isTSTypeAssertion(node))
42
- return node.expression;
43
- if (t.isTSNonNullExpression(node))
44
- return node.expression;
45
- if (t.isParenthesizedExpression(node))
46
- return node.expression;
47
- return node;
48
- };
49
- function unwrapExpression(node) {
50
- let current = node;
51
- let next = unwrapOnce(current);
52
- while (next !== current) {
53
- current = next;
54
- next = unwrapOnce(current);
55
- }
56
- return current;
57
- }
@@ -1,8 +0,0 @@
1
- import type { NodePath } from '@babel/traverse';
2
- import type { Expression, V8IntrinsicIdentifier } from '@babel/types';
3
- /**
4
- * If expression is a sequence like `(a, b, c)`, returns `c`
5
- * otherwise returns an original expression
6
- * @param path
7
- */
8
- export declare function unwrapSequence(path: NodePath<Expression | V8IntrinsicIdentifier>): NodePath<Expression | V8IntrinsicIdentifier> | undefined;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unwrapSequence = unwrapSequence;
4
- /**
5
- * If expression is a sequence like `(a, b, c)`, returns `c`
6
- * otherwise returns an original expression
7
- * @param path
8
- */
9
- function unwrapSequence(path) {
10
- if (path.isSequenceExpression()) {
11
- const [...expressions] = path.get('expressions');
12
- const lastExpression = expressions.pop();
13
- return lastExpression ? unwrapSequence(lastExpression) : undefined;
14
- }
15
- return path;
16
- }