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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -29
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +3 -6
  178. package/types/index.js +24 -82
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +2 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +0 -23
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -23
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,23 +1,14 @@
1
- import * as babelCore from '@babel/core';
2
- import { TransformCacheCollection } from '../../cache';
3
- import { EventEmitter } from '../../utils/EventEmitter';
4
- import { loadAndParse } from '../Entrypoint.helpers';
5
- import { rootLog } from '../rootLog';
6
- export const withDefaultServices = ({
7
- babel = babelCore,
8
- cache = new TransformCacheCollection(),
9
- emitWarning,
10
- eventEmitter = EventEmitter.dummy,
11
- loadAndParseFn = loadAndParse,
12
- log = rootLog,
13
- options
14
- }) => ({
15
- babel,
16
- cache,
17
- emitWarning,
18
- eventEmitter,
19
- loadAndParseFn,
20
- log,
21
- options
1
+ import { TransformCacheCollection } from "../../cache.js";
2
+ import { EventEmitter } from "../../utils/EventEmitter.js";
3
+ import { loadAndParse } from "../Entrypoint.helpers.js";
4
+ import { rootLog } from "../rootLog.js";
5
+ export const withDefaultServices = ({ cache = new TransformCacheCollection(), emitWarning, eventEmitter = EventEmitter.dummy, loadAndParseFn = loadAndParse, log = rootLog, options, asyncResolveKey }) => ({
6
+ cache,
7
+ emitWarning,
8
+ eventEmitter,
9
+ loadAndParseFn,
10
+ log,
11
+ options,
12
+ asyncResolveKey
22
13
  });
23
- //# sourceMappingURL=withDefaultServices.js.map
14
+ //# sourceMappingURL=withDefaultServices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"withDefaultServices.js","names":["babelCore","TransformCacheCollection","EventEmitter","loadAndParse","rootLog","withDefaultServices","babel","cache","emitWarning","eventEmitter","dummy","loadAndParseFn","log","options"],"sources":["../../../src/transform/helpers/withDefaultServices.ts"],"sourcesContent":["import * as babelCore from '@babel/core';\n\nimport { TransformCacheCollection } from '../../cache';\nimport { EventEmitter } from '../../utils/EventEmitter';\nimport { loadAndParse } from '../Entrypoint.helpers';\nimport { rootLog } from '../rootLog';\nimport type { Services } from '../types';\n\ntype RequiredServices = 'options';\nexport type PartialServices = Partial<Omit<Services, RequiredServices>> &\n Pick<Services, RequiredServices>;\n\nexport const withDefaultServices = ({\n babel = babelCore,\n cache = new TransformCacheCollection(),\n emitWarning,\n eventEmitter = EventEmitter.dummy,\n loadAndParseFn = loadAndParse,\n log = rootLog,\n options,\n}: PartialServices): Services => ({\n babel,\n cache,\n emitWarning,\n eventEmitter,\n loadAndParseFn,\n log,\n options,\n});\n"],"mappings":"AAAA,OAAO,KAAKA,SAAS,MAAM,aAAa;AAExC,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,OAAO,QAAQ,YAAY;AAOpC,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAClCC,KAAK,GAAGN,SAAS;EACjBO,KAAK,GAAG,IAAIN,wBAAwB,CAAC,CAAC;EACtCO,WAAW;EACXC,YAAY,GAAGP,YAAY,CAACQ,KAAK;EACjCC,cAAc,GAAGR,YAAY;EAC7BS,GAAG,GAAGR,OAAO;EACbS;AACe,CAAC,MAAgB;EAChCP,KAAK;EACLC,KAAK;EACLC,WAAW;EACXC,YAAY;EACZE,cAAc;EACdC,GAAG;EACHC;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"mappings":"AAAA,SAAS,gCAAgC;AACzC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AAOxB,OAAO,MAAM,uBAAuB,EAClC,QAAQ,IAAI,0BAA0B,EACtC,aACA,eAAe,aAAa,OAC5B,iBAAiB,cACjB,MAAM,SACN,SACA,uBACgC;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACD","names":[],"sources":["../../../src/transform/helpers/withDefaultServices.ts"],"version":3,"sourcesContent":["import { TransformCacheCollection } from '../../cache';\nimport { EventEmitter } from '../../utils/EventEmitter';\nimport { loadAndParse } from '../Entrypoint.helpers';\nimport { rootLog } from '../rootLog';\nimport type { Services } from '../types';\n\ntype RequiredServices = 'options';\nexport type PartialServices = Partial<Omit<Services, RequiredServices>> &\n Pick<Services, RequiredServices>;\n\nexport const withDefaultServices = ({\n cache = new TransformCacheCollection(),\n emitWarning,\n eventEmitter = EventEmitter.dummy,\n loadAndParseFn = loadAndParse,\n log = rootLog,\n options,\n asyncResolveKey,\n}: PartialServices): Services => ({\n cache,\n emitWarning,\n eventEmitter,\n loadAndParseFn,\n log,\n options,\n asyncResolveKey,\n});\n"],"file":"withDefaultServices.js"}
@@ -1,153 +1,141 @@
1
- import { isArrayExpression, isArrowFunctionExpression, isAssignmentExpression, isAwaitExpression, isBinaryExpression, isBigIntLiteral, isBooleanLiteral, isCallExpression, isClassDeclaration, isClassExpression, isConditionalExpression, isEmptyStatement, isExportAllDeclaration, isExportDefaultDeclaration, isExportNamedDeclaration, isExpression, isExpressionStatement, isFunctionDeclaration, isFunctionExpression, isIdentifier, isImportDeclaration, isImportSpecifier, isLogicalExpression, isNewExpression, isNullLiteral, isNumericLiteral, isObjectExpression, isObjectMethod, isObjectProperty, isParenthesizedExpression, isSequenceExpression, isSpreadElement, isStringLiteral, isTaggedTemplateExpression, isTemplateLiteral, isTSAsExpression, isTSInstantiationExpression, isTSNonNullExpression, isTSSatisfiesExpression, isUnaryExpression, isUpdateExpression, isYieldExpression } from '@babel/types';
2
- function isTypeOnlyImport(statement) {
3
- if (statement.importKind === 'type') {
4
- return true;
5
- }
6
- return statement.specifiers.every(specifier => isImportSpecifier(specifier) && specifier.importKind === 'type');
1
+ import { parseSync } from "oxc-parser";
2
+ const isNode = (value) => !!value && typeof value === "object" && "type" in value && typeof value.type === "string";
3
+ const getNodeType = (node) => node.type;
4
+ const parseOxc = (code, filename) => {
5
+ const parsed = parseSync(filename, code, {
6
+ astType: filename.endsWith(".ts") || filename.endsWith(".tsx") ? "ts" : "js",
7
+ range: true,
8
+ sourceType: "unambiguous"
9
+ });
10
+ const fatalError = parsed.errors.find((error) => error.severity === "Error");
11
+ if (fatalError) {
12
+ throw new Error(fatalError.message);
13
+ }
14
+ return parsed.program;
15
+ };
16
+ const isTypeOnlyImport = (statement) => {
17
+ if (statement.importKind === "type") {
18
+ return true;
19
+ }
20
+ return Array.isArray(statement.specifiers) ? statement.specifiers.every((specifier) => isNode(specifier) && specifier.type === "ImportSpecifier" && specifier.importKind === "type") : false;
21
+ };
22
+ const isTypeOnlyReExport = (statement) => !!statement.source && statement.exportKind === "type";
23
+ const isWrapperExpression = (node) => node.type === "TSAsExpression" || node.type === "TSSatisfiesExpression" || node.type === "TSNonNullExpression" || node.type === "TSInstantiationExpression" || node.type === "TSTypeAssertion" || node.type === "ParenthesizedExpression";
24
+ const unwrapExpression = (expr) => {
25
+ let current = expr;
26
+ while (isWrapperExpression(current)) {
27
+ current = current.expression;
28
+ }
29
+ return current;
30
+ };
31
+ const isSafeLiteral = (expr) => getNodeType(expr) === "Literal" && (() => {
32
+ const { value } = expr;
33
+ return value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint";
34
+ })();
35
+ const isSafeExpression = (expr) => {
36
+ const unwrapped = unwrapExpression(expr);
37
+ const type = unwrapped.type;
38
+ if (isSafeLiteral(unwrapped)) {
39
+ return true;
40
+ }
41
+ if (type === "ArrowFunctionExpression" || type === "FunctionExpression") {
42
+ return true;
43
+ }
44
+ if (type === "Identifier") {
45
+ const identifier = unwrapped;
46
+ return identifier.name === "undefined" || identifier.name === "NaN" || identifier.name === "Infinity";
47
+ }
48
+ if (type === "TemplateLiteral") {
49
+ return unwrapped.expressions.every((item) => isSafeExpression(item));
50
+ }
51
+ if (type === "UnaryExpression") {
52
+ return isSafeExpression(unwrapped.argument);
53
+ }
54
+ if (type === "BinaryExpression" || type === "LogicalExpression") {
55
+ const binaryLike = unwrapped;
56
+ return isSafeExpression(binaryLike.left) && isSafeExpression(binaryLike.right);
57
+ }
58
+ if (type === "ConditionalExpression") {
59
+ const conditional = unwrapped;
60
+ return isSafeExpression(conditional.test) && isSafeExpression(conditional.consequent) && isSafeExpression(conditional.alternate);
61
+ }
62
+ if (type === "ArrayExpression") {
63
+ return unwrapped.elements.every((item) => {
64
+ if (!item) {
65
+ return true;
66
+ }
67
+ if (item.type === "SpreadElement") {
68
+ return false;
69
+ }
70
+ return isSafeExpression(item);
71
+ });
72
+ }
73
+ if (type === "ObjectExpression") {
74
+ return unwrapped.properties.every((property) => {
75
+ if (property.type === "SpreadElement") {
76
+ return false;
77
+ }
78
+ const propertyNode = property;
79
+ if (propertyNode.computed) {
80
+ return false;
81
+ }
82
+ if (propertyNode.method) {
83
+ return true;
84
+ }
85
+ return isNode(propertyNode.value) && isSafeExpression(propertyNode.value);
86
+ });
87
+ }
88
+ if (type === "CallExpression" || type === "NewExpression" || type === "TaggedTemplateExpression" || type === "AwaitExpression" || type === "YieldExpression" || type === "UpdateExpression" || type === "AssignmentExpression" || type === "SequenceExpression" || type === "ClassExpression" || type === "ClassDeclaration") {
89
+ return false;
90
+ }
91
+ return false;
92
+ };
93
+ const isSafeDeclarator = (declarator) => !isNode(declarator.init) || isSafeExpression(declarator.init);
94
+ const isSafeVariableDeclaration = (statement) => statement.declarations.every((declarator) => isSafeDeclarator(declarator));
95
+ const isSafeStatement = (statement) => {
96
+ if (statement.type.startsWith("TS") || statement.type.startsWith("JSDoc")) {
97
+ return statement.type !== "TSEnumDeclaration";
98
+ }
99
+ if (statement.type === "ImportDeclaration") {
100
+ return isTypeOnlyImport(statement);
101
+ }
102
+ if (statement.type === "ExportAllDeclaration") {
103
+ return false;
104
+ }
105
+ if (statement.type === "ExportNamedDeclaration") {
106
+ if (!isNode(statement.declaration)) {
107
+ return !isNode(statement.source) || isTypeOnlyReExport(statement);
108
+ }
109
+ if (statement.declaration.type === "FunctionDeclaration") {
110
+ return true;
111
+ }
112
+ if (statement.declaration.type === "ClassDeclaration") {
113
+ return false;
114
+ }
115
+ return statement.declaration.type === "VariableDeclaration" && isSafeVariableDeclaration(statement.declaration);
116
+ }
117
+ if (statement.type === "ExportDefaultDeclaration") {
118
+ const { declaration } = statement;
119
+ if (!isNode(declaration)) {
120
+ return false;
121
+ }
122
+ if (declaration.type === "FunctionDeclaration" || declaration.type === "FunctionExpression" || declaration.type === "ArrowFunctionExpression" || declaration.type === "ClassExpression" || declaration.type === "ClassDeclaration") {
123
+ return false;
124
+ }
125
+ return isSafeExpression(declaration);
126
+ }
127
+ if (statement.type === "VariableDeclaration") {
128
+ return isSafeVariableDeclaration(statement);
129
+ }
130
+ if (statement.type === "FunctionDeclaration" || statement.type === "EmptyStatement") {
131
+ return true;
132
+ }
133
+ if (statement.type === "ExpressionStatement") {
134
+ return isNode(statement.expression) && isSafeLiteral(statement.expression);
135
+ }
136
+ return false;
137
+ };
138
+ export function isStaticallyEvaluatableModule(code, filename) {
139
+ return parseOxc(code, filename).body.every((statement) => isSafeStatement(statement));
7
140
  }
8
- function isTypeOnlyReExport(statement) {
9
- if (!statement.source) {
10
- return false;
11
- }
12
- return statement.exportKind === 'type';
13
- }
14
- function unwrapExpression(expr) {
15
- let current = expr;
16
- for (;;) {
17
- if (isTSAsExpression(current)) {
18
- current = current.expression;
19
- // eslint-disable-next-line no-continue
20
- continue;
21
- }
22
- if (isTSSatisfiesExpression(current)) {
23
- current = current.expression;
24
- // eslint-disable-next-line no-continue
25
- continue;
26
- }
27
- if (isTSNonNullExpression(current)) {
28
- current = current.expression;
29
- // eslint-disable-next-line no-continue
30
- continue;
31
- }
32
- if (isTSInstantiationExpression(current)) {
33
- current = current.expression;
34
- // eslint-disable-next-line no-continue
35
- continue;
36
- }
37
- if (isParenthesizedExpression(current)) {
38
- current = current.expression;
39
- // eslint-disable-next-line no-continue
40
- continue;
41
- }
42
- return current;
43
- }
44
- }
45
- function isSafeExpression(expr) {
46
- const unwrapped = unwrapExpression(expr);
47
- if (isStringLiteral(unwrapped) || isNumericLiteral(unwrapped) || isBooleanLiteral(unwrapped) || isNullLiteral(unwrapped) || isBigIntLiteral(unwrapped)) {
48
- return true;
49
- }
50
- if (isArrowFunctionExpression(unwrapped) || isFunctionExpression(unwrapped)) {
51
- return true;
52
- }
53
- if (isIdentifier(unwrapped)) {
54
- return unwrapped.name === 'undefined' || unwrapped.name === 'NaN' || unwrapped.name === 'Infinity';
55
- }
56
- if (isTemplateLiteral(unwrapped)) {
57
- return unwrapped.expressions.every(item => isExpression(item) && isSafeExpression(item));
58
- }
59
- if (isUnaryExpression(unwrapped)) {
60
- return isSafeExpression(unwrapped.argument);
61
- }
62
- if (isBinaryExpression(unwrapped) || isLogicalExpression(unwrapped)) {
63
- return isSafeExpression(unwrapped.left) && isSafeExpression(unwrapped.right);
64
- }
65
- if (isConditionalExpression(unwrapped)) {
66
- return isSafeExpression(unwrapped.test) && isSafeExpression(unwrapped.consequent) && isSafeExpression(unwrapped.alternate);
67
- }
68
- if (isArrayExpression(unwrapped)) {
69
- return unwrapped.elements.every(item => {
70
- if (item === null) return true;
71
- if (isSpreadElement(item)) return false;
72
- return isSafeExpression(item);
73
- });
74
- }
75
- if (isObjectExpression(unwrapped)) {
76
- return unwrapped.properties.every(prop => {
77
- if (isSpreadElement(prop)) {
78
- return false;
79
- }
80
- if (isObjectMethod(prop)) {
81
- return !prop.computed;
82
- }
83
- if (isObjectProperty(prop)) {
84
- if (prop.computed) {
85
- return false;
86
- }
87
- return isExpression(prop.value) && isSafeExpression(prop.value);
88
- }
89
- return false;
90
- });
91
- }
92
- if (isCallExpression(unwrapped) || isNewExpression(unwrapped) || isTaggedTemplateExpression(unwrapped) || isAwaitExpression(unwrapped) || isYieldExpression(unwrapped) || isUpdateExpression(unwrapped) || isAssignmentExpression(unwrapped) || isSequenceExpression(unwrapped)) {
93
- return false;
94
- }
95
- return false;
96
- }
97
- function isSafeDeclarator(declarator) {
98
- if (!declarator.init) {
99
- return true;
100
- }
101
- return isSafeExpression(declarator.init);
102
- }
103
- function isSafeVariableDeclaration(decl) {
104
- return decl.declarations.every(isSafeDeclarator);
105
- }
106
- function isSafeStatement(statement) {
107
- if (isImportDeclaration(statement)) {
108
- return isTypeOnlyImport(statement);
109
- }
110
- if (isExportAllDeclaration(statement)) {
111
- return false;
112
- }
113
- if (isExportNamedDeclaration(statement)) {
114
- if (!statement.declaration) {
115
- return !statement.source || isTypeOnlyReExport(statement);
116
- }
117
- if (isFunctionDeclaration(statement.declaration)) {
118
- return true;
119
- }
120
- if (isClassDeclaration(statement.declaration)) {
121
- return false;
122
- }
123
- if (statement.declaration.type === 'VariableDeclaration') {
124
- return isSafeVariableDeclaration(statement.declaration);
125
- }
126
- return false;
127
- }
128
- if (isExportDefaultDeclaration(statement)) {
129
- const decl = statement.declaration;
130
- if (isFunctionDeclaration(decl) || isFunctionExpression(decl) || isArrowFunctionExpression(decl) || isClassExpression(decl) || isClassDeclaration(decl)) {
131
- return false;
132
- }
133
- return isSafeExpression(decl);
134
- }
135
- if (statement.type === 'VariableDeclaration') {
136
- return isSafeVariableDeclaration(statement);
137
- }
138
- if (isFunctionDeclaration(statement)) {
139
- return true;
140
- }
141
- if (isEmptyStatement(statement)) {
142
- return true;
143
- }
144
- if (isExpressionStatement(statement)) {
145
- // Directives (like "use strict") are safe.
146
- return isStringLiteral(statement.expression);
147
- }
148
- return false;
149
- }
150
- export function isStaticallyEvaluatableModule(ast) {
151
- return ast.program.body.every(isSafeStatement);
152
- }
153
- //# sourceMappingURL=isStaticallyEvaluatableModule.js.map
141
+ //# sourceMappingURL=isStaticallyEvaluatableModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isStaticallyEvaluatableModule.js","names":["isArrayExpression","isArrowFunctionExpression","isAssignmentExpression","isAwaitExpression","isBinaryExpression","isBigIntLiteral","isBooleanLiteral","isCallExpression","isClassDeclaration","isClassExpression","isConditionalExpression","isEmptyStatement","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExpression","isExpressionStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isImportDeclaration","isImportSpecifier","isLogicalExpression","isNewExpression","isNullLiteral","isNumericLiteral","isObjectExpression","isObjectMethod","isObjectProperty","isParenthesizedExpression","isSequenceExpression","isSpreadElement","isStringLiteral","isTaggedTemplateExpression","isTemplateLiteral","isTSAsExpression","isTSInstantiationExpression","isTSNonNullExpression","isTSSatisfiesExpression","isUnaryExpression","isUpdateExpression","isYieldExpression","isTypeOnlyImport","statement","importKind","specifiers","every","specifier","isTypeOnlyReExport","source","exportKind","unwrapExpression","expr","current","expression","isSafeExpression","unwrapped","name","expressions","item","argument","left","right","test","consequent","alternate","elements","properties","prop","computed","value","isSafeDeclarator","declarator","init","isSafeVariableDeclaration","decl","declarations","isSafeStatement","declaration","type","isStaticallyEvaluatableModule","ast","program","body"],"sources":["../../src/transform/isStaticallyEvaluatableModule.ts"],"sourcesContent":["import type {\n Expression,\n ImportDeclaration,\n ExportNamedDeclaration,\n File,\n Statement,\n VariableDeclaration,\n VariableDeclarator,\n} from '@babel/types';\nimport {\n isArrayExpression,\n isArrowFunctionExpression,\n isAssignmentExpression,\n isAwaitExpression,\n isBinaryExpression,\n isBigIntLiteral,\n isBooleanLiteral,\n isCallExpression,\n isClassDeclaration,\n isClassExpression,\n isConditionalExpression,\n isEmptyStatement,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n isExpression,\n isExpressionStatement,\n isFunctionDeclaration,\n isFunctionExpression,\n isIdentifier,\n isImportDeclaration,\n isImportSpecifier,\n isLogicalExpression,\n isNewExpression,\n isNullLiteral,\n isNumericLiteral,\n isObjectExpression,\n isObjectMethod,\n isObjectProperty,\n isParenthesizedExpression,\n isSequenceExpression,\n isSpreadElement,\n isStringLiteral,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isTSAsExpression,\n isTSInstantiationExpression,\n isTSNonNullExpression,\n isTSSatisfiesExpression,\n isUnaryExpression,\n isUpdateExpression,\n isYieldExpression,\n} from '@babel/types';\n\nfunction isTypeOnlyImport(statement: ImportDeclaration): boolean {\n if (statement.importKind === 'type') {\n return true;\n }\n\n return statement.specifiers.every(\n (specifier) =>\n isImportSpecifier(specifier) && specifier.importKind === 'type'\n );\n}\n\nfunction isTypeOnlyReExport(statement: ExportNamedDeclaration): boolean {\n if (!statement.source) {\n return false;\n }\n\n return statement.exportKind === 'type';\n}\n\nfunction unwrapExpression(expr: Expression): Expression {\n let current: Expression = expr;\n\n for (;;) {\n if (isTSAsExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSSatisfiesExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSNonNullExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSInstantiationExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isParenthesizedExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n return current;\n }\n}\n\nfunction isSafeExpression(expr: Expression): boolean {\n const unwrapped = unwrapExpression(expr);\n\n if (\n isStringLiteral(unwrapped) ||\n isNumericLiteral(unwrapped) ||\n isBooleanLiteral(unwrapped) ||\n isNullLiteral(unwrapped) ||\n isBigIntLiteral(unwrapped)\n ) {\n return true;\n }\n\n if (isArrowFunctionExpression(unwrapped) || isFunctionExpression(unwrapped)) {\n return true;\n }\n\n if (isIdentifier(unwrapped)) {\n return (\n unwrapped.name === 'undefined' ||\n unwrapped.name === 'NaN' ||\n unwrapped.name === 'Infinity'\n );\n }\n\n if (isTemplateLiteral(unwrapped)) {\n return unwrapped.expressions.every(\n (item) => isExpression(item) && isSafeExpression(item)\n );\n }\n\n if (isUnaryExpression(unwrapped)) {\n return isSafeExpression(unwrapped.argument as Expression);\n }\n\n if (isBinaryExpression(unwrapped) || isLogicalExpression(unwrapped)) {\n return (\n isSafeExpression(unwrapped.left as Expression) &&\n isSafeExpression(unwrapped.right as Expression)\n );\n }\n\n if (isConditionalExpression(unwrapped)) {\n return (\n isSafeExpression(unwrapped.test) &&\n isSafeExpression(unwrapped.consequent) &&\n isSafeExpression(unwrapped.alternate)\n );\n }\n\n if (isArrayExpression(unwrapped)) {\n return unwrapped.elements.every((item) => {\n if (item === null) return true;\n if (isSpreadElement(item)) return false;\n return isSafeExpression(item);\n });\n }\n\n if (isObjectExpression(unwrapped)) {\n return unwrapped.properties.every((prop) => {\n if (isSpreadElement(prop)) {\n return false;\n }\n\n if (isObjectMethod(prop)) {\n return !prop.computed;\n }\n\n if (isObjectProperty(prop)) {\n if (prop.computed) {\n return false;\n }\n\n return isExpression(prop.value) && isSafeExpression(prop.value);\n }\n\n return false;\n });\n }\n\n if (\n isCallExpression(unwrapped) ||\n isNewExpression(unwrapped) ||\n isTaggedTemplateExpression(unwrapped) ||\n isAwaitExpression(unwrapped) ||\n isYieldExpression(unwrapped) ||\n isUpdateExpression(unwrapped) ||\n isAssignmentExpression(unwrapped) ||\n isSequenceExpression(unwrapped)\n ) {\n return false;\n }\n\n return false;\n}\n\nfunction isSafeDeclarator(declarator: VariableDeclarator): boolean {\n if (!declarator.init) {\n return true;\n }\n\n return isSafeExpression(declarator.init);\n}\n\nfunction isSafeVariableDeclaration(decl: VariableDeclaration): boolean {\n return decl.declarations.every(isSafeDeclarator);\n}\n\nfunction isSafeStatement(statement: Statement): boolean {\n if (isImportDeclaration(statement)) {\n return isTypeOnlyImport(statement);\n }\n\n if (isExportAllDeclaration(statement)) {\n return false;\n }\n\n if (isExportNamedDeclaration(statement)) {\n if (!statement.declaration) {\n return !statement.source || isTypeOnlyReExport(statement);\n }\n\n if (isFunctionDeclaration(statement.declaration)) {\n return true;\n }\n\n if (isClassDeclaration(statement.declaration)) {\n return false;\n }\n\n if (statement.declaration.type === 'VariableDeclaration') {\n return isSafeVariableDeclaration(statement.declaration);\n }\n\n return false;\n }\n\n if (isExportDefaultDeclaration(statement)) {\n const decl = statement.declaration;\n if (\n isFunctionDeclaration(decl) ||\n isFunctionExpression(decl) ||\n isArrowFunctionExpression(decl) ||\n isClassExpression(decl) ||\n isClassDeclaration(decl)\n ) {\n return false;\n }\n\n return isSafeExpression(decl as Expression);\n }\n\n if (statement.type === 'VariableDeclaration') {\n return isSafeVariableDeclaration(statement);\n }\n\n if (isFunctionDeclaration(statement)) {\n return true;\n }\n\n if (isEmptyStatement(statement)) {\n return true;\n }\n\n if (isExpressionStatement(statement)) {\n // Directives (like \"use strict\") are safe.\n return isStringLiteral(statement.expression);\n }\n\n return false;\n}\n\nexport function isStaticallyEvaluatableModule(ast: File): boolean {\n return ast.program.body.every(isSafeStatement);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../../src/transform/isStaticallyEvaluatableModule.ts"],"version":3,"sourcesContent":["import { parseSync } from 'oxc-parser';\nimport type {\n ExportNamedDeclaration,\n ImportDeclaration,\n Node,\n Program,\n VariableDeclaration,\n VariableDeclarator,\n} from 'oxc-parser';\n\nconst isNode = (value: unknown): value is Node =>\n !!value &&\n typeof value === 'object' &&\n 'type' in value &&\n typeof (value as { type?: unknown }).type === 'string';\n\nconst getNodeType = (node: Pick<Node, 'type'>): string => node.type as string;\n\nconst parseOxc = (code: string, filename: string): Program => {\n const parsed = parseSync(filename, code, {\n astType:\n filename.endsWith('.ts') || filename.endsWith('.tsx') ? 'ts' : 'js',\n range: true,\n sourceType: 'unambiguous',\n });\n const fatalError = parsed.errors.find((error) => error.severity === 'Error');\n if (fatalError) {\n throw new Error(fatalError.message);\n }\n\n return parsed.program as Program;\n};\n\nconst isTypeOnlyImport = (statement: ImportDeclaration): boolean => {\n if (statement.importKind === 'type') {\n return true;\n }\n\n return Array.isArray(statement.specifiers)\n ? statement.specifiers.every(\n (specifier) =>\n isNode(specifier) &&\n specifier.type === 'ImportSpecifier' &&\n specifier.importKind === 'type'\n )\n : false;\n};\n\nconst isTypeOnlyReExport = (statement: ExportNamedDeclaration): boolean =>\n !!statement.source && statement.exportKind === 'type';\n\nconst isWrapperExpression = (node: Node): node is Node & { expression: Node } =>\n node.type === 'TSAsExpression' ||\n node.type === 'TSSatisfiesExpression' ||\n node.type === 'TSNonNullExpression' ||\n node.type === 'TSInstantiationExpression' ||\n node.type === 'TSTypeAssertion' ||\n node.type === 'ParenthesizedExpression';\n\nconst unwrapExpression = (expr: Node): Node => {\n let current = expr;\n\n while (isWrapperExpression(current)) {\n current = current.expression;\n }\n\n return current;\n};\n\nconst isSafeLiteral = (expr: Node): boolean =>\n getNodeType(expr) === 'Literal' &&\n (() => {\n const { value } = expr as Node & { value?: unknown };\n return (\n value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'bigint'\n );\n })();\n\nconst isSafeExpression = (expr: Node): boolean => {\n const unwrapped = unwrapExpression(expr);\n const type = unwrapped.type as string;\n\n if (isSafeLiteral(unwrapped)) {\n return true;\n }\n\n if (type === 'ArrowFunctionExpression' || type === 'FunctionExpression') {\n return true;\n }\n\n if (type === 'Identifier') {\n const identifier = unwrapped as Node & { name: string };\n return (\n identifier.name === 'undefined' ||\n identifier.name === 'NaN' ||\n identifier.name === 'Infinity'\n );\n }\n\n if (type === 'TemplateLiteral') {\n return (unwrapped as Node & { expressions: Node[] }).expressions.every(\n (item) => isSafeExpression(item)\n );\n }\n\n if (type === 'UnaryExpression') {\n return isSafeExpression((unwrapped as Node & { argument: Node }).argument);\n }\n\n if (type === 'BinaryExpression' || type === 'LogicalExpression') {\n const binaryLike = unwrapped as Node & { left: Node; right: Node };\n return (\n isSafeExpression(binaryLike.left) && isSafeExpression(binaryLike.right)\n );\n }\n\n if (type === 'ConditionalExpression') {\n const conditional = unwrapped as Node & {\n alternate: Node;\n consequent: Node;\n test: Node;\n };\n return (\n isSafeExpression(conditional.test) &&\n isSafeExpression(conditional.consequent) &&\n isSafeExpression(conditional.alternate)\n );\n }\n\n if (type === 'ArrayExpression') {\n return (\n unwrapped as Node & { elements: Array<Node | null> }\n ).elements.every((item) => {\n if (!item) {\n return true;\n }\n\n if (item.type === 'SpreadElement') {\n return false;\n }\n\n return isSafeExpression(item);\n });\n }\n\n if (type === 'ObjectExpression') {\n return (unwrapped as Node & { properties: Node[] }).properties.every(\n (property) => {\n if (property.type === 'SpreadElement') {\n return false;\n }\n\n const propertyNode = property as Node & {\n computed?: boolean;\n method?: boolean;\n value?: Node;\n };\n\n if (propertyNode.computed) {\n return false;\n }\n\n if (propertyNode.method) {\n return true;\n }\n\n return (\n isNode(propertyNode.value) && isSafeExpression(propertyNode.value)\n );\n }\n );\n }\n\n if (\n type === 'CallExpression' ||\n type === 'NewExpression' ||\n type === 'TaggedTemplateExpression' ||\n type === 'AwaitExpression' ||\n type === 'YieldExpression' ||\n type === 'UpdateExpression' ||\n type === 'AssignmentExpression' ||\n type === 'SequenceExpression' ||\n type === 'ClassExpression' ||\n type === 'ClassDeclaration'\n ) {\n return false;\n }\n\n return false;\n};\n\nconst isSafeDeclarator = (declarator: VariableDeclarator): boolean =>\n !isNode(declarator.init) || isSafeExpression(declarator.init);\n\nconst isSafeVariableDeclaration = (statement: VariableDeclaration): boolean =>\n statement.declarations.every((declarator) => isSafeDeclarator(declarator));\n\nconst isSafeStatement = (statement: Node): boolean => {\n if (statement.type.startsWith('TS') || statement.type.startsWith('JSDoc')) {\n return statement.type !== 'TSEnumDeclaration';\n }\n\n if (statement.type === 'ImportDeclaration') {\n return isTypeOnlyImport(statement);\n }\n\n if (statement.type === 'ExportAllDeclaration') {\n return false;\n }\n\n if (statement.type === 'ExportNamedDeclaration') {\n if (!isNode(statement.declaration)) {\n return !isNode(statement.source) || isTypeOnlyReExport(statement);\n }\n\n if (statement.declaration.type === 'FunctionDeclaration') {\n return true;\n }\n\n if (statement.declaration.type === 'ClassDeclaration') {\n return false;\n }\n\n return (\n statement.declaration.type === 'VariableDeclaration' &&\n isSafeVariableDeclaration(statement.declaration)\n );\n }\n\n if (statement.type === 'ExportDefaultDeclaration') {\n const { declaration } = statement;\n if (!isNode(declaration)) {\n return false;\n }\n\n if (\n declaration.type === 'FunctionDeclaration' ||\n declaration.type === 'FunctionExpression' ||\n declaration.type === 'ArrowFunctionExpression' ||\n declaration.type === 'ClassExpression' ||\n declaration.type === 'ClassDeclaration'\n ) {\n return false;\n }\n\n return isSafeExpression(declaration);\n }\n\n if (statement.type === 'VariableDeclaration') {\n return isSafeVariableDeclaration(statement);\n }\n\n if (\n statement.type === 'FunctionDeclaration' ||\n statement.type === 'EmptyStatement'\n ) {\n return true;\n }\n\n if (statement.type === 'ExpressionStatement') {\n return isNode(statement.expression) && isSafeLiteral(statement.expression);\n }\n\n return false;\n};\n\nexport function isStaticallyEvaluatableModule(\n code: string,\n filename: string\n): boolean {\n return parseOxc(code, filename).body.every((statement) =>\n isSafeStatement(statement)\n );\n}\n"],"file":"isStaticallyEvaluatableModule.js"}