weapp-tailwindcss 5.0.0-next.25 → 5.0.0-next.27

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 (68) hide show
  1. package/dist/{auto-B11j1XiD.js → auto-DP-qtQzE.js} +5 -7
  2. package/dist/{auto-AduSz49t.mjs → auto-XyKTOP7B.mjs} +4 -6
  3. package/dist/{bundle-state-CBouNDzi.mjs → bundle-state-7DRnJcJp.mjs} +1 -2
  4. package/dist/{bundle-state-BY7PWHAc.js → bundle-state-Nn90UQDa.js} +3 -4
  5. package/dist/bundlers/vite/index.d.ts +5 -2
  6. package/dist/bundlers/vite/serve-css-generation.d.ts +11 -0
  7. package/dist/bundlers/vite/source-candidates.d.ts +3 -0
  8. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5.d.ts +1 -1
  9. package/dist/cli.js +9 -11
  10. package/dist/cli.mjs +9 -11
  11. package/dist/core.js +1 -2
  12. package/dist/core.mjs +1 -1
  13. package/dist/css-macro/postcss.js +1 -1
  14. package/dist/css-macro/postcss.mjs +1 -1
  15. package/dist/css-macro.js +4 -4
  16. package/dist/css-macro.mjs +3 -3
  17. package/dist/{defaults-B-1EEhdL.mjs → defaults-8xrgzxFY.mjs} +1 -1
  18. package/dist/{defaults-C10hYUch.js → defaults-C5w9OOrj.js} +1 -2
  19. package/dist/defaults.js +1 -1
  20. package/dist/defaults.mjs +1 -1
  21. package/dist/{generator-CtqzN9L-.mjs → generator-CbpjNxJh.mjs} +1 -1
  22. package/dist/{generator-DTPePQZ9.js → generator-DRNbzjx5.js} +2 -2
  23. package/dist/generator.js +2 -3
  24. package/dist/generator.mjs +2 -2
  25. package/dist/gulp.js +6 -6
  26. package/dist/gulp.mjs +5 -5
  27. package/dist/{incremental-runtime-class-set-CERcE0fP.js → incremental-runtime-class-set-BQPhkSov.js} +48 -14
  28. package/dist/{incremental-runtime-class-set-BlJ86j-A.mjs → incremental-runtime-class-set-C4JgSgRY.mjs} +48 -14
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +4 -6
  31. package/dist/index.mjs +5 -5
  32. package/dist/{postcss-BAO9tGi5.js → postcss-Br1eOaFd.js} +3 -3
  33. package/dist/{postcss-DYktK8_T.mjs → postcss-C7BMYpEF.mjs} +4 -4
  34. package/dist/{postcss-DXkxsPNg.js → postcss-CiYLsqZn.js} +4 -4
  35. package/dist/{postcss-CYPHxj7a.mjs → postcss-YetooK6S.mjs} +2 -2
  36. package/dist/postcss-html-transform.js +1 -1
  37. package/dist/postcss.js +1 -1
  38. package/dist/postcss.mjs +1 -1
  39. package/dist/{precheck-ezN3ovAq.js → precheck-B6xigu7s.js} +2005 -13
  40. package/dist/{precheck-B4CpMt_w.mjs → precheck-uG16Cqaj.mjs} +1998 -12
  41. package/dist/presets/index.d.ts +1 -0
  42. package/dist/presets.js +19 -6
  43. package/dist/presets.mjs +17 -6
  44. package/dist/reset.js +1 -1
  45. package/dist/{source-candidates-DoyOltpZ.mjs → source-candidates-CX2ozpKM.mjs} +49 -7
  46. package/dist/{source-candidates-0jPRIPmC.js → source-candidates-DeK5b9i9.js} +50 -8
  47. package/dist/{tailwindcss-ujlr9Iad.mjs → tailwindcss-C7dJHZ0G.mjs} +2 -2
  48. package/dist/{tailwindcss-nQetCaPp.js → tailwindcss-DEEtJf4u.js} +3 -3
  49. package/dist/{utils-CSA174-I.js → utils-nta4tfFs.js} +1 -1
  50. package/dist/{v3-engine-Bbsrez2w.js → v3-engine-B_33V3Lu.js} +12 -4
  51. package/dist/{v3-engine-COw08vWd.mjs → v3-engine-DcvCCHfs.mjs} +11 -3
  52. package/dist/{vite-DE8Vfzal.js → vite-Bg18XZZc.js} +169 -22
  53. package/dist/{vite-hZsQAY1a.mjs → vite-DOmiMftw.mjs} +168 -21
  54. package/dist/vite.js +1 -1
  55. package/dist/vite.mjs +1 -1
  56. package/dist/weapp-tw-css-import-rewrite-loader.js +53 -22
  57. package/dist/weapp-tw-runtime-classset-loader.js +1 -1
  58. package/dist/{webpack-c2WJnCJI.mjs → webpack-BdrjJf41.mjs} +17 -13
  59. package/dist/{webpack-CTJcw_sX.js → webpack-BzPDhzSz.js} +18 -14
  60. package/dist/webpack.d.ts +1 -3
  61. package/dist/webpack.js +3 -4
  62. package/dist/webpack.mjs +2 -2
  63. package/package.json +9 -7
  64. /package/dist/{chunk-8l464Juk.js → chunk-D6vf50IK.js} +0 -0
  65. /package/dist/{logger-Dr7IvyH2.mjs → logger-BNzxZbZj.mjs} +0 -0
  66. /package/dist/{logger-Cdzl3p8j.js → logger-TlKT3xmR.js} +0 -0
  67. /package/dist/{runtime-registry-CdCV3Opt.js → runtime-registry-DpcR3IHI.js} +0 -0
  68. /package/dist/{utils-B2SJgA1L.mjs → utils-DsaS975I.mjs} +0 -0
@@ -1,13 +1,13 @@
1
- const require_chunk = require("./chunk-8l464Juk.js");
2
- const require_v3_engine = require("./v3-engine-Bbsrez2w.js");
3
- const require_generator = require("./generator-DTPePQZ9.js");
4
- const require_incremental_runtime_class_set = require("./incremental-runtime-class-set-CERcE0fP.js");
5
- const require_precheck = require("./precheck-ezN3ovAq.js");
6
- const require_utils = require("./utils-CSA174-I.js");
7
- const require_tailwindcss = require("./tailwindcss-nQetCaPp.js");
8
- const require_source_candidates = require("./source-candidates-0jPRIPmC.js");
9
- const require_bundle_state = require("./bundle-state-BY7PWHAc.js");
10
- require("./logger-Cdzl3p8j.js");
1
+ const require_chunk = require("./chunk-D6vf50IK.js");
2
+ const require_v3_engine = require("./v3-engine-B_33V3Lu.js");
3
+ const require_generator = require("./generator-DRNbzjx5.js");
4
+ const require_incremental_runtime_class_set = require("./incremental-runtime-class-set-BQPhkSov.js");
5
+ const require_precheck = require("./precheck-B6xigu7s.js");
6
+ const require_utils = require("./utils-nta4tfFs.js");
7
+ const require_tailwindcss = require("./tailwindcss-DEEtJf4u.js");
8
+ const require_source_candidates = require("./source-candidates-DeK5b9i9.js");
9
+ const require_bundle_state = require("./bundle-state-Nn90UQDa.js");
10
+ require("./logger-TlKT3xmR.js");
11
11
  let node_fs = require("node:fs");
12
12
  node_fs = require_chunk.__toESM(node_fs);
13
13
  let postcss = require("postcss");
@@ -1814,6 +1814,83 @@ function createViteRuntimeClassSet(options) {
1814
1814
  };
1815
1815
  }
1816
1816
  //#endregion
1817
+ //#region src/bundlers/vite/serve-css-generation.ts
1818
+ const SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/;
1819
+ const COMMON_JS_PROXY_RE = /\?commonjs-proxy/;
1820
+ const VITE_CSS_HMR_MODULE_RE = /\b__vite__updateStyle\s*\(/;
1821
+ const VITE_CSS_CONST_RE = /\bconst\s+__vite__css\s*=\s*("(?:\\[\s\S]|[^"])*")/;
1822
+ function decodeJsStringLiteral(literal) {
1823
+ try {
1824
+ return JSON.parse(literal);
1825
+ } catch {
1826
+ return;
1827
+ }
1828
+ }
1829
+ function encodeJsStringLiteral(value) {
1830
+ return JSON.stringify(value);
1831
+ }
1832
+ function extractViteCssHmrModuleCss(code) {
1833
+ const match = VITE_CSS_CONST_RE.exec(code);
1834
+ if (!match?.[1]) return;
1835
+ const css = decodeJsStringLiteral(match[1]);
1836
+ if (typeof css !== "string") return;
1837
+ return {
1838
+ css,
1839
+ start: match.index + match[0].lastIndexOf(match[1]),
1840
+ end: match.index + match[0].length
1841
+ };
1842
+ }
1843
+ function replaceViteCssHmrModuleCss(code, css) {
1844
+ const extracted = extractViteCssHmrModuleCss(code);
1845
+ if (!extracted) return;
1846
+ return `${code.slice(0, extracted.start)}${encodeJsStringLiteral(css)}${code.slice(extracted.end)}`;
1847
+ }
1848
+ function isViteServeStyleRequest(id, command) {
1849
+ return command === "serve" && require_bundle_state.isSourceStyleRequest(id) && !SPECIAL_QUERY_RE.test(id) && !COMMON_JS_PROXY_RE.test(id);
1850
+ }
1851
+ function isViteServeCssRootRequest(id, command) {
1852
+ return command === "serve" && require_bundle_state.isCSSRequest(id) && !SPECIAL_QUERY_RE.test(id) && !COMMON_JS_PROXY_RE.test(id);
1853
+ }
1854
+ function isViteCssHmrModule(code, id, command) {
1855
+ return isViteServeStyleRequest(id, command) && VITE_CSS_HMR_MODULE_RE.test(code) && /[?&](?:direct|vue)(?:&|$)/.test(id);
1856
+ }
1857
+ function createViteServeCssGenerationPlugins(options) {
1858
+ return [{
1859
+ name: `${require_precheck.vitePluginName}:generate:serve`,
1860
+ apply: "serve",
1861
+ enforce: "pre",
1862
+ async transform(code, id) {
1863
+ if (!options.shouldGenerate() || !isViteServeCssRootRequest(id, options.getCommand())) return;
1864
+ if (!require_incremental_runtime_class_set.hasTailwindRootDirectives(code)) return;
1865
+ await options.onTailwindRootCss?.(id, code);
1866
+ const generatedCss = await options.generateCss(id, code, this);
1867
+ if (generatedCss === void 0 || generatedCss === code) return;
1868
+ return {
1869
+ code: generatedCss,
1870
+ map: null
1871
+ };
1872
+ }
1873
+ }, {
1874
+ name: `${require_precheck.vitePluginName}:generate:serve-hmr`,
1875
+ apply: "serve",
1876
+ enforce: "post",
1877
+ async transform(code, id) {
1878
+ if (!options.shouldGenerate() || !isViteCssHmrModule(code, id, options.getCommand())) return;
1879
+ const extracted = extractViteCssHmrModuleCss(code);
1880
+ if (!extracted) return;
1881
+ await options.onTailwindRootCss?.(id, extracted.css);
1882
+ const generatedCss = await options.generateCss(id, extracted.css, this);
1883
+ if (generatedCss === void 0 || generatedCss === extracted.css) return;
1884
+ const nextCode = replaceViteCssHmrModuleCss(code, generatedCss);
1885
+ if (nextCode === void 0 || nextCode === code) return;
1886
+ return {
1887
+ code: nextCode,
1888
+ map: null
1889
+ };
1890
+ }
1891
+ }];
1892
+ }
1893
+ //#endregion
1817
1894
  //#region src/bundlers/vite/tailwind-basedir.ts
1818
1895
  const PACKAGE_JSON_FILE = "package.json";
1819
1896
  function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
@@ -1885,7 +1962,6 @@ function WeappTailwindcss(options = {}) {
1885
1962
  const shouldOwnTailwindGeneration = !disabledOptions.plugin;
1886
1963
  const shouldRewriteCssImports = tailwindcssMajorVersion >= 4;
1887
1964
  const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator);
1888
- const isWebGeneratorTarget = generatorOptions.target === "web";
1889
1965
  const shouldInferAppType = !hasExplicitAppType && generatorOptions.target !== "web";
1890
1966
  const hasInitialTailwindCssRoots = require_tailwindcss.hasConfiguredTailwindV4CssRoots({
1891
1967
  ...options,
@@ -1895,6 +1971,10 @@ function WeappTailwindcss(options = {}) {
1895
1971
  let refreshRuntimeStateForAutoCssSources;
1896
1972
  let autoCssSourcesRefresh;
1897
1973
  let autoCssSourcesDiscovered = false;
1974
+ const syncTailwindCssSourceCandidates = async (id, css) => {
1975
+ await sourceCandidateCollector.syncCss(id, css);
1976
+ cacheCurrentSourceCandidateScan();
1977
+ };
1898
1978
  const registerAutoCssSource = async (id, css, options = {}) => {
1899
1979
  if (tailwindcssMajorVersion < 4 || !shouldOwnTailwindGeneration || hasInitialTailwindCssRoots) return;
1900
1980
  const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
@@ -1903,6 +1983,7 @@ function WeappTailwindcss(options = {}) {
1903
1983
  const sourceCss = require_incremental_runtime_class_set.normalizeTailwindSourceForGenerator(css, { importFallback: true });
1904
1984
  if (autoCssSourceContent.get(sourceFile) === sourceCss) return;
1905
1985
  autoCssSourceContent.set(sourceFile, sourceCss);
1986
+ await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
1906
1987
  const dependencies = await require_v3_engine.resolveViteTailwindV4CssDependencies(sourceCss, node_path.default.dirname(sourceFile));
1907
1988
  if (!require_tailwindcss.upsertTailwindV4CssSource(opts, {
1908
1989
  file: sourceFile,
@@ -1929,6 +2010,7 @@ function WeappTailwindcss(options = {}) {
1929
2010
  const sourceCss = require_incremental_runtime_class_set.normalizeTailwindSourceForGenerator(await (0, node_fs_promises.readFile)(sourceFile, "utf8"), { importFallback: true });
1930
2011
  if (autoCssSourceContent.get(sourceFile) === sourceCss) continue;
1931
2012
  autoCssSourceContent.set(sourceFile, sourceCss);
2013
+ await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
1932
2014
  const resolved = await require_v3_engine.resolveTailwindV4EntriesFromCssCached(sourceCss, node_path.default.dirname(sourceFile));
1933
2015
  changed = require_tailwindcss.upsertTailwindV4CssSource(opts, {
1934
2016
  file: sourceFile,
@@ -2002,6 +2084,7 @@ function WeappTailwindcss(options = {}) {
2002
2084
  const collectSourceCandidateScanRoots = (root, entries) => {
2003
2085
  if (entries?.length) return [{
2004
2086
  entries,
2087
+ explicit: sourceScanExplicit,
2005
2088
  root
2006
2089
  }];
2007
2090
  if (sourceScanExplicit) return [];
@@ -2027,6 +2110,7 @@ function WeappTailwindcss(options = {}) {
2027
2110
  const scanSourceCandidateRoots = async (roots, outDir) => {
2028
2111
  await Promise.all(roots.map((root) => sourceCandidateCollector.scanRoot({
2029
2112
  entries: root.entries,
2113
+ explicit: root.explicit,
2030
2114
  root: root.root,
2031
2115
  outDir
2032
2116
  })));
@@ -2154,20 +2238,72 @@ function WeappTailwindcss(options = {}) {
2154
2238
  const resolveHotTailwindCssModules = (ctx) => {
2155
2239
  const modules = [];
2156
2240
  const seenModules = /* @__PURE__ */ new Set();
2241
+ const collectModule = (mod) => {
2242
+ if (mod == null || seenModules.has(mod)) return;
2243
+ if (!require_bundle_state.isSourceStyleRequest(mod.id ?? mod.url)) return;
2244
+ seenModules.add(mod);
2245
+ ctx.server.moduleGraph.invalidateModule(mod);
2246
+ modules.push(mod);
2247
+ };
2157
2248
  for (const id of tailwindRootCssModuleIds) {
2158
- const candidates = [ctx.server.moduleGraph.getModuleById(id), ...ctx.server.moduleGraph.getModulesByFile(id) ?? []].filter((mod) => {
2159
- if (mod == null) return false;
2160
- return require_bundle_state.isSourceStyleRequest(mod.id ?? mod.url);
2161
- });
2162
- for (const mod of candidates) {
2163
- if (seenModules.has(mod)) continue;
2164
- seenModules.add(mod);
2165
- ctx.server.moduleGraph.invalidateModule(mod);
2166
- modules.push(mod);
2167
- }
2249
+ const candidates = [
2250
+ ctx.server.moduleGraph.getModuleById(id),
2251
+ ctx.server.moduleGraph.getModuleById((0, _weapp_tailwindcss_shared.cleanUrl)(id)),
2252
+ ...ctx.server.moduleGraph.getModulesByFile(id) ?? [],
2253
+ ...ctx.server.moduleGraph.getModulesByFile((0, _weapp_tailwindcss_shared.cleanUrl)(id)) ?? []
2254
+ ];
2255
+ for (const mod of candidates) collectModule(mod);
2168
2256
  }
2169
2257
  return modules;
2170
2258
  };
2259
+ const resolveModuleHotUrl = (mod) => {
2260
+ if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
2261
+ if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
2262
+ };
2263
+ const includesHotModule = (modules, target) => {
2264
+ const targetUrl = resolveModuleHotUrl(target);
2265
+ const targetId = target.id;
2266
+ return modules.some((mod) => {
2267
+ if (mod === target) return true;
2268
+ return targetUrl !== void 0 && resolveModuleHotUrl(mod) === targetUrl || typeof targetId === "string" && targetId.length > 0 && mod.id === targetId;
2269
+ });
2270
+ };
2271
+ const hasSelfAcceptingNonStyleHotModule = (modules) => {
2272
+ return modules.some((mod) => {
2273
+ return !require_bundle_state.isSourceStyleRequest(mod.id ?? mod.url) && mod.isSelfAccepting === true;
2274
+ });
2275
+ };
2276
+ const isUniViteProject = () => {
2277
+ return resolvedConfig?.plugins?.some((plugin) => plugin.name.includes("uni")) ?? false;
2278
+ };
2279
+ const sendSupplementalCssHotUpdates = (ctx, cssModules) => {
2280
+ const updates = cssModules.filter((mod) => !includesHotModule(ctx.modules, mod)).map((mod) => {
2281
+ const hotUrl = resolveModuleHotUrl(mod);
2282
+ if (!hotUrl) return;
2283
+ return {
2284
+ type: "js-update",
2285
+ timestamp: ctx.timestamp,
2286
+ path: hotUrl,
2287
+ acceptedPath: hotUrl,
2288
+ explicitImportRequired: false,
2289
+ isWithinCircularImport: false
2290
+ };
2291
+ }).filter((update) => update !== void 0);
2292
+ if (updates.length === 0) return;
2293
+ queueMicrotask(() => {
2294
+ ctx.server.ws?.send?.({
2295
+ type: "update",
2296
+ updates
2297
+ });
2298
+ });
2299
+ };
2300
+ const sendFullReloadForUnresolvedHotUpdate = (ctx) => {
2301
+ ctx.server.ws?.send?.({
2302
+ type: "full-reload",
2303
+ path: "*",
2304
+ triggeredBy: ctx.file
2305
+ });
2306
+ };
2171
2307
  const matchesViteProcessedCssSource = (candidate) => {
2172
2308
  const normalized = normalizeViteProcessedCssFile(candidate);
2173
2309
  return viteProcessedCssSourceFiles.has(normalized);
@@ -2268,7 +2404,6 @@ function WeappTailwindcss(options = {}) {
2268
2404
  });
2269
2405
  const isIosPlatform = require_utils.resolveUniUtsPlatform().isAppIos;
2270
2406
  const prepareTailwindGeneration = async () => {
2271
- if (isWebGeneratorTarget && runtimeState.twPatcher.majorVersion !== 3) return;
2272
2407
  if (shouldDiscoverAutoCssSources()) await discoverAndRegisterAutoCssSources();
2273
2408
  await syncSourceCandidateScan();
2274
2409
  };
@@ -2320,9 +2455,15 @@ function WeappTailwindcss(options = {}) {
2320
2455
  },
2321
2456
  async handleHotUpdate(ctx) {
2322
2457
  return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
2458
+ const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && require_source_candidates.isSourceCandidateRequest(ctx.file);
2323
2459
  await syncChangedSourceCandidateFile(ctx.file);
2324
2460
  invalidateRecordedGeneratorCandidates();
2325
2461
  const cssModules = resolveHotTailwindCssModules(ctx);
2462
+ if (isSourceCandidateHotUpdate && !require_bundle_state.isSourceStyleRequest(ctx.file) && (!hasSelfAcceptingNonStyleHotModule(ctx.modules) && cssModules.length === 0 || cssModules.length > 0 && isUniViteProject())) {
2463
+ sendFullReloadForUnresolvedHotUpdate(ctx);
2464
+ return [];
2465
+ }
2466
+ sendSupplementalCssHotUpdates(ctx, cssModules);
2326
2467
  return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
2327
2468
  }, { emit: false });
2328
2469
  },
@@ -2332,6 +2473,12 @@ function WeappTailwindcss(options = {}) {
2332
2473
  }, { emit: false });
2333
2474
  }
2334
2475
  },
2476
+ ...createViteServeCssGenerationPlugins({
2477
+ generateCss: generateTailwindCssForVitePipeline,
2478
+ getCommand: () => resolvedConfig?.command,
2479
+ onTailwindRootCss: (id, code) => registerAutoCssSource(id, code),
2480
+ shouldGenerate: () => shouldOwnTailwindGeneration
2481
+ }),
2335
2482
  {
2336
2483
  name: `${require_precheck.vitePluginName}:post`,
2337
2484
  enforce: "post",
@@ -1,12 +1,12 @@
1
- import { B as createDebug, E as filterUnsupportedMiniProgramTailwindV4Candidates, J as findNearestPackageRoot, U as findTailwindConfig, W as resolveTailwindcssOptions, _ as resolveViteSourceScanEntries, g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as createViteSourceScanMatcher, q as omitUndefined, v as resolveViteTailwindV4CssDependencies } from "./v3-engine-COw08vWd.mjs";
2
- import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-CtqzN9L-.mjs";
3
- import { a as validateCandidatesByGenerator, c as hasTailwindSourceDirectives, i as generateCssByGenerator, l as normalizeTailwindSourceForGenerator, n as createHmrTimingRecorder, o as processCachedTask, s as hasTailwindRootDirectives, t as createBundleRuntimeClassSetManager, u as hasTailwindGeneratedCssMarkers } from "./incremental-runtime-class-set-BlJ86j-A.mjs";
4
- import { _ as createTailwindRuntimeReadyPromise, a as vitePluginName, c as analyzeSource, d as isClassContextLiteralPath, f as replaceWxml, g as collectRuntimeClassSet, h as toCustomAttributesEntities, l as JsTokenUpdater, n as getCompilerContext, o as generateCode, p as babelParse, s as createAttributeMatcher, t as shouldSkipJsTransform, u as _defineProperty, y as refreshTailwindRuntimeState } from "./precheck-B4CpMt_w.mjs";
5
- import { o as resolveUniUtsPlatform } from "./utils-B2SJgA1L.mjs";
6
- import { c as upsertTailwindV4CssSource, i as resolveUniAppXOptions, r as isUniAppXEnabled, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-ujlr9Iad.mjs";
7
- import { n as isSourceCandidateRequest, t as createSourceCandidateCollector } from "./source-candidates-DoyOltpZ.mjs";
8
- import { a as createBundleModuleGraphOptions, b as toAbsoluteOutputPath, c as hasBundlerGeneratedCssMarker, d as resolvePluginDisabledState, f as cleanUrl, g as isSourceStyleRequest, h as slash, i as applyLinkedResults, l as stripBundlerGeneratedCssMarkers, m as isCSSRequest, n as createBundleBuildState, o as pushConcurrentTaskFactories, p as formatPostcssSourceMap, r as updateBundleBuildState, s as createBundlerGeneratedCssMarker, t as buildBundleSnapshot, u as resolvePackageDir, v as normalizeOutputPathKey } from "./bundle-state-CBouNDzi.mjs";
9
- import { t as logger$1 } from "./logger-Dr7IvyH2.mjs";
1
+ import { B as createDebug, E as filterUnsupportedMiniProgramTailwindV4Candidates, J as findNearestPackageRoot, U as findTailwindConfig, W as resolveTailwindcssOptions, _ as resolveViteSourceScanEntries, g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as createViteSourceScanMatcher, q as omitUndefined, v as resolveViteTailwindV4CssDependencies } from "./v3-engine-DcvCCHfs.mjs";
2
+ import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-CbpjNxJh.mjs";
3
+ import { a as validateCandidatesByGenerator, c as hasTailwindSourceDirectives, i as generateCssByGenerator, l as normalizeTailwindSourceForGenerator, n as createHmrTimingRecorder, o as processCachedTask, s as hasTailwindRootDirectives, t as createBundleRuntimeClassSetManager, u as hasTailwindGeneratedCssMarkers } from "./incremental-runtime-class-set-C4JgSgRY.mjs";
4
+ import { _ as collectRuntimeClassSet, a as vitePluginName, b as refreshTailwindRuntimeState, c as createAttributeMatcher, d as _defineProperty, f as isClassContextLiteralPath, g as toCustomAttributesEntities, l as analyzeSource, m as babelParse, n as getCompilerContext, p as replaceWxml, s as generateCode, t as shouldSkipJsTransform, u as JsTokenUpdater, v as createTailwindRuntimeReadyPromise } from "./precheck-uG16Cqaj.mjs";
5
+ import { o as resolveUniUtsPlatform } from "./utils-DsaS975I.mjs";
6
+ import { c as upsertTailwindV4CssSource, i as resolveUniAppXOptions, r as isUniAppXEnabled, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-C7dJHZ0G.mjs";
7
+ import { n as isSourceCandidateRequest, t as createSourceCandidateCollector } from "./source-candidates-CX2ozpKM.mjs";
8
+ import { a as createBundleModuleGraphOptions, b as toAbsoluteOutputPath, c as hasBundlerGeneratedCssMarker, d as resolvePluginDisabledState, f as cleanUrl, g as isSourceStyleRequest, h as slash, i as applyLinkedResults, l as stripBundlerGeneratedCssMarkers, m as isCSSRequest, n as createBundleBuildState, o as pushConcurrentTaskFactories, p as formatPostcssSourceMap, r as updateBundleBuildState, s as createBundlerGeneratedCssMarker, t as buildBundleSnapshot, u as resolvePackageDir, v as normalizeOutputPathKey } from "./bundle-state-7DRnJcJp.mjs";
9
+ import { t as logger$1 } from "./logger-BNzxZbZj.mjs";
10
10
  import fs, { existsSync, readFileSync } from "node:fs";
11
11
  import postcss from "postcss";
12
12
  import path from "node:path";
@@ -1805,6 +1805,83 @@ function createViteRuntimeClassSet(options) {
1805
1805
  };
1806
1806
  }
1807
1807
  //#endregion
1808
+ //#region src/bundlers/vite/serve-css-generation.ts
1809
+ const SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/;
1810
+ const COMMON_JS_PROXY_RE = /\?commonjs-proxy/;
1811
+ const VITE_CSS_HMR_MODULE_RE = /\b__vite__updateStyle\s*\(/;
1812
+ const VITE_CSS_CONST_RE = /\bconst\s+__vite__css\s*=\s*("(?:\\[\s\S]|[^"])*")/;
1813
+ function decodeJsStringLiteral(literal) {
1814
+ try {
1815
+ return JSON.parse(literal);
1816
+ } catch {
1817
+ return;
1818
+ }
1819
+ }
1820
+ function encodeJsStringLiteral(value) {
1821
+ return JSON.stringify(value);
1822
+ }
1823
+ function extractViteCssHmrModuleCss(code) {
1824
+ const match = VITE_CSS_CONST_RE.exec(code);
1825
+ if (!match?.[1]) return;
1826
+ const css = decodeJsStringLiteral(match[1]);
1827
+ if (typeof css !== "string") return;
1828
+ return {
1829
+ css,
1830
+ start: match.index + match[0].lastIndexOf(match[1]),
1831
+ end: match.index + match[0].length
1832
+ };
1833
+ }
1834
+ function replaceViteCssHmrModuleCss(code, css) {
1835
+ const extracted = extractViteCssHmrModuleCss(code);
1836
+ if (!extracted) return;
1837
+ return `${code.slice(0, extracted.start)}${encodeJsStringLiteral(css)}${code.slice(extracted.end)}`;
1838
+ }
1839
+ function isViteServeStyleRequest(id, command) {
1840
+ return command === "serve" && isSourceStyleRequest(id) && !SPECIAL_QUERY_RE.test(id) && !COMMON_JS_PROXY_RE.test(id);
1841
+ }
1842
+ function isViteServeCssRootRequest(id, command) {
1843
+ return command === "serve" && isCSSRequest(id) && !SPECIAL_QUERY_RE.test(id) && !COMMON_JS_PROXY_RE.test(id);
1844
+ }
1845
+ function isViteCssHmrModule(code, id, command) {
1846
+ return isViteServeStyleRequest(id, command) && VITE_CSS_HMR_MODULE_RE.test(code) && /[?&](?:direct|vue)(?:&|$)/.test(id);
1847
+ }
1848
+ function createViteServeCssGenerationPlugins(options) {
1849
+ return [{
1850
+ name: `${vitePluginName}:generate:serve`,
1851
+ apply: "serve",
1852
+ enforce: "pre",
1853
+ async transform(code, id) {
1854
+ if (!options.shouldGenerate() || !isViteServeCssRootRequest(id, options.getCommand())) return;
1855
+ if (!hasTailwindRootDirectives(code)) return;
1856
+ await options.onTailwindRootCss?.(id, code);
1857
+ const generatedCss = await options.generateCss(id, code, this);
1858
+ if (generatedCss === void 0 || generatedCss === code) return;
1859
+ return {
1860
+ code: generatedCss,
1861
+ map: null
1862
+ };
1863
+ }
1864
+ }, {
1865
+ name: `${vitePluginName}:generate:serve-hmr`,
1866
+ apply: "serve",
1867
+ enforce: "post",
1868
+ async transform(code, id) {
1869
+ if (!options.shouldGenerate() || !isViteCssHmrModule(code, id, options.getCommand())) return;
1870
+ const extracted = extractViteCssHmrModuleCss(code);
1871
+ if (!extracted) return;
1872
+ await options.onTailwindRootCss?.(id, extracted.css);
1873
+ const generatedCss = await options.generateCss(id, extracted.css, this);
1874
+ if (generatedCss === void 0 || generatedCss === extracted.css) return;
1875
+ const nextCode = replaceViteCssHmrModuleCss(code, generatedCss);
1876
+ if (nextCode === void 0 || nextCode === code) return;
1877
+ return {
1878
+ code: nextCode,
1879
+ map: null
1880
+ };
1881
+ }
1882
+ }];
1883
+ }
1884
+ //#endregion
1808
1885
  //#region src/bundlers/vite/tailwind-basedir.ts
1809
1886
  const PACKAGE_JSON_FILE = "package.json";
1810
1887
  function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
@@ -1876,7 +1953,6 @@ function WeappTailwindcss(options = {}) {
1876
1953
  const shouldOwnTailwindGeneration = !disabledOptions.plugin;
1877
1954
  const shouldRewriteCssImports = tailwindcssMajorVersion >= 4;
1878
1955
  const generatorOptions = normalizeWeappTailwindcssGeneratorOptions(opts.generator);
1879
- const isWebGeneratorTarget = generatorOptions.target === "web";
1880
1956
  const shouldInferAppType = !hasExplicitAppType && generatorOptions.target !== "web";
1881
1957
  const hasInitialTailwindCssRoots = hasConfiguredTailwindV4CssRoots({
1882
1958
  ...options,
@@ -1886,6 +1962,10 @@ function WeappTailwindcss(options = {}) {
1886
1962
  let refreshRuntimeStateForAutoCssSources;
1887
1963
  let autoCssSourcesRefresh;
1888
1964
  let autoCssSourcesDiscovered = false;
1965
+ const syncTailwindCssSourceCandidates = async (id, css) => {
1966
+ await sourceCandidateCollector.syncCss(id, css);
1967
+ cacheCurrentSourceCandidateScan();
1968
+ };
1889
1969
  const registerAutoCssSource = async (id, css, options = {}) => {
1890
1970
  if (tailwindcssMajorVersion < 4 || !shouldOwnTailwindGeneration || hasInitialTailwindCssRoots) return;
1891
1971
  const file = cleanUrl(id);
@@ -1894,6 +1974,7 @@ function WeappTailwindcss(options = {}) {
1894
1974
  const sourceCss = normalizeTailwindSourceForGenerator(css, { importFallback: true });
1895
1975
  if (autoCssSourceContent.get(sourceFile) === sourceCss) return;
1896
1976
  autoCssSourceContent.set(sourceFile, sourceCss);
1977
+ await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
1897
1978
  const dependencies = await resolveViteTailwindV4CssDependencies(sourceCss, path.dirname(sourceFile));
1898
1979
  if (!upsertTailwindV4CssSource(opts, {
1899
1980
  file: sourceFile,
@@ -1920,6 +2001,7 @@ function WeappTailwindcss(options = {}) {
1920
2001
  const sourceCss = normalizeTailwindSourceForGenerator(await readFile(sourceFile, "utf8"), { importFallback: true });
1921
2002
  if (autoCssSourceContent.get(sourceFile) === sourceCss) continue;
1922
2003
  autoCssSourceContent.set(sourceFile, sourceCss);
2004
+ await syncTailwindCssSourceCandidates(sourceFile, sourceCss);
1923
2005
  const resolved = await resolveTailwindV4EntriesFromCssCached(sourceCss, path.dirname(sourceFile));
1924
2006
  changed = upsertTailwindV4CssSource(opts, {
1925
2007
  file: sourceFile,
@@ -1993,6 +2075,7 @@ function WeappTailwindcss(options = {}) {
1993
2075
  const collectSourceCandidateScanRoots = (root, entries) => {
1994
2076
  if (entries?.length) return [{
1995
2077
  entries,
2078
+ explicit: sourceScanExplicit,
1996
2079
  root
1997
2080
  }];
1998
2081
  if (sourceScanExplicit) return [];
@@ -2018,6 +2101,7 @@ function WeappTailwindcss(options = {}) {
2018
2101
  const scanSourceCandidateRoots = async (roots, outDir) => {
2019
2102
  await Promise.all(roots.map((root) => sourceCandidateCollector.scanRoot({
2020
2103
  entries: root.entries,
2104
+ explicit: root.explicit,
2021
2105
  root: root.root,
2022
2106
  outDir
2023
2107
  })));
@@ -2145,20 +2229,72 @@ function WeappTailwindcss(options = {}) {
2145
2229
  const resolveHotTailwindCssModules = (ctx) => {
2146
2230
  const modules = [];
2147
2231
  const seenModules = /* @__PURE__ */ new Set();
2232
+ const collectModule = (mod) => {
2233
+ if (mod == null || seenModules.has(mod)) return;
2234
+ if (!isSourceStyleRequest(mod.id ?? mod.url)) return;
2235
+ seenModules.add(mod);
2236
+ ctx.server.moduleGraph.invalidateModule(mod);
2237
+ modules.push(mod);
2238
+ };
2148
2239
  for (const id of tailwindRootCssModuleIds) {
2149
- const candidates = [ctx.server.moduleGraph.getModuleById(id), ...ctx.server.moduleGraph.getModulesByFile(id) ?? []].filter((mod) => {
2150
- if (mod == null) return false;
2151
- return isSourceStyleRequest(mod.id ?? mod.url);
2152
- });
2153
- for (const mod of candidates) {
2154
- if (seenModules.has(mod)) continue;
2155
- seenModules.add(mod);
2156
- ctx.server.moduleGraph.invalidateModule(mod);
2157
- modules.push(mod);
2158
- }
2240
+ const candidates = [
2241
+ ctx.server.moduleGraph.getModuleById(id),
2242
+ ctx.server.moduleGraph.getModuleById(cleanUrl(id)),
2243
+ ...ctx.server.moduleGraph.getModulesByFile(id) ?? [],
2244
+ ...ctx.server.moduleGraph.getModulesByFile(cleanUrl(id)) ?? []
2245
+ ];
2246
+ for (const mod of candidates) collectModule(mod);
2159
2247
  }
2160
2248
  return modules;
2161
2249
  };
2250
+ const resolveModuleHotUrl = (mod) => {
2251
+ if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
2252
+ if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
2253
+ };
2254
+ const includesHotModule = (modules, target) => {
2255
+ const targetUrl = resolveModuleHotUrl(target);
2256
+ const targetId = target.id;
2257
+ return modules.some((mod) => {
2258
+ if (mod === target) return true;
2259
+ return targetUrl !== void 0 && resolveModuleHotUrl(mod) === targetUrl || typeof targetId === "string" && targetId.length > 0 && mod.id === targetId;
2260
+ });
2261
+ };
2262
+ const hasSelfAcceptingNonStyleHotModule = (modules) => {
2263
+ return modules.some((mod) => {
2264
+ return !isSourceStyleRequest(mod.id ?? mod.url) && mod.isSelfAccepting === true;
2265
+ });
2266
+ };
2267
+ const isUniViteProject = () => {
2268
+ return resolvedConfig?.plugins?.some((plugin) => plugin.name.includes("uni")) ?? false;
2269
+ };
2270
+ const sendSupplementalCssHotUpdates = (ctx, cssModules) => {
2271
+ const updates = cssModules.filter((mod) => !includesHotModule(ctx.modules, mod)).map((mod) => {
2272
+ const hotUrl = resolveModuleHotUrl(mod);
2273
+ if (!hotUrl) return;
2274
+ return {
2275
+ type: "js-update",
2276
+ timestamp: ctx.timestamp,
2277
+ path: hotUrl,
2278
+ acceptedPath: hotUrl,
2279
+ explicitImportRequired: false,
2280
+ isWithinCircularImport: false
2281
+ };
2282
+ }).filter((update) => update !== void 0);
2283
+ if (updates.length === 0) return;
2284
+ queueMicrotask(() => {
2285
+ ctx.server.ws?.send?.({
2286
+ type: "update",
2287
+ updates
2288
+ });
2289
+ });
2290
+ };
2291
+ const sendFullReloadForUnresolvedHotUpdate = (ctx) => {
2292
+ ctx.server.ws?.send?.({
2293
+ type: "full-reload",
2294
+ path: "*",
2295
+ triggeredBy: ctx.file
2296
+ });
2297
+ };
2162
2298
  const matchesViteProcessedCssSource = (candidate) => {
2163
2299
  const normalized = normalizeViteProcessedCssFile(candidate);
2164
2300
  return viteProcessedCssSourceFiles.has(normalized);
@@ -2259,7 +2395,6 @@ function WeappTailwindcss(options = {}) {
2259
2395
  });
2260
2396
  const isIosPlatform = resolveUniUtsPlatform().isAppIos;
2261
2397
  const prepareTailwindGeneration = async () => {
2262
- if (isWebGeneratorTarget && runtimeState.twPatcher.majorVersion !== 3) return;
2263
2398
  if (shouldDiscoverAutoCssSources()) await discoverAndRegisterAutoCssSources();
2264
2399
  await syncSourceCandidateScan();
2265
2400
  };
@@ -2311,9 +2446,15 @@ function WeappTailwindcss(options = {}) {
2311
2446
  },
2312
2447
  async handleHotUpdate(ctx) {
2313
2448
  return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
2449
+ const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && isSourceCandidateRequest(ctx.file);
2314
2450
  await syncChangedSourceCandidateFile(ctx.file);
2315
2451
  invalidateRecordedGeneratorCandidates();
2316
2452
  const cssModules = resolveHotTailwindCssModules(ctx);
2453
+ if (isSourceCandidateHotUpdate && !isSourceStyleRequest(ctx.file) && (!hasSelfAcceptingNonStyleHotModule(ctx.modules) && cssModules.length === 0 || cssModules.length > 0 && isUniViteProject())) {
2454
+ sendFullReloadForUnresolvedHotUpdate(ctx);
2455
+ return [];
2456
+ }
2457
+ sendSupplementalCssHotUpdates(ctx, cssModules);
2317
2458
  return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
2318
2459
  }, { emit: false });
2319
2460
  },
@@ -2323,6 +2464,12 @@ function WeappTailwindcss(options = {}) {
2323
2464
  }, { emit: false });
2324
2465
  }
2325
2466
  },
2467
+ ...createViteServeCssGenerationPlugins({
2468
+ generateCss: generateTailwindCssForVitePipeline,
2469
+ getCommand: () => resolvedConfig?.command,
2470
+ onTailwindRootCss: (id, code) => registerAutoCssSource(id, code),
2471
+ shouldGenerate: () => shouldOwnTailwindGeneration
2472
+ }),
2326
2473
  {
2327
2474
  name: `${vitePluginName}:post`,
2328
2475
  enforce: "post",
package/dist/vite.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-DE8Vfzal.js");
2
+ const require_vite = require("./vite-Bg18XZZc.js");
3
3
  exports.WeappTailwindcss = require_vite.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_vite.WeappTailwindcss;
package/dist/vite.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as WeappTailwindcss } from "./vite-hZsQAY1a.mjs";
1
+ import { t as WeappTailwindcss } from "./vite-DOmiMftw.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };