weapp-tailwindcss 5.1.8 → 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-vf2-cDdk.mjs → vite-BimHmlSp.mjs} +892 -233
- package/dist/{vite-GdzlG_lx.js → vite-bztpcI8_.js} +936 -277
- 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) {
|
|
@@ -1816,30 +1836,65 @@ function dedupeViteCssResults(records) {
|
|
|
1816
1836
|
return true;
|
|
1817
1837
|
});
|
|
1818
1838
|
}
|
|
1819
|
-
function
|
|
1820
|
-
|
|
1839
|
+
function removeTailwindSourceMediaWrappersRoot(root) {
|
|
1840
|
+
let changed = false;
|
|
1841
|
+
root.walkAtRules("media", (atRule) => {
|
|
1842
|
+
if (!atRule.params.startsWith("source(")) return;
|
|
1843
|
+
if (atRule.nodes && atRule.nodes.length > 0) atRule.replaceWith(...atRule.nodes);
|
|
1844
|
+
else atRule.remove();
|
|
1845
|
+
changed = true;
|
|
1846
|
+
});
|
|
1847
|
+
if (changed) root.walkAtRules((atRule) => {
|
|
1848
|
+
if (atRule.nodes && atRule.nodes.length === 0) atRule.remove();
|
|
1849
|
+
});
|
|
1850
|
+
return changed;
|
|
1851
|
+
}
|
|
1852
|
+
function removeTailwindSourceMediaWrappersFallback(css) {
|
|
1853
|
+
return css.replace(/@media\s+source\([^)]*\)\s*\{\s*\/\*!\s*weapp-tailwindcss generator-placeholder\s*\*\/?\s*\}/gi, "").replace(/@media\s+source\([^)]*\)\s*\{\s*\}/gi, "");
|
|
1854
|
+
}
|
|
1855
|
+
function removeTailwindEntryDirectivesFromCss(css) {
|
|
1821
1856
|
try {
|
|
1822
|
-
const
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
else atRule.remove();
|
|
1828
|
-
changed = true;
|
|
1829
|
-
});
|
|
1830
|
-
root.walkAtRules((atRule) => {
|
|
1831
|
-
if (atRule.nodes && atRule.nodes.length === 0) {
|
|
1832
|
-
atRule.remove();
|
|
1833
|
-
changed = true;
|
|
1834
|
-
}
|
|
1835
|
-
});
|
|
1836
|
-
return changed ? root.toString() : css;
|
|
1857
|
+
const source = require_generator.stripGeneratorPlaceholderMarkers(css);
|
|
1858
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(source);
|
|
1859
|
+
const removedMediaWrappers = removeTailwindSourceMediaWrappersRoot(root);
|
|
1860
|
+
const removedTailwindDirectives = (0, _weapp_tailwindcss_postcss.removeTailwindSourceDirectivesRoot)(root);
|
|
1861
|
+
return removedMediaWrappers || removedTailwindDirectives ? root.toString() : source;
|
|
1837
1862
|
} catch {
|
|
1838
|
-
return
|
|
1863
|
+
return require_generator.removeTailwindSourceDirectives(removeTailwindSourceMediaWrappersFallback(css));
|
|
1839
1864
|
}
|
|
1840
1865
|
}
|
|
1841
|
-
function
|
|
1842
|
-
|
|
1866
|
+
function removeUnsupportedMiniProgramCssImportsFallback(css, file) {
|
|
1867
|
+
if (!isMiniProgramStyleOutputFile(file) || !css.includes("@import")) return css;
|
|
1868
|
+
return css.split(/\r?\n/).filter((line) => {
|
|
1869
|
+
const trimmed = line.trim();
|
|
1870
|
+
if (!trimmed.startsWith("@import")) return true;
|
|
1871
|
+
const request = (0, _weapp_tailwindcss_postcss.parseTailwindCssDirectiveRequest)(trimmed.slice(7).trim().replace(/;$/, "").trim());
|
|
1872
|
+
return request === void 0 || (0, _weapp_tailwindcss_postcss.isMiniProgramLocalCssImportRequest)(request);
|
|
1873
|
+
}).join("\n");
|
|
1874
|
+
}
|
|
1875
|
+
function normalizeInjectableCssForTarget(css, file) {
|
|
1876
|
+
return normalizeInjectableCssForTargetWithImports(css, file).css;
|
|
1877
|
+
}
|
|
1878
|
+
function normalizeInjectableCssForTargetWithImports(css, file) {
|
|
1879
|
+
if (!css.includes("@import")) return {
|
|
1880
|
+
css,
|
|
1881
|
+
importedStyleFiles: /* @__PURE__ */ new Set()
|
|
1882
|
+
};
|
|
1883
|
+
try {
|
|
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);
|
|
1887
|
+
return {
|
|
1888
|
+
css: changed ? root.toString() : css,
|
|
1889
|
+
importedStyleFiles: importedStyleFiles.size > 0 ? importedStyleFiles : collectImportedStyleFilesFallback(css, file)
|
|
1890
|
+
};
|
|
1891
|
+
} catch {
|
|
1892
|
+
const fallbackCss = removeUnsupportedMiniProgramCssImportsFallback(css, file);
|
|
1893
|
+
return {
|
|
1894
|
+
css: fallbackCss,
|
|
1895
|
+
importedStyleFiles: collectImportedStyleFiles(fallbackCss, file)
|
|
1896
|
+
};
|
|
1897
|
+
}
|
|
1843
1898
|
}
|
|
1844
1899
|
function stripStyleExtension(file) {
|
|
1845
1900
|
return file.replace(/[?#].*$/, "").replace(/\.(?:css|wxss|acss|ttss|qss|jxss|tyss|scss|sass|less|styl|stylus|pcss|postcss)$/i, "");
|
|
@@ -1854,15 +1909,27 @@ function resolveImportedStyleFile(targetFile, request) {
|
|
|
1854
1909
|
const targetDir = posix.posix.dirname(require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile));
|
|
1855
1910
|
return require_source_candidate_scan_signature.normalizeOutputPathKey(posix.posix.join(targetDir === "." ? "" : targetDir, cleanRequest));
|
|
1856
1911
|
}
|
|
1857
|
-
function
|
|
1912
|
+
function collectImportedStyleFilesFromRequests(requests, targetFile) {
|
|
1858
1913
|
const imports = /* @__PURE__ */ new Set();
|
|
1914
|
+
for (const request of requests) {
|
|
1915
|
+
const importedFile = resolveImportedStyleFile(targetFile, request);
|
|
1916
|
+
if (importedFile) imports.add(importedFile);
|
|
1917
|
+
}
|
|
1918
|
+
return imports;
|
|
1919
|
+
}
|
|
1920
|
+
function collectImportedStyleFilesRoot(root, targetFile) {
|
|
1921
|
+
return collectImportedStyleFilesFromRequests((0, _weapp_tailwindcss_postcss.collectCssImportRequestsRoot)(root), targetFile);
|
|
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
|
+
}
|
|
1926
|
+
function collectImportedStyleFiles(css, targetFile) {
|
|
1927
|
+
if (!css.includes("@import")) return /* @__PURE__ */ new Set();
|
|
1859
1928
|
try {
|
|
1860
|
-
_weapp_tailwindcss_postcss.postcss.parse(css)
|
|
1861
|
-
|
|
1862
|
-
if (importedFile) imports.add(importedFile);
|
|
1863
|
-
});
|
|
1929
|
+
const imports = collectImportedStyleFilesRoot(_weapp_tailwindcss_postcss.postcss.parse(css), targetFile);
|
|
1930
|
+
return imports.size > 0 ? imports : collectImportedStyleFilesFallback(css, targetFile);
|
|
1864
1931
|
} catch {}
|
|
1865
|
-
return
|
|
1932
|
+
return collectImportedStyleFilesFallback(css, targetFile);
|
|
1866
1933
|
}
|
|
1867
1934
|
function normalizeMarkerOutputFile(markerFile, resolveViteProcessedCssOutputFile) {
|
|
1868
1935
|
return resolveViteProcessedCssOutputFile?.(markerFile) ?? markerFile;
|
|
@@ -2019,9 +2086,21 @@ function isUnscopedMiniProgramTailwindPreflightRule(rule) {
|
|
|
2019
2086
|
const declarations = rule.nodes?.filter((node) => node.type === "decl") ?? [];
|
|
2020
2087
|
return declarations.length > 0 && declarations.every(isMiniProgramTailwindPreflightDeclaration);
|
|
2021
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
|
+
}
|
|
2022
2098
|
function hasUnscopedMiniProgramTailwindPreflightRule(css) {
|
|
2023
2099
|
return /(?:^|[{}])\s*view\s*,\s*text\s*,\s*::after\s*,\s*::before\s*\{/.test(css);
|
|
2024
2100
|
}
|
|
2101
|
+
function hasScopedMiniProgramTailwindContentInitRule(css) {
|
|
2102
|
+
return /(?:^|[{}])[^{}]*\.data-v-[\w-][^{}]*\{\s*--tw-content\s*:/.test(css);
|
|
2103
|
+
}
|
|
2025
2104
|
function collectRootScopedComparableCssCoverage(cssSources) {
|
|
2026
2105
|
const rules = /* @__PURE__ */ new Set();
|
|
2027
2106
|
const atRules = /* @__PURE__ */ new Set();
|
|
@@ -2058,14 +2137,15 @@ function isRuleCoveredByRootCss(rule, coverage) {
|
|
|
2058
2137
|
return declarationKeys.length > 0 && selectors.every((selector) => {
|
|
2059
2138
|
const rootDeclarations = coverage.declarationsBySelector.get(normalizeCssSignatureValue(selector));
|
|
2060
2139
|
return rootDeclarations != null && declarationKeys.every((declaration) => rootDeclarations.has(declaration));
|
|
2061
|
-
})
|
|
2140
|
+
});
|
|
2062
2141
|
}
|
|
2063
2142
|
function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
2064
2143
|
if (!hasVueScopedAttr(css)) return css;
|
|
2065
2144
|
const hasScopedTailwindGeneratedCss = /tailwindcss v\d/i.test(css);
|
|
2066
2145
|
const hasUnscopedMiniProgramPreflight = hasUnscopedMiniProgramTailwindPreflightRule(css);
|
|
2146
|
+
const hasScopedMiniProgramContentInit = hasScopedMiniProgramTailwindContentInitRule(css);
|
|
2067
2147
|
const coverage = collectRootScopedComparableCssCoverage(rootSources);
|
|
2068
|
-
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;
|
|
2069
2149
|
try {
|
|
2070
2150
|
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2071
2151
|
let changed = false;
|
|
@@ -2076,7 +2156,7 @@ function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
|
2076
2156
|
}
|
|
2077
2157
|
});
|
|
2078
2158
|
root.walkRules((rule) => {
|
|
2079
|
-
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule) || isUnscopedMiniProgramTailwindPreflightRule(rule)) {
|
|
2159
|
+
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule) || isUnscopedMiniProgramTailwindPreflightRule(rule) || isScopedMiniProgramTailwindContentInitRule(rule)) {
|
|
2080
2160
|
rule.remove();
|
|
2081
2161
|
changed = true;
|
|
2082
2162
|
}
|
|
@@ -2210,6 +2290,7 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records, options, bu
|
|
|
2210
2290
|
}) === true && !isMiniProgramStyleOutputFile(file) && matchedRootWebOutputTargets.length > 0) return matchedRootWebOutputTargets.includes(fileKey);
|
|
2211
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));
|
|
2212
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));
|
|
2213
2294
|
if (context !== void 0 && options.cssPipelineStrategy?.shouldPreferExplicitWebCssTargets?.({
|
|
2214
2295
|
...context,
|
|
2215
2296
|
explicitRootTargets,
|
|
@@ -2219,12 +2300,25 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records, options, bu
|
|
|
2219
2300
|
if (explicitRootTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2220
2301
|
if (records.some((record) => {
|
|
2221
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));
|
|
2222
2304
|
return isRootStyleOutputFile(file) || typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey;
|
|
2223
2305
|
})) return true;
|
|
2224
|
-
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
|
+
}
|
|
2225
2311
|
if (opts.mainCssChunkMatcher(file, opts.appType)) return true;
|
|
2226
2312
|
return isRootStyleOutputFile(file) && records.some((record) => record.injectIntoMain === true);
|
|
2227
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
|
+
}
|
|
2228
2322
|
function isViteProcessedCssResultImported(record, importedStyleFiles) {
|
|
2229
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));
|
|
2230
2324
|
}
|
|
@@ -2268,7 +2362,84 @@ function removeCssCoveredByImportedViteResults(css, importedCssSources) {
|
|
|
2268
2362
|
if (importedCssSources.length === 0) return css;
|
|
2269
2363
|
const importedCss = importedCssSources.map((source) => require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source).trim()).filter(Boolean).join("\n");
|
|
2270
2364
|
if (importedCss.length === 0) return css;
|
|
2271
|
-
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
|
+
}
|
|
2272
2443
|
}
|
|
2273
2444
|
function collectImportedBundleCssSources(bundle, importedStyleFiles) {
|
|
2274
2445
|
if (importedStyleFiles.size === 0) return [];
|
|
@@ -2483,8 +2654,9 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2483
2654
|
}
|
|
2484
2655
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2485
2656
|
const mainFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2486
|
-
|
|
2487
|
-
|
|
2657
|
+
const normalizedOriginalCss = normalizeInjectableCssForTargetWithImports(transformCss(removeTailwindEntryDirectivesFromCss(originalSource), file), file);
|
|
2658
|
+
let nextCss = normalizedOriginalCss.css;
|
|
2659
|
+
const importedStyleFiles = normalizedOriginalCss.importedStyleFiles;
|
|
2488
2660
|
const importedBundleCssSources = collectImportedBundleCssSources(bundle, importedStyleFiles);
|
|
2489
2661
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, importedBundleCssSources);
|
|
2490
2662
|
const importedViteCssResults = viteCssResults.filter((record) => isViteProcessedCssResultImported(record, importedStyleFiles));
|
|
@@ -2500,7 +2672,7 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2500
2672
|
if (!shouldInjectViteProcessedCssResult(options.opts, mainFileKey, record.file, record)) continue;
|
|
2501
2673
|
if (isViteProcessedCssResultImported(record, importedStyleFiles)) continue;
|
|
2502
2674
|
targetViteCssResults.push(record);
|
|
2503
|
-
let css = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(record.css).trim();
|
|
2675
|
+
let css = normalizeInjectableCssForTarget(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(record.css).trim(), file).trim();
|
|
2504
2676
|
css = removeCssCoveredByImportedViteResults(css, importedCssSources).trim();
|
|
2505
2677
|
if (css.length === 0) continue;
|
|
2506
2678
|
const mergedLayerCss = require_hmr_timing.mergeMarkedUserLayerComponentsCss(nextCss, css);
|
|
@@ -2533,7 +2705,9 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2533
2705
|
if (missingCss.length === 0 || !hasNonCommentCss(missingCss) || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2534
2706
|
nextCss = appendCss$1(nextCss, missingCss);
|
|
2535
2707
|
}
|
|
2536
|
-
|
|
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;
|
|
2537
2711
|
if (nextCss !== originalSource) {
|
|
2538
2712
|
output.source = nextCss;
|
|
2539
2713
|
options.markCssAssetProcessed?.(output, file);
|
|
@@ -2659,7 +2833,7 @@ function resolveViteMemoryDebugStats(context) {
|
|
|
2659
2833
|
...context.getViteCssCacheStats?.(),
|
|
2660
2834
|
lastCssResultByFile: summarizeStringMapCache$1(context.lastCssResultByFile)
|
|
2661
2835
|
},
|
|
2662
|
-
tailwind: { v4:
|
|
2836
|
+
tailwind: { v4: require_generator.getTailwindV4IncrementalGenerateCacheStats() }
|
|
2663
2837
|
};
|
|
2664
2838
|
}
|
|
2665
2839
|
//#endregion
|
|
@@ -2818,14 +2992,15 @@ function getAssetFile(bundleFile, asset) {
|
|
|
2818
2992
|
return asset.fileName || bundleFile;
|
|
2819
2993
|
}
|
|
2820
2994
|
function finalizeWebviewCssCompat(bundle, options) {
|
|
2821
|
-
|
|
2995
|
+
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(options.opts.generator);
|
|
2996
|
+
if (generatorOptions.webCompat === false) return 0;
|
|
2822
2997
|
let transformed = 0;
|
|
2823
2998
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2824
2999
|
if (output.type !== "asset") continue;
|
|
2825
3000
|
const file = getAssetFile(bundleFile, output);
|
|
2826
3001
|
if (!options.opts.cssMatcher(file) || !/\.css(?:$|[?#])/i.test(file)) continue;
|
|
2827
3002
|
const rawSource = readAssetSource(output);
|
|
2828
|
-
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 });
|
|
2829
3004
|
if (nextCss === rawSource) continue;
|
|
2830
3005
|
output.source = nextCss;
|
|
2831
3006
|
options.recordCssAssetResult?.(file, nextCss);
|
|
@@ -2861,7 +3036,7 @@ function resolveSingleCssImportOutputFile(targetFile, css) {
|
|
|
2861
3036
|
try {
|
|
2862
3037
|
_weapp_tailwindcss_postcss.postcss.parse(css).walkAtRules("import", (atRule) => {
|
|
2863
3038
|
if (importedFile !== void 0) return;
|
|
2864
|
-
const request =
|
|
3039
|
+
const request = require_generator.parseImportRequest(atRule.params);
|
|
2865
3040
|
if (!request || /^(?:https?:)?\/\//i.test(request) || request.startsWith("data:")) return;
|
|
2866
3041
|
const cleanRequest = request.replace(/[?#].*$/, "");
|
|
2867
3042
|
if (!/\.(?:css|wxss|acss|ttss|qss|jxss|tyss)$/i.test(cleanRequest)) return;
|
|
@@ -3285,7 +3460,7 @@ function resolveUniAppXStyleIsolationEnabled(root) {
|
|
|
3285
3460
|
//#region src/uni-app-x/vite.ts
|
|
3286
3461
|
let transformUVuePromise;
|
|
3287
3462
|
function loadTransformUVue() {
|
|
3288
|
-
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-
|
|
3463
|
+
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-DZQETx51.js")).then((mod) => mod.transformUVue));
|
|
3289
3464
|
return transformUVuePromise;
|
|
3290
3465
|
}
|
|
3291
3466
|
const preprocessorLangs = /* @__PURE__ */ new Set([
|
|
@@ -3359,14 +3534,14 @@ function createUniAppXPlugins(options) {
|
|
|
3359
3534
|
const parsed = query ?? parseVueRequest(id).query;
|
|
3360
3535
|
if (require_source_candidate_scan_signature.isCSSRequest(id) || parsed.vue && parsed.type === "style") {
|
|
3361
3536
|
if (isCssModuleExport(code)) return;
|
|
3362
|
-
const shouldGenerateCss =
|
|
3537
|
+
const shouldGenerateCss = require_generator.hasTailwindSourceDirectives(code, { importFallback: true }) || require_generator.hasTailwindApplyDirective(code);
|
|
3363
3538
|
rememberHarmonyApplySource(code);
|
|
3364
3539
|
const generatedCss = shouldGenerateCss ? await generateCss?.(id, code, hookContext) : void 0;
|
|
3365
3540
|
const styleCode = typeof generatedCss === "string" && generatedCss.trim().length > 0 ? generatedCss : code;
|
|
3366
3541
|
const cacheKey = `${mainCssChunkMatcher(id, appType) ? "1" : "0"}:${id}`;
|
|
3367
3542
|
let styleHandlerOptions = cssHandlerOptionsCache.get(cacheKey);
|
|
3368
3543
|
if (!styleHandlerOptions) {
|
|
3369
|
-
styleHandlerOptions =
|
|
3544
|
+
styleHandlerOptions = require_generator.omitUndefined({
|
|
3370
3545
|
isMainChunk: mainCssChunkMatcher(id, appType),
|
|
3371
3546
|
uniAppXCssTarget: resolveUniAppXCssTarget(id),
|
|
3372
3547
|
uniAppXUnsupported: resolvedUniAppXOptions.uvueUnsupported,
|
|
@@ -3429,7 +3604,7 @@ function createUniAppXPlugins(options) {
|
|
|
3429
3604
|
const transformUVue = await loadTransformUVue();
|
|
3430
3605
|
const enableComponentLocalStyle = shouldEnableComponentLocalStyle();
|
|
3431
3606
|
const enablePageLocalStyle = shouldEnableHarmonyPageLocalStyle();
|
|
3432
|
-
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({
|
|
3433
3608
|
...customAttributesEntities.length > 0 ? { customAttributesEntities } : {},
|
|
3434
3609
|
...disabledDefaultTemplateHandler ? { disabledDefaultTemplateHandler } : {},
|
|
3435
3610
|
...enableComponentLocalStyle ? { enableComponentLocalStyle } : {},
|
|
@@ -3743,7 +3918,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3743
3918
|
//#endregion
|
|
3744
3919
|
//#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
|
|
3745
3920
|
async function processRememberedCssReplay(options) {
|
|
3746
|
-
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;
|
|
3747
3922
|
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
3748
3923
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
3749
3924
|
if (require_source_candidate_scan_signature.isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
|
|
@@ -3755,6 +3930,7 @@ async function processRememberedCssReplay(options) {
|
|
|
3755
3930
|
const rememberedCssSource = mergeRememberedCssSources(refreshedRememberedGroup.map((item) => item.remembered), outputFile);
|
|
3756
3931
|
if (!rememberedCssSource) continue;
|
|
3757
3932
|
const { rawSource, sourceFile } = rememberedCssSource;
|
|
3933
|
+
const generatorRawSource = isWebGeneratorTarget ? rawSource : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(rawSource, outputFile);
|
|
3758
3934
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
3759
3935
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(sourceFile));
|
|
3760
3936
|
const outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
@@ -3764,17 +3940,21 @@ async function processRememberedCssReplay(options) {
|
|
|
3764
3940
|
};
|
|
3765
3941
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, cssHandlerOptions);
|
|
3766
3942
|
const scopedSourceCandidateSourceGetter = createScopedSourceCandidateSourceGetter(outputFile, cssHandlerOptions);
|
|
3767
|
-
const scopedGeneratorRuntime = await createScopedGeneratorRuntime(outputFile, cssHandlerOptions, generatorRuntime,
|
|
3768
|
-
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, {
|
|
3769
3945
|
includeFallbackSignature: cssHandlerOptions.isMainChunk,
|
|
3770
3946
|
majorVersion: runtimeState.tailwindRuntime.majorVersion
|
|
3771
3947
|
}));
|
|
3772
3948
|
const cssRuntimeAffectingHash = cache.computeHash(require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(rawSource, "css"));
|
|
3773
3949
|
const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffectingHash);
|
|
3774
|
-
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;
|
|
3775
3954
|
const allRememberedSignaturesFresh = rememberedKeys.length > 0 && rememberedKeys.every((key) => getRememberedCssSignature?.(key) === rememberedCssRuntimeSignature);
|
|
3776
3955
|
if (bundleFiles.includes(outputFile) || bundleFiles.includes(sourceFile) || allRememberedSignaturesFresh) continue;
|
|
3777
|
-
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;
|
|
3778
3958
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
3779
3959
|
opts,
|
|
3780
3960
|
tokenSources: sourceTraceTokenSources
|
|
@@ -3782,13 +3962,32 @@ async function processRememberedCssReplay(options) {
|
|
|
3782
3962
|
const shouldRecordRememberedReplayCss = useIncrementalMode || isNativeAppStyleTarget;
|
|
3783
3963
|
const shouldEmitRememberedReplayCssAsset = shouldRecordRememberedReplayCss;
|
|
3784
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
|
+
}
|
|
3785
3984
|
cssTaskFactories.push(() => timeTask("css.replay", async () => {
|
|
3786
3985
|
const start = performance.now();
|
|
3787
3986
|
const generated = await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
3788
3987
|
opts,
|
|
3789
3988
|
runtimeState,
|
|
3790
3989
|
runtime: scopedGeneratorRuntime,
|
|
3791
|
-
rawSource,
|
|
3990
|
+
rawSource: generatorRawSource,
|
|
3792
3991
|
file: sourceFile,
|
|
3793
3992
|
outputFile,
|
|
3794
3993
|
cssHandlerOptions,
|
|
@@ -3799,7 +3998,8 @@ async function processRememberedCssReplay(options) {
|
|
|
3799
3998
|
debug,
|
|
3800
3999
|
previousCss
|
|
3801
4000
|
});
|
|
3802
|
-
const css = annotateCss(generated?.css ?? (await styleHandler(
|
|
4001
|
+
const css = annotateCss(generated?.css ?? (await styleHandler(generatorRawSource, cssHandlerOptions)).css);
|
|
4002
|
+
lastCssRawSourceHashByFile.set(outputFile, rawSourceHash);
|
|
3803
4003
|
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, css, cssRuntimeAffectingHash);
|
|
3804
4004
|
for (const key of rememberedKeys) setRememberedCssSignature?.(key, rememberedCssRuntimeSignature);
|
|
3805
4005
|
if (generated) {
|
|
@@ -3810,6 +4010,10 @@ async function processRememberedCssReplay(options) {
|
|
|
3810
4010
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectReplayCssIntoMain,
|
|
3811
4011
|
outputFile
|
|
3812
4012
|
});
|
|
4013
|
+
if (outputFile !== sourceFile) recordViteProcessedCssAssetResult?.(outputFile, css, {
|
|
4014
|
+
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectReplayCssIntoMain,
|
|
4015
|
+
outputFile
|
|
4016
|
+
});
|
|
3813
4017
|
debug("css replay generated result: %s bytes=%d", outputFile, css.length);
|
|
3814
4018
|
}
|
|
3815
4019
|
if (shouldEmitRememberedReplayCssAsset) {
|
|
@@ -4068,37 +4272,119 @@ function createStableTextSignature(input) {
|
|
|
4068
4272
|
}
|
|
4069
4273
|
return (hash >>> 0).toString(36);
|
|
4070
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
|
+
}
|
|
4071
4329
|
function collectTailwindV4SourceFingerprint(source) {
|
|
4072
4330
|
const tokens = /* @__PURE__ */ new Set();
|
|
4073
4331
|
const add = (prefix, value) => {
|
|
4074
4332
|
tokens.add(`${prefix}:${value.trim()}`);
|
|
4075
4333
|
};
|
|
4076
|
-
for (const match of source.matchAll(/@config\s+(["'])(.+?)\1\s*;?/g)) {
|
|
4077
|
-
const configRequest = match[2];
|
|
4078
|
-
add("config", node_path.default.basename(configRequest));
|
|
4079
|
-
add("config-request", configRequest.replace(/\\/g, "/"));
|
|
4080
|
-
}
|
|
4081
|
-
for (const match of source.matchAll(/@source\s+(not\s+)?(["'])(.+?)\2\s*;?/g)) add(match[1] ? "source:not" : "source", match[3]);
|
|
4082
|
-
for (const match of source.matchAll(/@plugin\s+(["'])(.+?)\1\s*(?:\{([\s\S]*?)\}|;)/g)) {
|
|
4083
|
-
const request = match[2];
|
|
4084
|
-
const optionBlock = match[3];
|
|
4085
|
-
add("plugin", request);
|
|
4086
|
-
add("plugin-request", request.replace(/\\/g, "/"));
|
|
4087
|
-
if (optionBlock !== void 0) add("plugin-options", `${request}:${createStableTextSignature(optionBlock)}`);
|
|
4088
|
-
}
|
|
4089
4334
|
try {
|
|
4090
|
-
_weapp_tailwindcss_postcss.postcss.parse(source)
|
|
4091
|
-
|
|
4092
|
-
if (
|
|
4093
|
-
|
|
4094
|
-
add("
|
|
4095
|
-
|
|
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
|
+
}
|
|
4096
4386
|
});
|
|
4097
4387
|
} catch {}
|
|
4098
|
-
for (const match of source.matchAll(/@custom-variant\s+([^{\s]+)/g)) add("custom-variant", match[1]);
|
|
4099
|
-
for (const match of source.matchAll(/@(?:theme|utility|variant|layer)\s+([^{;\s]+)/g)) add("directive", match[1]);
|
|
4100
|
-
for (const match of source.matchAll(/--[\w-]+(?=\s*:)/g)) add("theme-token", match[0]);
|
|
4101
|
-
for (const match of source.matchAll(/\.([_a-z][\w-]*)\s*[{,]/gi)) add("selector", match[1]);
|
|
4102
4388
|
return tokens;
|
|
4103
4389
|
}
|
|
4104
4390
|
function scoreConfiguredTailwindV4SourceForRawSource(rawSource, entrySource) {
|
|
@@ -4114,7 +4400,7 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4114
4400
|
const generationSources = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
4115
4401
|
if (generationSources.length <= 1) return generationSources[0];
|
|
4116
4402
|
const canMatchByOutputPath = Boolean(options.cwd || options.outputRoot || options.projectRoot);
|
|
4117
|
-
const selectByOutputPath = (candidates) => {
|
|
4403
|
+
const selectByOutputPath = (candidates, shouldUseScore = (score) => score > 0) => {
|
|
4118
4404
|
if (!canMatchByOutputPath) return;
|
|
4119
4405
|
const scoredSources = candidates.map((entry) => ({
|
|
4120
4406
|
entry,
|
|
@@ -4123,7 +4409,7 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4123
4409
|
outputRoot: options.outputRoot,
|
|
4124
4410
|
projectRoot: options.projectRoot
|
|
4125
4411
|
})
|
|
4126
|
-
})).filter((item) => item.score
|
|
4412
|
+
})).filter((item) => shouldUseScore(item.score)).sort((a, b) => b.score - a.score);
|
|
4127
4413
|
const bestScore = scoredSources[0]?.score;
|
|
4128
4414
|
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
4129
4415
|
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
@@ -4137,10 +4423,12 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
4137
4423
|
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
4138
4424
|
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
4139
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;
|
|
4140
4430
|
const rawSourceMatched = selectByRawSourceFingerprint(generationSources);
|
|
4141
4431
|
if (rawSourceMatched) return rawSourceMatched;
|
|
4142
|
-
const explicitSources = generationSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
4143
|
-
const candidates = explicitSources.length === 1 ? explicitSources : generationSources;
|
|
4144
4432
|
const outputPathMatched = selectByOutputPath(candidates);
|
|
4145
4433
|
if (outputPathMatched) return outputPathMatched;
|
|
4146
4434
|
if (candidates.length === 1) return candidates[0];
|
|
@@ -4159,8 +4447,7 @@ function createTemporaryCssAssetSourceResolver(entries) {
|
|
|
4159
4447
|
const seenEntryFiles = /* @__PURE__ */ new Set();
|
|
4160
4448
|
const queuedEntries = entries.filter((entry) => {
|
|
4161
4449
|
const entryFile = normalizeCssSourceKey(entry.file);
|
|
4162
|
-
|
|
4163
|
-
if (outputFile === entryFile || !outputFile.includes("/") || seenEntryFiles.has(entryFile)) return false;
|
|
4450
|
+
if (normalizeCssSourceKey(entry.outputFile) === entryFile || seenEntryFiles.has(entryFile)) return false;
|
|
4164
4451
|
seenEntryFiles.add(entryFile);
|
|
4165
4452
|
return true;
|
|
4166
4453
|
});
|
|
@@ -4173,14 +4460,18 @@ function createTemporaryCssAssetSourceResolver(entries) {
|
|
|
4173
4460
|
},
|
|
4174
4461
|
resolve(outputFile, rawSource) {
|
|
4175
4462
|
if (!isTemporaryCssAssetFile(outputFile)) return;
|
|
4176
|
-
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("/"));
|
|
4177
4468
|
const scoredEntries = rawSource ? availableEntries.map((entry) => ({
|
|
4178
4469
|
entry,
|
|
4179
4470
|
score: scoreConfiguredTailwindV4SourceForRawSource(rawSource, entry.source)
|
|
4180
4471
|
})).filter((item) => item.score > 0).sort((a, b) => b.score - a.score) : [];
|
|
4181
4472
|
const bestScore = scoredEntries[0]?.score;
|
|
4182
4473
|
const bestEntries = bestScore ? scoredEntries.filter((item) => item.score === bestScore) : [];
|
|
4183
|
-
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;
|
|
4184
4475
|
if (!entry) return;
|
|
4185
4476
|
usedEntryFiles.add(normalizeCssSourceKey(entry.file));
|
|
4186
4477
|
return {
|
|
@@ -4354,6 +4645,19 @@ function resolveSourceRootFromBundleGraph(config, bundle) {
|
|
|
4354
4645
|
return sourceRoots.size === 1 ? [...sourceRoots][0] : void 0;
|
|
4355
4646
|
}
|
|
4356
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
|
|
4357
4661
|
//#region src/bundlers/vite/generate-bundle.ts
|
|
4358
4662
|
function inferPlatformFromViteOutDir$1(outDir) {
|
|
4359
4663
|
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
@@ -4365,6 +4669,7 @@ function createGenerateBundleHook(context) {
|
|
|
4365
4669
|
const state = require_source_candidate_scan_signature.createBundleBuildState();
|
|
4366
4670
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
4367
4671
|
const lastCssSourceHashByFile = /* @__PURE__ */ new Map();
|
|
4672
|
+
const lastCssRawSourceHashByFile = /* @__PURE__ */ new Map();
|
|
4368
4673
|
let currentOutDir;
|
|
4369
4674
|
let currentSubpackageRoots;
|
|
4370
4675
|
const createInitialCssPipelineContext = (file) => {
|
|
@@ -4437,14 +4742,14 @@ function createGenerateBundleHook(context) {
|
|
|
4437
4742
|
resolveStylePlatform: () => generatorPlatform
|
|
4438
4743
|
};
|
|
4439
4744
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
4440
|
-
const shouldApplyWebCssCompat = context.cssPipelineStrategy
|
|
4745
|
+
const shouldApplyWebCssCompat = shouldApplyViteWebCssCompat(cssPipelineContext, context.cssPipelineStrategy);
|
|
4441
4746
|
const transformWebTargetCss = (css) => {
|
|
4442
4747
|
return context.cssPipelineStrategy?.transformGeneratedCss?.(css, {
|
|
4443
4748
|
...cssPipelineContext,
|
|
4444
|
-
defaultWebCssCompat: (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value,
|
|
4749
|
+
defaultWebCssCompat: (value) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(value, resolveViteWebCssCompatOptions(cssPipelineContext)),
|
|
4445
4750
|
removeScopedPreflight: (value) => value,
|
|
4446
4751
|
shouldApplyWebCssCompat
|
|
4447
|
-
}) ?? (shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css,
|
|
4752
|
+
}) ?? (shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, resolveViteWebCssCompatOptions(cssPipelineContext)) : css);
|
|
4448
4753
|
};
|
|
4449
4754
|
const isNativeAppStyleTarget = context.cssPipelineStrategy?.isNativeAppStyleTarget?.(cssPipelineContext) === true;
|
|
4450
4755
|
const isHarmonyAppStyleTarget = context.cssPipelineStrategy?.isHarmonyAppStyleTarget?.(cssPipelineContext) === true;
|
|
@@ -4455,6 +4760,9 @@ function createGenerateBundleHook(context) {
|
|
|
4455
4760
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
4456
4761
|
const outDir = resolvedConfig?.build?.outDir ? node_path.default.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
|
|
4457
4762
|
const defaultStyleOutputExtension = resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) });
|
|
4763
|
+
const normalizeMiniProgramGeneratorRawSource = (source, outputFile) => {
|
|
4764
|
+
return isWebGeneratorTarget ? source : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(source, outputFile);
|
|
4765
|
+
};
|
|
4458
4766
|
await runtimeState.readyPromise;
|
|
4459
4767
|
debug("start");
|
|
4460
4768
|
onStart();
|
|
@@ -4480,7 +4788,7 @@ function createGenerateBundleHook(context) {
|
|
|
4480
4788
|
timingDetails[name] = (timingDetails[name] ?? 0) + Math.max(0, performance.now() - startedAt);
|
|
4481
4789
|
};
|
|
4482
4790
|
const timeTask = createBundleTaskTimer(recordTimingDetail);
|
|
4483
|
-
const emitOrReplayCssAsset = createCssAssetEmitter(this);
|
|
4791
|
+
const emitOrReplayCssAsset = createCssAssetEmitter(this, bundle);
|
|
4484
4792
|
const metrics = createEmptyMetrics();
|
|
4485
4793
|
const envFlags = resolveGenerateBundleEnvFlags();
|
|
4486
4794
|
const bundleFiles = Object.keys(bundle);
|
|
@@ -4490,8 +4798,8 @@ function createGenerateBundleHook(context) {
|
|
|
4490
4798
|
tailwindcssRuntimeOptions: {
|
|
4491
4799
|
...opts.tailwindcssRuntimeOptions ?? {},
|
|
4492
4800
|
tailwindcss: {
|
|
4493
|
-
...
|
|
4494
|
-
...
|
|
4801
|
+
...require_generator.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions) ?? {},
|
|
4802
|
+
...require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options) ?? {}
|
|
4495
4803
|
}
|
|
4496
4804
|
}
|
|
4497
4805
|
}, opts.tailwindcssBasedir ?? rootDir);
|
|
@@ -4520,8 +4828,8 @@ function createGenerateBundleHook(context) {
|
|
|
4520
4828
|
const cleanFile = file.replace(/[?#].*$/, "");
|
|
4521
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)));
|
|
4522
4830
|
};
|
|
4523
|
-
const runtimeTailwindcssOptions =
|
|
4524
|
-
const tailwindRuntimeOptions =
|
|
4831
|
+
const runtimeTailwindcssOptions = require_generator.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
|
|
4832
|
+
const tailwindRuntimeOptions = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
|
|
4525
4833
|
const configuredTailwindV4CssSourceFileKeysForScope = new Set(configuredTailwindV4CssSourceEntriesForScope.map((entry) => normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)));
|
|
4526
4834
|
const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set([
|
|
4527
4835
|
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
@@ -4547,15 +4855,20 @@ function createGenerateBundleHook(context) {
|
|
|
4547
4855
|
});
|
|
4548
4856
|
};
|
|
4549
4857
|
const resolveConfiguredTailwindV4CssEntryOutputFile = (sourceFile) => resolveViteCssPipelineOutputFile(sourceFile, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4550
|
-
const
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
if (!(context.cssPipelineStrategy?.shouldSelectConfiguredCssEntryRootSource?.({
|
|
4858
|
+
const shouldSelectConfiguredRootCssOutput = (outputFile) => {
|
|
4859
|
+
if (!opts.cssMatcher(outputFile) || !isRootStyleOutputFile(outputFile)) return false;
|
|
4860
|
+
return context.cssPipelineStrategy?.shouldSelectConfiguredCssEntryRootSource?.({
|
|
4554
4861
|
...cssPipelineContext,
|
|
4555
4862
|
isRootStyleOutputFile,
|
|
4556
4863
|
outputFile
|
|
4557
|
-
}) === true || cssPipelineContext.currentGeneratorBranch.isWeb
|
|
4558
|
-
|
|
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))));
|
|
4559
4872
|
if (generationEntries.length <= 1) return generationEntries[0];
|
|
4560
4873
|
const rootOutputEntries = generationEntries.filter((entry) => {
|
|
4561
4874
|
return !require_source_candidate_scan_signature.normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")).includes("/");
|
|
@@ -4568,6 +4881,35 @@ function createGenerateBundleHook(context) {
|
|
|
4568
4881
|
if (mainPackageEntries.length === 1) return mainPackageEntries[0];
|
|
4569
4882
|
}
|
|
4570
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
|
+
};
|
|
4571
4913
|
const { createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, shouldExcludeSubpackageSourceCandidates, shouldInjectCssIntoMainFromOutput } = createSubpackageSourceCandidateScope({
|
|
4572
4914
|
cssSourceFiles: configuredTailwindV4CssSourceEntriesForScope.map((entry) => entry.file),
|
|
4573
4915
|
getSourceCandidateSourcesForEntries,
|
|
@@ -4619,8 +4961,8 @@ function createGenerateBundleHook(context) {
|
|
|
4619
4961
|
}) : await context.ensureRuntimeClassSet(envFlags.forceRuntimeRefreshByEnv);
|
|
4620
4962
|
const shouldFilterTailwindV4MiniProgramCandidates = require_generator.shouldUseMiniProgramCssBranch(generatorBranch);
|
|
4621
4963
|
const collectedGeneratorCandidates = /* @__PURE__ */ new Set([...runtime, ...sourceCandidates]);
|
|
4622
|
-
const filteredGeneratorCandidates = shouldFilterTailwindV4MiniProgramCandidates ?
|
|
4623
|
-
const filteredSourceCandidates = shouldFilterTailwindV4MiniProgramCandidates ?
|
|
4964
|
+
const filteredGeneratorCandidates = shouldFilterTailwindV4MiniProgramCandidates ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(collectedGeneratorCandidates) : collectedGeneratorCandidates;
|
|
4965
|
+
const filteredSourceCandidates = shouldFilterTailwindV4MiniProgramCandidates ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(sourceCandidates) : sourceCandidates;
|
|
4624
4966
|
const transformRuntime = shouldFilterTailwindV4MiniProgramCandidates ? new Set(runtime) : new Set(filteredGeneratorCandidates);
|
|
4625
4967
|
const generatorRuntime = filteredGeneratorCandidates;
|
|
4626
4968
|
const cssEntries = snapshot.entries.filter((entry) => entry.type === "css" && entry.output.type === "asset");
|
|
@@ -4629,7 +4971,8 @@ function createGenerateBundleHook(context) {
|
|
|
4629
4971
|
const mainCssEntry = cssEntries.find((entry) => getCssHandlerOptions(entry.file).isMainChunk) ?? cssEntries[0];
|
|
4630
4972
|
if (mainCssEntry) {
|
|
4631
4973
|
const mainCssRawSource = typeof mainCssEntry.output.source === "string" ? mainCssEntry.output.source : node_buffer.Buffer.from(mainCssEntry.output.source).toString();
|
|
4632
|
-
if (!
|
|
4974
|
+
if (!require_generator.hasTailwindApplyDirective(mainCssRawSource)) {
|
|
4975
|
+
const validationRawSource = normalizeMiniProgramGeneratorRawSource(mainCssRawSource, mainCssEntry.file);
|
|
4633
4976
|
const generatedCssSources = /* @__PURE__ */ new Set();
|
|
4634
4977
|
for (const [, record] of getViteProcessedCssAssetResults?.() ?? []) if (typeof record === "string") generatedCssSources.add(record);
|
|
4635
4978
|
else if (typeof record?.css === "string") generatedCssSources.add(record.css);
|
|
@@ -4637,7 +4980,7 @@ function createGenerateBundleHook(context) {
|
|
|
4637
4980
|
opts,
|
|
4638
4981
|
runtimeState,
|
|
4639
4982
|
candidates: filteredSourceCandidates,
|
|
4640
|
-
rawSource:
|
|
4983
|
+
rawSource: validationRawSource,
|
|
4641
4984
|
generatedCssSources,
|
|
4642
4985
|
file: mainCssEntry.file,
|
|
4643
4986
|
cssHandlerOptions: getCssHandlerOptions(mainCssEntry.file),
|
|
@@ -4655,6 +4998,9 @@ function createGenerateBundleHook(context) {
|
|
|
4655
4998
|
const cssExtensionByStem = collectCssExtensionByStem(bundleFiles, opts.cssMatcher);
|
|
4656
4999
|
const jsImportedCssFiles = collectJsImportedCssFiles(snapshot);
|
|
4657
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
|
+
};
|
|
4658
5004
|
rememberRuntimeLinkedCssSources({
|
|
4659
5005
|
bundleFiles,
|
|
4660
5006
|
debug,
|
|
@@ -4677,7 +5023,7 @@ function createGenerateBundleHook(context) {
|
|
|
4677
5023
|
...[...runtimeLinkedCssFiles].filter((file) => !snapshot.sourceHashByFile.has(file)).map((file) => {
|
|
4678
5024
|
const outputFile = resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4679
5025
|
const inferredSourceStyle = resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outDir, sourceRoot, getCssSource, jsImportedCssFiles.has(file) ? getSourceCandidateSources : void 0, getConfiguredTailwindV4CssSourceEntries().map((entry) => [entry.file, entry.source]), debug);
|
|
4680
|
-
return inferredSourceStyle && currentSubpackageRoots ? {
|
|
5026
|
+
return inferredSourceStyle && currentSubpackageRoots && shouldQueueTemporaryCssSourceEntry(inferredSourceStyle.sourceFile, outputFile) ? {
|
|
4681
5027
|
file: inferredSourceStyle.sourceFile,
|
|
4682
5028
|
outputFile,
|
|
4683
5029
|
source: inferredSourceStyle.rawSource
|
|
@@ -4687,10 +5033,11 @@ function createGenerateBundleHook(context) {
|
|
|
4687
5033
|
file: remembered.sourceFile,
|
|
4688
5034
|
outputFile: remembered.outputFile,
|
|
4689
5035
|
source: remembered.rawSource
|
|
4690
|
-
})),
|
|
5036
|
+
})).filter((entry) => shouldQueueTemporaryCssSourceEntry(entry.file, entry.outputFile)),
|
|
4691
5037
|
...getConfiguredTailwindV4CssSourceEntries().map((entry) => {
|
|
4692
5038
|
const outputFile = resolveMatchedCssSourceOutputFile(entry.file);
|
|
4693
|
-
|
|
5039
|
+
const isExplicitConfiguredEntry = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(entry.file));
|
|
5040
|
+
return outputFile && (require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/") || isExplicitConfiguredEntry && shouldSelectConfiguredRootCssOutput(outputFile)) ? {
|
|
4694
5041
|
file: entry.file,
|
|
4695
5042
|
outputFile,
|
|
4696
5043
|
source: entry.source
|
|
@@ -4867,6 +5214,7 @@ function createGenerateBundleHook(context) {
|
|
|
4867
5214
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4868
5215
|
}));
|
|
4869
5216
|
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
5217
|
+
if (hasExplicitConfiguredRootCssEntryForOutput(outputFile) && !configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return false;
|
|
4870
5218
|
if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
|
|
4871
5219
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4872
5220
|
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
@@ -4883,10 +5231,17 @@ function createGenerateBundleHook(context) {
|
|
|
4883
5231
|
hasUsableRememberedTailwindSource = false;
|
|
4884
5232
|
}
|
|
4885
5233
|
let outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4886
|
-
|
|
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)) {
|
|
4887
5242
|
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4888
5243
|
if (resolvedTemporarySource) {
|
|
4889
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
5244
|
+
outputFile = shouldKeepCurrentRootCssOutputForConfiguredSource(resolvedTemporarySource.sourceFile, outputFile) ? outputFile : resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
4890
5245
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4891
5246
|
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4892
5247
|
outputCssHandlerOptions = {
|
|
@@ -4906,50 +5261,19 @@ function createGenerateBundleHook(context) {
|
|
|
4906
5261
|
}
|
|
4907
5262
|
if (!hasUsableRememberedTailwindSource) {
|
|
4908
5263
|
const configuredTailwindV4CssSourceEntries = getConfiguredTailwindV4CssSourceEntries();
|
|
4909
|
-
const
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
outputFile,
|
|
4913
|
-
rawSource: inferredWebviewRootSourceEntry.source,
|
|
4914
|
-
sourceFile: inferredWebviewRootSourceEntry.file
|
|
4915
|
-
} : void 0;
|
|
4916
|
-
const inferredOriginalSourceStyle = inferredSourceStyle ?? (outputFile === file ? void 0 : resolveSourceStyleSourceFromOutputFile(file, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug)) ?? inferredWebviewRootSourceStyle;
|
|
4917
|
-
if (inferredOriginalSourceStyle) {
|
|
4918
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
4919
|
-
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4920
|
-
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4921
|
-
rememberedCssSources = [{
|
|
4922
|
-
...inferredOriginalSourceStyle,
|
|
4923
|
-
outputFile
|
|
4924
|
-
}];
|
|
4925
|
-
} else if (isTemporaryCssAssetFile(outputFile) && configuredTailwindV4CssSourceEntries.length > 1) {
|
|
4926
|
-
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4927
|
-
if (resolvedTemporarySource) {
|
|
4928
|
-
outputFile = resolveMatchedOutputFileForCurrentAsset(resolvedTemporarySource.sourceFile) ?? resolvedTemporarySource.outputFile;
|
|
4929
|
-
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4930
|
-
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4931
|
-
outputCssHandlerOptions = {
|
|
4932
|
-
...outputCssHandlerOptions,
|
|
4933
|
-
isMainChunk: false
|
|
4934
|
-
};
|
|
4935
|
-
resolvedFromTemporaryCssAsset = true;
|
|
4936
|
-
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedTemporarySource.sourceFile));
|
|
4937
|
-
rememberedCssSources = [{
|
|
4938
|
-
outputFile,
|
|
4939
|
-
rawSource: resolvedTemporarySource.rawSource,
|
|
4940
|
-
sourceFile: resolvedTemporarySource.sourceFile
|
|
4941
|
-
}];
|
|
4942
|
-
debug("source style source inferred from temporary configured tailwind v4 css source: %s -> %s", outputFile, resolvedTemporarySource.sourceFile);
|
|
4943
|
-
}
|
|
4944
|
-
} else if (hasTailwindGenerationSource(rawSource) && (originalSource.originalFileNames?.length ?? 0) === 0) {
|
|
4945
|
-
const availableConfiguredTailwindV4CssSourceEntries = configuredTailwindV4CssSourceEntries.filter((entry) => !usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(entry.file)));
|
|
4946
|
-
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, {
|
|
4947
5267
|
cwd: opts.tailwindcssBasedir,
|
|
4948
5268
|
outputRoot: outDir,
|
|
4949
5269
|
projectRoot: sourceRoot ?? rootDir
|
|
4950
5270
|
});
|
|
4951
|
-
|
|
4952
|
-
|
|
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;
|
|
4953
5277
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
4954
5278
|
outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4955
5279
|
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(configuredGenerationSource.file));
|
|
@@ -4958,9 +5282,70 @@ function createGenerateBundleHook(context) {
|
|
|
4958
5282
|
rawSource: configuredGenerationSource.source,
|
|
4959
5283
|
sourceFile: configuredGenerationSource.file
|
|
4960
5284
|
}];
|
|
5285
|
+
hasUsableRememberedTailwindSource = true;
|
|
4961
5286
|
debug("source style source inferred from scoped configured tailwind v4 css source: %s -> %s", outputFile, configuredGenerationSource.file);
|
|
4962
5287
|
}
|
|
4963
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
|
+
}
|
|
4964
5349
|
}
|
|
4965
5350
|
let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
|
|
4966
5351
|
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
|
|
@@ -4978,10 +5363,10 @@ function createGenerateBundleHook(context) {
|
|
|
4978
5363
|
const shouldKeepImportedCssShell = isCssImportOnlyBundleAsset(bundle, file, rawSource);
|
|
4979
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));
|
|
4980
5365
|
const vitePipelineCssAsset = viteProcessedCssAsset || useRememberedCssSource;
|
|
4981
|
-
const generatorRawSource = vitePipelineCssAsset ? rememberedCssSource?.rawSource ?? rawSource : rawSource;
|
|
4982
|
-
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);
|
|
4983
5368
|
const hasDifferentRememberedCssSource = rememberedCssSource != null && normalizeCssSourceForCompare(rememberedCssSource.rawSource) !== normalizeCssSourceForCompare(rawSource);
|
|
4984
|
-
const hasCurrentTailwindGenerationDirective =
|
|
5369
|
+
const hasCurrentTailwindGenerationDirective = require_generator.hasTailwindSourceDirectives(rawSource, { importFallback: true }) || require_generator.hasTailwindRootDirectives(rawSource, { importFallback: true }) || require_generator.hasTailwindApplyDirective(rawSource);
|
|
4985
5370
|
if (shouldKeepImportedCssShell && !hasCurrentTailwindGenerationDirective) {
|
|
4986
5371
|
applyCssResult(rawSource);
|
|
4987
5372
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
@@ -4990,7 +5375,7 @@ function createGenerateBundleHook(context) {
|
|
|
4990
5375
|
debug("css preserve imported shell asset: %s", outputFile);
|
|
4991
5376
|
continue;
|
|
4992
5377
|
}
|
|
4993
|
-
const hasRememberedApplyDirective = rememberedCssSource != null &&
|
|
5378
|
+
const hasRememberedApplyDirective = rememberedCssSource != null && require_generator.hasTailwindApplyDirective(rememberedCssSource.rawSource);
|
|
4994
5379
|
const hasRememberedTailwindGenerationSource = rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource);
|
|
4995
5380
|
const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4996
5381
|
const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
|
|
@@ -5005,7 +5390,10 @@ function createGenerateBundleHook(context) {
|
|
|
5005
5390
|
...getCssHandlerOptions(generatorSourceFile),
|
|
5006
5391
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
5007
5392
|
} : getCssHandlerOptions(file);
|
|
5008
|
-
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;
|
|
5009
5397
|
const generatorCssHandlerOptions = {
|
|
5010
5398
|
...cssHandlerOptions,
|
|
5011
5399
|
sourceOptions: {
|
|
@@ -5016,7 +5404,8 @@ function createGenerateBundleHook(context) {
|
|
|
5016
5404
|
};
|
|
5017
5405
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, generatorCssHandlerOptions);
|
|
5018
5406
|
const scopedSourceCandidateSourceGetter = createScopedSourceCandidateSourceGetter(outputFile, generatorCssHandlerOptions);
|
|
5019
|
-
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;
|
|
5020
5409
|
const sourceTraceSignature = require_hmr_timing.createCssSourceTraceCacheSignature(sourceTraceTokenSources, opts);
|
|
5021
5410
|
const scopedGeneratorRuntime = await createScopedGeneratorRuntime$1(outputFile, generatorCssHandlerOptions, generatorRuntime, generatorRawSource, generatorSourceFile);
|
|
5022
5411
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
@@ -5040,7 +5429,7 @@ function createGenerateBundleHook(context) {
|
|
|
5040
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));
|
|
5041
5430
|
const shouldPreserveCollectedViteCssAsset = !shouldRegenerateCollectedViteCss && (state.generatorCandidateSignature === void 0 || !generatorCandidatesChanged) && (collectedBundlerGeneratedCssFiles.has(file) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource));
|
|
5042
5431
|
const strippedViteProcessedCss = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
5043
|
-
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);
|
|
5044
5433
|
if (alreadyProcessedCssAsset && !shouldRefreshViteProcessedCssByCandidates && (!hasStaleViteProcessedCssSource || shouldPreserveStaleGeneratedCssAsset) && !hasRememberedApplySource && !shouldRegenerateMainPackageCssWithScopedCandidates && (!shouldTrackGeneratorRuntime || shouldPreserveCollectedViteCssAsset)) {
|
|
5045
5434
|
const nextCss = removeRootCoveredCssFromScopedAsset(strippedViteProcessedCss);
|
|
5046
5435
|
applyCssResult(nextCss);
|
|
@@ -5119,11 +5508,13 @@ function createGenerateBundleHook(context) {
|
|
|
5119
5508
|
const start = performance.now();
|
|
5120
5509
|
await runtimeState.readyPromise;
|
|
5121
5510
|
const previousCss = !vitePipelineCssAsset && useIncrementalMode && !hasRuntimeAffectingChanges && !snapshot.changedByType.css.has(file) ? getLastCssResult(lastCssResultByFile, outputFile, file) : void 0;
|
|
5122
|
-
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({
|
|
5123
5514
|
opts,
|
|
5124
5515
|
runtimeState,
|
|
5125
5516
|
runtime: scopedGeneratorRuntime,
|
|
5126
|
-
rawSource:
|
|
5517
|
+
rawSource: generatorTransformRawSource,
|
|
5127
5518
|
file: generatorSourceFile,
|
|
5128
5519
|
outputFile,
|
|
5129
5520
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
@@ -5133,8 +5524,8 @@ function createGenerateBundleHook(context) {
|
|
|
5133
5524
|
generatorPlatform,
|
|
5134
5525
|
styleHandler,
|
|
5135
5526
|
debug,
|
|
5136
|
-
previousCss,
|
|
5137
|
-
...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) } : {},
|
|
5138
5529
|
...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
|
|
5139
5530
|
}) : void 0;
|
|
5140
5531
|
if (generated) {
|
|
@@ -5164,9 +5555,17 @@ function createGenerateBundleHook(context) {
|
|
|
5164
5555
|
debug("css preserve web target: %s", outputFile);
|
|
5165
5556
|
return annotateCss(outputCss);
|
|
5166
5557
|
}
|
|
5167
|
-
|
|
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);
|
|
5168
5567
|
const tracedCss = annotateCss(css);
|
|
5169
|
-
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));
|
|
5170
5569
|
metrics.css.elapsed += measureElapsed(start);
|
|
5171
5570
|
metrics.css.transformed++;
|
|
5172
5571
|
return tracedCss;
|
|
@@ -5221,6 +5620,7 @@ function createGenerateBundleHook(context) {
|
|
|
5221
5620
|
bundle,
|
|
5222
5621
|
bundleFiles,
|
|
5223
5622
|
cache,
|
|
5623
|
+
changedCssFiles: snapshot.changedByType.css,
|
|
5224
5624
|
cssTaskFactories,
|
|
5225
5625
|
createScopedGeneratorRuntime: createScopedGeneratorRuntime$1,
|
|
5226
5626
|
createScopedSourceCandidateGetter,
|
|
@@ -5236,6 +5636,7 @@ function createGenerateBundleHook(context) {
|
|
|
5236
5636
|
getRememberedCssSources,
|
|
5237
5637
|
isNativeAppStyleTarget,
|
|
5238
5638
|
isWebGeneratorTarget,
|
|
5639
|
+
lastCssRawSourceHashByFile,
|
|
5239
5640
|
lastCssResultByFile,
|
|
5240
5641
|
lastCssSourceHashByFile,
|
|
5241
5642
|
markCssAssetProcessed,
|
|
@@ -5339,12 +5740,13 @@ function registerGeneratorDependencies(ctx, dependencies) {
|
|
|
5339
5740
|
throw error;
|
|
5340
5741
|
}
|
|
5341
5742
|
}
|
|
5342
|
-
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;
|
|
5343
5745
|
return {
|
|
5344
5746
|
...extraOptions,
|
|
5345
5747
|
cssPreflight: opts.cssPreflight,
|
|
5346
5748
|
isMainChunk: opts.mainCssChunkMatcher(file, opts.appType),
|
|
5347
|
-
postcssOptions: { options: { from
|
|
5749
|
+
postcssOptions: { options: { from } },
|
|
5348
5750
|
...require_context.normalizeStyleHandlerMajorVersion(majorVersion) === void 0 ? {} : { majorVersion: 4 }
|
|
5349
5751
|
};
|
|
5350
5752
|
}
|
|
@@ -5355,10 +5757,11 @@ function shouldGenerateCssByGenerator(opts, majorVersion, file, rawSource, proce
|
|
|
5355
5757
|
tailwindcssMajorVersion: majorVersion,
|
|
5356
5758
|
uniAppX: opts.uniAppX
|
|
5357
5759
|
});
|
|
5358
|
-
if (
|
|
5359
|
-
if (
|
|
5360
|
-
if (
|
|
5361
|
-
|
|
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);
|
|
5362
5765
|
}
|
|
5363
5766
|
function shouldFinalizeProcessedCssAsset(opts, file) {
|
|
5364
5767
|
return opts.mainCssChunkMatcher(file, opts.appType);
|
|
@@ -5367,8 +5770,8 @@ function collectViteProcessedCssSources(getViteProcessedCssAssetResults) {
|
|
|
5367
5770
|
return [...getViteProcessedCssAssetResults?.() ?? []].map(([, record]) => typeof record === "string" ? record : record.css);
|
|
5368
5771
|
}
|
|
5369
5772
|
function finalizeWebCss(css, context, cssPipelineStrategy) {
|
|
5370
|
-
const shouldApplyWebCssCompat =
|
|
5371
|
-
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));
|
|
5372
5775
|
return cssPipelineStrategy?.transformGeneratedCss?.(css, {
|
|
5373
5776
|
...context,
|
|
5374
5777
|
defaultWebCssCompat,
|
|
@@ -5414,6 +5817,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5414
5817
|
const isNativeAppStyleTarget = cssPipelineStrategy?.isNativeAppStyleTarget?.(createCssPipelineContext("")) === true;
|
|
5415
5818
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
5416
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;
|
|
5417
5821
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
5418
5822
|
const sourceTraceTokenSources = getSourceCandidateSourcesForEntries ? require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts) : void 0;
|
|
5419
5823
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
@@ -5460,7 +5864,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5460
5864
|
const applyStyleSources = collectUniAppXHarmonyApplyStyleSources(bundle);
|
|
5461
5865
|
if (applyUtilities.size === 0 || applyStyleSources.length === 0) return cssSources;
|
|
5462
5866
|
const harmonyRuntime = /* @__PURE__ */ new Set([...runtime, ...applyUtilities]);
|
|
5463
|
-
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?.({
|
|
5464
5868
|
...createCssPipelineContext("uni-app-x-harmony-apply.css"),
|
|
5465
5869
|
file: "uni-app-x-harmony-apply.css"
|
|
5466
5870
|
}) ?? {});
|
|
@@ -5511,7 +5915,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5511
5915
|
await waitForSourceCandidateSyncs?.();
|
|
5512
5916
|
const runtime = getRecordedGeneratorCandidates?.() ?? getSourceCandidates?.() ?? await ensureRuntimeClassSet();
|
|
5513
5917
|
const collectedGeneratorCandidates = /* @__PURE__ */ new Set([...runtime, ...getSourceCandidates?.() ?? []]);
|
|
5514
|
-
const generatorRuntime = require_generator.shouldUseMiniProgramCssBranch(generatorBranch) ?
|
|
5918
|
+
const generatorRuntime = require_generator.shouldUseMiniProgramCssBranch(generatorBranch) ? require_generator.filterUnsupportedMiniProgramTailwindV4Candidates(collectedGeneratorCandidates) : collectedGeneratorCandidates;
|
|
5515
5919
|
await Promise.all(entries.map(async ([bundleFile, output]) => {
|
|
5516
5920
|
const file = output.fileName || bundleFile;
|
|
5517
5921
|
const rawSource = output.source.toString();
|
|
@@ -5526,7 +5930,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5526
5930
|
debug("css finalizer skip vite-processed css: %s", file);
|
|
5527
5931
|
return;
|
|
5528
5932
|
}
|
|
5529
|
-
const cssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, file, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5933
|
+
const cssHandlerOptions = createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, file, outDir, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5530
5934
|
...createCssPipelineContext(file),
|
|
5531
5935
|
file
|
|
5532
5936
|
}) ?? {});
|
|
@@ -5534,11 +5938,21 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5534
5938
|
...cssHandlerOptions,
|
|
5535
5939
|
isMainChunk: false
|
|
5536
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
|
+
}
|
|
5537
5950
|
const processed = isCssAssetProcessed(output, file);
|
|
5538
5951
|
const rememberedMainCssSource = processed && cssHandlerOptions.isMainChunk ? getRememberedMainCssSource?.(file) : void 0;
|
|
5539
|
-
const
|
|
5952
|
+
const resolvedGeneratorRawSource = rememberedMainCssSource?.rawSource ?? cleanRawSource;
|
|
5953
|
+
const generatorRawSource = generatorBranch.isWeb ? resolvedGeneratorRawSource : require_hmr_timing.normalizeMiniProgramGeneratorCssSource(resolvedGeneratorRawSource, file);
|
|
5540
5954
|
const generatorSourceFile = rememberedMainCssSource?.sourceFile ?? file;
|
|
5541
|
-
const generatorCssHandlerOptions = rememberedMainCssSource ? createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, generatorSourceFile, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5955
|
+
const generatorCssHandlerOptions = rememberedMainCssSource ? createCssHandlerOptions(opts, runtimeState.tailwindRuntime.majorVersion, generatorSourceFile, outDir, cssPipelineStrategy?.getCssHandlerExtraOptions?.({
|
|
5542
5956
|
...createCssPipelineContext(generatorSourceFile),
|
|
5543
5957
|
file: generatorSourceFile
|
|
5544
5958
|
}) ?? {}) : cssHandlerOptions;
|
|
@@ -5546,11 +5960,12 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5546
5960
|
...generatorCssHandlerOptions,
|
|
5547
5961
|
isMainChunk: false
|
|
5548
5962
|
} : cssUserHandlerOptions;
|
|
5549
|
-
const
|
|
5963
|
+
const generatorTransformRawSource = generatorRawSource;
|
|
5964
|
+
const generated = shouldGenerateCssByGenerator(opts, runtimeState.tailwindRuntime.majorVersion, file, generatorTransformRawSource, processed) ? await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
5550
5965
|
opts,
|
|
5551
5966
|
runtimeState,
|
|
5552
5967
|
runtime: generatorRuntime,
|
|
5553
|
-
rawSource:
|
|
5968
|
+
rawSource: generatorTransformRawSource,
|
|
5554
5969
|
file: generatorSourceFile,
|
|
5555
5970
|
outputFile: file,
|
|
5556
5971
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
@@ -5560,10 +5975,21 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
5560
5975
|
styleHandler: opts.styleHandler,
|
|
5561
5976
|
debug
|
|
5562
5977
|
}) : void 0;
|
|
5563
|
-
|
|
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, {
|
|
5564
5990
|
...createCssPipelineContext(file),
|
|
5565
5991
|
file
|
|
5566
|
-
}, cssPipelineStrategy) : (await opts.styleHandler(
|
|
5992
|
+
}, cssPipelineStrategy) : (await opts.styleHandler(generatorTransformRawSource, cssHandlerOptions)).css));
|
|
5567
5993
|
if (generated) {
|
|
5568
5994
|
registerGeneratorDependencies(this, generated.dependencies);
|
|
5569
5995
|
debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
|
|
@@ -5849,9 +6275,21 @@ function createViteCssMemory(options) {
|
|
|
5849
6275
|
function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
|
|
5850
6276
|
const modules = [];
|
|
5851
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
|
+
};
|
|
5852
6290
|
const collectModule = (mod) => {
|
|
5853
6291
|
if (mod == null || seenModules.has(mod)) return;
|
|
5854
|
-
if (!
|
|
6292
|
+
if (!isHotSourceStyleModule(mod.id ?? mod.url)) return;
|
|
5855
6293
|
seenModules.add(mod);
|
|
5856
6294
|
ctx.server.moduleGraph.invalidateModule(mod);
|
|
5857
6295
|
modules.push(mod);
|
|
@@ -5887,6 +6325,29 @@ function resolveModuleHotUrl(mod) {
|
|
|
5887
6325
|
if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
|
|
5888
6326
|
if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
|
|
5889
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
|
+
}
|
|
5890
6351
|
function includesHotModule(modules, target) {
|
|
5891
6352
|
const targetUrl = resolveModuleHotUrl(target);
|
|
5892
6353
|
const targetId = target.id;
|
|
@@ -5895,24 +6356,46 @@ function includesHotModule(modules, target) {
|
|
|
5895
6356
|
return targetUrl !== void 0 && resolveModuleHotUrl(mod) === targetUrl || typeof targetId === "string" && targetId.length > 0 && mod.id === targetId;
|
|
5896
6357
|
});
|
|
5897
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
|
+
}
|
|
5898
6375
|
function hasSelfAcceptingNonStyleHotModule(modules) {
|
|
5899
6376
|
return modules.some((mod) => {
|
|
5900
6377
|
return !require_source_candidate_scan_signature.isSourceStyleRequest(mod.id ?? mod.url) && mod.isSelfAccepting === true;
|
|
5901
6378
|
});
|
|
5902
6379
|
}
|
|
5903
|
-
function sendSupplementalCssHotUpdates(ctx, cssModules) {
|
|
5904
|
-
const
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
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
|
+
}
|
|
5916
6399
|
if (updates.length === 0) return;
|
|
5917
6400
|
queueMicrotask(() => {
|
|
5918
6401
|
ctx.server.ws?.send?.({
|
|
@@ -6063,9 +6546,9 @@ function createRewriteCssImportsPlugins(options) {
|
|
|
6063
6546
|
async transform(code, id) {
|
|
6064
6547
|
if (!require_source_candidate_scan_signature.isCSSRequest(id)) return null;
|
|
6065
6548
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6066
|
-
const normalizedCode =
|
|
6549
|
+
const normalizedCode = require_generator.hasTailwindRootDirectives(code) || code.includes("@config") ? require_generator.normalizeTailwindConfigDirectives(code, node_path.default.dirname(file)) : code;
|
|
6067
6550
|
await options.onCssSourceTransform?.(id, normalizedCode);
|
|
6068
|
-
const hasTailwindRoot =
|
|
6551
|
+
const hasTailwindRoot = require_generator.hasTailwindRootDirectives(normalizedCode, { importFallback: true });
|
|
6069
6552
|
if (hasTailwindRoot) await options.onTailwindRootCss?.(id, normalizedCode);
|
|
6070
6553
|
const shouldGenerateInPreTransform = !options.shouldDeferGeneration?.(id, normalizedCode) && (hasTailwindRoot || options.shouldGenerateCss?.(id, normalizedCode));
|
|
6071
6554
|
if (options.shouldOwnTailwindGeneration && shouldGenerateInPreTransform) {
|
|
@@ -6097,7 +6580,7 @@ function createRewriteCssImportsPlugins(options) {
|
|
|
6097
6580
|
}];
|
|
6098
6581
|
}
|
|
6099
6582
|
function hasVitePipelineTailwindGenerationDirective(code) {
|
|
6100
|
-
return
|
|
6583
|
+
return require_generator.hasTailwindRootDirectives(code) || require_generator.hasTailwindApplyDirective(code);
|
|
6101
6584
|
}
|
|
6102
6585
|
//#endregion
|
|
6103
6586
|
//#region src/bundlers/vite/runtime-class-set.ts
|
|
@@ -6121,7 +6604,7 @@ function createViteRuntimeClassSet(options) {
|
|
|
6121
6604
|
let runtimeRefreshSignature;
|
|
6122
6605
|
let runtimeRefreshOptionsKey;
|
|
6123
6606
|
function resolveRuntimeRefreshOptions() {
|
|
6124
|
-
const configPath =
|
|
6607
|
+
const configPath = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options)?.config;
|
|
6125
6608
|
const signature = require_tailwindcss.getRuntimeClassSetSignature(runtimeState.tailwindRuntime);
|
|
6126
6609
|
const optionsKey = JSON.stringify({
|
|
6127
6610
|
appType: opts.appType,
|
|
@@ -6227,6 +6710,7 @@ const SPECIAL_QUERY_RE$1 = /[?&](?:worker|sharedworker|raw|url)\b/;
|
|
|
6227
6710
|
const COMMON_JS_PROXY_RE = /\?commonjs-proxy/;
|
|
6228
6711
|
const VITE_CSS_HMR_MODULE_RE = /\b__vite__updateStyle\s*\(/;
|
|
6229
6712
|
const VITE_CSS_CONST_RE = /\bconst\s+__vite__css\s*=\s*("(?:\\[\s\S]|[^"])*")/;
|
|
6713
|
+
const DEFERRED_CSS_HMR_QUERY_RE = /[?&](?:hmr(?:[=&]|$)|t=\d+)/;
|
|
6230
6714
|
function decodeJsStringLiteral(literal) {
|
|
6231
6715
|
try {
|
|
6232
6716
|
return JSON.parse(literal);
|
|
@@ -6260,13 +6744,13 @@ function isViteServeCssRootRequest(id, command) {
|
|
|
6260
6744
|
return command === "serve" && require_source_candidate_scan_signature.isSourceStyleRequest(id) && !SPECIAL_QUERY_RE$1.test(id) && !COMMON_JS_PROXY_RE.test(id);
|
|
6261
6745
|
}
|
|
6262
6746
|
function isViteCssHmrModule(code, id, command) {
|
|
6263
|
-
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));
|
|
6264
6748
|
}
|
|
6265
6749
|
function hasViteServeCssGenerationDirective(code) {
|
|
6266
|
-
return
|
|
6750
|
+
return require_generator.hasTailwindRootDirectives(code) || require_generator.hasTailwindSourceDirectives(code, { importFallback: true }) || require_generator.hasTailwindApplyDirective(code);
|
|
6267
6751
|
}
|
|
6268
6752
|
function hasViteServeCssRootDirective(code) {
|
|
6269
|
-
return
|
|
6753
|
+
return require_generator.hasTailwindRootDirectives(code);
|
|
6270
6754
|
}
|
|
6271
6755
|
function createViteServeCssGenerationPlugins(options) {
|
|
6272
6756
|
return [{
|
|
@@ -6275,7 +6759,8 @@ function createViteServeCssGenerationPlugins(options) {
|
|
|
6275
6759
|
enforce: "pre",
|
|
6276
6760
|
async transform(code, id) {
|
|
6277
6761
|
if (!options.shouldGenerate() || !isViteServeCssRootRequest(id, options.getCommand())) return;
|
|
6278
|
-
if (!
|
|
6762
|
+
if (!require_generator.hasTailwindRootDirectives(code)) return;
|
|
6763
|
+
if (DEFERRED_CSS_HMR_QUERY_RE.test(id)) return;
|
|
6279
6764
|
await options.onTailwindRootCss?.(id, code);
|
|
6280
6765
|
const generatedCss = await options.generateCss(id, code, this);
|
|
6281
6766
|
if (generatedCss === void 0 || generatedCss === code) return;
|
|
@@ -6347,7 +6832,7 @@ function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
|
|
|
6347
6832
|
}
|
|
6348
6833
|
const tailwindConfigPath = require_tailwindcss.findTailwindConfig(searchRoots);
|
|
6349
6834
|
if (tailwindConfigPath) return node_path.default.dirname(tailwindConfigPath);
|
|
6350
|
-
const packageRoot =
|
|
6835
|
+
const packageRoot = require_generator.findNearestPackageRoot(resolvedRoot);
|
|
6351
6836
|
if (packageRoot && (0, node_fs.existsSync)(node_path.default.join(packageRoot, PACKAGE_JSON_FILE))) return packageRoot;
|
|
6352
6837
|
return resolvedRoot;
|
|
6353
6838
|
}
|
|
@@ -6357,6 +6842,7 @@ const debug = require_context.createDebug();
|
|
|
6357
6842
|
const weappTailwindcssPackageDir = require_source_candidate_scan_signature.resolvePackageDir("weapp-tailwindcss");
|
|
6358
6843
|
const weappTailwindcssDirPosix = require_source_candidate_scan_signature.slash(weappTailwindcssPackageDir);
|
|
6359
6844
|
const SOURCE_CANDIDATE_SCAN_CACHE_MAX = 8;
|
|
6845
|
+
const WEB_HMR_RUNTIME_AFFECTING_DIRECTIVE_RE = /@(?:theme|source|config|plugin|apply)\b/;
|
|
6360
6846
|
const sourceCandidateScanSnapshotCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
6361
6847
|
const ENV_PLATFORM_KEYS = [
|
|
6362
6848
|
"UNI_PLATFORM",
|
|
@@ -6391,9 +6877,6 @@ function inferPlatformFromOutDir(outDir) {
|
|
|
6391
6877
|
function isWebOrNativeAppPlatform(platform) {
|
|
6392
6878
|
return platform === "h5" || platform === "web" || platform?.startsWith("web-") === true || platform === "app" || platform === "app-plus" || platform?.startsWith("app-") === true;
|
|
6393
6879
|
}
|
|
6394
|
-
function applyViteWebCssCompat(css, options) {
|
|
6395
|
-
return (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, options.compat);
|
|
6396
|
-
}
|
|
6397
6880
|
function isInternalUserDefinedOptions(options) {
|
|
6398
6881
|
return typeof options.onLoad === "function" && typeof options.mainCssChunkMatcher === "function" && typeof options.tailwindRuntime === "object" && typeof options.refreshTailwindcssRuntime === "function";
|
|
6399
6882
|
}
|
|
@@ -6412,7 +6895,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6412
6895
|
});
|
|
6413
6896
|
const syncCssEntriesFromAnchor = (anchor) => {
|
|
6414
6897
|
var _opts$tailwindcss;
|
|
6415
|
-
const normalizedCssEntries =
|
|
6898
|
+
const normalizedCssEntries = require_generator.normalizeCssEntries(rawCssEntries, anchor ?? node_process.default.cwd());
|
|
6416
6899
|
if (!normalizedCssEntries) return false;
|
|
6417
6900
|
const changed = !sameStringList(opts.cssEntries, normalizedCssEntries);
|
|
6418
6901
|
opts.cssEntries = normalizedCssEntries;
|
|
@@ -6433,7 +6916,6 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6433
6916
|
const disabledOptions = require_source_candidate_scan_signature.resolvePluginDisabledState(disabled);
|
|
6434
6917
|
const tailwindcssMajorVersion = initialTailwindRuntime.majorVersion ?? 0;
|
|
6435
6918
|
if (!disabledOptions.plugin && tailwindcssMajorVersion !== 4) throw new Error("weapp-tailwindcss/vite 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
6436
|
-
const shouldOwnTailwindGeneration = !disabledOptions.plugin;
|
|
6437
6919
|
const shouldRewriteCssImports = opts.rewriteCssImports === true;
|
|
6438
6920
|
let resolvedConfig;
|
|
6439
6921
|
const resolveViteStylePlatform = () => {
|
|
@@ -6452,6 +6934,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6452
6934
|
tailwindcssMajorVersion,
|
|
6453
6935
|
uniAppX
|
|
6454
6936
|
});
|
|
6937
|
+
const shouldOwnTailwindGeneration = !disabledOptions.plugin && resolveCurrentGeneratorOptions().enabled;
|
|
6455
6938
|
const resolveCurrentGeneratorBranch = () => require_generator.resolveGeneratorRuntimeBranch(resolveCurrentGeneratorOptions(), {
|
|
6456
6939
|
appType: opts.appType,
|
|
6457
6940
|
platform: resolveGeneratorPlatform(),
|
|
@@ -6481,7 +6964,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6481
6964
|
return (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(css);
|
|
6482
6965
|
};
|
|
6483
6966
|
const shouldInferAppType = !hasExplicitAppType && !initialGeneratorBranch.isWeb;
|
|
6484
|
-
const hasInitialTailwindCssRoots =
|
|
6967
|
+
const hasInitialTailwindCssRoots = require_generator.hasConfiguredTailwindV4CssRoots({
|
|
6485
6968
|
...rawOptions,
|
|
6486
6969
|
cssEntries: opts.cssEntries ?? rawOptions.cssEntries
|
|
6487
6970
|
});
|
|
@@ -6499,11 +6982,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6499
6982
|
if (!shouldOwnTailwindGeneration) return;
|
|
6500
6983
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6501
6984
|
if (!node_path.default.isAbsolute(file)) return;
|
|
6502
|
-
if (!
|
|
6985
|
+
if (!require_generator.isTailwindV4CssEntry(file)) return;
|
|
6503
6986
|
if (isMissingInternalCssSource(file, weappTailwindcssPackageDir)) return;
|
|
6504
6987
|
const sourceFile = node_path.default.normalize(file);
|
|
6505
6988
|
const sourceBase = node_path.default.dirname(sourceFile);
|
|
6506
|
-
const sourceCss =
|
|
6989
|
+
const sourceCss = require_generator.normalizeTailwindSourceForGenerator(require_generator.normalizeTailwindConfigDirectives(css, sourceBase), { importFallback: true });
|
|
6507
6990
|
if (autoCssSourceContent.get(sourceFile) === sourceCss) return;
|
|
6508
6991
|
autoCssSourceContent.set(sourceFile, sourceCss);
|
|
6509
6992
|
await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
|
|
@@ -6521,7 +7004,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6521
7004
|
const dependencies = await require_tailwindcss.resolveViteTailwindV4CssDependencies(sourceCss, sourceBase);
|
|
6522
7005
|
transientSource.dependencies = dependencies;
|
|
6523
7006
|
transientAutoCssSources.set(sourceFile, transientSource);
|
|
6524
|
-
if (!
|
|
7007
|
+
if (!require_generator.upsertTailwindV4CssSource(opts, {
|
|
6525
7008
|
file: sourceFile,
|
|
6526
7009
|
base: sourceBase,
|
|
6527
7010
|
css: sourceCss,
|
|
@@ -6544,11 +7027,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6544
7027
|
for (const cssEntry of cssEntries) {
|
|
6545
7028
|
const sourceFile = node_path.default.resolve(cssEntry);
|
|
6546
7029
|
const sourceBase = node_path.default.dirname(sourceFile);
|
|
6547
|
-
const sourceCss =
|
|
7030
|
+
const sourceCss = require_generator.normalizeTailwindSourceForGenerator(require_generator.normalizeTailwindConfigDirectives(await (0, node_fs_promises.readFile)(sourceFile, "utf8"), sourceBase), { importFallback: true });
|
|
6548
7031
|
if (autoCssSourceContent.get(sourceFile) === sourceCss) continue;
|
|
6549
7032
|
autoCssSourceContent.set(sourceFile, sourceCss);
|
|
6550
7033
|
await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
|
|
6551
|
-
changed =
|
|
7034
|
+
changed = require_generator.upsertTailwindV4CssSource(opts, {
|
|
6552
7035
|
file: sourceFile,
|
|
6553
7036
|
base: sourceBase,
|
|
6554
7037
|
css: sourceCss,
|
|
@@ -6572,8 +7055,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6572
7055
|
const pendingSourceCandidateSyncs = /* @__PURE__ */ new Set();
|
|
6573
7056
|
const pendingSourceCandidateSyncByFile = /* @__PURE__ */ new Map();
|
|
6574
7057
|
const processedCssAssets = /* @__PURE__ */ new WeakSet();
|
|
7058
|
+
const processedCssAssetSourceByFile = /* @__PURE__ */ new Map();
|
|
6575
7059
|
const viteProcessedCssSourceFiles = /* @__PURE__ */ new Set();
|
|
6576
|
-
const
|
|
7060
|
+
const cleanGeneratedCssByFile = /* @__PURE__ */ new Map();
|
|
7061
|
+
const tracedGeneratedCssByFile = /* @__PURE__ */ new Map();
|
|
7062
|
+
const generatedClassSetByFile = /* @__PURE__ */ new Map();
|
|
6577
7063
|
const viteProcessedCssAssetResults = /* @__PURE__ */ new Map();
|
|
6578
7064
|
const cssMemory = createViteCssMemory({
|
|
6579
7065
|
debug,
|
|
@@ -6593,15 +7079,21 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6593
7079
|
refreshRuntimeStateForAutoCssSources = refreshRuntimeState;
|
|
6594
7080
|
onLoad();
|
|
6595
7081
|
const getResolvedConfig = () => resolvedConfig;
|
|
6596
|
-
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) => {
|
|
6597
7086
|
processedCssAssets.add(asset);
|
|
7087
|
+
if (file) processedCssAssetSourceByFile.set(require_source_candidate_scan_signature.normalizeOutputPathKey(file), readCssAssetSource(asset));
|
|
6598
7088
|
};
|
|
6599
7089
|
const isCssAssetProcessed = (asset, file) => {
|
|
6600
7090
|
if (processedCssAssets.has(asset)) return true;
|
|
6601
7091
|
if (!file) return false;
|
|
7092
|
+
const source = readCssAssetSource(asset);
|
|
7093
|
+
if (processedCssAssetSourceByFile.get(require_source_candidate_scan_signature.normalizeOutputPathKey(file)) === source) return true;
|
|
6602
7094
|
const record = viteProcessedCssAssetResults.get(require_source_candidate_scan_signature.normalizeOutputPathKey(file));
|
|
6603
7095
|
if (!record) return false;
|
|
6604
|
-
return
|
|
7096
|
+
return source === record.css;
|
|
6605
7097
|
};
|
|
6606
7098
|
const recordGeneratorCandidates = (candidates) => {
|
|
6607
7099
|
recordedGeneratorCandidates = new Set(candidates);
|
|
@@ -6624,6 +7116,95 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6624
7116
|
const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6625
7117
|
return cleanId.includes("/pages/") && /\.(?:vue|tsx?|jsx?)$/.test(cleanId);
|
|
6626
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
|
+
};
|
|
6627
7208
|
const hasSourceCandidateScanState = () => sourceCandidateScanSignature !== void 0;
|
|
6628
7209
|
const normalizeSourceScanDependency = (file) => node_path.default.normalize(node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file)));
|
|
6629
7210
|
const isSourceScanDependency = (file) => sourceScanDependencies.has(normalizeSourceScanDependency(file));
|
|
@@ -6649,7 +7230,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6649
7230
|
seenRoots.add(basedir);
|
|
6650
7231
|
}
|
|
6651
7232
|
for (const cssEntry of opts.tailwindcss?.v4?.cssEntries ?? []) {
|
|
6652
|
-
if (!
|
|
7233
|
+
if (!require_generator.isTailwindV4CssEntry(cssEntry)) continue;
|
|
6653
7234
|
const cssEntryRoot = node_path.default.dirname(node_path.default.resolve(cssEntry));
|
|
6654
7235
|
if (seenRoots.has(cssEntryRoot)) continue;
|
|
6655
7236
|
roots.push({ root: cssEntryRoot });
|
|
@@ -6728,34 +7309,41 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6728
7309
|
const waitForSourceCandidateSyncs = async () => {
|
|
6729
7310
|
while (pendingSourceCandidateSyncs.size > 0) await Promise.all(pendingSourceCandidateSyncs);
|
|
6730
7311
|
};
|
|
6731
|
-
const syncChangedSourceCandidateFile = (id) => {
|
|
6732
|
-
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);
|
|
6733
7314
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6734
|
-
|
|
7315
|
+
const runtimeAffectingByDependency = isSourceScanDependency(file);
|
|
7316
|
+
if (runtimeAffectingByDependency) invalidateSourceCandidateScan();
|
|
6735
7317
|
if (sourceScanMatcher && !sourceScanMatcher(file)) {
|
|
6736
|
-
sourceCandidateCollector.remove(file);
|
|
7318
|
+
const change = sourceCandidateCollector.remove(file);
|
|
6737
7319
|
cacheCurrentSourceCandidateScan();
|
|
6738
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) => {
|
|
6739
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);
|
|
6740
|
-
}).then(() => cssMemory.refreshRememberedCssSourceByCurrentFile(file)).then(() =>
|
|
6741
|
-
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 })));
|
|
6742
7324
|
}
|
|
6743
|
-
const existingTask = pendingSourceCandidateSyncByFile.get(file);
|
|
6744
|
-
if (existingTask) return existingTask.then(
|
|
6745
|
-
|
|
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) => {
|
|
6746
7330
|
debug("source candidate watch sync failed: %s %O", id, error);
|
|
6747
|
-
}).then(() => {
|
|
7331
|
+
}).then((change) => {
|
|
6748
7332
|
cacheCurrentSourceCandidateScan();
|
|
7333
|
+
return change ? applySourceCandidateHmrState(createViteSourceCandidateChange(file, change, { runtimeAffecting: runtimeAffectingByDependency })) : void 0;
|
|
6749
7334
|
}).finally(() => {
|
|
6750
7335
|
pendingSourceCandidateSyncs.delete(task);
|
|
6751
7336
|
pendingSourceCandidateSyncByFile.delete(file);
|
|
6752
7337
|
});
|
|
6753
7338
|
pendingSourceCandidateSyncs.add(task);
|
|
6754
7339
|
pendingSourceCandidateSyncByFile.set(file, task);
|
|
6755
|
-
return task.then(
|
|
7340
|
+
return task.then(async (change) => {
|
|
7341
|
+
await cssMemory.refreshRememberedCssSourceByCurrentFile(file);
|
|
7342
|
+
return change;
|
|
7343
|
+
});
|
|
6756
7344
|
};
|
|
6757
7345
|
const recordCssAssetResult = (file, css) => {
|
|
6758
|
-
touchMapEntry(
|
|
7346
|
+
touchMapEntry(cleanGeneratedCssByFile, normalizeVitePersistentCacheKey(file), css);
|
|
6759
7347
|
};
|
|
6760
7348
|
const recordViteProcessedCssAssetResult = (file, css, options = {}) => {
|
|
6761
7349
|
const key = normalizeVitePersistentCacheKey(file);
|
|
@@ -6769,8 +7357,11 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6769
7357
|
const getViteProcessedCssAssetResults = () => viteProcessedCssAssetResults.entries();
|
|
6770
7358
|
const getViteProcessedCssAssetResult = (file) => viteProcessedCssAssetResults.get(normalizeVitePersistentCacheKey(file));
|
|
6771
7359
|
const getViteCssCacheStats = () => ({
|
|
6772
|
-
|
|
6773
|
-
|
|
7360
|
+
cleanGeneratedCssByFile: cleanGeneratedCssByFile.size,
|
|
7361
|
+
cleanGeneratedCssByFileRaw: summarizeStringCache(cleanGeneratedCssByFile),
|
|
7362
|
+
tracedGeneratedCssByFile: tracedGeneratedCssByFile.size,
|
|
7363
|
+
tracedGeneratedCssByFileRaw: summarizeStringCache(tracedGeneratedCssByFile),
|
|
7364
|
+
generatedClassSetByFile: generatedClassSetByFile.size,
|
|
6774
7365
|
viteProcessedCssAssetResults: viteProcessedCssAssetResults.size,
|
|
6775
7366
|
viteProcessedCssAssetResultsRaw: summarizeViteProcessedCssResults(viteProcessedCssAssetResults),
|
|
6776
7367
|
...cssMemory.getStats(),
|
|
@@ -6780,7 +7371,9 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6780
7371
|
});
|
|
6781
7372
|
const pruneViteCssCaches = (options) => {
|
|
6782
7373
|
const activeFiles = new Set([...options.activeFiles].map(normalizeVitePersistentCacheKey));
|
|
6783
|
-
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);
|
|
6784
7377
|
for (const [key, record] of viteProcessedCssAssetResults) {
|
|
6785
7378
|
const outputKey = typeof record.outputFile === "string" ? normalizeVitePersistentCacheKey(record.outputFile) : void 0;
|
|
6786
7379
|
if (!activeFiles.has(key) && (outputKey == null || !activeFiles.has(outputKey))) viteProcessedCssAssetResults.delete(key);
|
|
@@ -6794,7 +7387,12 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6794
7387
|
const rememberTailwindRootCssModule = (id) => {
|
|
6795
7388
|
if (!shouldOwnTailwindGeneration) return;
|
|
6796
7389
|
tailwindRootCssModuleIds.add(id);
|
|
6797
|
-
|
|
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);
|
|
6798
7396
|
};
|
|
6799
7397
|
const isUniViteProject = () => {
|
|
6800
7398
|
return resolvedConfig?.plugins?.some((plugin) => plugin.name.includes("uni")) ?? false;
|
|
@@ -6836,7 +7434,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6836
7434
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6837
7435
|
const requestFile = require_source_candidate_scan_signature.isCSSRequest(id) ? id === file ? resolveSfcStyleRequestFromKnownSource(file, cssMemory.getKnownSfcSource(file), code) : id : file;
|
|
6838
7436
|
if (!require_source_candidate_scan_signature.isCSSRequest(requestFile) || opts.htmlMatcher(file) || require_source_candidate_scan_signature.isHTMLRequest(file)) return;
|
|
6839
|
-
const generatorCode =
|
|
7437
|
+
const generatorCode = require_generator.normalizeEmptyTailwindCustomVariants(code);
|
|
6840
7438
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
6841
7439
|
const currentGeneratorOptions = resolveCurrentGeneratorOptions();
|
|
6842
7440
|
const currentGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
@@ -6847,28 +7445,41 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6847
7445
|
const shouldPreserveStyleOutputExtension = frameworkCssPipelineStrategy?.shouldPreserveStyleOutputExtension?.(cssPipelineContext) ?? frameworkCssPipelineStrategy?.isNativeAppStyleTarget?.(cssPipelineContext) === true;
|
|
6848
7446
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType);
|
|
6849
7447
|
const outputFile = resolveViteCssPipelineOutputFile(requestFile, opts, rootDir, currentGeneratorBranch.isWeb, shouldPreserveStyleOutputExtension, sourceRoot);
|
|
6850
|
-
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
|
+
}
|
|
6851
7460
|
const sourceCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(requestFile);
|
|
6852
7461
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
6853
7462
|
const cssHandlerOptions = {
|
|
6854
7463
|
...sourceCssHandlerOptions,
|
|
6855
7464
|
isMainChunk: outputCssHandlerOptions.isMainChunk
|
|
6856
7465
|
};
|
|
6857
|
-
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) ? {
|
|
6858
7467
|
base: node_path.default.dirname(node_path.default.resolve(file)),
|
|
6859
|
-
css:
|
|
7468
|
+
css: generatorTransformCode,
|
|
6860
7469
|
file: node_path.default.resolve(file)
|
|
6861
7470
|
} : void 0);
|
|
6862
7471
|
const shouldDeferEmptyScopedCssSource = transientCssSource == null && (frameworkCssPipelineStrategy?.shouldDeferEmptyScopedCssSource?.({
|
|
6863
7472
|
...cssPipelineContext,
|
|
6864
7473
|
cssHandlerOptions,
|
|
6865
|
-
generatorCode
|
|
7474
|
+
generatorCode: generatorTransformCode
|
|
6866
7475
|
}) ?? true);
|
|
6867
|
-
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({
|
|
6868
7479
|
opts,
|
|
6869
7480
|
runtimeState,
|
|
6870
7481
|
runtime,
|
|
6871
|
-
rawSource:
|
|
7482
|
+
rawSource: generatorTransformCode,
|
|
6872
7483
|
file,
|
|
6873
7484
|
outputFile,
|
|
6874
7485
|
cssHandlerOptions,
|
|
@@ -6878,25 +7489,45 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6878
7489
|
generatorPlatform: resolveGeneratorPlatform(),
|
|
6879
7490
|
styleHandler,
|
|
6880
7491
|
debug,
|
|
6881
|
-
previousCss:
|
|
7492
|
+
previousCss: previousGeneratorCss,
|
|
7493
|
+
previousClassSet: pendingHmrChange && !forceFullHmrCssRegeneration ? generatedClassSetByFile.get(file) : void 0,
|
|
6882
7494
|
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
7495
|
+
disableSourceScan: pendingHmrChange !== void 0,
|
|
6883
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
|
+
}
|
|
6884
7508
|
});
|
|
6885
|
-
if (!generated)
|
|
7509
|
+
if (!generated) {
|
|
7510
|
+
if (pendingHmrChange) finishPendingHmrCssTargetFile(file);
|
|
7511
|
+
else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
|
|
7512
|
+
return;
|
|
7513
|
+
}
|
|
6886
7514
|
const finalizedCss = finalizeViteMiniProgramCss(generated.css);
|
|
6887
|
-
const shouldApplyWebCssCompat =
|
|
6888
|
-
const
|
|
7515
|
+
const shouldApplyWebCssCompat = shouldApplyViteWebCssCompat(cssPipelineContext, frameworkCssPipelineStrategy);
|
|
7516
|
+
const outputCss = frameworkCssPipelineStrategy?.transformGeneratedCss?.(finalizedCss, {
|
|
6889
7517
|
...cssPipelineContext,
|
|
6890
|
-
defaultWebCssCompat: (css) =>
|
|
7518
|
+
defaultWebCssCompat: (css) => (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, resolveViteWebCssCompatOptions(cssPipelineContext)),
|
|
6891
7519
|
removeScopedPreflight: removeScopedTailwindPreflightCss,
|
|
6892
7520
|
shouldApplyWebCssCompat
|
|
6893
|
-
}) ?? removeScopedTailwindPreflightCss(shouldApplyWebCssCompat ?
|
|
7521
|
+
}) ?? removeScopedTailwindPreflightCss(shouldApplyWebCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(finalizedCss, resolveViteWebCssCompatOptions(cssPipelineContext)) : finalizedCss);
|
|
7522
|
+
const tracedCss = require_hmr_timing.annotateCssSourceTrace(outputCss, {
|
|
6894
7523
|
opts,
|
|
6895
7524
|
tokenSources: require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts)
|
|
6896
7525
|
});
|
|
6897
7526
|
for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
|
|
6898
|
-
|
|
6899
|
-
|
|
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("/");
|
|
6900
7531
|
recordViteProcessedCssAssetResult(file, tracedCss, {
|
|
6901
7532
|
injectIntoMain: shouldInjectGeneratedCssIntoMain,
|
|
6902
7533
|
outputFile
|
|
@@ -6912,7 +7543,9 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6912
7543
|
});
|
|
6913
7544
|
markViteProcessedCssSource(file);
|
|
6914
7545
|
rememberTailwindRootCssModule(id);
|
|
6915
|
-
recordGeneratorCandidates(
|
|
7546
|
+
recordGeneratorCandidates(fullRuntime);
|
|
7547
|
+
if (pendingHmrChange) finishPendingHmrCssTargetFile(file);
|
|
7548
|
+
else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
|
|
6916
7549
|
cssMemory.rememberCssSource({
|
|
6917
7550
|
outputFile,
|
|
6918
7551
|
rawSource: code,
|
|
@@ -6925,10 +7558,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
6925
7558
|
getAppType: () => opts.appType,
|
|
6926
7559
|
generateTailwindCss: generateTailwindCssForVitePipeline,
|
|
6927
7560
|
rootImport: shouldOwnTailwindGeneration ? `${weappTailwindcssDirPosix}/generator-placeholder.css` : void 0,
|
|
6928
|
-
onTailwindRootCss:
|
|
7561
|
+
onTailwindRootCss: registerTailwindRootCss,
|
|
6929
7562
|
onCssSourceTransform: (id, code) => cssMemory.refreshRememberedCssSourceBySourceFile(id, code),
|
|
6930
7563
|
shouldGenerateCss: (_id, code) => hasVitePipelineTailwindGenerationDirective(code),
|
|
6931
|
-
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports &&
|
|
7564
|
+
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_generator.hasTailwindRootDirectives(code, { importFallback: resolveCurrentGeneratorOptions().importFallback }),
|
|
6932
7565
|
shouldOwnTailwindGeneration,
|
|
6933
7566
|
shouldRewrite: shouldRewriteCssImports,
|
|
6934
7567
|
weappTailwindcssDirPosix
|
|
@@ -7031,7 +7664,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7031
7664
|
let transformedCode = code;
|
|
7032
7665
|
if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && require_source_candidate_scan_signature.isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
|
|
7033
7666
|
const shouldReturnTransformedCode = transformedCode !== code;
|
|
7034
|
-
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
|
+
}
|
|
7035
7671
|
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id) || !shouldCollectTransformedSourceCandidates(id)) {
|
|
7036
7672
|
if (shouldReturnTransformedCode) return {
|
|
7037
7673
|
code: transformedCode,
|
|
@@ -7061,8 +7697,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7061
7697
|
if (shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(id)) invalidateRecordedGeneratorCandidates();
|
|
7062
7698
|
if (isSourceScanDependency(id)) invalidateSourceCandidateScan();
|
|
7063
7699
|
if (change.event === "delete") {
|
|
7064
|
-
|
|
7700
|
+
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
7701
|
+
const sourceCandidateChange = sourceCandidateCollector.remove(file);
|
|
7065
7702
|
cacheCurrentSourceCandidateScan();
|
|
7703
|
+
applySourceCandidateHmrState(createViteSourceCandidateChange(file, sourceCandidateChange, { runtimeAffecting: isSourceScanDependency(file) }));
|
|
7066
7704
|
return;
|
|
7067
7705
|
}
|
|
7068
7706
|
await syncChangedSourceCandidateFile(id);
|
|
@@ -7071,18 +7709,36 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7071
7709
|
async handleHotUpdate(ctx) {
|
|
7072
7710
|
return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
|
|
7073
7711
|
const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(ctx.file);
|
|
7074
|
-
|
|
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);
|
|
7075
7720
|
const isWebLikeHotUpdate = isCurrentWebLikeStylePlatform();
|
|
7721
|
+
let canUseHmrCandidateAppend = false;
|
|
7076
7722
|
if (isSourceCandidateHotUpdate) {
|
|
7077
7723
|
invalidateRecordedGeneratorCandidates();
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
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
|
+
}
|
|
7081
7735
|
}
|
|
7082
7736
|
}
|
|
7737
|
+
if (isSourceCandidateHotUpdate) await waitForSourceCandidateSyncs();
|
|
7083
7738
|
const cssModules = resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds);
|
|
7084
7739
|
const sourceModules = isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) ? resolveHotSourceModules(ctx) : ctx.modules;
|
|
7085
|
-
|
|
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())) {
|
|
7086
7742
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
7087
7743
|
return [];
|
|
7088
7744
|
}
|
|
@@ -7090,7 +7746,10 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7090
7746
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
7091
7747
|
return [];
|
|
7092
7748
|
}
|
|
7093
|
-
|
|
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);
|
|
7094
7753
|
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) return;
|
|
7095
7754
|
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && cssModules.length > 0) return [...sourceModules, ...cssModules];
|
|
7096
7755
|
return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
|
|
@@ -7105,7 +7764,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
|
|
|
7105
7764
|
...createViteServeCssGenerationPlugins({
|
|
7106
7765
|
generateCss: generateTailwindCssForVitePipeline,
|
|
7107
7766
|
getCommand: () => resolvedConfig?.command,
|
|
7108
|
-
onTailwindRootCss:
|
|
7767
|
+
onTailwindRootCss: registerTailwindRootCss,
|
|
7109
7768
|
shouldGenerate: () => shouldOwnTailwindGeneration
|
|
7110
7769
|
}),
|
|
7111
7770
|
createViteServeJsTransformPlugin({
|
|
@@ -7290,13 +7949,13 @@ const uniAppCssPipelineStrategy = {
|
|
|
7290
7949
|
return context.isWebGeneratorTarget && isUniAppWebviewAppBundle(context.bundleFiles);
|
|
7291
7950
|
},
|
|
7292
7951
|
shouldSelectConfiguredCssEntryRootSource(context) {
|
|
7293
|
-
return context.
|
|
7952
|
+
return context.opts.cssMatcher(context.outputFile) && context.isRootStyleOutputFile(context.outputFile);
|
|
7294
7953
|
},
|
|
7295
7954
|
shouldTransformServeJs(context) {
|
|
7296
7955
|
return !context.currentGeneratorBranch.isWeb || isUniAppWebviewStylePlatform(context.resolveStylePlatform());
|
|
7297
7956
|
},
|
|
7298
7957
|
transformGeneratedCss(css, context) {
|
|
7299
|
-
const webCss = context.shouldApplyWebCssCompat ?
|
|
7958
|
+
const webCss = context.shouldApplyWebCssCompat ? context.defaultWebCssCompat(css) : css;
|
|
7300
7959
|
const safeCss = isUniAppWebviewStylePlatform(context.resolveStylePlatform()) ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(webCss, { escapeMap: context.opts.escapeMap }) : webCss;
|
|
7301
7960
|
return context.removeScopedPreflight(safeCss);
|
|
7302
7961
|
}
|
|
@@ -7418,7 +8077,7 @@ const uniAppXCssPipelineStrategy = {
|
|
|
7418
8077
|
return true;
|
|
7419
8078
|
},
|
|
7420
8079
|
shouldDeferEmptyScopedCssSource(context) {
|
|
7421
|
-
if (!context.cssHandlerOptions.isMainChunk &&
|
|
8080
|
+
if (!context.cssHandlerOptions.isMainChunk && require_generator.hasTailwindApplyDirective(context.generatorCode)) return false;
|
|
7422
8081
|
return true;
|
|
7423
8082
|
},
|
|
7424
8083
|
transformGeneratedCss(css, context) {
|