@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
@@ -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"}