@csszyx/unplugin 0.11.7 → 0.11.9
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.
- package/README.md +6 -1
- package/dist/css-mangler.cjs +9 -6
- package/dist/css-mangler.mjs +9 -6
- package/dist/index.cjs +5 -4
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +4 -4
- package/dist/next-config.cjs +1 -1
- package/dist/next-config.mjs +1 -1
- package/dist/next-prebuild.cjs +5 -5
- package/dist/next-prebuild.mjs +5 -5
- package/dist/next-turbo-loader.cjs +7 -12
- package/dist/next-turbo-loader.mjs +7 -12
- package/dist/next-watcher.cjs +2 -2
- package/dist/next-watcher.mjs +2 -2
- package/dist/shared/{unplugin.Dqt1aLCX.mjs → unplugin.7TELUwsj.mjs} +5 -3
- package/dist/shared/unplugin.B3XoSRB8.mjs +40 -0
- package/dist/shared/unplugin.BkRah5Ot.cjs +48 -0
- package/dist/shared/{unplugin.VSslRpfN.mjs → unplugin.Bqx2WfBV.mjs} +51 -50
- package/dist/shared/{unplugin.PhOFTQpB.d.cts → unplugin.CjCKWnoX.d.cts} +25 -6
- package/dist/shared/{unplugin.PhOFTQpB.d.mts → unplugin.CjCKWnoX.d.mts} +25 -6
- package/dist/shared/{unplugin.CwcOd1q3.mjs → unplugin.D-K57LNR.mjs} +6 -1
- package/dist/shared/{unplugin.ByAzFdqO.cjs → unplugin.DUI48s3S.cjs} +1181 -766
- package/dist/shared/{unplugin.D8vSG36M.cjs → unplugin.DVCQC5wq.cjs} +6 -0
- package/dist/shared/{unplugin.Rov-j_Wm.cjs → unplugin.DmuOKVS4.cjs} +21 -0
- package/dist/shared/{unplugin.D6hes1O8.cjs → unplugin.WVn08Fln.cjs} +5 -3
- package/dist/shared/{unplugin.CZKUWN1J.cjs → unplugin.jZsBqx54.cjs} +51 -50
- package/dist/shared/unplugin.nnsa7OVW.mjs +49 -0
- package/dist/shared/{unplugin.CtHwCYxE.mjs → unplugin.wx3cvxxX.mjs} +1180 -766
- package/dist/vite.cjs +4 -4
- package/dist/vite.d.cts +2 -25
- package/dist/vite.d.mts +1 -25
- package/dist/vite.mjs +4 -8
- package/dist/webpack.cjs +4 -4
- package/dist/webpack.d.cts +2 -5
- package/dist/webpack.d.mts +1 -5
- package/dist/webpack.mjs +4 -8
- package/package.json +7 -7
- package/dist/shared/unplugin.B1mblcm-.mjs +0 -9
- package/dist/shared/unplugin.B3RHYokB.mjs +0 -29
- package/dist/shared/unplugin.BCwRIUs_.cjs +0 -12
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { ensureRustTransformAvailable, transformSourceCode, transformRust, transformOxc, transform } from '@csszyx/compiler';
|
|
3
|
-
import { c as createTransformCacheKey, a as readTransformCache, w as writeTransformCache } from './unplugin.
|
|
3
|
+
import { c as createTransformCacheKey, a as readTransformCache, w as writeTransformCache, n as normalizePathSeparators } from './unplugin.D-K57LNR.mjs';
|
|
4
4
|
import { createHash } from 'node:crypto';
|
|
5
|
-
import { s as sortStrings } from './unplugin.
|
|
5
|
+
import { s as sortStrings } from './unplugin.B3XoSRB8.mjs';
|
|
6
6
|
|
|
7
7
|
function readPackageVersion(relativePackageJson, fromUrl) {
|
|
8
8
|
try {
|
|
@@ -59,61 +59,19 @@ function stripJsCommentsAndStrings(source) {
|
|
|
59
59
|
const char = source[index];
|
|
60
60
|
const peek = index + 1 < length ? source[index + 1] : "";
|
|
61
61
|
if (char === "/" && peek === "/") {
|
|
62
|
-
index
|
|
63
|
-
while (index < length && source[index] !== "\n") {
|
|
64
|
-
index++;
|
|
65
|
-
}
|
|
62
|
+
index = skipLineComment(source, index);
|
|
66
63
|
continue;
|
|
67
64
|
}
|
|
68
65
|
if (char === "/" && peek === "*") {
|
|
69
|
-
index
|
|
70
|
-
while (index + 1 < length && !(source[index] === "*" && source[index + 1] === "/")) {
|
|
71
|
-
index++;
|
|
72
|
-
}
|
|
73
|
-
index = Math.min(length, index + 2);
|
|
66
|
+
index = skipBlockComment(source, index);
|
|
74
67
|
continue;
|
|
75
68
|
}
|
|
76
69
|
if (char === "/" && isRegexLiteralStart(out)) {
|
|
77
|
-
index
|
|
78
|
-
let inCharClass = false;
|
|
79
|
-
while (index < length) {
|
|
80
|
-
const current = source[index];
|
|
81
|
-
if (current === "\\" && index + 1 < length) {
|
|
82
|
-
index += 2;
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
if (current === "[") {
|
|
86
|
-
inCharClass = true;
|
|
87
|
-
index++;
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (current === "]") {
|
|
91
|
-
inCharClass = false;
|
|
92
|
-
index++;
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
if (current === "/" && !inCharClass) {
|
|
96
|
-
index++;
|
|
97
|
-
while (/[a-z]/i.test(source[index] ?? "")) {
|
|
98
|
-
index++;
|
|
99
|
-
}
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
index++;
|
|
103
|
-
}
|
|
70
|
+
index = skipRegexLiteral(source, index);
|
|
104
71
|
continue;
|
|
105
72
|
}
|
|
106
73
|
if (char === '"' || char === "'" || char === "`") {
|
|
107
|
-
|
|
108
|
-
index++;
|
|
109
|
-
while (index < length && source[index] !== quote) {
|
|
110
|
-
if (source[index] === "\\" && index + 1 < length) {
|
|
111
|
-
index += 2;
|
|
112
|
-
} else {
|
|
113
|
-
index++;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
index++;
|
|
74
|
+
index = skipQuotedSource(source, index, char);
|
|
117
75
|
continue;
|
|
118
76
|
}
|
|
119
77
|
out += char;
|
|
@@ -121,6 +79,46 @@ function stripJsCommentsAndStrings(source) {
|
|
|
121
79
|
}
|
|
122
80
|
return out;
|
|
123
81
|
}
|
|
82
|
+
function skipLineComment(source, start) {
|
|
83
|
+
const newline = source.indexOf("\n", start + 2);
|
|
84
|
+
return newline === -1 ? source.length : newline;
|
|
85
|
+
}
|
|
86
|
+
function skipBlockComment(source, start) {
|
|
87
|
+
const close = source.indexOf("*/", start + 2);
|
|
88
|
+
return close === -1 ? source.length : close + 2;
|
|
89
|
+
}
|
|
90
|
+
function skipRegexLiteral(source, start) {
|
|
91
|
+
let index = start + 1;
|
|
92
|
+
let inCharClass = false;
|
|
93
|
+
while (index < source.length) {
|
|
94
|
+
const current = source[index];
|
|
95
|
+
if (current === "\\" && index + 1 < source.length) {
|
|
96
|
+
index += 2;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (current === "[") {
|
|
100
|
+
inCharClass = true;
|
|
101
|
+
} else if (current === "]") {
|
|
102
|
+
inCharClass = false;
|
|
103
|
+
} else if (current === "/" && !inCharClass) {
|
|
104
|
+
return skipRegexFlags(source, index + 1);
|
|
105
|
+
}
|
|
106
|
+
index++;
|
|
107
|
+
}
|
|
108
|
+
return index;
|
|
109
|
+
}
|
|
110
|
+
function skipRegexFlags(source, start) {
|
|
111
|
+
let index = start;
|
|
112
|
+
while (/[a-z]/i.test(source[index] ?? "")) index++;
|
|
113
|
+
return index;
|
|
114
|
+
}
|
|
115
|
+
function skipQuotedSource(source, start, quote) {
|
|
116
|
+
let index = start + 1;
|
|
117
|
+
while (index < source.length && source[index] !== quote) {
|
|
118
|
+
index += source[index] === "\\" && index + 1 < source.length ? 2 : 1;
|
|
119
|
+
}
|
|
120
|
+
return index + 1;
|
|
121
|
+
}
|
|
124
122
|
function isRegexLiteralStart(emitted) {
|
|
125
123
|
const trimmed = emitted.trimEnd();
|
|
126
124
|
const previous = trimmed.length > 0 ? trimmed.charAt(trimmed.length - 1) : void 0;
|
|
@@ -174,13 +172,16 @@ function createNextSourceTransformCacheInput(input, filename, producer) {
|
|
|
174
172
|
};
|
|
175
173
|
}
|
|
176
174
|
function normalizeSourceFilename(filename) {
|
|
177
|
-
return filename
|
|
175
|
+
return normalizePathSeparators(filename);
|
|
178
176
|
}
|
|
179
177
|
function normalizeGlobalVarAliasesForCache(aliases) {
|
|
180
178
|
if (!aliases) {
|
|
181
179
|
return [];
|
|
182
180
|
}
|
|
183
|
-
|
|
181
|
+
let entries;
|
|
182
|
+
if (aliases instanceof Map) entries = aliases.entries();
|
|
183
|
+
else if (Array.isArray(aliases)) entries = aliases;
|
|
184
|
+
else entries = Object.entries(aliases);
|
|
184
185
|
const normalized = /* @__PURE__ */ new Map();
|
|
185
186
|
for (const [original, alias] of entries) {
|
|
186
187
|
if (original.startsWith("--") && alias.startsWith("--")) {
|
|
@@ -334,7 +334,7 @@ declare function findLocalImportSources(code: string): string[];
|
|
|
334
334
|
*
|
|
335
335
|
* Supports:
|
|
336
336
|
* - Multiple @theme blocks per file
|
|
337
|
-
* - @theme inline
|
|
337
|
+
* - @theme option keywords (inline, static, reference, combinations — ignored)
|
|
338
338
|
* - @theme inside @layer (two-pass strip)
|
|
339
339
|
* - --color-brand-50 shade suffixes (deduped to 'brand')
|
|
340
340
|
* - Multi-file merge via mergeThemes()
|
|
@@ -407,6 +407,12 @@ interface PluginState {
|
|
|
407
407
|
classes: Set<string>;
|
|
408
408
|
/** Merged @theme scan result — feeds the theme-groups virtual module. */
|
|
409
409
|
parsedTheme: ParsedTheme | null;
|
|
410
|
+
/**
|
|
411
|
+
* CSS files the zero-config @theme auto-scan found tokens in (only when
|
|
412
|
+
* `build.scanCss` is unset). Dev HMR re-scans when one of these — or any
|
|
413
|
+
* other .css file — changes, mirroring the explicit scanCss reload path.
|
|
414
|
+
*/
|
|
415
|
+
autoThemeCssFiles: string[];
|
|
410
416
|
/**
|
|
411
417
|
* True once any processed CSS file was seen importing `tailwindcss`. Used to
|
|
412
418
|
* warn at build end when csszyx generated classes but nothing makes Tailwind
|
|
@@ -430,12 +436,17 @@ interface PluginState {
|
|
|
430
436
|
/** Memoized `isMonorepoPackage(rootDir)` result; `undefined` until computed. */
|
|
431
437
|
inMonorepo?: boolean;
|
|
432
438
|
/**
|
|
433
|
-
* Classes csszyx generated by lowering `sz` props
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
* JS that references classes by name) owns.
|
|
439
|
+
* Classes csszyx generated by lowering `sz` props. Final map eligibility
|
|
440
|
+
* subtracts authoredClasses because a class can be both generated and used
|
|
441
|
+
* by a raw selector consumer.
|
|
437
442
|
*/
|
|
438
443
|
ownedClasses: Set<string>;
|
|
444
|
+
/**
|
|
445
|
+
* Classes written through author-facing class/className attributes. Any
|
|
446
|
+
* overlap with ownedClasses must keep its original name because bundled
|
|
447
|
+
* helper calls may not preserve enough context for safe string rewriting.
|
|
448
|
+
*/
|
|
449
|
+
authoredClasses: Set<string>;
|
|
439
450
|
/** Unresolvable-spread warnings surfaced to the build log in every mode. */
|
|
440
451
|
spreadWarnings: Set<string>;
|
|
441
452
|
/**
|
|
@@ -706,6 +717,14 @@ declare function isHardIgnoredPath(id: string, sourceDirs?: readonly string[]):
|
|
|
706
717
|
* @returns true when the file should be prescanned for safelist extraction.
|
|
707
718
|
*/
|
|
708
719
|
declare function fileMayContainSafelistableSz(content: string): boolean;
|
|
720
|
+
/**
|
|
721
|
+
* Return csszyx-owned classes that are safe to rename.
|
|
722
|
+
*
|
|
723
|
+
* @param ownedClasses Classes emitted from sz transforms.
|
|
724
|
+
* @param authoredClasses Classes also written in class/className source positions.
|
|
725
|
+
* @returns Owned classes with hybrid raw consumers removed.
|
|
726
|
+
*/
|
|
727
|
+
declare function mangleEligibleClasses(ownedClasses: ReadonlySet<string>, authoredClasses: ReadonlySet<string>): string[];
|
|
709
728
|
/**
|
|
710
729
|
* Whether a file is workspace-package source that csszyx skipped only because it
|
|
711
730
|
* lives under `/packages/` and is not under any opted-in `compileSources`
|
|
@@ -836,5 +855,5 @@ declare const rollupPlugin: (options?: PartialCsszyxConfig) => InputPluginOption
|
|
|
836
855
|
*/
|
|
837
856
|
declare const esbuildPlugin: (options?: PartialCsszyxConfig) => Plugin;
|
|
838
857
|
|
|
839
|
-
export {
|
|
858
|
+
export { mergeThemes as $, unplugin as A, deleteRSCModuleRecord as B, esbuildPlugin as D, extractGlobalVarAliasesForManifest as E, fileMayContainSafelistableSz as F, findLocalImportSources as H, findRSCBoundaryViolation as I, findRSCGraphViolation as J, hasInjectableTailwindCandidate as K, hasTokens as L, hasUseClientDirective as N, hasUseServerDirective as O, isCompileSourceOptedIn as Q, isHardIgnoredPath as T, isMonorepoPackage as U, isPackagesSkippedSource as W, isRSCServerModule as X, mangleCodeClassesSync as Y, mangleEligibleClasses as Z, mangleHybridHazardMessage as _, missingTailwindEntryMessage as a0, normalizeGlobalVarAliasesForCache as a1, parseThemeBlocks as a2, recordGlobalVarSourceFile as a3, resolveCompileSourceDirs as a4, resolveNativeCacheIdentity as a5, rollupPlugin as a6, scanCustomPropertyNames as a7, shouldEmitWarning as a8, shouldTrackGlobalVarSources as a9, shouldWarnMissingTailwindEntry as aa, shouldWarnUnscopedMonorepo as ab, skippedSzFilesMessage as ac, unscopedMonorepoMessage as ad, vitePlugin as ae, webpackPlugin as af, appendTailwindSourceDirective as r, assertNoRSCBoundaryViolation as s, assertNoRSCGraphViolation as t, collectMangleHybridHazards as u, computeSafelistRelPath as v, createGlobalVarMapAssetSource as w, createRSCModuleRecord as x, cssHasContentScope as y, cssImportsTailwind as z };
|
|
840
859
|
export type { CssVarScanResult as C, GlobalVarScanCacheKeyInput as G, MangleHybridHazards as M, PlanGlobalVarAliasesInput as P, RewriteGlobalVarCssAliasesOptions as R, ScanGlobalVarCssOptions as S, ValidateGlobalVarAliasInputsOptions as V, GlobalVarAliasPlan as a, GlobalVarCssAliasRewriteResult as b, CreateGlobalVarAliasValidationOptionsInput as c, GlobalVarAliasValidationResult as d, CssVarDefinition as e, CssVarLocation as f, CssVarReference as g, GlobalVarAliasDiagnostic as h, GlobalVarAliasDiagnosticSeverity as i, GlobalVarAliasEntry as j, GlobalVarCodeSource as k, GlobalVarCssAssetSource as l, GlobalVarCssSource as m, GlobalVarScanCacheEntry as n, ParsedTheme as o, RSCBoundaryViolation as p, RSCModuleRecord as q };
|
|
@@ -334,7 +334,7 @@ declare function findLocalImportSources(code: string): string[];
|
|
|
334
334
|
*
|
|
335
335
|
* Supports:
|
|
336
336
|
* - Multiple @theme blocks per file
|
|
337
|
-
* - @theme inline
|
|
337
|
+
* - @theme option keywords (inline, static, reference, combinations — ignored)
|
|
338
338
|
* - @theme inside @layer (two-pass strip)
|
|
339
339
|
* - --color-brand-50 shade suffixes (deduped to 'brand')
|
|
340
340
|
* - Multi-file merge via mergeThemes()
|
|
@@ -407,6 +407,12 @@ interface PluginState {
|
|
|
407
407
|
classes: Set<string>;
|
|
408
408
|
/** Merged @theme scan result — feeds the theme-groups virtual module. */
|
|
409
409
|
parsedTheme: ParsedTheme | null;
|
|
410
|
+
/**
|
|
411
|
+
* CSS files the zero-config @theme auto-scan found tokens in (only when
|
|
412
|
+
* `build.scanCss` is unset). Dev HMR re-scans when one of these — or any
|
|
413
|
+
* other .css file — changes, mirroring the explicit scanCss reload path.
|
|
414
|
+
*/
|
|
415
|
+
autoThemeCssFiles: string[];
|
|
410
416
|
/**
|
|
411
417
|
* True once any processed CSS file was seen importing `tailwindcss`. Used to
|
|
412
418
|
* warn at build end when csszyx generated classes but nothing makes Tailwind
|
|
@@ -430,12 +436,17 @@ interface PluginState {
|
|
|
430
436
|
/** Memoized `isMonorepoPackage(rootDir)` result; `undefined` until computed. */
|
|
431
437
|
inMonorepo?: boolean;
|
|
432
438
|
/**
|
|
433
|
-
* Classes csszyx generated by lowering `sz` props
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
* JS that references classes by name) owns.
|
|
439
|
+
* Classes csszyx generated by lowering `sz` props. Final map eligibility
|
|
440
|
+
* subtracts authoredClasses because a class can be both generated and used
|
|
441
|
+
* by a raw selector consumer.
|
|
437
442
|
*/
|
|
438
443
|
ownedClasses: Set<string>;
|
|
444
|
+
/**
|
|
445
|
+
* Classes written through author-facing class/className attributes. Any
|
|
446
|
+
* overlap with ownedClasses must keep its original name because bundled
|
|
447
|
+
* helper calls may not preserve enough context for safe string rewriting.
|
|
448
|
+
*/
|
|
449
|
+
authoredClasses: Set<string>;
|
|
439
450
|
/** Unresolvable-spread warnings surfaced to the build log in every mode. */
|
|
440
451
|
spreadWarnings: Set<string>;
|
|
441
452
|
/**
|
|
@@ -706,6 +717,14 @@ declare function isHardIgnoredPath(id: string, sourceDirs?: readonly string[]):
|
|
|
706
717
|
* @returns true when the file should be prescanned for safelist extraction.
|
|
707
718
|
*/
|
|
708
719
|
declare function fileMayContainSafelistableSz(content: string): boolean;
|
|
720
|
+
/**
|
|
721
|
+
* Return csszyx-owned classes that are safe to rename.
|
|
722
|
+
*
|
|
723
|
+
* @param ownedClasses Classes emitted from sz transforms.
|
|
724
|
+
* @param authoredClasses Classes also written in class/className source positions.
|
|
725
|
+
* @returns Owned classes with hybrid raw consumers removed.
|
|
726
|
+
*/
|
|
727
|
+
declare function mangleEligibleClasses(ownedClasses: ReadonlySet<string>, authoredClasses: ReadonlySet<string>): string[];
|
|
709
728
|
/**
|
|
710
729
|
* Whether a file is workspace-package source that csszyx skipped only because it
|
|
711
730
|
* lives under `/packages/` and is not under any opted-in `compileSources`
|
|
@@ -836,5 +855,5 @@ declare const rollupPlugin: (options?: PartialCsszyxConfig) => InputPluginOption
|
|
|
836
855
|
*/
|
|
837
856
|
declare const esbuildPlugin: (options?: PartialCsszyxConfig) => Plugin;
|
|
838
857
|
|
|
839
|
-
export {
|
|
858
|
+
export { mergeThemes as $, unplugin as A, deleteRSCModuleRecord as B, esbuildPlugin as D, extractGlobalVarAliasesForManifest as E, fileMayContainSafelistableSz as F, findLocalImportSources as H, findRSCBoundaryViolation as I, findRSCGraphViolation as J, hasInjectableTailwindCandidate as K, hasTokens as L, hasUseClientDirective as N, hasUseServerDirective as O, isCompileSourceOptedIn as Q, isHardIgnoredPath as T, isMonorepoPackage as U, isPackagesSkippedSource as W, isRSCServerModule as X, mangleCodeClassesSync as Y, mangleEligibleClasses as Z, mangleHybridHazardMessage as _, missingTailwindEntryMessage as a0, normalizeGlobalVarAliasesForCache as a1, parseThemeBlocks as a2, recordGlobalVarSourceFile as a3, resolveCompileSourceDirs as a4, resolveNativeCacheIdentity as a5, rollupPlugin as a6, scanCustomPropertyNames as a7, shouldEmitWarning as a8, shouldTrackGlobalVarSources as a9, shouldWarnMissingTailwindEntry as aa, shouldWarnUnscopedMonorepo as ab, skippedSzFilesMessage as ac, unscopedMonorepoMessage as ad, vitePlugin as ae, webpackPlugin as af, appendTailwindSourceDirective as r, assertNoRSCBoundaryViolation as s, assertNoRSCGraphViolation as t, collectMangleHybridHazards as u, computeSafelistRelPath as v, createGlobalVarMapAssetSource as w, createRSCModuleRecord as x, cssHasContentScope as y, cssImportsTailwind as z };
|
|
840
859
|
export type { CssVarScanResult as C, GlobalVarScanCacheKeyInput as G, MangleHybridHazards as M, PlanGlobalVarAliasesInput as P, RewriteGlobalVarCssAliasesOptions as R, ScanGlobalVarCssOptions as S, ValidateGlobalVarAliasInputsOptions as V, GlobalVarAliasPlan as a, GlobalVarCssAliasRewriteResult as b, CreateGlobalVarAliasValidationOptionsInput as c, GlobalVarAliasValidationResult as d, CssVarDefinition as e, CssVarLocation as f, CssVarReference as g, GlobalVarAliasDiagnostic as h, GlobalVarAliasDiagnosticSeverity as i, GlobalVarAliasEntry as j, GlobalVarCodeSource as k, GlobalVarCssAssetSource as l, GlobalVarCssSource as m, GlobalVarScanCacheEntry as n, ParsedTheme as o, RSCBoundaryViolation as p, RSCModuleRecord as q };
|
|
@@ -2,6 +2,11 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
|
|
5
|
+
const WINDOWS_PATH_SEPARATOR = String.fromCodePoint(92);
|
|
6
|
+
function normalizePathSeparators(value) {
|
|
7
|
+
return value.split(WINDOWS_PATH_SEPARATOR).join("/");
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
const CACHE_SCHEMA_VERSION = 10;
|
|
6
11
|
function resolveTransformCacheDir(rootDir, cacheDir) {
|
|
7
12
|
return path.resolve(rootDir, cacheDir ?? ".csszyx/cache", "transform");
|
|
@@ -201,4 +206,4 @@ function evictMemoryCacheToBudget(cache, totalCodeChars, maxEntries, maxCodeChar
|
|
|
201
206
|
return total;
|
|
202
207
|
}
|
|
203
208
|
|
|
204
|
-
export { readTransformCache as a, evictMemoryCacheToBudget as b, createTransformCacheKey as c, evictOldTransformCacheEntries as e, resolveTransformCacheDir as r, writeTransformCache as w };
|
|
209
|
+
export { readTransformCache as a, evictMemoryCacheToBudget as b, createTransformCacheKey as c, evictOldTransformCacheEntries as e, normalizePathSeparators as n, resolveTransformCacheDir as r, writeTransformCache as w };
|