weapp-tailwindcss 5.0.1 → 5.0.3

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.
Files changed (54) hide show
  1. package/dist/{bundle-state-CBF5YX1m.js → bundle-state-CW1X7QIy.js} +35 -3
  2. package/dist/{bundle-state-CQmxxx0R.mjs → bundle-state-s5HwfrmR.mjs} +24 -4
  3. package/dist/bundlers/shared/generated-css-marker.d.ts +6 -0
  4. package/dist/bundlers/shared/generator-css/directives.d.ts +1 -0
  5. package/dist/bundlers/shared/generator-css/source-files.d.ts +11 -5
  6. package/dist/bundlers/shared/generator-css/source-resolver.d.ts +2 -0
  7. package/dist/bundlers/shared/generator-css.d.ts +1 -0
  8. package/dist/bundlers/vite/bundle-state.d.ts +5 -1
  9. package/dist/bundlers/vite/css-finalizer.d.ts +12 -3
  10. package/dist/bundlers/vite/generate-bundle.d.ts +22 -6
  11. package/dist/bundlers/vite/processed-css-assets.d.ts +10 -2
  12. package/dist/bundlers/vite/source-candidates.d.ts +2 -0
  13. package/dist/bundlers/webpack/loaders/watch-dependencies.d.ts +8 -0
  14. package/dist/cli.js +5 -4
  15. package/dist/cli.mjs +5 -4
  16. package/dist/core.js +1 -1
  17. package/dist/core.mjs +1 -1
  18. package/dist/{generator-CvmsIQFI.js → generator-Bd1LntD3.js} +1 -1
  19. package/dist/{generator-DDtsUvkH.mjs → generator-DRHWC1t-.mjs} +1 -1
  20. package/dist/generator.js +2 -2
  21. package/dist/generator.mjs +2 -2
  22. package/dist/gulp.js +16 -10
  23. package/dist/gulp.mjs +14 -8
  24. package/dist/{incremental-runtime-class-set-DArodvWs.mjs → incremental-runtime-class-set-BcAFhVvu.mjs} +496 -619
  25. package/dist/{incremental-runtime-class-set-BffodqHh.js → incremental-runtime-class-set-BdCWIuPW.js} +541 -694
  26. package/dist/index.js +4 -4
  27. package/dist/index.mjs +4 -4
  28. package/dist/{postcss-BzNYQUOH.mjs → postcss-CJrmfXvi.mjs} +4 -4
  29. package/dist/{postcss-DE0TOtV9.js → postcss-DfnqZ4Bm.js} +4 -4
  30. package/dist/postcss.js +1 -1
  31. package/dist/postcss.mjs +1 -1
  32. package/dist/{precheck-BzYPm-EG.js → precheck-8Ik4q0yI.js} +6 -6
  33. package/dist/{precheck-jZvTVXXG.mjs → precheck-h6TNzFbF.mjs} +6 -6
  34. package/dist/presets.js +2 -2
  35. package/dist/presets.mjs +2 -2
  36. package/dist/{source-candidates-BuTlMabx.mjs → source-candidates-D7b-Jzsx.mjs} +44 -11
  37. package/dist/{source-candidates-CxoIaS88.js → source-candidates-DQxvGPSw.js} +49 -10
  38. package/dist/tailwindcss/source-scan.d.ts +3 -1
  39. package/dist/{tailwindcss-CCZcu0lr.mjs → tailwindcss-D5RogwtV.mjs} +2 -2
  40. package/dist/{tailwindcss-DZckITp1.js → tailwindcss-jvoYizzX.js} +7 -1
  41. package/dist/{v3-engine-DGBhUnjn.mjs → v3-engine-BCUGX3gX.mjs} +637 -31
  42. package/dist/{v3-engine-M6Aqru5T.js → v3-engine-CmIF_gsq.js} +768 -30
  43. package/dist/{vite-DgRkWVPG.js → vite-DT-VUrl0.js} +539 -296
  44. package/dist/{vite-BBcQIJpD.mjs → vite-yCeZWm7n.mjs} +538 -295
  45. package/dist/vite.js +1 -1
  46. package/dist/vite.mjs +1 -1
  47. package/dist/{runtime-registry-DpcR3IHI.js → watch-dependencies-zwx4EhBn.js} +39 -0
  48. package/dist/weapp-tw-css-import-rewrite-loader.js +1933 -1621
  49. package/dist/weapp-tw-runtime-classset-loader.js +6 -6
  50. package/dist/{webpack-D-gb4ZvO.js → webpack-BFMJqCH9.js} +7 -7
  51. package/dist/{webpack-D43aMQzO.mjs → webpack-E0gT72EX.mjs} +7 -7
  52. package/dist/webpack.js +1 -1
  53. package/dist/webpack.mjs +1 -1
  54. package/package.json +3 -3
@@ -625,7 +625,7 @@ function collectCssInlineSourceCandidates(root) {
625
625
  excluded
626
626
  };
627
627
  }
628
- function normalizeLegacyContentEntries(content, base) {
628
+ function normalizeLegacyContentEntries(content, base, options = {}) {
629
629
  if (typeof content === "string") {
630
630
  const negated = content.startsWith("!");
631
631
  return [{
@@ -634,8 +634,8 @@ function normalizeLegacyContentEntries(content, base) {
634
634
  pattern: normalizeGlobPattern(negated ? content.slice(1) : content)
635
635
  }];
636
636
  }
637
- if (Array.isArray(content)) return content.flatMap((item) => normalizeLegacyContentEntries(item, base));
638
- if (isLegacyContentObject$1(content)) return normalizeLegacyContentEntries(content.files, base);
637
+ if (Array.isArray(content)) return content.flatMap((item) => normalizeLegacyContentEntries(item, base, options));
638
+ if (isLegacyContentObject$1(content)) return normalizeLegacyContentEntries(content.files, content.relative && options.relativeBase ? options.relativeBase : base, options);
639
639
  return [];
640
640
  }
641
641
  async function pathExistsAsDirectory(file) {
@@ -1708,9 +1708,10 @@ function parseImportSourceParam$1(params) {
1708
1708
  };
1709
1709
  }
1710
1710
  function isTailwindCssImport$1(params) {
1711
- return /^\s*(['"])tailwindcss(?:\/[^'"]*)?\1/.test(params);
1711
+ const specifier = parseCssImportSpecifier$2(params);
1712
+ return specifier === "tailwindcss" || specifier?.startsWith("tailwindcss/") || specifier?.replaceAll("\\", "/").endsWith("/tailwindcss/index.css");
1712
1713
  }
1713
- function parseCssImportSpecifier$1(params) {
1714
+ function parseCssImportSpecifier$2(params) {
1714
1715
  const value = params.trim();
1715
1716
  const quoted = /^(['"])(.*?)\1/.exec(value);
1716
1717
  if (quoted) return quoted[2];
@@ -1718,7 +1719,7 @@ function parseCssImportSpecifier$1(params) {
1718
1719
  return url?.[2] ?? url?.[3];
1719
1720
  }
1720
1721
  function isTailwindCssPreflightImport(params) {
1721
- const specifier = parseCssImportSpecifier$1(params);
1722
+ const specifier = parseCssImportSpecifier$2(params);
1722
1723
  return specifier === "tailwindcss/preflight.css" || specifier === "tailwindcss/preflight";
1723
1724
  }
1724
1725
  function hasImportLayerOption(params) {
@@ -1953,7 +1954,520 @@ function createTailwindV4Engine$1(source) {
1953
1954
  };
1954
1955
  }
1955
1956
  //#endregion
1957
+ //#region src/bundlers/shared/generator-css/config-directive.ts
1958
+ function quoteCssString(value) {
1959
+ return value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"");
1960
+ }
1961
+ function toCssPath(value) {
1962
+ return value.replaceAll("\\", "/");
1963
+ }
1964
+ function prependConfigDirective(css, config) {
1965
+ if (!config || /@config\s+/.test(css)) return css;
1966
+ return `@config "${quoteCssString(toCssPath(config))}";\n${css}`;
1967
+ }
1968
+ function normalizeConfigDirective(css, config) {
1969
+ if (!config || !/@config\s+/.test(css)) return css;
1970
+ return css.replace(/@config\s+(["'])(.+?)\1\s*;?/, `@config "${quoteCssString(toCssPath(config))}";`);
1971
+ }
1972
+ //#endregion
1973
+ //#region src/bundlers/shared/generator-css/markers.ts
1974
+ const TAILWIND_V4_BANNER_RE = /\/\*!\s*tailwindcss v4\./;
1975
+ const TAILWIND_GENERATED_CSS_MARKER_RE = /\/\*!\s*tailwindcss v|@property\s+--tw-|--tw-|:not\(#\\#\)|\.[^,{]*(?:\\:|\\\[|\\#)|(?::host|page|\.tw-root|wx-root-portal-content)[^{]*\{[^}]*--(?:color|spacing|text|font-weight|radius)-/;
1976
+ const GENERATOR_PLACEHOLDER_MARKER_RE = /\/\*!\s*weapp-tailwindcss generator-placeholder\s*\*\//i;
1977
+ const GENERATOR_PLACEHOLDER_MARKER_GLOBAL_RE = /\/\*!\s*weapp-tailwindcss generator-placeholder\s*\*\/\s*/gi;
1978
+ const TAILWIND_BANNER_PREFIX_RE = /^\/\*!\s*tailwindcss v[^*]*\*\/\s*/i;
1979
+ const TAILWIND_BANNER_RE = /\/\*!\s*tailwindcss v[^*]*\*\//i;
1980
+ const TAILWIND_BANNER_GLOBAL_RE = /\/\*!\s*tailwindcss v[^*]*\*\/\s*/gi;
1981
+ const VITE_MARKER_RE = /\/\*\$vite\$:[^*]*\*\//g;
1982
+ function createCssAppend(base, extra) {
1983
+ if (!base) return extra;
1984
+ if (!extra) return base;
1985
+ return `${base}\n${extra}`;
1986
+ }
1987
+ function splitTailwindV4GeneratedCssBySourceOrder(rawSource, rawTailwindCss) {
1988
+ const trimmedRaw = rawSource.trim();
1989
+ const trimmedTailwind = rawTailwindCss.trim();
1990
+ if (trimmedRaw === trimmedTailwind) return {
1991
+ before: "",
1992
+ after: ""
1993
+ };
1994
+ if (trimmedTailwind.startsWith(trimmedRaw)) return {
1995
+ before: "",
1996
+ after: ""
1997
+ };
1998
+ const start = rawSource.indexOf(rawTailwindCss);
1999
+ if (start === -1) return;
2000
+ return {
2001
+ before: rawSource.slice(0, start),
2002
+ after: rawSource.slice(start + rawTailwindCss.length)
2003
+ };
2004
+ }
2005
+ function splitGeneratorPlaceholderCssBySourceOrder(rawSource, rawTailwindCss) {
2006
+ const match = GENERATOR_PLACEHOLDER_MARKER_RE.exec(rawSource);
2007
+ if (!match || match.index === void 0) return;
2008
+ let afterStart = match.index + match[0].length;
2009
+ while (/\s/.test(rawSource[afterStart] ?? "")) afterStart++;
2010
+ if (rawTailwindCss && rawSource.slice(afterStart).startsWith(rawTailwindCss)) {
2011
+ afterStart += rawTailwindCss.length;
2012
+ while (/\s/.test(rawSource[afterStart] ?? "")) afterStart++;
2013
+ }
2014
+ return {
2015
+ before: rawSource.slice(0, match.index),
2016
+ after: rawSource.slice(afterStart)
2017
+ };
2018
+ }
2019
+ function splitTailwindGeneratedCssByBanner(rawSource, start) {
2020
+ const match = start === void 0 ? TAILWIND_BANNER_RE.exec(rawSource) : { index: start };
2021
+ if (!match || match.index === void 0) return;
2022
+ return {
2023
+ before: rawSource.slice(0, match.index),
2024
+ after: [...rawSource.slice(match.index).matchAll(VITE_MARKER_RE)].map((item) => item[0]).join("\n")
2025
+ };
2026
+ }
2027
+ function stripTailwindBanner(css) {
2028
+ return css.replace(TAILWIND_BANNER_PREFIX_RE, "");
2029
+ }
2030
+ function stripTailwindBanners(css) {
2031
+ return css.replace(TAILWIND_BANNER_GLOBAL_RE, "");
2032
+ }
2033
+ function stripGeneratorPlaceholderMarkers(css) {
2034
+ return css.replace(GENERATOR_PLACEHOLDER_MARKER_GLOBAL_RE, "");
2035
+ }
2036
+ function hasTailwindGeneratedCss(rawSource) {
2037
+ return TAILWIND_V4_BANNER_RE.test(rawSource);
2038
+ }
2039
+ function hasTailwindGeneratedCssMarkers(rawSource) {
2040
+ return TAILWIND_GENERATED_CSS_MARKER_RE.test(rawSource) || GENERATOR_PLACEHOLDER_MARKER_RE.test(rawSource);
2041
+ }
2042
+ //#endregion
2043
+ //#region src/bundlers/shared/generator-css/directives.ts
2044
+ const TAILWIND_REMOVABLE_SOURCE_DIRECTIVE_NAMES = new Set([
2045
+ "config",
2046
+ "custom-variant",
2047
+ "layer",
2048
+ "plugin",
2049
+ "reference",
2050
+ "source",
2051
+ "tailwind",
2052
+ "theme",
2053
+ "utility",
2054
+ "variant"
2055
+ ]);
2056
+ const TAILWIND_ROOT_DIRECTIVE_NAMES = new Set([
2057
+ "config",
2058
+ "custom-variant",
2059
+ "plugin",
2060
+ "source",
2061
+ "tailwind",
2062
+ "theme",
2063
+ "utility",
2064
+ "variant"
2065
+ ]);
2066
+ const TAILWIND_ROOT_DIRECTIVE_RE = /@(?:import\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/[^"')\s]*)?|(?:use|forward)\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/[^"')\s]*)?|tailwind|config|custom-variant|plugin|source|theme|utility|variant)\b/;
2067
+ const TAILWIND_EXTRACTABLE_DIRECTIVE_RE = /^\s*@(?:import|use|forward|tailwind|config|source|reference|plugin)\b[\s\S]*?(?:;|$)/;
2068
+ const TAILWIND_EXTRACTABLE_LAYER_STATEMENT_RE = /^\s*@layer\s[^;{]+;\s*$/;
2069
+ const TAILWIND_EXTRACTABLE_BLOCK_START_RE = /^\s*@(?:layer|theme|utility|variant|custom-variant)\b[\s\S]*\{/;
2070
+ const TAILWIND_V3_SUBPATH_IMPORT_LAYERS = new Map([
2071
+ ["tailwindcss/base", "base"],
2072
+ ["tailwindcss/components", "components"],
2073
+ ["tailwindcss/utilities", "utilities"]
2074
+ ]);
2075
+ function parseImportRequest(params) {
2076
+ return /^(?:url\(\s*)?(["']?)([^"')\s]+)\1\s*\)?/.exec(params.trim())?.[2];
2077
+ }
2078
+ function parseConfigRequest(params) {
2079
+ return /^(["'])(.+)\1\s*;?$/.exec(params.trim())?.[2];
2080
+ }
2081
+ function isPackageJsonImportRequest(request) {
2082
+ return typeof request === "string" && request.startsWith("#");
2083
+ }
2084
+ function isWeappTailwindcssImportRequest(request) {
2085
+ return request === "weapp-tailwindcss" || request?.startsWith("weapp-tailwindcss/");
2086
+ }
2087
+ function normalizeTailwindImportRequest(request, options = {}) {
2088
+ if (options.importFallback && isWeappTailwindcssImportRequest(request)) return request.replace(/^weapp-tailwindcss/, "tailwindcss");
2089
+ return request;
2090
+ }
2091
+ function replaceImportRequest(params, request, replacement) {
2092
+ const index = params.indexOf(request);
2093
+ if (index === -1) return params;
2094
+ return `${params.slice(0, index)}${replacement}${params.slice(index + request.length)}`;
2095
+ }
2096
+ function normalizeTailwindImportAtRules(root, options = {}) {
2097
+ if (!options.importFallback) return false;
2098
+ let changed = false;
2099
+ const seenCanonicalImports = /* @__PURE__ */ new Set();
2100
+ root.walkAtRules("import", (node) => {
2101
+ const request = parseImportRequest(node.params);
2102
+ const normalizedRequest = normalizeTailwindImportRequest(request, options);
2103
+ if (!normalizedRequest || !isTailwindImportRequest(normalizedRequest)) return;
2104
+ const normalizedParams = request && normalizedRequest !== request ? replaceImportRequest(node.params, request, normalizedRequest) : node.params;
2105
+ const normalizedKey = normalizedParams.trim();
2106
+ if (seenCanonicalImports.has(normalizedKey)) {
2107
+ node.remove();
2108
+ changed = true;
2109
+ return;
2110
+ }
2111
+ seenCanonicalImports.add(normalizedKey);
2112
+ if (normalizedParams !== node.params) {
2113
+ node.params = normalizedParams;
2114
+ changed = true;
2115
+ }
2116
+ });
2117
+ return changed;
2118
+ }
2119
+ function normalizeTailwindDirectiveLine(line, options = {}) {
2120
+ const trimmed = line.trimStart();
2121
+ if (/^@(?:use|forward)\b/.test(trimmed)) {
2122
+ const request = parseImportRequest(trimmed.replace(/^@(?:use|forward)\b/, ""));
2123
+ if (isTailwindImportRequest(request) || options.importFallback && isWeappTailwindcssImportRequest(request)) {
2124
+ const normalizedRequest = normalizeTailwindImportRequest(request, options);
2125
+ return replaceImportRequest(line.replace(/^(\s*)@(?:use|forward)\b/, "$1@import"), request, normalizedRequest);
2126
+ }
2127
+ return line;
2128
+ }
2129
+ if (!options.importFallback || !trimmed.startsWith("@import")) return line;
2130
+ const request = parseImportRequest(trimmed.replace(/^@import\b/, ""));
2131
+ if (!request || !isWeappTailwindcssImportRequest(request)) return line;
2132
+ return replaceImportRequest(line, request, request.replace(/^weapp-tailwindcss/, "tailwindcss"));
2133
+ }
2134
+ function extractTailwindDirectiveLines(rawSource, options = {}) {
2135
+ const directives = [];
2136
+ const seenImports = /* @__PURE__ */ new Set();
2137
+ for (const line of stripGeneratorPlaceholderMarkers(rawSource).split(/\r?\n/)) {
2138
+ const trimmed = line.trim();
2139
+ if (!trimmed || trimmed.startsWith("//")) continue;
2140
+ const directive = TAILWIND_EXTRACTABLE_DIRECTIVE_RE.exec(line)?.[0] ?? TAILWIND_EXTRACTABLE_LAYER_STATEMENT_RE.exec(line)?.[0];
2141
+ if (!directive) continue;
2142
+ const normalized = normalizeTailwindDirectiveLine(directive.trimEnd(), options);
2143
+ const normalizedTrimmed = normalized.trim();
2144
+ if (options.removeConfig && normalizedTrimmed.startsWith("@config")) continue;
2145
+ const request = /^@(?:import|use|forward)\b/.test(normalizedTrimmed) ? parseImportRequest(normalizedTrimmed.replace(/^@(?:import|use|forward)\b/, "")) : void 0;
2146
+ if (request && !isTailwindImportRequest(request) && !isPackageJsonImportRequest(request)) continue;
2147
+ if (/^@(?:import|use|forward)\b/.test(normalizedTrimmed) && !request) continue;
2148
+ if (request && isTailwindImportRequest(request)) {
2149
+ const key = normalizedTrimmed;
2150
+ if (seenImports.has(key)) continue;
2151
+ seenImports.add(key);
2152
+ }
2153
+ directives.push(normalized);
2154
+ }
2155
+ return directives;
2156
+ }
2157
+ function stripPreprocessorLineComment(line) {
2158
+ let quote;
2159
+ let escaped = false;
2160
+ for (let index = 0; index < line.length; index++) {
2161
+ const char = line[index];
2162
+ if (escaped) {
2163
+ escaped = false;
2164
+ continue;
2165
+ }
2166
+ if (char === "\\") {
2167
+ escaped = true;
2168
+ continue;
2169
+ }
2170
+ if (quote) {
2171
+ if (char === quote) quote = void 0;
2172
+ continue;
2173
+ }
2174
+ if (char === "\"" || char === "'") {
2175
+ quote = char;
2176
+ continue;
2177
+ }
2178
+ if (char === "/" && line[index + 1] === "/" && (index === 0 || /\s/.test(line[index - 1]))) return line.slice(0, index).trimEnd();
2179
+ }
2180
+ return line;
2181
+ }
2182
+ function countBlockBraceDelta(line) {
2183
+ let quote;
2184
+ let escaped = false;
2185
+ let delta = 0;
2186
+ for (let index = 0; index < line.length; index++) {
2187
+ const char = line[index];
2188
+ if (escaped) {
2189
+ escaped = false;
2190
+ continue;
2191
+ }
2192
+ if (char === "\\") {
2193
+ escaped = true;
2194
+ continue;
2195
+ }
2196
+ if (quote) {
2197
+ if (char === quote) quote = void 0;
2198
+ continue;
2199
+ }
2200
+ if (char === "\"" || char === "'") {
2201
+ quote = char;
2202
+ continue;
2203
+ }
2204
+ if (char === "{") delta++;
2205
+ else if (char === "}") delta--;
2206
+ }
2207
+ return delta;
2208
+ }
2209
+ function extractTailwindFallbackBlocks(rawSource) {
2210
+ const blocks = [];
2211
+ let current;
2212
+ let depth = 0;
2213
+ for (const rawLine of stripGeneratorPlaceholderMarkers(rawSource).split(/\r?\n/)) {
2214
+ const line = stripPreprocessorLineComment(rawLine);
2215
+ if (!line.trim()) continue;
2216
+ if (!current) {
2217
+ if (!TAILWIND_EXTRACTABLE_BLOCK_START_RE.test(line)) continue;
2218
+ current = [line];
2219
+ depth = countBlockBraceDelta(line);
2220
+ if (depth <= 0) {
2221
+ blocks.push(current.join("\n"));
2222
+ current = void 0;
2223
+ depth = 0;
2224
+ }
2225
+ continue;
2226
+ }
2227
+ current.push(line);
2228
+ depth += countBlockBraceDelta(line);
2229
+ if (depth <= 0) {
2230
+ blocks.push(current.join("\n"));
2231
+ current = void 0;
2232
+ depth = 0;
2233
+ }
2234
+ }
2235
+ return blocks;
2236
+ }
2237
+ function extractTailwindSourceForPostcssFallback(rawSource, options = {}) {
2238
+ const directives = [...extractTailwindDirectiveLines(rawSource, options), ...extractTailwindFallbackBlocks(rawSource)];
2239
+ return directives.length > 0 ? directives.join("\n") : void 0;
2240
+ }
2241
+ function extractConfigRequestFromSource(rawSource) {
2242
+ for (const line of rawSource.split(/\r?\n/)) {
2243
+ const match = /^\s*@config\b([\s\S]*?)(?:;|$)/.exec(line);
2244
+ const request = match ? parseConfigRequest(match[1] ?? "") : void 0;
2245
+ if (request) return request;
2246
+ }
2247
+ }
2248
+ function resolveConfigPath$1(base, configPath) {
2249
+ if (path.isAbsolute(configPath) || isPackageJsonImportRequest(configPath)) return path.isAbsolute(configPath) ? configPath : void 0;
2250
+ return path.resolve(base, configPath);
2251
+ }
2252
+ function normalizeTailwindConfigDirectives(rawSource, base) {
2253
+ return rawSource.replace(/@config\s+(["'])(.+?)\1\s*;?/g, (full, quote, request) => {
2254
+ if (path.isAbsolute(request) || isPackageJsonImportRequest(request)) return full;
2255
+ return `@config ${quote}${path.resolve(base, request).replace(/\\/g, "/")}${quote};`;
2256
+ });
2257
+ }
2258
+ function hasPreprocessorOnlySyntax(rawSource) {
2259
+ return /(?:^|\n)\s*(?:\/\/|\$[\w-]+\s*:|@[\w-]+\s*:|@(?:mixin|include|function|use|forward)\b)/.test(rawSource);
2260
+ }
2261
+ function normalizeTailwindSourceForGenerator(rawSource, options = {}) {
2262
+ return hasPreprocessorOnlySyntax(rawSource) ? extractTailwindSourceForPostcssFallback(rawSource, options) ?? rawSource : rawSource;
2263
+ }
2264
+ function normalizeTailwindV3CssEntrySource(rawSource) {
2265
+ try {
2266
+ const root = postcss.parse(rawSource);
2267
+ let changed = false;
2268
+ root.walkAtRules("import", (node) => {
2269
+ const layer = TAILWIND_V3_SUBPATH_IMPORT_LAYERS.get(parseImportRequest(node.params) ?? "");
2270
+ if (!layer) return;
2271
+ node.replaceWith(postcss.atRule({
2272
+ name: "tailwind",
2273
+ params: layer
2274
+ }));
2275
+ changed = true;
2276
+ });
2277
+ return changed ? root.toString() : rawSource;
2278
+ } catch {
2279
+ return rawSource;
2280
+ }
2281
+ }
2282
+ function normalizeTailwindSourceDirectives(rawSource, options = {}) {
2283
+ if (!options.importFallback) return rawSource;
2284
+ try {
2285
+ const root = postcss.parse(rawSource);
2286
+ return normalizeTailwindImportAtRules(root, options) ? root.toString() : rawSource;
2287
+ } catch {
2288
+ return extractTailwindSourceForPostcssFallback(rawSource, options) ?? rawSource;
2289
+ }
2290
+ }
2291
+ function isTailwindImportRequest(request) {
2292
+ return request === "tailwindcss" || request === "tailwindcss4" || request?.startsWith("tailwindcss/") || request?.startsWith("tailwindcss4/");
2293
+ }
2294
+ function isTailwindImportAtRule(node, options = {}) {
2295
+ if (node.name === "tailwind") return true;
2296
+ if (node.name !== "import" && node.name !== "use" && node.name !== "forward") return false;
2297
+ return isTailwindImportRequest(normalizeTailwindImportRequest(parseImportRequest(node.params), options));
2298
+ }
2299
+ function isTailwindSourceDirective(node, options = {}) {
2300
+ if (node.type !== "atrule") return false;
2301
+ const atRule = node;
2302
+ if (isTailwindImportAtRule(atRule, options)) return true;
2303
+ if (atRule.name === "import" && isPackageJsonImportRequest(parseImportRequest(atRule.params))) return true;
2304
+ if (atRule.name === "layer") return !atRule.nodes || atRule.nodes.length === 0;
2305
+ return TAILWIND_REMOVABLE_SOURCE_DIRECTIVE_NAMES.has(atRule.name);
2306
+ }
2307
+ function hasGeneratedCssArtifacts(rawSource) {
2308
+ return hasTailwindGeneratedCssMarkers(rawSource) && !GENERATOR_PLACEHOLDER_MARKER_RE.test(rawSource);
2309
+ }
2310
+ function isTailwindGenerationDirective(node, options = {}) {
2311
+ if (node.type !== "atrule") return false;
2312
+ const atRule = node;
2313
+ const request = atRule.name === "import" ? parseImportRequest(atRule.params) : atRule.name === "config" || atRule.name === "plugin" || atRule.name === "reference" ? parseConfigRequest(atRule.params) : void 0;
2314
+ return isTailwindImportAtRule(atRule, options) || isPackageJsonImportRequest(request) || atRule.name === "apply" || !options.ignoreLayer && atRule.name === "layer" || atRule.name === "config" || atRule.name === "source";
2315
+ }
2316
+ function removeTailwindSourceDirectives(rawSource, options = {}) {
2317
+ try {
2318
+ const source = hasPreprocessorOnlySyntax(rawSource) ? extractTailwindSourceForPostcssFallback(rawSource, options) : stripGeneratorPlaceholderMarkers(rawSource);
2319
+ if (!source) return "";
2320
+ const root = postcss.parse(source);
2321
+ let removed = false;
2322
+ root.walk((node) => {
2323
+ if (isTailwindSourceDirective(node, options)) {
2324
+ node.remove();
2325
+ removed = true;
2326
+ }
2327
+ });
2328
+ return removed ? root.toString() : source;
2329
+ } catch {
2330
+ return stripGeneratorPlaceholderMarkers(rawSource);
2331
+ }
2332
+ }
2333
+ function hasTailwindSourceDirectives(rawSource, options = {}) {
2334
+ try {
2335
+ if (GENERATOR_PLACEHOLDER_MARKER_RE.test(rawSource)) return true;
2336
+ const root = postcss.parse(rawSource);
2337
+ let found = false;
2338
+ const ignoreLayer = hasGeneratedCssArtifacts(rawSource);
2339
+ root.walk((node) => {
2340
+ if (isTailwindGenerationDirective(node, {
2341
+ ...options,
2342
+ ignoreLayer
2343
+ })) {
2344
+ found = true;
2345
+ return false;
2346
+ }
2347
+ });
2348
+ return found;
2349
+ } catch {
2350
+ return extractTailwindDirectiveLines(rawSource, options).length > 0;
2351
+ }
2352
+ }
2353
+ function hasTailwindRootDirectives(rawSource, options = {}) {
2354
+ if (!TAILWIND_ROOT_DIRECTIVE_RE.test(rawSource) && !(options.importFallback && rawSource.includes("weapp-tailwindcss"))) return false;
2355
+ try {
2356
+ const root = postcss.parse(rawSource);
2357
+ let found = false;
2358
+ root.walkAtRules((node) => {
2359
+ const request = node.name === "import" ? parseImportRequest(node.params) : node.name === "config" || node.name === "plugin" ? parseConfigRequest(node.params) : void 0;
2360
+ if (isTailwindImportAtRule(node, options) || isPackageJsonImportRequest(request) || TAILWIND_ROOT_DIRECTIVE_NAMES.has(node.name)) {
2361
+ found = true;
2362
+ return false;
2363
+ }
2364
+ });
2365
+ return found;
2366
+ } catch {
2367
+ return extractTailwindDirectiveLines(rawSource, options).length > 0;
2368
+ }
2369
+ }
2370
+ function hasTailwindApplyDirective(rawSource) {
2371
+ if (!rawSource.includes("@apply")) return false;
2372
+ try {
2373
+ const root = postcss.parse(rawSource);
2374
+ let found = false;
2375
+ root.walkAtRules("apply", () => {
2376
+ found = true;
2377
+ return false;
2378
+ });
2379
+ return found;
2380
+ } catch {
2381
+ return false;
2382
+ }
2383
+ }
2384
+ function resolveCssEntrySource(rawSource, base, options = {}) {
2385
+ try {
2386
+ const root = postcss.parse(rawSource);
2387
+ const normalizedImports = normalizeTailwindImportAtRules(root, options);
2388
+ let found = false;
2389
+ let config;
2390
+ let configRequest;
2391
+ let removedConfig = false;
2392
+ const removeConfig = options.removeConfig ?? true;
2393
+ const ignoreLayer = hasGeneratedCssArtifacts(rawSource);
2394
+ root.walk((node) => {
2395
+ if (isTailwindGenerationDirective(node, {
2396
+ ...options,
2397
+ ignoreLayer
2398
+ })) found = true;
2399
+ if (node.type === "atrule" && node.name === "config") {
2400
+ const configPath = parseConfigRequest(node.params);
2401
+ if (configPath && !config) {
2402
+ configRequest = configPath;
2403
+ config = resolveConfigPath$1(base, configPath);
2404
+ }
2405
+ if (removeConfig) {
2406
+ node.remove();
2407
+ removedConfig = true;
2408
+ }
2409
+ }
2410
+ });
2411
+ if (!found) return;
2412
+ if (hasPreprocessorOnlySyntax(rawSource)) {
2413
+ const css = extractTailwindSourceForPostcssFallback(rawSource, {
2414
+ ...options,
2415
+ removeConfig
2416
+ });
2417
+ if (css) return {
2418
+ css,
2419
+ config,
2420
+ configRequest,
2421
+ base
2422
+ };
2423
+ }
2424
+ return {
2425
+ css: removedConfig || normalizedImports ? root.toString() : rawSource,
2426
+ config,
2427
+ configRequest,
2428
+ base
2429
+ };
2430
+ } catch {
2431
+ const css = extractTailwindSourceForPostcssFallback(rawSource, options);
2432
+ const configRequest = extractConfigRequestFromSource(rawSource);
2433
+ const config = configRequest ? resolveConfigPath$1(base, configRequest) : void 0;
2434
+ return css ? {
2435
+ css,
2436
+ config,
2437
+ configRequest,
2438
+ base
2439
+ } : void 0;
2440
+ }
2441
+ }
2442
+ //#endregion
1956
2443
  //#region src/tailwindcss/v4-engine/source.ts
2444
+ const require$1 = createRequire(import.meta.url);
2445
+ function isCssEntryPoint(file) {
2446
+ return typeof file === "string" && path.basename(file) === "index.css" && existsSync(file);
2447
+ }
2448
+ function resolvePackageCssEntryPoint(specifier) {
2449
+ try {
2450
+ const resolved = require$1.resolve(specifier);
2451
+ if (isCssEntryPoint(resolved)) return resolved;
2452
+ } catch {}
2453
+ const packageName = specifier.replace(/\/index\.css$/, "");
2454
+ if (packageName !== "tailwindcss") return;
2455
+ try {
2456
+ const packageJson = require$1.resolve(`${packageName}/package.json`);
2457
+ const cssEntry = path.resolve(path.dirname(packageJson), "index.css");
2458
+ if (isCssEntryPoint(cssEntry)) return cssEntry;
2459
+ } catch {}
2460
+ try {
2461
+ let current = path.dirname(require$1.resolve("tailwindcss-patch"));
2462
+ while (true) {
2463
+ const cssEntry = path.resolve(current, "..", "tailwindcss", "index.css");
2464
+ if (isCssEntryPoint(cssEntry)) return cssEntry;
2465
+ const parent = path.dirname(current);
2466
+ if (parent === current) break;
2467
+ current = parent;
2468
+ }
2469
+ } catch {}
2470
+ }
1957
2471
  function isPostcssPluginImportTarget(value) {
1958
2472
  if (!value) return false;
1959
2473
  return value === "@tailwindcss/postcss" || value.includes("/postcss");
@@ -1975,7 +2489,7 @@ function resolveConfigDir(config, projectRoot) {
1975
2489
  function isBarePackageSpecifier(specifier) {
1976
2490
  return !specifier.startsWith(".") && !specifier.startsWith("/") && !specifier.includes("\\") && !/^[a-z][a-z\d+.-]*:/i.test(specifier);
1977
2491
  }
1978
- function parseCssImportSpecifier(params) {
2492
+ function parseCssImportSpecifier$1(params) {
1979
2493
  const value = params.trim();
1980
2494
  const quoted = /^(['"])(.*?)\1/.exec(value);
1981
2495
  if (quoted) {
@@ -2016,13 +2530,69 @@ function normalizeTailwindV4CssPackageImports(css, packageName) {
2016
2530
  const importSpecifiers = createTailwindV4CssImportSpecifierSet(packageName);
2017
2531
  let changed = false;
2018
2532
  root.walkAtRules("import", (rule) => {
2019
- const parsed = parseCssImportSpecifier(rule.params);
2533
+ const parsed = parseCssImportSpecifier$1(rule.params);
2020
2534
  if (!parsed || !importSpecifiers.has(parsed.specifier)) return;
2021
- rule.params = rule.params.replace(parsed.raw, quoteCssImportSpecifier(`${parsed.specifier}/index.css`, parsed.quote));
2535
+ const cssEntryPoint = resolvePackageCssEntryPoint(`${parsed.specifier}/index.css`);
2536
+ if (!cssEntryPoint) return;
2537
+ rule.params = rule.params.replace(parsed.raw, quoteCssImportSpecifier(cssEntryPoint, parsed.quote));
2022
2538
  changed = true;
2023
2539
  });
2024
2540
  return changed ? root.toString() : css;
2025
2541
  }
2542
+ function normalizeTailwindV4CssSources(cssSources, packageName) {
2543
+ if (!cssSources?.length) return cssSources;
2544
+ let changed = false;
2545
+ const normalizedCssSources = cssSources.map((cssSource) => {
2546
+ if (typeof cssSource.css !== "string") return cssSource;
2547
+ const css = normalizeTailwindV4CssPackageImports(cssSource.css, packageName);
2548
+ if (css === cssSource.css) return cssSource;
2549
+ changed = true;
2550
+ return {
2551
+ ...cssSource,
2552
+ css
2553
+ };
2554
+ });
2555
+ return changed ? normalizedCssSources : cssSources;
2556
+ }
2557
+ function normalizeTailwindV4CssEntrySources(cssEntries, packageName) {
2558
+ if (!cssEntries?.length) return;
2559
+ const remainingCssEntries = [];
2560
+ const cssSources = [];
2561
+ for (const cssEntry of cssEntries) {
2562
+ const file = path.resolve(cssEntry);
2563
+ if (!existsSync(file)) {
2564
+ remainingCssEntries.push(cssEntry);
2565
+ continue;
2566
+ }
2567
+ const base = path.dirname(file);
2568
+ const rawCss = readFileSync(file, "utf8");
2569
+ const css = normalizeTailwindV4CssPackageImports(normalizeConfigDirective(rawCss, resolveCssEntrySource(rawCss, base, { removeConfig: false })?.config), packageName);
2570
+ cssSources.push({
2571
+ file,
2572
+ base,
2573
+ css,
2574
+ dependencies: [file]
2575
+ });
2576
+ }
2577
+ return {
2578
+ cssEntries: remainingCssEntries,
2579
+ cssSources
2580
+ };
2581
+ }
2582
+ function normalizeTailwindV4SourceOptions(options) {
2583
+ if (!options) return options;
2584
+ const css = options.css === void 0 ? void 0 : normalizeTailwindV4CssPackageImports(options.css, options.packageName);
2585
+ const entrySources = normalizeTailwindV4CssEntrySources(options.cssEntries, options.packageName);
2586
+ const cssSources = normalizeTailwindV4CssSources(options.cssSources || entrySources?.cssSources ? [...options.cssSources ?? [], ...entrySources?.cssSources ?? []] : void 0, options.packageName);
2587
+ const cssEntries = entrySources?.cssEntries ?? options.cssEntries;
2588
+ if (css === options.css && cssSources === options.cssSources && cssEntries === options.cssEntries) return options;
2589
+ return {
2590
+ ...options,
2591
+ ...css === void 0 ? {} : { css },
2592
+ ...cssEntries === void 0 ? {} : { cssEntries },
2593
+ ...cssSources === void 0 ? {} : { cssSources }
2594
+ };
2595
+ }
2026
2596
  function resolveTailwindCssImportTarget(patcher) {
2027
2597
  const configuredPackageName = resolveTailwindcssOptions(patcher.options)?.packageName;
2028
2598
  if (typeof configuredPackageName === "string" && configuredPackageName.length > 0 && !isPostcssPluginImportTarget(configuredPackageName)) return configuredPackageName;
@@ -2073,10 +2643,7 @@ function resolveTailwindV4SourceOptionsFromPatcher(patcher) {
2073
2643
  });
2074
2644
  }
2075
2645
  function resolveTailwindV4Source$1(options) {
2076
- return resolveTailwindV4Source(options?.css === void 0 ? options : {
2077
- ...options,
2078
- css: normalizeTailwindV4CssPackageImports(options.css, options.packageName)
2079
- });
2646
+ return resolveTailwindV4Source(normalizeTailwindV4SourceOptions(options));
2080
2647
  }
2081
2648
  async function resolveTailwindV4SourceFromPatcher(patcher) {
2082
2649
  return resolveTailwindV4Source$1(resolveTailwindV4SourceOptionsFromPatcher(patcher));
@@ -2264,22 +2831,22 @@ function parseImportSourceParam(params) {
2264
2831
  sourcePath: match[3]
2265
2832
  };
2266
2833
  }
2834
+ function parseCssImportSpecifier(params) {
2835
+ const value = params.trim();
2836
+ const quoted = /^(['"])(.*?)\1/.exec(value);
2837
+ if (quoted) return quoted[2];
2838
+ const url = /^url\(\s*(?:(['"])(.*?)\1|([^'")\s]+))\s*\)/.exec(value);
2839
+ return url?.[2] ?? url?.[3];
2840
+ }
2267
2841
  function isTailwindCssImport(params) {
2268
- return /^\s*(['"])tailwindcss(?:\/[^'"]*)?\1/.test(params);
2842
+ const specifier = parseCssImportSpecifier(params);
2843
+ return specifier === "tailwindcss" || specifier?.startsWith("tailwindcss/") || specifier?.replaceAll("\\", "/").endsWith("/tailwindcss/index.css");
2269
2844
  }
2270
2845
  function resolveSourceBase(base, sourcePath) {
2271
2846
  return path.isAbsolute(sourcePath) ? sourcePath : path.resolve(base, sourcePath);
2272
2847
  }
2273
2848
  function resolveConfigPath(base, configPath) {
2274
2849
  if (path.isAbsolute(configPath)) return path.resolve(configPath);
2275
- let current = path.resolve(base);
2276
- while (true) {
2277
- const candidate = path.resolve(current, configPath);
2278
- if (existsSync(candidate)) return candidate;
2279
- const parent = path.dirname(current);
2280
- if (parent === current) break;
2281
- current = parent;
2282
- }
2283
2850
  return path.resolve(base, configPath);
2284
2851
  }
2285
2852
  function createCssEntriesCacheKey(css, base, dependencies) {
@@ -2301,6 +2868,11 @@ function createResolvedViteSourceScan(input, dependencies) {
2301
2868
  ...dependencies.size > 0 ? { dependencies: [...dependencies].sort() } : {}
2302
2869
  };
2303
2870
  }
2871
+ function createMergedCssEntrySourceScanEntries(entries, options) {
2872
+ if (options.sourceCount <= 1) return entries;
2873
+ const positiveEntries = entries.filter((entry) => !entry.negated);
2874
+ return positiveEntries.length > 0 ? positiveEntries : entries;
2875
+ }
2304
2876
  async function statConfigDependency(file) {
2305
2877
  try {
2306
2878
  const stats = await stat(file);
@@ -2350,7 +2922,7 @@ async function resolveConfigContentEntries(root, base) {
2350
2922
  for (const configPath of configPaths) {
2351
2923
  const staticContent = readStaticConfigContent(configPath);
2352
2924
  if (staticContent !== void 0) {
2353
- entries.push(...normalizeLegacyContentEntries(staticContent, path.dirname(configPath)));
2925
+ entries.push(...normalizeLegacyContentEntries(staticContent, path.dirname(configPath), { relativeBase: path.dirname(configPath) }));
2354
2926
  continue;
2355
2927
  }
2356
2928
  try {
@@ -2358,7 +2930,7 @@ async function resolveConfigContentEntries(root, base) {
2358
2930
  config: configPath,
2359
2931
  cwd: path.dirname(configPath)
2360
2932
  });
2361
- entries.push(...normalizeLegacyContentEntries(loaded?.config.content, path.dirname(configPath)));
2933
+ entries.push(...normalizeLegacyContentEntries(loaded?.config.content, path.dirname(configPath), { relativeBase: path.dirname(configPath) }));
2362
2934
  } catch {}
2363
2935
  }
2364
2936
  return {
@@ -2432,6 +3004,37 @@ function collectExistingCssEntries(options) {
2432
3004
  ...options.tailwindcssPatcherOptions?.tailwindcss?.v4?.cssEntries ?? []
2433
3005
  ].filter((item) => typeof item === "string" && item.length > 0).map((item) => path.resolve(item)).filter((item) => existsSync(item));
2434
3006
  }
3007
+ async function resolveTailwindV3CssEntryScan(options, patcher) {
3008
+ const cssEntries = collectExistingCssEntries(options);
3009
+ const entries = [];
3010
+ const dependencies = /* @__PURE__ */ new Set();
3011
+ if (cssEntries.length === 0) return {
3012
+ entries,
3013
+ dependencies
3014
+ };
3015
+ const sourceOptions = resolveTailwindV3SourceOptionsFromPatcher(patcher);
3016
+ await Promise.all(cssEntries.map(async (cssEntry) => {
3017
+ addSourceScanDependency(dependencies, cssEntry);
3018
+ let css;
3019
+ try {
3020
+ css = readFileSync(cssEntry, "utf8");
3021
+ } catch {
3022
+ return;
3023
+ }
3024
+ const source = await resolveTailwindV3Source({
3025
+ ...sourceOptions,
3026
+ base: path.dirname(cssEntry),
3027
+ css
3028
+ });
3029
+ addSourceScanDependency(dependencies, source.config);
3030
+ addSourceScanDependencies(dependencies, source.dependencies);
3031
+ entries.push(...normalizeLegacyContentEntries(source.configObject?.content, source.cwd, { relativeBase: source.config ? path.dirname(source.config) : source.cwd }));
3032
+ }));
3033
+ return {
3034
+ entries,
3035
+ dependencies
3036
+ };
3037
+ }
2435
3038
  async function pathExistsAsFile(file) {
2436
3039
  try {
2437
3040
  return (await stat(file)).isFile();
@@ -2485,10 +3088,11 @@ function collectConfiguredCssSources(options) {
2485
3088
  }
2486
3089
  async function resolveViteSourceScanEntries(options, patcher, scanOptions = {}) {
2487
3090
  if (patcher.majorVersion === 3) {
2488
- const source = await resolveTailwindV3SourceFromPatcher(patcher);
2489
- const contentEntries = normalizeLegacyContentEntries(source.configObject?.content, source.config ? path.dirname(source.config) : source.cwd);
3091
+ const [source, cssEntryScan] = await Promise.all([resolveTailwindV3SourceFromPatcher(patcher), resolveTailwindV3CssEntryScan(options, patcher)]);
3092
+ const contentEntries = [...normalizeLegacyContentEntries(source.configObject?.content, source.cwd, { relativeBase: source.config ? path.dirname(source.config) : source.cwd }), ...cssEntryScan.entries];
2490
3093
  const dependencies = /* @__PURE__ */ new Set();
2491
3094
  addSourceScanDependency(dependencies, source.config);
3095
+ for (const dependency of cssEntryScan.dependencies) dependencies.add(dependency);
2492
3096
  return contentEntries.length > 0 ? createResolvedViteSourceScan({ entries: contentEntries }, dependencies) : void 0;
2493
3097
  }
2494
3098
  if (patcher.majorVersion === 4) {
@@ -2525,8 +3129,9 @@ async function resolveViteSourceScanEntries(options, patcher, scanOptions = {})
2525
3129
  }
2526
3130
  }
2527
3131
  const inlineCandidates = mergeTailwindInlineSourceCandidates(cssInlineCandidates);
2528
- if (entries.length > 0 || inlineCandidates || explicit || readableCssEntryCount > 0) return createResolvedViteSourceScan({
2529
- entries: explicit ? entries : entries.length > 0 ? entries : void 0,
3132
+ const scanEntries = createMergedCssEntrySourceScanEntries(entries, { sourceCount: readableCssEntryCount });
3133
+ if (scanEntries.length > 0 || inlineCandidates || explicit || readableCssEntryCount > 0) return createResolvedViteSourceScan({
3134
+ entries: explicit ? scanEntries : scanEntries.length > 0 ? scanEntries : void 0,
2530
3135
  explicit,
2531
3136
  inlineCandidates
2532
3137
  }, dependencies);
@@ -2553,8 +3158,9 @@ async function resolveViteSourceScanEntries(options, patcher, scanOptions = {})
2553
3158
  }
2554
3159
  }
2555
3160
  const cssSourceInlineCandidates = mergeTailwindInlineSourceCandidates(cssInlineCandidates);
2556
- if (entries.length > 0 || cssSourceInlineCandidates || explicit || sourceOptions.cssSources?.length || configuredCssSources.length > 0) return createResolvedViteSourceScan({
2557
- entries: explicit ? entries : entries.length > 0 ? entries : void 0,
3161
+ const cssSourceScanEntries = createMergedCssEntrySourceScanEntries(entries, { sourceCount: (sourceOptions.cssSources?.length ?? 0) + configuredCssSources.length });
3162
+ if (cssSourceScanEntries.length > 0 || cssSourceInlineCandidates || explicit || sourceOptions.cssSources?.length || configuredCssSources.length > 0) return createResolvedViteSourceScan({
3163
+ entries: explicit ? cssSourceScanEntries : cssSourceScanEntries.length > 0 ? cssSourceScanEntries : void 0,
2558
3164
  explicit,
2559
3165
  inlineCandidates: cssSourceInlineCandidates
2560
3166
  }, dependencies);
@@ -3416,4 +4022,4 @@ function resolveTailwindV3SourceFromPatcher(patcher) {
3416
4022
  return resolveTailwindV3Source(resolveTailwindV3SourceOptionsFromPatcher(patcher));
3417
4023
  }
3418
4024
  //#endregion
3419
- export { collectCssInlineSourceCandidates as A, createDebug as B, createTailwindV4Engine$1 as C, loadTailwindV4DesignSystem as D, filterUnsupportedMiniProgramTailwindV4Candidates as E, parseConfigParam$1 as F, normalizeStringListOption as G, readInstalledPackageMajorVersion as H, resolveCssSourceEntries as I, findNearestPackageRoot as J, resolveBooleanObjectOption as K, resolveSourceScanPath as L, expandTailwindSourceEntries as M, isFileMatchedByTailwindSourceEntries as N, DEFAULT_SOURCE_SCAN_EXTENSIONS as O, normalizeLegacyContentEntries as P, resolveTailwindV4CssSourceBase as R, resolveTailwindV4SourceOptionsFromPatcher as S, transformTailwindV4CssToWeapp as T, findTailwindConfig as U, createTailwindcssPatcher as V, resolveTailwindcssOptions as W, findWorkspaceRoot as X, findWorkspacePackageDir as Y, resolveViteSourceScanEntries as _, transformTailwindV3CssByTarget as a, resolveTailwindV4SourceFromPatchOptions as b, getRuntimeClassSetCacheEntry as c, invalidateRuntimeClassSet as d, runtimeSignaturePatchersSymbol as f, resolveTailwindV4EntriesFromCssCached as g, resolveTailwindV4EntriesFromCss as h, createTailwindV3Engine as i, createSourceScanPattern as j, FULL_SOURCE_SCAN_EXTENSION_RE as k, getRuntimeClassSetSignature as l, discoverTailwindV4CssEntries as m, resolveTailwindV3SourceFromPatcher as n, transformTailwindV3CssToWeapp as o, createViteSourceScanMatcher as p, omitUndefined as q, resolveTailwindV3SourceOptionsFromPatcher as r, ensureTailwindcssRuntimePatch as s, resolveTailwindV3Source as t, getRuntimeClassSetSignatureWithSources as u, resolveViteTailwindV4CssDependencies as v, transformTailwindV4CssByTarget as w, resolveTailwindV4SourceFromPatcher as x, resolveTailwindV4Source$1 as y, toPosixPath as z };
4025
+ export { createSourceScanPattern as $, parseImportRequest as A, stripGeneratorPlaceholderMarkers as B, hasTailwindApplyDirective as C, normalizeTailwindSourceDirectives as D, normalizeTailwindConfigDirectives as E, hasTailwindGeneratedCss as F, createTailwindV4Engine$1 as G, stripTailwindBanners as H, hasTailwindGeneratedCssMarkers as I, filterUnsupportedMiniProgramTailwindV4Candidates as J, transformTailwindV4CssByTarget as K, splitGeneratorPlaceholderCssBySourceOrder as L, resolveCssEntrySource as M, VITE_MARKER_RE as N, normalizeTailwindSourceForGenerator as O, createCssAppend as P, collectCssInlineSourceCandidates as Q, splitTailwindGeneratedCssByBanner as R, resolveTailwindV4SourceOptionsFromPatcher as S, hasTailwindSourceDirectives as T, normalizeConfigDirective as U, stripTailwindBanner as V, prependConfigDirective as W, DEFAULT_SOURCE_SCAN_EXTENSIONS as X, loadTailwindV4DesignSystem as Y, FULL_SOURCE_SCAN_EXTENSION_RE as Z, resolveViteSourceScanEntries as _, findWorkspacePackageDir as _t, transformTailwindV3CssByTarget as a, resolveSourceScanPath as at, resolveTailwindV4SourceFromPatchOptions as b, getRuntimeClassSetCacheEntry as c, createDebug as ct, invalidateRuntimeClassSet as d, findTailwindConfig as dt, expandTailwindSourceEntries as et, runtimeSignaturePatchersSymbol as f, resolveTailwindcssOptions as ft, resolveTailwindV4EntriesFromCssCached as g, findNearestPackageRoot as gt, resolveTailwindV4EntriesFromCss as h, omitUndefined as ht, createTailwindV3Engine as i, resolveCssSourceEntries as it, removeTailwindSourceDirectives as j, normalizeTailwindV3CssEntrySource as k, getRuntimeClassSetSignature as l, createTailwindcssPatcher as lt, discoverTailwindV4CssEntries as m, resolveBooleanObjectOption as mt, resolveTailwindV3SourceFromPatcher as n, normalizeLegacyContentEntries as nt, transformTailwindV3CssToWeapp as o, resolveTailwindV4CssSourceBase as ot, createViteSourceScanMatcher as p, normalizeStringListOption as pt, transformTailwindV4CssToWeapp as q, resolveTailwindV3SourceOptionsFromPatcher as r, parseConfigParam$1 as rt, ensureTailwindcssRuntimePatch as s, toPosixPath as st, resolveTailwindV3Source as t, isFileMatchedByTailwindSourceEntries as tt, getRuntimeClassSetSignatureWithSources as u, readInstalledPackageMajorVersion as ut, resolveViteTailwindV4CssDependencies as v, findWorkspaceRoot as vt, hasTailwindRootDirectives as w, resolveTailwindV4SourceFromPatcher as x, resolveTailwindV4Source$1 as y, splitTailwindV4GeneratedCssBySourceOrder as z };