@wyw-in-js/transform 0.4.1 → 0.5.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.
@@ -13,6 +13,7 @@ export function transformUrl(url, outputFilename, sourceFilename, platformPath =
13
13
  return relative.split(platformPath.sep).join(POSIX_SEP);
14
14
  }
15
15
  const DEFINED_KEYFRAMES = Symbol('definedKeyframes');
16
+ const ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');
16
17
  const ORIGINAL_VALUE_KEY = Symbol('originalValue');
17
18
  const IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');
18
19
  const getOriginalElementValue = element => {
@@ -156,7 +157,12 @@ export function createKeyframeSuffixerPlugin() {
156
157
  }
157
158
  const keyframes = new Set();
158
159
  for (const sibling of element.siblings ?? []) {
159
- if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true) {
160
+ if (sibling[ORIGINAL_KEYFRAME_NAME]) {
161
+ keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);
162
+ continue;
163
+ }
164
+ const name = sibling.props[0];
165
+ if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true || name?.startsWith(':global(')) {
160
166
  continue;
161
167
  }
162
168
  keyframes.add(sibling.props[0]);
@@ -170,8 +176,11 @@ export function createKeyframeSuffixerPlugin() {
170
176
  if (isKeyframes(element) && element.parent) {
171
177
  const suffix = elementToKeyframeSuffix(element);
172
178
  const replaceFn = (_match, globalMatch, scopedMatch) => globalMatch || `${scopedMatch}-${suffix}`;
179
+ const originalName = element.props[0];
180
+ const isGlobal = originalName?.startsWith(':global(') ?? false;
173
181
  Object.assign(element, {
174
- [IS_GLOBAL_KEYFRAMES]: element.props[0]?.startsWith(':global(') ?? false,
182
+ [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,
183
+ [IS_GLOBAL_KEYFRAMES]: isGlobal,
175
184
  props: element.props.map(getReplacer(/^\s*/, animationNameRegexp, replaceFn)),
176
185
  value: getReplacer(buildPropsRegexp('keyframes', true), animationNameRegexp, replaceFn)(element.value)
177
186
  });
@@ -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_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","stylisGlobalPlugin","getGlobalSelectorModifiers","el","parent","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","suffix","replaceFn","globalMatch","scopedMatch","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_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\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 } = 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 & { [IS_GLOBAL_KEYFRAMES]?: boolean })[];\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 (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true) {\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 Object.assign(element, {\n [IS_GLOBAL_KEYFRAMES]:\n element.props[0]?.startsWith(':global(') ?? false,\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","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","stylisGlobalPlugin","getGlobalSelectorModifiers","el","parent","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\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 } = 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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"}
@@ -26,6 +26,7 @@ function transformUrl(url, outputFilename, sourceFilename, platformPath = path)
26
26
  return relative.split(platformPath.sep).join(POSIX_SEP);
27
27
  }
28
28
  const DEFINED_KEYFRAMES = Symbol('definedKeyframes');
29
+ const ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');
29
30
  const ORIGINAL_VALUE_KEY = Symbol('originalValue');
30
31
  const IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');
31
32
  const getOriginalElementValue = element => {
@@ -173,7 +174,12 @@ function createKeyframeSuffixerPlugin() {
173
174
  const keyframes = new Set();
174
175
  for (const sibling of (_element$siblings = element.siblings) !== null && _element$siblings !== void 0 ? _element$siblings : []) {
175
176
  var _element$siblings;
176
- if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true) {
177
+ if (sibling[ORIGINAL_KEYFRAME_NAME]) {
178
+ keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);
179
+ continue;
180
+ }
181
+ const name = sibling.props[0];
182
+ if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true || name !== null && name !== void 0 && name.startsWith(':global(')) {
177
183
  continue;
178
184
  }
179
185
  keyframes.add(sibling.props[0]);
@@ -185,11 +191,14 @@ function createKeyframeSuffixerPlugin() {
185
191
  };
186
192
  return element => {
187
193
  if (isKeyframes(element) && element.parent) {
188
- var _element$props$0$star, _element$props$;
194
+ var _originalName$startsW;
189
195
  const suffix = elementToKeyframeSuffix(element);
190
196
  const replaceFn = (_match, globalMatch, scopedMatch) => globalMatch || `${scopedMatch}-${suffix}`;
197
+ const originalName = element.props[0];
198
+ const isGlobal = (_originalName$startsW = originalName === null || originalName === void 0 ? void 0 : originalName.startsWith(':global(')) !== null && _originalName$startsW !== void 0 ? _originalName$startsW : false;
191
199
  Object.assign(element, {
192
- [IS_GLOBAL_KEYFRAMES]: (_element$props$0$star = (_element$props$ = element.props[0]) === null || _element$props$ === void 0 ? void 0 : _element$props$.startsWith(':global(')) !== null && _element$props$0$star !== void 0 ? _element$props$0$star : false,
200
+ [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,
201
+ [IS_GLOBAL_KEYFRAMES]: isGlobal,
193
202
  props: element.props.map(getReplacer(/^\s*/, animationNameRegexp, replaceFn)),
194
203
  value: getReplacer(buildPropsRegexp('keyframes', true), animationNameRegexp, replaceFn)(element.value)
195
204
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createStylisPreprocessor.js","names":["path","_interopRequireWildcard","require","_stylis","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","POSIX_SEP","posix","sep","transformUrl","url","outputFilename","sourceFilename","platformPath","relative","dirname","resolve","split","join","DEFINED_KEYFRAMES","Symbol","ORIGINAL_VALUE_KEY","IS_GLOBAL_KEYFRAMES","getOriginalElementValue","element","_element$ORIGINAL_VAL","value","throwIfNotProd","key","type","process","env","NODE_ENV","Error","JSON","stringify","childrenIsString","children","propsAreStrings","props","Array","isArray","propsIsString","isDeclaration","DECLARATION","isKeyframes","KEYFRAMES","isRuleset","RULESET","stylisGlobalPlugin","getGlobalSelectorModifiers","el","parent","parentValue","length","includes","match","baseSelector","spaceDelimiter","includeBaseSelector","includeSpaceDelimiter","assign","map","cssSelector","tokens","tokenize","selector","len","token","slice","exports","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","_input$match","fullMatch","undefined","rest","elementToKeyframeSuffix","replaceAll","animationPropsSet","Set","getDefinedKeyframes","keyframes","sibling","_element$siblings","siblings","add","_element$props$0$star","_element$props$","suffix","replaceFn","globalMatch","scopedMatch","keys","scopedKeyframes","patch","fromEntries","result","globalName","substring","isMiddleware","obj","createStylisPreprocessor","options","stylisPreprocess","text","compiled","compile","serialize","middleware","prefixer","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_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\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 } = 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 & { [IS_GLOBAL_KEYFRAMES]?: boolean })[];\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 (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true) {\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 Object.assign(element, {\n [IS_GLOBAL_KEYFRAMES]:\n element.props[0]?.startsWith(':global(') ?? false,\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","_interopRequireWildcard","require","_stylis","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","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","_element$ORIGINAL_VAL","value","throwIfNotProd","key","type","process","env","NODE_ENV","Error","JSON","stringify","childrenIsString","children","propsAreStrings","props","Array","isArray","propsIsString","isDeclaration","DECLARATION","isKeyframes","KEYFRAMES","isRuleset","RULESET","stylisGlobalPlugin","getGlobalSelectorModifiers","el","parent","parentValue","length","includes","match","baseSelector","spaceDelimiter","includeBaseSelector","includeSpaceDelimiter","assign","map","cssSelector","tokens","tokenize","selector","len","token","slice","exports","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","_input$match","fullMatch","undefined","rest","elementToKeyframeSuffix","replaceAll","animationPropsSet","Set","getDefinedKeyframes","keyframes","sibling","_element$siblings","siblings","add","name","_originalName$startsW","suffix","replaceFn","globalMatch","scopedMatch","originalName","isGlobal","keys","scopedKeyframes","patch","fromEntries","result","globalName","substring","isMiddleware","obj","createStylisPreprocessor","options","stylisPreprocess","text","compiled","compile","serialize","middleware","prefixer","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\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 } = 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wyw-in-js/transform",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "dependencies": {
5
5
  "@babel/core": "^7.23.5",
6
6
  "@babel/generator": "^7.23.5",
@@ -15,8 +15,8 @@
15
15
  "source-map": "^0.7.4",
16
16
  "stylis": "^4.3.0",
17
17
  "ts-invariant": "^0.10.3",
18
- "@wyw-in-js/processor-utils": "0.4.1",
19
- "@wyw-in-js/shared": "0.4.1"
18
+ "@wyw-in-js/processor-utils": "0.5.0",
19
+ "@wyw-in-js/shared": "0.5.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@babel/plugin-syntax-typescript": "^7.23.3",
@@ -37,10 +37,10 @@
37
37
  "glob": "^10.3.10",
38
38
  "strip-ansi": "^5.2.0",
39
39
  "typescript": "^5.2.2",
40
- "@wyw-in-js/babel-config": "0.4.1",
41
- "@wyw-in-js/eslint-config": "0.4.1",
42
- "@wyw-in-js/jest-preset": "0.4.1",
43
- "@wyw-in-js/ts-config": "0.4.1"
40
+ "@wyw-in-js/babel-config": "0.5.0",
41
+ "@wyw-in-js/eslint-config": "0.5.0",
42
+ "@wyw-in-js/jest-preset": "0.5.0",
43
+ "@wyw-in-js/ts-config": "0.5.0"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=16.0.0"
@@ -40,6 +40,7 @@ function transformUrl(url, outputFilename, sourceFilename, platformPath = path)
40
40
  }
41
41
  exports.transformUrl = transformUrl;
42
42
  const DEFINED_KEYFRAMES = Symbol('definedKeyframes');
43
+ const ORIGINAL_KEYFRAME_NAME = Symbol('originalKeyframeName');
43
44
  const ORIGINAL_VALUE_KEY = Symbol('originalValue');
44
45
  const IS_GLOBAL_KEYFRAMES = Symbol('isGlobalKeyframes');
45
46
  const getOriginalElementValue = (element) => {
@@ -191,7 +192,14 @@ function createKeyframeSuffixerPlugin() {
191
192
  }
192
193
  const keyframes = new Set();
193
194
  for (const sibling of element.siblings ?? []) {
194
- if (!isKeyframes(sibling) || sibling[IS_GLOBAL_KEYFRAMES] === true) {
195
+ if (sibling[ORIGINAL_KEYFRAME_NAME]) {
196
+ keyframes.add(sibling[ORIGINAL_KEYFRAME_NAME]);
197
+ continue;
198
+ }
199
+ const name = sibling.props[0];
200
+ if (!isKeyframes(sibling) ||
201
+ sibling[IS_GLOBAL_KEYFRAMES] === true ||
202
+ name?.startsWith(':global(')) {
195
203
  continue;
196
204
  }
197
205
  keyframes.add(sibling.props[0]);
@@ -203,8 +211,11 @@ function createKeyframeSuffixerPlugin() {
203
211
  if (isKeyframes(element) && element.parent) {
204
212
  const suffix = elementToKeyframeSuffix(element);
205
213
  const replaceFn = (_match, globalMatch, scopedMatch) => globalMatch || `${scopedMatch}-${suffix}`;
214
+ const originalName = element.props[0];
215
+ const isGlobal = originalName?.startsWith(':global(') ?? false;
206
216
  Object.assign(element, {
207
- [IS_GLOBAL_KEYFRAMES]: element.props[0]?.startsWith(':global(') ?? false,
217
+ [ORIGINAL_KEYFRAME_NAME]: isGlobal ? undefined : originalName,
218
+ [IS_GLOBAL_KEYFRAMES]: isGlobal,
208
219
  props: element.props.map(getReplacer(/^\s*/, animationNameRegexp, replaceFn)),
209
220
  value: getReplacer(buildPropsRegexp('keyframes', true), animationNameRegexp, replaceFn)(element.value),
210
221
  });