weapp-tailwindcss 5.5.9 → 5.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/bundlers/vite/generate-bundle/css-cache-task.d.ts +1 -0
  2. package/dist/bundlers/vite/generate-bundle/css-output-helpers.d.ts +2 -0
  3. package/dist/bundlers/vite/generate-bundle/css-transform-result.d.ts +1 -0
  4. package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +3 -3
  5. package/dist/bundlers/vite/generate-bundle/scoped-generator-runtime-cache.d.ts +5 -0
  6. package/dist/bundlers/vite/generate-bundle/scoped-generator-sources.d.ts +36 -0
  7. package/dist/bundlers/vite/generate-bundle/scoped-generator.d.ts +6 -1
  8. package/dist/bundlers/vite/generate-bundle/source-candidate-scope.d.ts +2 -2
  9. package/dist/bundlers/vite/generate-bundle/source-trace.d.ts +2 -0
  10. package/dist/bundlers/vite/runtime-class-set/cache.d.ts +14 -0
  11. package/dist/bundlers/vite/runtime-class-set/invalidation-plugin.d.ts +6 -0
  12. package/dist/bundlers/vite/runtime-class-set/lifecycle.d.ts +12 -0
  13. package/dist/bundlers/vite/runtime-class-set.d.ts +1 -0
  14. package/dist/bundlers/vite/shared/create-framework-plugins-runtime.d.ts +1 -2
  15. package/dist/bundlers/vite/shared/framework-source-scan-session.d.ts +1 -0
  16. package/dist/{scoped-generator-CF0ROe7B.js → css-cleanup-B3xP5Qph.js} +23 -20
  17. package/dist/{generated-css-marker-C21q8hGM.cjs → generated-css-marker-nqjR6ntO.cjs} +54 -6
  18. package/dist/{gulp-ComuY3KW.js → gulp-BCV0gOMb.js} +1 -1
  19. package/dist/{gulp-BhQhrDCx.cjs → gulp-DrX6QS3N.cjs} +2 -2
  20. package/dist/gulp.cjs +1 -1
  21. package/dist/gulp.js +1 -1
  22. package/dist/{hmr-timing-CXBDn0dl.cjs → hmr-timing-B56wp7y-.cjs} +1 -1
  23. package/dist/{hmr-timing-CNo2hmaX.js → hmr-timing-Bb54exB0.js} +54 -6
  24. package/dist/index.cjs +3 -3
  25. package/dist/index.js +3 -3
  26. package/dist/{pipeline-helpers-B9ZqLXma.cjs → pipeline-helpers-DJ3VZ01J.cjs} +1 -1
  27. package/dist/project-sources/candidates/view-memo.d.ts +7 -0
  28. package/dist/rspack.cjs +2 -2
  29. package/dist/rspack.js +2 -2
  30. package/dist/{scoped-generator-BAiZDC_4.cjs → scoped-generator-DqNb8nJG.cjs} +28 -21
  31. package/dist/{transform-DJkkjruV.cjs → transform-CxVM0PfA.cjs} +1 -1
  32. package/dist/{transform-I-mzwoiv.js → transform-D0NXKPmD.js} +1 -1
  33. package/dist/vite/web.cjs +1 -1
  34. package/dist/vite/web.js +1 -1
  35. package/dist/{vite-BVcj7Ht9.cjs → vite-C3Zh6iYK.cjs} +421 -200
  36. package/dist/{vite-Bd-Ig5Dy.js → vite-D6_FxvdM.js} +421 -200
  37. package/dist/vite.cjs +1 -1
  38. package/dist/vite.js +1 -1
  39. package/dist/weapp-tw-css-generation-loader.cjs +1 -1
  40. package/dist/weapp-tw-css-import-rewrite-loader.cjs +2 -2
  41. package/dist/{web-Dq2PzKKQ.cjs → web-BzeWG_XO.cjs} +137 -73
  42. package/dist/{web-BsFZOq3g.js → web-K3qAX4sN.js} +137 -73
  43. package/dist/{webpack-DtAZoEth.js → webpack-BZBqKB4Y.js} +2 -2
  44. package/dist/{webpack-CWMoTWzF.cjs → webpack-Dbj2uykF.cjs} +4 -4
  45. package/dist/webpack.cjs +1 -1
  46. package/dist/webpack.js +1 -1
  47. package/package.json +3 -3
package/dist/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-BVcj7Ht9.cjs");
2
+ const require_vite = require("./vite-C3Zh6iYK.cjs");
3
3
  exports.WeappTailwindcss = require_vite.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_vite.WeappTailwindcss;
package/dist/vite.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as WeappTailwindcss } from "./vite-Bd-Ig5Dy.js";
1
+ import { t as WeappTailwindcss } from "./vite-D6_FxvdM.js";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };
@@ -1,4 +1,4 @@
1
- require("./generated-css-marker-C21q8hGM.cjs");
1
+ require("./generated-css-marker-nqjR6ntO.cjs");
2
2
  const require_css_imports = require("./css-imports-R_RDMjPz.cjs");
3
3
  const require_weapp_tw_css_import_rewrite_loader = require("./weapp-tw-css-import-rewrite-loader.cjs");
4
4
  let node_buffer = require("node:buffer");
@@ -6,9 +6,9 @@ const require_rolldown_runtime = require("./rolldown-runtime-fg3euq-1.cjs");
6
6
  const require_generator = require("./generator-B1sYQpWu.cjs");
7
7
  const require_compiler = require("./compiler-TvqqdOMD.cjs");
8
8
  const require_tailwindcss = require("./tailwindcss-uf04Iolj.cjs");
9
- const require_generated_css_marker = require("./generated-css-marker-C21q8hGM.cjs");
9
+ const require_generated_css_marker = require("./generated-css-marker-nqjR6ntO.cjs");
10
10
  const require_css_imports = require("./css-imports-R_RDMjPz.cjs");
11
- require("./pipeline-helpers-B9ZqLXma.cjs");
11
+ require("./pipeline-helpers-DJ3VZ01J.cjs");
12
12
  const require_runtime_registry = require("./runtime-registry-BlIjpImP.cjs");
13
13
  const require_watch_dependencies = require("./watch-dependencies-C1so1whD.cjs");
14
14
  let node_path = require("node:path");
@@ -5,8 +5,8 @@ require("./utils-CuKLf1Zv.cjs");
5
5
  const require_compiler = require("./compiler-TvqqdOMD.cjs");
6
6
  const require_runtime_state = require("./runtime-state-BOzuVoKl.cjs");
7
7
  const require_tailwindcss = require("./tailwindcss-uf04Iolj.cjs");
8
- const require_generated_css_marker = require("./generated-css-marker-C21q8hGM.cjs");
9
- const require_hmr_timing = require("./hmr-timing-CXBDn0dl.cjs");
8
+ const require_generated_css_marker = require("./generated-css-marker-nqjR6ntO.cjs");
9
+ const require_hmr_timing = require("./hmr-timing-B56wp7y-.cjs");
10
10
  const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-_ohG0ePd.cjs");
11
11
  const require_css_imports = require("./css-imports-R_RDMjPz.cjs");
12
12
  let node_fs = require("node:fs");
@@ -2541,8 +2541,9 @@ function createRewriteCssImportsPlugins(options) {
2541
2541
  };
2542
2542
  }
2543
2543
  if (!options.shouldRewrite) {
2544
- if (normalizedCode !== code) return {
2545
- code: normalizedCode,
2544
+ const deferredCode = shouldOwnTailwindGeneration && hasTailwindRoot && !shouldGenerateInPreTransform ? `${normalizedCode}\n${(0, _weapp_tailwindcss_postcss_transform.createDeferredCssSourceMarker)(id)}` : normalizedCode;
2545
+ if (deferredCode !== code) return {
2546
+ code: deferredCode,
2546
2547
  map: null
2547
2548
  };
2548
2549
  return null;
@@ -2552,7 +2553,8 @@ function createRewriteCssImportsPlugins(options) {
2552
2553
  appType: resolveAppType(),
2553
2554
  rootImport
2554
2555
  });
2555
- const nextCode = shouldOwnTailwindGeneration ? (0, _weapp_tailwindcss_postcss_transform.stripTailwindConfigDirectives)(rewritten ?? normalizedCode) : rewritten;
2556
+ const transformed = shouldOwnTailwindGeneration ? (0, _weapp_tailwindcss_postcss_transform.stripTailwindConfigDirectives)(rewritten ?? normalizedCode) : rewritten;
2557
+ const nextCode = shouldOwnTailwindGeneration && hasTailwindRoot && !shouldGenerateInPreTransform ? `${transformed ?? normalizedCode}\n${(0, _weapp_tailwindcss_postcss_transform.createDeferredCssSourceMarker)(id)}` : transformed;
2556
2558
  if (!nextCode || nextCode === code) return null;
2557
2559
  return {
2558
2560
  code: nextCode,
@@ -2565,6 +2567,79 @@ function hasVitePipelineTailwindGenerationDirective(code) {
2565
2567
  return (0, _weapp_tailwindcss_postcss_transform.hasTailwindRootDirectives)(code) || (0, _weapp_tailwindcss_postcss_transform.hasTailwindApplyDirective)(code);
2566
2568
  }
2567
2569
  //#endregion
2570
+ //#region src/bundlers/vite/runtime-class-set/cache.ts
2571
+ /** 按失效版本串行刷新运行时,同版本请求共享任务,过期结果不进入缓存。 */
2572
+ function createRuntimeClassSetCache(options) {
2573
+ let revision = 0;
2574
+ let preparedRevision = -1;
2575
+ let value;
2576
+ let pending;
2577
+ let queue = Promise.resolve();
2578
+ let disposed = false;
2579
+ function invalidate() {
2580
+ revision++;
2581
+ value = void 0;
2582
+ pending = void 0;
2583
+ }
2584
+ function assertActive() {
2585
+ if (disposed) throw new Error("Vite runtime class set cache has been disposed");
2586
+ }
2587
+ function enqueue(operation) {
2588
+ const task = queue.then(operation);
2589
+ queue = task.catch(() => {});
2590
+ return task;
2591
+ }
2592
+ async function prepare(expectedRevision) {
2593
+ assertActive();
2594
+ if (expectedRevision !== revision || preparedRevision === expectedRevision) return;
2595
+ await options.refresh();
2596
+ if (expectedRevision === revision) preparedRevision = expectedRevision;
2597
+ }
2598
+ async function refresh() {
2599
+ do {
2600
+ const expectedRevision = revision;
2601
+ await enqueue(() => prepare(expectedRevision));
2602
+ } while (preparedRevision !== revision);
2603
+ }
2604
+ async function get() {
2605
+ while (true) {
2606
+ assertActive();
2607
+ if (value) return value;
2608
+ const expectedRevision = revision;
2609
+ pending ?? (pending = enqueue(async () => {
2610
+ await prepare(expectedRevision);
2611
+ if (expectedRevision !== revision) return;
2612
+ const next = await options.collect();
2613
+ if (expectedRevision === revision && !disposed) {
2614
+ value = next;
2615
+ return next;
2616
+ }
2617
+ }));
2618
+ const task = pending;
2619
+ try {
2620
+ const next = await task;
2621
+ if (next && expectedRevision === revision) return next;
2622
+ } finally {
2623
+ if (pending === task) pending = void 0;
2624
+ }
2625
+ }
2626
+ }
2627
+ return {
2628
+ get,
2629
+ refresh,
2630
+ invalidate,
2631
+ peek: () => value,
2632
+ revision: () => revision,
2633
+ remember(next, expectedRevision) {
2634
+ if (!disposed && expectedRevision === revision) value = next;
2635
+ },
2636
+ dispose() {
2637
+ disposed = true;
2638
+ invalidate();
2639
+ }
2640
+ };
2641
+ }
2642
+ //#endregion
2568
2643
  //#region src/bundlers/vite/runtime-class-set.ts
2569
2644
  function createViteRuntimeClassSet(options) {
2570
2645
  const { opts, initialTailwindRuntime, refreshTailwindcssRuntime, uniAppXEnabled, customAttributesEntities, disabledDefaultTemplateHandler, debug } = options;
@@ -2582,8 +2657,25 @@ function createViteRuntimeClassSet(options) {
2582
2657
  bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues,
2583
2658
  escapeMap: opts.escapeMap
2584
2659
  });
2585
- let runtimeSet;
2586
- let runtimeSetPromise;
2660
+ const runtimeCache = createRuntimeClassSetCache({
2661
+ async refresh() {
2662
+ await require_compiler.refreshTailwindRuntimeState(runtimeState, {
2663
+ force: true,
2664
+ clearCache: true
2665
+ });
2666
+ await runtimeState.readyPromise;
2667
+ },
2668
+ collect: () => require_compiler.collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2669
+ force: true,
2670
+ skipRefresh: true,
2671
+ clearCache: true
2672
+ })
2673
+ });
2674
+ const disposeRuntimeState = runtimeState.dispose;
2675
+ runtimeState.dispose = () => {
2676
+ runtimeCache.dispose();
2677
+ disposeRuntimeState();
2678
+ };
2587
2679
  let runtimeRefreshSignature;
2588
2680
  let runtimeRefreshOptionsKey;
2589
2681
  function resolveRuntimeRefreshOptions() {
@@ -2605,50 +2697,34 @@ function createViteRuntimeClassSet(options) {
2605
2697
  optionsKey
2606
2698
  };
2607
2699
  }
2700
+ function invalidateRuntimeClassSet() {
2701
+ runtimeCache.invalidate();
2702
+ }
2608
2703
  async function refreshRuntimeState(force) {
2609
2704
  const invalidation = resolveRuntimeRefreshOptions();
2610
- const shouldRefresh = force || invalidation.changed;
2611
- const refreshed = await require_compiler.refreshTailwindRuntimeState(runtimeState, {
2612
- force: shouldRefresh,
2613
- clearCache: force || invalidation.changed
2614
- });
2615
- if (invalidation.changed) debug("runtime signature changed, refresh triggered. signature: %s", invalidation.signature);
2616
- if (refreshed) {
2617
- runtimeSet = void 0;
2618
- runtimeSetPromise = void 0;
2619
- }
2705
+ if (force || invalidation.changed) invalidateRuntimeClassSet();
2706
+ await runtimeCache.refresh();
2620
2707
  }
2621
2708
  async function ensureRuntimeClassSet(force = false) {
2622
2709
  const startedAt = performance.now();
2623
2710
  const operationId = `vite-runtime-${Date.now()}-${runtimeState.revision}`;
2624
2711
  const forceRuntimeRefresh = force || node_process.default.env["WEAPP_TW_VITE_FORCE_RUNTIME_REFRESH"] === "1";
2625
- await refreshRuntimeState(force);
2626
- await runtimeState.readyPromise;
2627
- if (!forceRuntimeRefresh && runtimeSet) return runtimeSet;
2628
2712
  const invalidation = resolveRuntimeRefreshOptions();
2629
- if (forceRuntimeRefresh || !runtimeSetPromise) runtimeSetPromise = require_compiler.collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2630
- force: forceRuntimeRefresh || invalidation.changed,
2631
- skipRefresh: forceRuntimeRefresh,
2632
- clearCache: forceRuntimeRefresh || invalidation.changed
2713
+ if (forceRuntimeRefresh || invalidation.changed) invalidateRuntimeClassSet();
2714
+ const cacheHit = runtimeCache.peek() !== void 0;
2715
+ const result = await runtimeCache.get();
2716
+ await runtimeState.events.emit({
2717
+ schemaVersion: 1,
2718
+ type: "diagnostic",
2719
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2720
+ adapter: "vite",
2721
+ phase: "candidate",
2722
+ revision: runtimeState.revision,
2723
+ operationId,
2724
+ durationMs: performance.now() - startedAt,
2725
+ cache: { hit: cacheHit }
2633
2726
  });
2634
- const task = runtimeSetPromise;
2635
- try {
2636
- runtimeSet = await task;
2637
- await runtimeState.events.emit({
2638
- schemaVersion: 1,
2639
- type: "diagnostic",
2640
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2641
- adapter: "vite",
2642
- phase: "candidate",
2643
- revision: runtimeState.revision,
2644
- operationId,
2645
- durationMs: performance.now() - startedAt,
2646
- cache: { hit: !forceRuntimeRefresh && !invalidation.changed }
2647
- });
2648
- return runtimeSet;
2649
- } finally {
2650
- if (runtimeSetPromise === task) runtimeSetPromise = void 0;
2651
- }
2727
+ return result;
2652
2728
  }
2653
2729
  async function ensureBundleRuntimeClassSet(snapshot, forceRefresh = false, options = {}) {
2654
2730
  const startedAt = performance.now();
@@ -2660,21 +2736,17 @@ function createViteRuntimeClassSet(options) {
2660
2736
  await refreshRuntimeState(shouldRefreshRuntime);
2661
2737
  await runtimeState.readyPromise;
2662
2738
  if (shouldRefreshRuntime) {
2663
- runtimeSet = void 0;
2664
- runtimeSetPromise = void 0;
2665
2739
  await bundleRuntimeClassSetManager.reset();
2666
2740
  await transformRuntimeClassSetManager.reset();
2667
2741
  }
2742
+ const expectedRevision = runtimeCache.revision();
2668
2743
  if (!forceRuntimeRefresh) try {
2669
- const baseClassSet = options.baseClassSet ?? runtimeSet ?? await require_compiler.collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2670
- force: invalidation.changed,
2671
- clearCache: invalidation.changed
2672
- });
2744
+ const baseClassSet = options.baseClassSet ?? await runtimeCache.get();
2673
2745
  const nextRuntimeSet = await bundleRuntimeClassSetManager.sync(runtimeState.tailwindRuntime, snapshot, {
2674
2746
  baseClassSet,
2675
2747
  skipInitialFullScanWithBase: options.allowBaselineOnlyInitialSync
2676
2748
  });
2677
- runtimeSet = nextRuntimeSet;
2749
+ runtimeCache.remember(nextRuntimeSet, expectedRevision);
2678
2750
  await runtimeState.events.emit({
2679
2751
  schemaVersion: 1,
2680
2752
  type: "diagnostic",
@@ -2692,35 +2764,26 @@ function createViteRuntimeClassSet(options) {
2692
2764
  debug("incremental runtime set sync failed, fallback to full collect: %O", error);
2693
2765
  await bundleRuntimeClassSetManager.reset();
2694
2766
  }
2695
- if (!forceRuntimeRefresh && !invalidation.changed && !forceCollectBySource && runtimeSet) return runtimeSet;
2696
- const task = require_compiler.collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2697
- force: forceRuntimeRefresh || invalidation.changed || forceCollectBySource,
2698
- skipRefresh: forceRuntimeRefresh,
2699
- clearCache: forceRuntimeRefresh || invalidation.changed
2767
+ if (!forceRuntimeRefresh && !invalidation.changed && forceCollectBySource) invalidateRuntimeClassSet();
2768
+ const result = await runtimeCache.get();
2769
+ await runtimeState.events.emit({
2770
+ schemaVersion: 1,
2771
+ type: "diagnostic",
2772
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2773
+ adapter: "vite",
2774
+ phase: "candidate",
2775
+ revision: runtimeState.revision,
2776
+ operationId,
2777
+ durationMs: performance.now() - startedAt,
2778
+ cache: { hit: false },
2779
+ evidence: ["runtime-class-scan"]
2700
2780
  });
2701
- runtimeSetPromise = task;
2702
- try {
2703
- runtimeSet = await task;
2704
- await runtimeState.events.emit({
2705
- schemaVersion: 1,
2706
- type: "diagnostic",
2707
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2708
- adapter: "vite",
2709
- phase: "candidate",
2710
- revision: runtimeState.revision,
2711
- operationId,
2712
- durationMs: performance.now() - startedAt,
2713
- cache: { hit: false },
2714
- evidence: ["runtime-class-scan"]
2715
- });
2716
- return runtimeSet;
2717
- } finally {
2718
- if (runtimeSetPromise === task) runtimeSetPromise = void 0;
2719
- }
2781
+ return result;
2720
2782
  }
2721
2783
  return {
2722
2784
  runtimeState,
2723
2785
  refreshRuntimeState,
2786
+ invalidateRuntimeClassSet,
2724
2787
  ensureRuntimeClassSet,
2725
2788
  ensureBundleRuntimeClassSet
2726
2789
  };
@@ -3575,6 +3638,7 @@ function createFrameworkSourceScanSession(options) {
3575
3638
  pendingHotUpdateChangeByFile: pendingHotUpdateChangeByFile.size,
3576
3639
  sourceCandidateScanCache: sourceCandidateScanCache.size
3577
3640
  }),
3641
+ getWatchFiles: () => /* @__PURE__ */ new Set([...sourceScanEligibleFiles, ...sourceScanDependencies]),
3578
3642
  invalidate,
3579
3643
  isDependency,
3580
3644
  matches: (file) => sourceScanMatcher?.(file) ?? true,
@@ -3,12 +3,12 @@ import { resolveImplicitAppTypeFromViteRoot } from "./framework.js";
3
3
  import { S as findNearestPackageRoot, a as resolveGeneratorRuntimeBranch, b as isTailwindV4CssEntry, i as normalizeWeappTailwindcssGeneratorOptions, k as resolveTailwindcssOptions, l as resolveUniUtsPlatform } from "./generator-LqofzXgr.js";
4
4
  import "./utils-MVwpU07P.js";
5
5
  import { A as createTailwindRuntimeReadyPromise, M as refreshTailwindRuntimeState, N as createDebug, f as getCompilerContext, g as vitePluginName, i as disposeCompilerOwner, k as collectRuntimeClassSet, m as resolveStyleOptionsFromContext, n as createRuntimeAffectingSourceSignature, p as normalizeStyleHandlerMajorVersion, t as createCompilerRuntimeState } from "./compiler-v9sYta8W.js";
6
- import { $ as createSourceCandidateEligibilityMatcher, H as stripRequestQuery, I as hasTailwindGeneratedCss, L as hasTailwindGeneratedCssMarkers, M as normalizeEmptyTailwindCustomVariants$1, N as captureFrameworkPostcssOptions, T as hasUserCssLayerBlocks, U as createRuntimeClassSetManager, V as isSourceStyleRequest, Y as createSourceCandidateCollector, Z as isSourceCandidateRequest, at as hasTailwindSourceDirectives, c as annotateCssSourceTrace, d as isCssSourceTraceEnabled, dt as finalizeCompilerShadowRun, f as generateTailwindV4Css, i as createBundlerGeneratedCssMarker, it as hasTailwindRootDirectives, nt as hasTailwindApplyDirective, o as parseBundlerGeneratedCssMarkerBlocks, ot as normalizeTailwindConfigDirectives$1, rt as hasTailwindNonRootGenerationDirectives, s as stripBundlerGeneratedCssMarkers, st as normalizeTailwindSourceForGenerator, t as createHmrTimingRecorder, tt as hasLocalCssImport, u as createCssTokenSourceMap, x as scoreTailwindV4CssSourceFileMatch } from "./hmr-timing-CNo2hmaX.js";
6
+ import { $ as createSourceCandidateEligibilityMatcher, H as stripRequestQuery, I as hasTailwindGeneratedCss, L as hasTailwindGeneratedCssMarkers, M as normalizeEmptyTailwindCustomVariants$1, N as captureFrameworkPostcssOptions, T as hasUserCssLayerBlocks, U as createRuntimeClassSetManager, V as isSourceStyleRequest, Y as createSourceCandidateCollector, Z as isSourceCandidateRequest, at as hasTailwindSourceDirectives, c as annotateCssSourceTrace, d as isCssSourceTraceEnabled, dt as finalizeCompilerShadowRun, f as generateTailwindV4Css, i as createBundlerGeneratedCssMarker, it as hasTailwindRootDirectives, nt as hasTailwindApplyDirective, o as parseBundlerGeneratedCssMarkerBlocks, ot as normalizeTailwindConfigDirectives$1, rt as hasTailwindNonRootGenerationDirectives, s as stripBundlerGeneratedCssMarkers, st as normalizeTailwindSourceForGenerator, t as createHmrTimingRecorder, tt as hasLocalCssImport, u as createCssTokenSourceMap, x as scoreTailwindV4CssSourceFileMatch } from "./hmr-timing-Bb54exB0.js";
7
7
  import { c as getViteHookHandler, n as resolvePackageDir, o as normalizeStyleInjectorOptions, r as normalizeOutputPathKey, t as createSourceCandidateScanSignature } from "./source-candidate-scan-signature-BWLf4tuO.js";
8
8
  import { existsSync, realpathSync } from "node:fs";
9
9
  import path from "node:path";
10
10
  import process$1 from "node:process";
11
- import { applyConfiguredCssCalc, applyConfiguredCssUnits, canProcessSourceStyleAsCss, collectImportedCssFiles, hasNonCommentCss, isStyleImportRequest, normalizeInjectableCssWithImports, parseCssImportSpecifier, postcss, removeTailwindEntryDirectivesFromCss, removeTailwindPostcssPlugins, resolvePostcssConfig, rewriteTailwindPackageImportStatements, stripTailwindConfigDirectives, transformWebCssCompat } from "@weapp-tailwindcss/postcss/transform";
11
+ import { applyConfiguredCssCalc, applyConfiguredCssUnits, canProcessSourceStyleAsCss, collectImportedCssFiles, createDeferredCssSourceMarker, hasNonCommentCss, isStyleImportRequest, normalizeInjectableCssWithImports, parseCssImportSpecifier, postcss, removeTailwindEntryDirectivesFromCss, removeTailwindPostcssPlugins, resolvePostcssConfig, rewriteTailwindPackageImportStatements, stripTailwindConfigDirectives, transformWebCssCompat } from "@weapp-tailwindcss/postcss/transform";
12
12
  import { LRUCache } from "lru-cache";
13
13
  import { cleanUrl as cleanUrl$1, ensurePosix } from "@weapp-tailwindcss/shared";
14
14
  import { Buffer } from "node:buffer";
@@ -2555,8 +2555,9 @@ function createRewriteCssImportsPlugins(options) {
2555
2555
  };
2556
2556
  }
2557
2557
  if (!options.shouldRewrite) {
2558
- if (normalizedCode !== code) return {
2559
- code: normalizedCode,
2558
+ const deferredCode = shouldOwnTailwindGeneration && hasTailwindRoot && !shouldGenerateInPreTransform ? `${normalizedCode}\n${createDeferredCssSourceMarker(id)}` : normalizedCode;
2559
+ if (deferredCode !== code) return {
2560
+ code: deferredCode,
2560
2561
  map: null
2561
2562
  };
2562
2563
  return null;
@@ -2566,7 +2567,8 @@ function createRewriteCssImportsPlugins(options) {
2566
2567
  appType: resolveAppType(),
2567
2568
  rootImport
2568
2569
  });
2569
- const nextCode = shouldOwnTailwindGeneration ? stripTailwindConfigDirectives(rewritten ?? normalizedCode) : rewritten;
2570
+ const transformed = shouldOwnTailwindGeneration ? stripTailwindConfigDirectives(rewritten ?? normalizedCode) : rewritten;
2571
+ const nextCode = shouldOwnTailwindGeneration && hasTailwindRoot && !shouldGenerateInPreTransform ? `${transformed ?? normalizedCode}\n${createDeferredCssSourceMarker(id)}` : transformed;
2570
2572
  if (!nextCode || nextCode === code) return null;
2571
2573
  return {
2572
2574
  code: nextCode,
@@ -2579,6 +2581,79 @@ function hasVitePipelineTailwindGenerationDirective(code) {
2579
2581
  return hasTailwindRootDirectives(code) || hasTailwindApplyDirective(code);
2580
2582
  }
2581
2583
  //#endregion
2584
+ //#region src/bundlers/vite/runtime-class-set/cache.ts
2585
+ /** 按失效版本串行刷新运行时,同版本请求共享任务,过期结果不进入缓存。 */
2586
+ function createRuntimeClassSetCache(options) {
2587
+ let revision = 0;
2588
+ let preparedRevision = -1;
2589
+ let value;
2590
+ let pending;
2591
+ let queue = Promise.resolve();
2592
+ let disposed = false;
2593
+ function invalidate() {
2594
+ revision++;
2595
+ value = void 0;
2596
+ pending = void 0;
2597
+ }
2598
+ function assertActive() {
2599
+ if (disposed) throw new Error("Vite runtime class set cache has been disposed");
2600
+ }
2601
+ function enqueue(operation) {
2602
+ const task = queue.then(operation);
2603
+ queue = task.catch(() => {});
2604
+ return task;
2605
+ }
2606
+ async function prepare(expectedRevision) {
2607
+ assertActive();
2608
+ if (expectedRevision !== revision || preparedRevision === expectedRevision) return;
2609
+ await options.refresh();
2610
+ if (expectedRevision === revision) preparedRevision = expectedRevision;
2611
+ }
2612
+ async function refresh() {
2613
+ do {
2614
+ const expectedRevision = revision;
2615
+ await enqueue(() => prepare(expectedRevision));
2616
+ } while (preparedRevision !== revision);
2617
+ }
2618
+ async function get() {
2619
+ while (true) {
2620
+ assertActive();
2621
+ if (value) return value;
2622
+ const expectedRevision = revision;
2623
+ pending ?? (pending = enqueue(async () => {
2624
+ await prepare(expectedRevision);
2625
+ if (expectedRevision !== revision) return;
2626
+ const next = await options.collect();
2627
+ if (expectedRevision === revision && !disposed) {
2628
+ value = next;
2629
+ return next;
2630
+ }
2631
+ }));
2632
+ const task = pending;
2633
+ try {
2634
+ const next = await task;
2635
+ if (next && expectedRevision === revision) return next;
2636
+ } finally {
2637
+ if (pending === task) pending = void 0;
2638
+ }
2639
+ }
2640
+ }
2641
+ return {
2642
+ get,
2643
+ refresh,
2644
+ invalidate,
2645
+ peek: () => value,
2646
+ revision: () => revision,
2647
+ remember(next, expectedRevision) {
2648
+ if (!disposed && expectedRevision === revision) value = next;
2649
+ },
2650
+ dispose() {
2651
+ disposed = true;
2652
+ invalidate();
2653
+ }
2654
+ };
2655
+ }
2656
+ //#endregion
2582
2657
  //#region src/bundlers/vite/runtime-class-set.ts
2583
2658
  function createViteRuntimeClassSet(options) {
2584
2659
  const { opts, initialTailwindRuntime, refreshTailwindcssRuntime, uniAppXEnabled, customAttributesEntities, disabledDefaultTemplateHandler, debug } = options;
@@ -2596,8 +2671,25 @@ function createViteRuntimeClassSet(options) {
2596
2671
  bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues,
2597
2672
  escapeMap: opts.escapeMap
2598
2673
  });
2599
- let runtimeSet;
2600
- let runtimeSetPromise;
2674
+ const runtimeCache = createRuntimeClassSetCache({
2675
+ async refresh() {
2676
+ await refreshTailwindRuntimeState(runtimeState, {
2677
+ force: true,
2678
+ clearCache: true
2679
+ });
2680
+ await runtimeState.readyPromise;
2681
+ },
2682
+ collect: () => collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2683
+ force: true,
2684
+ skipRefresh: true,
2685
+ clearCache: true
2686
+ })
2687
+ });
2688
+ const disposeRuntimeState = runtimeState.dispose;
2689
+ runtimeState.dispose = () => {
2690
+ runtimeCache.dispose();
2691
+ disposeRuntimeState();
2692
+ };
2601
2693
  let runtimeRefreshSignature;
2602
2694
  let runtimeRefreshOptionsKey;
2603
2695
  function resolveRuntimeRefreshOptions() {
@@ -2619,50 +2711,34 @@ function createViteRuntimeClassSet(options) {
2619
2711
  optionsKey
2620
2712
  };
2621
2713
  }
2714
+ function invalidateRuntimeClassSet() {
2715
+ runtimeCache.invalidate();
2716
+ }
2622
2717
  async function refreshRuntimeState(force) {
2623
2718
  const invalidation = resolveRuntimeRefreshOptions();
2624
- const shouldRefresh = force || invalidation.changed;
2625
- const refreshed = await refreshTailwindRuntimeState(runtimeState, {
2626
- force: shouldRefresh,
2627
- clearCache: force || invalidation.changed
2628
- });
2629
- if (invalidation.changed) debug("runtime signature changed, refresh triggered. signature: %s", invalidation.signature);
2630
- if (refreshed) {
2631
- runtimeSet = void 0;
2632
- runtimeSetPromise = void 0;
2633
- }
2719
+ if (force || invalidation.changed) invalidateRuntimeClassSet();
2720
+ await runtimeCache.refresh();
2634
2721
  }
2635
2722
  async function ensureRuntimeClassSet(force = false) {
2636
2723
  const startedAt = performance.now();
2637
2724
  const operationId = `vite-runtime-${Date.now()}-${runtimeState.revision}`;
2638
2725
  const forceRuntimeRefresh = force || process$1.env["WEAPP_TW_VITE_FORCE_RUNTIME_REFRESH"] === "1";
2639
- await refreshRuntimeState(force);
2640
- await runtimeState.readyPromise;
2641
- if (!forceRuntimeRefresh && runtimeSet) return runtimeSet;
2642
2726
  const invalidation = resolveRuntimeRefreshOptions();
2643
- if (forceRuntimeRefresh || !runtimeSetPromise) runtimeSetPromise = collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2644
- force: forceRuntimeRefresh || invalidation.changed,
2645
- skipRefresh: forceRuntimeRefresh,
2646
- clearCache: forceRuntimeRefresh || invalidation.changed
2727
+ if (forceRuntimeRefresh || invalidation.changed) invalidateRuntimeClassSet();
2728
+ const cacheHit = runtimeCache.peek() !== void 0;
2729
+ const result = await runtimeCache.get();
2730
+ await runtimeState.events.emit({
2731
+ schemaVersion: 1,
2732
+ type: "diagnostic",
2733
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2734
+ adapter: "vite",
2735
+ phase: "candidate",
2736
+ revision: runtimeState.revision,
2737
+ operationId,
2738
+ durationMs: performance.now() - startedAt,
2739
+ cache: { hit: cacheHit }
2647
2740
  });
2648
- const task = runtimeSetPromise;
2649
- try {
2650
- runtimeSet = await task;
2651
- await runtimeState.events.emit({
2652
- schemaVersion: 1,
2653
- type: "diagnostic",
2654
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2655
- adapter: "vite",
2656
- phase: "candidate",
2657
- revision: runtimeState.revision,
2658
- operationId,
2659
- durationMs: performance.now() - startedAt,
2660
- cache: { hit: !forceRuntimeRefresh && !invalidation.changed }
2661
- });
2662
- return runtimeSet;
2663
- } finally {
2664
- if (runtimeSetPromise === task) runtimeSetPromise = void 0;
2665
- }
2741
+ return result;
2666
2742
  }
2667
2743
  async function ensureBundleRuntimeClassSet(snapshot, forceRefresh = false, options = {}) {
2668
2744
  const startedAt = performance.now();
@@ -2674,21 +2750,17 @@ function createViteRuntimeClassSet(options) {
2674
2750
  await refreshRuntimeState(shouldRefreshRuntime);
2675
2751
  await runtimeState.readyPromise;
2676
2752
  if (shouldRefreshRuntime) {
2677
- runtimeSet = void 0;
2678
- runtimeSetPromise = void 0;
2679
2753
  await bundleRuntimeClassSetManager.reset();
2680
2754
  await transformRuntimeClassSetManager.reset();
2681
2755
  }
2756
+ const expectedRevision = runtimeCache.revision();
2682
2757
  if (!forceRuntimeRefresh) try {
2683
- const baseClassSet = options.baseClassSet ?? runtimeSet ?? await collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2684
- force: invalidation.changed,
2685
- clearCache: invalidation.changed
2686
- });
2758
+ const baseClassSet = options.baseClassSet ?? await runtimeCache.get();
2687
2759
  const nextRuntimeSet = await bundleRuntimeClassSetManager.sync(runtimeState.tailwindRuntime, snapshot, {
2688
2760
  baseClassSet,
2689
2761
  skipInitialFullScanWithBase: options.allowBaselineOnlyInitialSync
2690
2762
  });
2691
- runtimeSet = nextRuntimeSet;
2763
+ runtimeCache.remember(nextRuntimeSet, expectedRevision);
2692
2764
  await runtimeState.events.emit({
2693
2765
  schemaVersion: 1,
2694
2766
  type: "diagnostic",
@@ -2706,35 +2778,26 @@ function createViteRuntimeClassSet(options) {
2706
2778
  debug("incremental runtime set sync failed, fallback to full collect: %O", error);
2707
2779
  await bundleRuntimeClassSetManager.reset();
2708
2780
  }
2709
- if (!forceRuntimeRefresh && !invalidation.changed && !forceCollectBySource && runtimeSet) return runtimeSet;
2710
- const task = collectRuntimeClassSet(runtimeState.tailwindRuntime, {
2711
- force: forceRuntimeRefresh || invalidation.changed || forceCollectBySource,
2712
- skipRefresh: forceRuntimeRefresh,
2713
- clearCache: forceRuntimeRefresh || invalidation.changed
2781
+ if (!forceRuntimeRefresh && !invalidation.changed && forceCollectBySource) invalidateRuntimeClassSet();
2782
+ const result = await runtimeCache.get();
2783
+ await runtimeState.events.emit({
2784
+ schemaVersion: 1,
2785
+ type: "diagnostic",
2786
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2787
+ adapter: "vite",
2788
+ phase: "candidate",
2789
+ revision: runtimeState.revision,
2790
+ operationId,
2791
+ durationMs: performance.now() - startedAt,
2792
+ cache: { hit: false },
2793
+ evidence: ["runtime-class-scan"]
2714
2794
  });
2715
- runtimeSetPromise = task;
2716
- try {
2717
- runtimeSet = await task;
2718
- await runtimeState.events.emit({
2719
- schemaVersion: 1,
2720
- type: "diagnostic",
2721
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2722
- adapter: "vite",
2723
- phase: "candidate",
2724
- revision: runtimeState.revision,
2725
- operationId,
2726
- durationMs: performance.now() - startedAt,
2727
- cache: { hit: false },
2728
- evidence: ["runtime-class-scan"]
2729
- });
2730
- return runtimeSet;
2731
- } finally {
2732
- if (runtimeSetPromise === task) runtimeSetPromise = void 0;
2733
- }
2795
+ return result;
2734
2796
  }
2735
2797
  return {
2736
2798
  runtimeState,
2737
2799
  refreshRuntimeState,
2800
+ invalidateRuntimeClassSet,
2738
2801
  ensureRuntimeClassSet,
2739
2802
  ensureBundleRuntimeClassSet
2740
2803
  };
@@ -3589,6 +3652,7 @@ function createFrameworkSourceScanSession(options) {
3589
3652
  pendingHotUpdateChangeByFile: pendingHotUpdateChangeByFile.size,
3590
3653
  sourceCandidateScanCache: sourceCandidateScanCache.size
3591
3654
  }),
3655
+ getWatchFiles: () => /* @__PURE__ */ new Set([...sourceScanEligibleFiles, ...sourceScanDependencies]),
3592
3656
  invalidate,
3593
3657
  isDependency,
3594
3658
  matches: (file) => sourceScanMatcher?.(file) ?? true,
@@ -3,9 +3,9 @@ import { P as _defineProperty, R as getTailwindV4IncrementalGenerateCacheStats,
3
3
  import { r as getGroupedEntries } from "./utils-MVwpU07P.js";
4
4
  import { A as createTailwindRuntimeReadyPromise, G as createCompilationDependencyChanges, I as AssetEmissionPlan, M as refreshTailwindRuntimeState, N as createDebug, V as recordCompilationDependencyChanges, a as beginCompilerShadowRun, f as getCompilerContext, h as pluginName, i as disposeCompilerOwner, j as ensureRuntimeClassSet, m as resolveStyleOptionsFromContext, n as createRuntimeAffectingSourceSignature, p as normalizeStyleHandlerMajorVersion, q as md5Hash, t as createCompilerRuntimeState, y as shouldSkipJsTransform, z as getCompilationScopeDependencyRevision } from "./compiler-v9sYta8W.js";
5
5
  import { n as getDefaultCssPreflight } from "./defaults-AQuvJS-h.js";
6
- import { A as stripTailwindSourceMediaFragments, D as isCommentOnlyCss, F as collectFrameworkPostcssOptionsFromLoaderEntries, G as createEscapeFragments, H as stripRequestQuery, I as hasTailwindGeneratedCss, K as isPureLocalCssImportWrapper, L as hasTailwindGeneratedCssMarkers, O as removeMiniProgramInteractiveSelectors, P as captureResolvedFrameworkPostcssOptions, S as removeGeneratedSelectorCompatCss, U as createRuntimeClassSetManager, V as isSourceStyleRequest, W as collectStrictEscapedRuntimeCandidates, X as createSourceCandidateStore, Z as isSourceCandidateRequest, _ as resolveTaskConcurrency, a as hasBundlerGeneratedCssMarker, at as hasTailwindSourceDirectives, c as annotateCssSourceTrace, ct as parseImportRequest, d as isCssSourceTraceEnabled, dt as finalizeCompilerShadowRun, et as resolveSourceCandidateScanFiles, f as generateTailwindV4Css, g as pushConcurrentTaskFactories, h as collectRawSourceClassSelectors, it as hasTailwindRootDirectives, j as stripUnmatchedTailwindSourceMediaCloseFragments, k as removeTailwindV4GeneratorAtRules, l as createCssSourceTraceCacheSignature, lt as removeTailwindSourceDirectives, n as emitHmrTiming, nt as hasTailwindApplyDirective, ot as normalizeTailwindConfigDirectives$1, s as stripBundlerGeneratedCssMarkers, u as createCssTokenSourceMap, x as scoreTailwindV4CssSourceFileMatch, z as hasMiniProgramTailwindV4PreflightReset } from "./hmr-timing-CNo2hmaX.js";
6
+ import { A as stripTailwindSourceMediaFragments, D as isCommentOnlyCss, F as collectFrameworkPostcssOptionsFromLoaderEntries, G as createEscapeFragments, H as stripRequestQuery, I as hasTailwindGeneratedCss, K as isPureLocalCssImportWrapper, L as hasTailwindGeneratedCssMarkers, O as removeMiniProgramInteractiveSelectors, P as captureResolvedFrameworkPostcssOptions, S as removeGeneratedSelectorCompatCss, U as createRuntimeClassSetManager, V as isSourceStyleRequest, W as collectStrictEscapedRuntimeCandidates, X as createSourceCandidateStore, Z as isSourceCandidateRequest, _ as resolveTaskConcurrency, a as hasBundlerGeneratedCssMarker, at as hasTailwindSourceDirectives, c as annotateCssSourceTrace, ct as parseImportRequest, d as isCssSourceTraceEnabled, dt as finalizeCompilerShadowRun, et as resolveSourceCandidateScanFiles, f as generateTailwindV4Css, g as pushConcurrentTaskFactories, h as collectRawSourceClassSelectors, it as hasTailwindRootDirectives, j as stripUnmatchedTailwindSourceMediaCloseFragments, k as removeTailwindV4GeneratorAtRules, l as createCssSourceTraceCacheSignature, lt as removeTailwindSourceDirectives, n as emitHmrTiming, nt as hasTailwindApplyDirective, ot as normalizeTailwindConfigDirectives$1, s as stripBundlerGeneratedCssMarkers, u as createCssTokenSourceMap, x as scoreTailwindV4CssSourceFileMatch, z as hasMiniProgramTailwindV4PreflightReset } from "./hmr-timing-Bb54exB0.js";
7
7
  import { a as createRuntimeCompilationBuildState, c as updateRuntimeCompilationBuildState, i as createRuntimeCompilationAffectingSignature, n as processCachedTask, r as buildRuntimeCompilationSnapshot, s as resetRuntimeCompilationBuildState, t as finalizeMiniProgramCssStructure } from "./final-css-cleanup-BOzhuhGz.js";
8
- import { _ as createBuiltinWebpackStyleInjectorPlugin, c as createCandidateSignature, h as resolvePluginDisabledState, i as finalizeMiniProgramCss$1, m as classifyRuntimeEntry, n as createScopedGeneratorRuntime, o as pruneMiniProgramGeneratedCss, s as stripMiniProgramCssSpecificityPlaceholders, x as resolveWebpackFrameworkProfile, y as webpackStyleInjectorDelegates } from "./scoped-generator-CF0ROe7B.js";
8
+ import { S as resolveWebpackFrameworkProfile, b as webpackStyleInjectorDelegates, g as resolvePluginDisabledState, h as classifyRuntimeEntry, i as stripMiniProgramCssSpecificityPlaceholders, l as createCandidateSignature, o as createScopedGeneratorRuntime, r as pruneMiniProgramGeneratedCss, t as finalizeMiniProgramCss$1, v as createBuiltinWebpackStyleInjectorPlugin } from "./css-cleanup-B3xP5Qph.js";
9
9
  import { a as toAbsoluteOutputPath, i as resolveOutputSpecifier, n as resolvePackageDir, t as createSourceCandidateScanSignature } from "./source-candidate-scan-signature-BWLf4tuO.js";
10
10
  import Module, { createRequire } from "node:module";
11
11
  import fs from "node:fs";
@@ -4,12 +4,12 @@ const require_utils = require("./utils-CuKLf1Zv.cjs");
4
4
  const require_compiler = require("./compiler-TvqqdOMD.cjs");
5
5
  const require_runtime_state = require("./runtime-state-BOzuVoKl.cjs");
6
6
  const require_tailwindcss = require("./tailwindcss-uf04Iolj.cjs");
7
- const require_generated_css_marker = require("./generated-css-marker-C21q8hGM.cjs");
7
+ const require_generated_css_marker = require("./generated-css-marker-nqjR6ntO.cjs");
8
8
  const require_cache = require("./cache-CzvIGfwS.cjs");
9
- const require_hmr_timing = require("./hmr-timing-CXBDn0dl.cjs");
10
- const require_scoped_generator = require("./scoped-generator-BAiZDC_4.cjs");
9
+ const require_hmr_timing = require("./hmr-timing-B56wp7y-.cjs");
10
+ const require_scoped_generator = require("./scoped-generator-DqNb8nJG.cjs");
11
11
  const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-_ohG0ePd.cjs");
12
- const require_pipeline_helpers = require("./pipeline-helpers-B9ZqLXma.cjs");
12
+ const require_pipeline_helpers = require("./pipeline-helpers-DJ3VZ01J.cjs");
13
13
  const require_css_loader_runtime = require("./css-loader-runtime-DGqsWVua.cjs");
14
14
  const require_runtime_registry = require("./runtime-registry-BlIjpImP.cjs");
15
15
  let node_fs = require("node:fs");