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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -28
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +7 -8
  178. package/types/index.js +24 -77
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +6 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +4 -24
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -0,0 +1,349 @@
1
+ /* eslint-disable no-continue, @typescript-eslint/no-use-before-define */
2
+ import { parseSync } from "oxc-parser";
3
+ const nameFromModuleExport = (node) => node.type === "Literal" ? String(node.value) : node.name;
4
+ const isTypeOnlyImport = (statement) => {
5
+ if (statement.importKind === "type") {
6
+ return true;
7
+ }
8
+ if (statement.specifiers.length === 0) {
9
+ return false;
10
+ }
11
+ return statement.specifiers.every((specifier) => specifier.type === "ImportSpecifier" && specifier.importKind === "type");
12
+ };
13
+ const isTypeOnlyExport = (statement) => "exportKind" in statement && statement.exportKind === "type";
14
+ const isTypeOnlyStatement = (statement) => {
15
+ switch (statement.type) {
16
+ case "EmptyStatement":
17
+ case "TSDeclareFunction":
18
+ case "TSInterfaceDeclaration":
19
+ case "TSTypeAliasDeclaration": return true;
20
+ default: return false;
21
+ }
22
+ };
23
+ const getChildren = (node) => {
24
+ const result = [];
25
+ const record = node;
26
+ Object.keys(record).forEach((key) => {
27
+ if (key === "type" || key === "start" || key === "end" || key === "range") {
28
+ return;
29
+ }
30
+ const value = record[key];
31
+ if (value && typeof value === "object") {
32
+ if (Array.isArray(value)) {
33
+ value.forEach((item) => {
34
+ if (item && typeof item === "object" && "type" in item) {
35
+ result.push({
36
+ key,
37
+ node: item
38
+ });
39
+ }
40
+ });
41
+ return;
42
+ }
43
+ if ("type" in value) {
44
+ result.push({
45
+ key,
46
+ node: value
47
+ });
48
+ }
49
+ }
50
+ });
51
+ return result;
52
+ };
53
+ const collectBindingNames = (pattern) => {
54
+ if (!pattern) {
55
+ return [];
56
+ }
57
+ if (pattern.type === "Identifier") {
58
+ return [pattern.name];
59
+ }
60
+ if (pattern.type === "RestElement") {
61
+ return collectBindingNames(pattern.argument);
62
+ }
63
+ if (pattern.type === "AssignmentPattern") {
64
+ return collectBindingNames(pattern.left);
65
+ }
66
+ if (pattern.type === "ObjectPattern") {
67
+ return pattern.properties.flatMap((property) => property.type === "RestElement" ? collectBindingNames(property.argument) : collectBindingNames(property.value));
68
+ }
69
+ if (pattern.type === "ArrayPattern") {
70
+ return pattern.elements.flatMap((element) => collectBindingNames(element));
71
+ }
72
+ return [];
73
+ };
74
+ const getLocalDeclarationNames = (declaration) => {
75
+ if (!declaration) {
76
+ return [];
77
+ }
78
+ if (declaration.type === "VariableDeclaration") {
79
+ return declaration.declarations.flatMap((declarator) => collectBindingNames(declarator.id));
80
+ }
81
+ if ((declaration.type === "FunctionDeclaration" || declaration.type === "ClassDeclaration") && declaration.id) {
82
+ return [declaration.id.name];
83
+ }
84
+ if (declaration.type === "TSEnumDeclaration" || declaration.type === "TSModuleDeclaration") {
85
+ return null;
86
+ }
87
+ return [];
88
+ };
89
+ const collectImportBinding = (statement, imports) => {
90
+ if (statement.importKind === "type") {
91
+ return true;
92
+ }
93
+ if (statement.specifiers.length === 0) {
94
+ return false;
95
+ }
96
+ let sawValueImport = false;
97
+ for (const specifier of statement.specifiers) {
98
+ if (specifier.type === "ImportSpecifier" && specifier.importKind === "type") {
99
+ continue;
100
+ }
101
+ sawValueImport = true;
102
+ if (specifier.type === "ImportSpecifier") {
103
+ imports.set(specifier.local.name, {
104
+ imported: nameFromModuleExport(specifier.imported),
105
+ kind: "named",
106
+ source: statement.source.value
107
+ });
108
+ continue;
109
+ }
110
+ if (specifier.type === "ImportDefaultSpecifier") {
111
+ imports.set(specifier.local.name, {
112
+ imported: "default",
113
+ kind: "named",
114
+ source: statement.source.value
115
+ });
116
+ continue;
117
+ }
118
+ imports.set(specifier.local.name, {
119
+ kind: "namespace",
120
+ source: statement.source.value
121
+ });
122
+ }
123
+ return sawValueImport || isTypeOnlyImport(statement);
124
+ };
125
+ const getNamedReexport = (specifier, source) => ({
126
+ exported: nameFromModuleExport(specifier.exported),
127
+ imported: nameFromModuleExport(specifier.local),
128
+ kind: "named",
129
+ source
130
+ });
131
+ const collectExportNamedDeclaration = (statement, reexports, explicitExports) => {
132
+ if (!statement.source) {
133
+ return isTypeOnlyExport(statement);
134
+ }
135
+ if (isTypeOnlyExport(statement)) {
136
+ return true;
137
+ }
138
+ const source = statement.source.value;
139
+ for (const specifier of statement.specifiers) {
140
+ if (specifier.type !== "ExportSpecifier") {
141
+ return false;
142
+ }
143
+ if (specifier.exportKind === "type") {
144
+ continue;
145
+ }
146
+ explicitExports.add(nameFromModuleExport(specifier.exported));
147
+ reexports.push(getNamedReexport(specifier, source));
148
+ }
149
+ return statement.specifiers.length > 0;
150
+ };
151
+ const collectLocalExportNamedDeclaration = (statement, importedBindings, passthroughCandidates, explicitExports) => {
152
+ let complete = true;
153
+ if (isTypeOnlyExport(statement)) {
154
+ return {
155
+ complete: true,
156
+ ok: true
157
+ };
158
+ }
159
+ if (statement.declaration) {
160
+ const names = getLocalDeclarationNames(statement.declaration);
161
+ if (names === null) {
162
+ return {
163
+ complete: false,
164
+ ok: false
165
+ };
166
+ }
167
+ names.forEach((name) => explicitExports.add(name));
168
+ return {
169
+ complete: names.length === 0,
170
+ ok: true
171
+ };
172
+ }
173
+ for (const specifier of statement.specifiers) {
174
+ if (specifier.type !== "ExportSpecifier") {
175
+ return {
176
+ complete: false,
177
+ ok: false
178
+ };
179
+ }
180
+ if (specifier.exportKind === "type") {
181
+ continue;
182
+ }
183
+ const exported = nameFromModuleExport(specifier.exported);
184
+ explicitExports.add(exported);
185
+ if (specifier.local.type !== "Identifier") {
186
+ complete = false;
187
+ continue;
188
+ }
189
+ if (!importedBindings.has(specifier.local.name)) {
190
+ complete = false;
191
+ continue;
192
+ }
193
+ if (!passthroughCandidates.has(specifier.local.name)) {
194
+ passthroughCandidates.set(specifier.local.name, []);
195
+ }
196
+ passthroughCandidates.get(specifier.local.name).push(exported);
197
+ }
198
+ return {
199
+ complete: complete && statement.specifiers.length > 0,
200
+ ok: true
201
+ };
202
+ };
203
+ const isBindingIdentifier = (node, parent, key) => {
204
+ if (!parent) {
205
+ return false;
206
+ }
207
+ if ((parent.type === "ImportSpecifier" || parent.type === "ImportDefaultSpecifier" || parent.type === "ImportNamespaceSpecifier") && key === "local") {
208
+ return true;
209
+ }
210
+ if (parent.type === "VariableDeclarator" && key === "id") {
211
+ return true;
212
+ }
213
+ if ((parent.type === "FunctionDeclaration" || parent.type === "ClassDeclaration") && key === "id") {
214
+ return true;
215
+ }
216
+ return false;
217
+ };
218
+ const countBindingReferences = (node, names, counts, parent = null, key = "") => {
219
+ if (node.type === "ImportDeclaration" || node.type.startsWith("TS")) {
220
+ return;
221
+ }
222
+ if (node.type === "Identifier" && names.has(node.name) && !isBindingIdentifier(node, parent, key) && !(parent?.type === "ExportSpecifier" && key === "exported") && !(parent?.type === "Property" && parent.key === node && !parent.computed)) {
223
+ counts.set(node.name, (counts.get(node.name) ?? 0) + 1);
224
+ }
225
+ getChildren(node).forEach((child) => countBindingReferences(child.node, names, counts, node, child.key));
226
+ };
227
+ const collectPassthroughReexports = (program, importedBindings, passthroughCandidates, reexports) => {
228
+ let complete = true;
229
+ const candidateNames = new Set(passthroughCandidates.keys());
230
+ const bindingReferenceCounts = new Map();
231
+ countBindingReferences(program, candidateNames, bindingReferenceCounts);
232
+ for (const [localName, exportedNames] of passthroughCandidates) {
233
+ if ((bindingReferenceCounts.get(localName) ?? 0) !== exportedNames.length) {
234
+ complete = false;
235
+ continue;
236
+ }
237
+ const imported = importedBindings.get(localName);
238
+ for (const exported of exportedNames) {
239
+ if (imported.kind === "namespace") {
240
+ reexports.push({
241
+ exported,
242
+ kind: "namespace",
243
+ source: imported.source
244
+ });
245
+ continue;
246
+ }
247
+ reexports.push({
248
+ exported,
249
+ imported: imported.imported,
250
+ kind: "named",
251
+ source: imported.source
252
+ });
253
+ }
254
+ }
255
+ return {
256
+ complete,
257
+ ok: true
258
+ };
259
+ };
260
+ const parseProgram = (code, filename) => {
261
+ const parsed = parseSync(filename, code, {
262
+ astType: filename.endsWith(".ts") || filename.endsWith(".tsx") ? "ts" : "js",
263
+ range: true,
264
+ sourceType: "module"
265
+ });
266
+ const fatalError = parsed.errors.find((error) => error.severity === "Error");
267
+ if (fatalError) {
268
+ throw new Error(fatalError.message);
269
+ }
270
+ return parsed.program;
271
+ };
272
+ const analyzeBarrelProgram = (program) => {
273
+ const reexports = [];
274
+ const explicitExports = new Set();
275
+ const exportAll = [];
276
+ const importedBindings = new Map();
277
+ const passthroughCandidates = new Map();
278
+ let complete = true;
279
+ for (const statement of program.body) {
280
+ if (statement.type === "ImportDeclaration") {
281
+ if (!collectImportBinding(statement, importedBindings)) {
282
+ return null;
283
+ }
284
+ continue;
285
+ }
286
+ if (statement.type === "ExportNamedDeclaration") {
287
+ if (statement.source) {
288
+ if (!collectExportNamedDeclaration(statement, reexports, explicitExports)) {
289
+ return null;
290
+ }
291
+ continue;
292
+ }
293
+ const localResult = collectLocalExportNamedDeclaration(statement, importedBindings, passthroughCandidates, explicitExports);
294
+ if (!localResult.ok) {
295
+ return null;
296
+ }
297
+ complete = complete && localResult.complete;
298
+ continue;
299
+ }
300
+ if (statement.type === "ExportAllDeclaration") {
301
+ if (isTypeOnlyExport(statement)) {
302
+ continue;
303
+ }
304
+ if (statement.exported) {
305
+ explicitExports.add(nameFromModuleExport(statement.exported));
306
+ reexports.push({
307
+ exported: nameFromModuleExport(statement.exported),
308
+ kind: "namespace",
309
+ source: statement.source.value
310
+ });
311
+ continue;
312
+ }
313
+ exportAll.push(statement.source.value);
314
+ continue;
315
+ }
316
+ if (statement.type === "ExportDefaultDeclaration") {
317
+ return null;
318
+ }
319
+ if (!isTypeOnlyStatement(statement)) {
320
+ return null;
321
+ }
322
+ }
323
+ const passthroughResult = collectPassthroughReexports(program, importedBindings, passthroughCandidates, reexports);
324
+ if (!passthroughResult.ok) {
325
+ return null;
326
+ }
327
+ complete = complete && passthroughResult.complete;
328
+ if (reexports.length === 0 && exportAll.length === 0) {
329
+ return null;
330
+ }
331
+ return {
332
+ complete,
333
+ explicitExports: [...explicitExports],
334
+ exportAll,
335
+ kind: "barrel",
336
+ reexports
337
+ };
338
+ };
339
+ export function analyzeOxcBarrelFile(code, filename) {
340
+ const result = analyzeBarrelProgram(parseProgram(code, filename));
341
+ if (!result) {
342
+ return {
343
+ kind: "ineligible",
344
+ reason: "impure"
345
+ };
346
+ }
347
+ return result;
348
+ }
349
+ //# sourceMappingURL=oxcBarrelManifest.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","names":[],"sources":["../../src/transform/oxcBarrelManifest.ts"],"version":3,"sourcesContent":["/* eslint-disable no-continue, @typescript-eslint/no-use-before-define */\nimport { parseSync } from 'oxc-parser';\nimport type {\n BindingPattern,\n ExportAllDeclaration,\n ExportNamedDeclaration,\n ExportSpecifier,\n ImportDeclaration,\n ModuleExportName,\n Node,\n Program,\n Statement,\n VariableDeclaration,\n} from 'oxc-parser';\n\nimport type {\n BarrelManifestCacheEntry,\n RawBarrelManifest,\n RawBarrelReexport,\n} from './barrelManifest.types';\n\ntype LocalImportBinding =\n | {\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n kind: 'namespace';\n source: string;\n };\n\ntype AnyNode = Node & Record<string, unknown>;\n\nconst nameFromModuleExport = (node: ModuleExportName): string =>\n node.type === 'Literal' ? String(node.value) : node.name;\n\nconst isTypeOnlyImport = (statement: ImportDeclaration): boolean => {\n if (statement.importKind === 'type') {\n return true;\n }\n\n if (statement.specifiers.length === 0) {\n return false;\n }\n\n return statement.specifiers.every(\n (specifier) =>\n specifier.type === 'ImportSpecifier' && specifier.importKind === 'type'\n );\n};\n\nconst isTypeOnlyExport = (\n statement: ExportAllDeclaration | ExportNamedDeclaration | ExportSpecifier\n): boolean => 'exportKind' in statement && statement.exportKind === 'type';\n\nconst isTypeOnlyStatement = (statement: Statement): boolean => {\n switch (statement.type) {\n case 'EmptyStatement':\n case 'TSDeclareFunction':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n return true;\n default:\n return false;\n }\n};\n\nconst getChildren = (node: Node): { key: string; node: Node }[] => {\n const result: { key: string; node: Node }[] = [];\n const record = node as AnyNode;\n\n Object.keys(record).forEach((key) => {\n if (key === 'type' || key === 'start' || key === 'end' || key === 'range') {\n return;\n }\n\n const value = record[key];\n if (value && typeof value === 'object') {\n if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item && typeof item === 'object' && 'type' in item) {\n result.push({ key, node: item as Node });\n }\n });\n return;\n }\n\n if ('type' in value) {\n result.push({ key, node: value as Node });\n }\n }\n });\n\n return result;\n};\n\nconst collectBindingNames = (\n pattern: BindingPattern | Node | null | undefined\n): string[] => {\n if (!pattern) {\n return [];\n }\n\n if (pattern.type === 'Identifier') {\n return [pattern.name];\n }\n\n if (pattern.type === 'RestElement') {\n return collectBindingNames(pattern.argument);\n }\n\n if (pattern.type === 'AssignmentPattern') {\n return collectBindingNames(pattern.left);\n }\n\n if (pattern.type === 'ObjectPattern') {\n return pattern.properties.flatMap((property) =>\n property.type === 'RestElement'\n ? collectBindingNames(property.argument)\n : collectBindingNames(property.value)\n );\n }\n\n if (pattern.type === 'ArrayPattern') {\n return pattern.elements.flatMap((element) => collectBindingNames(element));\n }\n\n return [];\n};\n\nconst getLocalDeclarationNames = (\n declaration: ExportNamedDeclaration['declaration']\n): string[] | null => {\n if (!declaration) {\n return [];\n }\n\n if (declaration.type === 'VariableDeclaration') {\n return (declaration as VariableDeclaration).declarations.flatMap(\n (declarator) => collectBindingNames(declarator.id)\n );\n }\n\n if (\n (declaration.type === 'FunctionDeclaration' ||\n declaration.type === 'ClassDeclaration') &&\n declaration.id\n ) {\n return [declaration.id.name];\n }\n\n if (\n declaration.type === 'TSEnumDeclaration' ||\n declaration.type === 'TSModuleDeclaration'\n ) {\n return null;\n }\n\n return [];\n};\n\nconst collectImportBinding = (\n statement: ImportDeclaration,\n imports: Map<string, LocalImportBinding>\n): boolean => {\n if (statement.importKind === 'type') {\n return true;\n }\n\n if (statement.specifiers.length === 0) {\n return false;\n }\n\n let sawValueImport = false;\n for (const specifier of statement.specifiers) {\n if (\n specifier.type === 'ImportSpecifier' &&\n specifier.importKind === 'type'\n ) {\n continue;\n }\n\n sawValueImport = true;\n\n if (specifier.type === 'ImportSpecifier') {\n imports.set(specifier.local.name, {\n imported: nameFromModuleExport(specifier.imported),\n kind: 'named',\n source: statement.source.value,\n });\n continue;\n }\n\n if (specifier.type === 'ImportDefaultSpecifier') {\n imports.set(specifier.local.name, {\n imported: 'default',\n kind: 'named',\n source: statement.source.value,\n });\n continue;\n }\n\n imports.set(specifier.local.name, {\n kind: 'namespace',\n source: statement.source.value,\n });\n }\n\n return sawValueImport || isTypeOnlyImport(statement);\n};\n\nconst getNamedReexport = (\n specifier: ExportSpecifier,\n source: string\n): RawBarrelReexport => ({\n exported: nameFromModuleExport(specifier.exported),\n imported: nameFromModuleExport(specifier.local),\n kind: 'named',\n source,\n});\n\nconst collectExportNamedDeclaration = (\n statement: ExportNamedDeclaration,\n reexports: RawBarrelReexport[],\n explicitExports: Set<string>\n): boolean => {\n if (!statement.source) {\n return isTypeOnlyExport(statement);\n }\n\n if (isTypeOnlyExport(statement)) {\n return true;\n }\n\n const source = statement.source.value;\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ExportSpecifier') {\n return false;\n }\n\n if (specifier.exportKind === 'type') {\n continue;\n }\n\n explicitExports.add(nameFromModuleExport(specifier.exported));\n reexports.push(getNamedReexport(specifier, source));\n }\n\n return statement.specifiers.length > 0;\n};\n\nconst collectLocalExportNamedDeclaration = (\n statement: ExportNamedDeclaration,\n importedBindings: Map<string, LocalImportBinding>,\n passthroughCandidates: Map<string, string[]>,\n explicitExports: Set<string>\n): { complete: boolean; ok: boolean } => {\n let complete = true;\n\n if (isTypeOnlyExport(statement)) {\n return {\n complete: true,\n ok: true,\n };\n }\n\n if (statement.declaration) {\n const names = getLocalDeclarationNames(statement.declaration);\n if (names === null) {\n return {\n complete: false,\n ok: false,\n };\n }\n\n names.forEach((name) => explicitExports.add(name));\n\n return {\n complete: names.length === 0,\n ok: true,\n };\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ExportSpecifier') {\n return {\n complete: false,\n ok: false,\n };\n }\n\n if (specifier.exportKind === 'type') {\n continue;\n }\n\n const exported = nameFromModuleExport(specifier.exported);\n explicitExports.add(exported);\n\n if (specifier.local.type !== 'Identifier') {\n complete = false;\n continue;\n }\n\n if (!importedBindings.has(specifier.local.name)) {\n complete = false;\n continue;\n }\n\n if (!passthroughCandidates.has(specifier.local.name)) {\n passthroughCandidates.set(specifier.local.name, []);\n }\n passthroughCandidates.get(specifier.local.name)!.push(exported);\n }\n\n return {\n complete: complete && statement.specifiers.length > 0,\n ok: true,\n };\n};\n\nconst isBindingIdentifier = (\n node: Node,\n parent: Node | null,\n key: string\n): boolean => {\n if (!parent) {\n return false;\n }\n\n if (\n (parent.type === 'ImportSpecifier' ||\n parent.type === 'ImportDefaultSpecifier' ||\n parent.type === 'ImportNamespaceSpecifier') &&\n key === 'local'\n ) {\n return true;\n }\n\n if (parent.type === 'VariableDeclarator' && key === 'id') {\n return true;\n }\n\n if (\n (parent.type === 'FunctionDeclaration' ||\n parent.type === 'ClassDeclaration') &&\n key === 'id'\n ) {\n return true;\n }\n\n return false;\n};\n\nconst countBindingReferences = (\n node: Node,\n names: Set<string>,\n counts: Map<string, number>,\n parent: Node | null = null,\n key = ''\n): void => {\n if (node.type === 'ImportDeclaration' || node.type.startsWith('TS')) {\n return;\n }\n\n if (\n node.type === 'Identifier' &&\n names.has(node.name) &&\n !isBindingIdentifier(node, parent, key) &&\n !(parent?.type === 'ExportSpecifier' && key === 'exported') &&\n !(parent?.type === 'Property' && parent.key === node && !parent.computed)\n ) {\n counts.set(node.name, (counts.get(node.name) ?? 0) + 1);\n }\n\n getChildren(node).forEach((child) =>\n countBindingReferences(child.node, names, counts, node, child.key)\n );\n};\n\nconst collectPassthroughReexports = (\n program: Program,\n importedBindings: Map<string, LocalImportBinding>,\n passthroughCandidates: Map<string, string[]>,\n reexports: RawBarrelReexport[]\n): { complete: boolean; ok: boolean } => {\n let complete = true;\n const candidateNames = new Set(passthroughCandidates.keys());\n const bindingReferenceCounts = new Map<string, number>();\n\n countBindingReferences(program, candidateNames, bindingReferenceCounts);\n\n for (const [localName, exportedNames] of passthroughCandidates) {\n if ((bindingReferenceCounts.get(localName) ?? 0) !== exportedNames.length) {\n complete = false;\n continue;\n }\n\n const imported = importedBindings.get(localName)!;\n for (const exported of exportedNames) {\n if (imported.kind === 'namespace') {\n reexports.push({\n exported,\n kind: 'namespace',\n source: imported.source,\n });\n continue;\n }\n\n reexports.push({\n exported,\n imported: imported.imported,\n kind: 'named',\n source: imported.source,\n });\n }\n }\n\n return {\n complete,\n ok: true,\n };\n};\n\nconst parseProgram = (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: 'module',\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 analyzeBarrelProgram = (program: Program): RawBarrelManifest | null => {\n const reexports: RawBarrelReexport[] = [];\n const explicitExports = new Set<string>();\n const exportAll: string[] = [];\n const importedBindings = new Map<string, LocalImportBinding>();\n const passthroughCandidates = new Map<string, string[]>();\n let complete = true;\n\n for (const statement of program.body as Statement[]) {\n if (statement.type === 'ImportDeclaration') {\n if (!collectImportBinding(statement, importedBindings)) {\n return null;\n }\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration') {\n if (statement.source) {\n if (\n !collectExportNamedDeclaration(statement, reexports, explicitExports)\n ) {\n return null;\n }\n continue;\n }\n\n const localResult = collectLocalExportNamedDeclaration(\n statement,\n importedBindings,\n passthroughCandidates,\n explicitExports\n );\n if (!localResult.ok) {\n return null;\n }\n complete = complete && localResult.complete;\n continue;\n }\n\n if (statement.type === 'ExportAllDeclaration') {\n if (isTypeOnlyExport(statement)) {\n continue;\n }\n\n if (statement.exported) {\n explicitExports.add(nameFromModuleExport(statement.exported));\n reexports.push({\n exported: nameFromModuleExport(statement.exported),\n kind: 'namespace',\n source: statement.source.value,\n });\n continue;\n }\n\n exportAll.push(statement.source.value);\n continue;\n }\n\n if (statement.type === 'ExportDefaultDeclaration') {\n return null;\n }\n\n if (!isTypeOnlyStatement(statement)) {\n return null;\n }\n }\n\n const passthroughResult = collectPassthroughReexports(\n program,\n importedBindings,\n passthroughCandidates,\n reexports\n );\n if (!passthroughResult.ok) {\n return null;\n }\n complete = complete && passthroughResult.complete;\n\n if (reexports.length === 0 && exportAll.length === 0) {\n return null;\n }\n\n return {\n complete,\n explicitExports: [...explicitExports],\n exportAll,\n kind: 'barrel',\n reexports,\n };\n};\n\nexport function analyzeOxcBarrelFile(\n code: string,\n filename: string\n): BarrelManifestCacheEntry | RawBarrelManifest {\n const result = analyzeBarrelProgram(parseProgram(code, filename));\n\n if (!result) {\n return {\n kind: 'ineligible',\n reason: 'impure',\n };\n }\n\n return result;\n}\n"],"file":"oxcBarrelManifest.js"}
@@ -1,3 +1,3 @@
1
- import { logger } from '@wyw-in-js/shared';
2
- export const rootLog = logger.extend('transform');
3
- //# sourceMappingURL=rootLog.js.map
1
+ import { logger } from "@wyw-in-js/shared";
2
+ export const rootLog = logger.extend("transform");
3
+ //# sourceMappingURL=rootLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rootLog.js","names":["logger","rootLog","extend"],"sources":["../../src/transform/rootLog.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\nimport { logger } from '@wyw-in-js/shared';\n\nexport const rootLog: Debugger = logger.extend('transform');\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,OAAiB,GAAGD,MAAM,CAACE,MAAM,CAAC,WAAW,CAAC","ignoreList":[]}
1
+ {"mappings":"AACA,SAAS,cAAc;AAEvB,OAAO,MAAM,UAAoB,OAAO,OAAO,YAAY","names":[],"sources":["../../src/transform/rootLog.ts"],"version":3,"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\nimport { logger } from '@wyw-in-js/shared';\n\nexport const rootLog: Debugger = logger.extend('transform');\n"],"file":"rootLog.js"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=syntax.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"","names":[],"sources":["../../src/transform/syntax.ts"],"version":3,"sourcesContent":["export type SyntaxEngine = 'oxc';\n\nexport type SyntaxSourceLocation = {\n column: number;\n line: number;\n};\n\nexport type SyntaxSourceRange = {\n end: SyntaxSourceLocation;\n start: SyntaxSourceLocation;\n};\n\nexport type ParsedModule<TAst = unknown> = {\n ast: TAst;\n code: string;\n engine: SyntaxEngine;\n filename: string;\n};\n\nexport type ModuleImport = {\n imported: string;\n source: string;\n};\n\nexport type ModuleReexport = {\n exported: string;\n source: string;\n};\n\nexport type ModuleAnalysis = {\n exports: readonly string[];\n imports: readonly ModuleImport[];\n reexports: readonly ModuleReexport[];\n};\n\nexport type EmittedModule<TSourceMap = unknown> = {\n code: string;\n map?: TSourceMap | null;\n};\n\nexport type SyntaxAdapter<\n TAst = unknown,\n TParseOptions = unknown,\n TEmitOptions = unknown,\n> = {\n engine: SyntaxEngine;\n analyze(module: ParsedModule<TAst>): ModuleAnalysis;\n emit(module: ParsedModule<TAst>, options?: TEmitOptions): EmittedModule;\n parse(\n code: string,\n filename: string,\n options?: TParseOptions\n ): ParsedModule<TAst>;\n};\n"],"file":"syntax.js"}
@@ -1,2 +1,2 @@
1
- export const Pending = Symbol('pending');
2
- //# sourceMappingURL=types.js.map
1
+ export const Pending = Symbol("pending");
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Pending","Symbol"],"sources":["../../src/transform/types.ts"],"sourcesContent":["import type { BabelFileResult } from '@babel/core';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { TransformCacheCollection } from '../cache';\nimport type { Options, ITransformFileResult } from '../types';\nimport type { EventEmitter } from '../utils/EventEmitter';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\n\nimport type { Entrypoint } from './Entrypoint';\nimport type { LoadAndParseFn, IEntrypointDependency } from './Entrypoint.types';\nimport type { BaseAction } from './actions/BaseAction';\nimport type {\n IExtracted,\n IWorkflowActionLinariaResult,\n IWorkflowActionNonLinariaResult,\n} from './actions/types';\n\nexport type Services = {\n babel: Core;\n cache: TransformCacheCollection;\n emitWarning?: (message: string) => void;\n eventEmitter: EventEmitter;\n loadAndParseFn: LoadAndParseFn;\n log: Debugger;\n options: Options & {\n pluginOptions: StrictOptions;\n };\n};\n\nexport interface IBaseNode {\n type: ActionTypes;\n}\n\nexport type ActionByType<TType extends ActionQueueItem['type']> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\nexport const Pending = Symbol('pending');\n\nexport type YieldResult = Exclude<ActionQueueItem['result'], typeof Pending>;\n\nexport type AnyIteratorResult<TMode extends 'async' | 'sync', TResult> = {\n async: Promise<IteratorResult<YieldArg, TResult>>;\n sync: IteratorResult<YieldArg, TResult>;\n}[TMode];\n\nexport interface IBaseAction<TAction extends ActionQueueItem, TResult, TData>\n extends IBaseNode {\n actionContext: unknown;\n abortSignal: AbortSignal | null;\n createAbortSignal: () => AbortSignal & Disposable;\n data: TData;\n entrypoint: Entrypoint;\n getNext: GetNext;\n idx: string;\n result: TResult | typeof Pending;\n run: <TMode extends 'async' | 'sync'>(\n handler: Handler<TMode, TAction>\n ) => {\n next: (arg: YieldResult) => AnyIteratorResult<TMode, TResult>;\n throw(e: unknown): AnyIteratorResult<TMode, TResult>;\n };\n services: Services;\n}\n\ntype NextParams<\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n> = [\n type: TType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal?: AbortSignal | null,\n];\n\nexport type YieldArg = {\n [K in ActionQueueItem['type']]: NextParams<K>;\n}[ActionQueueItem['type']];\n\nexport type SyncScenarioFor<TResult> = {\n [Symbol.iterator](): SyncScenarioFor<TResult>;\n next(arg: YieldResult): IteratorResult<YieldArg, TResult>;\n return(value: TResult): IteratorResult<YieldArg, TResult>;\n throw(e: unknown): IteratorResult<YieldArg, TResult>;\n};\n\nexport type AsyncScenarioFor<TResult> = {\n [Symbol.asyncIterator](): AsyncScenarioFor<TResult>;\n next(arg: YieldResult): Promise<IteratorResult<YieldArg, TResult>>;\n return(\n value: TResult | PromiseLike<TResult>\n ): Promise<IteratorResult<YieldArg, TResult>>;\n throw(e: unknown): Promise<IteratorResult<YieldArg, TResult>>;\n};\n\nexport type SyncScenarioForAction<TAction extends ActionQueueItem> =\n SyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type AsyncScenarioForAction<TAction extends ActionQueueItem> =\n AsyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type Handler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n> = ((this: BaseAction<TAction>) => {\n async: AsyncScenarioForAction<TAction>;\n sync: SyncScenarioForAction<TAction>;\n}[TMode]) & {\n recover?: (e: unknown, action: BaseAction<TAction>) => YieldArg;\n};\n\nexport type Handlers<TMode extends 'async' | 'sync'> = {\n [TAction in ActionQueueItem as TAction['type']]: Handler<TMode, TAction>;\n};\n\nexport type TypeOfResult<T extends ActionQueueItem> = Exclude<\n T['result'],\n typeof Pending\n>;\n\nexport type GetNext = <\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n>(\n ...args: NextParams<TType, TNextAction>\n) => Generator<\n [TType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n>;\n\nexport interface ICollectActionResult {\n ast: BabelFileResult['ast']; // FIXME: looks like this is not used\n code: BabelFileResult['code'];\n map?: BabelFileResult['map'];\n metadata?: WYWTransformMetadata | null;\n}\n\nexport interface ICollectAction\n extends IBaseAction<\n ICollectAction,\n ICollectActionResult,\n { valueCache: ValueCache }\n > {\n type: 'collect';\n}\n\nexport interface IEvalAction\n extends IBaseAction<IEvalAction, [ValueCache, string[]] | null, undefined> {\n type: 'evalFile';\n}\n\nexport interface IExplodeReexportsAction\n extends IBaseAction<IExplodeReexportsAction, void, undefined> {\n type: 'explodeReexports';\n}\n\nexport interface IExtractAction\n extends IBaseAction<\n IExtractAction,\n IExtracted,\n { processors: { artifacts: Artifact[] }[] }\n > {\n type: 'extract';\n}\n\nexport interface IGetExportsAction\n extends IBaseAction<IGetExportsAction, string[], undefined> {\n type: 'getExports';\n}\n\nexport interface IProcessEntrypointAction\n extends IBaseAction<IProcessEntrypointAction, void, undefined> {\n type: 'processEntrypoint';\n}\n\nexport interface IProcessImportsAction\n extends IBaseAction<\n IProcessImportsAction,\n void,\n {\n resolved: IEntrypointDependency[];\n }\n > {\n type: 'processImports';\n}\n\nexport interface IResolveImportsAction\n extends IBaseAction<\n IResolveImportsAction,\n IEntrypointDependency[],\n {\n imports: Map<string, string[]> | null;\n phase?: 'initial' | 'rewritten';\n preResolved?: IEntrypointDependency[];\n }\n > {\n type: 'resolveImports';\n}\n\nexport interface ITransformAction\n extends IBaseAction<ITransformAction, ITransformFileResult, undefined> {\n type: 'transform';\n}\n\nexport interface IWorkflowAction\n extends IBaseAction<\n IWorkflowAction,\n IWorkflowActionLinariaResult | IWorkflowActionNonLinariaResult,\n undefined\n > {\n type: 'workflow';\n}\n\nexport type ActionQueueItem =\n | IEvalAction\n | IExplodeReexportsAction\n | IExtractAction\n | IGetExportsAction\n | ICollectAction\n | IProcessEntrypointAction\n | IProcessImportsAction\n | IResolveImportsAction\n | ITransformAction\n | IWorkflowAction;\n\nexport type ActionTypes = ActionQueueItem['type'];\n"],"mappings":"AA2CA,OAAO,MAAMA,OAAO,GAAGC,MAAM,CAAC,SAAS,CAAC","ignoreList":[]}
1
+ {"mappings":"AAgDA,OAAO,MAAM,UAAU,OAAO,UAAU","names":[],"sources":["../../src/transform/types.ts"],"version":3,"sourcesContent":["import type { ValueCache } from '@wyw-in-js/processor-utils';\nimport type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { TransformCacheCollection } from '../cache';\nimport type { Options, ITransformFileResult } from '../types';\nimport type { EventEmitter } from '../utils/EventEmitter';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\n\nimport type { Entrypoint } from './Entrypoint';\nimport type { LoadAndParseFn, IEntrypointDependency } from './Entrypoint.types';\nimport type { BaseAction } from './actions/BaseAction';\nimport type {\n IExtracted,\n IWorkflowActionLinariaResult,\n IWorkflowActionNonLinariaResult,\n} from './actions/types';\nimport type { EvalBroker } from '../eval/broker';\n\nexport type Services = {\n cache: TransformCacheCollection;\n emitWarning?: (message: string) => void;\n eventEmitter: EventEmitter;\n loadAndParseFn: LoadAndParseFn;\n log: Debugger;\n options: Options & {\n pluginOptions: StrictOptions;\n };\n asyncResolve?: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>;\n asyncResolveKey?: string;\n evalBroker?: EvalBroker;\n};\n\nexport interface IBaseNode {\n type: ActionTypes;\n}\n\nexport type ActionByType<TType extends ActionQueueItem['type']> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\nexport const Pending = Symbol('pending');\n\nexport type YieldResult = Exclude<ActionQueueItem['result'], typeof Pending>;\n\nexport type AnyIteratorResult<TMode extends 'async' | 'sync', TResult> = {\n async: Promise<IteratorResult<YieldArg, TResult>>;\n sync: IteratorResult<YieldArg, TResult>;\n}[TMode];\n\nexport interface IBaseAction<TAction extends ActionQueueItem, TResult, TData>\n extends IBaseNode {\n actionContext: unknown;\n abortSignal: AbortSignal | null;\n createAbortSignal: () => AbortSignal & Disposable;\n data: TData;\n entrypoint: Entrypoint;\n getNext: GetNext;\n idx: string;\n result: TResult | typeof Pending;\n run: <TMode extends 'async' | 'sync'>(\n handler: Handler<TMode, TAction>\n ) => {\n next: (arg: YieldResult) => AnyIteratorResult<TMode, TResult>;\n throw(e: unknown): AnyIteratorResult<TMode, TResult>;\n };\n services: Services;\n}\n\ntype NextParams<\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n> = [\n type: TType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal?: AbortSignal | null,\n];\n\nexport type YieldArg = {\n [K in ActionQueueItem['type']]: NextParams<K>;\n}[ActionQueueItem['type']];\n\nexport type SyncScenarioFor<TResult> = {\n [Symbol.iterator](): SyncScenarioFor<TResult>;\n next(arg: YieldResult): IteratorResult<YieldArg, TResult>;\n return(value: TResult): IteratorResult<YieldArg, TResult>;\n throw(e: unknown): IteratorResult<YieldArg, TResult>;\n};\n\nexport type AsyncScenarioFor<TResult> = {\n [Symbol.asyncIterator](): AsyncScenarioFor<TResult>;\n next(arg: YieldResult): Promise<IteratorResult<YieldArg, TResult>>;\n return(\n value: TResult | PromiseLike<TResult>\n ): Promise<IteratorResult<YieldArg, TResult>>;\n throw(e: unknown): Promise<IteratorResult<YieldArg, TResult>>;\n};\n\nexport type SyncScenarioForAction<TAction extends ActionQueueItem> =\n SyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type AsyncScenarioForAction<TAction extends ActionQueueItem> =\n AsyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type Handler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n> = ((this: BaseAction<TAction>) => {\n async: AsyncScenarioForAction<TAction>;\n sync: SyncScenarioForAction<TAction>;\n}[TMode]) & {\n recover?: (e: unknown, action: BaseAction<TAction>) => YieldArg;\n};\n\nexport type Handlers<TMode extends 'async' | 'sync'> = {\n [TAction in ActionQueueItem as TAction['type']]: Handler<TMode, TAction>;\n};\n\nexport type TypeOfResult<T extends ActionQueueItem> = Exclude<\n T['result'],\n typeof Pending\n>;\n\nexport type GetNext = <\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n>(\n ...args: NextParams<TType, TNextAction>\n) => Generator<\n [TType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n>;\n\nexport interface ICollectActionResult {\n ast: unknown; // FIXME: looks like this is not used\n code: string | null | undefined;\n map?: RawSourceMap | null;\n metadata?: WYWTransformMetadata | null;\n}\n\nexport interface ICollectAction\n extends IBaseAction<\n ICollectAction,\n ICollectActionResult,\n { valueCache: ValueCache }\n > {\n type: 'collect';\n}\n\nexport interface IEvalAction\n extends IBaseAction<IEvalAction, [ValueCache, string[]] | null, undefined> {\n type: 'evalFile';\n}\n\nexport interface IExplodeReexportsAction\n extends IBaseAction<IExplodeReexportsAction, void, undefined> {\n type: 'explodeReexports';\n}\n\nexport interface IExtractAction\n extends IBaseAction<\n IExtractAction,\n IExtracted,\n { processors: { artifacts: Artifact[] }[] }\n > {\n type: 'extract';\n}\n\nexport interface IGetExportsAction\n extends IBaseAction<IGetExportsAction, string[], undefined> {\n type: 'getExports';\n}\n\nexport interface IProcessEntrypointAction\n extends IBaseAction<IProcessEntrypointAction, void, undefined> {\n type: 'processEntrypoint';\n}\n\nexport interface IProcessImportsAction\n extends IBaseAction<\n IProcessImportsAction,\n void,\n {\n resolved: IEntrypointDependency[];\n skipParentDependencyTracking?: string[];\n }\n > {\n type: 'processImports';\n}\n\nexport interface IResolveImportsAction\n extends IBaseAction<\n IResolveImportsAction,\n IEntrypointDependency[],\n {\n imports: Map<string, string[]> | null;\n phase?: 'initial' | 'rewritten';\n preResolved?: IEntrypointDependency[];\n }\n > {\n type: 'resolveImports';\n}\n\nexport interface ITransformAction\n extends IBaseAction<ITransformAction, ITransformFileResult, undefined> {\n type: 'transform';\n}\n\nexport interface IWorkflowAction\n extends IBaseAction<\n IWorkflowAction,\n IWorkflowActionLinariaResult | IWorkflowActionNonLinariaResult,\n undefined\n > {\n type: 'workflow';\n}\n\nexport type ActionQueueItem =\n | IEvalAction\n | IExplodeReexportsAction\n | IExtractAction\n | IGetExportsAction\n | ICollectAction\n | IProcessEntrypointAction\n | IProcessImportsAction\n | IResolveImportsAction\n | ITransformAction\n | IWorkflowAction;\n\nexport type ActionTypes = ActionQueueItem['type'];\n"],"file":"types.js"}