weapp-tailwindcss 5.1.9 → 5.1.10
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/dist/bundlers/shared/generator-css/generation-helpers.d.ts +1 -0
- package/dist/bundlers/shared/generator-css/output-import-shell.d.ts +4 -0
- package/dist/bundlers/shared/generator-css/source-resolver/metadata.d.ts +1 -0
- package/dist/bundlers/shared/generator-css/types.d.ts +2 -0
- package/dist/bundlers/vite/generate-bundle/css-assets.d.ts +1 -1
- package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +2 -0
- package/dist/bundlers/vite/generate-bundle/scoped-generator.d.ts +1 -0
- package/dist/bundlers/vite/hot-css-modules.d.ts +1 -1
- package/dist/bundlers/vite/source-candidates.d.ts +7 -2
- package/dist/bundlers/vite/web-css-compat.d.ts +3 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/css-source-resolvers.d.ts +9 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +3 -0
- package/dist/cli.js +3 -2
- package/dist/cli.mjs +2 -1
- package/dist/{context-CfXr3hWz.mjs → context-DzkSFEVL.mjs} +4 -4
- package/dist/{context-CRhUs_5e.js → context-y2BGCok4.js} +10 -10
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/generator/options.d.ts +8 -1
- package/dist/{v4-engine-BZP2462H.js → generator-Bz94KTkH.js} +229 -17
- package/dist/{v4-engine-CjjWONB0.mjs → generator-ROzBodj6.mjs} +185 -9
- package/dist/generator.js +7 -8
- package/dist/generator.mjs +1 -2
- package/dist/{gulp-CRjkPsbX.mjs → gulp-BKqMb_Ds.mjs} +4 -4
- package/dist/{gulp-JUfnhOOo.js → gulp-DfOLvYLs.js} +10 -10
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-DcIEXnf8.js → hmr-timing-DOTdH18A.js} +556 -170
- package/dist/{hmr-timing-BecOXMd8.mjs → hmr-timing-DwtYJdwb.mjs} +430 -56
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +2 -3
- package/dist/postcss.mjs +1 -2
- package/dist/presets.js +7 -6
- package/dist/presets.mjs +5 -4
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/{source-candidate-scan-signature-10tvdJVC.js → source-candidate-scan-signature-BrWuBTjY.js} +34 -6
- package/dist/{source-candidate-scan-signature-DAg8QSgh.mjs → source-candidate-scan-signature-CQ04hiox.mjs} +29 -7
- package/dist/{tailwindcss-BZjZZi60.js → tailwindcss-Dn5DVlkI.js} +55 -47
- package/dist/{tailwindcss-PA2jHHpx.mjs → tailwindcss-hzy_WaC9.mjs} +14 -6
- package/dist/{transform-wNEbcZeQ.mjs → transform-BgnNYkIG.mjs} +1 -1
- package/dist/{transform-B0BxX3XB.js → transform-DZQETx51.js} +1 -1
- package/dist/{vite-ClpyoD9e.mjs → vite-BimHmlSp.mjs} +824 -207
- package/dist/{vite-CHk7V9EA.js → vite-bztpcI8_.js} +871 -254
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +613 -63
- package/dist/{webpack-2s-TFhgm.mjs → webpack-CCapGlNg.mjs} +235 -38
- package/dist/{webpack-BhM4Hqla.js → webpack-XxBCIrBp.js} +276 -79
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +6 -6
- package/dist/generator-DaaFxR5V.js +0 -174
- package/dist/generator-DugIHBgl.mjs +0 -127
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
|
|
2
2
|
const require_framework = require("./framework.js");
|
|
3
|
-
const
|
|
4
|
-
const require_generator = require("./generator-DaaFxR5V.js");
|
|
3
|
+
const require_generator = require("./generator-Bz94KTkH.js");
|
|
5
4
|
const require_utils = require("./utils-D3h8j7Mk.js");
|
|
6
|
-
const require_context = require("./context-
|
|
7
|
-
const require_tailwindcss = require("./tailwindcss-
|
|
8
|
-
const require_hmr_timing = require("./hmr-timing-
|
|
9
|
-
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-
|
|
5
|
+
const require_context = require("./context-y2BGCok4.js");
|
|
6
|
+
const require_tailwindcss = require("./tailwindcss-Dn5DVlkI.js");
|
|
7
|
+
const require_hmr_timing = require("./hmr-timing-DOTdH18A.js");
|
|
8
|
+
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-BrWuBTjY.js");
|
|
10
9
|
require("./logger-TlKT3xmR.js");
|
|
11
10
|
let node_fs = require("node:fs");
|
|
12
11
|
node_fs = require_rolldown_runtime.__toESM(node_fs);
|
|
@@ -473,7 +472,7 @@ function createUniAppXBundleAssetSourceGetter(bundle) {
|
|
|
473
472
|
//#region src/bundlers/vite/generate-bundle/configured-css-sources.ts
|
|
474
473
|
function collectConfiguredTailwindV4CssSources(opts) {
|
|
475
474
|
const runtimeCssSources = opts.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssSources ?? [];
|
|
476
|
-
return
|
|
475
|
+
return require_generator.filterTailwindV4CssSourceRoots([...opts.tailwindcss?.v4?.cssSources ?? [], ...runtimeCssSources]) ?? [];
|
|
477
476
|
}
|
|
478
477
|
function collectExplicitTailwindV4CssEntries(opts) {
|
|
479
478
|
const entries = [
|
|
@@ -502,7 +501,7 @@ function collectConfiguredTailwindV4CssSourceEntries(opts, fallbackBase) {
|
|
|
502
501
|
}
|
|
503
502
|
for (const cssSource of collectConfiguredTailwindV4CssSources(opts)) {
|
|
504
503
|
if (typeof cssSource.css !== "string" || cssSource.css.length === 0) continue;
|
|
505
|
-
const base =
|
|
504
|
+
const base = require_generator.resolveTailwindV4CssSourceBase(cssSource, fallbackBase);
|
|
506
505
|
const file = typeof cssSource.file === "string" && cssSource.file.length > 0 ? cssSource.file : node_path.default.join(base, "tailwind.css");
|
|
507
506
|
const resolvedFile = node_path.default.isAbsolute(file) ? node_path.default.resolve(file) : node_path.default.resolve(base, file);
|
|
508
507
|
const key = `${resolvedFile}\0${cssSource.css}`;
|
|
@@ -547,8 +546,13 @@ function registerGeneratorDependencies$1(ctx, dependencies) {
|
|
|
547
546
|
}
|
|
548
547
|
//#endregion
|
|
549
548
|
//#region src/bundlers/vite/generate-bundle/css-assets.ts
|
|
550
|
-
function createCssAssetEmitter(context) {
|
|
549
|
+
function createCssAssetEmitter(context, bundle) {
|
|
551
550
|
return (fileName, source) => {
|
|
551
|
+
const existing = bundle?.[fileName];
|
|
552
|
+
if (existing && typeof existing === "object" && "type" in existing && existing.type === "asset") {
|
|
553
|
+
existing.source = source;
|
|
554
|
+
return existing;
|
|
555
|
+
}
|
|
552
556
|
if (context.emitFile) {
|
|
553
557
|
context.emitFile({
|
|
554
558
|
type: "asset",
|
|
@@ -658,9 +662,9 @@ function resolveReplayCssOutputFileFromSourceRoot(rootDir, file, sourceRoot) {
|
|
|
658
662
|
return outputFile;
|
|
659
663
|
}
|
|
660
664
|
function resolveViteCssOutputFile(file, opts, isWebGeneratorTarget, preserveCssExtension = false, styleOutputExtension, styleOutputFiles) {
|
|
661
|
-
if (isWebGeneratorTarget || preserveCssExtension || opts.cssMatcher(file) || !
|
|
662
|
-
const stem = file.replace(/[?#].*$/, "").replace(
|
|
663
|
-
return file.replace(
|
|
665
|
+
if (isWebGeneratorTarget || preserveCssExtension || opts.cssMatcher(file) || !CSS_SOURCE_OUTPUT_EXT_RE.test(file) || !require_source_candidate_scan_signature.isCSSRequest(file)) return file;
|
|
666
|
+
const stem = file.replace(/[?#].*$/, "").replace(CSS_SOURCE_OUTPUT_EXT_RE, "");
|
|
667
|
+
return file.replace(CSS_SOURCE_OUTPUT_EXT_RE, resolveMiniProgramStyleOutputExtension({
|
|
664
668
|
cssMatcher: opts.cssMatcher,
|
|
665
669
|
fallback: styleOutputExtension,
|
|
666
670
|
files: styleOutputFiles,
|
|
@@ -814,7 +818,7 @@ function collectCssConfigBaseCandidates(source, file, outputRoot, opts) {
|
|
|
814
818
|
const cssSourceCss = typeof cssSource.css === "string" ? normalizeCssSourceForCompare(cssSource.css) : void 0;
|
|
815
819
|
if (cssSourceFile && !isMatchingCssSourceFile(file, cssSourceFile, outputRoot) && cssSourceCss !== normalizedSource) continue;
|
|
816
820
|
addCandidate(cssSourceFile ? node_path.default.dirname(cssSourceFile) : void 0);
|
|
817
|
-
addCandidate(
|
|
821
|
+
addCandidate(require_generator.resolveTailwindV4CssSourceBase(cssSource, sourceBaseFallback));
|
|
818
822
|
}
|
|
819
823
|
return candidates;
|
|
820
824
|
}
|
|
@@ -1006,7 +1010,7 @@ function createCssTransformShareScope(file, rawSource) {
|
|
|
1006
1010
|
function createCssTransformShareScopeKey(opts, file, rawSource) {
|
|
1007
1011
|
if (opts.mainCssChunkMatcher(file, opts.appType)) return `main:${require_source_candidate_scan_signature.normalizeOutputPathKey(file)}`;
|
|
1008
1012
|
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator);
|
|
1009
|
-
if (
|
|
1013
|
+
if (require_generator.hasTailwindGeneratedCssMarkers(rawSource) || require_generator.hasTailwindSourceDirectives(rawSource, { importFallback: generatorOptions.importFallback })) return `source:${require_source_candidate_scan_signature.normalizeOutputPathKey(file)}`;
|
|
1010
1014
|
return createCssTransformShareScope(file, rawSource);
|
|
1011
1015
|
}
|
|
1012
1016
|
function createCssRuntimeSignature(runtimeSignature, generatorCandidateSignature) {
|
|
@@ -1548,10 +1552,10 @@ function resolveSfcStyleRequestFromKnownSource(sourceFile, sfcSource, styleSourc
|
|
|
1548
1552
|
}
|
|
1549
1553
|
function hasTailwindGenerationSource(source, options = {}) {
|
|
1550
1554
|
const allowRootDirectives = options.allowRootDirectives !== false;
|
|
1551
|
-
return
|
|
1555
|
+
return require_generator.hasTailwindNonRootGenerationDirectives(source, { importFallback: true }) || allowRootDirectives && require_generator.hasTailwindSourceDirectives(source, { importFallback: true }) || allowRootDirectives && require_generator.hasTailwindRootDirectives(source, { importFallback: true }) || require_generator.hasTailwindApplyDirective(source);
|
|
1552
1556
|
}
|
|
1553
1557
|
function hasTailwindGenerationSourceForFile(file, source) {
|
|
1554
|
-
if (
|
|
1558
|
+
if (require_generator.isTailwindV4CssEntry(file)) return hasTailwindGenerationSource(source);
|
|
1555
1559
|
return hasTailwindGenerationSource(source, { allowRootDirectives: false });
|
|
1556
1560
|
}
|
|
1557
1561
|
async function resolveSfcStyleSourceFromOutputFile(outputFile, snapshot, outputRoot, sourceRoot, cssMatcher, getSfcSource, debug) {
|
|
@@ -1657,6 +1661,10 @@ function resolveSourceStyleFileFromSiblingChunk(outputFile, snapshot, outputRoot
|
|
|
1657
1661
|
debug("source style sibling chunk skipped: no source style modules for %s -> %s", outputFile, siblingJsFile);
|
|
1658
1662
|
return;
|
|
1659
1663
|
}
|
|
1664
|
+
if (sourceFiles.length === 1) {
|
|
1665
|
+
debug("source style sibling chunk inferred from single css module: %s -> %s", outputFile, sourceFiles[0]);
|
|
1666
|
+
return sourceFiles[0];
|
|
1667
|
+
}
|
|
1660
1668
|
const scoredSources = sourceFiles.map((sourceFile) => ({
|
|
1661
1669
|
sourceFile,
|
|
1662
1670
|
score: scoreMatchingStyleFileBase(outputFile, sourceFile, outputRoot, sourceRoot)
|
|
@@ -1675,11 +1683,23 @@ function resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outputRoot
|
|
|
1675
1683
|
let sourceFile = resolveSourceStyleFileFromSiblingChunk(outputFile, snapshot, outputRoot, sourceRoot, debug);
|
|
1676
1684
|
let rawSource = sourceFile ? getSourceStyleSource?.(sourceFile) : void 0;
|
|
1677
1685
|
if (!sourceFile || !rawSource || !hasTailwindGenerationSourceForFile(sourceFile, rawSource)) {
|
|
1678
|
-
const
|
|
1686
|
+
const cachedSources = [...getSourceStyleSources?.() ?? []].filter(([file, source]) => CSS_SOURCE_OUTPUT_EXT_RE.test(file) && hasTailwindGenerationSourceForFile(file, source)).map(([file, source]) => ({
|
|
1679
1687
|
file,
|
|
1680
1688
|
source,
|
|
1681
|
-
score:
|
|
1682
|
-
|
|
1689
|
+
score: require_hmr_timing.scoreTailwindV4CssSourceFileMatch(outputFile, file, {
|
|
1690
|
+
outputRoot,
|
|
1691
|
+
projectRoot: sourceRoot
|
|
1692
|
+
})
|
|
1693
|
+
}));
|
|
1694
|
+
const configuredSources = [...configuredSourceEntries ?? []].filter(([file, source]) => CSS_SOURCE_OUTPUT_EXT_RE.test(file) && hasTailwindGenerationSourceForFile(file, source)).map(([file, source]) => ({
|
|
1695
|
+
file,
|
|
1696
|
+
source,
|
|
1697
|
+
score: require_hmr_timing.scoreTailwindV4CssSourceFileMatch(outputFile, file, {
|
|
1698
|
+
outputRoot,
|
|
1699
|
+
projectRoot: sourceRoot
|
|
1700
|
+
})
|
|
1701
|
+
}));
|
|
1702
|
+
const scoredSources = [...cachedSources, ...configuredSources].filter((item) => item.score > 0).sort((a, b) => b.score - a.score);
|
|
1683
1703
|
const bestScore = scoredSources[0]?.score;
|
|
1684
1704
|
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
1685
1705
|
if (bestSources.length === 1) {
|
|
@@ -1834,13 +1854,13 @@ function removeTailwindSourceMediaWrappersFallback(css) {
|
|
|
1834
1854
|
}
|
|
1835
1855
|
function removeTailwindEntryDirectivesFromCss(css) {
|
|
1836
1856
|
try {
|
|
1837
|
-
const source =
|
|
1857
|
+
const source = require_generator.stripGeneratorPlaceholderMarkers(css);
|
|
1838
1858
|
const root = _weapp_tailwindcss_postcss.postcss.parse(source);
|
|
1839
1859
|
const removedMediaWrappers = removeTailwindSourceMediaWrappersRoot(root);
|
|
1840
1860
|
const removedTailwindDirectives = (0, _weapp_tailwindcss_postcss.removeTailwindSourceDirectivesRoot)(root);
|
|
1841
1861
|
return removedMediaWrappers || removedTailwindDirectives ? root.toString() : source;
|
|
1842
1862
|
} catch {
|
|
1843
|
-
return
|
|
1863
|
+
return require_generator.removeTailwindSourceDirectives(removeTailwindSourceMediaWrappersFallback(css));
|
|
1844
1864
|
}
|
|
1845
1865
|
}
|
|
1846
1866
|
function removeUnsupportedMiniProgramCssImportsFallback(css, file) {
|
|
@@ -1862,9 +1882,11 @@ function normalizeInjectableCssForTargetWithImports(css, file) {
|
|
|
1862
1882
|
};
|
|
1863
1883
|
try {
|
|
1864
1884
|
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
1885
|
+
const changed = isMiniProgramStyleOutputFile(file) ? (0, _weapp_tailwindcss_postcss.removeUnsupportedMiniProgramCssImportsRoot)(root) : false;
|
|
1886
|
+
const importedStyleFiles = collectImportedStyleFilesRoot(root, file);
|
|
1865
1887
|
return {
|
|
1866
|
-
css:
|
|
1867
|
-
importedStyleFiles:
|
|
1888
|
+
css: changed ? root.toString() : css,
|
|
1889
|
+
importedStyleFiles: importedStyleFiles.size > 0 ? importedStyleFiles : collectImportedStyleFilesFallback(css, file)
|
|
1868
1890
|
};
|
|
1869
1891
|
} catch {
|
|
1870
1892
|
const fallbackCss = removeUnsupportedMiniProgramCssImportsFallback(css, file);
|
|
@@ -1898,12 +1920,16 @@ function collectImportedStyleFilesFromRequests(requests, targetFile) {
|
|
|
1898
1920
|
function collectImportedStyleFilesRoot(root, targetFile) {
|
|
1899
1921
|
return collectImportedStyleFilesFromRequests((0, _weapp_tailwindcss_postcss.collectCssImportRequestsRoot)(root), targetFile);
|
|
1900
1922
|
}
|
|
1923
|
+
function collectImportedStyleFilesFallback(css, targetFile) {
|
|
1924
|
+
return collectImportedStyleFilesFromRequests([...css.matchAll(/@import\s+(?:url\(\s*)?(?:"([^"]+)"|'([^']+)'|([^\s;)]+))/g)].map((match) => match[1] ?? match[2] ?? match[3]).filter((request) => typeof request === "string" && request.length > 0), targetFile);
|
|
1925
|
+
}
|
|
1901
1926
|
function collectImportedStyleFiles(css, targetFile) {
|
|
1902
1927
|
if (!css.includes("@import")) return /* @__PURE__ */ new Set();
|
|
1903
1928
|
try {
|
|
1904
|
-
|
|
1929
|
+
const imports = collectImportedStyleFilesRoot(_weapp_tailwindcss_postcss.postcss.parse(css), targetFile);
|
|
1930
|
+
return imports.size > 0 ? imports : collectImportedStyleFilesFallback(css, targetFile);
|
|
1905
1931
|
} catch {}
|
|
1906
|
-
return
|
|
1932
|
+
return collectImportedStyleFilesFallback(css, targetFile);
|
|
1907
1933
|
}
|
|
1908
1934
|
function normalizeMarkerOutputFile(markerFile, resolveViteProcessedCssOutputFile) {
|
|
1909
1935
|
return resolveViteProcessedCssOutputFile?.(markerFile) ?? markerFile;
|
|
@@ -2060,9 +2086,21 @@ function isUnscopedMiniProgramTailwindPreflightRule(rule) {
|
|
|
2060
2086
|
const declarations = rule.nodes?.filter((node) => node.type === "decl") ?? [];
|
|
2061
2087
|
return declarations.length > 0 && declarations.every(isMiniProgramTailwindPreflightDeclaration);
|
|
2062
2088
|
}
|
|
2089
|
+
function isScopedMiniProgramTailwindContentInitRule(rule) {
|
|
2090
|
+
const selectors = rule.selectors ?? [rule.selector];
|
|
2091
|
+
if (selectors.length === 0 || !selectors.every((selector) => {
|
|
2092
|
+
const normalized = normalizeCssSignatureValue(selector);
|
|
2093
|
+
return hasVueScopedAttr(selector) && MINI_PROGRAM_PREFLIGHT_SELECTORS.has(normalized);
|
|
2094
|
+
})) return false;
|
|
2095
|
+
const declarations = rule.nodes?.filter((node) => node.type === "decl") ?? [];
|
|
2096
|
+
return declarations.length > 0 && declarations.every((decl) => decl.prop === "--tw-content");
|
|
2097
|
+
}
|
|
2063
2098
|
function hasUnscopedMiniProgramTailwindPreflightRule(css) {
|
|
2064
2099
|
return /(?:^|[{}])\s*view\s*,\s*text\s*,\s*::after\s*,\s*::before\s*\{/.test(css);
|
|
2065
2100
|
}
|
|
2101
|
+
function hasScopedMiniProgramTailwindContentInitRule(css) {
|
|
2102
|
+
return /(?:^|[{}])[^{}]*\.data-v-[\w-][^{}]*\{\s*--tw-content\s*:/.test(css);
|
|
2103
|
+
}
|
|
2066
2104
|
function collectRootScopedComparableCssCoverage(cssSources) {
|
|
2067
2105
|
const rules = /* @__PURE__ */ new Set();
|
|
2068
2106
|
const atRules = /* @__PURE__ */ new Set();
|
|
@@ -2099,14 +2137,15 @@ function isRuleCoveredByRootCss(rule, coverage) {
|
|
|
2099
2137
|
return declarationKeys.length > 0 && selectors.every((selector) => {
|
|
2100
2138
|
const rootDeclarations = coverage.declarationsBySelector.get(normalizeCssSignatureValue(selector));
|
|
2101
2139
|
return rootDeclarations != null && declarationKeys.every((declaration) => rootDeclarations.has(declaration));
|
|
2102
|
-
})
|
|
2140
|
+
});
|
|
2103
2141
|
}
|
|
2104
2142
|
function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
2105
2143
|
if (!hasVueScopedAttr(css)) return css;
|
|
2106
2144
|
const hasScopedTailwindGeneratedCss = /tailwindcss v\d/i.test(css);
|
|
2107
2145
|
const hasUnscopedMiniProgramPreflight = hasUnscopedMiniProgramTailwindPreflightRule(css);
|
|
2146
|
+
const hasScopedMiniProgramContentInit = hasScopedMiniProgramTailwindContentInitRule(css);
|
|
2108
2147
|
const coverage = collectRootScopedComparableCssCoverage(rootSources);
|
|
2109
|
-
if (coverage.rules.size === 0 && coverage.atRules.size === 0 && !hasScopedTailwindGeneratedCss && !hasUnscopedMiniProgramPreflight) return css;
|
|
2148
|
+
if (coverage.rules.size === 0 && coverage.atRules.size === 0 && !hasScopedTailwindGeneratedCss && !hasUnscopedMiniProgramPreflight && !hasScopedMiniProgramContentInit) return css;
|
|
2110
2149
|
try {
|
|
2111
2150
|
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2112
2151
|
let changed = false;
|
|
@@ -2117,7 +2156,7 @@ function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
|
2117
2156
|
}
|
|
2118
2157
|
});
|
|
2119
2158
|
root.walkRules((rule) => {
|
|
2120
|
-
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule) || isUnscopedMiniProgramTailwindPreflightRule(rule)) {
|
|
2159
|
+
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule) || isUnscopedMiniProgramTailwindPreflightRule(rule) || isScopedMiniProgramTailwindContentInitRule(rule)) {
|
|
2121
2160
|
rule.remove();
|
|
2122
2161
|
changed = true;
|
|
2123
2162
|
}
|
|
@@ -2251,6 +2290,7 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records, options, bu
|
|
|
2251
2290
|
}) === true && !isMiniProgramStyleOutputFile(file) && matchedRootWebOutputTargets.length > 0) return matchedRootWebOutputTargets.includes(fileKey);
|
|
2252
2291
|
const explicitRootTargets = records.filter((record) => record.injectIntoMain === true).map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isRootStyleOutputFile(outputFile) && !isMiniProgramStyleOutputFile(outputFile));
|
|
2253
2292
|
const explicitWebCssTargets = records.filter((record) => record.injectIntoMain === true).map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isCssOutputFile(outputFile) && !isMiniProgramStyleOutputFile(outputFile));
|
|
2293
|
+
const explicitStyleOutputTargets = records.filter((record) => record.injectIntoMain === true).map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isRootStyleOutputFile(outputFile));
|
|
2254
2294
|
if (context !== void 0 && options.cssPipelineStrategy?.shouldPreferExplicitWebCssTargets?.({
|
|
2255
2295
|
...context,
|
|
2256
2296
|
explicitRootTargets,
|
|
@@ -2260,12 +2300,25 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records, options, bu
|
|
|
2260
2300
|
if (explicitRootTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2261
2301
|
if (records.some((record) => {
|
|
2262
2302
|
if (record.injectIntoMain !== true) return false;
|
|
2303
|
+
if (explicitStyleOutputTargets.length > 0) return explicitStyleOutputTargets.includes(fileKey) || isRootStyleOutputFile(file) && isViteProcessedRootStyleImportingTargets(bundle, file, explicitStyleOutputTargets) || isRootStyleOutputFile(file) && opts.mainCssChunkMatcher(file, opts.appType) && explicitStyleOutputTargets.some((outputFile) => opts.mainCssChunkMatcher(outputFile, opts.appType));
|
|
2263
2304
|
return isRootStyleOutputFile(file) || typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey;
|
|
2264
2305
|
})) return true;
|
|
2265
|
-
if (records.some((record) => record.injectIntoMain === true))
|
|
2306
|
+
if (records.some((record) => record.injectIntoMain === true)) {
|
|
2307
|
+
const matchedExplicitMiniProgramTargets = explicitStyleOutputTargets.filter((outputFile) => isMiniProgramStyleOutputFile(outputFile) && opts.mainCssChunkMatcher(outputFile, opts.appType));
|
|
2308
|
+
if (matchedExplicitMiniProgramTargets.length > 0) return matchedExplicitMiniProgramTargets.includes(fileKey);
|
|
2309
|
+
return isRootStyleOutputFile(file) && isMiniProgramStyleOutputFile(file);
|
|
2310
|
+
}
|
|
2266
2311
|
if (opts.mainCssChunkMatcher(file, opts.appType)) return true;
|
|
2267
2312
|
return isRootStyleOutputFile(file) && records.some((record) => record.injectIntoMain === true);
|
|
2268
2313
|
}
|
|
2314
|
+
function isViteProcessedRootStyleImportingTargets(bundle, file, targetFiles) {
|
|
2315
|
+
const targetFileSet = new Set(targetFiles.map(require_source_candidate_scan_signature.normalizeOutputPathKey));
|
|
2316
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2317
|
+
if (output.type !== "asset" || require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(bundleFile, output)) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2318
|
+
return [...collectImportedStyleFiles(readAssetSource$2(output), file)].some((importedFile) => targetFileSet.has(require_source_candidate_scan_signature.normalizeOutputPathKey(importedFile)));
|
|
2319
|
+
}
|
|
2320
|
+
return false;
|
|
2321
|
+
}
|
|
2269
2322
|
function isViteProcessedCssResultImported(record, importedStyleFiles) {
|
|
2270
2323
|
return importedStyleFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(record.file)) || typeof record.outputFile === "string" && importedStyleFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile));
|
|
2271
2324
|
}
|
|
@@ -2309,7 +2362,84 @@ function removeCssCoveredByImportedViteResults(css, importedCssSources) {
|
|
|
2309
2362
|
if (importedCssSources.length === 0) return css;
|
|
2310
2363
|
const importedCss = importedCssSources.map((source) => require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source).trim()).filter(Boolean).join("\n");
|
|
2311
2364
|
if (importedCss.length === 0) return css;
|
|
2312
|
-
return (
|
|
2365
|
+
return restoreCssImportAtRules(css, removeCssRulesCoveredBySources(css, [importedCss], { exactOnly: true }));
|
|
2366
|
+
}
|
|
2367
|
+
function removeCssRulesCoveredBySources(css, sources, options = {}) {
|
|
2368
|
+
if (sources.length === 0 || css.trim().length === 0) return css;
|
|
2369
|
+
const coverage = collectRootScopedComparableCssCoverage(sources);
|
|
2370
|
+
const coveredRuleCss = collectNormalizedRuleCss(sources);
|
|
2371
|
+
if (coverage.rules.size === 0 && coverage.declarationsBySelector.size === 0 && coveredRuleCss.size === 0) return css;
|
|
2372
|
+
try {
|
|
2373
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2374
|
+
let changed = false;
|
|
2375
|
+
root.walkRules((rule) => {
|
|
2376
|
+
if (!coveredRuleCss.has(normalizeCssSignatureValue(rule.toString())) && (options.exactOnly === true || !isRuleCoveredByRootCss(rule, coverage))) return;
|
|
2377
|
+
rule.remove();
|
|
2378
|
+
changed = true;
|
|
2379
|
+
});
|
|
2380
|
+
return changed ? root.toString() : css;
|
|
2381
|
+
} catch {
|
|
2382
|
+
return css;
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
function collectNormalizedRuleCss(sources) {
|
|
2386
|
+
const rules = /* @__PURE__ */ new Set();
|
|
2387
|
+
for (const source of sources) try {
|
|
2388
|
+
_weapp_tailwindcss_postcss.postcss.parse(source).walkRules((rule) => {
|
|
2389
|
+
rules.add(normalizeCssSignatureValue(rule.toString()));
|
|
2390
|
+
});
|
|
2391
|
+
} catch {}
|
|
2392
|
+
return rules;
|
|
2393
|
+
}
|
|
2394
|
+
function collectCssImportAtRuleCss(css) {
|
|
2395
|
+
if (!css.includes("@import")) return [];
|
|
2396
|
+
const fallbackImports = [...css.matchAll(/@import\s[^;]+;?/g)].map((match) => match[0]);
|
|
2397
|
+
if (fallbackImports.length > 0) return fallbackImports;
|
|
2398
|
+
try {
|
|
2399
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2400
|
+
const imports = [];
|
|
2401
|
+
root.each((node) => {
|
|
2402
|
+
if (node.type === "atrule" && node.name === "import") imports.push(node.toString());
|
|
2403
|
+
});
|
|
2404
|
+
return imports;
|
|
2405
|
+
} catch {
|
|
2406
|
+
return [];
|
|
2407
|
+
}
|
|
2408
|
+
}
|
|
2409
|
+
function parseCssImportRequest(importCss) {
|
|
2410
|
+
const trimmed = importCss.trim();
|
|
2411
|
+
if (!trimmed.startsWith("@import")) return;
|
|
2412
|
+
return (0, _weapp_tailwindcss_postcss.parseTailwindCssDirectiveRequest)(trimmed.slice(7).trim().replace(/;$/, "").trim());
|
|
2413
|
+
}
|
|
2414
|
+
function shouldRestoreCssImportAtRule(importCss, file) {
|
|
2415
|
+
if (file === void 0 || !isMiniProgramStyleOutputFile(file)) return true;
|
|
2416
|
+
const request = parseCssImportRequest(importCss);
|
|
2417
|
+
if (request === void 0) return false;
|
|
2418
|
+
if ((0, _weapp_tailwindcss_postcss.isMiniProgramLocalCssImportRequest)(request)) return true;
|
|
2419
|
+
return isStyleImportRequest(request) && !request.includes("/");
|
|
2420
|
+
}
|
|
2421
|
+
function restoreCssImportAtRules(source, filtered, file) {
|
|
2422
|
+
const imports = collectCssImportAtRuleCss(source).filter((importCss) => shouldRestoreCssImportAtRule(importCss, file));
|
|
2423
|
+
if (imports.length === 0) return filtered;
|
|
2424
|
+
const missingImports = imports.filter((importCss) => !filtered.includes(importCss));
|
|
2425
|
+
if (missingImports.length === 0) return filtered;
|
|
2426
|
+
return appendCss$1(missingImports.join("\n"), filtered);
|
|
2427
|
+
}
|
|
2428
|
+
function removeCommentOnlyAtRules(css) {
|
|
2429
|
+
if (!css.includes("@")) return css;
|
|
2430
|
+
try {
|
|
2431
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2432
|
+
let changed = false;
|
|
2433
|
+
root.walkAtRules((atRule) => {
|
|
2434
|
+
if (!atRule.nodes || atRule.nodes.length === 0) return;
|
|
2435
|
+
if (atRule.nodes.some((node) => node.type !== "comment")) return;
|
|
2436
|
+
atRule.remove();
|
|
2437
|
+
changed = true;
|
|
2438
|
+
});
|
|
2439
|
+
return changed ? root.toString() : css;
|
|
2440
|
+
} catch {
|
|
2441
|
+
return css;
|
|
2442
|
+
}
|
|
2313
2443
|
}
|
|
2314
2444
|
function collectImportedBundleCssSources(bundle, importedStyleFiles) {
|
|
2315
2445
|
if (importedStyleFiles.size === 0) return [];
|
|
@@ -2575,7 +2705,9 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2575
2705
|
if (missingCss.length === 0 || !hasNonCommentCss(missingCss) || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2576
2706
|
nextCss = appendCss$1(nextCss, missingCss);
|
|
2577
2707
|
}
|
|
2578
|
-
|
|
2708
|
+
const finalImportedCssSources = collectImportedBundleCssSources(bundle, collectImportedStyleFiles(originalSource, file));
|
|
2709
|
+
nextCss = transformCss(removeCommentOnlyAtRules(restoreCssImportAtRules(originalSource, removeCssRulesCoveredBySources(nextCss, finalImportedCssSources, { exactOnly: true }).trim(), file)), file);
|
|
2710
|
+
if (nextCss.trim() === originalSource.trim()) nextCss = originalSource;
|
|
2579
2711
|
if (nextCss !== originalSource) {
|
|
2580
2712
|
output.source = nextCss;
|
|
2581
2713
|
options.markCssAssetProcessed?.(output, file);
|
|
@@ -2701,7 +2833,7 @@ function resolveViteMemoryDebugStats(context) {
|
|
|
2701
2833
|
...context.getViteCssCacheStats?.(),
|
|
2702
2834
|
lastCssResultByFile: summarizeStringMapCache$1(context.lastCssResultByFile)
|
|
2703
2835
|
},
|
|
2704
|
-
tailwind: { v4:
|
|
2836
|
+
tailwind: { v4: require_generator.getTailwindV4IncrementalGenerateCacheStats() }
|
|
2705
2837
|
};
|
|
2706
2838
|
}
|
|
2707
2839
|
//#endregion
|
|
@@ -2860,14 +2992,15 @@ function getAssetFile(bundleFile, asset) {
|
|
|
2860
2992
|
return asset.fileName || bundleFile;
|
|
2861
2993
|
}
|
|
2862
2994
|
function finalizeWebviewCssCompat(bundle, options) {
|
|
2863
|
-
|
|
2995
|
+
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(options.opts.generator);
|
|
2996
|
+
if (generatorOptions.webCompat === false) return 0;
|
|
2864
2997
|
let transformed = 0;
|
|
2865
2998
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2866
2999
|
if (output.type !== "asset") continue;
|
|
2867
3000
|
const file = getAssetFile(bundleFile, output);
|
|
2868
3001
|
if (!options.opts.cssMatcher(file) || !/\.css(?:$|[?#])/i.test(file)) continue;
|
|
2869
3002
|
const rawSource = readAssetSource(output);
|
|
2870
|
-
const nextCss = (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)((0, _weapp_tailwindcss_postcss.transformWebCssCompat)(rawSource,
|
|
3003
|
+
const nextCss = (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)((0, _weapp_tailwindcss_postcss.transformWebCssCompat)(rawSource, generatorOptions.webCompat ?? true), { escapeMap: options.opts.escapeMap });
|
|
2871
3004
|
if (nextCss === rawSource) continue;
|
|
2872
3005
|
output.source = nextCss;
|
|
2873
3006
|
options.recordCssAssetResult?.(file, nextCss);
|
|
@@ -2903,7 +3036,7 @@ function resolveSingleCssImportOutputFile(targetFile, css) {
|
|
|
2903
3036
|
try {
|
|
2904
3037
|
_weapp_tailwindcss_postcss.postcss.parse(css).walkAtRules("import", (atRule) => {
|
|
2905
3038
|
if (importedFile !== void 0) return;
|
|
2906
|
-
const request =
|
|
3039
|
+
const request = require_generator.parseImportRequest(atRule.params);
|
|
2907
3040
|
if (!request || /^(?:https?:)?\/\//i.test(request) || request.startsWith("data:")) return;
|
|
2908
3041
|
const cleanRequest = request.replace(/[?#].*$/, "");
|
|
2909
3042
|
if (!/\.(?:css|wxss|acss|ttss|qss|jxss|tyss)$/i.test(cleanRequest)) return;
|
|
@@ -3327,7 +3460,7 @@ function resolveUniAppXStyleIsolationEnabled(root) {
|
|
|
3327
3460
|
//#region src/uni-app-x/vite.ts
|
|
3328
3461
|
let transformUVuePromise;
|
|
3329
3462
|
function loadTransformUVue() {
|
|
3330
|
-
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-
|
|
3463
|
+
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-DZQETx51.js")).then((mod) => mod.transformUVue));
|
|
3331
3464
|
return transformUVuePromise;
|
|
3332
3465
|
}
|
|
3333
3466
|
const preprocessorLangs = /* @__PURE__ */ new Set([
|
|
@@ -3401,14 +3534,14 @@ function createUniAppXPlugins(options) {
|
|
|
3401
3534
|
const parsed = query ?? parseVueRequest(id).query;
|
|
3402
3535
|
if (require_source_candidate_scan_signature.isCSSRequest(id) || parsed.vue && parsed.type === "style") {
|
|
3403
3536
|
if (isCssModuleExport(code)) return;
|
|
3404
|
-
const shouldGenerateCss =
|
|
3537
|
+
const shouldGenerateCss = require_generator.hasTailwindSourceDirectives(code, { importFallback: true }) || require_generator.hasTailwindApplyDirective(code);
|
|
3405
3538
|
rememberHarmonyApplySource(code);
|
|
3406
3539
|
const generatedCss = shouldGenerateCss ? await generateCss?.(id, code, hookContext) : void 0;
|
|
3407
3540
|
const styleCode = typeof generatedCss === "string" && generatedCss.trim().length > 0 ? generatedCss : code;
|
|
3408
3541
|
const cacheKey = `${mainCssChunkMatcher(id, appType) ? "1" : "0"}:${id}`;
|
|
3409
3542
|
let styleHandlerOptions = cssHandlerOptionsCache.get(cacheKey);
|
|
3410
3543
|
if (!styleHandlerOptions) {
|
|
3411
|
-
styleHandlerOptions =
|
|
3544
|
+
styleHandlerOptions = require_generator.omitUndefined({
|
|
3412
3545
|
isMainChunk: mainCssChunkMatcher(id, appType),
|
|
3413
3546
|
uniAppXCssTarget: resolveUniAppXCssTarget(id),
|
|
3414
3547
|
uniAppXUnsupported: resolvedUniAppXOptions.uvueUnsupported,
|
|
@@ -3471,7 +3604,7 @@ function createUniAppXPlugins(options) {
|
|
|
3471
3604
|
const transformUVue = await loadTransformUVue();
|
|
3472
3605
|
const enableComponentLocalStyle = shouldEnableComponentLocalStyle();
|
|
3473
3606
|
const enablePageLocalStyle = shouldEnableHarmonyPageLocalStyle();
|
|
3474
|
-
if (customAttributesEntities.length > 0 || disabledDefaultTemplateHandler || enableComponentLocalStyle || enablePageLocalStyle) return transformUVue(code, id, jsHandler, currentRuntimeSet,
|
|
3607
|
+
if (customAttributesEntities.length > 0 || disabledDefaultTemplateHandler || enableComponentLocalStyle || enablePageLocalStyle) return transformUVue(code, id, jsHandler, currentRuntimeSet, require_generator.omitUndefined({
|
|
3475
3608
|
...customAttributesEntities.length > 0 ? { customAttributesEntities } : {},
|
|
3476
3609
|
...disabledDefaultTemplateHandler ? { disabledDefaultTemplateHandler } : {},
|
|
3477
3610
|
...enableComponentLocalStyle ? { enableComponentLocalStyle } : {},
|
|
@@ -3785,7 +3918,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3785
3918
|
//#endregion
|
|
3786
3919
|
//#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
|
|
3787
3920
|
async function processRememberedCssReplay(options) {
|
|
3788
|
-
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3921
|
+
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, changedCssFiles = /* @__PURE__ */ new Set(), createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssRawSourceHashByFile = /* @__PURE__ */ new Map(), lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3789
3922
|
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
3790
3923
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
3791
3924
|
if (require_source_candidate_scan_signature.isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
|
|
@@ -3797,6 +3930,7 @@ async function processRememberedCssReplay(options) {
|
|
|
3797
3930
|
const rememberedCssSource = mergeRememberedCssSources(refreshedRememberedGroup.map((item) => item.remembered), outputFile);
|
|
3798
3931
|
if (!rememberedCssSource) continue;
|
|
3799
3932
|
const { rawSource, sourceFile } = rememberedCssSource;
|
|
3933
|
+
const generatorRawSource = isWebGeneratorTarget ? rawSource : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(rawSource, outputFile);
|
|
3800
3934
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
3801
3935
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(sourceFile));
|
|
3802
3936
|
const outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
@@ -3806,17 +3940,21 @@ async function processRememberedCssReplay(options) {
|
|
|
3806
3940
|
};
|
|
3807
3941
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, cssHandlerOptions);
|
|
3808
3942
|
const scopedSourceCandidateSourceGetter = createScopedSourceCandidateSourceGetter(outputFile, cssHandlerOptions);
|
|
3809
|
-
const scopedGeneratorRuntime = await createScopedGeneratorRuntime(outputFile, cssHandlerOptions, generatorRuntime,
|
|
3810
|
-
const cssRuntimeSignature = createCssRuntimeSignature(require_source_candidate_scan_signature.createCandidateSignature(scopedGeneratorRuntime), await require_source_candidate_scan_signature.createScopedGeneratorCandidateSignature(
|
|
3943
|
+
const scopedGeneratorRuntime = await createScopedGeneratorRuntime(outputFile, cssHandlerOptions, generatorRuntime, generatorRawSource, sourceFile);
|
|
3944
|
+
const cssRuntimeSignature = createCssRuntimeSignature(require_source_candidate_scan_signature.createCandidateSignature(scopedGeneratorRuntime), await require_source_candidate_scan_signature.createScopedGeneratorCandidateSignature(generatorRawSource, sourceFile, require_source_candidate_scan_signature.createCandidateSignature(scopedGeneratorRuntime), scopedSourceCandidateGetter, {
|
|
3811
3945
|
includeFallbackSignature: cssHandlerOptions.isMainChunk,
|
|
3812
3946
|
majorVersion: runtimeState.tailwindRuntime.majorVersion
|
|
3813
3947
|
}));
|
|
3814
3948
|
const cssRuntimeAffectingHash = cache.computeHash(require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(rawSource, "css"));
|
|
3815
3949
|
const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffectingHash);
|
|
3816
|
-
const
|
|
3950
|
+
const rawSourceHash = cache.computeHash(rawSource);
|
|
3951
|
+
const previousRawSourceHash = lastCssRawSourceHashByFile.get(outputFile);
|
|
3952
|
+
const cssSourceChanged = changedCssFiles.has(outputFile) || changedCssFiles.has(sourceFile) || previousRawSourceHash != null && previousRawSourceHash !== rawSourceHash;
|
|
3953
|
+
const previousCss = useIncrementalMode && !cssSourceChanged && getLastCssSourceHash(lastCssSourceHashByFile, outputFile) === cssRuntimeAffectingHash ? getLastCssResult(lastCssResultByFile, outputFile) : void 0;
|
|
3817
3954
|
const allRememberedSignaturesFresh = rememberedKeys.length > 0 && rememberedKeys.every((key) => getRememberedCssSignature?.(key) === rememberedCssRuntimeSignature);
|
|
3818
3955
|
if (bundleFiles.includes(outputFile) || bundleFiles.includes(sourceFile) || allRememberedSignaturesFresh) continue;
|
|
3819
|
-
const
|
|
3956
|
+
const sourceTraceSources = scopedSourceCandidateSourceGetter ? await require_source_candidate_scan_signature.createScopedGeneratorSourceTraceMap(generatorRawSource, sourceFile, scopedSourceCandidateSourceGetter) : void 0;
|
|
3957
|
+
const sourceTraceTokenSources = sourceTraceSources ? require_hmr_timing.createCssTokenSourceMap(sourceTraceSources, opts) : void 0;
|
|
3820
3958
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
3821
3959
|
opts,
|
|
3822
3960
|
tokenSources: sourceTraceTokenSources
|
|
@@ -3824,13 +3962,32 @@ async function processRememberedCssReplay(options) {
|
|
|
3824
3962
|
const shouldRecordRememberedReplayCss = useIncrementalMode || isNativeAppStyleTarget;
|
|
3825
3963
|
const shouldEmitRememberedReplayCssAsset = shouldRecordRememberedReplayCss;
|
|
3826
3964
|
if (!shouldRecordRememberedReplayCss) continue;
|
|
3965
|
+
if (!isWebGeneratorTarget && (0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(rawSource)) {
|
|
3966
|
+
cssTaskFactories.push(() => timeTask("css.replay", async () => {
|
|
3967
|
+
const start = performance.now();
|
|
3968
|
+
const css = annotateCss(require_hmr_timing.normalizeMiniProgramImportShell(rawSource));
|
|
3969
|
+
lastCssRawSourceHashByFile.set(outputFile, rawSourceHash);
|
|
3970
|
+
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, css, cssRuntimeAffectingHash);
|
|
3971
|
+
for (const key of rememberedKeys) setRememberedCssSignature?.(key, rememberedCssRuntimeSignature);
|
|
3972
|
+
recordCssAssetResult?.(outputFile, css);
|
|
3973
|
+
if (shouldEmitRememberedReplayCssAsset) {
|
|
3974
|
+
const replayAsset = emitOrReplayCssAsset(outputFile, css);
|
|
3975
|
+
if (replayAsset) markCssAssetProcessed?.(replayAsset, outputFile);
|
|
3976
|
+
}
|
|
3977
|
+
metrics.css.elapsed += measureElapsed(start);
|
|
3978
|
+
metrics.css.transformed++;
|
|
3979
|
+
onUpdate(outputFile, rawSource, css);
|
|
3980
|
+
debug("css replay preserve local import shell: %s", outputFile);
|
|
3981
|
+
}));
|
|
3982
|
+
continue;
|
|
3983
|
+
}
|
|
3827
3984
|
cssTaskFactories.push(() => timeTask("css.replay", async () => {
|
|
3828
3985
|
const start = performance.now();
|
|
3829
3986
|
const generated = await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
3830
3987
|
opts,
|
|
3831
3988
|
runtimeState,
|
|
3832
3989
|
runtime: scopedGeneratorRuntime,
|
|
3833
|
-
rawSource,
|
|
3990
|
+
rawSource: generatorRawSource,
|
|
3834
3991
|
file: sourceFile,
|
|
3835
3992
|
outputFile,
|
|
3836
3993
|
cssHandlerOptions,
|
|
@@ -3841,7 +3998,8 @@ async function processRememberedCssReplay(options) {
|
|
|
3841
3998
|
debug,
|
|
3842
3999
|
previousCss
|
|
3843
4000
|
});
|
|
3844
|
-
const css = annotateCss(generated?.css ?? (await styleHandler(
|
|
4001
|
+
const css = annotateCss(generated?.css ?? (await styleHandler(generatorRawSource, cssHandlerOptions)).css);
|
|
4002
|
+
lastCssRawSourceHashByFile.set(outputFile, rawSourceHash);
|
|
3845
4003
|
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, css, cssRuntimeAffectingHash);
|
|
3846
4004
|
for (const key of rememberedKeys) setRememberedCssSignature?.(key, rememberedCssRuntimeSignature);
|
|
3847
4005
|
if (generated) {
|
|
@@ -3852,6 +4010,10 @@ async function processRememberedCssReplay(options) {
|
|
|
3852
4010
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectReplayCssIntoMain,
|
|
3853
4011
|
outputFile
|
|
3854
4012
|
});
|
|
4013
|
+
if (outputFile !== sourceFile) recordViteProcessedCssAssetResult?.(outputFile, css, {
|
|
4014
|
+
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectReplayCssIntoMain,
|
|
4015
|
+
outputFile
|
|
4016
|
+
});
|
|
3855
4017
|
debug("css replay generated result: %s bytes=%d", outputFile, css.length);
|
|
3856
4018
|
}
|
|
3857
4019
|
if (shouldEmitRememberedReplayCssAsset) {
|
|
@@ -4110,37 +4272,119 @@ function createStableTextSignature(input) {
|
|
|
4110
4272
|
}
|
|
4111
4273
|
return (hash >>> 0).toString(36);
|
|
4112
4274
|
}
|
|
4275
|
+
function parseQuotedRequest(params) {
|
|
4276
|
+
const input = params.trim();
|
|
4277
|
+
const quote = input[0];
|
|
4278
|
+
if (quote !== "\"" && quote !== "'") return;
|
|
4279
|
+
let escaped = false;
|
|
4280
|
+
for (let index = 1; index < input.length; index++) {
|
|
4281
|
+
const char = input[index];
|
|
4282
|
+
if (escaped) {
|
|
4283
|
+
escaped = false;
|
|
4284
|
+
continue;
|
|
4285
|
+
}
|
|
4286
|
+
if (char === "\\") {
|
|
4287
|
+
escaped = true;
|
|
4288
|
+
continue;
|
|
4289
|
+
}
|
|
4290
|
+
if (char === quote) return input.slice(1, index);
|
|
4291
|
+
}
|
|
4292
|
+
}
|
|
4293
|
+
function parseSourceParams(params) {
|
|
4294
|
+
let input = params.trim();
|
|
4295
|
+
let negated = false;
|
|
4296
|
+
if (input.startsWith("not ")) {
|
|
4297
|
+
negated = true;
|
|
4298
|
+
input = input.slice(4).trim();
|
|
4299
|
+
}
|
|
4300
|
+
if (input.startsWith("inline(") && input.endsWith(")")) return {
|
|
4301
|
+
prefix: negated ? "source:inline:not" : "source:inline",
|
|
4302
|
+
value: input.slice(7, -1).trim()
|
|
4303
|
+
};
|
|
4304
|
+
const request = parseQuotedRequest(input);
|
|
4305
|
+
if (!request) return;
|
|
4306
|
+
return {
|
|
4307
|
+
prefix: negated ? "source:not" : "source",
|
|
4308
|
+
value: request
|
|
4309
|
+
};
|
|
4310
|
+
}
|
|
4311
|
+
function parseTailwindImportSource(params) {
|
|
4312
|
+
if (parseQuotedRequest(params) !== "tailwindcss") return;
|
|
4313
|
+
return /\bsource\(([^)]*)\)/.exec(params)?.[1]?.trim();
|
|
4314
|
+
}
|
|
4315
|
+
function hasExplicitTailwindV4Directive(source) {
|
|
4316
|
+
try {
|
|
4317
|
+
let found = false;
|
|
4318
|
+
_weapp_tailwindcss_postcss.postcss.parse(source).walkAtRules((rule) => {
|
|
4319
|
+
if (rule.name === "config" || rule.name === "source" || rule.name === "plugin" || rule.name === "custom-variant" || rule.name === "theme" || rule.name === "utility" || rule.name === "variant" || rule.name === "apply") {
|
|
4320
|
+
found = true;
|
|
4321
|
+
return false;
|
|
4322
|
+
}
|
|
4323
|
+
});
|
|
4324
|
+
return found;
|
|
4325
|
+
} catch {
|
|
4326
|
+
return false;
|
|
4327
|
+
}
|
|
4328
|
+
}
|
|
4113
4329
|
function collectTailwindV4SourceFingerprint(source) {
|
|
4114
4330
|
const tokens = /* @__PURE__ */ new Set();
|
|
4115
4331
|
const add = (prefix, value) => {
|
|
4116
4332
|
tokens.add(`${prefix}:${value.trim()}`);
|
|
4117
4333
|
};
|
|
4118
|
-
for (const match of source.matchAll(/@config\s+(["'])(.+?)\1\s*;?/g)) {
|
|
4119
|
-
const configRequest = match[2];
|
|
4120
|
-
add("config", node_path.default.basename(configRequest));
|
|
4121
|
-
add("config-request", configRequest.replace(/\\/g, "/"));
|
|
4122
|
-
}
|
|
4123
|
-
for (const match of source.matchAll(/@source\s+(not\s+)?(["'])(.+?)\2\s*;?/g)) add(match[1] ? "source:not" : "source", match[3]);
|
|
4124
|
-
for (const match of source.matchAll(/@plugin\s+(["'])(.+?)\1\s*(?:\{([\s\S]*?)\}|;)/g)) {
|
|
4125
|
-
const request = match[2];
|
|
4126
|
-
const optionBlock = match[3];
|
|
4127
|
-
add("plugin", request);
|
|
4128
|
-
add("plugin-request", request.replace(/\\/g, "/"));
|
|
4129
|
-
if (optionBlock !== void 0) add("plugin-options", `${request}:${createStableTextSignature(optionBlock)}`);
|
|
4130
|
-
}
|
|
4131
4334
|
try {
|
|
4132
|
-
_weapp_tailwindcss_postcss.postcss.parse(source)
|
|
4133
|
-
|
|
4134
|
-
if (
|
|
4135
|
-
|
|
4136
|
-
add("
|
|
4137
|
-
|
|
4335
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(source);
|
|
4336
|
+
root.walkAtRules((rule) => {
|
|
4337
|
+
if (rule.name === "import") {
|
|
4338
|
+
const sourceMode = parseTailwindImportSource(rule.params);
|
|
4339
|
+
if (sourceMode) add("import-source", sourceMode);
|
|
4340
|
+
return;
|
|
4341
|
+
}
|
|
4342
|
+
if (rule.name === "config") {
|
|
4343
|
+
const configRequest = parseQuotedRequest(rule.params);
|
|
4344
|
+
if (configRequest) {
|
|
4345
|
+
add("config", node_path.default.basename(configRequest));
|
|
4346
|
+
add("config-request", configRequest.replace(/\\/g, "/"));
|
|
4347
|
+
}
|
|
4348
|
+
return;
|
|
4349
|
+
}
|
|
4350
|
+
if (rule.name === "source") {
|
|
4351
|
+
const parsed = parseSourceParams(rule.params);
|
|
4352
|
+
if (parsed) add(parsed.prefix, parsed.value);
|
|
4353
|
+
return;
|
|
4354
|
+
}
|
|
4355
|
+
if (rule.name === "plugin") {
|
|
4356
|
+
const request = parseQuotedRequest(rule.params);
|
|
4357
|
+
if (!request) return;
|
|
4358
|
+
add("plugin", request);
|
|
4359
|
+
add("plugin-request", request.replace(/\\/g, "/"));
|
|
4360
|
+
if (rule.nodes?.length) {
|
|
4361
|
+
add("plugin-options", `${request}:${createStableTextSignature(rule.toString())}`);
|
|
4362
|
+
rule.walkDecls((decl) => {
|
|
4363
|
+
add("plugin-option", `${request}:${decl.prop}:${decl.value}`);
|
|
4364
|
+
});
|
|
4365
|
+
}
|
|
4366
|
+
return;
|
|
4367
|
+
}
|
|
4368
|
+
if (rule.name === "custom-variant") {
|
|
4369
|
+
const [name] = rule.params.trim().split(/\s+/, 1);
|
|
4370
|
+
if (name) add("custom-variant", name);
|
|
4371
|
+
return;
|
|
4372
|
+
}
|
|
4373
|
+
if (rule.name === "theme" || rule.name === "utility" || rule.name === "variant" || rule.name === "layer") {
|
|
4374
|
+
const [name] = rule.params.trim().split(/\s+/, 1);
|
|
4375
|
+
if (name) add("directive", name);
|
|
4376
|
+
}
|
|
4377
|
+
});
|
|
4378
|
+
root.walkDecls((decl) => {
|
|
4379
|
+
if (decl.prop.startsWith("--")) add("theme-token", decl.prop);
|
|
4380
|
+
});
|
|
4381
|
+
root.walkRules((rule) => {
|
|
4382
|
+
for (const selector of rule.selectors ?? []) {
|
|
4383
|
+
const match = /\.([_a-z][\w-]*)/i.exec(selector);
|
|
4384
|
+
if (match?.[1]) add("selector", match[1]);
|
|
4385
|
+
}
|
|
4138
4386
|
});
|
|
4139
4387
|
} catch {}
|
|
4140
|
-
for (const match of source.matchAll(/@custom-variant\s+([^{\s]+)/g)) add("custom-variant", match[1]);
|
|
4141
|
-
for (const match of source.matchAll(/@(?:theme|utility|variant|layer)\s+([^{;\s]+)/g)) add("directive", match[1]);
|
|
4142
|
-
for (const match of source.matchAll(/--[\w-]+(?=\s*:)/g)) add("theme-token", match[0]);
|
|
4143
|
-
for (const match of source.matchAll(/\.([_a-z][\w-]*)\s*[{,]/gi)) add("selector", match[1]);
|
|
4144
4388
|
return tokens;
|
|
4145
4389
|
}
|
|
4146
4390
|
function scoreConfiguredTailwindV4SourceForRawSource(rawSource, entrySource) {
|
|
@@ -4156,7 +4400,7 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4156
4400
|
const generationSources = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
4157
4401
|
if (generationSources.length <= 1) return generationSources[0];
|
|
4158
4402
|
const canMatchByOutputPath = Boolean(options.cwd || options.outputRoot || options.projectRoot);
|
|
4159
|
-
const selectByOutputPath = (candidates) => {
|
|
4403
|
+
const selectByOutputPath = (candidates, shouldUseScore = (score) => score > 0) => {
|
|
4160
4404
|
if (!canMatchByOutputPath) return;
|
|
4161
4405
|
const scoredSources = candidates.map((entry) => ({
|
|
4162
4406
|
entry,
|
|
@@ -4165,7 +4409,7 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4165
4409
|
outputRoot: options.outputRoot,
|
|
4166
4410
|
projectRoot: options.projectRoot
|
|
4167
4411
|
})
|
|
4168
|
-
})).filter((item) => item.score
|
|
4412
|
+
})).filter((item) => shouldUseScore(item.score)).sort((a, b) => b.score - a.score);
|
|
4169
4413
|
const bestScore = scoredSources[0]?.score;
|
|
4170
4414
|
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
4171
4415
|
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
@@ -4179,10 +4423,12 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4179
4423
|
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
4180
4424
|
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
4181
4425
|
};
|
|
4426
|
+
const explicitSources = generationSources.filter((entry) => hasExplicitTailwindV4Directive(entry.source));
|
|
4427
|
+
const candidates = explicitSources.length === 1 ? explicitSources : generationSources;
|
|
4428
|
+
const directoryIndexOutputPathMatched = selectByOutputPath(candidates, (score) => score >= 25e3 && score < 5e4);
|
|
4429
|
+
if (directoryIndexOutputPathMatched) return directoryIndexOutputPathMatched;
|
|
4182
4430
|
const rawSourceMatched = selectByRawSourceFingerprint(generationSources);
|
|
4183
4431
|
if (rawSourceMatched) return rawSourceMatched;
|
|
4184
|
-
const explicitSources = generationSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
4185
|
-
const candidates = explicitSources.length === 1 ? explicitSources : generationSources;
|
|
4186
4432
|
const outputPathMatched = selectByOutputPath(candidates);
|
|
4187
4433
|
if (outputPathMatched) return outputPathMatched;
|
|
4188
4434
|
if (candidates.length === 1) return candidates[0];
|
|
@@ -4201,8 +4447,7 @@ function createTemporaryCssAssetSourceResolver(entries) {
|
|
|
4201
4447
|
const seenEntryFiles = /* @__PURE__ */ new Set();
|
|
4202
4448
|
const queuedEntries = entries.filter((entry) => {
|
|
4203
4449
|
const entryFile = normalizeCssSourceKey(entry.file);
|
|
4204
|
-
|
|
4205
|
-
if (outputFile === entryFile || !outputFile.includes("/") || seenEntryFiles.has(entryFile)) return false;
|
|
4450
|
+
if (normalizeCssSourceKey(entry.outputFile) === entryFile || seenEntryFiles.has(entryFile)) return false;
|
|
4206
4451
|
seenEntryFiles.add(entryFile);
|
|
4207
4452
|
return true;
|
|
4208
4453
|
});
|
|
@@ -4215,14 +4460,18 @@ function createTemporaryCssAssetSourceResolver(entries) {
|
|
|
4215
4460
|
},
|
|
4216
4461
|
resolve(outputFile, rawSource) {
|
|
4217
4462
|
if (!isTemporaryCssAssetFile(outputFile)) return;
|
|
4218
|
-
const
|
|
4463
|
+
const outputFileKey = normalizeCssSourceKey(outputFile);
|
|
4464
|
+
const unusedEntries = queuedEntries.filter((item) => !usedEntryFiles.has(normalizeCssSourceKey(item.file)));
|
|
4465
|
+
const matchedOutputEntries = unusedEntries.filter((item) => normalizeCssSourceKey(item.outputFile) === outputFileKey);
|
|
4466
|
+
const usesMatchedOutputEntries = matchedOutputEntries.length > 0;
|
|
4467
|
+
const availableEntries = matchedOutputEntries.length > 0 ? matchedOutputEntries : unusedEntries.filter((item) => normalizeCssSourceKey(item.outputFile).includes("/"));
|
|
4219
4468
|
const scoredEntries = rawSource ? availableEntries.map((entry) => ({
|
|
4220
4469
|
entry,
|
|
4221
4470
|
score: scoreConfiguredTailwindV4SourceForRawSource(rawSource, entry.source)
|
|
4222
4471
|
})).filter((item) => item.score > 0).sort((a, b) => b.score - a.score) : [];
|
|
4223
4472
|
const bestScore = scoredEntries[0]?.score;
|
|
4224
4473
|
const bestEntries = bestScore ? scoredEntries.filter((item) => item.score === bestScore) : [];
|
|
4225
|
-
const entry = bestEntries.length === 1 ? bestEntries[0]?.entry : availableEntries.find((item) => hasTailwindGenerationSource(item.source));
|
|
4474
|
+
const entry = bestEntries.length === 1 ? bestEntries[0]?.entry : usesMatchedOutputEntries || rawSource == null ? availableEntries.find((item) => hasTailwindGenerationSource(item.source)) : void 0;
|
|
4226
4475
|
if (!entry) return;
|
|
4227
4476
|
usedEntryFiles.add(normalizeCssSourceKey(entry.file));
|
|
4228
4477
|
return {
|
|
@@ -4396,6 +4645,19 @@ function resolveSourceRootFromBundleGraph(config, bundle) {
|
|
|
4396
4645
|
return sourceRoots.size === 1 ? [...sourceRoots][0] : void 0;
|
|
4397
4646
|
}
|
|
4398
4647
|
//#endregion
|
|
4648
|
+
//#region src/bundlers/vite/web-css-compat.ts
|
|
4649
|
+
/**
|
|
4650
|
+
* Web target 的 Tailwind 兼容转换由 generator-css 负责;Vite 外层只处理非 Web 生成目标
|
|
4651
|
+
* 落到 WebView 产物时的最终兼容需求,避免同一份 CSS 在 dev/build 中被重复解析转换。
|
|
4652
|
+
*/
|
|
4653
|
+
function shouldApplyViteWebCssCompat(context, strategy) {
|
|
4654
|
+
if (strategy?.shouldApplyWebCssCompat?.(context) !== true) return false;
|
|
4655
|
+
return !context.currentGeneratorBranch.isWeb || context.currentGeneratorOptions.webCompat !== void 0;
|
|
4656
|
+
}
|
|
4657
|
+
function resolveViteWebCssCompatOptions(context) {
|
|
4658
|
+
return context.currentGeneratorBranch.isWeb ? context.currentGeneratorOptions.webCompat : context.currentGeneratorOptions.webCompat ?? true;
|
|
4659
|
+
}
|
|
4660
|
+
//#endregion
|
|
4399
4661
|
//#region src/bundlers/vite/generate-bundle.ts
|
|
4400
4662
|
function inferPlatformFromViteOutDir$1(outDir) {
|
|
4401
4663
|
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
@@ -4407,6 +4669,7 @@ function createGenerateBundleHook(context) {
|
|
|
4407
4669
|
const state = require_source_candidate_scan_signature.createBundleBuildState();
|
|
4408
4670
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
4409
4671
|
const lastCssSourceHashByFile = /* @__PURE__ */ new Map();
|
|
4672
|
+
const lastCssRawSourceHashByFile = /* @__PURE__ */ new Map();
|
|
4410
4673
|
let currentOutDir;
|
|
4411
4674
|
let currentSubpackageRoots;
|
|
4412
4675
|
const createInitialCssPipelineContext = (file) => {
|
|
@@ -4479,14 +4742,14 @@ function createGenerateBundleHook(context) {
|
|
|
4479
4742
|
resolveStylePlatform: () => generatorPlatform
|
|
4480
4743
|
};
|
|
4481
4744
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
4482
|
-
const shouldApplyWebCssCompat = context.cssPipelineStrategy
|
|
4745
|
+
const shouldApplyWebCssCompat = shouldApplyViteWebCssCompat(cssPipelineContext, context.cssPipelineStrategy);
|
|
4483
4746
|
const transformWebTargetCss = (css) => {
|
|
4484
4747
|
return context.cssPipelineStrategy?.transformGeneratedCss?.(css, {
|
|
4485
4748
|
...cssPipelineContext,
|
|
4486
|
-
defaultWebCssCompat: (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value,
|
|
4749
|
+
defaultWebCssCompat: (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value, resolveViteWebCssCompatOptions(cssPipelineContext)),
|
|
4487
4750
|
removeScopedPreflight: (value) => value,
|
|
4488
4751
|
shouldApplyWebCssCompat
|
|
4489
|
-
}) ?? (shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css,
|
|
4752
|
+
}) ?? (shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, resolveViteWebCssCompatOptions(cssPipelineContext)) : css);
|
|
4490
4753
|
};
|
|
4491
4754
|
const isNativeAppStyleTarget = context.cssPipelineStrategy?.isNativeAppStyleTarget?.(cssPipelineContext) === true;
|
|
4492
4755
|
const isHarmonyAppStyleTarget = context.cssPipelineStrategy?.isHarmonyAppStyleTarget?.(cssPipelineContext) === true;
|
|
@@ -4497,6 +4760,9 @@ function createGenerateBundleHook(context) {
|
|
|
4497
4760
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
4498
4761
|
const outDir = resolvedConfig?.build?.outDir ? node_path.default.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
|
|
4499
4762
|
const defaultStyleOutputExtension = resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) });
|
|
4763
|
+
const normalizeMiniProgramGeneratorRawSource = (source, outputFile) => {
|
|
4764
|
+
return isWebGeneratorTarget ? source : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(source, outputFile);
|
|
4765
|
+
};
|
|
4500
4766
|
await runtimeState.readyPromise;
|
|
4501
4767
|
debug("start");
|
|
4502
4768
|
onStart();
|
|
@@ -4522,7 +4788,7 @@ function createGenerateBundleHook(context) {
|
|
|
4522
4788
|
timingDetails[name] = (timingDetails[name] ?? 0) + Math.max(0, performance.now() - startedAt);
|
|
4523
4789
|
};
|
|
4524
4790
|
const timeTask = createBundleTaskTimer(recordTimingDetail);
|
|
4525
|
-
const emitOrReplayCssAsset = createCssAssetEmitter(this);
|
|
4791
|
+
const emitOrReplayCssAsset = createCssAssetEmitter(this, bundle);
|
|
4526
4792
|
const metrics = createEmptyMetrics();
|
|
4527
4793
|
const envFlags = resolveGenerateBundleEnvFlags();
|
|
4528
4794
|
const bundleFiles = Object.keys(bundle);
|
|
@@ -4532,8 +4798,8 @@ function createGenerateBundleHook(context) {
|
|
|
4532
4798
|
tailwindcssRuntimeOptions: {
|
|
4533
4799
|
...opts.tailwindcssRuntimeOptions ?? {},
|
|
4534
4800
|
tailwindcss: {
|
|
4535
|
-
...
|
|
4536
|
-
...
|
|
4801
|
+
...require_generator.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions) ?? {},
|
|
4802
|
+
...require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options) ?? {}
|
|
4537
4803
|
}
|
|
4538
4804
|
}
|
|
4539
4805
|
}, opts.tailwindcssBasedir ?? rootDir);
|
|
@@ -4562,8 +4828,8 @@ function createGenerateBundleHook(context) {
|
|
|
4562
4828
|
const cleanFile = file.replace(/[?#].*$/, "");
|
|
4563
4829
|
return normalizeSystemAliasPathKey(require_source_candidate_scan_signature.normalizeOutputPathKey(node_path.default.isAbsolute(cleanFile) ? node_path.default.resolve(cleanFile) : node_path.default.resolve(opts.tailwindcssBasedir ?? rootDir, cleanFile)));
|
|
4564
4830
|
};
|
|
4565
|
-
const runtimeTailwindcssOptions =
|
|
4566
|
-
const tailwindRuntimeOptions =
|
|
4831
|
+
const runtimeTailwindcssOptions = require_generator.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
|
|
4832
|
+
const tailwindRuntimeOptions = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
|
|
4567
4833
|
const configuredTailwindV4CssSourceFileKeysForScope = new Set(configuredTailwindV4CssSourceEntriesForScope.map((entry) => normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)));
|
|
4568
4834
|
const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set([
|
|
4569
4835
|
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
@@ -4589,15 +4855,20 @@ function createGenerateBundleHook(context) {
|
|
|
4589
4855
|
});
|
|
4590
4856
|
};
|
|
4591
4857
|
const resolveConfiguredTailwindV4CssEntryOutputFile = (sourceFile) => resolveViteCssPipelineOutputFile(sourceFile, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4592
|
-
const
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
if (!(context.cssPipelineStrategy?.shouldSelectConfiguredCssEntryRootSource?.({
|
|
4858
|
+
const shouldSelectConfiguredRootCssOutput = (outputFile) => {
|
|
4859
|
+
if (!opts.cssMatcher(outputFile) || !isRootStyleOutputFile(outputFile)) return false;
|
|
4860
|
+
return context.cssPipelineStrategy?.shouldSelectConfiguredCssEntryRootSource?.({
|
|
4596
4861
|
...cssPipelineContext,
|
|
4597
4862
|
isRootStyleOutputFile,
|
|
4598
4863
|
outputFile
|
|
4599
|
-
}) === true || cssPipelineContext.currentGeneratorBranch.isWeb
|
|
4600
|
-
|
|
4864
|
+
}) === true || cssPipelineContext.currentGeneratorBranch.isWeb;
|
|
4865
|
+
};
|
|
4866
|
+
const selectConfiguredRootCssSourceEntry = (outputFile, entries, originalFileNames) => {
|
|
4867
|
+
const matchedOriginalEntry = entries.find((entry) => originalFileNames?.some((originalFile) => normalizeConfiguredTailwindV4CssEntryFileKey(originalFile) === normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)) === true);
|
|
4868
|
+
if (matchedOriginalEntry && outputFile.replace(/[?#].*$/, "").endsWith(".css")) return matchedOriginalEntry;
|
|
4869
|
+
if (!shouldSelectConfiguredRootCssOutput(outputFile)) return;
|
|
4870
|
+
const shouldRequireExplicitConfiguredEntry = !cssPipelineContext.currentGeneratorBranch.isWeb && opts.cssMatcher(outputFile) && isRootStyleOutputFile(outputFile);
|
|
4871
|
+
const generationEntries = entries.filter((entry) => hasTailwindGenerationSource(entry.source) && (!shouldRequireExplicitConfiguredEntry || configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(entry.file))));
|
|
4601
4872
|
if (generationEntries.length <= 1) return generationEntries[0];
|
|
4602
4873
|
const rootOutputEntries = generationEntries.filter((entry) => {
|
|
4603
4874
|
return !require_source_candidate_scan_signature.normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")).includes("/");
|
|
@@ -4610,6 +4881,35 @@ function createGenerateBundleHook(context) {
|
|
|
4610
4881
|
if (mainPackageEntries.length === 1) return mainPackageEntries[0];
|
|
4611
4882
|
}
|
|
4612
4883
|
};
|
|
4884
|
+
const resolveConfiguredRootCssSourceStyle = (outputFile, entries, originalFileNames) => {
|
|
4885
|
+
const entry = selectConfiguredRootCssSourceEntry(outputFile, entries, originalFileNames);
|
|
4886
|
+
return entry ? {
|
|
4887
|
+
outputFile,
|
|
4888
|
+
rawSource: entry.source,
|
|
4889
|
+
sourceFile: entry.file
|
|
4890
|
+
} : void 0;
|
|
4891
|
+
};
|
|
4892
|
+
const shouldKeepCurrentRootMiniProgramStyleOutputAsImportShell = (outputFile, css) => {
|
|
4893
|
+
const normalizedOutputFile = require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, ""));
|
|
4894
|
+
return opts.cssMatcher(outputFile) && isMiniProgramStyleOutputFile(outputFile) && !normalizedOutputFile.includes("/") && shouldKeepRootMiniProgramStyleAsImportShell(context.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
|
|
4895
|
+
...cssPipelineContext,
|
|
4896
|
+
css,
|
|
4897
|
+
file: outputFile
|
|
4898
|
+
}));
|
|
4899
|
+
};
|
|
4900
|
+
const shouldKeepCurrentRootCssOutputForConfiguredSource = (sourceFile, outputFile) => {
|
|
4901
|
+
const normalizedOutputFile = require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, ""));
|
|
4902
|
+
const isRootConfiguredStyleOutput = normalizedOutputFile.endsWith(".css") ? isRootStyleOutputFile(outputFile) : isMiniProgramStyleOutputFile(outputFile) && !normalizedOutputFile.includes("/");
|
|
4903
|
+
return typeof sourceFile === "string" && opts.cssMatcher(outputFile) && isRootConfiguredStyleOutput && !shouldKeepCurrentRootMiniProgramStyleOutputAsImportShell(outputFile) && configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(sourceFile));
|
|
4904
|
+
};
|
|
4905
|
+
const hasExplicitConfiguredRootCssEntryForOutput = (outputFile) => {
|
|
4906
|
+
if (cssPipelineContext.currentGeneratorBranch.isWeb || !opts.cssMatcher(outputFile) || !isRootStyleOutputFile(outputFile) || !shouldSelectConfiguredRootCssOutput(outputFile)) return false;
|
|
4907
|
+
return configuredTailwindV4CssSourceEntriesForScope.some((entry) => {
|
|
4908
|
+
if (!configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(entry.file))) return false;
|
|
4909
|
+
const entryOutputFile = resolveConfiguredTailwindV4CssEntryOutputFile(entry.file);
|
|
4910
|
+
return !require_source_candidate_scan_signature.normalizeOutputPathKey(entryOutputFile.replace(/[?#].*$/, "")).includes("/") || currentSubpackageRoots != null && !isSubpackageOutputFile(entryOutputFile, currentSubpackageRoots);
|
|
4911
|
+
});
|
|
4912
|
+
};
|
|
4613
4913
|
const { createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, shouldExcludeSubpackageSourceCandidates, shouldInjectCssIntoMainFromOutput } = createSubpackageSourceCandidateScope({
|
|
4614
4914
|
cssSourceFiles: configuredTailwindV4CssSourceEntriesForScope.map((entry) => entry.file),
|
|
4615
4915
|
getSourceCandidateSourcesForEntries,
|
|
@@ -4661,8 +4961,8 @@ function createGenerateBundleHook(context) {
|
|
|
4661
4961
|
}) : await context.ensureRuntimeClassSet(envFlags.forceRuntimeRefreshByEnv);
|
|
4662
4962
|
const shouldFilterTailwindV4MiniProgramCandidates = require_generator.shouldUseMiniProgramCssBranch(generatorBranch);
|
|
4663
4963
|
const collectedGeneratorCandidates = /* @__PURE__ */ new Set([...runtime, ...sourceCandidates]);
|
|
4664
|
-
const filteredGeneratorCandidates = shouldFilterTailwindV4MiniProgramCandidates ?
|
|
4665
|
-
const filteredSourceCandidates = shouldFilterTailwindV4MiniProgramCandidates ?
|
|
4964
|
+
const filteredGeneratorCandidates = shouldFilterTailwindV4MiniProgramCandidates ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(collectedGeneratorCandidates) : collectedGeneratorCandidates;
|
|
4965
|
+
const filteredSourceCandidates = shouldFilterTailwindV4MiniProgramCandidates ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(sourceCandidates) : sourceCandidates;
|
|
4666
4966
|
const transformRuntime = shouldFilterTailwindV4MiniProgramCandidates ? new Set(runtime) : new Set(filteredGeneratorCandidates);
|
|
4667
4967
|
const generatorRuntime = filteredGeneratorCandidates;
|
|
4668
4968
|
const cssEntries = snapshot.entries.filter((entry) => entry.type === "css" && entry.output.type === "asset");
|
|
@@ -4671,7 +4971,8 @@ function createGenerateBundleHook(context) {
|
|
|
4671
4971
|
const mainCssEntry = cssEntries.find((entry) => getCssHandlerOptions(entry.file).isMainChunk) ?? cssEntries[0];
|
|
4672
4972
|
if (mainCssEntry) {
|
|
4673
4973
|
const mainCssRawSource = typeof mainCssEntry.output.source === "string" ? mainCssEntry.output.source : node_buffer.Buffer.from(mainCssEntry.output.source).toString();
|
|
4674
|
-
if (!
|
|
4974
|
+
if (!require_generator.hasTailwindApplyDirective(mainCssRawSource)) {
|
|
4975
|
+
const validationRawSource = normalizeMiniProgramGeneratorRawSource(mainCssRawSource, mainCssEntry.file);
|
|
4675
4976
|
const generatedCssSources = /* @__PURE__ */ new Set();
|
|
4676
4977
|
for (const [, record] of getViteProcessedCssAssetResults?.() ?? []) if (typeof record === "string") generatedCssSources.add(record);
|
|
4677
4978
|
else if (typeof record?.css === "string") generatedCssSources.add(record.css);
|
|
@@ -4679,7 +4980,7 @@ function createGenerateBundleHook(context) {
|
|
|
4679
4980
|
opts,
|
|
4680
4981
|
runtimeState,
|
|
4681
4982
|
candidates: filteredSourceCandidates,
|
|
4682
|
-
rawSource:
|
|
4983
|
+
rawSource: validationRawSource,
|
|
4683
4984
|
generatedCssSources,
|
|
4684
4985
|
file: mainCssEntry.file,
|
|
4685
4986
|
cssHandlerOptions: getCssHandlerOptions(mainCssEntry.file),
|
|
@@ -4697,6 +4998,9 @@ function createGenerateBundleHook(context) {
|
|
|
4697
4998
|
const cssExtensionByStem = collectCssExtensionByStem(bundleFiles, opts.cssMatcher);
|
|
4698
4999
|
const jsImportedCssFiles = collectJsImportedCssFiles(snapshot);
|
|
4699
5000
|
const runtimeLinkedCssFiles = /* @__PURE__ */ new Set([...collectRuntimeLinkedCssFiles(snapshot, cssExtensionByStem, defaultStyleOutputExtension), ...jsImportedCssFiles]);
|
|
5001
|
+
const shouldQueueTemporaryCssSourceEntry = (sourceFile, outputFile) => {
|
|
5002
|
+
return require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/") || typeof sourceFile === "string" && shouldSelectConfiguredRootCssOutput(outputFile) && configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(sourceFile));
|
|
5003
|
+
};
|
|
4700
5004
|
rememberRuntimeLinkedCssSources({
|
|
4701
5005
|
bundleFiles,
|
|
4702
5006
|
debug,
|
|
@@ -4719,7 +5023,7 @@ function createGenerateBundleHook(context) {
|
|
|
4719
5023
|
...[...runtimeLinkedCssFiles].filter((file) => !snapshot.sourceHashByFile.has(file)).map((file) => {
|
|
4720
5024
|
const outputFile = resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4721
5025
|
const inferredSourceStyle = resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outDir, sourceRoot, getCssSource, jsImportedCssFiles.has(file) ? getSourceCandidateSources : void 0, getConfiguredTailwindV4CssSourceEntries().map((entry) => [entry.file, entry.source]), debug);
|
|
4722
|
-
return inferredSourceStyle && currentSubpackageRoots ? {
|
|
5026
|
+
return inferredSourceStyle && currentSubpackageRoots && shouldQueueTemporaryCssSourceEntry(inferredSourceStyle.sourceFile, outputFile) ? {
|
|
4723
5027
|
file: inferredSourceStyle.sourceFile,
|
|
4724
5028
|
outputFile,
|
|
4725
5029
|
source: inferredSourceStyle.rawSource
|
|
@@ -4729,10 +5033,11 @@ function createGenerateBundleHook(context) {
|
|
|
4729
5033
|
file: remembered.sourceFile,
|
|
4730
5034
|
outputFile: remembered.outputFile,
|
|
4731
5035
|
source: remembered.rawSource
|
|
4732
|
-
})),
|
|
5036
|
+
})).filter((entry) => shouldQueueTemporaryCssSourceEntry(entry.file, entry.outputFile)),
|
|
4733
5037
|
...getConfiguredTailwindV4CssSourceEntries().map((entry) => {
|
|
4734
5038
|
const outputFile = resolveMatchedCssSourceOutputFile(entry.file);
|
|
4735
|
-
|
|
5039
|
+
const isExplicitConfiguredEntry = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(entry.file));
|
|
5040
|
+
return outputFile && (require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/") || isExplicitConfiguredEntry && shouldSelectConfiguredRootCssOutput(outputFile)) ? {
|
|
4736
5041
|
file: entry.file,
|
|
4737
5042
|
outputFile,
|
|
4738
5043
|
source: entry.source
|
|
@@ -4909,6 +5214,7 @@ function createGenerateBundleHook(context) {
|
|
|
4909
5214
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4910
5215
|
}));
|
|
4911
5216
|
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
5217
|
+
if (hasExplicitConfiguredRootCssEntryForOutput(outputFile) && !configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return false;
|
|
4912
5218
|
if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
|
|
4913
5219
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4914
5220
|
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
@@ -4925,10 +5231,17 @@ function createGenerateBundleHook(context) {
|
|
|
4925
5231
|
hasUsableRememberedTailwindSource = false;
|
|
4926
5232
|
}
|
|
4927
5233
|
let outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4928
|
-
|
|
5234
|
+
const configuredRootSourceStyle = resolveConfiguredRootCssSourceStyle(outputFile, getConfiguredTailwindV4CssSourceEntries(), originalSource.originalFileNames);
|
|
5235
|
+
const hasExplicitRememberedRootSource = rememberedCssSources.some((remembered) => configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile)));
|
|
5236
|
+
if (configuredRootSourceStyle && (!hasUsableRememberedTailwindSource || !hasExplicitRememberedRootSource)) {
|
|
5237
|
+
rememberedCssSources = [configuredRootSourceStyle];
|
|
5238
|
+
hasUsableRememberedTailwindSource = true;
|
|
5239
|
+
debug("source style source inferred from configured root tailwind v4 css source: %s -> %s", outputFile, configuredRootSourceStyle.sourceFile);
|
|
5240
|
+
}
|
|
5241
|
+
if (!hasUsableRememberedTailwindSource && isTemporaryCssAssetFile(outputFile) && hasTailwindGenerationSource(rawSource)) {
|
|
4929
5242
|
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4930
5243
|
if (resolvedTemporarySource) {
|
|
4931
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
5244
|
+
outputFile = shouldKeepCurrentRootCssOutputForConfiguredSource(resolvedTemporarySource.sourceFile, outputFile) ? outputFile : resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
4932
5245
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4933
5246
|
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4934
5247
|
outputCssHandlerOptions = {
|
|
@@ -4948,50 +5261,19 @@ function createGenerateBundleHook(context) {
|
|
|
4948
5261
|
}
|
|
4949
5262
|
if (!hasUsableRememberedTailwindSource) {
|
|
4950
5263
|
const configuredTailwindV4CssSourceEntries = getConfiguredTailwindV4CssSourceEntries();
|
|
4951
|
-
const
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
outputFile,
|
|
4955
|
-
rawSource: inferredWebviewRootSourceEntry.source,
|
|
4956
|
-
sourceFile: inferredWebviewRootSourceEntry.file
|
|
4957
|
-
} : void 0;
|
|
4958
|
-
const inferredOriginalSourceStyle = inferredSourceStyle ?? (outputFile === file ? void 0 : resolveSourceStyleSourceFromOutputFile(file, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug)) ?? inferredWebviewRootSourceStyle;
|
|
4959
|
-
if (inferredOriginalSourceStyle) {
|
|
4960
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
4961
|
-
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4962
|
-
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4963
|
-
rememberedCssSources = [{
|
|
4964
|
-
...inferredOriginalSourceStyle,
|
|
4965
|
-
outputFile
|
|
4966
|
-
}];
|
|
4967
|
-
} else if (isTemporaryCssAssetFile(outputFile) && configuredTailwindV4CssSourceEntries.length > 1) {
|
|
4968
|
-
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4969
|
-
if (resolvedTemporarySource) {
|
|
4970
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
4971
|
-
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4972
|
-
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4973
|
-
outputCssHandlerOptions = {
|
|
4974
|
-
...outputCssHandlerOptions,
|
|
4975
|
-
isMainChunk: false
|
|
4976
|
-
};
|
|
4977
|
-
resolvedFromTemporaryCssAsset = true;
|
|
4978
|
-
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedTemporarySource.sourceFile));
|
|
4979
|
-
rememberedCssSources = [{
|
|
4980
|
-
outputFile,
|
|
4981
|
-
rawSource: resolvedTemporarySource.rawSource,
|
|
4982
|
-
sourceFile: resolvedTemporarySource.sourceFile
|
|
4983
|
-
}];
|
|
4984
|
-
debug("source style source inferred from temporary configured tailwind v4 css source: %s -> %s", outputFile, resolvedTemporarySource.sourceFile);
|
|
4985
|
-
}
|
|
4986
|
-
} else if (hasTailwindGenerationSource(rawSource) && (originalSource.originalFileNames?.length ?? 0) === 0) {
|
|
4987
|
-
const availableConfiguredTailwindV4CssSourceEntries = configuredTailwindV4CssSourceEntries.filter((entry) => !usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(entry.file)));
|
|
4988
|
-
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource, {
|
|
5264
|
+
const isCurrentRootMiniProgramStyleOutput = opts.cssMatcher(outputFile) && isMiniProgramStyleOutputFile(outputFile) && !require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, "")).includes("/");
|
|
5265
|
+
if (isCurrentRootMiniProgramStyleOutput && hasTailwindGenerationSource(rawSource)) {
|
|
5266
|
+
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, configuredTailwindV4CssSourceEntries, rawSource, {
|
|
4989
5267
|
cwd: opts.tailwindcssBasedir,
|
|
4990
5268
|
outputRoot: outDir,
|
|
4991
5269
|
projectRoot: sourceRoot ?? rootDir
|
|
4992
5270
|
});
|
|
4993
|
-
|
|
4994
|
-
|
|
5271
|
+
const configuredGenerationOutputFile = configuredGenerationSource ? shouldKeepCurrentRootMiniProgramStyleOutputAsImportShell(outputFile, rawSource) ? resolveMatchedOutputFileForCurrentAsset(configuredGenerationSource.file) ?? outputFile : outputFile : void 0;
|
|
5272
|
+
const hasConfiguredGenerationSourceAlreadyUsed = configuredGenerationSource ? usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(configuredGenerationSource.file)) : false;
|
|
5273
|
+
const hasConfiguredGenerationSourceAlreadyProcessed = configuredGenerationSource ? hasViteProcessedCssResultForSource(configuredGenerationSource.file, getViteProcessedCssAssetResults) : false;
|
|
5274
|
+
const shouldUseConfiguredGenerationSource = configuredGenerationSource && (!hasConfiguredGenerationSourceAlreadyUsed && !hasConfiguredGenerationSourceAlreadyProcessed || require_source_candidate_scan_signature.normalizeOutputPathKey(configuredGenerationOutputFile ?? outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile));
|
|
5275
|
+
if (configuredGenerationSource && shouldUseConfiguredGenerationSource) {
|
|
5276
|
+
outputFile = configuredGenerationOutputFile ?? outputFile;
|
|
4995
5277
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4996
5278
|
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4997
5279
|
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(configuredGenerationSource.file));
|
|
@@ -5000,9 +5282,70 @@ function createGenerateBundleHook(context) {
|
|
|
5000
5282
|
rawSource: configuredGenerationSource.source,
|
|
5001
5283
|
sourceFile: configuredGenerationSource.file
|
|
5002
5284
|
}];
|
|
5285
|
+
hasUsableRememberedTailwindSource = true;
|
|
5003
5286
|
debug("source style source inferred from scoped configured tailwind v4 css source: %s -> %s", outputFile, configuredGenerationSource.file);
|
|
5004
5287
|
}
|
|
5005
5288
|
}
|
|
5289
|
+
if (!hasUsableRememberedTailwindSource) {
|
|
5290
|
+
const inferredSourceStyle = resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug);
|
|
5291
|
+
const inferredWebviewRootSourceEntry = inferredSourceStyle ? void 0 : selectConfiguredRootCssSourceEntry(outputFile, configuredTailwindV4CssSourceEntries, originalSource.originalFileNames);
|
|
5292
|
+
const inferredWebviewRootSourceStyle = inferredWebviewRootSourceEntry ? {
|
|
5293
|
+
outputFile,
|
|
5294
|
+
rawSource: inferredWebviewRootSourceEntry.source,
|
|
5295
|
+
sourceFile: inferredWebviewRootSourceEntry.file
|
|
5296
|
+
} : void 0;
|
|
5297
|
+
const inferredOriginalSourceStyle = inferredSourceStyle ?? (outputFile === file ? void 0 : resolveSourceStyleSourceFromOutputFile(file, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug)) ?? inferredWebviewRootSourceStyle;
|
|
5298
|
+
if (inferredOriginalSourceStyle) {
|
|
5299
|
+
const matchedOutputFile = require_source_candidate_scan_signature.normalizeOutputPathKey(inferredOriginalSourceStyle.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile) ? outputFile : resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
5300
|
+
debug("source style output resolved: %s -> %s from %s", outputFile, matchedOutputFile, inferredOriginalSourceStyle.sourceFile);
|
|
5301
|
+
outputFile = matchedOutputFile;
|
|
5302
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
5303
|
+
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
5304
|
+
rememberedCssSources = [{
|
|
5305
|
+
...inferredOriginalSourceStyle,
|
|
5306
|
+
outputFile
|
|
5307
|
+
}];
|
|
5308
|
+
} else if (isTemporaryCssAssetFile(outputFile) && configuredTailwindV4CssSourceEntries.length > 1) {
|
|
5309
|
+
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
5310
|
+
if (resolvedTemporarySource) {
|
|
5311
|
+
outputFile = shouldKeepCurrentRootCssOutputForConfiguredSource(resolvedTemporarySource.sourceFile, outputFile) ? outputFile : resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
5312
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
5313
|
+
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
5314
|
+
outputCssHandlerOptions = {
|
|
5315
|
+
...outputCssHandlerOptions,
|
|
5316
|
+
isMainChunk: false
|
|
5317
|
+
};
|
|
5318
|
+
resolvedFromTemporaryCssAsset = true;
|
|
5319
|
+
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedTemporarySource.sourceFile));
|
|
5320
|
+
rememberedCssSources = [{
|
|
5321
|
+
outputFile,
|
|
5322
|
+
rawSource: resolvedTemporarySource.rawSource,
|
|
5323
|
+
sourceFile: resolvedTemporarySource.sourceFile
|
|
5324
|
+
}];
|
|
5325
|
+
debug("source style source inferred from temporary configured tailwind v4 css source: %s -> %s", outputFile, resolvedTemporarySource.sourceFile);
|
|
5326
|
+
}
|
|
5327
|
+
} else if (!isCurrentRootMiniProgramStyleOutput && hasTailwindGenerationSource(rawSource) && (originalSource.originalFileNames?.length ?? 0) === 0) {
|
|
5328
|
+
const availableConfiguredTailwindV4CssSourceEntries = configuredTailwindV4CssSourceEntries.filter((entry) => !usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(entry.file)));
|
|
5329
|
+
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource, {
|
|
5330
|
+
cwd: opts.tailwindcssBasedir,
|
|
5331
|
+
outputRoot: outDir,
|
|
5332
|
+
projectRoot: sourceRoot ?? rootDir
|
|
5333
|
+
});
|
|
5334
|
+
if (configuredGenerationSource && !hasViteProcessedCssResultForSource(configuredGenerationSource.file, getViteProcessedCssAssetResults)) {
|
|
5335
|
+
outputFile = resolveMatchedOutputFileForCurrentAsset(configuredGenerationSource.file) ?? outputFile;
|
|
5336
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
5337
|
+
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
5338
|
+
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(configuredGenerationSource.file));
|
|
5339
|
+
rememberedCssSources = [{
|
|
5340
|
+
outputFile,
|
|
5341
|
+
rawSource: configuredGenerationSource.source,
|
|
5342
|
+
sourceFile: configuredGenerationSource.file
|
|
5343
|
+
}];
|
|
5344
|
+
hasUsableRememberedTailwindSource = true;
|
|
5345
|
+
debug("source style source inferred from scoped configured tailwind v4 css source: %s -> %s", outputFile, configuredGenerationSource.file);
|
|
5346
|
+
}
|
|
5347
|
+
}
|
|
5348
|
+
}
|
|
5006
5349
|
}
|
|
5007
5350
|
let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
|
|
5008
5351
|
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
|
|
@@ -5020,10 +5363,10 @@ function createGenerateBundleHook(context) {
|
|
|
5020
5363
|
const shouldKeepImportedCssShell = isCssImportOnlyBundleAsset(bundle, file, rawSource);
|
|
5021
5364
|
const useRememberedCssSource = !shouldKeepImportedCssShell && rememberedCssSource != null && (require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.sourceFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file) || !hasTailwindGenerationSource(rawSource) && hasTailwindGenerationSource(rememberedCssSource.rawSource));
|
|
5022
5365
|
const vitePipelineCssAsset = viteProcessedCssAsset || useRememberedCssSource;
|
|
5023
|
-
const generatorRawSource = vitePipelineCssAsset ? rememberedCssSource?.rawSource ?? rawSource : rawSource;
|
|
5024
|
-
const hasRememberedApplySource = vitePipelineCssAsset && rememberedCssSource != null &&
|
|
5366
|
+
const generatorRawSource = normalizeMiniProgramGeneratorRawSource(vitePipelineCssAsset ? rememberedCssSource?.rawSource ?? rawSource : rawSource, outputFile);
|
|
5367
|
+
const hasRememberedApplySource = vitePipelineCssAsset && rememberedCssSource != null && require_generator.hasTailwindApplyDirective(generatorRawSource);
|
|
5025
5368
|
const hasDifferentRememberedCssSource = rememberedCssSource != null && normalizeCssSourceForCompare(rememberedCssSource.rawSource) !== normalizeCssSourceForCompare(rawSource);
|
|
5026
|
-
const hasCurrentTailwindGenerationDirective =
|
|
5369
|
+
const hasCurrentTailwindGenerationDirective = require_generator.hasTailwindSourceDirectives(rawSource, { importFallback: true }) || require_generator.hasTailwindRootDirectives(rawSource, { importFallback: true }) || require_generator.hasTailwindApplyDirective(rawSource);
|
|
5027
5370
|
if (shouldKeepImportedCssShell && !hasCurrentTailwindGenerationDirective) {
|
|
5028
5371
|
applyCssResult(rawSource);
|
|
5029
5372
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
@@ -5032,7 +5375,7 @@ function createGenerateBundleHook(context) {
|
|
|
5032
5375
|
debug("css preserve imported shell asset: %s", outputFile);
|
|
5033
5376
|
continue;
|
|
5034
5377
|
}
|
|
5035
|
-
const hasRememberedApplyDirective = rememberedCssSource != null &&
|
|
5378
|
+
const hasRememberedApplyDirective = rememberedCssSource != null && require_generator.hasTailwindApplyDirective(rememberedCssSource.rawSource);
|
|
5036
5379
|
const hasRememberedTailwindGenerationSource = rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource);
|
|
5037
5380
|
const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
5038
5381
|
const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
|
|
@@ -5047,7 +5390,10 @@ function createGenerateBundleHook(context) {
|
|
|
5047
5390
|
...getCssHandlerOptions(generatorSourceFile),
|
|
5048
5391
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
5049
5392
|
} : getCssHandlerOptions(file);
|
|
5050
|
-
const
|
|
5393
|
+
const generatorSourceFileKey = normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile);
|
|
5394
|
+
const isExplicitGeneratorCssEntry = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(generatorSourceFileKey);
|
|
5395
|
+
const shouldUsePipelineSourceAsCssEntry = !isExplicitGeneratorCssEntry && vitePipelineCssAsset && opts.cssMatcher(generatorSourceFile) && hasTailwindGenerationSource(generatorRawSource);
|
|
5396
|
+
const generatorCssEntries = isExplicitGeneratorCssEntry || shouldUsePipelineSourceAsCssEntry ? [generatorSourceFile] : opts.cssEntries;
|
|
5051
5397
|
const generatorCssHandlerOptions = {
|
|
5052
5398
|
...cssHandlerOptions,
|
|
5053
5399
|
sourceOptions: {
|
|
@@ -5058,7 +5404,8 @@ function createGenerateBundleHook(context) {
|
|
|
5058
5404
|
};
|
|
5059
5405
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, generatorCssHandlerOptions);
|
|
5060
5406
|
const scopedSourceCandidateSourceGetter = createScopedSourceCandidateSourceGetter(outputFile, generatorCssHandlerOptions);
|
|
5061
|
-
const
|
|
5407
|
+
const sourceTraceSources = scopedSourceCandidateSourceGetter ? await require_source_candidate_scan_signature.createScopedGeneratorSourceTraceMap(generatorRawSource, generatorSourceFile, scopedSourceCandidateSourceGetter) : void 0;
|
|
5408
|
+
const sourceTraceTokenSources = sourceTraceSources ? require_hmr_timing.createCssTokenSourceMap(sourceTraceSources, opts) : void 0;
|
|
5062
5409
|
const sourceTraceSignature = require_hmr_timing.createCssSourceTraceCacheSignature(sourceTraceTokenSources, opts);
|
|
5063
5410
|
const scopedGeneratorRuntime = await createScopedGeneratorRuntime$1(outputFile, generatorCssHandlerOptions, generatorRuntime, generatorRawSource, generatorSourceFile);
|
|
5064
5411
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
@@ -5082,7 +5429,7 @@ function createGenerateBundleHook(context) {
|
|
|
5082
5429
|
const shouldTrackGeneratorRuntime = hasStaleViteProcessedCssSource || shouldRegenerateMainPackageCssWithScopedCandidates || hasCurrentTailwindGenerationDirective || hasSameOutputRememberedTailwindGenerationSource || shouldProcessTailwindGeneration && (!useIncrementalMode || cssHandlerOptions.isMainChunk || processFiles.css.has(file) || runtimeLinkedCssFiles.has(file) || runtimeLinkedCssFiles.has(outputFile) || shouldRegenerateCollectedViteCss || hasRuntimeAffectingChanges && (alreadyProcessedCssAsset || vitePipelineCssAsset));
|
|
5083
5430
|
const shouldPreserveCollectedViteCssAsset = !shouldRegenerateCollectedViteCss && (state.generatorCandidateSignature === void 0 || !generatorCandidatesChanged) && (collectedBundlerGeneratedCssFiles.has(file) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource));
|
|
5084
5431
|
const strippedViteProcessedCss = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
5085
|
-
const shouldPreserveStaleGeneratedCssAsset = hasStaleViteProcessedCssSource && shouldPreserveCollectedViteCssAsset && strippedViteProcessedCss.trim().length > 0 && !strippedViteProcessedCss.includes("weapp-tailwindcss generator-placeholder") && !strippedViteProcessedCss.includes("vite-placeholder") && !hasTailwindGenerationSource(strippedViteProcessedCss) && !
|
|
5432
|
+
const shouldPreserveStaleGeneratedCssAsset = hasStaleViteProcessedCssSource && shouldPreserveCollectedViteCssAsset && strippedViteProcessedCss.trim().length > 0 && !strippedViteProcessedCss.includes("weapp-tailwindcss generator-placeholder") && !strippedViteProcessedCss.includes("vite-placeholder") && !hasTailwindGenerationSource(strippedViteProcessedCss) && !require_generator.hasTailwindApplyDirective(strippedViteProcessedCss);
|
|
5086
5433
|
if (alreadyProcessedCssAsset && !shouldRefreshViteProcessedCssByCandidates && (!hasStaleViteProcessedCssSource || shouldPreserveStaleGeneratedCssAsset) && !hasRememberedApplySource && !shouldRegenerateMainPackageCssWithScopedCandidates && (!shouldTrackGeneratorRuntime || shouldPreserveCollectedViteCssAsset)) {
|
|
5087
5434
|
const nextCss = removeRootCoveredCssFromScopedAsset(strippedViteProcessedCss);
|
|
5088
5435
|
applyCssResult(nextCss);
|
|
@@ -5161,11 +5508,13 @@ function createGenerateBundleHook(context) {
|
|
|
5161
5508
|
const start = performance.now();
|
|
5162
5509
|
await runtimeState.readyPromise;
|
|
5163
5510
|
const previousCss = !vitePipelineCssAsset && useIncrementalMode && !hasRuntimeAffectingChanges && !snapshot.changedByType.css.has(file) ? getLastCssResult(lastCssResultByFile, outputFile, file) : void 0;
|
|
5164
|
-
const
|
|
5511
|
+
const generatorTransformRawSource = generatorRawSource;
|
|
5512
|
+
const previousGeneratorCss = previousCss && !isWebGeneratorTarget ? normalizeMiniProgramGeneratorRawSource(previousCss, outputFile) : previousCss;
|
|
5513
|
+
const generated = hasTailwindGenerationSource(generatorTransformRawSource) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) ? await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
5165
5514
|
opts,
|
|
5166
5515
|
runtimeState,
|
|
5167
5516
|
runtime: scopedGeneratorRuntime,
|
|
5168
|
-
rawSource:
|
|
5517
|
+
rawSource: generatorTransformRawSource,
|
|
5169
5518
|
file: generatorSourceFile,
|
|
5170
5519
|
outputFile,
|
|
5171
5520
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
@@ -5175,8 +5524,8 @@ function createGenerateBundleHook(context) {
|
|
|
5175
5524
|
generatorPlatform,
|
|
5176
5525
|
styleHandler,
|
|
5177
5526
|
debug,
|
|
5178
|
-
previousCss,
|
|
5179
|
-
...vitePipelineCssAsset && !require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) && normalizeCssSourceForCompare(rawSource) !== normalizeCssSourceForCompare(generatorRawSource) ? { userRawSource: normalizeGeneratorUserRawSource(rawSource, generatorSourceFile, assetSourceFile) } : {},
|
|
5527
|
+
previousCss: previousGeneratorCss,
|
|
5528
|
+
...vitePipelineCssAsset && !require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) && normalizeCssSourceForCompare(rawSource) !== normalizeCssSourceForCompare(generatorRawSource) ? { userRawSource: normalizeMiniProgramGeneratorRawSource(normalizeGeneratorUserRawSource(rawSource, generatorSourceFile, assetSourceFile), outputFile) } : {},
|
|
5180
5529
|
...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
|
|
5181
5530
|
}) : void 0;
|
|
5182
5531
|
if (generated) {
|
|
@@ -5206,9 +5555,17 @@ function createGenerateBundleHook(context) {
|
|
|
5206
5555
|
debug("css preserve web target: %s", outputFile);
|
|
5207
5556
|
return annotateCss(outputCss);
|
|
5208
5557
|
}
|
|
5209
|
-
|
|
5558
|
+
if ((0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(generatorTransformRawSource)) {
|
|
5559
|
+
const tracedCss = annotateCss(generatorTransformRawSource);
|
|
5560
|
+
recordCssAssetResult?.(outputFile, tracedCss);
|
|
5561
|
+
metrics.css.elapsed += measureElapsed(start);
|
|
5562
|
+
metrics.css.transformed++;
|
|
5563
|
+
debug("css preserve mini-program import shell: %s", outputFile);
|
|
5564
|
+
return tracedCss;
|
|
5565
|
+
}
|
|
5566
|
+
const { css } = await styleHandler(generatorTransformRawSource, cssHandlerOptions);
|
|
5210
5567
|
const tracedCss = annotateCss(css);
|
|
5211
|
-
if (envFlags.debugCssDiff) debug("css diff %s: %s", generatorSourceFile, require_source_candidate_scan_signature.summarizeStringDiff(
|
|
5568
|
+
if (envFlags.debugCssDiff) debug("css diff %s: %s", generatorSourceFile, require_source_candidate_scan_signature.summarizeStringDiff(generatorTransformRawSource, tracedCss));
|
|
5212
5569
|
metrics.css.elapsed += measureElapsed(start);
|
|
5213
5570
|
metrics.css.transformed++;
|
|
5214
5571
|
return tracedCss;
|
|
@@ -5263,6 +5620,7 @@ function createGenerateBundleHook(context) {
|
|
|
5263
5620
|
bundle,
|
|
5264
5621
|
bundleFiles,
|
|
5265
5622
|
cache,
|
|
5623
|
+
changedCssFiles: snapshot.changedByType.css,
|
|
5266
5624
|
cssTaskFactories,
|
|
5267
5625
|
createScopedGeneratorRuntime: createScopedGeneratorRuntime$1,
|
|
5268
5626
|
createScopedSourceCandidateGetter,
|
|
@@ -5278,6 +5636,7 @@ function createGenerateBundleHook(context) {
|
|
|
5278
5636
|
getRememberedCssSources,
|
|
5279
5637
|
isNativeAppStyleTarget,
|
|
5280
5638
|
isWebGeneratorTarget,
|
|
5639
|
+
lastCssRawSourceHashByFile,
|
|
5281
5640
|
lastCssResultByFile,
|
|
5282
5641
|
lastCssSourceHashByFile,
|
|
5283
5642
|
markCssAssetProcessed,
|
|
@@ -5381,12 +5740,13 @@ function registerGeneratorDependencies(ctx, dependencies) {
|
|
|
5381
5740
|
throw error;
|
|
5382
5741
|
}
|
|
5383
5742
|
}
|
|
5384
|
-
function createCssHandlerOptions(opts, majorVersion, file, extraOptions = {}) {
|
|
5743
|
+
function createCssHandlerOptions(opts, majorVersion, file, outputRoot, extraOptions = {}) {
|
|
5744
|
+
const from = node_path.default.isAbsolute(file) ? file : outputRoot ? node_path.default.resolve(outputRoot, file) : file;
|
|
5385
5745
|
return {
|
|
5386
5746
|
...extraOptions,
|
|
5387
5747
|
cssPreflight: opts.cssPreflight,
|
|
5388
5748
|
isMainChunk: opts.mainCssChunkMatcher(file, opts.appType),
|
|
5389
|
-
postcssOptions: { options: { from
|
|
5749
|
+
postcssOptions: { options: { from } },
|
|
5390
5750
|
...require_context.normalizeStyleHandlerMajorVersion(majorVersion) === void 0 ? {} : { majorVersion: 4 }
|
|
5391
5751
|
};
|
|
5392
5752
|
}
|
|
@@ -5397,10 +5757,11 @@ function shouldGenerateCssByGenerator(opts, majorVersion, file, rawSource, proce
|
|
|
5397
5757
|
tailwindcssMajorVersion: majorVersion,
|
|
5398
5758
|
uniAppX: opts.uniAppX
|
|
5399
5759
|
});
|
|
5400
|
-
if (
|
|
5401
|
-
if (
|
|
5402
|
-
if (
|
|
5403
|
-
|
|
5760
|
+
if (!generatorOptions.enabled) return false;
|
|
5761
|
+
if (require_generator.hasLocalCssImport(rawSource)) return false;
|
|
5762
|
+
if (require_generator.hasTailwindGeneratedCssMarkers(rawSource)) return true;
|
|
5763
|
+
if (require_generator.hasTailwindRootDirectives(rawSource, { importFallback: generatorOptions.importFallback })) return true;
|
|
5764
|
+
return processed && require_generator.hasTailwindApplyDirective(rawSource) && shouldFinalizeProcessedCssAsset(opts, file);
|
|
5404
5765
|
}
|
|
5405
5766
|
function shouldFinalizeProcessedCssAsset(opts, file) {
|
|
5406
5767
|
return opts.mainCssChunkMatcher(file, opts.appType);
|
|
@@ -5409,8 +5770,8 @@ function collectViteProcessedCssSources(getViteProcessedCssAssetResults) {
|
|
|
5409
5770
|
return [...getViteProcessedCssAssetResults?.() ?? []].map(([, record]) => typeof record === "string" ? record : record.css);
|
|
5410
5771
|
}
|
|
5411
5772
|
function finalizeWebCss(css, context, cssPipelineStrategy) {
|
|
5412
|
-
const shouldApplyWebCssCompat =
|
|
5413
|
-
const defaultWebCssCompat = (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value, context
|
|
5773
|
+
const shouldApplyWebCssCompat = shouldApplyViteWebCssCompat(context, cssPipelineStrategy);
|
|
5774
|
+
const defaultWebCssCompat = (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value, resolveViteWebCssCompatOptions(context));
|
|
5414
5775
|
return cssPipelineStrategy?.transformGeneratedCss?.(css, {
|
|
5415
5776
|
...context,
|
|
5416
5777
|
defaultWebCssCompat,
|
|
@@ -5456,6 +5817,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5456
5817
|
const isNativeAppStyleTarget = cssPipelineStrategy?.isNativeAppStyleTarget?.(createCssPipelineContext("")) === true;
|
|
5457
5818
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
5458
5819
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
5820
|
+
const outDir = resolvedConfig?.build?.outDir ? node_path.default.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
|
|
5459
5821
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
5460
5822
|
const sourceTraceTokenSources = getSourceCandidateSourcesForEntries ? require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts) : void 0;
|
|
5461
5823
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
@@ -5502,7 +5864,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5502
5864
|
const applyStyleSources = collectUniAppXHarmonyApplyStyleSources(bundle);
|
|
5503
5865
|
if (applyUtilities.size === 0 || applyStyleSources.length === 0) return cssSources;
|
|
5504
5866
|
const harmonyRuntime = /* @__PURE__ */ new Set([...runtime, ...applyUtilities]);
|
|
5505
|
-
const harmonyCssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, "uni-app-x-harmony-apply.css", cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5867
|
+
const harmonyCssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, "uni-app-x-harmony-apply.css", outDir, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5506
5868
|
...createCssPipelineContext("uni-app-x-harmony-apply.css"),
|
|
5507
5869
|
file: "uni-app-x-harmony-apply.css"
|
|
5508
5870
|
}) ?? {});
|
|
@@ -5553,7 +5915,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5553
5915
|
await waitForSourceCandidateSyncs?.();
|
|
5554
5916
|
const runtime = getRecordedGeneratorCandidates?.() ?? getSourceCandidates?.() ?? await ensureRuntimeClassSet();
|
|
5555
5917
|
const collectedGeneratorCandidates = /* @__PURE__ */ new Set([...runtime, ...getSourceCandidates?.() ?? []]);
|
|
5556
|
-
const generatorRuntime = require_generator.shouldUseMiniProgramCssBranch(generatorBranch) ?
|
|
5918
|
+
const generatorRuntime = require_generator.shouldUseMiniProgramCssBranch(generatorBranch) ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(collectedGeneratorCandidates) : collectedGeneratorCandidates;
|
|
5557
5919
|
await Promise.all(entries.map(async ([bundleFile, output]) => {
|
|
5558
5920
|
const file = output.fileName || bundleFile;
|
|
5559
5921
|
const rawSource = output.source.toString();
|
|
@@ -5568,7 +5930,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5568
5930
|
debug("css finalizer skip vite-processed css: %s", file);
|
|
5569
5931
|
return;
|
|
5570
5932
|
}
|
|
5571
|
-
const cssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, file, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5933
|
+
const cssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, file, outDir, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5572
5934
|
...createCssPipelineContext(file),
|
|
5573
5935
|
file
|
|
5574
5936
|
}) ?? {});
|
|
@@ -5576,11 +5938,21 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5576
5938
|
...cssHandlerOptions,
|
|
5577
5939
|
isMainChunk: false
|
|
5578
5940
|
};
|
|
5941
|
+
const cleanRawSource = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
5942
|
+
if (cleanRawSource !== rawSource && cleanRawSource.trim().length === 0) {
|
|
5943
|
+
output.source = cleanRawSource;
|
|
5944
|
+
markCssAssetProcessed(output, file);
|
|
5945
|
+
recordCssAssetResult?.(file, cleanRawSource);
|
|
5946
|
+
opts.onUpdate(file, rawSource, cleanRawSource);
|
|
5947
|
+
debug("css finalizer strip empty marker asset: %s", file);
|
|
5948
|
+
return;
|
|
5949
|
+
}
|
|
5579
5950
|
const processed = isCssAssetProcessed(output, file);
|
|
5580
5951
|
const rememberedMainCssSource = processed && cssHandlerOptions.isMainChunk ? getRememberedMainCssSource?.(file) : void 0;
|
|
5581
|
-
const
|
|
5952
|
+
const resolvedGeneratorRawSource = rememberedMainCssSource?.rawSource ?? cleanRawSource;
|
|
5953
|
+
const generatorRawSource = generatorBranch.isWeb ? resolvedGeneratorRawSource : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(resolvedGeneratorRawSource, file);
|
|
5582
5954
|
const generatorSourceFile = rememberedMainCssSource?.sourceFile ?? file;
|
|
5583
|
-
const generatorCssHandlerOptions = rememberedMainCssSource ? createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, generatorSourceFile, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5955
|
+
const generatorCssHandlerOptions = rememberedMainCssSource ? createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, generatorSourceFile, outDir, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5584
5956
|
...createCssPipelineContext(generatorSourceFile),
|
|
5585
5957
|
file: generatorSourceFile
|
|
5586
5958
|
}) ?? {}) : cssHandlerOptions;
|
|
@@ -5588,11 +5960,12 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5588
5960
|
...generatorCssHandlerOptions,
|
|
5589
5961
|
isMainChunk: false
|
|
5590
5962
|
} : cssUserHandlerOptions;
|
|
5591
|
-
const
|
|
5963
|
+
const generatorTransformRawSource = generatorRawSource;
|
|
5964
|
+
const generated = shouldGenerateCssByGenerator(opts, runtimeState.tailwindRuntime.majorVersion, file, generatorTransformRawSource, processed) ? await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
5592
5965
|
opts,
|
|
5593
5966
|
runtimeState,
|
|
5594
5967
|
runtime: generatorRuntime,
|
|
5595
|
-
rawSource:
|
|
5968
|
+
rawSource: generatorTransformRawSource,
|
|
5596
5969
|
file: generatorSourceFile,
|
|
5597
5970
|
outputFile: file,
|
|
5598
5971
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
@@ -5602,10 +5975,21 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5602
5975
|
styleHandler: opts.styleHandler,
|
|
5603
5976
|
debug
|
|
5604
5977
|
}) : void 0;
|
|
5605
|
-
|
|
5978
|
+
if (!generated && !generatorBranch.isWeb && (0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(generatorTransformRawSource)) {
|
|
5979
|
+
const nextCss = generatorTransformRawSource;
|
|
5980
|
+
if (nextCss !== rawSource) {
|
|
5981
|
+
output.source = nextCss;
|
|
5982
|
+
opts.onUpdate(file, rawSource, nextCss);
|
|
5983
|
+
}
|
|
5984
|
+
markCssAssetProcessed(output, file);
|
|
5985
|
+
recordCssAssetResult?.(file, nextCss);
|
|
5986
|
+
debug("css finalizer preserve mini-program import shell: %s", file);
|
|
5987
|
+
return;
|
|
5988
|
+
}
|
|
5989
|
+
const nextCss = annotateCss(generated?.css ?? (generatorBranch.isWeb ? finalizeWebCss(cleanRawSource, {
|
|
5606
5990
|
...createCssPipelineContext(file),
|
|
5607
5991
|
file
|
|
5608
|
-
}, cssPipelineStrategy) : (await opts.styleHandler(
|
|
5992
|
+
}, cssPipelineStrategy) : (await opts.styleHandler(generatorTransformRawSource, cssHandlerOptions)).css));
|
|
5609
5993
|
if (generated) {
|
|
5610
5994
|
registerGeneratorDependencies(this, generated.dependencies);
|
|
5611
5995
|
debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
|
|
@@ -5891,9 +6275,21 @@ function createViteCssMemory(options) {
|
|
|
5891
6275
|
function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
|
|
5892
6276
|
const modules = [];
|
|
5893
6277
|
const seenModules = /* @__PURE__ */ new Set();
|
|
6278
|
+
const root = ctx.server.config?.root ?? node_process.default.cwd();
|
|
6279
|
+
const outDir = ctx.server.config?.build?.outDir ? normalizeAbsoluteFilePath(node_path.default.resolve(root, ctx.server.config.build.outDir)) : void 0;
|
|
6280
|
+
const isHotSourceStyleModule = (id) => {
|
|
6281
|
+
if (!require_source_candidate_scan_signature.isSourceStyleRequest(id)) return false;
|
|
6282
|
+
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6283
|
+
if (isRootMiniProgramStyleUrl(file) || !isAbsoluteFilePath(file) && !file.startsWith("/")) return false;
|
|
6284
|
+
if (outDir && isAbsoluteFilePath(file)) {
|
|
6285
|
+
const normalizedFile = normalizeAbsoluteFilePath(file);
|
|
6286
|
+
if (normalizedFile === outDir || normalizedFile.startsWith(`${outDir}/`)) return false;
|
|
6287
|
+
}
|
|
6288
|
+
return true;
|
|
6289
|
+
};
|
|
5894
6290
|
const collectModule = (mod) => {
|
|
5895
6291
|
if (mod == null || seenModules.has(mod)) return;
|
|
5896
|
-
if (!
|
|
6292
|
+
if (!isHotSourceStyleModule(mod.id ?? mod.url)) return;
|
|
5897
6293
|
seenModules.add(mod);
|
|
5898
6294
|
ctx.server.moduleGraph.invalidateModule(mod);
|
|
5899
6295
|
modules.push(mod);
|
|
@@ -5929,6 +6325,29 @@ function resolveModuleHotUrl(mod) {
|
|
|
5929
6325
|
if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
|
|
5930
6326
|
if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
|
|
5931
6327
|
}
|
|
6328
|
+
function isAbsoluteFilePath(file) {
|
|
6329
|
+
return node_path.default.isAbsolute(file) || /^[A-Z]:[\\/]/i.test(file) || file.startsWith("\\\\");
|
|
6330
|
+
}
|
|
6331
|
+
function normalizeAbsoluteFilePath(file) {
|
|
6332
|
+
if (/^[A-Z]:[\\/]/i.test(file) || file.startsWith("\\\\")) return require_source_candidate_scan_signature.slash(node_path.default.win32.resolve(file));
|
|
6333
|
+
return require_source_candidate_scan_signature.slash(node_path.default.resolve(file));
|
|
6334
|
+
}
|
|
6335
|
+
function isRootMiniProgramStyleUrl(file) {
|
|
6336
|
+
return /^\/[^/]+\.(?:wxss|acss|ttss|qss|jxss|tyss)(?:$|[?#])/i.test(file);
|
|
6337
|
+
}
|
|
6338
|
+
function resolveCssHotUrl(id, root) {
|
|
6339
|
+
const suffix = /[?#]/.test(id) ? id.slice(id.search(/[?#]/)) : "";
|
|
6340
|
+
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6341
|
+
if (/^\/(?![A-Z]:)/i.test(file) && !file.startsWith(require_source_candidate_scan_signature.slash(root))) {
|
|
6342
|
+
if (isRootMiniProgramStyleUrl(file)) return;
|
|
6343
|
+
return `${file}${suffix}`;
|
|
6344
|
+
}
|
|
6345
|
+
if (!isAbsoluteFilePath(file)) return;
|
|
6346
|
+
const normalizedRoot = normalizeAbsoluteFilePath(root);
|
|
6347
|
+
const normalizedFile = normalizeAbsoluteFilePath(file);
|
|
6348
|
+
if (!normalizedFile.startsWith(`${normalizedRoot}/`)) return;
|
|
6349
|
+
return `/${require_source_candidate_scan_signature.slash(node_path.default.relative(normalizedRoot, normalizedFile))}${suffix}`;
|
|
6350
|
+
}
|
|
5932
6351
|
function includesHotModule(modules, target) {
|
|
5933
6352
|
const targetUrl = resolveModuleHotUrl(target);
|
|
5934
6353
|
const targetId = target.id;
|
|
@@ -5937,24 +6356,46 @@ function includesHotModule(modules, target) {
|
|
|
5937
6356
|
return targetUrl !== void 0 && resolveModuleHotUrl(mod) === targetUrl || typeof targetId === "string" && targetId.length > 0 && mod.id === targetId;
|
|
5938
6357
|
});
|
|
5939
6358
|
}
|
|
6359
|
+
function createSupplementalHotUpdate(hotUrl, timestamp) {
|
|
6360
|
+
if (/[?&](?:direct|vue)(?:&|$)/.test(hotUrl)) return {
|
|
6361
|
+
type: "js-update",
|
|
6362
|
+
timestamp,
|
|
6363
|
+
path: hotUrl,
|
|
6364
|
+
acceptedPath: hotUrl,
|
|
6365
|
+
explicitImportRequired: false,
|
|
6366
|
+
isWithinCircularImport: false
|
|
6367
|
+
};
|
|
6368
|
+
return {
|
|
6369
|
+
type: "css-update",
|
|
6370
|
+
timestamp,
|
|
6371
|
+
path: hotUrl,
|
|
6372
|
+
acceptedPath: hotUrl
|
|
6373
|
+
};
|
|
6374
|
+
}
|
|
5940
6375
|
function hasSelfAcceptingNonStyleHotModule(modules) {
|
|
5941
6376
|
return modules.some((mod) => {
|
|
5942
6377
|
return !require_source_candidate_scan_signature.isSourceStyleRequest(mod.id ?? mod.url) && mod.isSelfAccepting === true;
|
|
5943
6378
|
});
|
|
5944
6379
|
}
|
|
5945
|
-
function sendSupplementalCssHotUpdates(ctx, cssModules) {
|
|
5946
|
-
const
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
6380
|
+
function sendSupplementalCssHotUpdates(ctx, cssModules, fallbackCssIds = []) {
|
|
6381
|
+
const seenUrls = /* @__PURE__ */ new Set();
|
|
6382
|
+
const root = ctx.server.config?.root ?? node_process.default.cwd();
|
|
6383
|
+
const updates = [];
|
|
6384
|
+
for (const id of fallbackCssIds) {
|
|
6385
|
+
if (!require_source_candidate_scan_signature.isSourceStyleRequest(id)) continue;
|
|
6386
|
+
const hotUrl = resolveCssHotUrl(id, root);
|
|
6387
|
+
if (!hotUrl || seenUrls.has(hotUrl)) continue;
|
|
6388
|
+
seenUrls.add(hotUrl);
|
|
6389
|
+
updates.push(createSupplementalHotUpdate(hotUrl, ctx.timestamp));
|
|
6390
|
+
}
|
|
6391
|
+
for (const mod of cssModules) {
|
|
6392
|
+
if (includesHotModule(ctx.modules, mod)) continue;
|
|
6393
|
+
const moduleHotUrl = resolveModuleHotUrl(mod);
|
|
6394
|
+
const hotUrl = moduleHotUrl ? resolveCssHotUrl(moduleHotUrl, root) : void 0;
|
|
6395
|
+
if (!hotUrl || seenUrls.has(hotUrl)) continue;
|
|
6396
|
+
seenUrls.add(hotUrl);
|
|
6397
|
+
updates.push(createSupplementalHotUpdate(hotUrl, ctx.timestamp));
|
|
6398
|
+
}
|
|
5958
6399
|
if (updates.length === 0) return;
|
|
5959
6400
|
queueMicrotask(() => {
|
|
5960
6401
|
ctx.server.ws?.send?.({
|
|
@@ -6105,9 +6546,9 @@ function createRewriteCssImportsPlugins(options) {
|
|
|
6105
6546
|
async transform(code, id) {
|
|
6106
6547
|
if (!require_source_candidate_scan_signature.isCSSRequest(id)) return null;
|
|
6107
6548
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6108
|
-
const normalizedCode =
|
|
6549
|
+
const normalizedCode = require_generator.hasTailwindRootDirectives(code) || code.includes("@config") ? require_generator.normalizeTailwindConfigDirectives(code, node_path.default.dirname(file)) : code;
|
|
6109
6550
|
await options.onCssSourceTransform?.(id, normalizedCode);
|
|
6110
|
-
const hasTailwindRoot =
|
|
6551
|
+
const hasTailwindRoot = require_generator.hasTailwindRootDirectives(normalizedCode, { importFallback: true });
|
|
6111
6552
|
if (hasTailwindRoot) await options.onTailwindRootCss?.(id, normalizedCode);
|
|
6112
6553
|
const shouldGenerateInPreTransform = !options.shouldDeferGeneration?.(id, normalizedCode) && (hasTailwindRoot || options.shouldGenerateCss?.(id, normalizedCode));
|
|
6113
6554
|
if (options.shouldOwnTailwindGeneration && shouldGenerateInPreTransform) {
|
|
@@ -6139,7 +6580,7 @@ function createRewriteCssImportsPlugins(options) {
|
|
|
6139
6580
|
}];
|
|
6140
6581
|
}
|
|
6141
6582
|
function hasVitePipelineTailwindGenerationDirective(code) {
|
|
6142
|
-
return
|
|
6583
|
+
return require_generator.hasTailwindRootDirectives(code) || require_generator.hasTailwindApplyDirective(code);
|
|
6143
6584
|
}
|
|
6144
6585
|
//#endregion
|
|
6145
6586
|
//#region src/bundlers/vite/runtime-class-set.ts
|
|
@@ -6163,7 +6604,7 @@ function createViteRuntimeClassSet(options) {
|
|
|
6163
6604
|
let runtimeRefreshSignature;
|
|
6164
6605
|
let runtimeRefreshOptionsKey;
|
|
6165
6606
|
function resolveRuntimeRefreshOptions() {
|
|
6166
|
-
const configPath =
|
|
6607
|
+
const configPath = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options)?.config;
|
|
6167
6608
|
const signature = require_tailwindcss.getRuntimeClassSetSignature(runtimeState.tailwindRuntime);
|
|
6168
6609
|
const optionsKey = JSON.stringify({
|
|
6169
6610
|
appType: opts.appType,
|
|
@@ -6269,6 +6710,7 @@ const SPECIAL_QUERY_RE$1 = /[?&](?:worker|sharedworker|raw|url)\b/;
|
|
|
6269
6710
|
const COMMON_JS_PROXY_RE = /\?commonjs-proxy/;
|
|
6270
6711
|
const VITE_CSS_HMR_MODULE_RE = /\b__vite__updateStyle\s*\(/;
|
|
6271
6712
|
const VITE_CSS_CONST_RE = /\bconst\s+__vite__css\s*=\s*("(?:\\[\s\S]|[^"])*")/;
|
|
6713
|
+
const DEFERRED_CSS_HMR_QUERY_RE = /[?&](?:hmr(?:[=&]|$)|t=\d+)/;
|
|
6272
6714
|
function decodeJsStringLiteral(literal) {
|
|
6273
6715
|
try {
|
|
6274
6716
|
return JSON.parse(literal);
|
|
@@ -6302,13 +6744,13 @@ function isViteServeCssRootRequest(id, command) {
|
|
|
6302
6744
|
return command === "serve" && require_source_candidate_scan_signature.isSourceStyleRequest(id) && !SPECIAL_QUERY_RE$1.test(id) && !COMMON_JS_PROXY_RE.test(id);
|
|
6303
6745
|
}
|
|
6304
6746
|
function isViteCssHmrModule(code, id, command) {
|
|
6305
|
-
return isViteServeStyleRequest(id, command) && VITE_CSS_HMR_MODULE_RE.test(code) && /[?&](?:direct|vue)(?:&|$)/.test(id);
|
|
6747
|
+
return isViteServeStyleRequest(id, command) && VITE_CSS_HMR_MODULE_RE.test(code) && (/[?&](?:direct|vue)(?:&|$)/.test(id) || DEFERRED_CSS_HMR_QUERY_RE.test(id));
|
|
6306
6748
|
}
|
|
6307
6749
|
function hasViteServeCssGenerationDirective(code) {
|
|
6308
|
-
return
|
|
6750
|
+
return require_generator.hasTailwindRootDirectives(code) || require_generator.hasTailwindSourceDirectives(code, { importFallback: true }) || require_generator.hasTailwindApplyDirective(code);
|
|
6309
6751
|
}
|
|
6310
6752
|
function hasViteServeCssRootDirective(code) {
|
|
6311
|
-
return
|
|
6753
|
+
return require_generator.hasTailwindRootDirectives(code);
|
|
6312
6754
|
}
|
|
6313
6755
|
function createViteServeCssGenerationPlugins(options) {
|
|
6314
6756
|
return [{
|
|
@@ -6317,7 +6759,8 @@ function createViteServeCssGenerationPlugins(options) {
|
|
|
6317
6759
|
enforce: "pre",
|
|
6318
6760
|
async transform(code, id) {
|
|
6319
6761
|
if (!options.shouldGenerate() || !isViteServeCssRootRequest(id, options.getCommand())) return;
|
|
6320
|
-
if (!
|
|
6762
|
+
if (!require_generator.hasTailwindRootDirectives(code)) return;
|
|
6763
|
+
if (DEFERRED_CSS_HMR_QUERY_RE.test(id)) return;
|
|
6321
6764
|
await options.onTailwindRootCss?.(id, code);
|
|
6322
6765
|
const generatedCss = await options.generateCss(id, code, this);
|
|
6323
6766
|
if (generatedCss === void 0 || generatedCss === code) return;
|
|
@@ -6389,7 +6832,7 @@ function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
|
|
|
6389
6832
|
}
|
|
6390
6833
|
const tailwindConfigPath = require_tailwindcss.findTailwindConfig(searchRoots);
|
|
6391
6834
|
if (tailwindConfigPath) return node_path.default.dirname(tailwindConfigPath);
|
|
6392
|
-
const packageRoot =
|
|
6835
|
+
const packageRoot = require_generator.findNearestPackageRoot(resolvedRoot);
|
|
6393
6836
|
if (packageRoot && (0, node_fs.existsSync)(node_path.default.join(packageRoot, PACKAGE_JSON_FILE))) return packageRoot;
|
|
6394
6837
|
return resolvedRoot;
|
|
6395
6838
|
}
|
|
@@ -6399,6 +6842,7 @@ const debug = require_context.createDebug();
|
|
|
6399
6842
|
const weappTailwindcssPackageDir = require_source_candidate_scan_signature.resolvePackageDir("weapp-tailwindcss");
|
|
6400
6843
|
const weappTailwindcssDirPosix = require_source_candidate_scan_signature.slash(weappTailwindcssPackageDir);
|
|
6401
6844
|
const SOURCE_CANDIDATE_SCAN_CACHE_MAX = 8;
|
|
6845
|
+
const WEB_HMR_RUNTIME_AFFECTING_DIRECTIVE_RE = /@(?:theme|source|config|plugin|apply)\b/;
|
|
6402
6846
|
const sourceCandidateScanSnapshotCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
6403
6847
|
const ENV_PLATFORM_KEYS = [
|
|
6404
6848
|
"UNI_PLATFORM",
|
|
@@ -6433,9 +6877,6 @@ function inferPlatformFromOutDir(outDir) {
|
|
|
6433
6877
|
function isWebOrNativeAppPlatform(platform) {
|
|
6434
6878
|
return platform === "h5" || platform === "web" || platform?.startsWith("web-") === true || platform === "app" || platform === "app-plus" || platform?.startsWith("app-") === true;
|
|
6435
6879
|
}
|
|
6436
|
-
function applyViteWebCssCompat(css, options) {
|
|
6437
|
-
return (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, options.compat);
|
|
6438
|
-
}
|
|
6439
6880
|
function isInternalUserDefinedOptions(options) {
|
|
6440
6881
|
return typeof options.onLoad === "function" && typeof options.mainCssChunkMatcher === "function" && typeof options.tailwindRuntime === "object" && typeof options.refreshTailwindcssRuntime === "function";
|
|
6441
6882
|
}
|
|
@@ -6454,7 +6895,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6454
6895
|
});
|
|
6455
6896
|
const syncCssEntriesFromAnchor = (anchor) => {
|
|
6456
6897
|
var _opts$tailwindcss;
|
|
6457
|
-
const normalizedCssEntries =
|
|
6898
|
+
const normalizedCssEntries = require_generator.normalizeCssEntries(rawCssEntries, anchor ?? node_process.default.cwd());
|
|
6458
6899
|
if (!normalizedCssEntries) return false;
|
|
6459
6900
|
const changed = !sameStringList(opts.cssEntries, normalizedCssEntries);
|
|
6460
6901
|
opts.cssEntries = normalizedCssEntries;
|
|
@@ -6475,7 +6916,6 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6475
6916
|
const disabledOptions = require_source_candidate_scan_signature.resolvePluginDisabledState(disabled);
|
|
6476
6917
|
const tailwindcssMajorVersion = initialTailwindRuntime.majorVersion ?? 0;
|
|
6477
6918
|
if (!disabledOptions.plugin && tailwindcssMajorVersion !== 4) throw new Error("weapp-tailwindcss/vite 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
6478
|
-
const shouldOwnTailwindGeneration = !disabledOptions.plugin;
|
|
6479
6919
|
const shouldRewriteCssImports = opts.rewriteCssImports === true;
|
|
6480
6920
|
let resolvedConfig;
|
|
6481
6921
|
const resolveViteStylePlatform = () => {
|
|
@@ -6494,6 +6934,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6494
6934
|
tailwindcssMajorVersion,
|
|
6495
6935
|
uniAppX
|
|
6496
6936
|
});
|
|
6937
|
+
const shouldOwnTailwindGeneration = !disabledOptions.plugin && resolveCurrentGeneratorOptions().enabled;
|
|
6497
6938
|
const resolveCurrentGeneratorBranch = () => require_generator.resolveGeneratorRuntimeBranch(resolveCurrentGeneratorOptions(), {
|
|
6498
6939
|
appType: opts.appType,
|
|
6499
6940
|
platform: resolveGeneratorPlatform(),
|
|
@@ -6523,7 +6964,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6523
6964
|
return (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(css);
|
|
6524
6965
|
};
|
|
6525
6966
|
const shouldInferAppType = !hasExplicitAppType && !initialGeneratorBranch.isWeb;
|
|
6526
|
-
const hasInitialTailwindCssRoots =
|
|
6967
|
+
const hasInitialTailwindCssRoots = require_generator.hasConfiguredTailwindV4CssRoots({
|
|
6527
6968
|
...rawOptions,
|
|
6528
6969
|
cssEntries: opts.cssEntries ?? rawOptions.cssEntries
|
|
6529
6970
|
});
|
|
@@ -6541,11 +6982,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6541
6982
|
if (!shouldOwnTailwindGeneration) return;
|
|
6542
6983
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6543
6984
|
if (!node_path.default.isAbsolute(file)) return;
|
|
6544
|
-
if (!
|
|
6985
|
+
if (!require_generator.isTailwindV4CssEntry(file)) return;
|
|
6545
6986
|
if (isMissingInternalCssSource(file, weappTailwindcssPackageDir)) return;
|
|
6546
6987
|
const sourceFile = node_path.default.normalize(file);
|
|
6547
6988
|
const sourceBase = node_path.default.dirname(sourceFile);
|
|
6548
|
-
const sourceCss =
|
|
6989
|
+
const sourceCss = require_generator.normalizeTailwindSourceForGenerator(require_generator.normalizeTailwindConfigDirectives(css, sourceBase), { importFallback: true });
|
|
6549
6990
|
if (autoCssSourceContent.get(sourceFile) === sourceCss) return;
|
|
6550
6991
|
autoCssSourceContent.set(sourceFile, sourceCss);
|
|
6551
6992
|
await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
|
|
@@ -6563,7 +7004,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6563
7004
|
const dependencies = await require_tailwindcss.resolveViteTailwindV4CssDependencies(sourceCss, sourceBase);
|
|
6564
7005
|
transientSource.dependencies = dependencies;
|
|
6565
7006
|
transientAutoCssSources.set(sourceFile, transientSource);
|
|
6566
|
-
if (!
|
|
7007
|
+
if (!require_generator.upsertTailwindV4CssSource(opts, {
|
|
6567
7008
|
file: sourceFile,
|
|
6568
7009
|
base: sourceBase,
|
|
6569
7010
|
css: sourceCss,
|
|
@@ -6586,11 +7027,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6586
7027
|
for (const cssEntry of cssEntries) {
|
|
6587
7028
|
const sourceFile = node_path.default.resolve(cssEntry);
|
|
6588
7029
|
const sourceBase = node_path.default.dirname(sourceFile);
|
|
6589
|
-
const sourceCss =
|
|
7030
|
+
const sourceCss = require_generator.normalizeTailwindSourceForGenerator(require_generator.normalizeTailwindConfigDirectives(await (0, node_fs_promises.readFile)(sourceFile, "utf8"), sourceBase), { importFallback: true });
|
|
6590
7031
|
if (autoCssSourceContent.get(sourceFile) === sourceCss) continue;
|
|
6591
7032
|
autoCssSourceContent.set(sourceFile, sourceCss);
|
|
6592
7033
|
await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
|
|
6593
|
-
changed =
|
|
7034
|
+
changed = require_generator.upsertTailwindV4CssSource(opts, {
|
|
6594
7035
|
file: sourceFile,
|
|
6595
7036
|
base: sourceBase,
|
|
6596
7037
|
css: sourceCss,
|
|
@@ -6614,8 +7055,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6614
7055
|
const pendingSourceCandidateSyncs = /* @__PURE__ */ new Set();
|
|
6615
7056
|
const pendingSourceCandidateSyncByFile = /* @__PURE__ */ new Map();
|
|
6616
7057
|
const processedCssAssets = /* @__PURE__ */ new WeakSet();
|
|
7058
|
+
const processedCssAssetSourceByFile = /* @__PURE__ */ new Map();
|
|
6617
7059
|
const viteProcessedCssSourceFiles = /* @__PURE__ */ new Set();
|
|
6618
|
-
const
|
|
7060
|
+
const cleanGeneratedCssByFile = /* @__PURE__ */ new Map();
|
|
7061
|
+
const tracedGeneratedCssByFile = /* @__PURE__ */ new Map();
|
|
7062
|
+
const generatedClassSetByFile = /* @__PURE__ */ new Map();
|
|
6619
7063
|
const viteProcessedCssAssetResults = /* @__PURE__ */ new Map();
|
|
6620
7064
|
const cssMemory = createViteCssMemory({
|
|
6621
7065
|
debug,
|
|
@@ -6635,15 +7079,21 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6635
7079
|
refreshRuntimeStateForAutoCssSources = refreshRuntimeState;
|
|
6636
7080
|
onLoad();
|
|
6637
7081
|
const getResolvedConfig = () => resolvedConfig;
|
|
6638
|
-
const
|
|
7082
|
+
const readCssAssetSource = (asset) => {
|
|
7083
|
+
return typeof asset.source === "string" ? asset.source : asset.source instanceof Uint8Array ? node_buffer.Buffer.from(asset.source).toString() : String(asset.source ?? "");
|
|
7084
|
+
};
|
|
7085
|
+
const markCssAssetProcessed = (asset, file) => {
|
|
6639
7086
|
processedCssAssets.add(asset);
|
|
7087
|
+
if (file) processedCssAssetSourceByFile.set(require_source_candidate_scan_signature.normalizeOutputPathKey(file), readCssAssetSource(asset));
|
|
6640
7088
|
};
|
|
6641
7089
|
const isCssAssetProcessed = (asset, file) => {
|
|
6642
7090
|
if (processedCssAssets.has(asset)) return true;
|
|
6643
7091
|
if (!file) return false;
|
|
7092
|
+
const source = readCssAssetSource(asset);
|
|
7093
|
+
if (processedCssAssetSourceByFile.get(require_source_candidate_scan_signature.normalizeOutputPathKey(file)) === source) return true;
|
|
6644
7094
|
const record = viteProcessedCssAssetResults.get(require_source_candidate_scan_signature.normalizeOutputPathKey(file));
|
|
6645
7095
|
if (!record) return false;
|
|
6646
|
-
return
|
|
7096
|
+
return source === record.css;
|
|
6647
7097
|
};
|
|
6648
7098
|
const recordGeneratorCandidates = (candidates) => {
|
|
6649
7099
|
recordedGeneratorCandidates = new Set(candidates);
|
|
@@ -6666,6 +7116,95 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6666
7116
|
const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6667
7117
|
return cleanId.includes("/pages/") && /\.(?:vue|tsx?|jsx?)$/.test(cleanId);
|
|
6668
7118
|
};
|
|
7119
|
+
const hasWebHmrRuntimeAffectingDirectives = (source) => typeof source === "string" && WEB_HMR_RUNTIME_AFFECTING_DIRECTIVE_RE.test(source);
|
|
7120
|
+
let pendingHmrCandidateChange;
|
|
7121
|
+
let pendingHmrCssTargetFiles;
|
|
7122
|
+
let pendingFullHmrCssRegeneration = false;
|
|
7123
|
+
const normalizeHmrCssTargetFile = (file) => normalizeVitePersistentCacheKey((0, _weapp_tailwindcss_shared.cleanUrl)(file));
|
|
7124
|
+
const collectPendingHmrCssTargetFiles = (cssModules, fallbackCssIds) => {
|
|
7125
|
+
const targets = /* @__PURE__ */ new Set();
|
|
7126
|
+
const addTarget = (file) => {
|
|
7127
|
+
if (typeof file !== "string" || file.length === 0) return;
|
|
7128
|
+
const key = normalizeHmrCssTargetFile(file);
|
|
7129
|
+
if (cleanGeneratedCssByFile.has(key)) targets.add(key);
|
|
7130
|
+
};
|
|
7131
|
+
for (const mod of cssModules) {
|
|
7132
|
+
addTarget(mod.id);
|
|
7133
|
+
addTarget(mod.file);
|
|
7134
|
+
addTarget(mod.url);
|
|
7135
|
+
}
|
|
7136
|
+
for (const id of fallbackCssIds) addTarget(id);
|
|
7137
|
+
return targets.size > 0 ? targets : void 0;
|
|
7138
|
+
};
|
|
7139
|
+
const armPendingHmrCssTargetFiles = (cssModules, fallbackCssIds) => {
|
|
7140
|
+
if (!pendingHmrCandidateChange) {
|
|
7141
|
+
pendingHmrCssTargetFiles = void 0;
|
|
7142
|
+
return;
|
|
7143
|
+
}
|
|
7144
|
+
pendingHmrCssTargetFiles = collectPendingHmrCssTargetFiles(cssModules, fallbackCssIds);
|
|
7145
|
+
};
|
|
7146
|
+
const createViteSourceCandidateChange = (file, change, options = {}) => ({
|
|
7147
|
+
...change,
|
|
7148
|
+
file,
|
|
7149
|
+
runtimeAffecting: options.runtimeAffecting === true || require_source_candidate_scan_signature.isSourceStyleRequest(file) || hasWebHmrRuntimeAffectingDirectives(sourceCandidateCollector.source(file))
|
|
7150
|
+
});
|
|
7151
|
+
const clearPendingHmrCandidateChange = () => {
|
|
7152
|
+
pendingHmrCandidateChange = void 0;
|
|
7153
|
+
pendingHmrCssTargetFiles = void 0;
|
|
7154
|
+
pendingFullHmrCssRegeneration = false;
|
|
7155
|
+
};
|
|
7156
|
+
const queueHmrCandidateChange = (change) => {
|
|
7157
|
+
pendingFullHmrCssRegeneration = false;
|
|
7158
|
+
if (!pendingHmrCandidateChange) {
|
|
7159
|
+
pendingHmrCandidateChange = {
|
|
7160
|
+
file: change.file,
|
|
7161
|
+
runtimeAffecting: change.runtimeAffecting,
|
|
7162
|
+
addedCandidates: new Set(change.addedCandidates),
|
|
7163
|
+
removedCandidates: new Set(change.removedCandidates)
|
|
7164
|
+
};
|
|
7165
|
+
return;
|
|
7166
|
+
}
|
|
7167
|
+
for (const candidate of change.addedCandidates) {
|
|
7168
|
+
pendingHmrCandidateChange.addedCandidates.add(candidate);
|
|
7169
|
+
pendingHmrCandidateChange.removedCandidates.delete(candidate);
|
|
7170
|
+
}
|
|
7171
|
+
for (const candidate of change.removedCandidates) if (!pendingHmrCandidateChange.addedCandidates.delete(candidate)) pendingHmrCandidateChange.removedCandidates.add(candidate);
|
|
7172
|
+
pendingHmrCandidateChange.runtimeAffecting = pendingHmrCandidateChange.runtimeAffecting || change.runtimeAffecting;
|
|
7173
|
+
pendingHmrCandidateChange.file = change.file;
|
|
7174
|
+
};
|
|
7175
|
+
const queueFullHmrCssRegeneration = () => {
|
|
7176
|
+
pendingHmrCandidateChange = void 0;
|
|
7177
|
+
pendingHmrCssTargetFiles = void 0;
|
|
7178
|
+
pendingFullHmrCssRegeneration = true;
|
|
7179
|
+
};
|
|
7180
|
+
const applySourceCandidateHmrState = (change) => {
|
|
7181
|
+
if (require_source_candidate_scan_signature.isSourceStyleRequest(change.file)) {
|
|
7182
|
+
clearPendingHmrCandidateChange();
|
|
7183
|
+
return change;
|
|
7184
|
+
}
|
|
7185
|
+
const preserveDeletedCssInHmr = resolveCurrentGeneratorOptions().hmr.preserveDeletedCss;
|
|
7186
|
+
if (preserveDeletedCssInHmr && !change.runtimeAffecting) {
|
|
7187
|
+
if (change.addedCandidates.size > 0) queueHmrCandidateChange(change);
|
|
7188
|
+
else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
|
|
7189
|
+
return change;
|
|
7190
|
+
}
|
|
7191
|
+
clearPendingHmrCandidateChange();
|
|
7192
|
+
if (!preserveDeletedCssInHmr) queueFullHmrCssRegeneration();
|
|
7193
|
+
return change;
|
|
7194
|
+
};
|
|
7195
|
+
const resolvePendingHmrCandidateChange = (generatorCode, file) => {
|
|
7196
|
+
if (resolvedConfig?.command !== "serve" || !pendingHmrCandidateChange || pendingHmrCandidateChange.runtimeAffecting || pendingHmrCandidateChange.addedCandidates.size === 0 || resolveCurrentGeneratorOptions().target === "weapp" && require_generator.hasUserCssLayerBlocks(generatorCode) || !cleanGeneratedCssByFile.has(file) || !generatedClassSetByFile.has(file) || pendingHmrCssTargetFiles !== void 0 && !pendingHmrCssTargetFiles.has(normalizeHmrCssTargetFile(file))) return;
|
|
7197
|
+
return pendingHmrCandidateChange;
|
|
7198
|
+
};
|
|
7199
|
+
const finishPendingHmrCssTargetFile = (file) => {
|
|
7200
|
+
if (!pendingHmrCandidateChange) return;
|
|
7201
|
+
if (!pendingHmrCssTargetFiles) {
|
|
7202
|
+
clearPendingHmrCandidateChange();
|
|
7203
|
+
return;
|
|
7204
|
+
}
|
|
7205
|
+
pendingHmrCssTargetFiles.delete(normalizeHmrCssTargetFile(file));
|
|
7206
|
+
if (pendingHmrCssTargetFiles.size === 0) clearPendingHmrCandidateChange();
|
|
7207
|
+
};
|
|
6669
7208
|
const hasSourceCandidateScanState = () => sourceCandidateScanSignature !== void 0;
|
|
6670
7209
|
const normalizeSourceScanDependency = (file) => node_path.default.normalize(node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file)));
|
|
6671
7210
|
const isSourceScanDependency = (file) => sourceScanDependencies.has(normalizeSourceScanDependency(file));
|
|
@@ -6691,7 +7230,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6691
7230
|
seenRoots.add(basedir);
|
|
6692
7231
|
}
|
|
6693
7232
|
for (const cssEntry of opts.tailwindcss?.v4?.cssEntries ?? []) {
|
|
6694
|
-
if (!
|
|
7233
|
+
if (!require_generator.isTailwindV4CssEntry(cssEntry)) continue;
|
|
6695
7234
|
const cssEntryRoot = node_path.default.dirname(node_path.default.resolve(cssEntry));
|
|
6696
7235
|
if (seenRoots.has(cssEntryRoot)) continue;
|
|
6697
7236
|
roots.push({ root: cssEntryRoot });
|
|
@@ -6770,34 +7309,41 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6770
7309
|
const waitForSourceCandidateSyncs = async () => {
|
|
6771
7310
|
while (pendingSourceCandidateSyncs.size > 0) await Promise.all(pendingSourceCandidateSyncs);
|
|
6772
7311
|
};
|
|
6773
|
-
const syncChangedSourceCandidateFile = (id) => {
|
|
6774
|
-
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id)) return Promise.resolve();
|
|
7312
|
+
const syncChangedSourceCandidateFile = (id, sourceOverride) => {
|
|
7313
|
+
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id)) return Promise.resolve(void 0);
|
|
6775
7314
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6776
|
-
|
|
7315
|
+
const runtimeAffectingByDependency = isSourceScanDependency(file);
|
|
7316
|
+
if (runtimeAffectingByDependency) invalidateSourceCandidateScan();
|
|
6777
7317
|
if (sourceScanMatcher && !sourceScanMatcher(file)) {
|
|
6778
|
-
sourceCandidateCollector.remove(file);
|
|
7318
|
+
const change = sourceCandidateCollector.remove(file);
|
|
6779
7319
|
cacheCurrentSourceCandidateScan();
|
|
6780
7320
|
if (require_source_candidate_scan_signature.isSourceStyleRequest(file)) return (0, node_fs_promises.readFile)(file, "utf8").then((source) => cssMemory.refreshRememberedCssSourceBySourceFile(file, source)).catch((error) => {
|
|
6781
7321
|
if ((typeof error === "object" && error !== null && "code" in error ? error.code : void 0) !== "ENOENT") debug("remembered css source watch refresh failed: %s %O", file, error);
|
|
6782
|
-
}).then(() => cssMemory.refreshRememberedCssSourceByCurrentFile(file)).then(() =>
|
|
6783
|
-
return cssMemory.refreshRememberedCssSourceByCurrentFile(file);
|
|
7322
|
+
}).then(() => cssMemory.refreshRememberedCssSourceByCurrentFile(file)).then(() => applySourceCandidateHmrState(createViteSourceCandidateChange(file, change, { runtimeAffecting: true })));
|
|
7323
|
+
return cssMemory.refreshRememberedCssSourceByCurrentFile(file).then(() => applySourceCandidateHmrState(createViteSourceCandidateChange(file, change, { runtimeAffecting: true })));
|
|
6784
7324
|
}
|
|
6785
|
-
const existingTask = pendingSourceCandidateSyncByFile.get(file);
|
|
6786
|
-
if (existingTask) return existingTask.then(
|
|
6787
|
-
|
|
7325
|
+
const existingTask = sourceOverride === void 0 ? pendingSourceCandidateSyncByFile.get(file) : void 0;
|
|
7326
|
+
if (existingTask) return existingTask.then(async () => {
|
|
7327
|
+
return await syncChangedSourceCandidateFile(id);
|
|
7328
|
+
});
|
|
7329
|
+
const task = (sourceOverride === void 0 ? sourceCandidateCollector.syncCurrentFile(id) : sourceCandidateCollector.syncCurrentSource(id, sourceOverride)).catch((error) => {
|
|
6788
7330
|
debug("source candidate watch sync failed: %s %O", id, error);
|
|
6789
|
-
}).then(() => {
|
|
7331
|
+
}).then((change) => {
|
|
6790
7332
|
cacheCurrentSourceCandidateScan();
|
|
7333
|
+
return change ? applySourceCandidateHmrState(createViteSourceCandidateChange(file, change, { runtimeAffecting: runtimeAffectingByDependency })) : void 0;
|
|
6791
7334
|
}).finally(() => {
|
|
6792
7335
|
pendingSourceCandidateSyncs.delete(task);
|
|
6793
7336
|
pendingSourceCandidateSyncByFile.delete(file);
|
|
6794
7337
|
});
|
|
6795
7338
|
pendingSourceCandidateSyncs.add(task);
|
|
6796
7339
|
pendingSourceCandidateSyncByFile.set(file, task);
|
|
6797
|
-
return task.then(
|
|
7340
|
+
return task.then(async (change) => {
|
|
7341
|
+
await cssMemory.refreshRememberedCssSourceByCurrentFile(file);
|
|
7342
|
+
return change;
|
|
7343
|
+
});
|
|
6798
7344
|
};
|
|
6799
7345
|
const recordCssAssetResult = (file, css) => {
|
|
6800
|
-
touchMapEntry(
|
|
7346
|
+
touchMapEntry(cleanGeneratedCssByFile, normalizeVitePersistentCacheKey(file), css);
|
|
6801
7347
|
};
|
|
6802
7348
|
const recordViteProcessedCssAssetResult = (file, css, options = {}) => {
|
|
6803
7349
|
const key = normalizeVitePersistentCacheKey(file);
|
|
@@ -6811,8 +7357,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6811
7357
|
const getViteProcessedCssAssetResults = () => viteProcessedCssAssetResults.entries();
|
|
6812
7358
|
const getViteProcessedCssAssetResult = (file) => viteProcessedCssAssetResults.get(normalizeVitePersistentCacheKey(file));
|
|
6813
7359
|
const getViteCssCacheStats = () => ({
|
|
6814
|
-
|
|
6815
|
-
|
|
7360
|
+
cleanGeneratedCssByFile: cleanGeneratedCssByFile.size,
|
|
7361
|
+
cleanGeneratedCssByFileRaw: summarizeStringCache(cleanGeneratedCssByFile),
|
|
7362
|
+
tracedGeneratedCssByFile: tracedGeneratedCssByFile.size,
|
|
7363
|
+
tracedGeneratedCssByFileRaw: summarizeStringCache(tracedGeneratedCssByFile),
|
|
7364
|
+
generatedClassSetByFile: generatedClassSetByFile.size,
|
|
6816
7365
|
viteProcessedCssAssetResults: viteProcessedCssAssetResults.size,
|
|
6817
7366
|
viteProcessedCssAssetResultsRaw: summarizeViteProcessedCssResults(viteProcessedCssAssetResults),
|
|
6818
7367
|
...cssMemory.getStats(),
|
|
@@ -6822,7 +7371,9 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6822
7371
|
});
|
|
6823
7372
|
const pruneViteCssCaches = (options) => {
|
|
6824
7373
|
const activeFiles = new Set([...options.activeFiles].map(normalizeVitePersistentCacheKey));
|
|
6825
|
-
for (const key of
|
|
7374
|
+
for (const key of cleanGeneratedCssByFile.keys()) if (!activeFiles.has(key)) cleanGeneratedCssByFile.delete(key);
|
|
7375
|
+
for (const key of tracedGeneratedCssByFile.keys()) if (!activeFiles.has(key)) tracedGeneratedCssByFile.delete(key);
|
|
7376
|
+
for (const key of generatedClassSetByFile.keys()) if (!activeFiles.has(key)) generatedClassSetByFile.delete(key);
|
|
6826
7377
|
for (const [key, record] of viteProcessedCssAssetResults) {
|
|
6827
7378
|
const outputKey = typeof record.outputFile === "string" ? normalizeVitePersistentCacheKey(record.outputFile) : void 0;
|
|
6828
7379
|
if (!activeFiles.has(key) && (outputKey == null || !activeFiles.has(outputKey))) viteProcessedCssAssetResults.delete(key);
|
|
@@ -6836,7 +7387,12 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6836
7387
|
const rememberTailwindRootCssModule = (id) => {
|
|
6837
7388
|
if (!shouldOwnTailwindGeneration) return;
|
|
6838
7389
|
tailwindRootCssModuleIds.add(id);
|
|
6839
|
-
|
|
7390
|
+
const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
7391
|
+
if (require_source_candidate_scan_signature.isSourceStyleRequest(cleanId)) tailwindRootCssModuleIds.add(cleanId);
|
|
7392
|
+
};
|
|
7393
|
+
const registerTailwindRootCss = async (id, code) => {
|
|
7394
|
+
rememberTailwindRootCssModule(id);
|
|
7395
|
+
await registerAutoCssSource(id, code);
|
|
6840
7396
|
};
|
|
6841
7397
|
const isUniViteProject = () => {
|
|
6842
7398
|
return resolvedConfig?.plugins?.some((plugin) => plugin.name.includes("uni")) ?? false;
|
|
@@ -6878,7 +7434,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6878
7434
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6879
7435
|
const requestFile = require_source_candidate_scan_signature.isCSSRequest(id) ? id === file ? resolveSfcStyleRequestFromKnownSource(file, cssMemory.getKnownSfcSource(file), code) : id : file;
|
|
6880
7436
|
if (!require_source_candidate_scan_signature.isCSSRequest(requestFile) || opts.htmlMatcher(file) || require_source_candidate_scan_signature.isHTMLRequest(file)) return;
|
|
6881
|
-
const generatorCode =
|
|
7437
|
+
const generatorCode = require_generator.normalizeEmptyTailwindCustomVariants(code);
|
|
6882
7438
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
6883
7439
|
const currentGeneratorOptions = resolveCurrentGeneratorOptions();
|
|
6884
7440
|
const currentGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
@@ -6889,28 +7445,41 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6889
7445
|
const shouldPreserveStyleOutputExtension = frameworkCssPipelineStrategy?.shouldPreserveStyleOutputExtension?.(cssPipelineContext) ?? frameworkCssPipelineStrategy?.isNativeAppStyleTarget?.(cssPipelineContext) === true;
|
|
6890
7446
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType);
|
|
6891
7447
|
const outputFile = resolveViteCssPipelineOutputFile(requestFile, opts, rootDir, currentGeneratorBranch.isWeb, shouldPreserveStyleOutputExtension, sourceRoot);
|
|
6892
|
-
const
|
|
7448
|
+
const generatorTransformCode = currentGeneratorBranch.isWeb ? generatorCode : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(generatorCode, outputFile);
|
|
7449
|
+
const fullRuntime = getSourceCandidates() ?? getRecordedGeneratorCandidates() ?? await ensureRuntimeClassSet();
|
|
7450
|
+
const pendingHmrChange = resolvePendingHmrCandidateChange(generatorCode, file);
|
|
7451
|
+
const forceFullHmrCssRegeneration = pendingFullHmrCssRegeneration || resolvedConfig?.command === "serve" && pendingHmrCandidateChange !== void 0 && pendingHmrChange === void 0;
|
|
7452
|
+
const runtime = pendingHmrChange ? new Set(pendingHmrChange.addedCandidates) : fullRuntime;
|
|
7453
|
+
if (pendingHmrChange && currentGeneratorOptions.target === "weapp" && require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(pendingHmrChange.addedCandidates).size === 0) {
|
|
7454
|
+
const previousTracedCss = tracedGeneratedCssByFile.get(file);
|
|
7455
|
+
if (previousTracedCss !== void 0) {
|
|
7456
|
+
finishPendingHmrCssTargetFile(file);
|
|
7457
|
+
return `${require_source_candidate_scan_signature.createBundlerGeneratedCssMarker("vite", normalizeViteProcessedCssFile(file))}\n${previousTracedCss}`;
|
|
7458
|
+
}
|
|
7459
|
+
}
|
|
6893
7460
|
const sourceCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(requestFile);
|
|
6894
7461
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
6895
7462
|
const cssHandlerOptions = {
|
|
6896
7463
|
...sourceCssHandlerOptions,
|
|
6897
7464
|
isMainChunk: outputCssHandlerOptions.isMainChunk
|
|
6898
7465
|
};
|
|
6899
|
-
const transientCssSource = transientAutoCssSources.get(file) ?? (
|
|
7466
|
+
const transientCssSource = transientAutoCssSources.get(file) ?? (require_generator.hasTailwindRootDirectives(generatorTransformCode, { importFallback: currentGeneratorOptions.importFallback }) || require_generator.hasTailwindSourceDirectives(generatorTransformCode, { importFallback: currentGeneratorOptions.importFallback }) || require_generator.hasTailwindApplyDirective(generatorTransformCode) ? {
|
|
6900
7467
|
base: node_path.default.dirname(node_path.default.resolve(file)),
|
|
6901
|
-
css:
|
|
7468
|
+
css: generatorTransformCode,
|
|
6902
7469
|
file: node_path.default.resolve(file)
|
|
6903
7470
|
} : void 0);
|
|
6904
7471
|
const shouldDeferEmptyScopedCssSource = transientCssSource == null && (frameworkCssPipelineStrategy?.shouldDeferEmptyScopedCssSource?.({
|
|
6905
7472
|
...cssPipelineContext,
|
|
6906
7473
|
cssHandlerOptions,
|
|
6907
|
-
generatorCode
|
|
7474
|
+
generatorCode: generatorTransformCode
|
|
6908
7475
|
}) ?? true);
|
|
6909
|
-
const
|
|
7476
|
+
const previousCss = pendingHmrChange && !forceFullHmrCssRegeneration ? cleanGeneratedCssByFile.get(file) : void 0;
|
|
7477
|
+
const previousGeneratorCss = previousCss && !currentGeneratorBranch.isWeb ? require_hmr_timing.normalizeMiniProgramGeneratorCssSource(previousCss, outputFile) : previousCss;
|
|
7478
|
+
const generated = await hmrTimingRecorder.measure("generateCss.serve", () => require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
6910
7479
|
opts,
|
|
6911
7480
|
runtimeState,
|
|
6912
7481
|
runtime,
|
|
6913
|
-
rawSource:
|
|
7482
|
+
rawSource: generatorTransformCode,
|
|
6914
7483
|
file,
|
|
6915
7484
|
outputFile,
|
|
6916
7485
|
cssHandlerOptions,
|
|
@@ -6920,25 +7489,45 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6920
7489
|
generatorPlatform: resolveGeneratorPlatform(),
|
|
6921
7490
|
styleHandler,
|
|
6922
7491
|
debug,
|
|
6923
|
-
previousCss:
|
|
7492
|
+
previousCss: previousGeneratorCss,
|
|
7493
|
+
previousClassSet: pendingHmrChange && !forceFullHmrCssRegeneration ? generatedClassSetByFile.get(file) : void 0,
|
|
6924
7494
|
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
7495
|
+
disableSourceScan: pendingHmrChange !== void 0,
|
|
6925
7496
|
restoreLocalCssImports: !currentGeneratorBranch.isWeb
|
|
7497
|
+
}), {
|
|
7498
|
+
file,
|
|
7499
|
+
memoryDebug: {
|
|
7500
|
+
cleanCacheHit: cleanGeneratedCssByFile.has(file),
|
|
7501
|
+
forceFullHmrCssRegeneration,
|
|
7502
|
+
pendingAddedCandidates: pendingHmrCandidateChange?.addedCandidates.size ?? 0,
|
|
7503
|
+
pendingCssTargets: pendingHmrCssTargetFiles?.size ?? 0,
|
|
7504
|
+
pendingResolved: pendingHmrChange !== void 0,
|
|
7505
|
+
runtimeCandidates: runtime.size,
|
|
7506
|
+
target: currentGeneratorOptions.target
|
|
7507
|
+
}
|
|
6926
7508
|
});
|
|
6927
|
-
if (!generated)
|
|
7509
|
+
if (!generated) {
|
|
7510
|
+
if (pendingHmrChange) finishPendingHmrCssTargetFile(file);
|
|
7511
|
+
else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
|
|
7512
|
+
return;
|
|
7513
|
+
}
|
|
6928
7514
|
const finalizedCss = finalizeViteMiniProgramCss(generated.css);
|
|
6929
|
-
const shouldApplyWebCssCompat =
|
|
6930
|
-
const
|
|
7515
|
+
const shouldApplyWebCssCompat = shouldApplyViteWebCssCompat(cssPipelineContext, frameworkCssPipelineStrategy);
|
|
7516
|
+
const outputCss = frameworkCssPipelineStrategy?.transformGeneratedCss?.(finalizedCss, {
|
|
6931
7517
|
...cssPipelineContext,
|
|
6932
|
-
defaultWebCssCompat: (css) =>
|
|
7518
|
+
defaultWebCssCompat: (css) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, resolveViteWebCssCompatOptions(cssPipelineContext)),
|
|
6933
7519
|
removeScopedPreflight: removeScopedTailwindPreflightCss,
|
|
6934
7520
|
shouldApplyWebCssCompat
|
|
6935
|
-
}) ?? removeScopedTailwindPreflightCss(shouldApplyWebCssCompat ?
|
|
7521
|
+
}) ?? removeScopedTailwindPreflightCss(shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(finalizedCss, resolveViteWebCssCompatOptions(cssPipelineContext)) : finalizedCss);
|
|
7522
|
+
const tracedCss = require_hmr_timing.annotateCssSourceTrace(outputCss, {
|
|
6936
7523
|
opts,
|
|
6937
7524
|
tokenSources: require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts)
|
|
6938
7525
|
});
|
|
6939
7526
|
for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
|
|
6940
|
-
|
|
6941
|
-
|
|
7527
|
+
cleanGeneratedCssByFile.set(file, outputCss);
|
|
7528
|
+
tracedGeneratedCssByFile.set(file, tracedCss);
|
|
7529
|
+
generatedClassSetByFile.set(file, new Set(generated.classSet));
|
|
7530
|
+
const shouldInjectGeneratedCssIntoMain = mainCssChunkMatcher(outputFile, opts.appType) || require_generator.hasTailwindRootDirectives(generatorTransformCode, { importFallback: currentGeneratorOptions.importFallback }) && !require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/");
|
|
6942
7531
|
recordViteProcessedCssAssetResult(file, tracedCss, {
|
|
6943
7532
|
injectIntoMain: shouldInjectGeneratedCssIntoMain,
|
|
6944
7533
|
outputFile
|
|
@@ -6954,7 +7543,9 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6954
7543
|
});
|
|
6955
7544
|
markViteProcessedCssSource(file);
|
|
6956
7545
|
rememberTailwindRootCssModule(id);
|
|
6957
|
-
recordGeneratorCandidates(
|
|
7546
|
+
recordGeneratorCandidates(fullRuntime);
|
|
7547
|
+
if (pendingHmrChange) finishPendingHmrCssTargetFile(file);
|
|
7548
|
+
else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
|
|
6958
7549
|
cssMemory.rememberCssSource({
|
|
6959
7550
|
outputFile,
|
|
6960
7551
|
rawSource: code,
|
|
@@ -6967,10 +7558,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6967
7558
|
getAppType: () => opts.appType,
|
|
6968
7559
|
generateTailwindCss: generateTailwindCssForVitePipeline,
|
|
6969
7560
|
rootImport: shouldOwnTailwindGeneration ? `${weappTailwindcssDirPosix}/generator-placeholder.css` : void 0,
|
|
6970
|
-
onTailwindRootCss:
|
|
7561
|
+
onTailwindRootCss: registerTailwindRootCss,
|
|
6971
7562
|
onCssSourceTransform: (id, code) => cssMemory.refreshRememberedCssSourceBySourceFile(id, code),
|
|
6972
7563
|
shouldGenerateCss: (_id, code) => hasVitePipelineTailwindGenerationDirective(code),
|
|
6973
|
-
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports &&
|
|
7564
|
+
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_generator.hasTailwindRootDirectives(code, { importFallback: resolveCurrentGeneratorOptions().importFallback }),
|
|
6974
7565
|
shouldOwnTailwindGeneration,
|
|
6975
7566
|
shouldRewrite: shouldRewriteCssImports,
|
|
6976
7567
|
weappTailwindcssDirPosix
|
|
@@ -7073,7 +7664,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7073
7664
|
let transformedCode = code;
|
|
7074
7665
|
if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && require_source_candidate_scan_signature.isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
|
|
7075
7666
|
const shouldReturnTransformedCode = transformedCode !== code;
|
|
7076
|
-
if (shouldOwnTailwindGeneration)
|
|
7667
|
+
if (shouldOwnTailwindGeneration) {
|
|
7668
|
+
cssMemory.rememberKnownSfcSource(id, transformedCode);
|
|
7669
|
+
if (require_source_candidate_scan_signature.isCSSRequest(id) && require_generator.hasTailwindRootDirectives(transformedCode, { importFallback: resolveCurrentGeneratorOptions().importFallback })) rememberTailwindRootCssModule(id);
|
|
7670
|
+
}
|
|
7077
7671
|
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id) || !shouldCollectTransformedSourceCandidates(id)) {
|
|
7078
7672
|
if (shouldReturnTransformedCode) return {
|
|
7079
7673
|
code: transformedCode,
|
|
@@ -7103,8 +7697,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7103
7697
|
if (shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(id)) invalidateRecordedGeneratorCandidates();
|
|
7104
7698
|
if (isSourceScanDependency(id)) invalidateSourceCandidateScan();
|
|
7105
7699
|
if (change.event === "delete") {
|
|
7106
|
-
|
|
7700
|
+
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
7701
|
+
const sourceCandidateChange = sourceCandidateCollector.remove(file);
|
|
7107
7702
|
cacheCurrentSourceCandidateScan();
|
|
7703
|
+
applySourceCandidateHmrState(createViteSourceCandidateChange(file, sourceCandidateChange, { runtimeAffecting: isSourceScanDependency(file) }));
|
|
7108
7704
|
return;
|
|
7109
7705
|
}
|
|
7110
7706
|
await syncChangedSourceCandidateFile(id);
|
|
@@ -7113,18 +7709,36 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7113
7709
|
async handleHotUpdate(ctx) {
|
|
7114
7710
|
return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
|
|
7115
7711
|
const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(ctx.file);
|
|
7116
|
-
|
|
7712
|
+
if (isSourceCandidateHotUpdate && require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) for (const mod of ctx.modules) {
|
|
7713
|
+
if (mod.id) rememberTailwindRootCssModule(mod.id);
|
|
7714
|
+
if (mod.url) rememberTailwindRootCssModule(mod.url);
|
|
7715
|
+
if (mod.file) rememberTailwindRootCssModule(mod.file);
|
|
7716
|
+
}
|
|
7717
|
+
const canReadHotSource = typeof ctx.read === "function";
|
|
7718
|
+
const hotSource = isSourceCandidateHotUpdate && canReadHotSource ? await ctx.read().catch(() => void 0) : void 0;
|
|
7719
|
+
const sourceCandidateChange = await syncChangedSourceCandidateFile(ctx.file, hotSource);
|
|
7117
7720
|
const isWebLikeHotUpdate = isCurrentWebLikeStylePlatform();
|
|
7721
|
+
let canUseHmrCandidateAppend = false;
|
|
7118
7722
|
if (isSourceCandidateHotUpdate) {
|
|
7119
7723
|
invalidateRecordedGeneratorCandidates();
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7724
|
+
const preserveDeletedCssInHmr = resolveCurrentGeneratorOptions().hmr.preserveDeletedCss;
|
|
7725
|
+
canUseHmrCandidateAppend = preserveDeletedCssInHmr && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && sourceCandidateChange !== void 0 && !sourceCandidateChange.runtimeAffecting;
|
|
7726
|
+
if (!canUseHmrCandidateAppend) {
|
|
7727
|
+
if (sourceCandidateChange === void 0) {
|
|
7728
|
+
clearPendingHmrCandidateChange();
|
|
7729
|
+
if (!preserveDeletedCssInHmr && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) queueFullHmrCssRegeneration();
|
|
7730
|
+
}
|
|
7731
|
+
if (isWebLikeHotUpdate) {
|
|
7732
|
+
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
7733
|
+
await syncSourceCandidateScan({ force: true });
|
|
7734
|
+
}
|
|
7123
7735
|
}
|
|
7124
7736
|
}
|
|
7737
|
+
if (isSourceCandidateHotUpdate) await waitForSourceCandidateSyncs();
|
|
7125
7738
|
const cssModules = resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds);
|
|
7126
7739
|
const sourceModules = isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) ? resolveHotSourceModules(ctx) : ctx.modules;
|
|
7127
|
-
|
|
7740
|
+
const hasHmrCandidateAppend = pendingHmrCandidateChange !== void 0 && !pendingHmrCandidateChange.runtimeAffecting && pendingHmrCandidateChange.addedCandidates.size > 0 || canUseHmrCandidateAppend && sourceCandidateChange !== void 0 && sourceCandidateChange.addedCandidates.size > 0;
|
|
7741
|
+
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && !hasHmrCandidateAppend && !isWebLikeHotUpdate && (!hasSelfAcceptingNonStyleHotModule(sourceModules) && cssModules.length === 0 || cssModules.length > 0 && isUniViteProject())) {
|
|
7128
7742
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
7129
7743
|
return [];
|
|
7130
7744
|
}
|
|
@@ -7132,7 +7746,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7132
7746
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
7133
7747
|
return [];
|
|
7134
7748
|
}
|
|
7135
|
-
|
|
7749
|
+
const shouldSendSupplementalCssHotUpdates = !(isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && resolveCurrentGeneratorOptions().hmr.preserveDeletedCss && sourceCandidateChange !== void 0 && !sourceCandidateChange.runtimeAffecting && sourceCandidateChange.addedCandidates.size === 0 && sourceCandidateChange.removedCandidates.size > 0);
|
|
7750
|
+
const supplementalCssFallbackIds = /* @__PURE__ */ new Set([...tailwindRootCssModuleIds, ...viteProcessedCssSourceFiles]);
|
|
7751
|
+
if (hasHmrCandidateAppend) armPendingHmrCssTargetFiles(cssModules, supplementalCssFallbackIds);
|
|
7752
|
+
if (shouldSendSupplementalCssHotUpdates) sendSupplementalCssHotUpdates(ctx, cssModules, supplementalCssFallbackIds);
|
|
7136
7753
|
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) return;
|
|
7137
7754
|
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && cssModules.length > 0) return [...sourceModules, ...cssModules];
|
|
7138
7755
|
return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
|
|
@@ -7147,7 +7764,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7147
7764
|
...createViteServeCssGenerationPlugins({
|
|
7148
7765
|
generateCss: generateTailwindCssForVitePipeline,
|
|
7149
7766
|
getCommand: () => resolvedConfig?.command,
|
|
7150
|
-
onTailwindRootCss:
|
|
7767
|
+
onTailwindRootCss: registerTailwindRootCss,
|
|
7151
7768
|
shouldGenerate: () => shouldOwnTailwindGeneration
|
|
7152
7769
|
}),
|
|
7153
7770
|
createViteServeJsTransformPlugin({
|
|
@@ -7332,13 +7949,13 @@ const uniAppCssPipelineStrategy = {
|
|
|
7332
7949
|
return context.isWebGeneratorTarget && isUniAppWebviewAppBundle(context.bundleFiles);
|
|
7333
7950
|
},
|
|
7334
7951
|
shouldSelectConfiguredCssEntryRootSource(context) {
|
|
7335
|
-
return context.
|
|
7952
|
+
return context.opts.cssMatcher(context.outputFile) && context.isRootStyleOutputFile(context.outputFile);
|
|
7336
7953
|
},
|
|
7337
7954
|
shouldTransformServeJs(context) {
|
|
7338
7955
|
return !context.currentGeneratorBranch.isWeb || isUniAppWebviewStylePlatform(context.resolveStylePlatform());
|
|
7339
7956
|
},
|
|
7340
7957
|
transformGeneratedCss(css, context) {
|
|
7341
|
-
const webCss = context.shouldApplyWebCssCompat ?
|
|
7958
|
+
const webCss = context.shouldApplyWebCssCompat ? context.defaultWebCssCompat(css) : css;
|
|
7342
7959
|
const safeCss = isUniAppWebviewStylePlatform(context.resolveStylePlatform()) ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(webCss, { escapeMap: context.opts.escapeMap }) : webCss;
|
|
7343
7960
|
return context.removeScopedPreflight(safeCss);
|
|
7344
7961
|
}
|
|
@@ -7460,7 +8077,7 @@ const uniAppXCssPipelineStrategy = {
|
|
|
7460
8077
|
return true;
|
|
7461
8078
|
},
|
|
7462
8079
|
shouldDeferEmptyScopedCssSource(context) {
|
|
7463
|
-
if (!context.cssHandlerOptions.isMainChunk &&
|
|
8080
|
+
if (!context.cssHandlerOptions.isMainChunk && require_generator.hasTailwindApplyDirective(context.generatorCode)) return false;
|
|
7464
8081
|
return true;
|
|
7465
8082
|
},
|
|
7466
8083
|
transformGeneratedCss(css, context) {
|