@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,354 +1,386 @@
1
1
  /* eslint-disable no-continue */
2
- import * as path from 'path';
3
- import { compile, middleware, prefixer, serialize, stringify, tokenize, COMMENT, RULESET, KEYFRAMES, DECLARATION } from 'stylis';
2
+ import * as path from "path";
3
+ import { compile, middleware, prefixer, serialize, stringify, tokenize, COMMENT, RULESET, KEYFRAMES, DECLARATION } from "stylis";
4
4
  const POSIX_SEP = path.posix.sep;
5
5
  export function transformUrl(url, outputFilename, sourceFilename, platformPath = path) {
6
- // Replace asset path with new path relative to the output CSS
7
- const relative = platformPath.relative(platformPath.dirname(outputFilename),
8
- // Get the absolute path to the asset from the path relative to the JS file
9
- platformPath.resolve(platformPath.dirname(sourceFilename), url));
10
- if (platformPath.sep === POSIX_SEP) {
11
- return relative;
12
- }
13
- return relative.split(platformPath.sep).join(POSIX_SEP);
6
+ // Replace asset path with new path relative to the output CSS
7
+ const relative = platformPath.relative(
8
+ platformPath.dirname(outputFilename),
9
+ // Get the absolute path to the asset from the path relative to the JS file
10
+ platformPath.resolve(platformPath.dirname(sourceFilename), url)
11
+ );
12
+ if (platformPath.sep === POSIX_SEP) {
13
+ return relative;
14
+ }
15
+ return relative.split(platformPath.sep).join(POSIX_SEP);
14
16
  }
15
- const DEFINED_KEYFRAMES = Symbol('definedKeyframes');
16
- const ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');
17
- const ORIGINAL_VALUE_KEY = Symbol('originalValue');
18
- const IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');
19
- const getOriginalElementValue = element => {
20
- return element ? element[ORIGINAL_VALUE_KEY] ?? element.value : '';
17
+ const DEFINED_KEYFRAMES = Symbol("definedKeyframes");
18
+ const ORIGINAL_KEYFRAME_NAME = Symbol("originalKeyframeName");
19
+ const ORIGINAL_VALUE_KEY = Symbol("originalValue");
20
+ const IS_GLOBAL_KEYFRAMES = Symbol("isGlobalKeyframes");
21
+ const getOriginalElementValue = (element) => {
22
+ return element ? element[ORIGINAL_VALUE_KEY] ?? element.value : "";
21
23
  };
22
24
  function throwIfNotProd(key, value, type) {
23
- if (process.env.NODE_ENV !== 'production') {
24
- throw new Error(`"element.${key}" has type "${type}" (${JSON.stringify(value, null, 2)}), it's not expected. Please report a bug if it happens.`);
25
- }
26
- return false;
25
+ if (process.env.NODE_ENV !== "production") {
26
+ throw new Error(`"element.${key}" has type "${type}" (${JSON.stringify(value, null, 2)}), it's not expected. Please report a bug if it happens.`);
27
+ }
28
+ return false;
27
29
  }
28
30
  function childrenIsString(children) {
29
- return typeof children === 'string' || throwIfNotProd('children', children, 'Element[]');
31
+ return typeof children === "string" || throwIfNotProd("children", children, "Element[]");
30
32
  }
31
33
  function propsAreStrings(props) {
32
- return Array.isArray(props) || throwIfNotProd('props', props, 'string');
34
+ return Array.isArray(props) || throwIfNotProd("props", props, "string");
33
35
  }
34
36
  function propsIsString(props) {
35
- return typeof props === 'string' || throwIfNotProd('props', props, 'string[]');
37
+ return typeof props === "string" || throwIfNotProd("props", props, "string[]");
36
38
  }
37
- const isDeclaration = element => {
38
- return element.type === DECLARATION && propsIsString(element.props) && childrenIsString(element.children);
39
+ const isDeclaration = (element) => {
40
+ return element.type === DECLARATION && propsIsString(element.props) && childrenIsString(element.children);
39
41
  };
40
- const isKeyframes = element => {
41
- return element.type === KEYFRAMES && propsAreStrings(element.props);
42
+ const isKeyframes = (element) => {
43
+ return element.type === KEYFRAMES && propsAreStrings(element.props);
42
44
  };
43
- const isRuleset = element => {
44
- return element.type === RULESET && propsAreStrings(element.props);
45
+ const isRuleset = (element) => {
46
+ return element.type === RULESET && propsAreStrings(element.props);
45
47
  };
46
48
  function nonMediaParent(element) {
47
- let {
48
- parent
49
- } = element;
50
- while (parent) {
51
- if (parent.type !== '@media') {
52
- return parent;
53
- }
54
- parent = parent.parent;
55
- }
56
- return null;
49
+ let { parent } = element;
50
+ while (parent) {
51
+ if (parent.type !== "@media") {
52
+ return parent;
53
+ }
54
+ parent = parent.parent;
55
+ }
56
+ return null;
57
57
  }
58
-
59
58
  /**
60
- * Stylis plugin that mimics :global() selector behavior from Stylis v3.
61
- */
62
- export const stylisGlobalPlugin = element => {
63
- function getGlobalSelectorModifiers(el) {
64
- const parent = nonMediaParent(el);
65
- const value = getOriginalElementValue(el);
66
- const parentValue = getOriginalElementValue(parent);
67
- if (parent?.children.length === 0 && parentValue.includes(':global(') || parent && !value.includes(':global(')) {
68
- return getGlobalSelectorModifiers(parent);
69
- }
70
- const match = value.match(/(&\f( )?)?:global\(/);
71
- if (match === null) {
72
- throw new Error(`Failed to match :global() selector in "${value}". Please report a bug if it happens.`);
73
- }
74
- const [, baseSelector, spaceDelimiter] = match;
75
- return {
76
- includeBaseSelector: !!baseSelector,
77
- includeSpaceDelimiter: !!spaceDelimiter
78
- };
79
- }
80
- if (!isRuleset(element)) {
81
- return;
82
- }
83
- Object.assign(element, {
84
- props: element.props.map(cssSelector => {
85
- // The value can be changed by other middlewares, but we need an original one with `&`
86
- Object.assign(element, {
87
- [ORIGINAL_VALUE_KEY]: element.value
88
- });
89
-
90
- // Avoids calling tokenize() on every string
91
- if (!cssSelector.includes(':global(')) {
92
- return cssSelector;
93
- }
94
- if (element.children.length === 0) {
95
- return cssSelector;
96
- }
97
- const {
98
- includeBaseSelector,
99
- includeSpaceDelimiter
100
- } = getGlobalSelectorModifiers(element);
101
- const tokens = tokenize(cssSelector);
102
- let selector = '';
103
- for (let i = 0, len = tokens.length; i < len; i++) {
104
- const token = tokens[i];
105
-
106
- //
107
- // Match for ":global("
108
- if (token === ':' && tokens[i + 1] === 'global') {
109
- //
110
- // Match for ":global()"
111
- if (tokens[i + 2] === '()') {
112
- selector = [...tokens.slice(i + 4), includeSpaceDelimiter ? ' ' : '', ...(includeBaseSelector ? tokens.slice(0, i - 1) : []), includeSpaceDelimiter ? '' : ' '].join('');
113
- break;
114
- }
115
-
116
- //
117
- // Match for ":global(selector)"
118
- selector = [tokens[i + 2].slice(1, -1), includeSpaceDelimiter ? ' ' : '', ...(includeBaseSelector ? tokens.slice(0, i - 1) : []), includeSpaceDelimiter ? '' : ' '].join('');
119
- break;
120
- }
121
- }
122
- return selector;
123
- })
124
- });
59
+ * Stylis plugin that mimics :global() selector behavior from Stylis v3.
60
+ */
61
+ export const stylisGlobalPlugin = (element) => {
62
+ function getGlobalSelectorModifiers(el) {
63
+ const parent = nonMediaParent(el);
64
+ const value = getOriginalElementValue(el);
65
+ const parentValue = getOriginalElementValue(parent);
66
+ if (parent?.children.length === 0 && parentValue.includes(":global(") || parent && !value.includes(":global(")) {
67
+ return getGlobalSelectorModifiers(parent);
68
+ }
69
+ const match = value.match(/(&\f( )?)?:global\(/);
70
+ if (match === null) {
71
+ throw new Error(`Failed to match :global() selector in "${value}". Please report a bug if it happens.`);
72
+ }
73
+ const [, baseSelector, spaceDelimiter] = match;
74
+ return {
75
+ includeBaseSelector: !!baseSelector,
76
+ includeSpaceDelimiter: !!spaceDelimiter
77
+ };
78
+ }
79
+ if (!isRuleset(element)) {
80
+ return;
81
+ }
82
+ Object.assign(element, { props: element.props.map((cssSelector) => {
83
+ // The value can be changed by other middlewares, but we need an original one with `&`
84
+ Object.assign(element, { [ORIGINAL_VALUE_KEY]: element.value });
85
+ // Avoids calling tokenize() on every string
86
+ if (!cssSelector.includes(":global(")) {
87
+ return cssSelector;
88
+ }
89
+ if (element.children.length === 0) {
90
+ return cssSelector;
91
+ }
92
+ const { includeBaseSelector, includeSpaceDelimiter } = getGlobalSelectorModifiers(element);
93
+ const tokens = tokenize(cssSelector);
94
+ let selector = "";
95
+ for (let i = 0, len = tokens.length; i < len; i++) {
96
+ const token = tokens[i];
97
+ //
98
+ // Match for ":global("
99
+ if (token === ":" && tokens[i + 1] === "global") {
100
+ //
101
+ // Match for ":global()"
102
+ if (tokens[i + 2] === "()") {
103
+ selector = [
104
+ ...tokens.slice(i + 4),
105
+ includeSpaceDelimiter ? " " : "",
106
+ ...includeBaseSelector ? tokens.slice(0, i - 1) : [],
107
+ includeSpaceDelimiter ? "" : " "
108
+ ].join("");
109
+ break;
110
+ }
111
+ //
112
+ // Match for ":global(selector)"
113
+ selector = [
114
+ tokens[i + 2].slice(1, -1),
115
+ includeSpaceDelimiter ? " " : "",
116
+ ...includeBaseSelector ? tokens.slice(0, i - 1) : [],
117
+ includeSpaceDelimiter ? "" : " "
118
+ ].join("");
119
+ break;
120
+ }
121
+ }
122
+ return selector;
123
+ }) });
125
124
  };
126
125
  export function createStylisUrlReplacePlugin(filename, outputFilename) {
127
- return element => {
128
- if (element.type === 'decl' && outputFilename) {
129
- // When writing to a file, we need to adjust the relative paths inside url(..) expressions.
130
- // It'll allow css-loader to resolve an imported asset properly.
131
- // eslint-disable-next-line no-param-reassign
132
- element.return = element.value.replace(/\b(url\((["']?))(\.[^)]+?)(\2\))/g, (_match, p1, _p2, p3, p4) => p1 + transformUrl(p3, outputFilename, filename) + p4);
133
- }
134
- };
126
+ return (element) => {
127
+ if (element.type === "decl" && outputFilename) {
128
+ // When writing to a file, we need to adjust the relative paths inside url(..) expressions.
129
+ // It'll allow css-loader to resolve an imported asset properly.
130
+ // eslint-disable-next-line no-param-reassign
131
+ element.return = element.value.replace(/\b(url\((["']?))(\.[^)]+?)(\2\))/g, (_match, p1, _p2, p3, p4) => p1 + transformUrl(p3, outputFilename, filename) + p4);
132
+ }
133
+ };
135
134
  }
136
135
  export function createKeyframeSuffixerPlugin() {
137
- const prefixes = ['webkit', 'moz', 'ms', 'o', ''].map(i => i ? `-${i}-` : '');
138
- const getPrefixedProp = prop => prefixes.map(prefix => `${prefix}${prop}`);
139
- const buildPropsRegexp = (prop, isAtRule) => {
140
- const [at, colon] = isAtRule ? ['@', ''] : ['', ':'];
141
- return new RegExp(`^(${at}(?:${getPrefixedProp(prop).join('|')})${colon})\\s*`);
142
- };
143
- const animationNameRegexp = /:global\(([\w_-]+)\)|([\w_-]+)/;
144
- const getReplacer = (startsWith, searchValue, replacer) => {
145
- return input => {
146
- const [fullMatch] = input.match(startsWith) ?? [];
147
- if (fullMatch === undefined) {
148
- return input;
149
- }
150
- const rest = input.slice(fullMatch.length);
151
- return fullMatch + rest.replace(searchValue, replacer);
152
- };
153
- };
154
- const elementToKeyframeSuffix = el => {
155
- if (el.parent) {
156
- return elementToKeyframeSuffix(el.parent);
157
- }
158
- return el.value.replaceAll(/[^a-zA-Z0-9_-]/g, '');
159
- };
160
- const animationPropsSet = new Set([...getPrefixedProp('animation'), ...getPrefixedProp('animation-name')]);
161
- const getDefinedKeyframes = element => {
162
- if (element[DEFINED_KEYFRAMES]) {
163
- return element[DEFINED_KEYFRAMES];
164
- }
165
- if (element.parent) {
166
- return getDefinedKeyframes(element.parent);
167
- }
168
- const keyframes = new Set();
169
- for (const sibling of element.siblings ?? []) {
170
- if (sibling[ORIGINAL_KEYFRAME_NAME]) {
171
- keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);
172
- continue;
173
- }
174
- const name = sibling.props[0];
175
- if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true || name?.startsWith(':global(')) {
176
- continue;
177
- }
178
- keyframes.add(sibling.props[0]);
179
- }
180
- Object.assign(element, {
181
- [DEFINED_KEYFRAMES]: keyframes
182
- });
183
- return keyframes;
184
- };
185
- return element => {
186
- if (isKeyframes(element) && element.parent) {
187
- const suffix = elementToKeyframeSuffix(element);
188
- const replaceFn = (_match, globalMatch, scopedMatch) => globalMatch || `${scopedMatch}-${suffix}`;
189
- const originalName = element.props[0];
190
- const isGlobal = originalName?.startsWith(':global(') ?? false;
191
- Object.assign(element, {
192
- [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,
193
- [IS_GLOBAL_KEYFRAMES]: isGlobal,
194
- props: element.props.map(getReplacer(/^\s*/, animationNameRegexp, replaceFn)),
195
- value: getReplacer(buildPropsRegexp('keyframes', true), animationNameRegexp, replaceFn)(element.value)
196
- });
197
- return;
198
- }
199
- if (isDeclaration(element)) {
200
- const suffix = elementToKeyframeSuffix(element);
201
- const keys = ['children', 'return', 'value'];
202
- if (animationPropsSet.has(element.props)) {
203
- const scopedKeyframes = getDefinedKeyframes(element);
204
- const patch = Object.fromEntries(keys.map(key => {
205
- const tokens = tokenize(element[key]);
206
- let result = '';
207
- for (let i = 0; i < tokens.length; i += 1) {
208
- if (tokens[i] === ':' && tokens[i + 1] === 'global' && tokens[i + 2].startsWith('(')) {
209
- const globalName = tokens[i + 2].substring(1, tokens[i + 2].length - 1);
210
- i += 2;
211
- result += globalName;
212
- if (tokens[i + 1] !== ';') {
213
- result += ' ';
214
- }
215
- continue;
216
- }
217
- if (scopedKeyframes.has(tokens[i])) {
218
- result += `${tokens[i]}-${suffix}`;
219
- continue;
220
- }
221
- result += tokens[i];
222
- }
223
- return [key, result];
224
- }));
225
- Object.assign(element, patch);
226
- }
227
- }
228
- };
136
+ const prefixes = [
137
+ "webkit",
138
+ "moz",
139
+ "ms",
140
+ "o",
141
+ ""
142
+ ].map((i) => i ? `-${i}-` : "");
143
+ const getPrefixedProp = (prop) => prefixes.map((prefix) => `${prefix}${prop}`);
144
+ const buildPropsRegexp = (prop, isAtRule) => {
145
+ const [at, colon] = isAtRule ? ["@", ""] : ["", ":"];
146
+ return new RegExp(`^(${at}(?:${getPrefixedProp(prop).join("|")})${colon})\\s*`);
147
+ };
148
+ const animationNameRegexp = /:global\(([\w_-]+)\)|([\w_-]+)/;
149
+ const getReplacer = (startsWith, searchValue, replacer) => {
150
+ return (input) => {
151
+ const [fullMatch] = input.match(startsWith) ?? [];
152
+ if (fullMatch === undefined) {
153
+ return input;
154
+ }
155
+ const rest = input.slice(fullMatch.length);
156
+ return fullMatch + rest.replace(searchValue, replacer);
157
+ };
158
+ };
159
+ const elementToKeyframeSuffix = (el) => {
160
+ if (el.parent) {
161
+ return elementToKeyframeSuffix(el.parent);
162
+ }
163
+ return el.value.replaceAll(/[^a-zA-Z0-9_-]/g, "");
164
+ };
165
+ const animationPropsSet = new Set([...getPrefixedProp("animation"), ...getPrefixedProp("animation-name")]);
166
+ const getDefinedKeyframes = (element) => {
167
+ if (element[DEFINED_KEYFRAMES]) {
168
+ return element[DEFINED_KEYFRAMES];
169
+ }
170
+ if (element.parent) {
171
+ return getDefinedKeyframes(element.parent);
172
+ }
173
+ const keyframes = new Set();
174
+ for (const sibling of element.siblings ?? []) {
175
+ if (sibling[ORIGINAL_KEYFRAME_NAME]) {
176
+ keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);
177
+ continue;
178
+ }
179
+ const name = sibling.props[0];
180
+ if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true || name?.startsWith(":global(")) {
181
+ continue;
182
+ }
183
+ keyframes.add(sibling.props[0]);
184
+ }
185
+ Object.assign(element, { [DEFINED_KEYFRAMES]: keyframes });
186
+ return keyframes;
187
+ };
188
+ return (element) => {
189
+ if (isKeyframes(element) && element.parent) {
190
+ const suffix = elementToKeyframeSuffix(element);
191
+ const replaceFn = (_match, globalMatch, scopedMatch) => globalMatch || `${scopedMatch}-${suffix}`;
192
+ const originalName = element.props[0];
193
+ const isGlobal = originalName?.startsWith(":global(") ?? false;
194
+ Object.assign(element, {
195
+ [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,
196
+ [IS_GLOBAL_KEYFRAMES]: isGlobal,
197
+ props: element.props.map(getReplacer(/^\s*/, animationNameRegexp, replaceFn)),
198
+ value: getReplacer(buildPropsRegexp("keyframes", true), animationNameRegexp, replaceFn)(element.value)
199
+ });
200
+ return;
201
+ }
202
+ if (isDeclaration(element)) {
203
+ const suffix = elementToKeyframeSuffix(element);
204
+ const keys = [
205
+ "children",
206
+ "return",
207
+ "value"
208
+ ];
209
+ if (animationPropsSet.has(element.props)) {
210
+ const scopedKeyframes = getDefinedKeyframes(element);
211
+ const patch = Object.fromEntries(keys.map((key) => {
212
+ const tokens = tokenize(element[key]);
213
+ let result = "";
214
+ for (let i = 0; i < tokens.length; i += 1) {
215
+ if (tokens[i] === ":" && tokens[i + 1] === "global" && tokens[i + 2].startsWith("(")) {
216
+ const globalName = tokens[i + 2].substring(1, tokens[i + 2].length - 1);
217
+ i += 2;
218
+ result += globalName;
219
+ if (tokens[i + 1] !== ";") {
220
+ result += " ";
221
+ }
222
+ continue;
223
+ }
224
+ if (scopedKeyframes.has(tokens[i])) {
225
+ result += `${tokens[i]}-${suffix}`;
226
+ continue;
227
+ }
228
+ result += tokens[i];
229
+ }
230
+ return [key, result];
231
+ }));
232
+ Object.assign(element, patch);
233
+ }
234
+ }
235
+ };
229
236
  }
230
- const isMiddleware = obj => obj !== null;
237
+ const isMiddleware = (obj) => obj !== null;
231
238
  const displayKeywordRegexp = /^[a-z-]+$/;
232
- const knownMultiKeywordDisplayTokens = new Set(['block', 'inline', 'flow', 'flow-root', 'flex', 'grid', 'table', 'list-item']);
239
+ const knownMultiKeywordDisplayTokens = new Set([
240
+ "block",
241
+ "inline",
242
+ "flow",
243
+ "flow-root",
244
+ "flex",
245
+ "grid",
246
+ "table",
247
+ "list-item"
248
+ ]);
233
249
  function normalizeMultiKeywordDisplayValue(value) {
234
- const trimmed = value.trim();
235
- if (trimmed === '' || !/\s/.test(trimmed)) {
236
- return null;
237
- }
238
- const importantRegexp = /!\s*important\s*$/i;
239
- const hasImportant = importantRegexp.test(trimmed);
240
- const withoutImportant = trimmed.replace(importantRegexp, '').trim();
241
- const tokens = withoutImportant.split(/\s+/).filter(Boolean);
242
- if (tokens.length < 2) {
243
- return null;
244
- }
245
- const normalizedTokens = tokens.map(token => token.toLowerCase());
246
- if (!normalizedTokens.every(token => displayKeywordRegexp.test(token))) {
247
- return null;
248
- }
249
- const tokenSet = new Set(normalizedTokens);
250
- const hasInline = tokenSet.has('inline');
251
- const hasBlock = tokenSet.has('block');
252
- if (hasInline && hasBlock) {
253
- return null;
254
- }
255
- let outside = null;
256
- if (hasInline) {
257
- outside = 'inline';
258
- } else if (hasBlock) {
259
- outside = 'block';
260
- }
261
- const insideCandidates = ['flow-root', 'flow', 'flex', 'grid', 'table'].filter(candidate => tokenSet.has(candidate));
262
- if (insideCandidates.length > 1) {
263
- return null;
264
- }
265
- const inside = insideCandidates[0] ?? null;
266
- const hasListItem = tokenSet.has('list-item');
267
- const canCanonicalize = normalizedTokens.every(token => knownMultiKeywordDisplayTokens.has(token));
268
- if (canCanonicalize) {
269
- const canonicalOutside = outside ?? 'block';
270
- const canonicalInside = inside ?? (hasListItem ? 'flow' : null);
271
- if (canonicalInside) {
272
- let canonical = null;
273
- if (hasListItem) {
274
- if (canonicalInside === 'flow' && canonicalOutside === 'block') {
275
- canonical = 'list-item';
276
- }
277
- } else {
278
- switch (canonicalInside) {
279
- case 'flex':
280
- canonical = canonicalOutside === 'inline' ? 'inline-flex' : 'flex';
281
- break;
282
- case 'grid':
283
- canonical = canonicalOutside === 'inline' ? 'inline-grid' : 'grid';
284
- break;
285
- case 'table':
286
- canonical = canonicalOutside === 'inline' ? 'inline-table' : 'table';
287
- break;
288
- case 'flow-root':
289
- canonical = canonicalOutside === 'block' ? 'flow-root' : null;
290
- break;
291
- case 'flow':
292
- canonical = canonicalOutside === 'inline' ? 'inline' : 'block';
293
- break;
294
- default:
295
- break;
296
- }
297
- }
298
- if (canonical) {
299
- return hasImportant ? `${canonical}!important` : canonical;
300
- }
301
- }
302
- }
303
- const innerDisplay = inside === 'flex' || inside === 'grid' ? inside : null;
304
- if (innerDisplay && normalizedTokens[0] === innerDisplay && normalizedTokens.length > 1) {
305
- const reordered = [...(outside ? [outside] : []), ...normalizedTokens.filter(token => token !== innerDisplay && token !== outside), innerDisplay].join(' ');
306
- return hasImportant ? `${reordered}!important` : reordered;
307
- }
308
- return null;
250
+ const trimmed = value.trim();
251
+ if (trimmed === "" || !/\s/.test(trimmed)) {
252
+ return null;
253
+ }
254
+ const importantRegexp = /!\s*important\s*$/i;
255
+ const hasImportant = importantRegexp.test(trimmed);
256
+ const withoutImportant = trimmed.replace(importantRegexp, "").trim();
257
+ const tokens = withoutImportant.split(/\s+/).filter(Boolean);
258
+ if (tokens.length < 2) {
259
+ return null;
260
+ }
261
+ const normalizedTokens = tokens.map((token) => token.toLowerCase());
262
+ if (!normalizedTokens.every((token) => displayKeywordRegexp.test(token))) {
263
+ return null;
264
+ }
265
+ const tokenSet = new Set(normalizedTokens);
266
+ const hasInline = tokenSet.has("inline");
267
+ const hasBlock = tokenSet.has("block");
268
+ if (hasInline && hasBlock) {
269
+ return null;
270
+ }
271
+ let outside = null;
272
+ if (hasInline) {
273
+ outside = "inline";
274
+ } else if (hasBlock) {
275
+ outside = "block";
276
+ }
277
+ const insideCandidates = [
278
+ "flow-root",
279
+ "flow",
280
+ "flex",
281
+ "grid",
282
+ "table"
283
+ ].filter((candidate) => tokenSet.has(candidate));
284
+ if (insideCandidates.length > 1) {
285
+ return null;
286
+ }
287
+ const inside = insideCandidates[0] ?? null;
288
+ const hasListItem = tokenSet.has("list-item");
289
+ const canCanonicalize = normalizedTokens.every((token) => knownMultiKeywordDisplayTokens.has(token));
290
+ if (canCanonicalize) {
291
+ const canonicalOutside = outside ?? "block";
292
+ const canonicalInside = inside ?? (hasListItem ? "flow" : null);
293
+ if (canonicalInside) {
294
+ let canonical = null;
295
+ if (hasListItem) {
296
+ if (canonicalInside === "flow" && canonicalOutside === "block") {
297
+ canonical = "list-item";
298
+ }
299
+ } else {
300
+ switch (canonicalInside) {
301
+ case "flex":
302
+ canonical = canonicalOutside === "inline" ? "inline-flex" : "flex";
303
+ break;
304
+ case "grid":
305
+ canonical = canonicalOutside === "inline" ? "inline-grid" : "grid";
306
+ break;
307
+ case "table":
308
+ canonical = canonicalOutside === "inline" ? "inline-table" : "table";
309
+ break;
310
+ case "flow-root":
311
+ canonical = canonicalOutside === "block" ? "flow-root" : null;
312
+ break;
313
+ case "flow":
314
+ canonical = canonicalOutside === "inline" ? "inline" : "block";
315
+ break;
316
+ default: break;
317
+ }
318
+ }
319
+ if (canonical) {
320
+ return hasImportant ? `${canonical}!important` : canonical;
321
+ }
322
+ }
323
+ }
324
+ const innerDisplay = inside === "flex" || inside === "grid" ? inside : null;
325
+ if (innerDisplay && normalizedTokens[0] === innerDisplay && normalizedTokens.length > 1) {
326
+ const reordered = [
327
+ ...outside ? [outside] : [],
328
+ ...normalizedTokens.filter((token) => token !== innerDisplay && token !== outside),
329
+ innerDisplay
330
+ ].join(" ");
331
+ return hasImportant ? `${reordered}!important` : reordered;
332
+ }
333
+ return null;
309
334
  }
310
335
  function createStylisDisplayNormalizationPlugin() {
311
- return element => {
312
- if (!isDeclaration(element) || element.props !== 'display') {
313
- return;
314
- }
315
- const normalized = normalizeMultiKeywordDisplayValue(element.children);
316
- if (!normalized) {
317
- return;
318
- }
319
- const decl = `display:${normalized};`;
320
- Object.assign(element, {
321
- children: normalized,
322
- value: decl
323
- });
324
- };
336
+ return (element) => {
337
+ if (!isDeclaration(element) || element.props !== "display") {
338
+ return;
339
+ }
340
+ const normalized = normalizeMultiKeywordDisplayValue(element.children);
341
+ if (!normalized) {
342
+ return;
343
+ }
344
+ const decl = `display:${normalized};`;
345
+ Object.assign(element, {
346
+ children: normalized,
347
+ value: decl
348
+ });
349
+ };
325
350
  }
326
351
  function createStylisStringifier(keepComments) {
327
- if (!keepComments) {
328
- return stringify;
329
- }
330
- const keepAllComments = keepComments === true;
331
- const keepCommentsFilter = keepComments instanceof RegExp ? keepComments : null;
332
- return (element, index, children, callback) => {
333
- if (element.type === COMMENT) {
334
- if (!keepAllComments && keepCommentsFilter) {
335
- const commentValue = typeof element.children === 'string' ? element.children : element.value;
336
- keepCommentsFilter.lastIndex = 0;
337
- if (!keepCommentsFilter.test(commentValue)) {
338
- return '';
339
- }
340
- }
341
- return element.value;
342
- }
343
- return stringify(element, index, children, callback);
344
- };
352
+ if (!keepComments) {
353
+ return stringify;
354
+ }
355
+ const keepAllComments = keepComments === true;
356
+ const keepCommentsFilter = keepComments instanceof RegExp ? keepComments : null;
357
+ return (element, index, children, callback) => {
358
+ if (element.type === COMMENT) {
359
+ if (!keepAllComments && keepCommentsFilter) {
360
+ const commentValue = typeof element.children === "string" ? element.children : element.value;
361
+ keepCommentsFilter.lastIndex = 0;
362
+ if (!keepCommentsFilter.test(commentValue)) {
363
+ return "";
364
+ }
365
+ }
366
+ return element.value;
367
+ }
368
+ return stringify(element, index, children, callback);
369
+ };
345
370
  }
346
371
  export function createStylisPreprocessor(options) {
347
- const stringifier = createStylisStringifier(options.keepComments);
348
- function stylisPreprocess(selector, text) {
349
- const compiled = compile(`${selector} {${text}}\n`);
350
- return serialize(compiled, middleware([createStylisUrlReplacePlugin(options.filename, options.outputFilename), stylisGlobalPlugin, options.prefixer === false ? null : createStylisDisplayNormalizationPlugin(), options.prefixer === false ? null : prefixer, createKeyframeSuffixerPlugin(), stringifier].filter(isMiddleware)));
351
- }
352
- return stylisPreprocess;
372
+ const stringifier = createStylisStringifier(options.keepComments);
373
+ function stylisPreprocess(selector, text) {
374
+ const compiled = compile(`${selector} {${text}}\n`);
375
+ return serialize(compiled, middleware([
376
+ createStylisUrlReplacePlugin(options.filename, options.outputFilename),
377
+ stylisGlobalPlugin,
378
+ options.prefixer === false ? null : createStylisDisplayNormalizationPlugin(),
379
+ options.prefixer === false ? null : prefixer,
380
+ createKeyframeSuffixerPlugin(),
381
+ stringifier
382
+ ].filter(isMiddleware)));
383
+ }
384
+ return stylisPreprocess;
353
385
  }
354
- //# sourceMappingURL=createStylisPreprocessor.js.map
386
+ //# sourceMappingURL=createStylisPreprocessor.js.map