weapp-tailwindcss 5.1.13 → 5.1.14

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 (46) hide show
  1. package/dist/bundlers/vite/css-finalizer.d.ts +1 -0
  2. package/dist/bundlers/vite/frameworks/taro/index.d.ts +2 -0
  3. package/dist/bundlers/vite/frameworks/uni-app/index.d.ts +2 -0
  4. package/dist/bundlers/vite/frameworks/uni-app-x/index.d.ts +2 -0
  5. package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +3 -0
  6. package/dist/bundlers/vite/generate-bundle/root-style-output.d.ts +18 -0
  7. package/dist/bundlers/vite/generate-bundle/types.d.ts +2 -0
  8. package/dist/bundlers/vite/serve-root-import-shell.d.ts +8 -0
  9. package/dist/bundlers/vite/source-candidates.d.ts +3 -0
  10. package/dist/{context-xSJE588m.mjs → context-BL8Gy71H.mjs} +5 -3
  11. package/dist/{context-DRRgW7i2.js → context-VeFq_8vW.js} +5 -3
  12. package/dist/core.js +1 -1
  13. package/dist/core.mjs +1 -1
  14. package/dist/{generator-BvPcmqxU.mjs → generator-B59OA64h.mjs} +17 -3
  15. package/dist/{generator-CS10c9g1.js → generator-CEnUsjed.js} +17 -3
  16. package/dist/generator.js +1 -1
  17. package/dist/generator.mjs +1 -1
  18. package/dist/{gulp-DNZZvUMq.js → gulp-C1Q3LRzg.js} +9 -5
  19. package/dist/{gulp-BEOzXrbp.mjs → gulp-DUYWxmZC.mjs} +9 -5
  20. package/dist/gulp.js +1 -1
  21. package/dist/gulp.mjs +1 -1
  22. package/dist/{hmr-timing-DW1g3zjl.js → hmr-timing-BZ5sWIqO.js} +104 -14
  23. package/dist/{hmr-timing-hRhRAjYV.mjs → hmr-timing-C3ed5vCx.mjs} +105 -15
  24. package/dist/index.js +4 -4
  25. package/dist/index.mjs +4 -4
  26. package/dist/postcss.js +1 -1
  27. package/dist/postcss.mjs +1 -1
  28. package/dist/presets.js +1 -1
  29. package/dist/presets.mjs +1 -1
  30. package/dist/rspack.js +1 -1
  31. package/dist/rspack.mjs +1 -1
  32. package/dist/{source-candidate-scan-signature-t4XKAQ04.mjs → source-candidate-scan-signature-D7RWjWsY.mjs} +17 -44
  33. package/dist/{source-candidate-scan-signature-CMgu5bJk.js → source-candidate-scan-signature-R3dzamcm.js} +17 -44
  34. package/dist/tailwindcss/candidates.d.ts +4 -0
  35. package/dist/{tailwindcss-DZT_pWrd.mjs → tailwindcss-DPcKMLxL.mjs} +1 -1
  36. package/dist/{tailwindcss-z9JMF-qU.js → tailwindcss-KBYPJ2DW.js} +1 -1
  37. package/dist/{vite-DnkObu2L.js → vite-BNlPdsGM.js} +262 -52
  38. package/dist/{vite-Tpgi77vE.mjs → vite-CBU5NXTX.mjs} +262 -52
  39. package/dist/vite.js +1 -1
  40. package/dist/vite.mjs +1 -1
  41. package/dist/weapp-tw-css-import-rewrite-loader.js +2061 -15
  42. package/dist/{webpack-CTYm19zA.mjs → webpack-CZ38fMGC.mjs} +10 -6
  43. package/dist/{webpack-CzXjfvYS.js → webpack-Jpe048pQ.js} +10 -6
  44. package/dist/webpack.js +1 -1
  45. package/dist/webpack.mjs +1 -1
  46. package/package.json +3 -3
@@ -1,12 +1,12 @@
1
1
  import { resolveImplicitAppTypeFromViteRoot } from "./framework.mjs";
2
- import { At as resolveTailwindV4CssSourceBase, E as resolveTailwindcssOptions, J as hasTailwindApplyDirective, K as stripMiniProgramCssSpecificityPlaceholders, N as normalizeEmptyTailwindCustomVariants, Nt as filterUnsupportedMiniProgramTailwindV4Candidates, Q as normalizeTailwindConfigDirectives, U as hasMiniProgramCssSpecificityPlaceholders, X as hasTailwindRootDirectives, Y as hasTailwindNonRootGenerationDirectives, Z as hasTailwindSourceDirectives, a as resolveGeneratorRuntimeBranch, b as normalizeCssEntries, c as shouldUseNativeAppCssBranch, ct as hasTailwindGeneratedCssMarkers, et as normalizeTailwindSourceForGenerator, ft as stripGeneratorPlaceholderMarkers, g as upsertTailwindV4CssSource, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, j as hasUserCssLayerBlocks, l as resolveUniUtsPlatform, m as filterTailwindV4CssSourceRoots, nt as removeTailwindSourceDirectives, q as hasLocalCssImport, s as shouldUseMiniProgramCssBranch, tt as parseImportRequest, vt as getTailwindV4IncrementalGenerateCacheStats, x as findNearestPackageRoot, y as isTailwindV4CssEntry } from "./generator-BvPcmqxU.mjs";
2
+ import { At as resolveTailwindV4CssSourceBase, E as resolveTailwindcssOptions, J as hasTailwindApplyDirective, K as stripMiniProgramCssSpecificityPlaceholders, N as normalizeEmptyTailwindCustomVariants, Nt as filterUnsupportedMiniProgramTailwindV4Candidates, Q as normalizeTailwindConfigDirectives, R as splitUserCssLayerBlocks, U as hasMiniProgramCssSpecificityPlaceholders, X as hasTailwindRootDirectives, Y as hasTailwindNonRootGenerationDirectives, Z as hasTailwindSourceDirectives, a as resolveGeneratorRuntimeBranch, b as normalizeCssEntries, c as shouldUseNativeAppCssBranch, ct as hasTailwindGeneratedCssMarkers, et as normalizeTailwindSourceForGenerator, ft as stripGeneratorPlaceholderMarkers, g as upsertTailwindV4CssSource, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, j as hasUserCssLayerBlocks, l as resolveUniUtsPlatform, m as filterTailwindV4CssSourceRoots, nt as removeTailwindSourceDirectives, q as hasLocalCssImport, s as shouldUseMiniProgramCssBranch, tt as parseImportRequest, vt as getTailwindV4IncrementalGenerateCacheStats, x as findNearestPackageRoot, y as isTailwindV4CssEntry } from "./generator-B59OA64h.mjs";
3
3
  import { t as omitUndefined } from "./object-BJSWl-E5.mjs";
4
- import { _ as resolveViteTailwindV4CssDependencies, a as findTailwindConfig, f as createViteSourceScanMatcher, g as resolveTailwindV4EntriesFromCssCached, i as resolveUniAppXOptions, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as resolveViteSourceScanEntries, r as isUniAppXEnabled } from "./tailwindcss-DZT_pWrd.mjs";
4
+ import { _ as resolveViteTailwindV4CssDependencies, a as findTailwindConfig, f as createViteSourceScanMatcher, g as resolveTailwindV4EntriesFromCssCached, i as resolveUniAppXOptions, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as resolveViteSourceScanEntries, r as isUniAppXEnabled } from "./tailwindcss-DPcKMLxL.mjs";
5
5
  import "./utils-MVwpU07P.mjs";
6
6
  import { g as replaceWxml, y as createDebug } from "./wxml-DdGdeqaH.mjs";
7
- import { a as vitePluginName, c as collectRuntimeClassSet, d as refreshTailwindRuntimeState, f as normalizeFrameworkStylePlatform, l as createTailwindRuntimeReadyPromise, n as normalizeStyleHandlerMajorVersion, o as shouldSkipJsTransform, s as toCustomAttributesEntities, t as getCompilerContext } from "./context-xSJE588m.mjs";
8
- import { A as processCachedTask, D as createCssSourceTraceCacheSignature, E as annotateCssSourceTrace, O as createCssTokenSourceMap, S as scoreTailwindV4CssSourceFileMatch, _ as normalizeMiniProgramGeneratorCssSource, a as isSourceCandidateRequest, d as validateCandidatesByGenerator, g as mergeMarkedUserLayerComponentsCss, h as extractMarkedUserLayerComponentsCss, m as runWithConcurrency, r as createSourceCandidateCollector, s as createBundleRuntimeClassSetManager, t as createHmrTimingRecorder, v as normalizeMiniProgramImportShell, y as isPureLocalCssImportWrapper } from "./hmr-timing-hRhRAjYV.mjs";
9
- import { A as createBundlerGeneratedCssMarker, B as resolveViteFrameworkProfile, C as createBundleModuleGraphOptions, D as normalizeOutputPathKey, E as stripRequestQuery, F as resolvePluginDisabledState, I as createBuiltinViteStyleInjectorPlugins, M as parseBundlerGeneratedCssMarkerBlocks, N as stripBundlerGeneratedCssMarkers, P as resolvePackageDir, R as viteStyleInjectorDelegates, S as applyLinkedResults, T as isSourceStyleRequest, _ as isCSSRequest, a as createCandidateSignature, b as slash, c as getSnapshotHash, d as buildBundleSnapshot, g as formatPostcssSourceMap, h as cleanUrl, i as createScopedGeneratorSourceTraceMap, j as hasBundlerGeneratedCssMarker, k as toAbsoluteOutputPath, l as hasRuntimeAffectingSourceChanges, m as updateBundleBuildState, n as createScopedGeneratorCandidateSignature, o as createJsHashSalt, p as createBundleBuildState, r as createScopedGeneratorRuntime, s as createLinkedImpactSignature, t as createSourceCandidateScanSignature, u as summarizeStringDiff, v as isHTMLRequest, w as generateTailwindV4Css, x as createRuntimeAffectingSourceSignature, y as normalizePath } from "./source-candidate-scan-signature-t4XKAQ04.mjs";
7
+ import { a as vitePluginName, c as collectRuntimeClassSet, d as refreshTailwindRuntimeState, f as normalizeFrameworkStylePlatform, l as createTailwindRuntimeReadyPromise, n as normalizeStyleHandlerMajorVersion, o as shouldSkipJsTransform, s as toCustomAttributesEntities, t as getCompilerContext } from "./context-BL8Gy71H.mjs";
8
+ import { A as processCachedTask, D as createCssSourceTraceCacheSignature, E as annotateCssSourceTrace, O as createCssTokenSourceMap, S as scoreTailwindV4CssSourceFileMatch, _ as normalizeMiniProgramGeneratorCssSource, a as isSourceCandidateRequest, d as validateCandidatesByGenerator, g as mergeMarkedUserLayerComponentsCss, h as extractMarkedUserLayerComponentsCss, m as runWithConcurrency, r as createSourceCandidateCollector, s as createBundleRuntimeClassSetManager, t as createHmrTimingRecorder, v as normalizeMiniProgramImportShell, y as isPureLocalCssImportWrapper } from "./hmr-timing-C3ed5vCx.mjs";
9
+ import { A as createBundlerGeneratedCssMarker, B as resolveViteFrameworkProfile, C as createBundleModuleGraphOptions, D as normalizeOutputPathKey, E as stripRequestQuery, F as resolvePluginDisabledState, I as createBuiltinViteStyleInjectorPlugins, M as parseBundlerGeneratedCssMarkerBlocks, N as stripBundlerGeneratedCssMarkers, P as resolvePackageDir, R as viteStyleInjectorDelegates, S as applyLinkedResults, T as isSourceStyleRequest, _ as isCSSRequest, a as createCandidateSignature, b as slash, c as getSnapshotHash, d as buildBundleSnapshot, g as formatPostcssSourceMap, h as cleanUrl, i as createScopedGeneratorSourceTraceMap, j as hasBundlerGeneratedCssMarker, k as toAbsoluteOutputPath, l as hasRuntimeAffectingSourceChanges, m as updateBundleBuildState, n as createScopedGeneratorCandidateSignature, o as createJsHashSalt, p as createBundleBuildState, r as createScopedGeneratorRuntime, s as createLinkedImpactSignature, t as createSourceCandidateScanSignature, u as summarizeStringDiff, v as isHTMLRequest, w as generateTailwindV4Css, x as createRuntimeAffectingSourceSignature, y as normalizePath } from "./source-candidate-scan-signature-D7RWjWsY.mjs";
10
10
  import { t as logger$1 } from "./logger-BNzxZbZj.mjs";
11
11
  import fs, { existsSync, readFileSync, realpathSync } from "node:fs";
12
12
  import path from "node:path";
@@ -899,6 +899,21 @@ function createRelativeCssImportRequest$1(targetFile, importedFile) {
899
899
  function createCssImportShell$1(targetFile, importedFile) {
900
900
  return `@import "${createRelativeCssImportRequest$1(targetFile, importedFile)}";\n`;
901
901
  }
902
+ function resolveSingleCssImportOutputFile(targetFile, css) {
903
+ let importedFile;
904
+ try {
905
+ postcss.parse(css).walkAtRules("import", (atRule) => {
906
+ if (importedFile !== void 0) return;
907
+ const request = parseImportRequest(atRule.params);
908
+ if (!request || /^(?:https?:)?\/\//i.test(request) || request.startsWith("data:")) return;
909
+ const cleanRequest = request.replace(/[?#].*$/, "");
910
+ if (!/\.(?:css|wxss|acss|ttss|qss|jxss|tyss)$/i.test(cleanRequest)) return;
911
+ const targetDir = path.posix.dirname(normalizeOutputPathKey(targetFile));
912
+ importedFile = normalizeOutputPathKey(path.posix.join(targetDir === "." ? "" : targetDir, cleanRequest));
913
+ });
914
+ } catch {}
915
+ return importedFile;
916
+ }
902
917
  function createRootMiniProgramOriginStyleOutputFile(file) {
903
918
  const normalized = normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
904
919
  if (/(?:^|\/)[^/]+-origin\.[^.]+$/i.test(normalized)) return normalized;
@@ -907,6 +922,28 @@ function createRootMiniProgramOriginStyleOutputFile(file) {
907
922
  function shouldKeepRootMiniProgramStyleAsImportShell(enabled) {
908
923
  return enabled === true;
909
924
  }
925
+ function shouldPreserveFrameworkRootMiniProgramImportShell(options) {
926
+ return !options.isWebGeneratorTarget && options.matchesCss && isRootMiniProgramStyleOutputFile$1(options.file) && isPureLocalCssImportWrapper(options.css) && shouldKeepRootMiniProgramStyleAsImportShell(options.shouldKeep());
927
+ }
928
+ function restoreFrameworkRootMiniProgramImportShellAssets(bundle, options) {
929
+ if (options.isWebGeneratorTarget || options.targetByFile.size === 0) return 0;
930
+ let restored = 0;
931
+ for (const [sourceFile, targetFile] of options.targetByFile) {
932
+ if (!options.matchesCss(sourceFile) || !options.matchesCss(targetFile) || !isRootMiniProgramStyleOutputFile$1(sourceFile) || !isRootMiniProgramStyleOutputFile$1(targetFile) || normalizeOutputPathKey(sourceFile) === normalizeOutputPathKey(targetFile)) continue;
933
+ const output = Object.entries(bundle).find(([bundleFile, candidate]) => candidate.type === "asset" && normalizeOutputPathKey(candidate.fileName || bundleFile) === normalizeOutputPathKey(sourceFile))?.[1];
934
+ if (output?.type !== "asset") continue;
935
+ const rawSource = output.source.toString();
936
+ if (!shouldKeepRootMiniProgramStyleAsImportShell(options.shouldKeep(sourceFile, rawSource))) continue;
937
+ const nextSource = createCssImportShell$1(sourceFile, targetFile);
938
+ if (rawSource === nextSource) continue;
939
+ output.source = nextSource;
940
+ options.recordCssAssetResult?.(sourceFile, nextSource);
941
+ options.onUpdate?.(sourceFile, rawSource, nextSource);
942
+ options.debug?.("restore framework root css import shell: %s -> %s", sourceFile, targetFile);
943
+ restored++;
944
+ }
945
+ return restored;
946
+ }
910
947
  function shouldMoveRootMiniProgramStyleToImportShellOrigin(enabled) {
911
948
  return enabled === true;
912
949
  }
@@ -2257,11 +2294,17 @@ function isMiniProgramStyleOutputFile(file) {
2257
2294
  }
2258
2295
  function shouldPreserveMiniProgramImportShell(options, bundle, file, css) {
2259
2296
  const context = createCssAssetPipelineContext(options, file, bundle);
2260
- return context !== void 0 && options.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
2261
- ...context,
2297
+ return context !== void 0 && shouldPreserveFrameworkRootMiniProgramImportShell({
2262
2298
  css,
2263
- file
2264
- }) === true && isMiniProgramStyleOutputFile(file) && options.opts.cssMatcher(file) && isPureLocalCssImportWrapper(css);
2299
+ file,
2300
+ isWebGeneratorTarget: context.currentGeneratorBranch?.isWeb === true,
2301
+ matchesCss: options.opts.cssMatcher(file),
2302
+ shouldKeep: () => options.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
2303
+ ...context,
2304
+ css,
2305
+ file
2306
+ })
2307
+ });
2265
2308
  }
2266
2309
  function resolvePreservedImportShellInjectionTarget(options, bundle, file, css) {
2267
2310
  const context = createCssAssetPipelineContext(options, file, bundle);
@@ -3031,21 +3074,6 @@ function resolveRootMiniProgramOriginStyleFile(file) {
3031
3074
  if (/(?:^|\/)[^/]+-origin\.[^.]+$/i.test(normalized)) return;
3032
3075
  return normalized.replace(/(\.[^.]+)$/, "-origin$1");
3033
3076
  }
3034
- function resolveSingleCssImportOutputFile(targetFile, css) {
3035
- let importedFile;
3036
- try {
3037
- postcss.parse(css).walkAtRules("import", (atRule) => {
3038
- if (importedFile !== void 0) return;
3039
- const request = parseImportRequest(atRule.params);
3040
- if (!request || /^(?:https?:)?\/\//i.test(request) || request.startsWith("data:")) return;
3041
- const cleanRequest = request.replace(/[?#].*$/, "");
3042
- if (!/\.(?:css|wxss|acss|ttss|qss|jxss|tyss)$/i.test(cleanRequest)) return;
3043
- const targetDir = path.posix.dirname(normalizeOutputPathKey(targetFile));
3044
- importedFile = normalizeOutputPathKey(path.posix.join(targetDir === "." ? "" : targetDir, cleanRequest));
3045
- });
3046
- } catch {}
3047
- return importedFile;
3048
- }
3049
3077
  function normalizeRootMiniProgramImportShellAssets(bundle, options) {
3050
3078
  if (!options.enabled) return 0;
3051
3079
  let updated = 0;
@@ -3919,7 +3947,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
3919
3947
  //#endregion
3920
3948
  //#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
3921
3949
  async function processRememberedCssReplay(options) {
3922
- const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, changedCssFiles = /* @__PURE__ */ new Set(), createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssRawSourceHashByFile = /* @__PURE__ */ new Map(), lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
3950
+ const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, changedCssFiles = /* @__PURE__ */ new Set(), createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, cssPipelineContext, cssPipelineStrategy, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssRawSourceHashByFile = /* @__PURE__ */ new Map(), lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
3923
3951
  const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
3924
3952
  for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
3925
3953
  if (isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
@@ -3963,7 +3991,17 @@ async function processRememberedCssReplay(options) {
3963
3991
  const shouldRecordRememberedReplayCss = useIncrementalMode || isNativeAppStyleTarget;
3964
3992
  const shouldEmitRememberedReplayCssAsset = shouldRecordRememberedReplayCss;
3965
3993
  if (!shouldRecordRememberedReplayCss) continue;
3966
- if (!isWebGeneratorTarget && isPureLocalCssImportWrapper(rawSource)) {
3994
+ if (shouldPreserveFrameworkRootMiniProgramImportShell({
3995
+ css: rawSource,
3996
+ file: outputFile,
3997
+ isWebGeneratorTarget,
3998
+ matchesCss: opts.cssMatcher(outputFile),
3999
+ shouldKeep: () => cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
4000
+ ...cssPipelineContext,
4001
+ css: rawSource,
4002
+ file: outputFile
4003
+ })
4004
+ }) || !isRootMiniProgramStyleOutputFile$1(outputFile) && !isWebGeneratorTarget && isPureLocalCssImportWrapper(rawSource)) {
3967
4005
  cssTaskFactories.push(() => timeTask("css.replay", async () => {
3968
4006
  const start = performance.now();
3969
4007
  const css = annotateCss(normalizeMiniProgramImportShell(rawSource));
@@ -4674,6 +4712,7 @@ function createGenerateBundleHook(context) {
4674
4712
  const lastCssResultByFile = /* @__PURE__ */ new Map();
4675
4713
  const lastCssSourceHashByFile = /* @__PURE__ */ new Map();
4676
4714
  const lastCssRawSourceHashByFile = /* @__PURE__ */ new Map();
4715
+ const frameworkRootImportShellTargetByFile = context.frameworkRootImportShellTargetByFile ?? /* @__PURE__ */ new Map();
4677
4716
  let currentOutDir;
4678
4717
  let currentSubpackageRoots;
4679
4718
  const createInitialCssPipelineContext = (file) => {
@@ -4712,7 +4751,7 @@ function createGenerateBundleHook(context) {
4712
4751
  });
4713
4752
  return async function generateBundle(_opt, bundle) {
4714
4753
  const addWatchFile = (id) => this.addWatchFile?.(id);
4715
- const { opts, runtimeState, ensureBundleRuntimeClassSet, debug, getResolvedConfig, markCssAssetProcessed, isCssAssetProcessed, isViteProcessedCssAsset, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getViteProcessedCssAssetResult, getSourceCandidates, getSourceCandidateSource, getSourceCandidateSources, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberCssSource, refreshRememberedCssSource, getRememberedCssSources, getRememberedCssSignature, setRememberedCssSignature, getKnownCssSource, getKnownSfcSource, recordGeneratorCandidates, pruneViteCssCaches, getViteCssCacheStats, hmrTimingRecorder } = context;
4754
+ const { opts, runtimeState, ensureBundleRuntimeClassSet, debug, getResolvedConfig, markCssAssetProcessed, isCssAssetProcessed, isViteProcessedCssAsset, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getViteProcessedCssAssetResult, getSourceCandidates, getSourceCandidateSource, getSourceCandidateSources, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberCssSource, refreshRememberedCssSource, getRememberedCssSources, getRememberedCssSignature, setRememberedCssSignature, getKnownCssSource, getKnownSfcSource, getOriginalCssLayerSource, recordGeneratorCandidates, pruneViteCssCaches, getViteCssCacheStats, hmrTimingRecorder } = context;
4716
4755
  const getBundlerSfcSource = (sourceFile) => {
4717
4756
  const code = this.getModuleInfo?.(sourceFile)?.code;
4718
4757
  return typeof code === "string" && hasSfcStyleSources(code) ? code : void 0;
@@ -4797,16 +4836,38 @@ function createGenerateBundleHook(context) {
4797
4836
  const envFlags = resolveGenerateBundleEnvFlags();
4798
4837
  const bundleFiles = Object.keys(bundle);
4799
4838
  const activeViteCssCacheFiles = new Set(bundleFiles.map(normalizeViteCssCacheKey));
4800
- const getConfiguredTailwindV4CssSourceEntries = () => collectConfiguredTailwindV4CssSourceEntries({
4801
- ...opts,
4802
- tailwindcssRuntimeOptions: {
4803
- ...opts.tailwindcssRuntimeOptions ?? {},
4804
- tailwindcss: {
4805
- ...resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions) ?? {},
4806
- ...resolveTailwindcssOptions(runtimeState.tailwindRuntime.options) ?? {}
4839
+ const normalizeSystemAliasPathKey = (file) => file.startsWith("/private/var/") ? file.slice(8) : file;
4840
+ const normalizeConfiguredCssSourceCacheKey = (file) => normalizeSystemAliasPathKey(normalizeOutputPathKey(path.resolve(file.replace(/[?#].*$/, ""))));
4841
+ const runtimeTailwindcssOptions = resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
4842
+ const tailwindRuntimeOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
4843
+ const configuredTailwindV4ExplicitCssEntryFiles = [...new Set([
4844
+ ...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
4845
+ ...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
4846
+ ...Array.isArray(runtimeTailwindcssOptions?.v4?.cssEntries) ? runtimeTailwindcssOptions.v4.cssEntries : [],
4847
+ ...Array.isArray(tailwindRuntimeOptions?.v4?.cssEntries) ? tailwindRuntimeOptions.v4.cssEntries : []
4848
+ ].filter((file) => typeof file === "string" && file.length > 0))];
4849
+ const getConfiguredTailwindV4CssSourceEntries = () => {
4850
+ const collectedEntries = collectConfiguredTailwindV4CssSourceEntries({
4851
+ ...opts,
4852
+ tailwindcssRuntimeOptions: {
4853
+ ...opts.tailwindcssRuntimeOptions ?? {},
4854
+ tailwindcss: {
4855
+ ...resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions) ?? {},
4856
+ ...resolveTailwindcssOptions(runtimeState.tailwindRuntime.options) ?? {}
4857
+ }
4807
4858
  }
4808
- }
4809
- }, opts.tailwindcssBasedir ?? rootDir);
4859
+ }, opts.tailwindcssBasedir ?? rootDir);
4860
+ const cachedEntries = configuredTailwindV4ExplicitCssEntryFiles.flatMap((file) => {
4861
+ const resolvedFile = path.isAbsolute(file) ? path.resolve(file) : path.resolve(opts.tailwindcssBasedir ?? rootDir, file);
4862
+ const source = getCssSource(resolvedFile);
4863
+ return typeof source === "string" && source.length > 0 ? [{
4864
+ file: resolvedFile,
4865
+ source
4866
+ }] : [];
4867
+ });
4868
+ const cachedFileKeys = new Set(cachedEntries.map((entry) => normalizeConfiguredCssSourceCacheKey(entry.file)));
4869
+ return [...cachedEntries, ...collectedEntries.filter((entry) => !cachedFileKeys.has(normalizeConfiguredCssSourceCacheKey(entry.file)))];
4870
+ };
4810
4871
  const normalizeGeneratorUserRawSource = (source, sourceFile, fallbackFile) => normalizeRelativeCssConfigDirectives(source, sourceFile || fallbackFile, outDir, opts);
4811
4872
  const resolveMatchedCssSourceOutputFile = (sourceFile) => resolveOutputFileFromMatchedCssSource({
4812
4873
  bundleFiles,
@@ -4827,20 +4888,12 @@ function createGenerateBundleHook(context) {
4827
4888
  const snapshotStart = performance.now();
4828
4889
  const snapshot = buildBundleSnapshot(bundle, opts, outDir, state, envFlags.disableDirtyOptimization || !useIncrementalMode, { hasOmittedKnownFiles });
4829
4890
  const configuredTailwindV4CssSourceEntriesForScope = getConfiguredTailwindV4CssSourceEntries();
4830
- const normalizeSystemAliasPathKey = (file) => file.startsWith("/private/var/") ? file.slice(8) : file;
4831
4891
  const normalizeConfiguredTailwindV4CssEntryFileKey = (file) => {
4832
4892
  const cleanFile = file.replace(/[?#].*$/, "");
4833
4893
  return normalizeSystemAliasPathKey(normalizeOutputPathKey(path.isAbsolute(cleanFile) ? path.resolve(cleanFile) : path.resolve(opts.tailwindcssBasedir ?? rootDir, cleanFile)));
4834
4894
  };
4835
- const runtimeTailwindcssOptions = resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
4836
- const tailwindRuntimeOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
4837
4895
  const configuredTailwindV4CssSourceFileKeysForScope = new Set(configuredTailwindV4CssSourceEntriesForScope.map((entry) => normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)));
4838
- const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set([
4839
- ...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
4840
- ...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
4841
- ...Array.isArray(runtimeTailwindcssOptions?.v4?.cssEntries) ? runtimeTailwindcssOptions.v4.cssEntries : [],
4842
- ...Array.isArray(tailwindRuntimeOptions?.v4?.cssEntries) ? tailwindRuntimeOptions.v4.cssEntries : []
4843
- ].filter((file) => typeof file === "string" && file.length > 0).map(normalizeConfiguredTailwindV4CssEntryFileKey));
4896
+ const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set(configuredTailwindV4ExplicitCssEntryFiles.map(normalizeConfiguredTailwindV4CssEntryFileKey));
4844
4897
  const isRootStyleOutputFile = (file) => {
4845
4898
  const normalized = normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
4846
4899
  return normalized.endsWith(".css") && !normalized.includes("/");
@@ -4870,9 +4923,11 @@ function createGenerateBundleHook(context) {
4870
4923
  const selectConfiguredRootCssSourceEntry = (outputFile, entries, originalFileNames) => {
4871
4924
  const matchedOriginalEntry = entries.find((entry) => originalFileNames?.some((originalFile) => normalizeConfiguredTailwindV4CssEntryFileKey(originalFile) === normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)) === true);
4872
4925
  if (matchedOriginalEntry && outputFile.replace(/[?#].*$/, "").endsWith(".css")) return matchedOriginalEntry;
4873
- if (!shouldSelectConfiguredRootCssOutput(outputFile)) return;
4874
4926
  const shouldRequireExplicitConfiguredEntry = !cssPipelineContext.currentGeneratorBranch.isWeb && opts.cssMatcher(outputFile) && isRootStyleOutputFile(outputFile);
4875
4927
  const generationEntries = entries.filter((entry) => hasTailwindGenerationSource(entry.source) && (!shouldRequireExplicitConfiguredEntry || configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(entry.file))));
4928
+ const matchedOutputEntries = generationEntries.filter((entry) => normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")) === normalizeOutputPathKey(outputFile.replace(/[?#].*$/, "")));
4929
+ if (matchedOutputEntries.length === 1) return matchedOutputEntries[0];
4930
+ if (!shouldSelectConfiguredRootCssOutput(outputFile)) return;
4876
4931
  if (generationEntries.length <= 1) return generationEntries[0];
4877
4932
  const rootOutputEntries = generationEntries.filter((entry) => {
4878
4933
  return !normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")).includes("/");
@@ -5146,10 +5201,55 @@ function createGenerateBundleHook(context) {
5146
5201
  metrics.css.total++;
5147
5202
  const assetSourceFile = resolveAssetSourceFile(originalSource, file);
5148
5203
  const rawSource = normalizeRelativeCssConfigDirectives(originalEntrySource, assetSourceFile, outDir, opts);
5204
+ const currentRawSourceHasExplicitScanContext = rawSource.includes("@source") || rawSource.includes("@config");
5149
5205
  const cssPipelineContext = {
5150
5206
  ...createInitialCssPipelineContext(file),
5151
5207
  bundle
5152
5208
  };
5209
+ const rootImportShellOutputFile = resolveReplayCssOutputFile(outDir, originalSource.fileName || file);
5210
+ let rememberedFrameworkRootImportTarget = frameworkRootImportShellTargetByFile.get(rootImportShellOutputFile);
5211
+ const isCurrentFrameworkRootImportShell = shouldPreserveFrameworkRootMiniProgramImportShell({
5212
+ css: rawSource,
5213
+ file: rootImportShellOutputFile,
5214
+ isWebGeneratorTarget,
5215
+ matchesCss: opts.cssMatcher(rootImportShellOutputFile) || opts.cssMatcher(file),
5216
+ shouldKeep: () => context.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
5217
+ ...cssPipelineContext,
5218
+ css: rawSource,
5219
+ file: rootImportShellOutputFile
5220
+ })
5221
+ });
5222
+ if (isCurrentFrameworkRootImportShell) {
5223
+ const importedFile = resolveSingleCssImportOutputFile(rootImportShellOutputFile, rawSource);
5224
+ if (importedFile && isRootMiniProgramStyleOutputFile$1(importedFile)) frameworkRootImportShellTargetByFile.set(rootImportShellOutputFile, importedFile);
5225
+ }
5226
+ if (!rememberedFrameworkRootImportTarget && !isCurrentFrameworkRootImportShell && !isWebGeneratorTarget && isRootMiniProgramStyleOutputFile$1(rootImportShellOutputFile) && normalizeOutputPathKey(assetSourceFile) === normalizeOutputPathKey(file) && opts.mainCssChunkMatcher(rootImportShellOutputFile, opts.appType) && shouldKeepRootMiniProgramStyleAsImportShell(context.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
5227
+ ...cssPipelineContext,
5228
+ css: rawSource,
5229
+ file: rootImportShellOutputFile
5230
+ })) && !shouldMoveRootMiniProgramStyleToImportShellOrigin(context.cssPipelineStrategy?.shouldMoveRootMiniProgramStyleToImportShellOrigin?.({
5231
+ ...cssPipelineContext,
5232
+ file: rootImportShellOutputFile
5233
+ }))) {
5234
+ const rootGeneratedTargets = /* @__PURE__ */ new Set();
5235
+ for (const entry of getConfiguredTailwindV4CssSourceEntries()) {
5236
+ const targetFile = resolveMatchedCssSourceOutputFile(entry.file);
5237
+ if (targetFile && isRootMiniProgramStyleOutputFile$1(targetFile) && normalizeOutputPathKey(targetFile) !== normalizeOutputPathKey(rootImportShellOutputFile)) rootGeneratedTargets.add(targetFile);
5238
+ }
5239
+ for (const [, record] of getViteProcessedCssAssetResults?.() ?? []) {
5240
+ if (typeof record === "string" || record.injectIntoMain !== true || !record.outputFile) continue;
5241
+ const targetFile = resolveViteCssPipelineOutputFile(record.outputFile, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
5242
+ if (isRootMiniProgramStyleOutputFile$1(targetFile) && normalizeOutputPathKey(targetFile) !== normalizeOutputPathKey(rootImportShellOutputFile)) rootGeneratedTargets.add(targetFile);
5243
+ }
5244
+ if (rootGeneratedTargets.size === 1) {
5245
+ const [targetFile] = rootGeneratedTargets;
5246
+ if (targetFile) {
5247
+ rememberedFrameworkRootImportTarget = targetFile;
5248
+ frameworkRootImportShellTargetByFile.set(rootImportShellOutputFile, targetFile);
5249
+ debug("css remember framework root generated target: %s -> %s", rootImportShellOutputFile, targetFile);
5250
+ }
5251
+ }
5252
+ }
5153
5253
  let outputFile = resolveCssBundleOutputFile({
5154
5254
  bundleFiles,
5155
5255
  cssPipelineStrategy: context.cssPipelineStrategy,
@@ -5160,6 +5260,14 @@ function createGenerateBundleHook(context) {
5160
5260
  pipelineContext: cssPipelineContext,
5161
5261
  shouldPreserveAppCssExtension
5162
5262
  });
5263
+ if (rememberedFrameworkRootImportTarget && !isWebGeneratorTarget && (opts.cssMatcher(rootImportShellOutputFile) || opts.cssMatcher(file)) && shouldKeepRootMiniProgramStyleAsImportShell(context.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
5264
+ ...cssPipelineContext,
5265
+ css: rawSource,
5266
+ file: rootImportShellOutputFile
5267
+ }))) {
5268
+ outputFile = rememberedFrameworkRootImportTarget;
5269
+ debug("css reuse framework root import shell target: %s -> %s", rootImportShellOutputFile, outputFile);
5270
+ }
5163
5271
  const resolveMatchedOutputFileForCurrentAsset = createMatchedCssSourceOutputResolver({
5164
5272
  assetSourceFile,
5165
5273
  file,
@@ -5218,6 +5326,7 @@ function createGenerateBundleHook(context) {
5218
5326
  return await refreshRememberedCssSource?.(remembered) ?? remembered;
5219
5327
  }));
5220
5328
  rememberedCssSources = rememberedCssSources.filter((remembered) => {
5329
+ if (currentRawSourceHasExplicitScanContext && !remembered.rawSource.includes("@source") && !remembered.rawSource.includes("@config")) return false;
5221
5330
  if (hasExplicitConfiguredRootCssEntryForOutput(outputFile) && !configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return false;
5222
5331
  if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
5223
5332
  const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
@@ -5237,7 +5346,7 @@ function createGenerateBundleHook(context) {
5237
5346
  let outputCssHandlerOptions = getCssHandlerOptions(outputFile);
5238
5347
  const configuredRootSourceStyle = resolveConfiguredRootCssSourceStyle(outputFile, getConfiguredTailwindV4CssSourceEntries(), originalSource.originalFileNames);
5239
5348
  const hasExplicitRememberedRootSource = rememberedCssSources.some((remembered) => configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile)));
5240
- if (configuredRootSourceStyle && (!hasUsableRememberedTailwindSource || !hasExplicitRememberedRootSource)) {
5349
+ if (configuredRootSourceStyle != null && (!currentRawSourceHasExplicitScanContext || hasTailwindGenerationSource(configuredRootSourceStyle.rawSource)) && (!hasUsableRememberedTailwindSource || !hasExplicitRememberedRootSource)) {
5241
5350
  rememberedCssSources = [configuredRootSourceStyle];
5242
5351
  hasUsableRememberedTailwindSource = true;
5243
5352
  debug("source style source inferred from configured root tailwind v4 css source: %s -> %s", outputFile, configuredRootSourceStyle.sourceFile);
@@ -5352,6 +5461,7 @@ function createGenerateBundleHook(context) {
5352
5461
  }
5353
5462
  }
5354
5463
  }
5464
+ if (currentRawSourceHasExplicitScanContext) rememberedCssSources = rememberedCssSources.filter((remembered) => remembered.rawSource.includes("@source") || remembered.rawSource.includes("@config"));
5355
5465
  let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
5356
5466
  if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
5357
5467
  const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(rememberedCssSource.sourceFile);
@@ -5365,6 +5475,17 @@ function createGenerateBundleHook(context) {
5365
5475
  };
5366
5476
  }
5367
5477
  }
5478
+ if (!isWebGeneratorTarget && isRootMiniProgramStyleOutputFile$1(rootImportShellOutputFile) && isRootMiniProgramStyleOutputFile$1(outputFile) && normalizeOutputPathKey(rootImportShellOutputFile) !== normalizeOutputPathKey(outputFile) && shouldKeepRootMiniProgramStyleAsImportShell(context.cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
5479
+ ...cssPipelineContext,
5480
+ css: rawSource,
5481
+ file: rootImportShellOutputFile
5482
+ })) && !shouldMoveRootMiniProgramStyleToImportShellOrigin(context.cssPipelineStrategy?.shouldMoveRootMiniProgramStyleToImportShellOrigin?.({
5483
+ ...cssPipelineContext,
5484
+ file: rootImportShellOutputFile
5485
+ }))) {
5486
+ frameworkRootImportShellTargetByFile.set(rootImportShellOutputFile, outputFile);
5487
+ debug("css remember framework root import shell target: %s -> %s", rootImportShellOutputFile, outputFile);
5488
+ }
5368
5489
  const shouldKeepImportedCssShell = isCssImportOnlyBundleAsset(bundle, file, rawSource);
5369
5490
  const useRememberedCssSource = !shouldKeepImportedCssShell && rememberedCssSource != null && (normalizeOutputPathKey(rememberedCssSource.sourceFile) !== normalizeOutputPathKey(file) || !hasTailwindGenerationSource(rawSource) && hasTailwindGenerationSource(rememberedCssSource.rawSource));
5370
5491
  const vitePipelineCssAsset = viteProcessedCssAsset || useRememberedCssSource;
@@ -5385,6 +5506,8 @@ function createGenerateBundleHook(context) {
5385
5506
  const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && normalizeOutputPathKey(rememberedCssSource.outputFile) === normalizeOutputPathKey(outputFile);
5386
5507
  const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
5387
5508
  const generatorSourceFile = vitePipelineCssAsset ? rememberedCssSource?.sourceFile ?? assetSourceFile : assetSourceFile;
5509
+ const originalGeneratorLayerSource = vitePipelineCssAsset ? getOriginalCssLayerSource?.(generatorSourceFile) : void 0;
5510
+ const generatorUserLayerRawSource = originalGeneratorLayerSource && normalizeCssSourceForCompare(originalGeneratorLayerSource) !== normalizeCssSourceForCompare(generatorRawSource) && hasUserCssLayerBlocks(originalGeneratorLayerSource) ? normalizeMiniProgramGeneratorRawSource(normalizeGeneratorUserRawSource(originalGeneratorLayerSource, generatorSourceFile, assetSourceFile), outputFile) : void 0;
5388
5511
  const webviewRootCssInjectionTarget = vitePipelineCssAsset ? resolveConfiguredCssEntryRootInjectionTarget(generatorSourceFile, outputFile) : void 0;
5389
5512
  const usesConfiguredTailwindV4FallbackSource = rememberedCssSource != null && normalizeOutputPathKey(rememberedCssSource.outputFile) === normalizeOutputPathKey(outputFile) && normalizeOutputPathKey(rememberedCssSource.sourceFile.replace(/[?#].*$/, "")) !== normalizeOutputPathKey(file);
5390
5513
  if (vitePipelineCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile))) {
@@ -5515,7 +5638,10 @@ function createGenerateBundleHook(context) {
5515
5638
  const previousCss = !vitePipelineCssAsset && useIncrementalMode && !generatorCandidatesChanged && !hasRuntimeAffectingChanges && !snapshot.changedByType.css.has(file) ? getLastCssResult(lastCssResultByFile, outputFile, file) : void 0;
5516
5639
  const generatorTransformRawSource = generatorRawSource;
5517
5640
  const previousGeneratorCss = previousCss && !isWebGeneratorTarget ? normalizeMiniProgramGeneratorRawSource(previousCss, outputFile) : previousCss;
5518
- const generated = hasTailwindGenerationSource(generatorTransformRawSource) || hasBundlerGeneratedCssMarker(rawSource) ? await generateTailwindV4Css({
5641
+ const shouldGenerateCssWithCore = hasTailwindGenerationSource(generatorTransformRawSource) || hasBundlerGeneratedCssMarker(rawSource);
5642
+ const bundleUserRawSource = vitePipelineCssAsset && !hasBundlerGeneratedCssMarker(rawSource) && normalizeCssSourceForCompare(rawSource) !== normalizeCssSourceForCompare(generatorRawSource) ? normalizeMiniProgramGeneratorRawSource(normalizeGeneratorUserRawSource(rawSource, generatorSourceFile, assetSourceFile), outputFile) : void 0;
5643
+ const generatorUserRawSource = [generatorUserLayerRawSource, bundleUserRawSource].filter((source) => typeof source === "string" && source.trim().length > 0).join("\n");
5644
+ const generated = shouldGenerateCssWithCore ? await generateTailwindV4Css({
5519
5645
  opts,
5520
5646
  runtimeState,
5521
5647
  runtime: scopedGeneratorRuntime,
@@ -5530,7 +5656,7 @@ function createGenerateBundleHook(context) {
5530
5656
  styleHandler,
5531
5657
  debug,
5532
5658
  previousCss: previousGeneratorCss,
5533
- ...vitePipelineCssAsset && !hasBundlerGeneratedCssMarker(rawSource) && normalizeCssSourceForCompare(rawSource) !== normalizeCssSourceForCompare(generatorRawSource) ? { userRawSource: normalizeMiniProgramGeneratorRawSource(normalizeGeneratorUserRawSource(rawSource, generatorSourceFile, assetSourceFile), outputFile) } : {},
5659
+ ...generatorUserRawSource ? { userRawSource: generatorUserRawSource } : {},
5534
5660
  ...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
5535
5661
  }) : void 0;
5536
5662
  if (generated) {
@@ -5628,6 +5754,8 @@ function createGenerateBundleHook(context) {
5628
5754
  cache,
5629
5755
  changedCssFiles: snapshot.changedByType.css,
5630
5756
  cssTaskFactories,
5757
+ cssPipelineContext,
5758
+ cssPipelineStrategy: context.cssPipelineStrategy,
5631
5759
  createScopedGeneratorRuntime: createScopedGeneratorRuntime$1,
5632
5760
  createScopedSourceCandidateGetter,
5633
5761
  createScopedSourceCandidateSourceGetter,
@@ -5792,7 +5920,7 @@ function createViteCssFinalizerOutputPlugin(context) {
5792
5920
  generateBundle: {
5793
5921
  order: "post",
5794
5922
  async handler(_options, bundle) {
5795
- const { opts, runtimeState, ensureRuntimeClassSet, cssPipelineStrategy, isCssAssetProcessed, markCssAssetProcessed, debug, getResolvedConfig, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getRecordedGeneratorCandidates, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberMainCssSource, getRememberedMainCssSource, isViteProcessedCssAsset } = context;
5923
+ const { opts, runtimeState, ensureRuntimeClassSet, cssPipelineStrategy, isCssAssetProcessed, markCssAssetProcessed, debug, getResolvedConfig, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getRecordedGeneratorCandidates, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberMainCssSource, getRememberedMainCssSource, isViteProcessedCssAsset, frameworkRootImportShellTargetByFile } = context;
5796
5924
  const resolvedConfig = getResolvedConfig();
5797
5925
  const uniUtsPlatform = resolveUniUtsPlatform();
5798
5926
  const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir(resolvedConfig?.build?.outDir);
@@ -5825,6 +5953,19 @@ function createViteCssFinalizerOutputPlugin(context) {
5825
5953
  const rootDir = resolvedConfig?.root ? path.resolve(resolvedConfig.root) : process$1.cwd();
5826
5954
  const outDir = resolvedConfig?.build?.outDir ? path.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
5827
5955
  const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
5956
+ restoreFrameworkRootMiniProgramImportShellAssets(bundle, {
5957
+ debug,
5958
+ isWebGeneratorTarget,
5959
+ matchesCss: opts.cssMatcher,
5960
+ onUpdate: opts.onUpdate,
5961
+ recordCssAssetResult,
5962
+ shouldKeep: (file, css) => cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
5963
+ ...createCssPipelineContext(file),
5964
+ css,
5965
+ file
5966
+ }),
5967
+ targetByFile: frameworkRootImportShellTargetByFile ?? /* @__PURE__ */ new Map()
5968
+ });
5828
5969
  const sourceTraceTokenSources = getSourceCandidateSourcesForEntries ? createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts) : void 0;
5829
5970
  const annotateCss = (css) => annotateCssSourceTrace(css, {
5830
5971
  opts,
@@ -6819,6 +6960,22 @@ function createViteServeJsTransformPlugin(options) {
6819
6960
  };
6820
6961
  }
6821
6962
  //#endregion
6963
+ //#region src/bundlers/vite/serve-root-import-shell.ts
6964
+ function resolveViteServeRootMiniProgramImportShell(options) {
6965
+ const { css, cssPipelineContext, cssPipelineStrategy, isWebGeneratorTarget, outputFile } = options;
6966
+ return shouldPreserveFrameworkRootMiniProgramImportShell({
6967
+ css,
6968
+ file: outputFile,
6969
+ isWebGeneratorTarget,
6970
+ matchesCss: cssPipelineContext.opts?.cssMatcher?.(outputFile) ?? true,
6971
+ shouldKeep: () => cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
6972
+ ...cssPipelineContext,
6973
+ css,
6974
+ file: outputFile
6975
+ })
6976
+ }) ? normalizeMiniProgramImportShell(css) : void 0;
6977
+ }
6978
+ //#endregion
6822
6979
  //#region src/bundlers/vite/tailwind-basedir.ts
6823
6980
  const PACKAGE_JSON_FILE = "package.json";
6824
6981
  function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
@@ -6971,6 +7128,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
6971
7128
  cssEntries: opts.cssEntries ?? rawOptions.cssEntries
6972
7129
  });
6973
7130
  const autoCssSourceContent = /* @__PURE__ */ new Map();
7131
+ const frameworkRootImportShellTargetByFile = /* @__PURE__ */ new Map();
6974
7132
  const transientAutoCssSources = /* @__PURE__ */ new Map();
6975
7133
  let refreshRuntimeStateForAutoCssSources;
6976
7134
  let autoCssSourcesRefresh;
@@ -7047,7 +7205,21 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7047
7205
  };
7048
7206
  const customAttributesEntities = toCustomAttributesEntities(customAttributes);
7049
7207
  let recordedGeneratorCandidates;
7050
- const sourceCandidateCollector = createSourceCandidateCollector({ bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues });
7208
+ const sourceCandidateCollector = createSourceCandidateCollector({
7209
+ bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues,
7210
+ customAttributesEntities,
7211
+ disabledDefaultTemplateHandler
7212
+ });
7213
+ const originalCssLayerSourceByFile = new LRUCache({ max: 128 });
7214
+ const rememberOriginalCssLayerSource = (id, code) => {
7215
+ const file = cleanUrl(id);
7216
+ if (!isCSSRequest(file)) return;
7217
+ if (!hasUserCssLayerBlocks(code)) {
7218
+ originalCssLayerSourceByFile.delete(file);
7219
+ return;
7220
+ }
7221
+ originalCssLayerSourceByFile.set(file, splitUserCssLayerBlocks(code).layer);
7222
+ };
7051
7223
  const sourceCandidateScanCache = new LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
7052
7224
  let sourceScanEntries;
7053
7225
  let sourceScanMatcher;
@@ -7457,6 +7629,34 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7457
7629
  const pendingHmrChange = resolvePendingHmrCandidateChange(generatorCode, file);
7458
7630
  const forceFullHmrCssRegeneration = pendingFullHmrCssRegeneration || resolvedConfig?.command === "serve" && pendingHmrCandidateChange !== void 0 && pendingHmrChange === void 0;
7459
7631
  const runtime = fullRuntime;
7632
+ const importShellCss = resolveViteServeRootMiniProgramImportShell({
7633
+ css: generatorTransformCode,
7634
+ cssPipelineContext,
7635
+ cssPipelineStrategy: frameworkCssPipelineStrategy,
7636
+ isWebGeneratorTarget: currentGeneratorBranch.isWeb,
7637
+ outputFile
7638
+ });
7639
+ if (importShellCss !== void 0) {
7640
+ cleanGeneratedCssByFile.set(fileKey, importShellCss);
7641
+ tracedGeneratedCssByFile.set(fileKey, importShellCss);
7642
+ generatedClassSetByFile.set(fileKey, /* @__PURE__ */ new Set());
7643
+ recordViteProcessedCssAssetResult(file, importShellCss, {
7644
+ injectIntoMain: false,
7645
+ outputFile
7646
+ });
7647
+ markViteProcessedCssSource(file);
7648
+ rememberTailwindRootCssModule(id);
7649
+ recordGeneratorCandidates(fullRuntime);
7650
+ if (pendingHmrChange) finishPendingHmrCssTargetFile(file);
7651
+ else if (!pendingHmrCandidateChange) clearPendingHmrCandidateChange();
7652
+ cssMemory.rememberCssSource({
7653
+ outputFile,
7654
+ rawSource: code,
7655
+ sourceFile: requestFile
7656
+ });
7657
+ debug("css preserved root mini-program import shell for vite postcss pipeline: %s bytes=%d", requestFile, importShellCss.length);
7658
+ return importShellCss;
7659
+ }
7460
7660
  if (pendingHmrChange && currentGeneratorOptions.target === "weapp" && filterUnsupportedMiniProgramTailwindV4Candidates(pendingHmrChange.addedCandidates).size === 0) {
7461
7661
  const previousTracedCss = tracedGeneratedCssByFile.get(fileKey);
7462
7662
  if (previousTracedCss !== void 0) {
@@ -7480,6 +7680,8 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7480
7680
  cssHandlerOptions,
7481
7681
  generatorCode: generatorTransformCode
7482
7682
  }) ?? true);
7683
+ const previousCss = pendingHmrChange && !forceFullHmrCssRegeneration ? cleanGeneratedCssByFile.get(fileKey) : void 0;
7684
+ const previousGeneratorCss = previousCss && !currentGeneratorBranch.isWeb ? normalizeMiniProgramGeneratorCssSource(previousCss, outputFile) : previousCss;
7483
7685
  const generated = await hmrTimingRecorder.measure("generateCss.serve", () => generateTailwindV4Css({
7484
7686
  opts,
7485
7687
  runtimeState,
@@ -7494,6 +7696,8 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7494
7696
  generatorPlatform: resolveGeneratorPlatform(),
7495
7697
  styleHandler,
7496
7698
  debug,
7699
+ previousCss: previousGeneratorCss,
7700
+ previousClassSet: pendingHmrChange && !forceFullHmrCssRegeneration ? generatedClassSetByFile.get(fileKey) : void 0,
7497
7701
  deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
7498
7702
  disableSourceScan: false,
7499
7703
  restoreLocalCssImports: !currentGeneratorBranch.isWeb
@@ -7597,11 +7801,13 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7597
7801
  setRememberedCssSignature: cssMemory.setRememberedCssSignature,
7598
7802
  getKnownCssSource: cssMemory.getKnownCssSource,
7599
7803
  getKnownSfcSource: cssMemory.getKnownSfcSource,
7804
+ getOriginalCssLayerSource: (file) => originalCssLayerSourceByFile.get(cleanUrl(file)),
7600
7805
  recordGeneratorCandidates,
7601
7806
  pruneViteCssCaches,
7602
7807
  getViteCssCacheStats,
7603
7808
  hmrTimingRecorder,
7604
- cssPipelineStrategy: frameworkCssPipelineStrategy
7809
+ cssPipelineStrategy: frameworkCssPipelineStrategy,
7810
+ frameworkRootImportShellTargetByFile
7605
7811
  });
7606
7812
  const cssFinalizerOutputPlugin = createViteCssFinalizerOutputPlugin({
7607
7813
  opts,
@@ -7621,6 +7827,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7621
7827
  getSourceCandidatesForEntries,
7622
7828
  getSourceCandidateSourcesForEntries,
7623
7829
  waitForSourceCandidateSyncs,
7830
+ frameworkRootImportShellTargetByFile,
7624
7831
  rememberMainCssSource: (file, rawSource) => cssMemory.rememberCssSource({
7625
7832
  outputFile: file,
7626
7833
  rawSource,
@@ -7656,6 +7863,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7656
7863
  if (!shouldOwnTailwindGeneration || isWebOrNativeAppPlatform(resolveViteStylePlatform()) || !isCSSRequest(id) || !shouldCollectTransformedSourceCandidates(id)) return;
7657
7864
  const rawCode = await readFile(cleanUrl(id), "utf8").catch(() => void 0);
7658
7865
  if (typeof rawCode !== "string") return;
7866
+ rememberOriginalCssLayerSource(id, rawCode);
7659
7867
  const transformedCode = transformEarlyMiniProgramCss(rawCode);
7660
7868
  if (transformedCode === rawCode) return;
7661
7869
  cssMemory.rememberKnownSfcSource(id, transformedCode);
@@ -7664,6 +7872,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7664
7872
  transform: {
7665
7873
  order: "pre",
7666
7874
  async handler(code, id) {
7875
+ if (hasUserCssLayerBlocks(code)) rememberOriginalCssLayerSource(id, code);
7667
7876
  let transformedCode = code;
7668
7877
  if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
7669
7878
  const shouldReturnTransformedCode = transformedCode !== code;
@@ -7719,6 +7928,7 @@ function createViteFrameworkPlugins(options = {}, frameworkBranch) {
7719
7928
  }
7720
7929
  const canReadHotSource = typeof ctx.read === "function";
7721
7930
  const hotSource = isSourceCandidateHotUpdate && canReadHotSource ? await ctx.read().catch(() => void 0) : void 0;
7931
+ if (typeof hotSource === "string" && isCSSRequest(ctx.file)) rememberOriginalCssLayerSource(ctx.file, hotSource);
7722
7932
  const sourceCandidateChange = await syncChangedSourceCandidateFile(ctx.file, hotSource);
7723
7933
  const isWebLikeHotUpdate = isCurrentWebLikeStylePlatform();
7724
7934
  let canUseHmrCandidateAppend = false;
package/dist/vite.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-DnkObu2L.js");
2
+ const require_vite = require("./vite-BNlPdsGM.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-Tpgi77vE.mjs";
1
+ import { t as WeappTailwindcss } from "./vite-CBU5NXTX.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };