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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -28
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +7 -8
  178. package/types/index.js +24 -77
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +6 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +4 -24
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1 +1 @@
1
- {"version":3,"file":"createStylisPreprocessor.js","names":["path","compile","middleware","prefixer","serialize","stringify","tokenize","COMMENT","RULESET","KEYFRAMES","DECLARATION","POSIX_SEP","posix","sep","transformUrl","url","outputFilename","sourceFilename","platformPath","relative","dirname","resolve","split","join","DEFINED_KEYFRAMES","Symbol","ORIGINAL_KEYFRAME_NAME","ORIGINAL_VALUE_KEY","IS_GLOBAL_KEYFRAMES","getOriginalElementValue","element","value","throwIfNotProd","key","type","process","env","NODE_ENV","Error","JSON","childrenIsString","children","propsAreStrings","props","Array","isArray","propsIsString","isDeclaration","isKeyframes","isRuleset","nonMediaParent","parent","stylisGlobalPlugin","getGlobalSelectorModifiers","el","parentValue","length","includes","match","baseSelector","spaceDelimiter","includeBaseSelector","includeSpaceDelimiter","Object","assign","map","cssSelector","tokens","selector","i","len","token","slice","createStylisUrlReplacePlugin","filename","return","replace","_match","p1","_p2","p3","p4","createKeyframeSuffixerPlugin","prefixes","getPrefixedProp","prop","prefix","buildPropsRegexp","isAtRule","at","colon","RegExp","animationNameRegexp","getReplacer","startsWith","searchValue","replacer","input","fullMatch","undefined","rest","elementToKeyframeSuffix","replaceAll","animationPropsSet","Set","getDefinedKeyframes","keyframes","sibling","siblings","add","name","suffix","replaceFn","globalMatch","scopedMatch","originalName","isGlobal","keys","has","scopedKeyframes","patch","fromEntries","result","globalName","substring","isMiddleware","obj","displayKeywordRegexp","knownMultiKeywordDisplayTokens","normalizeMultiKeywordDisplayValue","trimmed","trim","test","importantRegexp","hasImportant","withoutImportant","filter","Boolean","normalizedTokens","toLowerCase","every","tokenSet","hasInline","hasBlock","outside","insideCandidates","candidate","inside","hasListItem","canCanonicalize","canonicalOutside","canonicalInside","canonical","innerDisplay","reordered","createStylisDisplayNormalizationPlugin","normalized","decl","createStylisStringifier","keepComments","keepAllComments","keepCommentsFilter","index","callback","commentValue","lastIndex","createStylisPreprocessor","options","stringifier","stylisPreprocess","text","compiled"],"sources":["../../../src/transform/generators/createStylisPreprocessor.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport * as path from 'path';\nimport {\n compile,\n middleware,\n prefixer,\n serialize,\n stringify,\n tokenize,\n COMMENT,\n RULESET,\n KEYFRAMES,\n DECLARATION,\n} from 'stylis';\nimport type { Middleware, Element } from 'stylis';\n\nimport type { Options } from '../../types';\n\nconst POSIX_SEP = path.posix.sep;\n\nexport function transformUrl(\n url: string,\n outputFilename: string,\n sourceFilename: string,\n platformPath: typeof path = path\n) {\n // Replace asset path with new path relative to the output CSS\n const relative = platformPath.relative(\n platformPath.dirname(outputFilename),\n // Get the absolute path to the asset from the path relative to the JS file\n platformPath.resolve(platformPath.dirname(sourceFilename), url)\n );\n\n if (platformPath.sep === POSIX_SEP) {\n return relative;\n }\n\n return relative.split(platformPath.sep).join(POSIX_SEP);\n}\n\ninterface IGlobalSelectorModifiers {\n includeBaseSelector: boolean;\n includeSpaceDelimiter: boolean;\n}\n\nconst DEFINED_KEYFRAMES = Symbol('definedKeyframes');\nconst ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');\nconst ORIGINAL_VALUE_KEY = Symbol('originalValue');\nconst IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');\n\nconst getOriginalElementValue = (\n element: (Element & { [ORIGINAL_VALUE_KEY]?: string }) | null\n) => {\n return element ? element[ORIGINAL_VALUE_KEY] ?? element.value : '';\n};\n\nfunction throwIfNotProd(key: string, value: unknown, type: string): false {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `\"element.${key}\" has type \"${type}\" (${JSON.stringify(\n value,\n null,\n 2\n )}), it's not expected. Please report a bug if it happens.`\n );\n }\n\n return false;\n}\n\ntype SpecificElement<TFields> = Omit<Element, keyof TFields> & TFields;\ntype Declaration = SpecificElement<{\n children: string;\n props: string;\n type: typeof DECLARATION;\n}>;\ntype Keyframes = SpecificElement<{\n [IS_GLOBAL_KEYFRAMES]?: boolean;\n props: string[];\n type: typeof KEYFRAMES;\n}>;\ntype Ruleset = SpecificElement<{\n props: string[];\n type: typeof RULESET;\n}>;\n\nfunction childrenIsString(children: string | Element[]): children is string {\n return (\n typeof children === 'string' ||\n throwIfNotProd('children', children, 'Element[]')\n );\n}\n\nfunction propsAreStrings(props: string | string[]): props is string[] {\n return Array.isArray(props) || throwIfNotProd('props', props, 'string');\n}\n\nfunction propsIsString(props: string | string[]): props is string {\n return (\n typeof props === 'string' || throwIfNotProd('props', props, 'string[]')\n );\n}\n\nconst isDeclaration = (element: Element): element is Declaration => {\n return (\n element.type === DECLARATION &&\n propsIsString(element.props) &&\n childrenIsString(element.children)\n );\n};\n\nconst isKeyframes = (element: Element): element is Keyframes => {\n return element.type === KEYFRAMES && propsAreStrings(element.props);\n};\n\nconst isRuleset = (element: Element): element is Ruleset => {\n return element.type === RULESET && propsAreStrings(element.props);\n};\n\nfunction nonMediaParent(element: Element): Element | null {\n let { parent } = element;\n\n while (parent) {\n if (parent.type !== '@media') {\n return parent;\n }\n\n parent = parent.parent;\n }\n\n return null;\n}\n\n/**\n * Stylis plugin that mimics :global() selector behavior from Stylis v3.\n */\nexport const stylisGlobalPlugin: Middleware = (element) => {\n function getGlobalSelectorModifiers(el: Element): IGlobalSelectorModifiers {\n const parent = nonMediaParent(el);\n\n const value = getOriginalElementValue(el);\n const parentValue = getOriginalElementValue(parent);\n\n if (\n (parent?.children.length === 0 && parentValue.includes(':global(')) ||\n (parent && !value.includes(':global('))\n ) {\n return getGlobalSelectorModifiers(parent);\n }\n\n const match = value.match(/(&\\f( )?)?:global\\(/);\n\n if (match === null) {\n throw new Error(\n `Failed to match :global() selector in \"${value}\". Please report a bug if it happens.`\n );\n }\n\n const [, baseSelector, spaceDelimiter] = match;\n\n return {\n includeBaseSelector: !!baseSelector,\n includeSpaceDelimiter: !!spaceDelimiter,\n };\n }\n\n if (!isRuleset(element)) {\n return;\n }\n\n Object.assign(element, {\n props: element.props.map((cssSelector) => {\n // The value can be changed by other middlewares, but we need an original one with `&`\n Object.assign(element, { [ORIGINAL_VALUE_KEY]: element.value });\n\n // Avoids calling tokenize() on every string\n if (!cssSelector.includes(':global(')) {\n return cssSelector;\n }\n\n if (element.children.length === 0) {\n return cssSelector;\n }\n\n const { includeBaseSelector, includeSpaceDelimiter } =\n getGlobalSelectorModifiers(element);\n\n const tokens = tokenize(cssSelector);\n let selector = '';\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const token = tokens[i];\n\n //\n // Match for \":global(\"\n if (token === ':' && tokens[i + 1] === 'global') {\n //\n // Match for \":global()\"\n if (tokens[i + 2] === '()') {\n selector = [\n ...tokens.slice(i + 4),\n includeSpaceDelimiter ? ' ' : '',\n ...(includeBaseSelector ? tokens.slice(0, i - 1) : []),\n includeSpaceDelimiter ? '' : ' ',\n ].join('');\n\n break;\n }\n\n //\n // Match for \":global(selector)\"\n selector = [\n tokens[i + 2].slice(1, -1),\n includeSpaceDelimiter ? ' ' : '',\n ...(includeBaseSelector ? tokens.slice(0, i - 1) : []),\n includeSpaceDelimiter ? '' : ' ',\n ].join('');\n\n break;\n }\n }\n\n return selector;\n }),\n });\n};\n\nexport function createStylisUrlReplacePlugin(\n filename: string,\n outputFilename: string | undefined\n): Middleware {\n return (element) => {\n if (element.type === 'decl' && outputFilename) {\n // When writing to a file, we need to adjust the relative paths inside url(..) expressions.\n // It'll allow css-loader to resolve an imported asset properly.\n // eslint-disable-next-line no-param-reassign\n element.return = element.value.replace(\n /\\b(url\\(([\"']?))(\\.[^)]+?)(\\2\\))/g,\n (_match, p1, _p2, p3, p4) =>\n p1 + transformUrl(p3, outputFilename, filename) + p4\n );\n }\n };\n}\n\nexport function createKeyframeSuffixerPlugin(): Middleware {\n const prefixes = ['webkit', 'moz', 'ms', 'o', ''].map((i) =>\n i ? `-${i}-` : ''\n );\n\n const getPrefixedProp = (prop: string): string[] =>\n prefixes.map((prefix) => `${prefix}${prop}`);\n\n const buildPropsRegexp = (prop: string, isAtRule: boolean) => {\n const [at, colon] = isAtRule ? ['@', ''] : ['', ':'];\n return new RegExp(\n `^(${at}(?:${getPrefixedProp(prop).join('|')})${colon})\\\\s*`\n );\n };\n\n const animationNameRegexp = /:global\\(([\\w_-]+)\\)|([\\w_-]+)/;\n\n const getReplacer = (\n startsWith: RegExp,\n searchValue: RegExp,\n replacer: (substring: string, ...matches: string[]) => string\n ): ((input: string) => string) => {\n return (input) => {\n const [fullMatch] = input.match(startsWith) ?? [];\n if (fullMatch === undefined) {\n return input;\n }\n\n const rest = input.slice(fullMatch.length);\n return fullMatch + rest.replace(searchValue, replacer);\n };\n };\n\n const elementToKeyframeSuffix = (el: Element): string => {\n if (el.parent) {\n return elementToKeyframeSuffix(el.parent);\n }\n\n return el.value.replaceAll(/[^a-zA-Z0-9_-]/g, '');\n };\n\n const animationPropsSet = new Set([\n ...getPrefixedProp('animation'),\n ...getPrefixedProp('animation-name'),\n ]);\n\n const getDefinedKeyframes = (\n element: Element & {\n [DEFINED_KEYFRAMES]?: Set<string>;\n siblings?: (Element & {\n [IS_GLOBAL_KEYFRAMES]?: boolean;\n [ORIGINAL_KEYFRAME_NAME]?: string;\n })[];\n }\n ): Set<string> => {\n if (element[DEFINED_KEYFRAMES]) {\n return element[DEFINED_KEYFRAMES];\n }\n\n if (element.parent) {\n return getDefinedKeyframes(element.parent);\n }\n\n const keyframes = new Set<string>();\n for (const sibling of element.siblings ?? []) {\n if (sibling[ORIGINAL_KEYFRAME_NAME]) {\n keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);\n continue;\n }\n\n const name = sibling.props[0];\n if (\n !isKeyframes(sibling) ||\n sibling[IS_GLOBAL_KEYFRAMES] === true ||\n name?.startsWith(':global(')\n ) {\n continue;\n }\n\n keyframes.add(sibling.props[0]);\n }\n\n Object.assign(element, { [DEFINED_KEYFRAMES]: keyframes });\n\n return keyframes;\n };\n\n return (element) => {\n if (isKeyframes(element) && element.parent) {\n const suffix = elementToKeyframeSuffix(element);\n\n const replaceFn = (\n _match: string,\n globalMatch: string,\n scopedMatch: string\n ): string => globalMatch || `${scopedMatch}-${suffix}`;\n\n const originalName = element.props[0];\n const isGlobal = originalName?.startsWith(':global(') ?? false;\n\n Object.assign(element, {\n [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,\n [IS_GLOBAL_KEYFRAMES]: isGlobal,\n props: element.props.map(\n getReplacer(/^\\s*/, animationNameRegexp, replaceFn)\n ),\n value: getReplacer(\n buildPropsRegexp('keyframes', true),\n animationNameRegexp,\n replaceFn\n )(element.value),\n });\n\n return;\n }\n\n if (isDeclaration(element)) {\n const suffix = elementToKeyframeSuffix(element);\n const keys = [\n 'children',\n 'return',\n 'value',\n ] satisfies (keyof Declaration)[];\n\n if (animationPropsSet.has(element.props)) {\n const scopedKeyframes = getDefinedKeyframes(element);\n const patch = Object.fromEntries(\n keys.map((key) => {\n const tokens = tokenize(element[key]);\n let result = '';\n for (let i = 0; i < tokens.length; i += 1) {\n if (\n tokens[i] === ':' &&\n tokens[i + 1] === 'global' &&\n tokens[i + 2].startsWith('(')\n ) {\n const globalName = tokens[i + 2].substring(\n 1,\n tokens[i + 2].length - 1\n );\n i += 2;\n\n result += globalName;\n if (tokens[i + 1] !== ';') {\n result += ' ';\n }\n continue;\n }\n\n if (scopedKeyframes.has(tokens[i])) {\n result += `${tokens[i]}-${suffix}`;\n continue;\n }\n\n result += tokens[i];\n }\n\n return [key, result];\n })\n );\n\n Object.assign(element, patch);\n }\n }\n };\n}\n\nconst isMiddleware = (obj: Middleware | null): obj is Middleware =>\n obj !== null;\n\nconst displayKeywordRegexp = /^[a-z-]+$/;\nconst knownMultiKeywordDisplayTokens = new Set([\n 'block',\n 'inline',\n 'flow',\n 'flow-root',\n 'flex',\n 'grid',\n 'table',\n 'list-item',\n]);\n\nfunction normalizeMultiKeywordDisplayValue(value: string): string | null {\n const trimmed = value.trim();\n if (trimmed === '' || !/\\s/.test(trimmed)) {\n return null;\n }\n\n const importantRegexp = /!\\s*important\\s*$/i;\n const hasImportant = importantRegexp.test(trimmed);\n const withoutImportant = trimmed.replace(importantRegexp, '').trim();\n\n const tokens = withoutImportant.split(/\\s+/).filter(Boolean);\n if (tokens.length < 2) {\n return null;\n }\n\n const normalizedTokens = tokens.map((token) => token.toLowerCase());\n if (!normalizedTokens.every((token) => displayKeywordRegexp.test(token))) {\n return null;\n }\n\n const tokenSet = new Set(normalizedTokens);\n const hasInline = tokenSet.has('inline');\n const hasBlock = tokenSet.has('block');\n if (hasInline && hasBlock) {\n return null;\n }\n\n let outside: 'block' | 'inline' | null = null;\n if (hasInline) {\n outside = 'inline';\n } else if (hasBlock) {\n outside = 'block';\n }\n\n const insideCandidates = [\n 'flow-root',\n 'flow',\n 'flex',\n 'grid',\n 'table',\n ].filter((candidate) => tokenSet.has(candidate));\n if (insideCandidates.length > 1) {\n return null;\n }\n\n const inside = insideCandidates[0] ?? null;\n const hasListItem = tokenSet.has('list-item');\n\n const canCanonicalize = normalizedTokens.every((token) =>\n knownMultiKeywordDisplayTokens.has(token)\n );\n\n if (canCanonicalize) {\n const canonicalOutside = outside ?? 'block';\n const canonicalInside = inside ?? (hasListItem ? 'flow' : null);\n if (canonicalInside) {\n let canonical: string | null = null;\n if (hasListItem) {\n if (canonicalInside === 'flow' && canonicalOutside === 'block') {\n canonical = 'list-item';\n }\n } else {\n switch (canonicalInside) {\n case 'flex':\n canonical = canonicalOutside === 'inline' ? 'inline-flex' : 'flex';\n break;\n case 'grid':\n canonical = canonicalOutside === 'inline' ? 'inline-grid' : 'grid';\n break;\n case 'table':\n canonical =\n canonicalOutside === 'inline' ? 'inline-table' : 'table';\n break;\n case 'flow-root':\n canonical = canonicalOutside === 'block' ? 'flow-root' : null;\n break;\n case 'flow':\n canonical = canonicalOutside === 'inline' ? 'inline' : 'block';\n break;\n default:\n break;\n }\n }\n\n if (canonical) {\n return hasImportant ? `${canonical}!important` : canonical;\n }\n }\n }\n\n const innerDisplay = inside === 'flex' || inside === 'grid' ? inside : null;\n if (\n innerDisplay &&\n normalizedTokens[0] === innerDisplay &&\n normalizedTokens.length > 1\n ) {\n const reordered = [\n ...(outside ? [outside] : []),\n ...normalizedTokens.filter(\n (token) => token !== innerDisplay && token !== outside\n ),\n innerDisplay,\n ].join(' ');\n\n return hasImportant ? `${reordered}!important` : reordered;\n }\n\n return null;\n}\n\nfunction createStylisDisplayNormalizationPlugin(): Middleware {\n return (element) => {\n if (!isDeclaration(element) || element.props !== 'display') {\n return;\n }\n\n const normalized = normalizeMultiKeywordDisplayValue(element.children);\n if (!normalized) {\n return;\n }\n\n const decl = `display:${normalized};`;\n Object.assign(element, {\n children: normalized,\n value: decl,\n });\n };\n}\n\nfunction createStylisStringifier(\n keepComments: boolean | RegExp | undefined\n): Middleware {\n if (!keepComments) {\n return stringify;\n }\n\n const keepAllComments = keepComments === true;\n const keepCommentsFilter =\n keepComments instanceof RegExp ? keepComments : null;\n\n return (element, index, children, callback) => {\n if (element.type === COMMENT) {\n if (!keepAllComments && keepCommentsFilter) {\n const commentValue =\n typeof element.children === 'string'\n ? element.children\n : element.value;\n keepCommentsFilter.lastIndex = 0;\n if (!keepCommentsFilter.test(commentValue)) {\n return '';\n }\n }\n return element.value;\n }\n\n return stringify(element, index, children, callback);\n };\n}\n\nexport function createStylisPreprocessor(\n options: Options & { prefixer?: boolean }\n) {\n const stringifier = createStylisStringifier(options.keepComments);\n\n function stylisPreprocess(selector: string, text: string): string {\n const compiled = compile(`${selector} {${text}}\\n`);\n\n return serialize(\n compiled,\n middleware(\n [\n createStylisUrlReplacePlugin(\n options.filename,\n options.outputFilename\n ),\n stylisGlobalPlugin,\n options.prefixer === false\n ? null\n : createStylisDisplayNormalizationPlugin(),\n options.prefixer === false ? null : prefixer,\n createKeyframeSuffixerPlugin(),\n stringifier,\n ].filter(isMiddleware)\n )\n );\n }\n\n return stylisPreprocess;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../../../src/transform/generators/createStylisPreprocessor.ts"],"version":3,"sourcesContent":["/* eslint-disable no-continue */\nimport * as path from 'path';\nimport {\n compile,\n middleware,\n prefixer,\n serialize,\n stringify,\n tokenize,\n COMMENT,\n RULESET,\n KEYFRAMES,\n DECLARATION,\n} from 'stylis';\nimport type { Middleware, Element } from 'stylis';\n\nimport type { Options } from '../../types';\n\nconst POSIX_SEP = path.posix.sep;\n\nexport function transformUrl(\n url: string,\n outputFilename: string,\n sourceFilename: string,\n platformPath: typeof path = path\n) {\n // Replace asset path with new path relative to the output CSS\n const relative = platformPath.relative(\n platformPath.dirname(outputFilename),\n // Get the absolute path to the asset from the path relative to the JS file\n platformPath.resolve(platformPath.dirname(sourceFilename), url)\n );\n\n if (platformPath.sep === POSIX_SEP) {\n return relative;\n }\n\n return relative.split(platformPath.sep).join(POSIX_SEP);\n}\n\ninterface IGlobalSelectorModifiers {\n includeBaseSelector: boolean;\n includeSpaceDelimiter: boolean;\n}\n\nconst DEFINED_KEYFRAMES = Symbol('definedKeyframes');\nconst ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');\nconst ORIGINAL_VALUE_KEY = Symbol('originalValue');\nconst IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');\n\nconst getOriginalElementValue = (\n element: (Element & { [ORIGINAL_VALUE_KEY]?: string }) | null\n) => {\n return element ? element[ORIGINAL_VALUE_KEY] ?? element.value : '';\n};\n\nfunction throwIfNotProd(key: string, value: unknown, type: string): false {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `\"element.${key}\" has type \"${type}\" (${JSON.stringify(\n value,\n null,\n 2\n )}), it's not expected. Please report a bug if it happens.`\n );\n }\n\n return false;\n}\n\ntype SpecificElement<TFields> = Omit<Element, keyof TFields> & TFields;\ntype Declaration = SpecificElement<{\n children: string;\n props: string;\n type: typeof DECLARATION;\n}>;\ntype Keyframes = SpecificElement<{\n [IS_GLOBAL_KEYFRAMES]?: boolean;\n props: string[];\n type: typeof KEYFRAMES;\n}>;\ntype Ruleset = SpecificElement<{\n props: string[];\n type: typeof RULESET;\n}>;\n\nfunction childrenIsString(children: string | Element[]): children is string {\n return (\n typeof children === 'string' ||\n throwIfNotProd('children', children, 'Element[]')\n );\n}\n\nfunction propsAreStrings(props: string | string[]): props is string[] {\n return Array.isArray(props) || throwIfNotProd('props', props, 'string');\n}\n\nfunction propsIsString(props: string | string[]): props is string {\n return (\n typeof props === 'string' || throwIfNotProd('props', props, 'string[]')\n );\n}\n\nconst isDeclaration = (element: Element): element is Declaration => {\n return (\n element.type === DECLARATION &&\n propsIsString(element.props) &&\n childrenIsString(element.children)\n );\n};\n\nconst isKeyframes = (element: Element): element is Keyframes => {\n return element.type === KEYFRAMES && propsAreStrings(element.props);\n};\n\nconst isRuleset = (element: Element): element is Ruleset => {\n return element.type === RULESET && propsAreStrings(element.props);\n};\n\nfunction nonMediaParent(element: Element): Element | null {\n let { parent } = element;\n\n while (parent) {\n if (parent.type !== '@media') {\n return parent;\n }\n\n parent = parent.parent;\n }\n\n return null;\n}\n\n/**\n * Stylis plugin that mimics :global() selector behavior from Stylis v3.\n */\nexport const stylisGlobalPlugin: Middleware = (element) => {\n function getGlobalSelectorModifiers(el: Element): IGlobalSelectorModifiers {\n const parent = nonMediaParent(el);\n\n const value = getOriginalElementValue(el);\n const parentValue = getOriginalElementValue(parent);\n\n if (\n (parent?.children.length === 0 && parentValue.includes(':global(')) ||\n (parent && !value.includes(':global('))\n ) {\n return getGlobalSelectorModifiers(parent);\n }\n\n const match = value.match(/(&\\f( )?)?:global\\(/);\n\n if (match === null) {\n throw new Error(\n `Failed to match :global() selector in \"${value}\". Please report a bug if it happens.`\n );\n }\n\n const [, baseSelector, spaceDelimiter] = match;\n\n return {\n includeBaseSelector: !!baseSelector,\n includeSpaceDelimiter: !!spaceDelimiter,\n };\n }\n\n if (!isRuleset(element)) {\n return;\n }\n\n Object.assign(element, {\n props: element.props.map((cssSelector) => {\n // The value can be changed by other middlewares, but we need an original one with `&`\n Object.assign(element, { [ORIGINAL_VALUE_KEY]: element.value });\n\n // Avoids calling tokenize() on every string\n if (!cssSelector.includes(':global(')) {\n return cssSelector;\n }\n\n if (element.children.length === 0) {\n return cssSelector;\n }\n\n const { includeBaseSelector, includeSpaceDelimiter } =\n getGlobalSelectorModifiers(element);\n\n const tokens = tokenize(cssSelector);\n let selector = '';\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const token = tokens[i];\n\n //\n // Match for \":global(\"\n if (token === ':' && tokens[i + 1] === 'global') {\n //\n // Match for \":global()\"\n if (tokens[i + 2] === '()') {\n selector = [\n ...tokens.slice(i + 4),\n includeSpaceDelimiter ? ' ' : '',\n ...(includeBaseSelector ? tokens.slice(0, i - 1) : []),\n includeSpaceDelimiter ? '' : ' ',\n ].join('');\n\n break;\n }\n\n //\n // Match for \":global(selector)\"\n selector = [\n tokens[i + 2].slice(1, -1),\n includeSpaceDelimiter ? ' ' : '',\n ...(includeBaseSelector ? tokens.slice(0, i - 1) : []),\n includeSpaceDelimiter ? '' : ' ',\n ].join('');\n\n break;\n }\n }\n\n return selector;\n }),\n });\n};\n\nexport function createStylisUrlReplacePlugin(\n filename: string,\n outputFilename: string | undefined\n): Middleware {\n return (element) => {\n if (element.type === 'decl' && outputFilename) {\n // When writing to a file, we need to adjust the relative paths inside url(..) expressions.\n // It'll allow css-loader to resolve an imported asset properly.\n // eslint-disable-next-line no-param-reassign\n element.return = element.value.replace(\n /\\b(url\\(([\"']?))(\\.[^)]+?)(\\2\\))/g,\n (_match, p1, _p2, p3, p4) =>\n p1 + transformUrl(p3, outputFilename, filename) + p4\n );\n }\n };\n}\n\nexport function createKeyframeSuffixerPlugin(): Middleware {\n const prefixes = ['webkit', 'moz', 'ms', 'o', ''].map((i) =>\n i ? `-${i}-` : ''\n );\n\n const getPrefixedProp = (prop: string): string[] =>\n prefixes.map((prefix) => `${prefix}${prop}`);\n\n const buildPropsRegexp = (prop: string, isAtRule: boolean) => {\n const [at, colon] = isAtRule ? ['@', ''] : ['', ':'];\n return new RegExp(\n `^(${at}(?:${getPrefixedProp(prop).join('|')})${colon})\\\\s*`\n );\n };\n\n const animationNameRegexp = /:global\\(([\\w_-]+)\\)|([\\w_-]+)/;\n\n const getReplacer = (\n startsWith: RegExp,\n searchValue: RegExp,\n replacer: (substring: string, ...matches: string[]) => string\n ): ((input: string) => string) => {\n return (input) => {\n const [fullMatch] = input.match(startsWith) ?? [];\n if (fullMatch === undefined) {\n return input;\n }\n\n const rest = input.slice(fullMatch.length);\n return fullMatch + rest.replace(searchValue, replacer);\n };\n };\n\n const elementToKeyframeSuffix = (el: Element): string => {\n if (el.parent) {\n return elementToKeyframeSuffix(el.parent);\n }\n\n return el.value.replaceAll(/[^a-zA-Z0-9_-]/g, '');\n };\n\n const animationPropsSet = new Set([\n ...getPrefixedProp('animation'),\n ...getPrefixedProp('animation-name'),\n ]);\n\n const getDefinedKeyframes = (\n element: Element & {\n [DEFINED_KEYFRAMES]?: Set<string>;\n siblings?: (Element & {\n [IS_GLOBAL_KEYFRAMES]?: boolean;\n [ORIGINAL_KEYFRAME_NAME]?: string;\n })[];\n }\n ): Set<string> => {\n if (element[DEFINED_KEYFRAMES]) {\n return element[DEFINED_KEYFRAMES];\n }\n\n if (element.parent) {\n return getDefinedKeyframes(element.parent);\n }\n\n const keyframes = new Set<string>();\n for (const sibling of element.siblings ?? []) {\n if (sibling[ORIGINAL_KEYFRAME_NAME]) {\n keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);\n continue;\n }\n\n const name = sibling.props[0];\n if (\n !isKeyframes(sibling) ||\n sibling[IS_GLOBAL_KEYFRAMES] === true ||\n name?.startsWith(':global(')\n ) {\n continue;\n }\n\n keyframes.add(sibling.props[0]);\n }\n\n Object.assign(element, { [DEFINED_KEYFRAMES]: keyframes });\n\n return keyframes;\n };\n\n return (element) => {\n if (isKeyframes(element) && element.parent) {\n const suffix = elementToKeyframeSuffix(element);\n\n const replaceFn = (\n _match: string,\n globalMatch: string,\n scopedMatch: string\n ): string => globalMatch || `${scopedMatch}-${suffix}`;\n\n const originalName = element.props[0];\n const isGlobal = originalName?.startsWith(':global(') ?? false;\n\n Object.assign(element, {\n [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,\n [IS_GLOBAL_KEYFRAMES]: isGlobal,\n props: element.props.map(\n getReplacer(/^\\s*/, animationNameRegexp, replaceFn)\n ),\n value: getReplacer(\n buildPropsRegexp('keyframes', true),\n animationNameRegexp,\n replaceFn\n )(element.value),\n });\n\n return;\n }\n\n if (isDeclaration(element)) {\n const suffix = elementToKeyframeSuffix(element);\n const keys = [\n 'children',\n 'return',\n 'value',\n ] satisfies (keyof Declaration)[];\n\n if (animationPropsSet.has(element.props)) {\n const scopedKeyframes = getDefinedKeyframes(element);\n const patch = Object.fromEntries(\n keys.map((key) => {\n const tokens = tokenize(element[key]);\n let result = '';\n for (let i = 0; i < tokens.length; i += 1) {\n if (\n tokens[i] === ':' &&\n tokens[i + 1] === 'global' &&\n tokens[i + 2].startsWith('(')\n ) {\n const globalName = tokens[i + 2].substring(\n 1,\n tokens[i + 2].length - 1\n );\n i += 2;\n\n result += globalName;\n if (tokens[i + 1] !== ';') {\n result += ' ';\n }\n continue;\n }\n\n if (scopedKeyframes.has(tokens[i])) {\n result += `${tokens[i]}-${suffix}`;\n continue;\n }\n\n result += tokens[i];\n }\n\n return [key, result];\n })\n );\n\n Object.assign(element, patch);\n }\n }\n };\n}\n\nconst isMiddleware = (obj: Middleware | null): obj is Middleware =>\n obj !== null;\n\nconst displayKeywordRegexp = /^[a-z-]+$/;\nconst knownMultiKeywordDisplayTokens = new Set([\n 'block',\n 'inline',\n 'flow',\n 'flow-root',\n 'flex',\n 'grid',\n 'table',\n 'list-item',\n]);\n\nfunction normalizeMultiKeywordDisplayValue(value: string): string | null {\n const trimmed = value.trim();\n if (trimmed === '' || !/\\s/.test(trimmed)) {\n return null;\n }\n\n const importantRegexp = /!\\s*important\\s*$/i;\n const hasImportant = importantRegexp.test(trimmed);\n const withoutImportant = trimmed.replace(importantRegexp, '').trim();\n\n const tokens = withoutImportant.split(/\\s+/).filter(Boolean);\n if (tokens.length < 2) {\n return null;\n }\n\n const normalizedTokens = tokens.map((token) => token.toLowerCase());\n if (!normalizedTokens.every((token) => displayKeywordRegexp.test(token))) {\n return null;\n }\n\n const tokenSet = new Set(normalizedTokens);\n const hasInline = tokenSet.has('inline');\n const hasBlock = tokenSet.has('block');\n if (hasInline && hasBlock) {\n return null;\n }\n\n let outside: 'block' | 'inline' | null = null;\n if (hasInline) {\n outside = 'inline';\n } else if (hasBlock) {\n outside = 'block';\n }\n\n const insideCandidates = [\n 'flow-root',\n 'flow',\n 'flex',\n 'grid',\n 'table',\n ].filter((candidate) => tokenSet.has(candidate));\n if (insideCandidates.length > 1) {\n return null;\n }\n\n const inside = insideCandidates[0] ?? null;\n const hasListItem = tokenSet.has('list-item');\n\n const canCanonicalize = normalizedTokens.every((token) =>\n knownMultiKeywordDisplayTokens.has(token)\n );\n\n if (canCanonicalize) {\n const canonicalOutside = outside ?? 'block';\n const canonicalInside = inside ?? (hasListItem ? 'flow' : null);\n if (canonicalInside) {\n let canonical: string | null = null;\n if (hasListItem) {\n if (canonicalInside === 'flow' && canonicalOutside === 'block') {\n canonical = 'list-item';\n }\n } else {\n switch (canonicalInside) {\n case 'flex':\n canonical = canonicalOutside === 'inline' ? 'inline-flex' : 'flex';\n break;\n case 'grid':\n canonical = canonicalOutside === 'inline' ? 'inline-grid' : 'grid';\n break;\n case 'table':\n canonical =\n canonicalOutside === 'inline' ? 'inline-table' : 'table';\n break;\n case 'flow-root':\n canonical = canonicalOutside === 'block' ? 'flow-root' : null;\n break;\n case 'flow':\n canonical = canonicalOutside === 'inline' ? 'inline' : 'block';\n break;\n default:\n break;\n }\n }\n\n if (canonical) {\n return hasImportant ? `${canonical}!important` : canonical;\n }\n }\n }\n\n const innerDisplay = inside === 'flex' || inside === 'grid' ? inside : null;\n if (\n innerDisplay &&\n normalizedTokens[0] === innerDisplay &&\n normalizedTokens.length > 1\n ) {\n const reordered = [\n ...(outside ? [outside] : []),\n ...normalizedTokens.filter(\n (token) => token !== innerDisplay && token !== outside\n ),\n innerDisplay,\n ].join(' ');\n\n return hasImportant ? `${reordered}!important` : reordered;\n }\n\n return null;\n}\n\nfunction createStylisDisplayNormalizationPlugin(): Middleware {\n return (element) => {\n if (!isDeclaration(element) || element.props !== 'display') {\n return;\n }\n\n const normalized = normalizeMultiKeywordDisplayValue(element.children);\n if (!normalized) {\n return;\n }\n\n const decl = `display:${normalized};`;\n Object.assign(element, {\n children: normalized,\n value: decl,\n });\n };\n}\n\nfunction createStylisStringifier(\n keepComments: boolean | RegExp | undefined\n): Middleware {\n if (!keepComments) {\n return stringify;\n }\n\n const keepAllComments = keepComments === true;\n const keepCommentsFilter =\n keepComments instanceof RegExp ? keepComments : null;\n\n return (element, index, children, callback) => {\n if (element.type === COMMENT) {\n if (!keepAllComments && keepCommentsFilter) {\n const commentValue =\n typeof element.children === 'string'\n ? element.children\n : element.value;\n keepCommentsFilter.lastIndex = 0;\n if (!keepCommentsFilter.test(commentValue)) {\n return '';\n }\n }\n return element.value;\n }\n\n return stringify(element, index, children, callback);\n };\n}\n\nexport function createStylisPreprocessor(\n options: Options & { prefixer?: boolean }\n) {\n const stringifier = createStylisStringifier(options.keepComments);\n\n function stylisPreprocess(selector: string, text: string): string {\n const compiled = compile(`${selector} {${text}}\\n`);\n\n return serialize(\n compiled,\n middleware(\n [\n createStylisUrlReplacePlugin(\n options.filename,\n options.outputFilename\n ),\n stylisGlobalPlugin,\n options.prefixer === false\n ? null\n : createStylisDisplayNormalizationPlugin(),\n options.prefixer === false ? null : prefixer,\n createKeyframeSuffixerPlugin(),\n stringifier,\n ].filter(isMiddleware)\n )\n );\n }\n\n return stylisPreprocess;\n}\n"],"file":"createStylisPreprocessor.js"}
@@ -1,50 +1,51 @@
1
- import evaluate from '../../evaluators';
2
- import hasWywPreval from '../../utils/hasWywPreval';
3
- import { isUnprocessedEntrypointError } from '../actions/UnprocessedEntrypointError';
4
- const wrap = fn => {
5
- try {
6
- return fn();
7
- } catch (e) {
8
- return e;
9
- }
10
- };
11
-
1
+ import evaluate from "../../evaluators/index.js";
2
+ import { isUnprocessedEntrypointError } from "../actions/UnprocessedEntrypointError.js";
12
3
  /**
13
- * Executes the code prepared in previous steps within the current `Entrypoint`.
14
- * Returns all exports that were requested in `only`.
15
- */
4
+ * Executes the code prepared in previous steps within the current `Entrypoint`.
5
+ * Returns all exports that were requested in `only`.
6
+ */
16
7
  // eslint-disable-next-line require-yield
17
- export function* evalFile() {
18
- const {
19
- entrypoint
20
- } = this;
21
- const {
22
- log
23
- } = entrypoint;
24
- log(`>> evaluate __wywPreval`);
25
- let evaluated;
26
- while (evaluated === undefined) {
27
- try {
28
- evaluated = evaluate(this.services, entrypoint);
29
- } catch (e) {
30
- if (isUnprocessedEntrypointError(e)) {
31
- entrypoint.log('Evaluation has been aborted because one if the required files is not processed. Schedule reprocessing and repeat evaluation.');
32
- yield ['processEntrypoint', e.entrypoint, undefined];
33
- } else {
34
- throw e;
35
- }
36
- }
37
- }
38
- const wywPreval = hasWywPreval(evaluated.value) ? evaluated.value.__wywPreval : undefined;
39
- if (!wywPreval) {
40
- return null;
41
- }
42
- const valueCache = new Map();
43
- Object.entries(wywPreval).forEach(([key, lazyValue]) => {
44
- const value = wrap(lazyValue);
45
- valueCache.set(key, value);
46
- });
47
- log(`<< evaluated __wywPreval %O`, valueCache);
48
- return [valueCache, evaluated.dependencies];
8
+ export async function* evalFile() {
9
+ const { entrypoint } = this;
10
+ const { log } = entrypoint;
11
+ const preevalResult = entrypoint.getPreevalResult();
12
+ if (preevalResult && (preevalResult.dependencyNames?.length ?? 0) === 0) {
13
+ const valueCache = new Map();
14
+ preevalResult.staticValueCache?.forEach((value, key) => {
15
+ valueCache.set(key, value);
16
+ });
17
+ const dependencies = [...new Set(preevalResult.staticDependencies ?? [])];
18
+ log(`<< skipped evaluate __wywPreval %O`, valueCache);
19
+ return [valueCache, dependencies];
20
+ }
21
+ log(`>> evaluate __wywPreval`);
22
+ let evaluated;
23
+ while (evaluated === undefined) {
24
+ try {
25
+ // eslint-disable-next-line no-await-in-loop
26
+ evaluated = await this.services.eventEmitter.perf("transform:evalFile", () => evaluate(this.services, entrypoint));
27
+ } catch (e) {
28
+ if (isUnprocessedEntrypointError(e)) {
29
+ entrypoint.log("Evaluation has been aborted because one if the required files is not processed. Schedule reprocessing and repeat evaluation.");
30
+ yield [
31
+ "processEntrypoint",
32
+ e.entrypoint,
33
+ undefined
34
+ ];
35
+ } else {
36
+ throw e;
37
+ }
38
+ }
39
+ }
40
+ if (!evaluated.values) {
41
+ return null;
42
+ }
43
+ const valueCache = evaluated.values;
44
+ preevalResult?.staticValueCache?.forEach((value, key) => {
45
+ valueCache.set(key, value);
46
+ });
47
+ const dependencies = [...new Set([...evaluated.dependencies, ...preevalResult?.staticDependencies ?? []])];
48
+ log(`<< evaluated __wywPreval %O`, valueCache);
49
+ return [valueCache, dependencies];
49
50
  }
50
- //# sourceMappingURL=evalFile.js.map
51
+ //# sourceMappingURL=evalFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evalFile.js","names":["evaluate","hasWywPreval","isUnprocessedEntrypointError","wrap","fn","e","evalFile","entrypoint","log","evaluated","undefined","services","wywPreval","value","__wywPreval","valueCache","Map","Object","entries","forEach","key","lazyValue","set","dependencies"],"sources":["../../../src/transform/generators/evalFile.ts"],"sourcesContent":["import type { ValueCache } from '@wyw-in-js/processor-utils';\n\nimport type { IEvaluateResult } from '../../evaluators';\nimport evaluate from '../../evaluators';\nimport hasWywPreval from '../../utils/hasWywPreval';\nimport { isUnprocessedEntrypointError } from '../actions/UnprocessedEntrypointError';\nimport type { IEvalAction, SyncScenarioForAction } from '../types';\n\nconst wrap = <T>(fn: () => T): T | Error => {\n try {\n return fn();\n } catch (e) {\n return e as Error;\n }\n};\n\n/**\n * Executes the code prepared in previous steps within the current `Entrypoint`.\n * Returns all exports that were requested in `only`.\n */\n// eslint-disable-next-line require-yield\nexport function* evalFile(\n this: IEvalAction\n): SyncScenarioForAction<IEvalAction> {\n const { entrypoint } = this;\n const { log } = entrypoint;\n\n log(`>> evaluate __wywPreval`);\n\n let evaluated: IEvaluateResult | undefined;\n\n while (evaluated === undefined) {\n try {\n evaluated = evaluate(this.services, entrypoint);\n } catch (e) {\n if (isUnprocessedEntrypointError(e)) {\n entrypoint.log(\n 'Evaluation has been aborted because one if the required files is not processed. Schedule reprocessing and repeat evaluation.'\n );\n yield ['processEntrypoint', e.entrypoint, undefined];\n } else {\n throw e;\n }\n }\n }\n\n const wywPreval = hasWywPreval(evaluated.value)\n ? evaluated.value.__wywPreval\n : undefined;\n\n if (!wywPreval) {\n return null;\n }\n\n const valueCache: ValueCache = new Map();\n Object.entries(wywPreval).forEach(([key, lazyValue]) => {\n const value = wrap(lazyValue);\n valueCache.set(key, value);\n });\n\n log(`<< evaluated __wywPreval %O`, valueCache);\n\n return [valueCache, evaluated.dependencies];\n}\n"],"mappings":"AAGA,OAAOA,QAAQ,MAAM,kBAAkB;AACvC,OAAOC,YAAY,MAAM,0BAA0B;AACnD,SAASC,4BAA4B,QAAQ,uCAAuC;AAGpF,MAAMC,IAAI,GAAOC,EAAW,IAAgB;EAC1C,IAAI;IACF,OAAOA,EAAE,CAAC,CAAC;EACb,CAAC,CAAC,OAAOC,CAAC,EAAE;IACV,OAAOA,CAAC;EACV;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,UAAUC,QAAQA,CAAA,EAEa;EACpC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAC3B,MAAM;IAAEC;EAAI,CAAC,GAAGD,UAAU;EAE1BC,GAAG,CAAC,yBAAyB,CAAC;EAE9B,IAAIC,SAAsC;EAE1C,OAAOA,SAAS,KAAKC,SAAS,EAAE;IAC9B,IAAI;MACFD,SAAS,GAAGT,QAAQ,CAAC,IAAI,CAACW,QAAQ,EAAEJ,UAAU,CAAC;IACjD,CAAC,CAAC,OAAOF,CAAC,EAAE;MACV,IAAIH,4BAA4B,CAACG,CAAC,CAAC,EAAE;QACnCE,UAAU,CAACC,GAAG,CACZ,8HACF,CAAC;QACD,MAAM,CAAC,mBAAmB,EAAEH,CAAC,CAACE,UAAU,EAAEG,SAAS,CAAC;MACtD,CAAC,MAAM;QACL,MAAML,CAAC;MACT;IACF;EACF;EAEA,MAAMO,SAAS,GAAGX,YAAY,CAACQ,SAAS,CAACI,KAAK,CAAC,GAC3CJ,SAAS,CAACI,KAAK,CAACC,WAAW,GAC3BJ,SAAS;EAEb,IAAI,CAACE,SAAS,EAAE;IACd,OAAO,IAAI;EACb;EAEA,MAAMG,UAAsB,GAAG,IAAIC,GAAG,CAAC,CAAC;EACxCC,MAAM,CAACC,OAAO,CAACN,SAAS,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,SAAS,CAAC,KAAK;IACtD,MAAMR,KAAK,GAAGV,IAAI,CAACkB,SAAS,CAAC;IAC7BN,UAAU,CAACO,GAAG,CAACF,GAAG,EAAEP,KAAK,CAAC;EAC5B,CAAC,CAAC;EAEFL,GAAG,CAAC,6BAA6B,EAAEO,UAAU,CAAC;EAE9C,OAAO,CAACA,UAAU,EAAEN,SAAS,CAACc,YAAY,CAAC;AAC7C","ignoreList":[]}
1
+ {"mappings":"AAEA,OAAO,cAAwC;AAC/C,SAAS,oCAAoC;;;;;;AAQ7C,OAAO,gBAAgB,WAEgB;CACrC,MAAM,EAAE,eAAe;CACvB,MAAM,EAAE,QAAQ;CAChB,MAAM,gBAAgB,WAAW,kBAAkB;AAEnD,KAAI,kBAAkB,cAAc,iBAAiB,UAAU,OAAO,GAAG;EACvE,MAAM,aAAyB,IAAI,KAAK;AACxC,gBAAc,kBAAkB,SAAS,OAAO,QAAQ;AACtD,cAAW,IAAI,KAAK,MAAM;IAC1B;EAEF,MAAM,eAAe,CAAC,GAAG,IAAI,IAAI,cAAc,sBAAsB,EAAE,CAAC,CAAC;AACzE,MAAI,sCAAsC,WAAW;AAErD,SAAO,CAAC,YAAY,aAAa;;AAGnC,KAAI,0BAA0B;CAE9B,IAAI;AAEJ,QAAO,cAAc,WAAW;AAC9B,MAAI;;AAEF,eAAY,MAAM,KAAK,SAAS,aAAa,KAC3C,4BACM,SAAS,KAAK,UAAU,WAAW,CAC1C;WACM,GAAG;AACV,OAAI,6BAA6B,EAAE,EAAE;AACnC,eAAW,IACT,+HACD;AACD,UAAM;KAAC;KAAqB,EAAE;KAAY;KAAU;UAC/C;AACL,UAAM;;;;AAKZ,KAAI,CAAC,UAAU,QAAQ;AACrB,SAAO;;CAGT,MAAM,aAAyB,UAAU;AACzC,gBAAe,kBAAkB,SAAS,OAAO,QAAQ;AACvD,aAAW,IAAI,KAAK,MAAM;GAC1B;CACF,MAAM,eAAe,CACnB,GAAG,IAAI,IAAI,CACT,GAAG,UAAU,cACb,GAAI,eAAe,sBAAsB,EAAE,CAC5C,CAAC,CACH;AAED,KAAI,+BAA+B,WAAW;AAE9C,QAAO,CAAC,YAAY,aAAa","names":[],"sources":["../../../src/transform/generators/evalFile.ts"],"version":3,"sourcesContent":["import type { ValueCache } from '@wyw-in-js/processor-utils';\n\nimport evaluate, { type IEvaluateResult } from '../../evaluators';\nimport { isUnprocessedEntrypointError } from '../actions/UnprocessedEntrypointError';\nimport type { AsyncScenarioForAction, IEvalAction } from '../types';\n\n/**\n * Executes the code prepared in previous steps within the current `Entrypoint`.\n * Returns all exports that were requested in `only`.\n */\n// eslint-disable-next-line require-yield\nexport async function* evalFile(\n this: IEvalAction\n): AsyncScenarioForAction<IEvalAction> {\n const { entrypoint } = this;\n const { log } = entrypoint;\n const preevalResult = entrypoint.getPreevalResult();\n\n if (preevalResult && (preevalResult.dependencyNames?.length ?? 0) === 0) {\n const valueCache: ValueCache = new Map();\n preevalResult.staticValueCache?.forEach((value, key) => {\n valueCache.set(key, value);\n });\n\n const dependencies = [...new Set(preevalResult.staticDependencies ?? [])];\n log(`<< skipped evaluate __wywPreval %O`, valueCache);\n\n return [valueCache, dependencies];\n }\n\n log(`>> evaluate __wywPreval`);\n\n let evaluated: IEvaluateResult | undefined;\n\n while (evaluated === undefined) {\n try {\n // eslint-disable-next-line no-await-in-loop\n evaluated = await this.services.eventEmitter.perf(\n 'transform:evalFile',\n () => evaluate(this.services, entrypoint)\n );\n } catch (e) {\n if (isUnprocessedEntrypointError(e)) {\n entrypoint.log(\n 'Evaluation has been aborted because one if the required files is not processed. Schedule reprocessing and repeat evaluation.'\n );\n yield ['processEntrypoint', e.entrypoint, undefined];\n } else {\n throw e;\n }\n }\n }\n\n if (!evaluated.values) {\n return null;\n }\n\n const valueCache: ValueCache = evaluated.values;\n preevalResult?.staticValueCache?.forEach((value, key) => {\n valueCache.set(key, value);\n });\n const dependencies = [\n ...new Set([\n ...evaluated.dependencies,\n ...(preevalResult?.staticDependencies ?? []),\n ]),\n ];\n\n log(`<< evaluated __wywPreval %O`, valueCache);\n\n return [valueCache, dependencies];\n}\n"],"file":"evalFile.js"}
@@ -1,96 +1,84 @@
1
- import { SourceMapGenerator } from 'source-map';
2
- import { createStylisPreprocessor } from './createStylisPreprocessor';
1
+ import { SourceMapGenerator } from "source-map";
2
+ import { createStylisPreprocessor } from "./createStylisPreprocessor.js";
3
3
  function extractCssFromAst(rules, originalCode, options) {
4
- const mappings = [];
5
- let cssText = '';
6
- let preprocessor;
7
- if (typeof options.preprocessor === 'function') {
8
- // eslint-disable-next-line prefer-destructuring
9
- preprocessor = options.preprocessor;
10
- } else {
11
- switch (options.preprocessor) {
12
- case 'none':
13
- preprocessor = (selector, text) => `${selector} {${text}}\n`;
14
- break;
15
- case 'stylis':
16
- default:
17
- preprocessor = createStylisPreprocessor(options);
18
- }
19
- }
20
- Object.keys(rules).forEach((selector, index) => {
21
- mappings.push({
22
- generated: {
23
- line: index + 1,
24
- column: 0
25
- },
26
- original: rules[selector].start,
27
- name: selector,
28
- source: ''
29
- });
30
- if (rules[selector].atom) {
31
- // For atoms, we just directly insert cssText, to give the atomizer full control over the rules
32
- cssText += `${rules[selector].cssText}\n`;
33
- } else {
34
- // Run each rule through stylis to support nesting
35
- cssText += `${preprocessor(selector, rules[selector].cssText)}\n`;
36
- }
37
- });
38
- return {
39
- cssText,
40
- rules,
41
- get cssSourceMapText() {
42
- if (mappings?.length) {
43
- const generator = new SourceMapGenerator({
44
- file: options.filename.replace(/\.js$/, '.css')
45
- });
46
- mappings.forEach(mapping => generator.addMapping({
47
- ...mapping,
48
- source: options.filename
49
- }));
50
- generator.setSourceContent(options.filename, originalCode);
51
- return generator.toString();
52
- }
53
- return '';
54
- }
55
- };
4
+ const mappings = [];
5
+ let cssText = "";
6
+ let preprocessor;
7
+ if (typeof options.preprocessor === "function") {
8
+ // eslint-disable-next-line prefer-destructuring
9
+ preprocessor = options.preprocessor;
10
+ } else {
11
+ switch (options.preprocessor) {
12
+ case "none":
13
+ preprocessor = (selector, text) => `${selector} {${text}}\n`;
14
+ break;
15
+ case "stylis":
16
+ default: preprocessor = createStylisPreprocessor(options);
17
+ }
18
+ }
19
+ Object.keys(rules).forEach((selector, index) => {
20
+ mappings.push({
21
+ generated: {
22
+ line: index + 1,
23
+ column: 0
24
+ },
25
+ original: rules[selector].start,
26
+ name: selector,
27
+ source: ""
28
+ });
29
+ if (rules[selector].atom) {
30
+ // For atoms, we just directly insert cssText, to give the atomizer full control over the rules
31
+ cssText += `${rules[selector].cssText}\n`;
32
+ } else {
33
+ // Run each rule through stylis to support nesting
34
+ cssText += `${preprocessor(selector, rules[selector].cssText)}\n`;
35
+ }
36
+ });
37
+ return {
38
+ cssText,
39
+ rules,
40
+ get cssSourceMapText() {
41
+ if (mappings?.length) {
42
+ const generator = new SourceMapGenerator({ file: options.filename.replace(/\.js$/, ".css") });
43
+ mappings.forEach((mapping) => generator.addMapping({
44
+ ...mapping,
45
+ source: options.filename
46
+ }));
47
+ generator.setSourceContent(options.filename, originalCode);
48
+ return generator.toString();
49
+ }
50
+ return "";
51
+ }
52
+ };
56
53
  }
57
-
58
54
  /**
59
- * Extract artifacts (e.g. CSS) from processors
60
- */
55
+ * Extract artifacts (e.g. CSS) from processors
56
+ */
61
57
  // eslint-disable-next-line require-yield
62
58
  export function* extract() {
63
- const {
64
- options
65
- } = this.services;
66
- const {
67
- entrypoint
68
- } = this;
69
- const {
70
- processors
71
- } = this.data;
72
- const {
73
- loadedAndParsed
74
- } = entrypoint;
75
- if (loadedAndParsed.evaluator === 'ignored') {
76
- throw new Error('entrypoint was ignored');
77
- }
78
- let allRules = {};
79
- const allReplacements = [];
80
- processors.forEach(processor => {
81
- processor.artifacts.forEach(artifact => {
82
- if (artifact[0] !== 'css') return;
83
- const [rules, replacements] = artifact[1];
84
- allRules = {
85
- ...allRules,
86
- ...rules
87
- };
88
- allReplacements.push(...replacements);
89
- });
90
- });
91
- return {
92
- ...extractCssFromAst(allRules, loadedAndParsed.code, options),
93
- replacements: allReplacements
94
- };
59
+ const { options } = this.services;
60
+ const { entrypoint } = this;
61
+ const { processors } = this.data;
62
+ const { loadedAndParsed } = entrypoint;
63
+ if (loadedAndParsed.evaluator === "ignored") {
64
+ throw new Error("entrypoint was ignored");
65
+ }
66
+ let allRules = {};
67
+ const allReplacements = [];
68
+ processors.forEach((processor) => {
69
+ processor.artifacts.forEach((artifact) => {
70
+ if (artifact[0] !== "css") return;
71
+ const [rules, replacements] = artifact[1];
72
+ allRules = {
73
+ ...allRules,
74
+ ...rules
75
+ };
76
+ allReplacements.push(...replacements);
77
+ });
78
+ });
79
+ return {
80
+ ...extractCssFromAst(allRules, loadedAndParsed.code, options),
81
+ replacements: allReplacements
82
+ };
95
83
  }
96
- //# sourceMappingURL=extract.js.map
84
+ //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["SourceMapGenerator","createStylisPreprocessor","extractCssFromAst","rules","originalCode","options","mappings","cssText","preprocessor","selector","text","Object","keys","forEach","index","push","generated","line","column","original","start","name","source","atom","cssSourceMapText","length","generator","file","filename","replace","mapping","addMapping","setSourceContent","toString","extract","services","entrypoint","processors","data","loadedAndParsed","evaluator","Error","allRules","allReplacements","processor","artifacts","artifact","replacements","code"],"sources":["../../../src/transform/generators/extract.ts"],"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<\n Options,\n 'preprocessor' | 'filename' | 'outputFilename' | 'prefixer' | 'keepComments'\n >\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"AACA,SAAS,0BAA0B;AAMnC,SAAS,gCAAgC;AAEzC,SAAS,kBACP,OACA,cACA,SAI6D;CAC7D,MAAM,WAAsB,EAAE;CAE9B,IAAI,UAAU;CAEd,IAAI;AACJ,KAAI,OAAO,QAAQ,iBAAiB,YAAY;;AAE9C,iBAAe,QAAQ;QAClB;AACL,UAAQ,QAAQ,cAAhB;GACE,KAAK;AACH,oBAAgB,UAAU,SAAS,GAAG,SAAS,IAAI,KAAK;AACxD;GACF,KAAK;GACL,QACE,gBAAe,yBAAyB,QAAQ;;;AAItD,QAAO,KAAK,MAAM,CAAC,SAAS,UAAU,UAAU;AAC9C,WAAS,KAAK;GACZ,WAAW;IACT,MAAM,QAAQ;IACd,QAAQ;IACT;GACD,UAAU,MAAM,UAAU;GAC1B,MAAM;GACN,QAAQ;GACT,CAAC;AAEF,MAAI,MAAM,UAAU,MAAM;;AAExB,cAAW,GAAG,MAAM,UAAU,QAAQ;SACjC;;AAEL,cAAW,GAAG,aAAa,UAAU,MAAM,UAAU,QAAQ,CAAC;;GAEhE;AAEF,QAAO;EACL;EACA;EAEA,IAAI,mBAAmB;AACrB,OAAI,UAAU,QAAQ;IACpB,MAAM,YAAY,IAAI,mBAAmB,EACvC,MAAM,QAAQ,SAAS,QAAQ,SAAS,OAAO,EAChD,CAAC;AAEF,aAAS,SAAS,YAChB,UAAU,WAAW;KAAE,GAAG;KAAS,QAAQ,QAAQ;KAAU,CAAC,CAC/D;AAED,cAAU,iBAAiB,QAAQ,UAAU,aAAa;AAE1D,WAAO,UAAU,UAAU;;AAG7B,UAAO;;EAEV;;;;;;AAOH,OAAO,UAAU,UAEwB;CACvC,MAAM,EAAE,YAAY,KAAK;CACzB,MAAM,EAAE,eAAe;CACvB,MAAM,EAAE,eAAe,KAAK;CAC5B,MAAM,EAAE,oBAAoB;AAC5B,KAAI,gBAAgB,cAAc,WAAW;AAC3C,QAAM,IAAI,MAAM,yBAAyB;;CAG3C,IAAI,WAAkB,EAAE;CACxB,MAAM,kBAAgC,EAAE;AACxC,YAAW,SAAS,cAAc;AAChC,YAAU,UAAU,SAAS,aAAa;AACxC,OAAI,SAAS,OAAO,MAAO;GAC3B,MAAM,CAAC,OAAO,gBAAgB,SAAS;AAKvC,cAAW;IACT,GAAG;IACH,GAAG;IACJ;AAED,mBAAgB,KAAK,GAAG,aAAa;IACrC;GACF;AAEF,QAAO;EACL,GAAG,kBAAkB,UAAU,gBAAgB,MAAM,QAAQ;EAC7D,cAAc;EACf","names":[],"sources":["../../../src/transform/generators/extract.ts"],"version":3,"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<\n Options,\n 'preprocessor' | 'filename' | 'outputFilename' | 'prefixer' | 'keepComments'\n >\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"file":"extract.js"}
@@ -1,78 +1,61 @@
1
- import { collectExportsAndImports } from '../../utils/collectExportsAndImports';
1
+ /* eslint-disable no-continue */
2
+ import { collectOxcExportsAndImports } from "../../utils/collectOxcExportsAndImports.js";
3
+ import { oxcShaker } from "../../shaker.js";
2
4
  export function findExportsInImports(entrypoint, imports) {
3
- const results = [];
4
- for (const imp of imports) {
5
- const {
6
- resolved
7
- } = imp;
8
- if (!resolved) {
9
- throw new Error(`Could not resolve import ${imp.source}`);
10
- }
11
- const newEntrypoint = entrypoint.createChild(resolved, []);
12
- if (newEntrypoint === 'loop') {
13
- // eslint-disable-next-line no-continue
14
- continue;
15
- }
16
- results.push({
17
- entrypoint: newEntrypoint,
18
- import: imp.source
19
- });
20
- }
21
- return results;
5
+ const results = [];
6
+ for (const imp of imports) {
7
+ const { resolved } = imp;
8
+ if (!resolved) {
9
+ throw new Error(`Could not resolve import ${imp.source}`);
10
+ }
11
+ const newEntrypoint = entrypoint.createChild(resolved, []);
12
+ if (newEntrypoint === "loop") {
13
+ continue;
14
+ }
15
+ results.push({
16
+ entrypoint: newEntrypoint,
17
+ import: imp.source
18
+ });
19
+ }
20
+ return results;
22
21
  }
23
22
  export function* getExports() {
24
- const {
25
- entrypoint,
26
- services: {
27
- cache
28
- }
29
- } = this;
30
- const {
31
- loadedAndParsed
32
- } = entrypoint;
33
- if (loadedAndParsed.ast === undefined) {
34
- return [];
35
- }
36
- entrypoint.log(`get exports from %s`, entrypoint.name);
37
- if (cache.has('exports', entrypoint.name)) {
38
- return cache.get('exports', entrypoint.name);
39
- }
40
- let withWildcardReexport = [];
41
- const result = [];
42
- this.services.babel.traverse(loadedAndParsed.ast, {
43
- Program(path) {
44
- const {
45
- exports,
46
- reexports
47
- } = collectExportsAndImports(path, 'disabled');
48
- Object.keys(exports).forEach(token => {
49
- result.push(token);
50
- });
51
- reexports.forEach(e => {
52
- if (e.exported !== '*') {
53
- result.push(e.exported);
54
- }
55
- });
56
- withWildcardReexport = reexports.filter(e => e.exported === '*');
57
- }
58
- });
59
- if (withWildcardReexport.length) {
60
- const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {
61
- imports: new Map(withWildcardReexport.map(i => [i.source, []]))
62
- });
63
- const dependencyFilenames = resolvedImports.flatMap(dependency => dependency.resolved ? [dependency.resolved] : []);
64
- const importedEntrypoints = findExportsInImports(entrypoint, resolvedImports);
65
- for (const importedEntrypoint of importedEntrypoints) {
66
- const exports = yield* this.getNext('getExports', importedEntrypoint.entrypoint, undefined);
67
- result.push(...exports);
68
- }
69
- cache.add('exports', entrypoint.name, result);
70
- cache.setCacheDependencies('exports', entrypoint.name, dependencyFilenames);
71
- entrypoint.log(`exports: %o`, result);
72
- return result;
73
- }
74
- entrypoint.log(`exports: %o`, result);
75
- cache.add('exports', entrypoint.name, result);
76
- return result;
23
+ const { entrypoint, services: { cache } } = this;
24
+ const { loadedAndParsed } = entrypoint;
25
+ entrypoint.log("get exports from %s", entrypoint.name);
26
+ if (cache.has("exports", entrypoint.name)) {
27
+ return cache.get("exports", entrypoint.name);
28
+ }
29
+ let withWildcardReexport = [];
30
+ const result = [];
31
+ if (loadedAndParsed.evaluator !== oxcShaker) {
32
+ throw new Error(`[wyw-in-js] ${entrypoint.name} matched a legacy evaluator. The Oxc runtime path supports only the default Oxc evaluator.`);
33
+ }
34
+ const { exports, reexports } = collectOxcExportsAndImports(loadedAndParsed.code, loadedAndParsed.evalConfig.filename ?? entrypoint.name);
35
+ Object.keys(exports).forEach((token) => {
36
+ result.push(token);
37
+ });
38
+ reexports.forEach((reexport) => {
39
+ if (reexport.exported !== "*") {
40
+ result.push(reexport.exported);
41
+ }
42
+ });
43
+ withWildcardReexport = reexports.filter((reexport) => reexport.exported === "*");
44
+ if (withWildcardReexport.length) {
45
+ const resolvedImports = yield* this.getNext("resolveImports", entrypoint, { imports: new Map(withWildcardReexport.map((item) => [item.source, []])) });
46
+ const dependencyFilenames = resolvedImports.flatMap((dependency) => dependency.resolved ? [dependency.resolved] : []);
47
+ const importedEntrypoints = findExportsInImports(entrypoint, resolvedImports);
48
+ for (const importedEntrypoint of importedEntrypoints) {
49
+ const childExports = yield* this.getNext("getExports", importedEntrypoint.entrypoint, undefined);
50
+ result.push(...childExports);
51
+ }
52
+ cache.add("exports", entrypoint.name, result);
53
+ cache.setCacheDependencies("exports", entrypoint.name, dependencyFilenames);
54
+ entrypoint.log("exports: %o", result);
55
+ return result;
56
+ }
57
+ entrypoint.log("exports: %o", result);
58
+ cache.add("exports", entrypoint.name, result);
59
+ return result;
77
60
  }
78
- //# sourceMappingURL=getExports.js.map
61
+ //# sourceMappingURL=getExports.js.map