weapp-tailwindcss 5.1.4 → 5.1.5
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 +8 -2
- package/dist/bundlers/shared/generator-css/source-resolver/metadata.d.ts +5 -1
- package/dist/bundlers/vite/generate-bundle/tailwind-v4-css-source.d.ts +6 -3
- package/dist/bundlers/vite/hot-css-modules.d.ts +1 -0
- package/dist/bundlers/vite/source-scan/css-entries.d.ts +1 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +2 -1
- package/dist/cli.js +18 -3
- package/dist/cli.mjs +16 -1
- package/dist/{context-DCVMkTRj.js → context-BziwyWy1.js} +21 -6
- package/dist/{context-Bkpmt3ja.mjs → context-rrYZuUBU.mjs} +18 -3
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/css-macro/index.d.ts +2 -1
- package/dist/{defaults-BhE26nSw.mjs → defaults-9B6aMyZb.mjs} +2 -2
- package/dist/{defaults-DQhgnnn-.js → defaults-nsf4VNMX.js} +2 -2
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.js +1 -1
- package/dist/defaults.mjs +1 -1
- package/dist/{gulp-Bogfnoki.js → gulp-CuVsZdO9.js} +3 -3
- package/dist/{gulp-0RsqkF_d.mjs → gulp-ygWfmOqh.mjs} +3 -3
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-BV6nFPoT.js → hmr-timing-BKdCeIrn.js} +207 -67
- package/dist/{hmr-timing-BRNaz8Od.mjs → hmr-timing-Dh_nn3w5.mjs} +207 -67
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/dist/js/js-string-escape.d.ts +1 -0
- package/dist/presets.js +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/{source-candidate-scan-signature-BB1hvW68.mjs → source-candidate-scan-signature-DATRnS1X.mjs} +157 -6
- package/dist/{source-candidate-scan-signature-CaDT0gkj.js → source-candidate-scan-signature-DIj9m4wB.js} +168 -5
- package/dist/style-injector/internal.d.ts +7 -0
- package/dist/style-injector/options.d.ts +25 -0
- package/dist/tailwindcss/v4/preflight.d.ts +4 -0
- package/dist/{tailwindcss-D2xs4OEu.js → tailwindcss-BwoNQ3t8.js} +52 -12
- package/dist/{tailwindcss-D0JF0fuZ.mjs → tailwindcss-C-uM4rB8.mjs} +47 -13
- package/dist/{transform-BP86eSZp.mjs → transform-DHLemtaX.mjs} +1 -1
- package/dist/{transform-CXCQ28Tc.js → transform-KLD1tJdb.js} +1 -1
- package/dist/typedoc.export.d.ts +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/user-defined-options/general.d.ts +2 -0
- package/dist/{vite-BYgT1ir9.js → vite-Yp14HNyS.js} +101 -37
- package/dist/{vite-B1SlBmqO.mjs → vite-cH0tTMHc.mjs} +101 -37
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +276 -83
- package/dist/{webpack-Bg6pefpb.mjs → webpack-DBhmJ-_P.mjs} +62 -18
- package/dist/{webpack-khSwkXP5.js → webpack-DN3tgLbF.js} +61 -17
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +16 -5
|
@@ -12,6 +12,41 @@ import { logger } from "@weapp-tailwindcss/logger";
|
|
|
12
12
|
import fg from "fast-glob";
|
|
13
13
|
import { loadConfig } from "tailwindcss-config";
|
|
14
14
|
import { fileURLToPath } from "node:url";
|
|
15
|
+
//#region src/tailwindcss/v4/preflight.ts
|
|
16
|
+
function parseCssImportSpecifier(params) {
|
|
17
|
+
const value = params.trim();
|
|
18
|
+
const quoted = /^(['"])(.*?)\1/.exec(value);
|
|
19
|
+
if (quoted) return quoted[2];
|
|
20
|
+
const url = /^url\(\s*(?:(['"])(.*?)\1|([^'")\s]+))\s*\)/.exec(value);
|
|
21
|
+
return url?.[2] ?? url?.[3];
|
|
22
|
+
}
|
|
23
|
+
function normalizeTailwindImportSpecifier(params) {
|
|
24
|
+
return parseCssImportSpecifier(params)?.replaceAll("\\", "/");
|
|
25
|
+
}
|
|
26
|
+
function isTailwindV4CssImportParam(params) {
|
|
27
|
+
const specifier = normalizeTailwindImportSpecifier(params);
|
|
28
|
+
return specifier === "tailwindcss" || specifier === "tailwindcss4" || specifier?.startsWith("tailwindcss/") === true || specifier?.startsWith("tailwindcss4/") === true || specifier?.endsWith("/tailwindcss/index.css") === true;
|
|
29
|
+
}
|
|
30
|
+
function isTailwindV4PreflightImportParam(params) {
|
|
31
|
+
const specifier = normalizeTailwindImportSpecifier(params);
|
|
32
|
+
return specifier === "tailwindcss" || specifier === "tailwindcss4" || specifier === "tailwindcss/preflight" || specifier === "tailwindcss/preflight.css" || specifier === "tailwindcss4/preflight" || specifier === "tailwindcss4/preflight.css" || specifier?.endsWith("/tailwindcss/index.css") === true || specifier?.endsWith("/tailwindcss/preflight.css") === true;
|
|
33
|
+
}
|
|
34
|
+
function includesTailwindV4PreflightDirective(css) {
|
|
35
|
+
try {
|
|
36
|
+
const root = postcss.parse(css);
|
|
37
|
+
let includesPreflight = false;
|
|
38
|
+
root.walkAtRules("import", (rule) => {
|
|
39
|
+
includesPreflight || (includesPreflight = isTailwindV4PreflightImportParam(rule.params));
|
|
40
|
+
});
|
|
41
|
+
root.walkAtRules("tailwind", (rule) => {
|
|
42
|
+
includesPreflight || (includesPreflight = rule.params.trim() === "base");
|
|
43
|
+
});
|
|
44
|
+
return includesPreflight;
|
|
45
|
+
} catch {
|
|
46
|
+
return /@import\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/(?:preflight(?:\.css)?|index\.css))?["')\s;]/.test(css) || /@tailwind\s+base\b/.test(css);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
15
50
|
//#region src/bundlers/vite/static-config-content.ts
|
|
16
51
|
function skipWhitespaceAndComments(source, start) {
|
|
17
52
|
let index = start;
|
|
@@ -194,17 +229,6 @@ function parseImportSourceParam(params) {
|
|
|
194
229
|
sourcePath: match[3]
|
|
195
230
|
};
|
|
196
231
|
}
|
|
197
|
-
function parseCssImportSpecifier(params) {
|
|
198
|
-
const value = params.trim();
|
|
199
|
-
const quoted = /^(['"])(.*?)\1/.exec(value);
|
|
200
|
-
if (quoted) return quoted[2];
|
|
201
|
-
const url = /^url\(\s*(?:(['"])(.*?)\1|([^'")\s]+))\s*\)/.exec(value);
|
|
202
|
-
return url?.[2] ?? url?.[3];
|
|
203
|
-
}
|
|
204
|
-
function isTailwindCssImport(params) {
|
|
205
|
-
const specifier = parseCssImportSpecifier(params);
|
|
206
|
-
return specifier === "tailwindcss" || specifier?.startsWith("tailwindcss/") || specifier?.replaceAll("\\", "/").endsWith("/tailwindcss/index.css");
|
|
207
|
-
}
|
|
208
232
|
function resolveSourceBase(base, sourcePath) {
|
|
209
233
|
return path.isAbsolute(sourcePath) ? sourcePath : path.resolve(base, sourcePath);
|
|
210
234
|
}
|
|
@@ -294,17 +318,22 @@ async function resolveTailwindV4EntriesFromCss(css, base) {
|
|
|
294
318
|
let importSourceBase;
|
|
295
319
|
let hasSourceNone = false;
|
|
296
320
|
let hasTailwindCssImport = false;
|
|
321
|
+
let includesPreflight = false;
|
|
297
322
|
const [sourceEntries, configEntries] = await Promise.all([resolveCssSourceEntries(root, base, VITE_SOURCE_CANDIDATE_PATTERN), resolveConfigContentEntries(root, base)]);
|
|
298
323
|
const entries = [...configEntries.entries, ...sourceEntries];
|
|
299
324
|
const hasPositiveEntries = entries.some((entry) => !entry.negated);
|
|
300
325
|
const inlineCandidates = collectCssInlineSourceCandidates(root);
|
|
301
326
|
root.walkAtRules("import", (rule) => {
|
|
302
|
-
if (!
|
|
327
|
+
if (!isTailwindV4CssImportParam(rule.params)) return;
|
|
303
328
|
hasTailwindCssImport = true;
|
|
329
|
+
includesPreflight || (includesPreflight = isTailwindV4PreflightImportParam(rule.params));
|
|
304
330
|
const sourceParam = parseImportSourceParam(rule.params);
|
|
305
331
|
if (sourceParam?.none) hasSourceNone = true;
|
|
306
332
|
if (sourceParam?.sourcePath) importSourceBase = resolveSourceBase(base, sourceParam.sourcePath);
|
|
307
333
|
});
|
|
334
|
+
root.walkAtRules("tailwind", (rule) => {
|
|
335
|
+
includesPreflight || (includesPreflight = rule.params.trim() === "base");
|
|
336
|
+
});
|
|
308
337
|
if (importSourceBase) return {
|
|
309
338
|
entries: [{
|
|
310
339
|
base: importSourceBase,
|
|
@@ -312,30 +341,35 @@ async function resolveTailwindV4EntriesFromCss(css, base) {
|
|
|
312
341
|
pattern: VITE_SOURCE_CANDIDATE_PATTERN
|
|
313
342
|
}, ...entries],
|
|
314
343
|
explicit: true,
|
|
344
|
+
includesPreflight,
|
|
315
345
|
inlineCandidates,
|
|
316
346
|
dependencies: configEntries.dependencies
|
|
317
347
|
};
|
|
318
348
|
if (hasSourceNone) return {
|
|
319
349
|
entries,
|
|
320
350
|
explicit: true,
|
|
351
|
+
includesPreflight,
|
|
321
352
|
inlineCandidates,
|
|
322
353
|
dependencies: configEntries.dependencies
|
|
323
354
|
};
|
|
324
355
|
if (hasPositiveEntries) return {
|
|
325
356
|
entries,
|
|
326
357
|
explicit: true,
|
|
358
|
+
includesPreflight,
|
|
327
359
|
inlineCandidates,
|
|
328
360
|
dependencies: configEntries.dependencies
|
|
329
361
|
};
|
|
330
362
|
if (inlineCandidates.included.size > 0 || inlineCandidates.excluded.size > 0) return {
|
|
331
363
|
entries: [],
|
|
332
364
|
explicit: true,
|
|
365
|
+
includesPreflight,
|
|
333
366
|
inlineCandidates,
|
|
334
367
|
dependencies: configEntries.dependencies
|
|
335
368
|
};
|
|
336
369
|
return hasTailwindCssImport ? {
|
|
337
370
|
entries,
|
|
338
371
|
explicit: false,
|
|
372
|
+
includesPreflight,
|
|
339
373
|
inlineCandidates,
|
|
340
374
|
dependencies: configEntries.dependencies
|
|
341
375
|
} : void 0;
|
|
@@ -1420,4 +1454,4 @@ function createTailwindcssRuntimeFromContext(ctx) {
|
|
|
1420
1454
|
return createTailwindcssRuntimeForBase(resolvedTailwindcssBasedir, normalizedCssEntries ?? rawCssEntries, runtimeOptions);
|
|
1421
1455
|
}
|
|
1422
1456
|
//#endregion
|
|
1423
|
-
export { resolveViteTailwindV4CssDependencies as _, findTailwindConfig as a, getRuntimeClassSetCacheEntry as c, invalidateRuntimeClassSet as d, createViteSourceScanMatcher as f, resolveTailwindV4EntriesFromCssCached as g, resolveTailwindV4EntriesFromCss as h, resolveUniAppXOptions as i, getRuntimeClassSetSignature as l, discoverTailwindV4CssEntries as m, resolveTailwindcssBasedir as n, applyV4CssCalcDefaults as o, resolveViteSourceScanEntries as p, isUniAppXEnabled as r, warnMissingCssEntries as s, createTailwindcssRuntimeFromContext as t, getRuntimeClassSetSignatureWithSources as u };
|
|
1457
|
+
export { resolveViteTailwindV4CssDependencies as _, findTailwindConfig as a, getRuntimeClassSetCacheEntry as c, invalidateRuntimeClassSet as d, createViteSourceScanMatcher as f, resolveTailwindV4EntriesFromCssCached as g, resolveTailwindV4EntriesFromCss as h, resolveUniAppXOptions as i, getRuntimeClassSetSignature as l, discoverTailwindV4CssEntries as m, resolveTailwindcssBasedir as n, applyV4CssCalcDefaults as o, resolveViteSourceScanEntries as p, isUniAppXEnabled as r, warnMissingCssEntries as s, createTailwindcssRuntimeFromContext as t, getRuntimeClassSetSignatureWithSources as u, includesTailwindV4PreflightDirective as v };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createAttributeMatcher, d as JsTokenUpdater, f as _defineProperty, h as babelParse, m as replaceWxml, p as isClassContextLiteralPath, s as generateCode, u as analyzeSource } from "./context-
|
|
1
|
+
import { c as createAttributeMatcher, d as JsTokenUpdater, f as _defineProperty, h as babelParse, m as replaceWxml, p as isClassContextLiteralPath, s as generateCode, u as analyzeSource } from "./context-rrYZuUBU.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { splitCandidateTokens } from "@tailwindcss-mangle/engine";
|
|
4
4
|
import MagicString from "magic-string";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
|
|
2
|
-
const require_context = require("./context-
|
|
2
|
+
const require_context = require("./context-BziwyWy1.js");
|
|
3
3
|
let _tailwindcss_mangle_engine = require("@tailwindcss-mangle/engine");
|
|
4
4
|
let magic_string = require("magic-string");
|
|
5
5
|
magic_string = require_rolldown_runtime.__toESM(magic_string);
|
package/dist/typedoc.export.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export type { WeappTailwindcssGenerateOptions, WeappTailwindcssGenerateResult, WeappTailwindcssGenerator, WeappTailwindcssGeneratorTarget, WeappTailwindcssPostcssPluginOptions, } from './index';
|
|
2
|
+
export type { WeappTailwindcssStyleInjectorOptions } from './types';
|
|
2
3
|
export type { ApplyOptions, CacheOptions, ExtractOptions, TailwindCssOptions, TailwindCssRuntimeOptions, TailwindV4Options, } from './types/typedoc-tailwindcss-runtime';
|
|
3
4
|
export type { UserDefinedOptions } from './types/user-defined-options';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,8 +7,9 @@ import type { AppType, IArbitraryValues, ICustomAttributesEntities } from './sha
|
|
|
7
7
|
import type { UniAppXComponentLocalStylesOptions, UniAppXOptions as UniAppXUserDefinedOptions, UserDefinedOptions } from './user-defined-options';
|
|
8
8
|
import type { LengthUnitsRuntimeOptions, TailwindContentTokenReport, TailwindcssExtractOptions, TailwindcssExtractResult, TailwindCssOptions, TailwindCssRuntimeOptions, TailwindPackageInfo } from '../tailwindcss/runtime-types';
|
|
9
9
|
export type { TailwindCssOptions, TailwindCssRuntimeOptions, UniAppXComponentLocalStylesOptions, UniAppXUserDefinedOptions, UserDefinedOptions, };
|
|
10
|
-
export type { CssPreflightOptions, IStyleHandlerOptions, ItemOrItemArray };
|
|
11
10
|
export type { AppType, IArbitraryValues, ICustomAttributes, ICustomAttributesEntities, IUnocssCompatibilityOptions } from './shared';
|
|
11
|
+
export type { CssPreflightOptions, IStyleHandlerOptions, ItemOrItemArray };
|
|
12
|
+
export type { WeappTailwindcssStyleInjectorOptions } from '../style-injector/internal';
|
|
12
13
|
export type RequiredDefined<T> = {
|
|
13
14
|
[K in keyof T]-?: Exclude<T[K], undefined>;
|
|
14
15
|
};
|
|
@@ -2,6 +2,7 @@ import type { ParserOptions } from '@babel/parser';
|
|
|
2
2
|
import type { CssOptions, LoadedPostcssOptions } from '@weapp-tailwindcss/postcss/types';
|
|
3
3
|
import type { ICreateCacheReturnType } from '../../cache';
|
|
4
4
|
import type { WeappTailwindcssGeneratorUserOptions } from '../../generator';
|
|
5
|
+
import type { WeappTailwindcssStyleInjectorUserOptions } from '../../style-injector/internal';
|
|
5
6
|
import type { AppType, IArbitraryValues, IUnocssCompatibilityOptions } from '../shared';
|
|
6
7
|
import type { LengthUnitsRuntimeOptions, TailwindCssRuntimeOptions } from '../../tailwindcss/runtime-types';
|
|
7
8
|
export interface CssSourceTraceOptions {
|
|
@@ -18,6 +19,7 @@ export interface UserDefinedOptionsGeneralPart {
|
|
|
18
19
|
replaceRuntimePackages?: boolean | Record<string, string> | undefined;
|
|
19
20
|
rewriteCssImports?: boolean | undefined;
|
|
20
21
|
generator?: WeappTailwindcssGeneratorUserOptions | undefined;
|
|
22
|
+
styleInjector?: WeappTailwindcssStyleInjectorUserOptions | undefined;
|
|
21
23
|
cssSourceTrace?: CssSourceTraceUserOptions | undefined;
|
|
22
24
|
disabledDefaultTemplateHandler?: boolean | undefined;
|
|
23
25
|
runtimeLoaderPath?: string | undefined;
|
|
@@ -3,10 +3,10 @@ const require_framework = require("./framework.js");
|
|
|
3
3
|
const require_v4_engine = require("./v4-engine-CKtsdKxK.js");
|
|
4
4
|
const require_generator = require("./generator-CilgHtxb.js");
|
|
5
5
|
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-
|
|
6
|
+
const require_context = require("./context-BziwyWy1.js");
|
|
7
|
+
const require_tailwindcss = require("./tailwindcss-BwoNQ3t8.js");
|
|
8
|
+
const require_hmr_timing = require("./hmr-timing-BKdCeIrn.js");
|
|
9
|
+
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-DIj9m4wB.js");
|
|
10
10
|
require("./logger-TlKT3xmR.js");
|
|
11
11
|
let node_fs = require("node:fs");
|
|
12
12
|
node_fs = require_rolldown_runtime.__toESM(node_fs);
|
|
@@ -515,7 +515,7 @@ function resolveUniAppXStyleIsolationEnabled(root) {
|
|
|
515
515
|
//#region src/uni-app-x/vite.ts
|
|
516
516
|
let transformUVuePromise;
|
|
517
517
|
function loadTransformUVue() {
|
|
518
|
-
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-
|
|
518
|
+
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-KLD1tJdb.js")).then((mod) => mod.transformUVue));
|
|
519
519
|
return transformUVuePromise;
|
|
520
520
|
}
|
|
521
521
|
const preprocessorLangs = /* @__PURE__ */ new Set([
|
|
@@ -1928,8 +1928,14 @@ function resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outputRoot
|
|
|
1928
1928
|
//#endregion
|
|
1929
1929
|
//#region src/bundlers/vite/generate-bundle/subpackages.ts
|
|
1930
1930
|
function readBundleAssetSource(output) {
|
|
1931
|
-
if (output.type !== "asset") return;
|
|
1932
|
-
|
|
1931
|
+
if ("type" in output && output.type !== "asset") return;
|
|
1932
|
+
const source = output.source;
|
|
1933
|
+
if (typeof source === "string") return source;
|
|
1934
|
+
if (typeof source === "function") {
|
|
1935
|
+
const value = source.call(output);
|
|
1936
|
+
return typeof value === "string" ? value : value?.toString();
|
|
1937
|
+
}
|
|
1938
|
+
if (source != null && typeof source.toString === "function") return source.toString();
|
|
1933
1939
|
}
|
|
1934
1940
|
function normalizePackageRoot(root) {
|
|
1935
1941
|
return require_source_candidate_scan_signature.normalizeOutputPathKey(root).replace(/\/+$/, "");
|
|
@@ -3214,13 +3220,15 @@ function createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffe
|
|
|
3214
3220
|
function normalizeRememberedSourceIdentity(file) {
|
|
3215
3221
|
return require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
3216
3222
|
}
|
|
3217
|
-
function selectBestRememberedCssSourceMatches(sources, outputFile, outputRoot, sourceRoot) {
|
|
3218
|
-
|
|
3223
|
+
function selectBestRememberedCssSourceMatches(sources, outputFile, outputRoot, sourceRoot, options = {}) {
|
|
3224
|
+
const minimumScore = options.minimumScore ?? (options.requirePositiveScore ? 1 : 0);
|
|
3219
3225
|
const scoredMatches = sources.map((remembered) => ({
|
|
3220
3226
|
remembered,
|
|
3221
3227
|
score: Math.max(scoreMatchingStyleFileBase(outputFile, remembered.sourceFile, outputRoot, sourceRoot), scoreMatchingStyleFileBase(outputFile, remembered.outputFile, outputRoot, sourceRoot))
|
|
3222
|
-
})).filter((match) => match.score > 0).sort((a, b) => b.score - a.score);
|
|
3228
|
+
})).filter((match) => match.score >= minimumScore && match.score > 0).sort((a, b) => b.score - a.score);
|
|
3223
3229
|
const bestScore = scoredMatches[0]?.score;
|
|
3230
|
+
if (!bestScore && minimumScore > 0) return [];
|
|
3231
|
+
if (sources.length <= 1) return sources;
|
|
3224
3232
|
return bestScore ? scoredMatches.filter((match) => match.score === bestScore).map((match) => match.remembered) : sources;
|
|
3225
3233
|
}
|
|
3226
3234
|
function findRememberedCssSources(sources, outputFile, file, originalSource, outputRoot, sourceRoot) {
|
|
@@ -3238,11 +3246,16 @@ function findRememberedCssSources(sources, outputFile, file, originalSource, out
|
|
|
3238
3246
|
...originalSource.originalFileNames ?? []
|
|
3239
3247
|
].filter((item) => typeof item === "string" && item.length > 0);
|
|
3240
3248
|
const sourceMatched = rememberedSources.filter((remembered) => originalFiles.some((originalFile) => normalizeRememberedSourceIdentity(remembered.sourceFile) === normalizeRememberedSourceIdentity(originalFile)));
|
|
3241
|
-
if (sourceMatched.length > 0)
|
|
3249
|
+
if (sourceMatched.length > 0) {
|
|
3250
|
+
const scoredSourceMatched = selectBestRememberedCssSourceMatches(sourceMatched, outputFile, outputRoot, sourceRoot, { requirePositiveScore: true });
|
|
3251
|
+
if (scoredSourceMatched.length > 0) return scoredSourceMatched;
|
|
3252
|
+
}
|
|
3242
3253
|
const outputMatched = rememberedSources.filter((remembered) => require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile));
|
|
3243
3254
|
if (outputMatched.length > 0) return outputMatched;
|
|
3244
3255
|
if (!require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(source) && !hasTailwindGenerationSource(source)) return [];
|
|
3245
3256
|
const scoredMatches = selectBestRememberedCssSourceMatches(rememberedSources, outputFile, outputRoot, sourceRoot);
|
|
3257
|
+
const strongScoredMatches = selectBestRememberedCssSourceMatches(rememberedSources, outputFile, outputRoot, sourceRoot, { minimumScore: 1e5 });
|
|
3258
|
+
if (strongScoredMatches.length > 0 && strongScoredMatches.length < rememberedSources.length) return strongScoredMatches;
|
|
3246
3259
|
return scoredMatches.length === rememberedSources.length ? [] : scoredMatches;
|
|
3247
3260
|
}
|
|
3248
3261
|
function mergeRememberedCssSources(sources, outputFile) {
|
|
@@ -3644,16 +3657,24 @@ function scoreConfiguredTailwindV4SourceForRawSource(rawSource, entrySource) {
|
|
|
3644
3657
|
for (const token of entryTokens) if (rawTokens.has(token)) score += token.startsWith("config:") ? 100 : 1;
|
|
3645
3658
|
return score;
|
|
3646
3659
|
}
|
|
3647
|
-
function
|
|
3648
|
-
if (!file || !subpackageRoots) return;
|
|
3649
|
-
return [...subpackageRoots].find((root) => isSubpackageOutputFile(file, /* @__PURE__ */ new Set([root])));
|
|
3650
|
-
}
|
|
3651
|
-
function isSameSubpackageScope(outputFile, sourceFile, subpackageRoots) {
|
|
3652
|
-
return resolveSubpackageRootForFile(outputFile, subpackageRoots) === resolveSubpackageRootForFile(sourceFile, subpackageRoots);
|
|
3653
|
-
}
|
|
3654
|
-
function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSource, subpackageRoots) {
|
|
3660
|
+
function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSource, options = {}) {
|
|
3655
3661
|
const generationSources = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
3656
3662
|
if (generationSources.length <= 1) return generationSources[0];
|
|
3663
|
+
const canMatchByOutputPath = Boolean(options.cwd || options.outputRoot || options.projectRoot);
|
|
3664
|
+
const selectByOutputPath = (candidates) => {
|
|
3665
|
+
if (!canMatchByOutputPath) return;
|
|
3666
|
+
const scoredSources = candidates.map((entry) => ({
|
|
3667
|
+
entry,
|
|
3668
|
+
score: require_hmr_timing.scoreTailwindV4CssSourceFileMatch(outputFile, entry.file, {
|
|
3669
|
+
cwd: options.cwd,
|
|
3670
|
+
outputRoot: options.outputRoot,
|
|
3671
|
+
projectRoot: options.projectRoot
|
|
3672
|
+
})
|
|
3673
|
+
})).filter((item) => item.score > 0).sort((a, b) => b.score - a.score);
|
|
3674
|
+
const bestScore = scoredSources[0]?.score;
|
|
3675
|
+
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
3676
|
+
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
3677
|
+
};
|
|
3657
3678
|
const selectByRawSourceFingerprint = (candidates) => {
|
|
3658
3679
|
const scoredSources = candidates.map((entry) => ({
|
|
3659
3680
|
entry,
|
|
@@ -3665,14 +3686,10 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
3665
3686
|
};
|
|
3666
3687
|
const rawSourceMatched = selectByRawSourceFingerprint(generationSources);
|
|
3667
3688
|
if (rawSourceMatched) return rawSourceMatched;
|
|
3668
|
-
const
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
return sourceMatchesSubpackage && [...subpackageRoots].some((root) => isSubpackageOutputFile(outputFile, /* @__PURE__ */ new Set([root])) && isSubpackageOutputFile(entry.file, /* @__PURE__ */ new Set([root])));
|
|
3673
|
-
}) : generationSources;
|
|
3674
|
-
const explicitSources = scopedSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
3675
|
-
const candidates = explicitSources.length === 1 ? explicitSources : scopedSources;
|
|
3689
|
+
const explicitSources = generationSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
3690
|
+
const candidates = explicitSources.length === 1 ? explicitSources : generationSources;
|
|
3691
|
+
const outputPathMatched = selectByOutputPath(candidates);
|
|
3692
|
+
if (outputPathMatched) return outputPathMatched;
|
|
3676
3693
|
if (candidates.length === 1) return candidates[0];
|
|
3677
3694
|
return selectByRawSourceFingerprint(candidates);
|
|
3678
3695
|
}
|
|
@@ -4289,6 +4306,11 @@ function createGenerateBundleHook(context) {
|
|
|
4289
4306
|
if (rememberedCssSources.length > 0) rememberedCssSources = await Promise.all(rememberedCssSources.map(async (remembered) => {
|
|
4290
4307
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4291
4308
|
}));
|
|
4309
|
+
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
4310
|
+
if (!configuredTailwindV4CssSourceFileKeysForScope.has(require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.sourceFile.replace(/[?#].*$/, "")))) return true;
|
|
4311
|
+
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4312
|
+
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4313
|
+
});
|
|
4292
4314
|
let hasUsableRememberedTailwindSource = rememberedCssSources.some((remembered) => hasTailwindGenerationSource(remembered.rawSource) && require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.sourceFile.replace(/[?#].*$/, "")) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file));
|
|
4293
4315
|
const inferredSfcStyleSource = await resolveSfcStyleSourceFromOutputFile(outputFile, snapshot, outDir, opts.tailwindcssBasedir, opts.cssMatcher, getSfcSource, debug);
|
|
4294
4316
|
if (inferredSfcStyleSource) {
|
|
@@ -4301,10 +4323,6 @@ function createGenerateBundleHook(context) {
|
|
|
4301
4323
|
hasUsableRememberedTailwindSource = false;
|
|
4302
4324
|
}
|
|
4303
4325
|
let outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4304
|
-
if (currentSubpackageRoots && rememberedCssSources.length > 0 && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.sourceFile.replace(/[?#].*$/, ""))) && !isSameSubpackageScope(outputFile, remembered.sourceFile, currentSubpackageRoots))) {
|
|
4305
|
-
rememberedCssSources = [];
|
|
4306
|
-
hasUsableRememberedTailwindSource = false;
|
|
4307
|
-
}
|
|
4308
4326
|
if (isTemporaryCssAssetFile(outputFile) && hasTailwindGenerationSource(rawSource)) {
|
|
4309
4327
|
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4310
4328
|
if (resolvedTemporarySource) {
|
|
@@ -4358,7 +4376,11 @@ function createGenerateBundleHook(context) {
|
|
|
4358
4376
|
}
|
|
4359
4377
|
} else if (hasTailwindGenerationSource(rawSource) && (originalSource.originalFileNames?.length ?? 0) === 0) {
|
|
4360
4378
|
const availableConfiguredTailwindV4CssSourceEntries = configuredTailwindV4CssSourceEntries.filter((entry) => !usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(entry.file)));
|
|
4361
|
-
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource,
|
|
4379
|
+
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource, {
|
|
4380
|
+
cwd: opts.tailwindcssBasedir,
|
|
4381
|
+
outputRoot: outDir,
|
|
4382
|
+
projectRoot: sourceRoot ?? rootDir
|
|
4383
|
+
});
|
|
4362
4384
|
if (configuredGenerationSource && !hasViteProcessedCssResultForSource(configuredGenerationSource.file, getViteProcessedCssAssetResults)) {
|
|
4363
4385
|
outputFile = resolveMatchedOutputFileForCurrentAsset(configuredGenerationSource.file) ?? outputFile;
|
|
4364
4386
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
@@ -4415,12 +4437,13 @@ function createGenerateBundleHook(context) {
|
|
|
4415
4437
|
...getCssHandlerOptions(generatorSourceFile),
|
|
4416
4438
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
4417
4439
|
} : getCssHandlerOptions(file);
|
|
4440
|
+
const generatorCssEntries = configuredTailwindV4CssSourceFileKeysForScope.has(require_source_candidate_scan_signature.normalizeOutputPathKey(generatorSourceFile.replace(/[?#].*$/, ""))) ? [generatorSourceFile] : opts.cssEntries;
|
|
4418
4441
|
const generatorCssHandlerOptions = {
|
|
4419
4442
|
...cssHandlerOptions,
|
|
4420
4443
|
sourceOptions: {
|
|
4421
4444
|
...cssHandlerOptions.sourceOptions ?? {},
|
|
4422
4445
|
sourceFile: generatorSourceFile,
|
|
4423
|
-
cssEntries:
|
|
4446
|
+
cssEntries: generatorCssEntries
|
|
4424
4447
|
}
|
|
4425
4448
|
};
|
|
4426
4449
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, generatorCssHandlerOptions);
|
|
@@ -5205,6 +5228,22 @@ function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
|
|
|
5205
5228
|
}
|
|
5206
5229
|
return modules;
|
|
5207
5230
|
}
|
|
5231
|
+
function resolveHotSourceModules(ctx) {
|
|
5232
|
+
const modules = [];
|
|
5233
|
+
const seenModules = /* @__PURE__ */ new Set();
|
|
5234
|
+
const collectModule = (mod) => {
|
|
5235
|
+
if (mod == null || seenModules.has(mod)) return;
|
|
5236
|
+
if (require_source_candidate_scan_signature.isSourceStyleRequest(mod.id ?? mod.url)) return;
|
|
5237
|
+
seenModules.add(mod);
|
|
5238
|
+
modules.push(mod);
|
|
5239
|
+
};
|
|
5240
|
+
for (const mod of ctx.modules) collectModule(mod);
|
|
5241
|
+
for (const mod of ctx.server.moduleGraph.getModulesByFile(ctx.file) ?? []) collectModule(mod);
|
|
5242
|
+
for (const mod of ctx.server.moduleGraph.getModulesByFile((0, _weapp_tailwindcss_shared.cleanUrl)(ctx.file)) ?? []) collectModule(mod);
|
|
5243
|
+
collectModule(ctx.server.moduleGraph.getModuleById?.(ctx.file));
|
|
5244
|
+
collectModule(ctx.server.moduleGraph.getModuleById?.((0, _weapp_tailwindcss_shared.cleanUrl)(ctx.file)));
|
|
5245
|
+
return modules;
|
|
5246
|
+
}
|
|
5208
5247
|
function resolveModuleHotUrl(mod) {
|
|
5209
5248
|
if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
|
|
5210
5249
|
if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
|
|
@@ -5724,7 +5763,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5724
5763
|
return changed;
|
|
5725
5764
|
};
|
|
5726
5765
|
syncCssEntriesFromAnchor(opts.tailwindcssBasedir);
|
|
5727
|
-
const { disabled, customAttributes, onLoad, mainCssChunkMatcher, styleHandler, jsHandler, tailwindRuntime, refreshTailwindcssRuntime, uniAppX, disabledDefaultTemplateHandler } = opts;
|
|
5766
|
+
const { disabled, customAttributes, onLoad, mainCssChunkMatcher, styleHandler, jsHandler, tailwindRuntime, refreshTailwindcssRuntime, uniAppX, disabledDefaultTemplateHandler, styleInjector } = opts;
|
|
5728
5767
|
const initialTailwindRuntime = tailwindRuntime;
|
|
5729
5768
|
const refreshTailwindRuntime = refreshTailwindcssRuntime;
|
|
5730
5769
|
const uniAppXEnabled = require_tailwindcss.isUniAppXEnabled(uniAppX);
|
|
@@ -5903,6 +5942,15 @@ function WeappTailwindcss(options = {}) {
|
|
|
5903
5942
|
const getSourceCandidateSourcesForEntries = (entries, options) => sourceCandidateCollector.sourcesForEntries(entries, options);
|
|
5904
5943
|
const isWatchBuild = () => resolvedConfig?.command === "build" && resolvedConfig.build.watch != null;
|
|
5905
5944
|
const isWatchLikeBuild = () => isWatchBuild() || resolvedConfig?.command === "serve" || node_process.default.env["WEAPP_TW_WATCH_REGRESSION"] === "1" || node_process.default.env["WEAPP_TW_HMR_TIMING"] === "1";
|
|
5945
|
+
const isCurrentWebLikeStylePlatform = () => {
|
|
5946
|
+
const platform = resolveViteStylePlatform();
|
|
5947
|
+
return platform ? isWebOrNativeAppPlatform(platform) : generatorBranch.isWeb;
|
|
5948
|
+
};
|
|
5949
|
+
const isNuxtPageMacroHotModule = (id) => {
|
|
5950
|
+
if (typeof id !== "string" || !/[?&]macro=true(?:&|$)/.test(id)) return false;
|
|
5951
|
+
const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
5952
|
+
return cleanId.includes("/pages/") && /\.(?:vue|tsx?|jsx?)$/.test(cleanId);
|
|
5953
|
+
};
|
|
5906
5954
|
const hasSourceCandidateScanState = () => sourceCandidateScanSignature !== void 0;
|
|
5907
5955
|
const normalizeSourceScanDependency = (file) => node_path.default.normalize(node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file)));
|
|
5908
5956
|
const isSourceScanDependency = (file) => sourceScanDependencies.has(normalizeSourceScanDependency(file));
|
|
@@ -6147,7 +6195,8 @@ function WeappTailwindcss(options = {}) {
|
|
|
6147
6195
|
styleHandler,
|
|
6148
6196
|
debug,
|
|
6149
6197
|
previousCss: viteGeneratedCssByFile.get(file),
|
|
6150
|
-
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource
|
|
6198
|
+
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
6199
|
+
restoreLocalCssImports: !generatorBranch.isWeb
|
|
6151
6200
|
});
|
|
6152
6201
|
if (!generated) return;
|
|
6153
6202
|
const tracedCss = require_hmr_timing.annotateCssSourceTrace(finalizeViteMiniProgramCss(generated.css), {
|
|
@@ -6330,13 +6379,27 @@ function WeappTailwindcss(options = {}) {
|
|
|
6330
6379
|
return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
|
|
6331
6380
|
const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(ctx.file);
|
|
6332
6381
|
await syncChangedSourceCandidateFile(ctx.file);
|
|
6333
|
-
|
|
6382
|
+
const isWebLikeHotUpdate = isCurrentWebLikeStylePlatform();
|
|
6383
|
+
if (isSourceCandidateHotUpdate) {
|
|
6384
|
+
invalidateRecordedGeneratorCandidates();
|
|
6385
|
+
if (isWebLikeHotUpdate) {
|
|
6386
|
+
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
6387
|
+
await syncSourceCandidateScan({ force: true });
|
|
6388
|
+
}
|
|
6389
|
+
}
|
|
6334
6390
|
const cssModules = resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds);
|
|
6335
|
-
|
|
6391
|
+
const sourceModules = isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) ? resolveHotSourceModules(ctx) : ctx.modules;
|
|
6392
|
+
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && !isWebLikeHotUpdate && (!hasSelfAcceptingNonStyleHotModule(sourceModules) && cssModules.length === 0 || cssModules.length > 0 && isUniViteProject())) {
|
|
6393
|
+
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
6394
|
+
return [];
|
|
6395
|
+
}
|
|
6396
|
+
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && ctx.modules.some((mod) => isNuxtPageMacroHotModule(mod.id ?? mod.url))) {
|
|
6336
6397
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
6337
6398
|
return [];
|
|
6338
6399
|
}
|
|
6339
6400
|
sendSupplementalCssHotUpdates(ctx, cssModules);
|
|
6401
|
+
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) return;
|
|
6402
|
+
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && cssModules.length > 0) return [...sourceModules, ...cssModules];
|
|
6340
6403
|
return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
|
|
6341
6404
|
}, { emit: false });
|
|
6342
6405
|
},
|
|
@@ -6433,6 +6496,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6433
6496
|
];
|
|
6434
6497
|
if (uniAppXPlugins) plugins.push(...uniAppXPlugins);
|
|
6435
6498
|
plugins.push(cssFinalizerOutputPlugin);
|
|
6499
|
+
plugins.push(...require_source_candidate_scan_signature.createBuiltinViteStyleInjectorPlugins(styleInjector, () => opts.appType));
|
|
6436
6500
|
return plugins;
|
|
6437
6501
|
}
|
|
6438
6502
|
//#endregion
|