@wyw-in-js/transform 0.8.0 → 1.0.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 (327) hide show
  1. package/esm/babel.js.map +1 -1
  2. package/esm/cache.js +15 -4
  3. package/esm/cache.js.map +1 -1
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/evaluators/index.js.map +1 -1
  6. package/esm/index.js.map +1 -1
  7. package/esm/module.js +174 -15
  8. package/esm/module.js.map +1 -1
  9. package/esm/options/buildOptions.js +123 -4
  10. package/esm/options/buildOptions.js.map +1 -1
  11. package/esm/options/buildOptions.test.js +41 -0
  12. package/esm/options/buildOptions.test.js.map +1 -0
  13. package/esm/options/loadBabelOptions.js.map +1 -1
  14. package/esm/plugins/babel-transform.js.map +1 -1
  15. package/esm/plugins/collector.js.map +1 -1
  16. package/esm/plugins/dynamic-import.js +35 -12
  17. package/esm/plugins/dynamic-import.js.map +1 -1
  18. package/esm/plugins/preeval.js +4 -0
  19. package/esm/plugins/preeval.js.map +1 -1
  20. package/esm/plugins/shaker.js +170 -23
  21. package/esm/plugins/shaker.js.map +1 -1
  22. package/esm/shaker.js +6 -3
  23. package/esm/shaker.js.map +1 -1
  24. package/esm/transform/BaseEntrypoint.js.map +1 -1
  25. package/esm/transform/Entrypoint.helpers.js +105 -15
  26. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  27. package/esm/transform/Entrypoint.js +13 -2
  28. package/esm/transform/Entrypoint.js.map +1 -1
  29. package/esm/transform/Entrypoint.types.js.map +1 -1
  30. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  31. package/esm/transform/actions/AbortError.js.map +1 -1
  32. package/esm/transform/actions/BaseAction.js +5 -0
  33. package/esm/transform/actions/BaseAction.js.map +1 -1
  34. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  35. package/esm/transform/actions/actionRunner.js.map +1 -1
  36. package/esm/transform/actions/types.js.map +1 -1
  37. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  38. package/esm/transform/generators/collect.js.map +1 -1
  39. package/esm/transform/generators/createStylisPreprocessor.js +118 -2
  40. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  41. package/esm/transform/generators/evalFile.js.map +1 -1
  42. package/esm/transform/generators/explodeReexports.js +10 -10
  43. package/esm/transform/generators/explodeReexports.js.map +1 -1
  44. package/esm/transform/generators/extract.js.map +1 -1
  45. package/esm/transform/generators/getExports.js.map +1 -1
  46. package/esm/transform/generators/index.js.map +1 -1
  47. package/esm/transform/generators/processEntrypoint.js +5 -8
  48. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  49. package/esm/transform/generators/processImports.js.map +1 -1
  50. package/esm/transform/generators/resolveImports.js +41 -2
  51. package/esm/transform/generators/resolveImports.js.map +1 -1
  52. package/esm/transform/generators/transform.js +7 -3
  53. package/esm/transform/generators/transform.js.map +1 -1
  54. package/esm/transform/generators/workflow.js.map +1 -1
  55. package/esm/transform/helpers/loadWywOptions.js +15 -2
  56. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  57. package/esm/transform/helpers/withDefaultServices.js +2 -0
  58. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  59. package/esm/transform/isStaticallyEvaluatableModule.js +153 -0
  60. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -0
  61. package/esm/transform/rootLog.js.map +1 -1
  62. package/esm/transform/types.js.map +1 -1
  63. package/esm/transform.js +15 -6
  64. package/esm/transform.js.map +1 -1
  65. package/esm/types.js.map +1 -1
  66. package/esm/utils/EventEmitter.js.map +1 -1
  67. package/esm/utils/ShakerMetadata.js.map +1 -1
  68. package/esm/utils/TransformMetadata.js.map +1 -1
  69. package/esm/utils/addIdentifierToWywPreval.js.map +1 -1
  70. package/esm/utils/collectExportsAndImports.js +97 -6
  71. package/esm/utils/collectExportsAndImports.js.map +1 -1
  72. package/esm/utils/collectTemplateDependencies.js +1 -1
  73. package/esm/utils/collectTemplateDependencies.js.map +1 -1
  74. package/esm/utils/createId.js.map +1 -1
  75. package/esm/utils/dispose-polyfill.js.map +1 -1
  76. package/esm/utils/findIdentifiers.js.map +1 -1
  77. package/esm/utils/getConstantStringValue.js +58 -0
  78. package/esm/utils/getConstantStringValue.js.map +1 -0
  79. package/esm/utils/getFileIdx.js.map +1 -1
  80. package/esm/utils/getMemberExpressionPropertyName.js +11 -0
  81. package/esm/utils/getMemberExpressionPropertyName.js.map +1 -0
  82. package/esm/utils/getPluginKey.js.map +1 -1
  83. package/esm/utils/getScope.js.map +1 -1
  84. package/esm/utils/getSource.js.map +1 -1
  85. package/esm/utils/getTagProcessor.js +34 -6
  86. package/esm/utils/getTagProcessor.js.map +1 -1
  87. package/esm/utils/getVisitorKeys.js.map +1 -1
  88. package/esm/utils/hasWywPreval.js.map +1 -1
  89. package/esm/utils/importOverrides.js +47 -0
  90. package/esm/utils/importOverrides.js.map +1 -0
  91. package/esm/utils/isExports.js.map +1 -1
  92. package/esm/utils/isGlobal.js.map +1 -1
  93. package/esm/utils/isNode.js.map +1 -1
  94. package/esm/utils/isNodePath.js.map +1 -1
  95. package/esm/utils/isNotNull.js.map +1 -1
  96. package/esm/utils/isRemoved.js.map +1 -1
  97. package/esm/utils/isRequire.js.map +1 -1
  98. package/esm/utils/isSerializable.js.map +1 -1
  99. package/esm/utils/isTypedNode.js.map +1 -1
  100. package/esm/utils/isUnnecessaryReactCall.js.map +1 -1
  101. package/esm/utils/parseRequest.js +29 -0
  102. package/esm/utils/parseRequest.js.map +1 -0
  103. package/esm/utils/peek.js.map +1 -1
  104. package/esm/utils/removeDangerousCode.js +32 -2
  105. package/esm/utils/removeDangerousCode.js.map +1 -1
  106. package/esm/utils/replaceImportMetaEnv.js +44 -0
  107. package/esm/utils/replaceImportMetaEnv.js.map +1 -0
  108. package/esm/utils/scopeHelpers.js.map +1 -1
  109. package/esm/utils/traversalCache.js.map +1 -1
  110. package/esm/utils/unwrapExpression.js +18 -0
  111. package/esm/utils/unwrapExpression.js.map +1 -0
  112. package/esm/utils/unwrapSequence.js.map +1 -1
  113. package/esm/utils/valueToLiteral.js.map +1 -1
  114. package/esm/utils/visitors/JSXElementsRemover.js.map +1 -1
  115. package/esm/vm/createVmContext.js +44 -0
  116. package/esm/vm/createVmContext.js.map +1 -1
  117. package/esm/vm/process.js.map +1 -1
  118. package/lib/babel.js.map +1 -1
  119. package/lib/cache.js +16 -5
  120. package/lib/cache.js.map +1 -1
  121. package/lib/debug/fileReporter.js +1 -1
  122. package/lib/debug/fileReporter.js.map +1 -1
  123. package/lib/evaluators/index.js.map +1 -1
  124. package/lib/index.js +1 -1
  125. package/lib/index.js.map +1 -1
  126. package/lib/module.js +177 -16
  127. package/lib/module.js.map +1 -1
  128. package/lib/options/buildOptions.js +127 -6
  129. package/lib/options/buildOptions.js.map +1 -1
  130. package/lib/options/buildOptions.test.js +44 -0
  131. package/lib/options/buildOptions.test.js.map +1 -0
  132. package/lib/options/loadBabelOptions.js.map +1 -1
  133. package/lib/plugins/babel-transform.js.map +1 -1
  134. package/lib/plugins/collector.js.map +1 -1
  135. package/lib/plugins/dynamic-import.js +34 -12
  136. package/lib/plugins/dynamic-import.js.map +1 -1
  137. package/lib/plugins/preeval.js +4 -0
  138. package/lib/plugins/preeval.js.map +1 -1
  139. package/lib/plugins/shaker.js +172 -22
  140. package/lib/plugins/shaker.js.map +1 -1
  141. package/lib/shaker.js +8 -4
  142. package/lib/shaker.js.map +1 -1
  143. package/lib/transform/BaseEntrypoint.js.map +1 -1
  144. package/lib/transform/Entrypoint.helpers.js +106 -15
  145. package/lib/transform/Entrypoint.helpers.js.map +1 -1
  146. package/lib/transform/Entrypoint.js +13 -2
  147. package/lib/transform/Entrypoint.js.map +1 -1
  148. package/lib/transform/Entrypoint.types.js.map +1 -1
  149. package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
  150. package/lib/transform/actions/AbortError.js.map +1 -1
  151. package/lib/transform/actions/BaseAction.js +5 -0
  152. package/lib/transform/actions/BaseAction.js.map +1 -1
  153. package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  154. package/lib/transform/actions/actionRunner.js.map +1 -1
  155. package/lib/transform/actions/types.js.map +1 -1
  156. package/lib/transform/generators/baseProcessingHandlers.js.map +1 -1
  157. package/lib/transform/generators/collect.js.map +1 -1
  158. package/lib/transform/generators/createStylisPreprocessor.js +119 -3
  159. package/lib/transform/generators/createStylisPreprocessor.js.map +1 -1
  160. package/lib/transform/generators/evalFile.js +1 -1
  161. package/lib/transform/generators/evalFile.js.map +1 -1
  162. package/lib/transform/generators/explodeReexports.js +11 -11
  163. package/lib/transform/generators/explodeReexports.js.map +1 -1
  164. package/lib/transform/generators/extract.js.map +1 -1
  165. package/lib/transform/generators/getExports.js.map +1 -1
  166. package/lib/transform/generators/index.js.map +1 -1
  167. package/lib/transform/generators/processEntrypoint.js +5 -8
  168. package/lib/transform/generators/processEntrypoint.js.map +1 -1
  169. package/lib/transform/generators/processImports.js.map +1 -1
  170. package/lib/transform/generators/resolveImports.js +41 -2
  171. package/lib/transform/generators/resolveImports.js.map +1 -1
  172. package/lib/transform/generators/transform.js +8 -3
  173. package/lib/transform/generators/transform.js.map +1 -1
  174. package/lib/transform/generators/workflow.js.map +1 -1
  175. package/lib/transform/helpers/loadWywOptions.js +16 -2
  176. package/lib/transform/helpers/loadWywOptions.js.map +1 -1
  177. package/lib/transform/helpers/withDefaultServices.js +3 -2
  178. package/lib/transform/helpers/withDefaultServices.js.map +1 -1
  179. package/lib/transform/isStaticallyEvaluatableModule.js +159 -0
  180. package/lib/transform/isStaticallyEvaluatableModule.js.map +1 -0
  181. package/lib/transform/rootLog.js.map +1 -1
  182. package/lib/transform/types.js.map +1 -1
  183. package/lib/transform.js +15 -6
  184. package/lib/transform.js.map +1 -1
  185. package/lib/types.js.map +1 -1
  186. package/lib/utils/EventEmitter.js.map +1 -1
  187. package/lib/utils/ShakerMetadata.js.map +1 -1
  188. package/lib/utils/TransformMetadata.js.map +1 -1
  189. package/lib/utils/addIdentifierToWywPreval.js.map +1 -1
  190. package/lib/utils/collectExportsAndImports.js +97 -6
  191. package/lib/utils/collectExportsAndImports.js.map +1 -1
  192. package/lib/utils/collectTemplateDependencies.js +1 -1
  193. package/lib/utils/collectTemplateDependencies.js.map +1 -1
  194. package/lib/utils/createId.js.map +1 -1
  195. package/lib/utils/dispose-polyfill.js.map +1 -1
  196. package/lib/utils/findIdentifiers.js.map +1 -1
  197. package/lib/utils/getConstantStringValue.js +66 -0
  198. package/lib/utils/getConstantStringValue.js.map +1 -0
  199. package/lib/utils/getFileIdx.js.map +1 -1
  200. package/lib/utils/getMemberExpressionPropertyName.js +18 -0
  201. package/lib/utils/getMemberExpressionPropertyName.js.map +1 -0
  202. package/lib/utils/getPluginKey.js.map +1 -1
  203. package/lib/utils/getScope.js.map +1 -1
  204. package/lib/utils/getSource.js +1 -1
  205. package/lib/utils/getSource.js.map +1 -1
  206. package/lib/utils/getTagProcessor.js +33 -6
  207. package/lib/utils/getTagProcessor.js.map +1 -1
  208. package/lib/utils/getVisitorKeys.js.map +1 -1
  209. package/lib/utils/hasWywPreval.js.map +1 -1
  210. package/lib/utils/importOverrides.js +57 -0
  211. package/lib/utils/importOverrides.js.map +1 -0
  212. package/lib/utils/isExports.js.map +1 -1
  213. package/lib/utils/isGlobal.js.map +1 -1
  214. package/lib/utils/isNode.js.map +1 -1
  215. package/lib/utils/isNodePath.js.map +1 -1
  216. package/lib/utils/isNotNull.js.map +1 -1
  217. package/lib/utils/isRemoved.js.map +1 -1
  218. package/lib/utils/isRequire.js.map +1 -1
  219. package/lib/utils/isSerializable.js.map +1 -1
  220. package/lib/utils/isTypedNode.js.map +1 -1
  221. package/lib/utils/isUnnecessaryReactCall.js.map +1 -1
  222. package/lib/utils/parseRequest.js +37 -0
  223. package/lib/utils/parseRequest.js.map +1 -0
  224. package/lib/utils/peek.js.map +1 -1
  225. package/lib/utils/removeDangerousCode.js +32 -2
  226. package/lib/utils/removeDangerousCode.js.map +1 -1
  227. package/lib/utils/replaceImportMetaEnv.js +50 -0
  228. package/lib/utils/replaceImportMetaEnv.js.map +1 -0
  229. package/lib/utils/scopeHelpers.js.map +1 -1
  230. package/lib/utils/traversalCache.js.map +1 -1
  231. package/lib/utils/unwrapExpression.js +25 -0
  232. package/lib/utils/unwrapExpression.js.map +1 -0
  233. package/lib/utils/unwrapSequence.js.map +1 -1
  234. package/lib/utils/valueToLiteral.js.map +1 -1
  235. package/lib/utils/visitors/JSXElementsRemover.js.map +1 -1
  236. package/lib/vm/createVmContext.js +45 -2
  237. package/lib/vm/createVmContext.js.map +1 -1
  238. package/lib/vm/process.js.map +1 -1
  239. package/package.json +13 -15
  240. package/types/cache.d.ts +1 -1
  241. package/types/cache.js +15 -4
  242. package/types/evaluators/index.js +1 -1
  243. package/types/module.d.ts +1 -2
  244. package/types/module.js +189 -11
  245. package/types/options/buildOptions.d.ts +0 -1
  246. package/types/options/buildOptions.js +125 -9
  247. package/types/options/loadBabelOptions.js +1 -2
  248. package/types/plugins/babel-transform.js +1 -1
  249. package/types/plugins/collector.js +3 -3
  250. package/types/plugins/dynamic-import.js +38 -18
  251. package/types/plugins/preeval.js +5 -2
  252. package/types/plugins/shaker.d.ts +4 -1
  253. package/types/plugins/shaker.js +189 -24
  254. package/types/shaker.js +9 -3
  255. package/types/transform/BaseEntrypoint.d.ts +0 -1
  256. package/types/transform/Entrypoint.helpers.d.ts +0 -1
  257. package/types/transform/Entrypoint.helpers.js +122 -25
  258. package/types/transform/Entrypoint.js +14 -2
  259. package/types/transform/Entrypoint.types.d.ts +0 -1
  260. package/types/transform/EvaluatedEntrypoint.d.ts +0 -1
  261. package/types/transform/actions/BaseAction.d.ts +1 -1
  262. package/types/transform/actions/BaseAction.js +5 -0
  263. package/types/transform/actions/actionRunner.js +2 -3
  264. package/types/transform/generators/collect.js +1 -2
  265. package/types/transform/generators/createStylisPreprocessor.d.ts +0 -1
  266. package/types/transform/generators/createStylisPreprocessor.js +168 -13
  267. package/types/transform/generators/evalFile.js +1 -2
  268. package/types/transform/generators/explodeReexports.js +12 -15
  269. package/types/transform/generators/extract.js +1 -2
  270. package/types/transform/generators/getExports.js +2 -3
  271. package/types/transform/generators/processEntrypoint.js +13 -7
  272. package/types/transform/generators/processImports.js +1 -2
  273. package/types/transform/generators/resolveImports.js +41 -5
  274. package/types/transform/generators/transform.d.ts +1 -1
  275. package/types/transform/generators/transform.js +16 -6
  276. package/types/transform/generators/workflow.js +1 -2
  277. package/types/transform/helpers/loadWywOptions.js +16 -5
  278. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  279. package/types/transform/helpers/withDefaultServices.js +19 -8
  280. package/types/transform/isStaticallyEvaluatableModule.d.ts +2 -0
  281. package/types/transform/isStaticallyEvaluatableModule.js +177 -0
  282. package/types/transform/rootLog.d.ts +0 -1
  283. package/types/transform/types.d.ts +1 -1
  284. package/types/transform.js +17 -9
  285. package/types/types.d.ts +1 -1
  286. package/types/utils/addIdentifierToWywPreval.js +2 -3
  287. package/types/utils/collectExportsAndImports.js +102 -20
  288. package/types/utils/collectTemplateDependencies.js +3 -4
  289. package/types/utils/findIdentifiers.js +2 -3
  290. package/types/utils/getConstantStringValue.d.ts +2 -0
  291. package/types/utils/getConstantStringValue.js +94 -0
  292. package/types/utils/getFileIdx.js +1 -2
  293. package/types/utils/getMemberExpressionPropertyName.d.ts +2 -0
  294. package/types/utils/getMemberExpressionPropertyName.js +46 -0
  295. package/types/utils/getScope.js +1 -2
  296. package/types/utils/getTagProcessor.js +35 -9
  297. package/types/utils/getVisitorKeys.js +1 -2
  298. package/types/utils/hasWywPreval.js +1 -1
  299. package/types/utils/importOverrides.d.ts +19 -0
  300. package/types/utils/importOverrides.js +40 -0
  301. package/types/utils/isExports.js +1 -2
  302. package/types/utils/isNodePath.js +1 -2
  303. package/types/utils/isNotNull.js +1 -2
  304. package/types/utils/isRemoved.js +1 -2
  305. package/types/utils/isRequire.js +1 -2
  306. package/types/utils/isSerializable.js +1 -2
  307. package/types/utils/isUnnecessaryReactCall.js +1 -2
  308. package/types/utils/parseRequest.d.ts +7 -0
  309. package/types/utils/parseRequest.js +29 -0
  310. package/types/utils/removeDangerousCode.js +37 -2
  311. package/types/utils/replaceImportMetaEnv.d.ts +3 -0
  312. package/types/utils/replaceImportMetaEnv.js +39 -0
  313. package/types/utils/scopeHelpers.js +7 -8
  314. package/types/utils/traversalCache.d.ts +1 -1
  315. package/types/utils/unwrapExpression.d.ts +2 -0
  316. package/types/utils/unwrapExpression.js +57 -0
  317. package/types/utils/unwrapSequence.js +1 -2
  318. package/types/utils/valueToLiteral.js +1 -2
  319. package/types/utils/visitors/JSXElementsRemover.js +1 -2
  320. package/types/vm/createVmContext.d.ts +0 -1
  321. package/types/vm/createVmContext.js +68 -9
  322. package/types/vm/process.d.ts +0 -2
  323. package/LICENSE +0 -21
  324. package/esm/options/babel-merge.d.js +0 -2
  325. package/esm/options/babel-merge.d.js.map +0 -1
  326. package/lib/options/babel-merge.d.js +0 -2
  327. package/lib/options/babel-merge.d.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"collect.js","names":["buildOptions","filename","collectorPlugin","getTransformMetadata","collect","babel","options","services","valueCache","data","entrypoint","loadedAndParsed","name","evaluator","Error","transformPlugins","pluginOptions","values","transformConfig","envName","plugins","sourceMaps","sourceFileName","inputSourceMap","root","ast","babelrc","configFile","sourceType","result","transformFromAstSync","code","cwd","program","transformMetadata","metadata","map"],"sources":["../../../src/transform/generators/collect.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nimport { buildOptions } from '../../options/buildOptions';\nimport { filename as collectorPlugin } from '../../plugins/collector';\nimport { getTransformMetadata } from '../../utils/TransformMetadata';\nimport type { ICollectAction, SyncScenarioForAction } from '../types';\n\n/**\n * Parses the specified file, finds tags, applies run-time replacements,\n * removes dead code.\n */\n// eslint-disable-next-line require-yield\nexport function* collect(\n this: ICollectAction\n): SyncScenarioForAction<ICollectAction> {\n const { babel, options } = this.services;\n const { valueCache } = this.data;\n const { entrypoint } = this;\n const { loadedAndParsed, name } = entrypoint;\n\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n const transformPlugins: PluginItem[] = [\n [\n collectorPlugin,\n {\n ...options.pluginOptions,\n values: valueCache,\n },\n ],\n ];\n\n const transformConfig = buildOptions({\n envName: 'wyw-in-js',\n plugins: transformPlugins,\n sourceMaps: true,\n sourceFileName: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n ast: true,\n babelrc: false,\n configFile: false,\n sourceType: 'unambiguous',\n });\n\n const result = babel.transformFromAstSync(\n loadedAndParsed.ast,\n loadedAndParsed.code,\n {\n ...transformConfig,\n cwd: options.root,\n filename: name,\n }\n );\n\n if (!result || !result.ast?.program) {\n throw new Error('Babel transform failed');\n }\n\n const transformMetadata = getTransformMetadata(result.metadata);\n\n return {\n ast: result.ast,\n code: result.code,\n map: result.map,\n metadata: transformMetadata ?? null,\n };\n}\n"],"mappings":"AAEA,SAASA,YAAY,QAAQ,4BAA4B;AACzD,SAASC,QAAQ,IAAIC,eAAe,QAAQ,yBAAyB;AACrE,SAASC,oBAAoB,QAAQ,+BAA+B;AAGpE;AACA;AACA;AACA;AACA;AACA,OAAO,UAAUC,OAAOA,CAAA,EAEiB;EACvC,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,QAAQ;EACxC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI,CAACC,IAAI;EAChC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAC3B,MAAM;IAAEC,eAAe;IAAEC;EAAK,CAAC,GAAGF,UAAU;EAE5C,IAAIC,eAAe,CAACE,SAAS,KAAK,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMC,gBAA8B,GAAG,CACrC,CACEb,eAAe,EACf;IACE,GAAGI,OAAO,CAACU,aAAa;IACxBC,MAAM,EAAET;EACV,CAAC,CACF,CACF;EAED,MAAMU,eAAe,GAAGlB,YAAY,CAAC;IACnCmB,OAAO,EAAE,WAAW;IACpBC,OAAO,EAAEL,gBAAgB;IACzBM,UAAU,EAAE,IAAI;IAChBC,cAAc,EAAEV,IAAI;IACpBW,cAAc,EAAEjB,OAAO,CAACiB,cAAc;IACtCC,IAAI,EAAElB,OAAO,CAACkB,IAAI;IAClBC,GAAG,EAAE,IAAI;IACTC,OAAO,EAAE,KAAK;IACdC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAGxB,KAAK,CAACyB,oBAAoB,CACvCnB,eAAe,CAACc,GAAG,EACnBd,eAAe,CAACoB,IAAI,EACpB;IACE,GAAGb,eAAe;IAClBc,GAAG,EAAE1B,OAAO,CAACkB,IAAI;IACjBvB,QAAQ,EAAEW;EACZ,CACF,CAAC;EAED,IAAI,CAACiB,MAAM,IAAI,CAACA,MAAM,CAACJ,GAAG,EAAEQ,OAAO,EAAE;IACnC,MAAM,IAAInB,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMoB,iBAAiB,GAAG/B,oBAAoB,CAAC0B,MAAM,CAACM,QAAQ,CAAC;EAE/D,OAAO;IACLV,GAAG,EAAEI,MAAM,CAACJ,GAAG;IACfM,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBK,GAAG,EAAEP,MAAM,CAACO,GAAG;IACfD,QAAQ,EAAED,iBAAiB,IAAI;EACjC,CAAC;AACH"}
1
+ {"version":3,"file":"collect.js","names":["buildOptions","filename","collectorPlugin","getTransformMetadata","collect","babel","options","services","valueCache","data","entrypoint","loadedAndParsed","name","evaluator","Error","transformPlugins","pluginOptions","values","transformConfig","envName","plugins","sourceMaps","sourceFileName","inputSourceMap","root","ast","babelrc","configFile","sourceType","result","transformFromAstSync","code","cwd","program","transformMetadata","metadata","map"],"sources":["../../../src/transform/generators/collect.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nimport { buildOptions } from '../../options/buildOptions';\nimport { filename as collectorPlugin } from '../../plugins/collector';\nimport { getTransformMetadata } from '../../utils/TransformMetadata';\nimport type { ICollectAction, SyncScenarioForAction } from '../types';\n\n/**\n * Parses the specified file, finds tags, applies run-time replacements,\n * removes dead code.\n */\n// eslint-disable-next-line require-yield\nexport function* collect(\n this: ICollectAction\n): SyncScenarioForAction<ICollectAction> {\n const { babel, options } = this.services;\n const { valueCache } = this.data;\n const { entrypoint } = this;\n const { loadedAndParsed, name } = entrypoint;\n\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n const transformPlugins: PluginItem[] = [\n [\n collectorPlugin,\n {\n ...options.pluginOptions,\n values: valueCache,\n },\n ],\n ];\n\n const transformConfig = buildOptions({\n envName: 'wyw-in-js',\n plugins: transformPlugins,\n sourceMaps: true,\n sourceFileName: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n ast: true,\n babelrc: false,\n configFile: false,\n sourceType: 'unambiguous',\n });\n\n const result = babel.transformFromAstSync(\n loadedAndParsed.ast,\n loadedAndParsed.code,\n {\n ...transformConfig,\n cwd: options.root,\n filename: name,\n }\n );\n\n if (!result || !result.ast?.program) {\n throw new Error('Babel transform failed');\n }\n\n const transformMetadata = getTransformMetadata(result.metadata);\n\n return {\n ast: result.ast,\n code: result.code,\n map: result.map,\n metadata: transformMetadata ?? null,\n };\n}\n"],"mappings":"AAEA,SAASA,YAAY,QAAQ,4BAA4B;AACzD,SAASC,QAAQ,IAAIC,eAAe,QAAQ,yBAAyB;AACrE,SAASC,oBAAoB,QAAQ,+BAA+B;AAGpE;AACA;AACA;AACA;AACA;AACA,OAAO,UAAUC,OAAOA,CAAA,EAEiB;EACvC,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,QAAQ;EACxC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI,CAACC,IAAI;EAChC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAC3B,MAAM;IAAEC,eAAe;IAAEC;EAAK,CAAC,GAAGF,UAAU;EAE5C,IAAIC,eAAe,CAACE,SAAS,KAAK,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMC,gBAA8B,GAAG,CACrC,CACEb,eAAe,EACf;IACE,GAAGI,OAAO,CAACU,aAAa;IACxBC,MAAM,EAAET;EACV,CAAC,CACF,CACF;EAED,MAAMU,eAAe,GAAGlB,YAAY,CAAC;IACnCmB,OAAO,EAAE,WAAW;IACpBC,OAAO,EAAEL,gBAAgB;IACzBM,UAAU,EAAE,IAAI;IAChBC,cAAc,EAAEV,IAAI;IACpBW,cAAc,EAAEjB,OAAO,CAACiB,cAAc;IACtCC,IAAI,EAAElB,OAAO,CAACkB,IAAI;IAClBC,GAAG,EAAE,IAAI;IACTC,OAAO,EAAE,KAAK;IACdC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAGxB,KAAK,CAACyB,oBAAoB,CACvCnB,eAAe,CAACc,GAAG,EACnBd,eAAe,CAACoB,IAAI,EACpB;IACE,GAAGb,eAAe;IAClBc,GAAG,EAAE1B,OAAO,CAACkB,IAAI;IACjBvB,QAAQ,EAAEW;EACZ,CACF,CAAC;EAED,IAAI,CAACiB,MAAM,IAAI,CAACA,MAAM,CAACJ,GAAG,EAAEQ,OAAO,EAAE;IACnC,MAAM,IAAInB,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMoB,iBAAiB,GAAG/B,oBAAoB,CAAC0B,MAAM,CAACM,QAAQ,CAAC;EAE/D,OAAO;IACLV,GAAG,EAAEI,MAAM,CAACJ,GAAG;IACfM,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBK,GAAG,EAAEP,MAAM,CAACO,GAAG;IACfD,QAAQ,EAAED,iBAAiB,IAAI;EACjC,CAAC;AACH","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable no-continue */
2
2
  import * as path from 'path';
3
- import { compile, middleware, prefixer, serialize, stringify, tokenize, RULESET, KEYFRAMES, DECLARATION } from 'stylis';
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
6
  // Replace asset path with new path relative to the output CSS
@@ -228,10 +228,126 @@ export function createKeyframeSuffixerPlugin() {
228
228
  };
229
229
  }
230
230
  const isMiddleware = obj => obj !== null;
231
+ const displayKeywordRegexp = /^[a-z-]+$/;
232
+ const knownMultiKeywordDisplayTokens = new Set(['block', 'inline', 'flow', 'flow-root', 'flex', 'grid', 'table', 'list-item']);
233
+ 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;
309
+ }
310
+ 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
+ };
325
+ }
326
+ 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
+ };
345
+ }
231
346
  export function createStylisPreprocessor(options) {
347
+ const stringifier = createStylisStringifier(options.keepComments);
232
348
  function stylisPreprocess(selector, text) {
233
349
  const compiled = compile(`${selector} {${text}}\n`);
234
- return serialize(compiled, middleware([createStylisUrlReplacePlugin(options.filename, options.outputFilename), stylisGlobalPlugin, options.prefixer === false ? null : prefixer, createKeyframeSuffixerPlugin(), stringify].filter(isMiddleware)));
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)));
235
351
  }
236
352
  return stylisPreprocess;
237
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createStylisPreprocessor.js","names":["path","compile","middleware","prefixer","serialize","stringify","tokenize","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","createStylisPreprocessor","options","stylisPreprocess","text","compiled","filter"],"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 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\nexport function createStylisPreprocessor(\n options: Options & { prefixer?: boolean }\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 ? null : prefixer,\n createKeyframeSuffixerPlugin(),\n stringify,\n ].filter(isMiddleware)\n )\n );\n }\n\n return stylisPreprocess;\n}\n"],"mappings":"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"}
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 +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,CAAE,yBAAwB,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,CAAE,6BAA4B,EAAEO,UAAU,CAAC;EAE9C,OAAO,CAACA,UAAU,EAAEN,SAAS,CAACc,YAAY,CAAC;AAC7C"}
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":[]}
@@ -40,22 +40,22 @@ export function* explodeReexports() {
40
40
  const importedEntrypoints = findExportsInImports(this.entrypoint, resolvedImports);
41
41
  const replacements = new Map();
42
42
  for (const importedEntrypoint of importedEntrypoints) {
43
- const exports = yield* this.getNext('getExports', importedEntrypoint.entrypoint, undefined);
44
- const reexport = reexportsFrom.find(i => i.source === importedEntrypoint.import);
45
- if (reexport) {
46
- replacements.set(reexport.node, exports.length ? babel.types.exportNamedDeclaration(null, exports.map(i => babel.types.exportSpecifier(babel.types.identifier(i), babel.types.identifier(i))), babel.types.stringLiteral(importedEntrypoint.import)) : null);
43
+ if (importedEntrypoint.entrypoint.loadedAndParsed.evaluator !== 'ignored') {
44
+ const reexport = reexportsFrom.find(i => i.source === importedEntrypoint.import);
45
+ if (reexport) {
46
+ const exports = yield* this.getNext('getExports', importedEntrypoint.entrypoint, undefined);
47
+ if (exports.length !== 0) {
48
+ replacements.set(reexport.node, babel.types.exportNamedDeclaration(null, exports.map(i => babel.types.exportSpecifier(babel.types.identifier(i), babel.types.identifier(i))), babel.types.stringLiteral(importedEntrypoint.import)));
49
+ }
50
+ }
47
51
  }
48
52
  }
49
53
 
50
54
  // Replace wildcard reexport with named reexports
51
55
  babel.traverse(loadedAndParsed.ast, {
52
56
  ExportAllDeclaration(path) {
53
- const replacement = replacements.get(path.node);
54
- if (replacement) {
55
- path.replaceWith(replacement);
56
- } else {
57
- path.remove();
58
- }
57
+ if (!replacements.has(path.node)) return;
58
+ path.replaceWith(replacements.get(path.node));
59
59
  }
60
60
  });
61
61
  loadedAndParsed.code = generate(loadedAndParsed.ast).code;
@@ -1 +1 @@
1
- {"version":3,"file":"explodeReexports.js","names":["generate","findExportsInImports","getWildcardReexport","babel","ast","reexportsFrom","program","body","forEach","node","types","isExportAllDeclaration","source","isStringLiteral","push","value","explodeReexports","services","log","loadedAndParsed","entrypoint","evaluator","length","resolvedImports","getNext","imports","Map","map","i","importedEntrypoints","replacements","importedEntrypoint","exports","undefined","reexport","find","import","set","exportNamedDeclaration","exportSpecifier","identifier","stringLiteral","traverse","ExportAllDeclaration","path","replacement","get","replaceWith","remove","code"],"sources":["../../../src/transform/generators/explodeReexports.ts"],"sourcesContent":["import generate from '@babel/generator';\nimport type { ExportAllDeclaration, File, Node } from '@babel/types';\n\nimport type { Core } from '../../babel';\nimport type { IExplodeReexportsAction, SyncScenarioForAction } from '../types';\n\nimport { findExportsInImports } from './getExports';\n\nconst getWildcardReexport = (babel: Core, ast: File) => {\n const reexportsFrom: { node: ExportAllDeclaration; source: string }[] = [];\n ast.program.body.forEach((node) => {\n if (\n babel.types.isExportAllDeclaration(node) &&\n node.source &&\n babel.types.isStringLiteral(node.source)\n ) {\n reexportsFrom.push({\n source: node.source.value,\n node,\n });\n }\n });\n\n return reexportsFrom;\n};\n\n/**\n * Replaces wildcard reexports with named reexports.\n * Recursively emits getExports for each reexported module,\n * and replaces wildcard with resolved named.\n */\nexport function* explodeReexports(\n this: IExplodeReexportsAction\n): SyncScenarioForAction<IExplodeReexportsAction> {\n const { babel } = this.services;\n const { log, loadedAndParsed } = this.entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n return;\n }\n\n const reexportsFrom = getWildcardReexport(babel, loadedAndParsed.ast);\n if (!reexportsFrom.length) {\n return;\n }\n\n log('has wildcard reexport from %o', reexportsFrom);\n\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n this.entrypoint,\n {\n imports: new Map(reexportsFrom.map((i) => [i.source, []])),\n }\n );\n\n const importedEntrypoints = findExportsInImports(\n this.entrypoint,\n resolvedImports\n );\n\n const replacements = new Map<ExportAllDeclaration, Node | null>();\n for (const importedEntrypoint of importedEntrypoints) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n const reexport = reexportsFrom.find(\n (i) => i.source === importedEntrypoint.import\n );\n if (reexport) {\n replacements.set(\n reexport.node,\n exports.length\n ? babel.types.exportNamedDeclaration(\n null,\n exports.map((i) =>\n babel.types.exportSpecifier(\n babel.types.identifier(i),\n babel.types.identifier(i)\n )\n ),\n babel.types.stringLiteral(importedEntrypoint.import)\n )\n : null\n );\n }\n }\n\n // Replace wildcard reexport with named reexports\n babel.traverse(loadedAndParsed.ast, {\n ExportAllDeclaration(path) {\n const replacement = replacements.get(path.node);\n if (replacement) {\n path.replaceWith(replacement);\n } else {\n path.remove();\n }\n },\n });\n\n loadedAndParsed.code = generate(loadedAndParsed.ast).code;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"explodeReexports.js","names":["generate","findExportsInImports","getWildcardReexport","babel","ast","reexportsFrom","program","body","forEach","node","types","isExportAllDeclaration","source","isStringLiteral","push","value","explodeReexports","services","log","loadedAndParsed","entrypoint","evaluator","length","resolvedImports","getNext","imports","Map","map","i","importedEntrypoints","replacements","importedEntrypoint","reexport","find","import","exports","undefined","set","exportNamedDeclaration","exportSpecifier","identifier","stringLiteral","traverse","ExportAllDeclaration","path","has","replaceWith","get","code"],"sources":["../../../src/transform/generators/explodeReexports.ts"],"sourcesContent":["import generate from '@babel/generator';\nimport type { ExportAllDeclaration, File, Node } from '@babel/types';\n\nimport type { Core } from '../../babel';\nimport type { IExplodeReexportsAction, SyncScenarioForAction } from '../types';\n\nimport { findExportsInImports } from './getExports';\n\nconst getWildcardReexport = (babel: Core, ast: File) => {\n const reexportsFrom: { node: ExportAllDeclaration; source: string }[] = [];\n ast.program.body.forEach((node) => {\n if (\n babel.types.isExportAllDeclaration(node) &&\n node.source &&\n babel.types.isStringLiteral(node.source)\n ) {\n reexportsFrom.push({\n source: node.source.value,\n node,\n });\n }\n });\n\n return reexportsFrom;\n};\n\n/**\n * Replaces wildcard reexports with named reexports.\n * Recursively emits getExports for each reexported module,\n * and replaces wildcard with resolved named.\n */\nexport function* explodeReexports(\n this: IExplodeReexportsAction\n): SyncScenarioForAction<IExplodeReexportsAction> {\n const { babel } = this.services;\n const { log, loadedAndParsed } = this.entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n return;\n }\n\n const reexportsFrom = getWildcardReexport(babel, loadedAndParsed.ast);\n if (!reexportsFrom.length) {\n return;\n }\n\n log('has wildcard reexport from %o', reexportsFrom);\n\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n this.entrypoint,\n {\n imports: new Map(reexportsFrom.map((i) => [i.source, []])),\n }\n );\n\n const importedEntrypoints = findExportsInImports(\n this.entrypoint,\n resolvedImports\n );\n\n const replacements = new Map<ExportAllDeclaration, Node>();\n for (const importedEntrypoint of importedEntrypoints) {\n if (importedEntrypoint.entrypoint.loadedAndParsed.evaluator !== 'ignored') {\n const reexport = reexportsFrom.find(\n (i) => i.source === importedEntrypoint.import\n );\n if (reexport) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n if (exports.length !== 0) {\n replacements.set(\n reexport.node,\n babel.types.exportNamedDeclaration(\n null,\n exports.map((i) =>\n babel.types.exportSpecifier(\n babel.types.identifier(i),\n babel.types.identifier(i)\n )\n ),\n babel.types.stringLiteral(importedEntrypoint.import)\n )\n );\n }\n }\n }\n }\n\n // Replace wildcard reexport with named reexports\n babel.traverse(loadedAndParsed.ast, {\n ExportAllDeclaration(path) {\n if (!replacements.has(path.node)) return;\n path.replaceWith(replacements.get(path.node)!);\n },\n });\n\n loadedAndParsed.code = generate(loadedAndParsed.ast).code;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -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'\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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"}
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 +1 @@
1
- {"version":3,"file":"getExports.js","names":["collectExportsAndImports","findExportsInImports","entrypoint","imports","results","imp","resolved","Error","source","newEntrypoint","createChild","push","import","getExports","services","cache","loadedAndParsed","ast","undefined","log","name","has","get","withWildcardReexport","result","babel","traverse","Program","path","exports","reexports","Object","keys","forEach","token","e","exported","filter","length","resolvedImports","getNext","Map","map","i","importedEntrypoints","importedEntrypoint","add"],"sources":["../../../src/transform/generators/getExports.ts"],"sourcesContent":["import type { IReexport } from '../../utils/collectExportsAndImports';\nimport { collectExportsAndImports } from '../../utils/collectExportsAndImports';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { IGetExportsAction, SyncScenarioForAction } from '../types';\n\nexport function findExportsInImports(\n entrypoint: Entrypoint,\n imports: IEntrypointDependency[]\n): { entrypoint: Entrypoint; import: string }[] {\n const results: {\n entrypoint: Entrypoint;\n import: string;\n }[] = [];\n\n for (const imp of imports) {\n const { resolved } = imp;\n if (!resolved) {\n throw new Error(`Could not resolve import ${imp.source}`);\n }\n\n const newEntrypoint = entrypoint.createChild(resolved, []);\n\n if (newEntrypoint === 'loop') {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n results.push({\n entrypoint: newEntrypoint,\n import: imp.source,\n });\n }\n\n return results;\n}\n\nexport function* getExports(\n this: IGetExportsAction\n): SyncScenarioForAction<IGetExportsAction> {\n const {\n entrypoint,\n services: { cache },\n } = this;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.ast === undefined) {\n return [];\n }\n\n entrypoint.log(`get exports from %s`, entrypoint.name);\n\n if (cache.has('exports', entrypoint.name)) {\n return cache.get('exports', entrypoint.name)!;\n }\n\n let withWildcardReexport: IReexport[] = [];\n const result: string[] = [];\n\n this.services.babel.traverse(loadedAndParsed.ast!, {\n Program(path) {\n const { exports, reexports } = collectExportsAndImports(path, 'disabled');\n Object.keys(exports).forEach((token) => {\n result.push(token);\n });\n\n reexports.forEach((e) => {\n if (e.exported !== '*') {\n result.push(e.exported);\n }\n });\n\n withWildcardReexport = reexports.filter((e) => e.exported === '*');\n },\n });\n\n if (withWildcardReexport.length) {\n const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {\n imports: new Map(withWildcardReexport.map((i) => [i.source, []])),\n });\n\n const importedEntrypoints = findExportsInImports(\n entrypoint,\n resolvedImports\n );\n\n for (const importedEntrypoint of importedEntrypoints) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n result.push(...exports);\n }\n }\n\n entrypoint.log(`exports: %o`, result);\n\n cache.add('exports', entrypoint.name, result);\n\n return result;\n}\n"],"mappings":"AACA,SAASA,wBAAwB,QAAQ,sCAAsC;AAK/E,OAAO,SAASC,oBAAoBA,CAClCC,UAAsB,EACtBC,OAAgC,EACc;EAC9C,MAAMC,OAGH,GAAG,EAAE;EAER,KAAK,MAAMC,GAAG,IAAIF,OAAO,EAAE;IACzB,MAAM;MAAEG;IAAS,CAAC,GAAGD,GAAG;IACxB,IAAI,CAACC,QAAQ,EAAE;MACb,MAAM,IAAIC,KAAK,CAAE,4BAA2BF,GAAG,CAACG,MAAO,EAAC,CAAC;IAC3D;IAEA,MAAMC,aAAa,GAAGP,UAAU,CAACQ,WAAW,CAACJ,QAAQ,EAAE,EAAE,CAAC;IAE1D,IAAIG,aAAa,KAAK,MAAM,EAAE;MAC5B;MACA;IACF;IAEAL,OAAO,CAACO,IAAI,CAAC;MACXT,UAAU,EAAEO,aAAa;MACzBG,MAAM,EAAEP,GAAG,CAACG;IACd,CAAC,CAAC;EACJ;EAEA,OAAOJ,OAAO;AAChB;AAEA,OAAO,UAAUS,UAAUA,CAAA,EAEiB;EAC1C,MAAM;IACJX,UAAU;IACVY,QAAQ,EAAE;MAAEC;IAAM;EACpB,CAAC,GAAG,IAAI;EACR,MAAM;IAAEC;EAAgB,CAAC,GAAGd,UAAU;EACtC,IAAIc,eAAe,CAACC,GAAG,KAAKC,SAAS,EAAE;IACrC,OAAO,EAAE;EACX;EAEAhB,UAAU,CAACiB,GAAG,CAAE,qBAAoB,EAAEjB,UAAU,CAACkB,IAAI,CAAC;EAEtD,IAAIL,KAAK,CAACM,GAAG,CAAC,SAAS,EAAEnB,UAAU,CAACkB,IAAI,CAAC,EAAE;IACzC,OAAOL,KAAK,CAACO,GAAG,CAAC,SAAS,EAAEpB,UAAU,CAACkB,IAAI,CAAC;EAC9C;EAEA,IAAIG,oBAAiC,GAAG,EAAE;EAC1C,MAAMC,MAAgB,GAAG,EAAE;EAE3B,IAAI,CAACV,QAAQ,CAACW,KAAK,CAACC,QAAQ,CAACV,eAAe,CAACC,GAAG,EAAG;IACjDU,OAAOA,CAACC,IAAI,EAAE;MACZ,MAAM;QAAEC,OAAO;QAAEC;MAAU,CAAC,GAAG9B,wBAAwB,CAAC4B,IAAI,EAAE,UAAU,CAAC;MACzEG,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,OAAO,CAAEC,KAAK,IAAK;QACtCV,MAAM,CAACb,IAAI,CAACuB,KAAK,CAAC;MACpB,CAAC,CAAC;MAEFJ,SAAS,CAACG,OAAO,CAAEE,CAAC,IAAK;QACvB,IAAIA,CAAC,CAACC,QAAQ,KAAK,GAAG,EAAE;UACtBZ,MAAM,CAACb,IAAI,CAACwB,CAAC,CAACC,QAAQ,CAAC;QACzB;MACF,CAAC,CAAC;MAEFb,oBAAoB,GAAGO,SAAS,CAACO,MAAM,CAAEF,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAK,GAAG,CAAC;IACpE;EACF,CAAC,CAAC;EAEF,IAAIb,oBAAoB,CAACe,MAAM,EAAE;IAC/B,MAAMC,eAAe,GAAG,OAAO,IAAI,CAACC,OAAO,CAAC,gBAAgB,EAAEtC,UAAU,EAAE;MACxEC,OAAO,EAAE,IAAIsC,GAAG,CAAClB,oBAAoB,CAACmB,GAAG,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACnC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAMoC,mBAAmB,GAAG3C,oBAAoB,CAC9CC,UAAU,EACVqC,eACF,CAAC;IAED,KAAK,MAAMM,kBAAkB,IAAID,mBAAmB,EAAE;MACpD,MAAMf,OAAO,GAAG,OAAO,IAAI,CAACW,OAAO,CACjC,YAAY,EACZK,kBAAkB,CAAC3C,UAAU,EAC7BgB,SACF,CAAC;MAEDM,MAAM,CAACb,IAAI,CAAC,GAAGkB,OAAO,CAAC;IACzB;EACF;EAEA3B,UAAU,CAACiB,GAAG,CAAE,aAAY,EAAEK,MAAM,CAAC;EAErCT,KAAK,CAAC+B,GAAG,CAAC,SAAS,EAAE5C,UAAU,CAACkB,IAAI,EAAEI,MAAM,CAAC;EAE7C,OAAOA,MAAM;AACf"}
1
+ {"version":3,"file":"getExports.js","names":["collectExportsAndImports","findExportsInImports","entrypoint","imports","results","imp","resolved","Error","source","newEntrypoint","createChild","push","import","getExports","services","cache","loadedAndParsed","ast","undefined","log","name","has","get","withWildcardReexport","result","babel","traverse","Program","path","exports","reexports","Object","keys","forEach","token","e","exported","filter","length","resolvedImports","getNext","Map","map","i","importedEntrypoints","importedEntrypoint","add"],"sources":["../../../src/transform/generators/getExports.ts"],"sourcesContent":["import type { IReexport } from '../../utils/collectExportsAndImports';\nimport { collectExportsAndImports } from '../../utils/collectExportsAndImports';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { IGetExportsAction, SyncScenarioForAction } from '../types';\n\nexport function findExportsInImports(\n entrypoint: Entrypoint,\n imports: IEntrypointDependency[]\n): { entrypoint: Entrypoint; import: string }[] {\n const results: {\n entrypoint: Entrypoint;\n import: string;\n }[] = [];\n\n for (const imp of imports) {\n const { resolved } = imp;\n if (!resolved) {\n throw new Error(`Could not resolve import ${imp.source}`);\n }\n\n const newEntrypoint = entrypoint.createChild(resolved, []);\n\n if (newEntrypoint === 'loop') {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n results.push({\n entrypoint: newEntrypoint,\n import: imp.source,\n });\n }\n\n return results;\n}\n\nexport function* getExports(\n this: IGetExportsAction\n): SyncScenarioForAction<IGetExportsAction> {\n const {\n entrypoint,\n services: { cache },\n } = this;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.ast === undefined) {\n return [];\n }\n\n entrypoint.log(`get exports from %s`, entrypoint.name);\n\n if (cache.has('exports', entrypoint.name)) {\n return cache.get('exports', entrypoint.name)!;\n }\n\n let withWildcardReexport: IReexport[] = [];\n const result: string[] = [];\n\n this.services.babel.traverse(loadedAndParsed.ast!, {\n Program(path) {\n const { exports, reexports } = collectExportsAndImports(path, 'disabled');\n Object.keys(exports).forEach((token) => {\n result.push(token);\n });\n\n reexports.forEach((e) => {\n if (e.exported !== '*') {\n result.push(e.exported);\n }\n });\n\n withWildcardReexport = reexports.filter((e) => e.exported === '*');\n },\n });\n\n if (withWildcardReexport.length) {\n const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {\n imports: new Map(withWildcardReexport.map((i) => [i.source, []])),\n });\n\n const importedEntrypoints = findExportsInImports(\n entrypoint,\n resolvedImports\n );\n\n for (const importedEntrypoint of importedEntrypoints) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n result.push(...exports);\n }\n }\n\n entrypoint.log(`exports: %o`, result);\n\n cache.add('exports', entrypoint.name, result);\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["baseProcessingHandlers","collect","evalFile","extract","workflow","baseHandlers"],"sources":["../../../src/transform/generators/index.ts"],"sourcesContent":["import { baseProcessingHandlers } from './baseProcessingHandlers';\nimport { collect } from './collect';\nimport { evalFile } from './evalFile';\nimport { extract } from './extract';\nimport { workflow } from './workflow';\n\nexport const baseHandlers = {\n ...baseProcessingHandlers,\n collect,\n evalFile,\n extract,\n workflow,\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,YAAY,GAAG;EAC1B,GAAGL,sBAAsB;EACzBC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC;AACF,CAAC"}
1
+ {"version":3,"file":"index.js","names":["baseProcessingHandlers","collect","evalFile","extract","workflow","baseHandlers"],"sources":["../../../src/transform/generators/index.ts"],"sourcesContent":["import { baseProcessingHandlers } from './baseProcessingHandlers';\nimport { collect } from './collect';\nimport { evalFile } from './evalFile';\nimport { extract } from './extract';\nimport { workflow } from './workflow';\n\nexport const baseHandlers = {\n ...baseProcessingHandlers,\n collect,\n evalFile,\n extract,\n workflow,\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,YAAY,GAAG;EAC1B,GAAGL,sBAAsB;EACzBC,OAAO;EACPC,QAAQ;EACRC,OAAO;EACPC;AACF,CAAC","ignoreList":[]}
@@ -1,6 +1,4 @@
1
- function dispose_SuppressedError(r, e) { return "undefined" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function (r, e) { this.suppressed = r, this.error = e, this.stack = new Error().stack; }, dispose_SuppressedError.prototype = Object.create(Error.prototype, { constructor: { value: dispose_SuppressedError, writable: !0, configurable: !0 } })), new dispose_SuppressedError(r, e); }
2
- function _dispose(r, e, s) { function next() { for (; r.length > 0;) try { var o = r.pop(), p = o.d.call(o.v); if (o.a) return Promise.resolve(p).then(next, err); } catch (r) { return err(r); } if (s) throw e; } function err(r) { return e = s ? new dispose_SuppressedError(r, e) : r, s = !0, next(); } return next(); }
3
- function _using(o, e, n) { if (null == e) return e; if ("object" != typeof e) throw new TypeError("using declarations can only be used with objects, null, or undefined."); if (n) var r = e[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")]; if (null == r && (r = e[Symbol.dispose || Symbol.for("Symbol.dispose")]), "function" != typeof r) throw new TypeError("Property [Symbol.dispose] is not a function."); return o.push({ v: e, d: r, a: n }), e; }
1
+ function _usingCtx2() { var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) { var n = Error(); return n.name = "SuppressedError", n.error = r, n.suppressed = e, n; }, e = {}, n = []; function using(r, e) { if (null != e) { if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined."); if (r) var o = e[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")]; if (void 0 === o && (o = e[Symbol.dispose || Symbol.for("Symbol.dispose")], r)) var t = o; if ("function" != typeof o) throw new TypeError("Object is not disposable."); t && (o = function () { try { t.call(e); } catch (r) { return Promise.reject(r); } }), n.push({ v: e, d: o, a: r }); } else r && n.push({ d: e, a: r }); return e; } return { e: e, u: using.bind(null, !1), a: using.bind(null, !0), d: function () { var o, t = this.e, s = 0; function next() { for (; o = n.pop();) try { if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next); if (o.d) { var r = o.d.call(o.v); if (o.a) return s |= 2, Promise.resolve(r).then(next, err); } else s |= 1; } catch (r) { return err(r); } if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve(); if (t !== e) throw t; } function err(n) { return t = t !== e ? new r(n, t) : n, next(); } return next(); } }; }
4
2
  import { isAborted } from '../actions/AbortError';
5
3
  /**
6
4
  * The first stage of processing an entrypoint.
@@ -17,18 +15,17 @@ export function* processEntrypoint() {
17
15
  log('start processing (only: %o)', only);
18
16
  try {
19
17
  try {
20
- var _stack = [];
21
- const abortSignal = _using(_stack, this.createAbortSignal());
18
+ var _usingCtx = _usingCtx2();
19
+ const abortSignal = _usingCtx.u(this.createAbortSignal());
22
20
  yield ['explodeReexports', this.entrypoint, undefined, abortSignal];
23
21
  const result = yield* this.getNext('transform', this.entrypoint, undefined, abortSignal);
24
22
  this.entrypoint.assertNotSuperseded();
25
23
  this.entrypoint.setTransformResult(result);
26
24
  log('entrypoint processing finished');
27
25
  } catch (_) {
28
- var _error = _;
29
- var _hasError = true;
26
+ _usingCtx.e = _;
30
27
  } finally {
31
- _dispose(_stack, _error, _hasError);
28
+ _usingCtx.d();
32
29
  }
33
30
  } catch (e) {
34
31
  if (isAborted(e) && this.entrypoint.supersededWith) {
@@ -1 +1 @@
1
- {"version":3,"file":"processEntrypoint.js","names":["isAborted","processEntrypoint","only","log","entrypoint","_stack","abortSignal","_using","createAbortSignal","undefined","result","getNext","assertNotSuperseded","setTransformResult","_","_error","_hasError","_dispose","e","supersededWith"],"sources":["../../../src/transform/generators/processEntrypoint.ts"],"sourcesContent":["import { isAborted } from '../actions/AbortError';\nimport type { IProcessEntrypointAction, SyncScenarioForAction } from '../types';\n\n/**\n * The first stage of processing an entrypoint.\n * This stage is responsible for:\n * - scheduling the explodeReexports action\n * - scheduling the transform action\n * - rescheduling itself if the entrypoint is superseded\n */\nexport function* processEntrypoint(\n this: IProcessEntrypointAction\n): SyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n try {\n using abortSignal = this.createAbortSignal();\n\n yield ['explodeReexports', this.entrypoint, undefined, abortSignal];\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n }\n}\n"],"mappings":";;;AAAA,SAASA,SAAS,QAAQ,uBAAuB;AAGjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,UAAUC,iBAAiBA,CAAA,EAEiB;EACjD,MAAM;IAAEC,IAAI;IAAEC;EAAI,CAAC,GAAG,IAAI,CAACC,UAAU;EACrCD,GAAG,CAAC,6BAA6B,EAAED,IAAI,CAAC;EAExC;IAAA,IAAI;MAAA,IAAAG,MAAA;MACF,MAAMC,WAAW,GAAAC,MAAA,CAAAF,MAAA,EAAG,IAAI,CAACG,iBAAiB,CAAC,CAAC;MAE5C,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAACJ,UAAU,EAAEK,SAAS,EAAEH,WAAW,CAAC;MACnE,MAAMI,MAAM,GAAG,OAAO,IAAI,CAACC,OAAO,CAChC,WAAW,EACX,IAAI,CAACP,UAAU,EACfK,SAAS,EACTH,WACF,CAAC;MAED,IAAI,CAACF,UAAU,CAACQ,mBAAmB,CAAC,CAAC;MAErC,IAAI,CAACR,UAAU,CAACS,kBAAkB,CAACH,MAAM,CAAC;MAE1CP,GAAG,CAAC,gCAAgC,CAAC;IACvC,CAAC,QAAAW,CAAA;MAAA,IAAAC,MAAA,GAAAD,CAAA;MAAA,IAAAE,SAAA;IAAA;MAAAC,QAAA,CAAAZ,MAAA,EAAAU,MAAA,EAAAC,SAAA;IAAA;EAAA,EAAC,OAAOE,CAAC,EAAE;IACV,IAAIlB,SAAS,CAACkB,CAAC,CAAC,IAAI,IAAI,CAACd,UAAU,CAACe,cAAc,EAAE;MAClDhB,GAAG,CAAC,+CAA+C,CAAC;MACpD,OAAO,IAAI,CAACQ,OAAO,CACjB,mBAAmB,EACnB,IAAI,CAACP,UAAU,CAACe,cAAc,EAC9BV,SAAS,EACT,IACF,CAAC;MAED;IACF;IAEAN,GAAG,CAAE,qBAAoB,EAAEe,CAAC,CAAC;IAC7B,MAAMA,CAAC;EACT;AACF"}
1
+ {"version":3,"file":"processEntrypoint.js","names":["isAborted","processEntrypoint","only","log","entrypoint","_usingCtx","_usingCtx2","abortSignal","u","createAbortSignal","undefined","result","getNext","assertNotSuperseded","setTransformResult","_","e","d","supersededWith"],"sources":["../../../src/transform/generators/processEntrypoint.ts"],"sourcesContent":["import { isAborted } from '../actions/AbortError';\nimport type { IProcessEntrypointAction, SyncScenarioForAction } from '../types';\n\n/**\n * The first stage of processing an entrypoint.\n * This stage is responsible for:\n * - scheduling the explodeReexports action\n * - scheduling the transform action\n * - rescheduling itself if the entrypoint is superseded\n */\nexport function* processEntrypoint(\n this: IProcessEntrypointAction\n): SyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n try {\n using abortSignal = this.createAbortSignal();\n\n yield ['explodeReexports', this.entrypoint, undefined, abortSignal];\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n }\n}\n"],"mappings":";AAAA,SAASA,SAAS,QAAQ,uBAAuB;AAGjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,UAAUC,iBAAiBA,CAAA,EAEiB;EACjD,MAAM;IAAEC,IAAI;IAAEC;EAAI,CAAC,GAAG,IAAI,CAACC,UAAU;EACrCD,GAAG,CAAC,6BAA6B,EAAED,IAAI,CAAC;EAExC;IAAI;MAAA,IAAAG,SAAA,GAAAC,UAAA;MACF,MAAMC,WAAW,GAAAF,SAAA,CAAAG,CAAA,CAAG,IAAI,CAACC,iBAAiB,CAAC,CAAC;MAE5C,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAACL,UAAU,EAAEM,SAAS,EAAEH,WAAW,CAAC;MACnE,MAAMI,MAAM,GAAG,OAAO,IAAI,CAACC,OAAO,CAChC,WAAW,EACX,IAAI,CAACR,UAAU,EACfM,SAAS,EACTH,WACF,CAAC;MAED,IAAI,CAACH,UAAU,CAACS,mBAAmB,CAAC,CAAC;MAErC,IAAI,CAACT,UAAU,CAACU,kBAAkB,CAACH,MAAM,CAAC;MAE1CR,GAAG,CAAC,gCAAgC,CAAC;IAAC,SAAAY,CAAA;MAAAV,SAAA,CAAAW,CAAA,GAAAD,CAAA;IAAA;MAAAV,SAAA,CAAAY,CAAA;IAAA;EACvC,EAAC,OAAOD,CAAC,EAAE;IACV,IAAIhB,SAAS,CAACgB,CAAC,CAAC,IAAI,IAAI,CAACZ,UAAU,CAACc,cAAc,EAAE;MAClDf,GAAG,CAAC,+CAA+C,CAAC;MACpD,OAAO,IAAI,CAACS,OAAO,CACjB,mBAAmB,EACnB,IAAI,CAACR,UAAU,CAACc,cAAc,EAC9BR,SAAS,EACT,IACF,CAAC;MAED;IACF;IAEAP,GAAG,CAAC,qBAAqB,EAAEa,CAAC,CAAC;IAC7B,MAAMA,CAAC;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"processImports.js","names":["processImports","dependency","data","resolved","only","entrypoint","addDependency","nextEntrypoint","createChild","ignored","getNext","undefined"],"sources":["../../../src/transform/generators/processImports.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport type { IProcessImportsAction, SyncScenarioForAction } from '../types';\n\n/**\n * Creates new entrypoints and emits processEntrypoint for each resolved import\n */\nexport function* processImports(\n this: IProcessImportsAction\n): SyncScenarioForAction<IProcessImportsAction> {\n for (const dependency of this.data.resolved) {\n const { resolved, only } = dependency;\n if (!resolved) {\n continue;\n }\n\n this.entrypoint.addDependency(dependency);\n\n const nextEntrypoint = this.entrypoint.createChild(resolved, only);\n if (nextEntrypoint === 'loop' || nextEntrypoint.ignored) {\n continue;\n }\n\n yield* this.getNext('processEntrypoint', nextEntrypoint, undefined, null);\n }\n}\n"],"mappings":"AAAA;;AAGA;AACA;AACA;AACA,OAAO,UAAUA,cAAcA,CAAA,EAEiB;EAC9C,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE;IAC3C,MAAM;MAAEA,QAAQ;MAAEC;IAAK,CAAC,GAAGH,UAAU;IACrC,IAAI,CAACE,QAAQ,EAAE;MACb;IACF;IAEA,IAAI,CAACE,UAAU,CAACC,aAAa,CAACL,UAAU,CAAC;IAEzC,MAAMM,cAAc,GAAG,IAAI,CAACF,UAAU,CAACG,WAAW,CAACL,QAAQ,EAAEC,IAAI,CAAC;IAClE,IAAIG,cAAc,KAAK,MAAM,IAAIA,cAAc,CAACE,OAAO,EAAE;MACvD;IACF;IAEA,OAAO,IAAI,CAACC,OAAO,CAAC,mBAAmB,EAAEH,cAAc,EAAEI,SAAS,EAAE,IAAI,CAAC;EAC3E;AACF"}
1
+ {"version":3,"file":"processImports.js","names":["processImports","dependency","data","resolved","only","entrypoint","addDependency","nextEntrypoint","createChild","ignored","getNext","undefined"],"sources":["../../../src/transform/generators/processImports.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport type { IProcessImportsAction, SyncScenarioForAction } from '../types';\n\n/**\n * Creates new entrypoints and emits processEntrypoint for each resolved import\n */\nexport function* processImports(\n this: IProcessImportsAction\n): SyncScenarioForAction<IProcessImportsAction> {\n for (const dependency of this.data.resolved) {\n const { resolved, only } = dependency;\n if (!resolved) {\n continue;\n }\n\n this.entrypoint.addDependency(dependency);\n\n const nextEntrypoint = this.entrypoint.createChild(resolved, only);\n if (nextEntrypoint === 'loop' || nextEntrypoint.ignored) {\n continue;\n }\n\n yield* this.getNext('processEntrypoint', nextEntrypoint, undefined, null);\n }\n}\n"],"mappings":"AAAA;;AAGA;AACA;AACA;AACA,OAAO,UAAUA,cAAcA,CAAA,EAEiB;EAC9C,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACC,IAAI,CAACC,QAAQ,EAAE;IAC3C,MAAM;MAAEA,QAAQ;MAAEC;IAAK,CAAC,GAAGH,UAAU;IACrC,IAAI,CAACE,QAAQ,EAAE;MACb;IACF;IAEA,IAAI,CAACE,UAAU,CAACC,aAAa,CAACL,UAAU,CAAC;IAEzC,MAAMM,cAAc,GAAG,IAAI,CAACF,UAAU,CAACG,WAAW,CAACL,QAAQ,EAAEC,IAAI,CAAC;IAClE,IAAIG,cAAc,KAAK,MAAM,IAAIA,cAAc,CAACE,OAAO,EAAE;MACvD;IACF;IAEA,OAAO,IAAI,CAACC,OAAO,CAAC,mBAAmB,EAAEH,cAAc,EAAEI,SAAS,EAAE,IAAI,CAAC;EAC3E;AACF","ignoreList":[]}
@@ -1,6 +1,43 @@
1
1
  /* eslint-disable no-continue,no-await-in-loop,require-yield */
2
2
  import { getFileIdx } from '../../utils/getFileIdx';
3
3
  import { getStack, isSuperSet, mergeOnly } from '../Entrypoint.helpers';
4
+ import { applyImportOverrideToOnly, resolveMockSpecifier, toImportKey } from '../../utils/importOverrides';
5
+ function applyImportOverrides(services, entrypoint, resolvedImports) {
6
+ const overrides = services.options.pluginOptions.importOverrides;
7
+ if (!overrides || Object.keys(overrides).length === 0) {
8
+ return resolvedImports;
9
+ }
10
+ const {
11
+ root
12
+ } = services.options;
13
+ const importer = entrypoint.name;
14
+ const stack = getStack(entrypoint);
15
+ return resolvedImports.map(dependency => {
16
+ const {
17
+ key
18
+ } = toImportKey({
19
+ source: dependency.source,
20
+ resolved: dependency.resolved,
21
+ root
22
+ });
23
+ const override = overrides[key];
24
+ if (!override) {
25
+ return dependency;
26
+ }
27
+ const nextOnly = applyImportOverrideToOnly(dependency.only, override);
28
+ const nextResolved = override.mock ? resolveMockSpecifier({
29
+ mock: override.mock,
30
+ importer,
31
+ root,
32
+ stack
33
+ }) : dependency.resolved;
34
+ return {
35
+ ...dependency,
36
+ only: nextOnly,
37
+ resolved: nextResolved
38
+ };
39
+ });
40
+ }
4
41
  function emitDependency(emitter, entrypoint, imports) {
5
42
  emitter.single({
6
43
  type: 'dependency',
@@ -62,7 +99,8 @@ export function* syncResolveImports(resolve) {
62
99
  resolved
63
100
  };
64
101
  });
65
- const filteredImports = filterUnresolved(entrypoint, resolvedImports);
102
+ const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
103
+ const filteredImports = filterUnresolved(entrypoint, overriddenImports);
66
104
  emitDependency(eventEmitter, entrypoint, filteredImports);
67
105
  return filteredImports;
68
106
  }
@@ -141,7 +179,8 @@ export async function* asyncResolveImports(resolve) {
141
179
  return resolveTask;
142
180
  }));
143
181
  log('resolved %d imports', resolvedImports.length);
144
- const filteredImports = filterUnresolved(entrypoint, resolvedImports);
182
+ const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
183
+ const filteredImports = filterUnresolved(entrypoint, overriddenImports);
145
184
  emitDependency(eventEmitter, entrypoint, filteredImports);
146
185
  return filteredImports;
147
186
  }