@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
package/esm/transform.js CHANGED
@@ -1,153 +1,129 @@
1
1
  /**
2
- * This file exposes sync and async transform functions that:
3
- * - parse the passed code to AST
4
- * - builds a dependency graph for the file
5
- * - shakes each dependency and removes unused code
6
- * - runs generated code in a sandbox
7
- * - collects artifacts
8
- * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.
9
- */
10
-
11
- import { isFeatureEnabled } from '@wyw-in-js/shared';
12
- import { loadWywOptions } from './transform/helpers/loadWywOptions';
13
- import { TransformCacheCollection } from './cache';
14
- import { Entrypoint } from './transform/Entrypoint';
15
- import { asyncActionRunner, syncActionRunner } from './transform/actions/actionRunner';
16
- import { baseHandlers } from './transform/generators';
17
- import { asyncResolveImports, syncResolveImports } from './transform/generators/resolveImports';
18
- import { withDefaultServices } from './transform/helpers/withDefaultServices';
19
- const memoizedSyncResolve = new WeakMap();
2
+ * This file exposes sync and async transform functions that:
3
+ * - parse the passed code to AST
4
+ * - builds a dependency graph for the file
5
+ * - shakes each dependency and removes unused code
6
+ * - runs generated code in a sandbox
7
+ * - collects artifacts
8
+ * - returns transformed code (without WYW template literals), generated CSS, source maps and transform metadata.
9
+ */
10
+ import { createHash } from "crypto";
11
+ import { isFeatureEnabled } from "@wyw-in-js/shared";
12
+ import { loadWywOptions } from "./transform/helpers/loadWywOptions.js";
13
+ import { TransformCacheCollection } from "./cache.js";
14
+ import { Entrypoint } from "./transform/Entrypoint.js";
15
+ import { asyncActionRunner } from "./transform/actions/actionRunner.js";
16
+ import { baseHandlers } from "./transform/generators/index.js";
17
+ import { asyncResolveImports } from "./transform/generators/resolveImports.js";
18
+ import { withDefaultServices } from "./transform/helpers/withDefaultServices.js";
19
+ import { getEvalBroker } from "./eval/broker.js";
20
+ import { encodeGlobals } from "./eval/serialize.js";
20
21
  const memoizedAsyncResolve = new WeakMap();
21
- const EMPTY_CUSTOM_HANDLERS = {};
22
- const memoizedActionContexts = new WeakMap();
23
- const getActionContext = (resolveImportsHandler, customHandlers) => {
24
- const customHandlersKey = Object.keys(customHandlers).length === 0 ? EMPTY_CUSTOM_HANDLERS : customHandlers;
25
- let actionContextsByHandlers = memoizedActionContexts.get(resolveImportsHandler);
26
- if (!actionContextsByHandlers) {
27
- actionContextsByHandlers = new WeakMap();
28
- memoizedActionContexts.set(resolveImportsHandler, actionContextsByHandlers);
29
- }
30
- let actionContext = actionContextsByHandlers.get(customHandlersKey);
31
- if (!actionContext) {
32
- actionContext = {};
33
- actionContextsByHandlers.set(customHandlersKey, actionContext);
34
- }
35
- return actionContext;
22
+ const resolverIds = new WeakMap();
23
+ let resolverId = 0;
24
+ const getResolverId = (fn) => {
25
+ if (typeof fn !== "function") return null;
26
+ const resolver = fn;
27
+ const cached = resolverIds.get(resolver);
28
+ if (cached) return cached;
29
+ resolverId += 1;
30
+ resolverIds.set(resolver, resolverId);
31
+ return resolverId;
36
32
  };
37
- export function transformSync(partialServices, originalCode, syncResolve, customHandlers = {}) {
38
- const {
39
- options
40
- } = partialServices;
41
- const pluginOptions = loadWywOptions(options.pluginOptions);
42
- const services = withDefaultServices({
43
- ...partialServices,
44
- options: {
45
- ...options,
46
- pluginOptions
47
- }
48
- });
49
- if (!isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)) {
50
- // If global cache is disabled, we need to create a new cache for each file
51
- services.cache = new TransformCacheCollection();
52
- }
53
- if (!memoizedSyncResolve.has(syncResolve)) {
54
- memoizedSyncResolve.set(syncResolve, function resolveImports() {
55
- return syncResolveImports.call(this, syncResolve);
56
- });
57
- }
58
- const resolveImportsHandler = memoizedSyncResolve.get(syncResolve);
59
- const actionHandlers = {
60
- ...baseHandlers,
61
- ...customHandlers,
62
- resolveImports: resolveImportsHandler
63
- };
64
- const actionContext = getActionContext(resolveImportsHandler, customHandlers);
65
- const entrypoint = Entrypoint.createRoot(services, options.filename, ['__wywPreval'], originalCode);
66
- if (entrypoint.ignored) {
67
- return {
68
- code: originalCode,
69
- sourceMap: options.inputSourceMap
70
- };
71
- }
72
- const workflowAction = entrypoint.createAction('workflow', undefined, null, actionContext);
73
- try {
74
- const result = syncActionRunner(workflowAction, actionHandlers);
75
- entrypoint.log('%s is ready', entrypoint.name);
76
- return result;
77
- } catch (err) {
78
- entrypoint.log('Unhandled error %O', err);
79
- if (isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)) {
80
- // eslint-disable-next-line no-console
81
- console.error(`Error during transform of ${entrypoint.name}:`, err);
82
- return {
83
- code: originalCode,
84
- sourceMap: options.inputSourceMap
85
- };
86
- }
87
- throw err;
88
- }
33
+ const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
34
+ const canonicalizeForHash = (value) => {
35
+ if (Array.isArray(value)) {
36
+ return value.map((item) => canonicalizeForHash(item));
37
+ }
38
+ if (isPlainObject(value)) {
39
+ return Object.fromEntries(Object.keys(value).sort().map((key) => [key, canonicalizeForHash(value[key])]));
40
+ }
41
+ return value;
42
+ };
43
+ const getEvalCacheKey = (pluginOptions, asyncResolveKey, asyncResolve) => {
44
+ const evalOptions = pluginOptions.eval ?? {};
45
+ const payload = JSON.stringify({
46
+ mode: evalOptions.mode,
47
+ resolver: evalOptions.resolver,
48
+ require: evalOptions.require,
49
+ globals: canonicalizeForHash(encodeGlobals(evalOptions.globals ?? {})),
50
+ customResolver: getResolverId(evalOptions.customResolver),
51
+ customLoader: getResolverId(evalOptions.customLoader),
52
+ // Bundlers like webpack can recreate transport resolvers per file. Allow
53
+ // them to provide a stable scope key so cache/broker reuse tracks resolver
54
+ // semantics instead of closure identity.
55
+ bundlerResolver: asyncResolveKey ?? getResolverId(asyncResolve),
56
+ overrideContext: getResolverId(pluginOptions.overrideContext),
57
+ importOverrides: pluginOptions.importOverrides ?? null,
58
+ extensions: pluginOptions.extensions,
59
+ features: pluginOptions.features
60
+ });
61
+ return createHash("sha256").update(payload).digest("hex");
62
+ };
63
+ export function transformSync(_partialServices, _originalCode, _syncResolve, _customHandlers = {}) {
64
+ throw new Error("[wyw-in-js] transformSync is not supported in v2. Use transform() (async) instead.");
89
65
  }
90
66
  export async function transform(partialServices, originalCode, asyncResolve, customHandlers = {}) {
91
- const {
92
- options
93
- } = partialServices;
94
- const pluginOptions = loadWywOptions(options.pluginOptions);
95
- const services = withDefaultServices({
96
- ...partialServices,
97
- options: {
98
- ...options,
99
- pluginOptions
100
- }
101
- });
102
- if (!isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)) {
103
- // If global cache is disabled, we need to create a new cache for each file
104
- services.cache = new TransformCacheCollection();
105
- }
106
-
107
- /*
108
- * This method can be run simultaneously for multiple files.
109
- * A shared cache is accessible for all runs, but each run has its own queue
110
- * to maintain the correct processing order. The cache stores the outcome
111
- * of tree-shaking, and if the result is already stored in the cache
112
- * but the "only" option has changed, the file will be re-processed using
113
- * the combined "only" option.
114
- */
115
- if (!memoizedAsyncResolve.has(asyncResolve)) {
116
- const resolveImports = function resolveImports() {
117
- return asyncResolveImports.call(this, asyncResolve);
118
- };
119
- memoizedAsyncResolve.set(asyncResolve, resolveImports);
120
- }
121
- const resolveImportsHandler = memoizedAsyncResolve.get(asyncResolve);
122
- const actionHandlers = {
123
- ...baseHandlers,
124
- ...customHandlers,
125
- resolveImports: resolveImportsHandler
126
- };
127
- const actionContext = getActionContext(resolveImportsHandler, customHandlers);
128
- const entrypoint = Entrypoint.createRoot(services, options.filename, ['__wywPreval'], originalCode);
129
- if (entrypoint.ignored) {
130
- return {
131
- code: originalCode,
132
- sourceMap: options.inputSourceMap
133
- };
134
- }
135
- const workflowAction = entrypoint.createAction('workflow', undefined, null, actionContext);
136
- try {
137
- const result = await asyncActionRunner(workflowAction, actionHandlers);
138
- entrypoint.log('%s is ready', entrypoint.name);
139
- return result;
140
- } catch (err) {
141
- entrypoint.log('Unhandled error %O', err);
142
- if (isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)) {
143
- // eslint-disable-next-line no-console
144
- console.error(`Error during transform of ${entrypoint.name}:`, err);
145
- return {
146
- code: originalCode,
147
- sourceMap: options.inputSourceMap
148
- };
149
- }
150
- throw err;
151
- }
67
+ const { options } = partialServices;
68
+ const pluginOptions = loadWywOptions(options.pluginOptions);
69
+ const services = withDefaultServices({
70
+ ...partialServices,
71
+ options: {
72
+ ...options,
73
+ pluginOptions
74
+ }
75
+ });
76
+ if (!isFeatureEnabled(pluginOptions.features, "globalCache", options.filename)) {
77
+ // If global cache is disabled, we need to create a new cache for each file
78
+ services.cache = new TransformCacheCollection();
79
+ }
80
+ const evalCacheKey = getEvalCacheKey(pluginOptions, services.asyncResolveKey, asyncResolve);
81
+ services.cache.setKeySalt(evalCacheKey);
82
+ services.asyncResolve = asyncResolve;
83
+ services.evalBroker = getEvalBroker(services, asyncResolve, evalCacheKey);
84
+ /*
85
+ * This method can be run simultaneously for multiple files.
86
+ * A shared cache is accessible for all runs, but each run has its own queue
87
+ * to maintain the correct processing order. The cache stores the outcome
88
+ * of tree-shaking, and if the result is already stored in the cache
89
+ * but the "only" option has changed, the file will be re-processed using
90
+ * the combined "only" option.
91
+ */
92
+ const entrypoint = Entrypoint.createRoot(services, options.filename, ["__wywPreval"], originalCode);
93
+ if (entrypoint.ignored) {
94
+ return {
95
+ code: originalCode,
96
+ sourceMap: options.inputSourceMap
97
+ };
98
+ }
99
+ // Separate top-level runs must not share action state, even for the same
100
+ // entrypoint, otherwise concurrent transforms can collide in BaseAction.run.
101
+ const workflowAction = entrypoint.createAction("workflow", undefined, null, {});
102
+ if (!memoizedAsyncResolve.has(asyncResolve)) {
103
+ const resolveImports = function resolveImports() {
104
+ return asyncResolveImports.call(this, asyncResolve);
105
+ };
106
+ memoizedAsyncResolve.set(asyncResolve, resolveImports);
107
+ }
108
+ try {
109
+ const result = await asyncActionRunner(workflowAction, {
110
+ ...baseHandlers,
111
+ ...customHandlers,
112
+ resolveImports: memoizedAsyncResolve.get(asyncResolve)
113
+ });
114
+ entrypoint.log("%s is ready", entrypoint.name);
115
+ return result;
116
+ } catch (err) {
117
+ entrypoint.log("Unhandled error %O", err);
118
+ if (isFeatureEnabled(pluginOptions.features, "softErrors", options.filename)) {
119
+ // eslint-disable-next-line no-console
120
+ console.error(`Error during transform of ${entrypoint.name}:`, err);
121
+ return {
122
+ code: originalCode,
123
+ sourceMap: options.inputSourceMap
124
+ };
125
+ }
126
+ throw err;
127
+ }
152
128
  }
153
- //# sourceMappingURL=transform.js.map
129
+ //# sourceMappingURL=transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","names":["isFeatureEnabled","loadWywOptions","TransformCacheCollection","Entrypoint","asyncActionRunner","syncActionRunner","baseHandlers","asyncResolveImports","syncResolveImports","withDefaultServices","memoizedSyncResolve","WeakMap","memoizedAsyncResolve","EMPTY_CUSTOM_HANDLERS","memoizedActionContexts","getActionContext","resolveImportsHandler","customHandlers","customHandlersKey","Object","keys","length","actionContextsByHandlers","get","set","actionContext","transformSync","partialServices","originalCode","syncResolve","options","pluginOptions","services","features","filename","cache","has","resolveImports","call","actionHandlers","entrypoint","createRoot","ignored","code","sourceMap","inputSourceMap","workflowAction","createAction","undefined","result","log","name","err","console","error","transform","asyncResolve"],"sources":["../src/transform.ts"],"sourcesContent":["/**\n * This file exposes sync and async transform functions that:\n * - parse the passed code to AST\n * - builds a dependency graph for the file\n * - shakes each dependency and removes unused code\n * - runs generated code in a sandbox\n * - collects artifacts\n * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.\n */\n\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { PartialOptions } from './transform/helpers/loadWywOptions';\nimport { loadWywOptions } from './transform/helpers/loadWywOptions';\nimport { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n asyncActionRunner,\n syncActionRunner,\n} from './transform/actions/actionRunner';\nimport { baseHandlers } from './transform/generators';\nimport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nimport { withDefaultServices } from './transform/helpers/withDefaultServices';\nimport type {\n Handler,\n Handlers,\n IResolveImportsAction,\n Services,\n} from './transform/types';\nimport type { Result } from './types';\n\ntype PartialServices = Partial<Omit<Services, 'options'>> & {\n options: Omit<Services['options'], 'pluginOptions'> & {\n pluginOptions?: PartialOptions;\n };\n};\n\ntype AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;\n\nconst memoizedSyncResolve = new WeakMap<\n (what: string, importer: string, stack: string[]) => string | null,\n Handler<'sync', IResolveImportsAction>\n>();\n\nconst memoizedAsyncResolve = new WeakMap<\n (what: string, importer: string, stack: string[]) => Promise<string | null>,\n Handler<'async' | 'sync', IResolveImportsAction>\n>();\n\nconst EMPTY_CUSTOM_HANDLERS = {};\nconst memoizedActionContexts = new WeakMap<object, WeakMap<object, object>>();\n\nconst getActionContext = (\n resolveImportsHandler: object,\n customHandlers: object\n): object => {\n const customHandlersKey =\n Object.keys(customHandlers).length === 0\n ? EMPTY_CUSTOM_HANDLERS\n : customHandlers;\n let actionContextsByHandlers = memoizedActionContexts.get(\n resolveImportsHandler\n );\n if (!actionContextsByHandlers) {\n actionContextsByHandlers = new WeakMap();\n memoizedActionContexts.set(resolveImportsHandler, actionContextsByHandlers);\n }\n\n let actionContext = actionContextsByHandlers.get(customHandlersKey);\n if (!actionContext) {\n actionContext = {};\n actionContextsByHandlers.set(customHandlersKey, actionContext);\n }\n\n return actionContext;\n};\n\nexport function transformSync(\n partialServices: PartialServices,\n originalCode: string,\n syncResolve: (what: string, importer: string, stack: string[]) => string,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Result {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n if (!memoizedSyncResolve.has(syncResolve)) {\n memoizedSyncResolve.set(\n syncResolve,\n function resolveImports(this: IResolveImportsAction) {\n return syncResolveImports.call(this, syncResolve);\n }\n );\n }\n\n const resolveImportsHandler = memoizedSyncResolve.get(syncResolve)!;\n const actionHandlers = {\n ...baseHandlers,\n ...customHandlers,\n resolveImports: resolveImportsHandler,\n };\n const actionContext = getActionContext(resolveImportsHandler, customHandlers);\n\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction(\n 'workflow',\n undefined,\n null,\n actionContext\n );\n\n try {\n const result = syncActionRunner(workflowAction, actionHandlers);\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n\nexport async function transform(\n partialServices: PartialServices,\n originalCode: string,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Promise<Result> {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n /*\n * This method can be run simultaneously for multiple files.\n * A shared cache is accessible for all runs, but each run has its own queue\n * to maintain the correct processing order. The cache stores the outcome\n * of tree-shaking, and if the result is already stored in the cache\n * but the \"only\" option has changed, the file will be re-processed using\n * the combined \"only\" option.\n */\n if (!memoizedAsyncResolve.has(asyncResolve)) {\n const resolveImports = function resolveImports(\n this: IResolveImportsAction\n ) {\n return asyncResolveImports.call(this, asyncResolve);\n };\n\n memoizedAsyncResolve.set(asyncResolve, resolveImports);\n }\n\n const resolveImportsHandler = memoizedAsyncResolve.get(asyncResolve)!;\n const actionHandlers = {\n ...baseHandlers,\n ...customHandlers,\n resolveImports: resolveImportsHandler,\n };\n const actionContext = getActionContext(resolveImportsHandler, customHandlers);\n\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction(\n 'workflow',\n undefined,\n null,\n actionContext\n );\n\n try {\n const result = await asyncActionRunner(workflowAction, actionHandlers);\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../src/transform.ts"],"version":3,"sourcesContent":["/**\n * This file exposes sync and async transform functions that:\n * - parse the passed code to AST\n * - builds a dependency graph for the file\n * - shakes each dependency and removes unused code\n * - runs generated code in a sandbox\n * - collects artifacts\n * - returns transformed code (without WYW template literals), generated CSS, source maps and transform metadata.\n */\n\nimport { createHash } from 'crypto';\n\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { PartialOptions } from './transform/helpers/loadWywOptions';\nimport { loadWywOptions } from './transform/helpers/loadWywOptions';\nimport { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport { asyncActionRunner } from './transform/actions/actionRunner';\nimport { baseHandlers } from './transform/generators';\nimport { asyncResolveImports } from './transform/generators/resolveImports';\nimport { withDefaultServices } from './transform/helpers/withDefaultServices';\nimport type {\n Handler,\n Handlers,\n IResolveImportsAction,\n Services,\n} from './transform/types';\nimport type { Result } from './types';\nimport { getEvalBroker } from './eval/broker';\nimport { encodeGlobals } from './eval/serialize';\n\ntype PartialServices = Partial<Omit<Services, 'options'>> & {\n options: Omit<Services['options'], 'pluginOptions'> & {\n pluginOptions?: PartialOptions;\n };\n};\n\ntype AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;\n\nconst memoizedAsyncResolve = new WeakMap<\n (what: string, importer: string, stack: string[]) => Promise<string | null>,\n Handler<'async' | 'sync', IResolveImportsAction>\n>();\n\ntype ResolverFn = (...args: unknown[]) => unknown;\n\nconst resolverIds = new WeakMap<ResolverFn, number>();\nlet resolverId = 0;\n\nconst getResolverId = (fn: unknown) => {\n if (typeof fn !== 'function') return null;\n const resolver = fn as ResolverFn;\n const cached = resolverIds.get(resolver);\n if (cached) return cached;\n resolverId += 1;\n resolverIds.set(resolver, resolverId);\n return resolverId;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst canonicalizeForHash = (value: unknown): unknown => {\n if (Array.isArray(value)) {\n return value.map((item) => canonicalizeForHash(item));\n }\n\n if (isPlainObject(value)) {\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, canonicalizeForHash(value[key])])\n );\n }\n\n return value;\n};\n\nconst getEvalCacheKey = (\n pluginOptions: ReturnType<typeof loadWywOptions>,\n asyncResolveKey: string | undefined,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>\n) => {\n const evalOptions = pluginOptions.eval ?? {};\n const payload = JSON.stringify({\n mode: evalOptions.mode,\n resolver: evalOptions.resolver,\n require: evalOptions.require,\n globals: canonicalizeForHash(encodeGlobals(evalOptions.globals ?? {})),\n customResolver: getResolverId(evalOptions.customResolver),\n customLoader: getResolverId(evalOptions.customLoader),\n // Bundlers like webpack can recreate transport resolvers per file. Allow\n // them to provide a stable scope key so cache/broker reuse tracks resolver\n // semantics instead of closure identity.\n bundlerResolver: asyncResolveKey ?? getResolverId(asyncResolve),\n overrideContext: getResolverId(pluginOptions.overrideContext),\n importOverrides: pluginOptions.importOverrides ?? null,\n extensions: pluginOptions.extensions,\n features: pluginOptions.features,\n });\n\n return createHash('sha256').update(payload).digest('hex');\n};\n\nexport function transformSync(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _partialServices: PartialServices,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _originalCode: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _syncResolve: (what: string, importer: string, stack: string[]) => string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Result {\n throw new Error(\n '[wyw-in-js] transformSync is not supported in v2. Use transform() (async) instead.'\n );\n}\n\nexport async function transform(\n partialServices: PartialServices,\n originalCode: string,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Promise<Result> {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n const evalCacheKey = getEvalCacheKey(\n pluginOptions,\n services.asyncResolveKey,\n asyncResolve\n );\n services.cache.setKeySalt(evalCacheKey);\n services.asyncResolve = asyncResolve;\n services.evalBroker = getEvalBroker(services, asyncResolve, evalCacheKey);\n\n /*\n * This method can be run simultaneously for multiple files.\n * A shared cache is accessible for all runs, but each run has its own queue\n * to maintain the correct processing order. The cache stores the outcome\n * of tree-shaking, and if the result is already stored in the cache\n * but the \"only\" option has changed, the file will be re-processed using\n * the combined \"only\" option.\n */\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n // Separate top-level runs must not share action state, even for the same\n // entrypoint, otherwise concurrent transforms can collide in BaseAction.run.\n const workflowAction = entrypoint.createAction(\n 'workflow',\n undefined,\n null,\n {}\n );\n\n if (!memoizedAsyncResolve.has(asyncResolve)) {\n const resolveImports = function resolveImports(\n this: IResolveImportsAction\n ) {\n return asyncResolveImports.call(this, asyncResolve);\n };\n\n memoizedAsyncResolve.set(asyncResolve, resolveImports);\n }\n\n try {\n const result = await asyncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports: memoizedAsyncResolve.get(asyncResolve)!,\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n"],"file":"transform.js"}
package/esm/types.js CHANGED
@@ -1,2 +1,5 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
2
+ /**
3
+ * CSS-related types
4
+ */
5
+ //# sourceMappingURL=types.js.map
package/esm/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n keepComments?: boolean | RegExp;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":"","ignoreList":[]}
1
+ {"mappings":"","names":[],"sources":["../src/types.ts"],"version":3,"sourcesContent":["import type { RawSourceMap } from 'source-map';\n\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type {\n WYWTransformMetadata,\n WYWTransformResultMetadata,\n} from './utils/TransformMetadata';\nimport type { WYWTransformDiagnostic } from './utils/TransformDiagnostics';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n diagnostics?: WYWTransformDiagnostic[];\n metadata?: WYWTransformResultMetadata;\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n keepComments?: boolean | RegExp;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"file":"types.js"}
@@ -1,52 +1,50 @@
1
- export const isOnActionStartArgs = args => {
2
- return args[0] === 'start';
1
+ export const isOnActionStartArgs = (args) => {
2
+ return args[0] === "start";
3
3
  };
4
- export const isOnActionFinishArgs = args => {
5
- return args[0] === 'finish' || args[0] === 'fail';
4
+ export const isOnActionFinishArgs = (args) => {
5
+ return args[0] === "finish" || args[0] === "fail";
6
6
  };
7
7
  export class EventEmitter {
8
- static dummy = new EventEmitter(() => {}, () => 0, () => {});
9
- constructor(onEvent, onAction, onEntrypointEvent) {
10
- this.onEvent = onEvent;
11
- this.onAction = onAction;
12
- this.onEntrypointEvent = onEntrypointEvent;
13
- }
14
- action(actonType, idx, entrypointRef, fn) {
15
- const id = this.onAction('start', performance.now(), actonType, idx, entrypointRef);
16
- try {
17
- const result = fn();
18
- if (result instanceof Promise) {
19
- result.then(() => this.onAction('finish', performance.now(), id, true), e => this.onAction('fail', performance.now(), id, true, e));
20
- } else {
21
- this.onAction('finish', performance.now(), id, false);
22
- }
23
- return result;
24
- } catch (e) {
25
- this.onAction('fail', performance.now(), id, false, e);
26
- throw e;
27
- }
28
- }
29
- entrypointEvent(sequenceId, event) {
30
- this.onEntrypointEvent(sequenceId, performance.now(), event);
31
- }
32
- perf(method, fn) {
33
- const labels = {
34
- method
35
- };
36
- this.onEvent(labels, 'start');
37
- const result = fn();
38
- if (result instanceof Promise) {
39
- result.then(() => this.onEvent(labels, 'finish'), () => this.onEvent(labels, 'finish'));
40
- } else {
41
- this.onEvent(labels, 'finish');
42
- }
43
- return result;
44
- }
45
- single(labels) {
46
- this.onEvent({
47
- ...labels,
48
- datetime: new Date()
49
- }, 'single');
50
- }
8
+ static dummy = new EventEmitter(() => {}, () => 0, () => {});
9
+ constructor(onEvent, onAction, onEntrypointEvent) {
10
+ this.onEvent = onEvent;
11
+ this.onAction = onAction;
12
+ this.onEntrypointEvent = onEntrypointEvent;
13
+ }
14
+ action(actonType, idx, entrypointRef, fn) {
15
+ const id = this.onAction("start", performance.now(), actonType, idx, entrypointRef);
16
+ try {
17
+ const result = fn();
18
+ if (result instanceof Promise) {
19
+ result.then(() => this.onAction("finish", performance.now(), id, true), (e) => this.onAction("fail", performance.now(), id, true, e));
20
+ } else {
21
+ this.onAction("finish", performance.now(), id, false);
22
+ }
23
+ return result;
24
+ } catch (e) {
25
+ this.onAction("fail", performance.now(), id, false, e);
26
+ throw e;
27
+ }
28
+ }
29
+ entrypointEvent(sequenceId, event) {
30
+ this.onEntrypointEvent(sequenceId, performance.now(), event);
31
+ }
32
+ perf(method, fn) {
33
+ const labels = { method };
34
+ this.onEvent(labels, "start");
35
+ const result = fn();
36
+ if (result instanceof Promise) {
37
+ result.then(() => this.onEvent(labels, "finish"), () => this.onEvent(labels, "finish"));
38
+ } else {
39
+ this.onEvent(labels, "finish");
40
+ }
41
+ return result;
42
+ }
43
+ single(labels) {
44
+ this.onEvent({
45
+ ...labels,
46
+ datetime: new Date()
47
+ }, "single");
48
+ }
51
49
  }
52
- //# sourceMappingURL=EventEmitter.js.map
50
+ //# sourceMappingURL=EventEmitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.js","names":["isOnActionStartArgs","args","isOnActionFinishArgs","EventEmitter","dummy","constructor","onEvent","onAction","onEntrypointEvent","action","actonType","idx","entrypointRef","fn","id","performance","now","result","Promise","then","e","entrypointEvent","sequenceId","event","perf","method","labels","single","datetime","Date"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["export type OnEvent = (\n labels: Record<string, unknown>,\n type: 'start' | 'finish' | 'single',\n event?: unknown\n) => void;\n\nexport interface IActionCreated {\n actionIdx: string;\n actionType: string;\n type: 'actionCreated';\n}\n\nexport interface ICreatedEvent {\n class: string;\n evaluatedOnly: string[];\n filename: string;\n generation: number;\n idx: string;\n isExportsInherited: boolean;\n only: string[];\n parentId: number | null;\n type: 'created';\n}\n\nexport interface ISupersededEvent {\n type: 'superseded';\n with: number;\n}\n\nexport interface ISetTransformResultEvent {\n isNull: boolean;\n type: 'setTransformResult';\n}\n\nexport type EntrypointEvent =\n | IActionCreated\n | ICreatedEvent\n | ISupersededEvent\n | ISetTransformResultEvent;\n\nexport type OnEntrypointEvent = (\n idx: number,\n timestamp: number,\n event: EntrypointEvent\n) => void;\n\nexport type OnActionStartArgs = [\n phase: 'start',\n timestamp: number,\n type: string,\n idx: string,\n entrypointRef: string,\n];\n\nexport type OnActionFinishArgs = [\n phase: 'finish' | 'fail',\n timestamp: number,\n id: number,\n isAsync: boolean,\n error?: unknown,\n];\n\nexport const isOnActionStartArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionStartArgs => {\n return args[0] === 'start';\n};\n\nexport const isOnActionFinishArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionFinishArgs => {\n return args[0] === 'finish' || args[0] === 'fail';\n};\n\nexport interface OnAction {\n (...args: OnActionStartArgs): number;\n (...args: OnActionFinishArgs): void;\n}\n\nexport class EventEmitter {\n static dummy = new EventEmitter(\n () => {},\n () => 0,\n () => {}\n );\n\n constructor(\n protected onEvent: OnEvent,\n protected onAction: OnAction,\n protected onEntrypointEvent: OnEntrypointEvent\n ) {}\n\n public action<TRes>(\n actonType: string,\n idx: string,\n entrypointRef: string,\n fn: () => TRes\n ) {\n const id = this.onAction(\n 'start',\n performance.now(),\n actonType,\n idx,\n entrypointRef\n );\n\n try {\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onAction('finish', performance.now(), id, true),\n (e) => this.onAction('fail', performance.now(), id, true, e)\n );\n } else {\n this.onAction('finish', performance.now(), id, false);\n }\n\n return result;\n } catch (e) {\n this.onAction('fail', performance.now(), id, false, e);\n throw e;\n }\n }\n\n public entrypointEvent(sequenceId: number, event: EntrypointEvent) {\n this.onEntrypointEvent(sequenceId, performance.now(), event);\n }\n\n public perf<TRes>(method: string, fn: () => TRes): TRes {\n const labels = { method };\n\n this.onEvent(labels, 'start');\n\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onEvent(labels, 'finish'),\n () => this.onEvent(labels, 'finish')\n );\n } else {\n this.onEvent(labels, 'finish');\n }\n\n return result;\n }\n\n public single(labels: Record<string, unknown>) {\n this.onEvent(\n {\n ...labels,\n datetime: new Date(),\n },\n 'single'\n );\n }\n}\n"],"mappings":"AA8DA,OAAO,MAAMA,mBAAmB,GAC9BC,IAA4C,IACd;EAC9B,OAAOA,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;AAC5B,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAC/BD,IAA4C,IACb;EAC/B,OAAOA,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;AACnD,CAAC;AAOD,OAAO,MAAME,YAAY,CAAC;EACxB,OAAOC,KAAK,GAAG,IAAID,YAAY,CAC7B,MAAM,CAAC,CAAC,EACR,MAAM,CAAC,EACP,MAAM,CAAC,CACT,CAAC;EAEDE,WAAWA,CACCC,OAAgB,EAChBC,QAAkB,EAClBC,iBAAoC,EAC9C;IAAA,KAHUF,OAAgB,GAAhBA,OAAgB;IAAA,KAChBC,QAAkB,GAAlBA,QAAkB;IAAA,KAClBC,iBAAoC,GAApCA,iBAAoC;EAC7C;EAEIC,MAAMA,CACXC,SAAiB,EACjBC,GAAW,EACXC,aAAqB,EACrBC,EAAc,EACd;IACA,MAAMC,EAAE,GAAG,IAAI,CAACP,QAAQ,CACtB,OAAO,EACPQ,WAAW,CAACC,GAAG,CAAC,CAAC,EACjBN,SAAS,EACTC,GAAG,EACHC,aACF,CAAC;IAED,IAAI;MACF,MAAMK,MAAM,GAAGJ,EAAE,CAAC,CAAC;MACnB,IAAII,MAAM,YAAYC,OAAO,EAAE;QAC7BD,MAAM,CAACE,IAAI,CACT,MAAM,IAAI,CAACZ,QAAQ,CAAC,QAAQ,EAAEQ,WAAW,CAACC,GAAG,CAAC,CAAC,EAAEF,EAAE,EAAE,IAAI,CAAC,EACzDM,CAAC,IAAK,IAAI,CAACb,QAAQ,CAAC,MAAM,EAAEQ,WAAW,CAACC,GAAG,CAAC,CAAC,EAAEF,EAAE,EAAE,IAAI,EAAEM,CAAC,CAC7D,CAAC;MACH,CAAC,MAAM;QACL,IAAI,CAACb,QAAQ,CAAC,QAAQ,EAAEQ,WAAW,CAACC,GAAG,CAAC,CAAC,EAAEF,EAAE,EAAE,KAAK,CAAC;MACvD;MAEA,OAAOG,MAAM;IACf,CAAC,CAAC,OAAOG,CAAC,EAAE;MACV,IAAI,CAACb,QAAQ,CAAC,MAAM,EAAEQ,WAAW,CAACC,GAAG,CAAC,CAAC,EAAEF,EAAE,EAAE,KAAK,EAAEM,CAAC,CAAC;MACtD,MAAMA,CAAC;IACT;EACF;EAEOC,eAAeA,CAACC,UAAkB,EAAEC,KAAsB,EAAE;IACjE,IAAI,CAACf,iBAAiB,CAACc,UAAU,EAAEP,WAAW,CAACC,GAAG,CAAC,CAAC,EAAEO,KAAK,CAAC;EAC9D;EAEOC,IAAIA,CAAOC,MAAc,EAAEZ,EAAc,EAAQ;IACtD,MAAMa,MAAM,GAAG;MAAED;IAAO,CAAC;IAEzB,IAAI,CAACnB,OAAO,CAACoB,MAAM,EAAE,OAAO,CAAC;IAE7B,MAAMT,MAAM,GAAGJ,EAAE,CAAC,CAAC;IACnB,IAAII,MAAM,YAAYC,OAAO,EAAE;MAC7BD,MAAM,CAACE,IAAI,CACT,MAAM,IAAI,CAACb,OAAO,CAACoB,MAAM,EAAE,QAAQ,CAAC,EACpC,MAAM,IAAI,CAACpB,OAAO,CAACoB,MAAM,EAAE,QAAQ,CACrC,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAACpB,OAAO,CAACoB,MAAM,EAAE,QAAQ,CAAC;IAChC;IAEA,OAAOT,MAAM;EACf;EAEOU,MAAMA,CAACD,MAA+B,EAAE;IAC7C,IAAI,CAACpB,OAAO,CACV;MACE,GAAGoB,MAAM;MACTE,QAAQ,EAAE,IAAIC,IAAI,CAAC;IACrB,CAAC,EACD,QACF,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"mappings":"AA8DA,OAAO,MAAM,uBACX,SAC8B;AAC9B,QAAO,KAAK,OAAO;;AAGrB,OAAO,MAAM,wBACX,SAC+B;AAC/B,QAAO,KAAK,OAAO,YAAY,KAAK,OAAO;;AAQ7C,OAAO,MAAM,aAAa;CACxB,OAAO,QAAQ,IAAI,mBACX,UACA,SACA,GACP;CAED,YACE,AAAU,SACV,AAAU,UACV,AAAU,mBACV;EAHU;EACA;EACA;;CAGZ,AAAO,OACL,WACA,KACA,eACA,IACA;EACA,MAAM,KAAK,KAAK,SACd,SACA,YAAY,KAAK,EACjB,WACA,KACA,cACD;AAED,MAAI;GACF,MAAM,SAAS,IAAI;AACnB,OAAI,kBAAkB,SAAS;AAC7B,WAAO,WACC,KAAK,SAAS,UAAU,YAAY,KAAK,EAAE,IAAI,KAAK,GACzD,MAAM,KAAK,SAAS,QAAQ,YAAY,KAAK,EAAE,IAAI,MAAM,EAAE,CAC7D;UACI;AACL,SAAK,SAAS,UAAU,YAAY,KAAK,EAAE,IAAI,MAAM;;AAGvD,UAAO;WACA,GAAG;AACV,QAAK,SAAS,QAAQ,YAAY,KAAK,EAAE,IAAI,OAAO,EAAE;AACtD,SAAM;;;CAIV,AAAO,gBAAgB,YAAoB,OAAwB;AACjE,OAAK,kBAAkB,YAAY,YAAY,KAAK,EAAE,MAAM;;CAG9D,AAAO,KAAW,QAAgB,IAAsB;EACtD,MAAM,SAAS,EAAE,QAAQ;AAEzB,OAAK,QAAQ,QAAQ,QAAQ;EAE7B,MAAM,SAAS,IAAI;AACnB,MAAI,kBAAkB,SAAS;AAC7B,UAAO,WACC,KAAK,QAAQ,QAAQ,SAAS,QAC9B,KAAK,QAAQ,QAAQ,SAAS,CACrC;SACI;AACL,QAAK,QAAQ,QAAQ,SAAS;;AAGhC,SAAO;;CAGT,AAAO,OAAO,QAAiC;AAC7C,OAAK,QACH;GACE,GAAG;GACH,UAAU,IAAI,MAAM;GACrB,EACD,SACD","names":[],"sources":["../../src/utils/EventEmitter.ts"],"version":3,"sourcesContent":["export type OnEvent = (\n labels: Record<string, unknown>,\n type: 'start' | 'finish' | 'single',\n event?: unknown\n) => void;\n\nexport interface IActionCreated {\n actionIdx: string;\n actionType: string;\n type: 'actionCreated';\n}\n\nexport interface ICreatedEvent {\n class: string;\n evaluatedOnly: string[];\n filename: string;\n generation: number;\n idx: string;\n isExportsInherited: boolean;\n only: string[];\n parentId: number | null;\n type: 'created';\n}\n\nexport interface ISupersededEvent {\n type: 'superseded';\n with: number;\n}\n\nexport interface ISetTransformResultEvent {\n isNull: boolean;\n type: 'setTransformResult';\n}\n\nexport type EntrypointEvent =\n | IActionCreated\n | ICreatedEvent\n | ISupersededEvent\n | ISetTransformResultEvent;\n\nexport type OnEntrypointEvent = (\n idx: number,\n timestamp: number,\n event: EntrypointEvent\n) => void;\n\nexport type OnActionStartArgs = [\n phase: 'start',\n timestamp: number,\n type: string,\n idx: string,\n entrypointRef: string,\n];\n\nexport type OnActionFinishArgs = [\n phase: 'finish' | 'fail',\n timestamp: number,\n id: number,\n isAsync: boolean,\n error?: unknown,\n];\n\nexport const isOnActionStartArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionStartArgs => {\n return args[0] === 'start';\n};\n\nexport const isOnActionFinishArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionFinishArgs => {\n return args[0] === 'finish' || args[0] === 'fail';\n};\n\nexport interface OnAction {\n (...args: OnActionStartArgs): number;\n (...args: OnActionFinishArgs): void;\n}\n\nexport class EventEmitter {\n static dummy = new EventEmitter(\n () => {},\n () => 0,\n () => {}\n );\n\n constructor(\n protected onEvent: OnEvent,\n protected onAction: OnAction,\n protected onEntrypointEvent: OnEntrypointEvent\n ) {}\n\n public action<TRes>(\n actonType: string,\n idx: string,\n entrypointRef: string,\n fn: () => TRes\n ) {\n const id = this.onAction(\n 'start',\n performance.now(),\n actonType,\n idx,\n entrypointRef\n );\n\n try {\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onAction('finish', performance.now(), id, true),\n (e) => this.onAction('fail', performance.now(), id, true, e)\n );\n } else {\n this.onAction('finish', performance.now(), id, false);\n }\n\n return result;\n } catch (e) {\n this.onAction('fail', performance.now(), id, false, e);\n throw e;\n }\n }\n\n public entrypointEvent(sequenceId: number, event: EntrypointEvent) {\n this.onEntrypointEvent(sequenceId, performance.now(), event);\n }\n\n public perf<TRes>(method: string, fn: () => TRes): TRes {\n const labels = { method };\n\n this.onEvent(labels, 'start');\n\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onEvent(labels, 'finish'),\n () => this.onEvent(labels, 'finish')\n );\n } else {\n this.onEvent(labels, 'finish');\n }\n\n return result;\n }\n\n public single(labels: Record<string, unknown>) {\n this.onEvent(\n {\n ...labels,\n datetime: new Date(),\n },\n 'single'\n );\n }\n}\n"],"file":"EventEmitter.js"}
@@ -1,2 +1,2 @@
1
- export const hasShakerMetadata = metadata => metadata !== undefined && 'wywEvaluator' in metadata;
2
- //# sourceMappingURL=ShakerMetadata.js.map
1
+ export const hasShakerMetadata = (metadata) => metadata !== undefined && "wywEvaluator" in metadata;
2
+ //# sourceMappingURL=ShakerMetadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShakerMetadata.js","names":["hasShakerMetadata","metadata","undefined"],"sources":["../../src/utils/ShakerMetadata.ts"],"sourcesContent":["export interface IShakerMetadata {\n imports: Map<string, string[]>;\n}\n\nexport interface IMetadata {\n wywEvaluator: IShakerMetadata;\n}\n\nexport const hasShakerMetadata = (\n metadata: object | undefined\n): metadata is IMetadata =>\n metadata !== undefined && 'wywEvaluator' in metadata;\n"],"mappings":"AAQA,OAAO,MAAMA,iBAAiB,GAC5BC,QAA4B,IAE5BA,QAAQ,KAAKC,SAAS,IAAI,cAAc,IAAID,QAAQ","ignoreList":[]}
1
+ {"mappings":"AAQA,OAAO,MAAM,qBACX,aAEA,aAAa,aAAa,kBAAkB","names":[],"sources":["../../src/utils/ShakerMetadata.ts"],"version":3,"sourcesContent":["export interface IShakerMetadata {\n imports: Map<string, string[]>;\n}\n\nexport interface IMetadata {\n wywEvaluator: IShakerMetadata;\n}\n\nexport const hasShakerMetadata = (\n metadata: object | undefined\n): metadata is IMetadata =>\n metadata !== undefined && 'wywEvaluator' in metadata;\n"],"file":"ShakerMetadata.js"}
@@ -0,0 +1,10 @@
1
+ import { isProcessorDiagnosticArtifact } from "@wyw-in-js/processor-utils";
2
+ export const collectTransformDiagnostics = (filename, processors) => processors.flatMap((processor) => processor.artifacts.filter(isProcessorDiagnosticArtifact).map(([, diagnostic]) => ({
3
+ ...diagnostic,
4
+ className: processor.className,
5
+ displayName: processor.displayName,
6
+ end: diagnostic.end ?? null,
7
+ filename,
8
+ start: diagnostic.start ?? null
9
+ })));
10
+ //# sourceMappingURL=TransformDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"AAIA,SAAS,qCAAqC;AAa9C,OAAO,MAAM,+BACX,UACA,eAEA,WAAW,SAAS,cAClB,UAAU,UACP,OAAO,8BAA8B,CACrC,KAAK,GAAG,iBAAiB;CACxB,GAAG;CACH,WAAW,UAAU;CACrB,aAAa,UAAU;CACvB,KAAK,WAAW,OAAO;CACvB;CACA,OAAO,WAAW,SAAS;CAC5B,EAAE,CACN","names":[],"sources":["../../src/utils/TransformDiagnostics.ts"],"version":3,"sourcesContent":["import type {\n BaseProcessor,\n ProcessorDiagnostic,\n} from '@wyw-in-js/processor-utils';\nimport { isProcessorDiagnosticArtifact } from '@wyw-in-js/processor-utils';\n\ntype DiagnosticProcessor = Pick<\n BaseProcessor,\n 'artifacts' | 'className' | 'displayName'\n>;\n\nexport type WYWTransformDiagnostic = ProcessorDiagnostic & {\n className: string;\n displayName: string;\n filename: string;\n};\n\nexport const collectTransformDiagnostics = (\n filename: string,\n processors: DiagnosticProcessor[]\n): WYWTransformDiagnostic[] =>\n processors.flatMap((processor) =>\n processor.artifacts\n .filter(isProcessorDiagnosticArtifact)\n .map(([, diagnostic]) => ({\n ...diagnostic,\n className: processor.className,\n displayName: processor.displayName,\n end: diagnostic.end ?? null,\n filename,\n start: diagnostic.start ?? null,\n }))\n );\n"],"file":"TransformDiagnostics.js"}
@@ -1,11 +1,29 @@
1
- export const withTransformMetadata = value => typeof value === 'object' && value !== null && typeof value.wywInJS === 'object';
2
- export const getTransformMetadata = value => {
3
- if (withTransformMetadata(value) && value.wywInJS !== null) {
4
- const metadata = value.wywInJS;
5
- // eslint-disable-next-line no-param-reassign
6
- delete value.wywInJS;
7
- return metadata;
8
- }
9
- return undefined;
1
+ import { isProcessorDiagnosticArtifact } from "@wyw-in-js/processor-utils";
2
+ export const withTransformMetadata = (value) => typeof value === "object" && value !== null && typeof value.wywInJS === "object";
3
+ export const getTransformMetadata = (value) => {
4
+ if (withTransformMetadata(value) && value.wywInJS !== null) {
5
+ const metadata = value.wywInJS;
6
+ // eslint-disable-next-line no-param-reassign
7
+ delete value.wywInJS;
8
+ return metadata;
9
+ }
10
+ return undefined;
10
11
  };
11
- //# sourceMappingURL=TransformMetadata.js.map
12
+ export const toTransformResultMetadata = (metadata, dependencies) => ({
13
+ dependencies,
14
+ processors: metadata.processors.map((processor) => ({
15
+ artifacts: processor.artifacts.filter((artifact) => !isProcessorDiagnosticArtifact(artifact)).map(([type, data]) => [type, data]),
16
+ className: processor.className,
17
+ displayName: processor.displayName,
18
+ start: processor.location?.start ?? null
19
+ })),
20
+ replacements: [...metadata.replacements],
21
+ rules: { ...metadata.rules }
22
+ });
23
+ export const createTransformManifest = (metadata, context) => ({
24
+ ...metadata,
25
+ ...context,
26
+ version: 1
27
+ });
28
+ export const stringifyTransformManifest = (manifest) => `${JSON.stringify(manifest, null, 2)}\n`;
29
+ //# sourceMappingURL=TransformMetadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransformMetadata.js","names":["withTransformMetadata","value","wywInJS","getTransformMetadata","metadata","undefined"],"sources":["../../src/utils/TransformMetadata.ts"],"sourcesContent":["import type { Artifact, Replacement, Rules } from '@wyw-in-js/shared';\n\nexport type WYWTransformMetadata = {\n dependencies: string[];\n processors: { artifacts: Artifact[] }[];\n replacements: Replacement[];\n rules: Rules;\n};\n\nexport const withTransformMetadata = (\n value: unknown\n): value is { wywInJS: WYWTransformMetadata } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { wywInJS: unknown }).wywInJS === 'object';\n\nexport const getTransformMetadata = (\n value: unknown\n): WYWTransformMetadata | undefined => {\n if (withTransformMetadata(value) && value.wywInJS !== null) {\n const metadata = value.wywInJS;\n // eslint-disable-next-line no-param-reassign\n delete (value as { wywInJS: unknown }).wywInJS;\n return metadata;\n }\n\n return undefined;\n};\n"],"mappings":"AASA,OAAO,MAAMA,qBAAqB,GAChCC,KAAc,IAEd,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAQA,KAAK,CAA0BC,OAAO,KAAK,QAAQ;AAE7D,OAAO,MAAMC,oBAAoB,GAC/BF,KAAc,IACuB;EACrC,IAAID,qBAAqB,CAACC,KAAK,CAAC,IAAIA,KAAK,CAACC,OAAO,KAAK,IAAI,EAAE;IAC1D,MAAME,QAAQ,GAAGH,KAAK,CAACC,OAAO;IAC9B;IACA,OAAQD,KAAK,CAA0BC,OAAO;IAC9C,OAAOE,QAAQ;EACjB;EAEA,OAAOC,SAAS;AAClB,CAAC","ignoreList":[]}
1
+ {"mappings":"AACA,SAAS,qCAAqC;AAmC9C,OAAO,MAAM,yBACX,UAEA,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAA+B,YAAY;AAErD,OAAO,MAAM,wBACX,UACqC;AACrC,KAAI,sBAAsB,MAAM,IAAI,MAAM,YAAY,MAAM;EAC1D,MAAM,WAAW,MAAM;;AAEvB,SAAQ,MAA+B;AACvC,SAAO;;AAGT,QAAO;;AAGT,OAAO,MAAM,6BACX,UACA,kBACgC;CAChC;CACA,YAAY,SAAS,WAAW,KAAK,eAAe;EAClD,WAAW,UAAU,UAClB,QAAQ,aAAa,CAAC,8BAA8B,SAAS,CAAC,CAC9D,KAAK,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,CAAa;EAClD,WAAW,UAAU;EACrB,aAAa,UAAU;EACvB,OAAO,UAAU,UAAU,SAAS;EACrC,EAAE;CACH,cAAc,CAAC,GAAG,SAAS,aAAa;CACxC,OAAO,EAAE,GAAG,SAAS,OAAO;CAC7B;AAED,OAAO,MAAM,2BACX,UACA,aAC0B;CAC1B,GAAG;CACH,GAAG;CACH,SAAS;CACV;AAED,OAAO,MAAM,8BACX,aACW,GAAG,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC","names":[],"sources":["../../src/utils/TransformMetadata.ts"],"version":3,"sourcesContent":["import type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport { isProcessorDiagnosticArtifact } from '@wyw-in-js/processor-utils';\nimport type { Artifact, Location, Replacement, Rules } from '@wyw-in-js/shared';\n\ntype TransformMetadataProcessor = Pick<\n BaseProcessor,\n 'artifacts' | 'className' | 'displayName' | 'location'\n>;\n\nexport type WYWTransformMetadata = {\n dependencies: string[];\n processors: TransformMetadataProcessor[];\n replacements: Replacement[];\n rules: Rules;\n};\n\nexport type WYWTransformProcessorMetadata = {\n artifacts: Artifact[];\n className: string;\n displayName: string;\n start: Location | null | undefined;\n};\n\nexport type WYWTransformResultMetadata = Omit<\n WYWTransformMetadata,\n 'processors'\n> & {\n processors: WYWTransformProcessorMetadata[];\n};\n\nexport type WYWTransformManifest = WYWTransformResultMetadata & {\n cssFile?: string;\n source: string;\n version: 1;\n};\n\nexport const withTransformMetadata = (\n value: unknown\n): value is { wywInJS: WYWTransformMetadata } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { wywInJS: unknown }).wywInJS === 'object';\n\nexport const getTransformMetadata = (\n value: unknown\n): WYWTransformMetadata | undefined => {\n if (withTransformMetadata(value) && value.wywInJS !== null) {\n const metadata = value.wywInJS;\n // eslint-disable-next-line no-param-reassign\n delete (value as { wywInJS: unknown }).wywInJS;\n return metadata;\n }\n\n return undefined;\n};\n\nexport const toTransformResultMetadata = (\n metadata: WYWTransformMetadata,\n dependencies: string[]\n): WYWTransformResultMetadata => ({\n dependencies,\n processors: metadata.processors.map((processor) => ({\n artifacts: processor.artifacts\n .filter((artifact) => !isProcessorDiagnosticArtifact(artifact))\n .map(([type, data]) => [type, data] as Artifact),\n className: processor.className,\n displayName: processor.displayName,\n start: processor.location?.start ?? null,\n })),\n replacements: [...metadata.replacements],\n rules: { ...metadata.rules },\n});\n\nexport const createTransformManifest = (\n metadata: WYWTransformResultMetadata,\n context: Pick<WYWTransformManifest, 'cssFile' | 'source'>\n): WYWTransformManifest => ({\n ...metadata,\n ...context,\n version: 1,\n});\n\nexport const stringifyTransformManifest = (\n manifest: WYWTransformManifest\n): string => `${JSON.stringify(manifest, null, 2)}\\n`;\n"],"file":"TransformMetadata.js"}