weapp-tailwindcss 5.2.5 → 5.2.7

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 (32) hide show
  1. package/dist/bundlers/shared/final-css-cleanup.d.ts +2 -0
  2. package/dist/bundlers/shared/generator-css/source-resolver/apply-reference.d.ts +11 -4
  3. package/dist/bundlers/vite/generate-bundle/final-css-assets.d.ts +8 -0
  4. package/dist/bundlers/vite/hot-css-modules.d.ts +1 -1
  5. package/dist/bundlers/vite/processed-css-assets/cleanup.d.ts +0 -1
  6. package/dist/bundlers/vite/processed-css-assets/markers-imports.d.ts +1 -0
  7. package/dist/bundlers/vite/shared/framework-tailwind-root-css.d.ts +19 -0
  8. package/dist/{gulp-Nhszi1kK.cjs → gulp-Bun9iCRE.cjs} +5 -5
  9. package/dist/{gulp-DSi73qr-.js → gulp-BydhuCbr.js} +4 -4
  10. package/dist/gulp.cjs +1 -1
  11. package/dist/gulp.js +1 -1
  12. package/dist/{hmr-timing-Cye_A4mI.cjs → hmr-timing-D607CWrq.cjs} +1 -1
  13. package/dist/{hmr-timing-WgN_3dIC.js → hmr-timing-Gs9P-QtZ.js} +120 -5
  14. package/dist/index.cjs +3 -3
  15. package/dist/index.js +3 -3
  16. package/dist/{pipeline-helpers-DMO0otI8.cjs → pipeline-helpers-BLpoT8fX.cjs} +2 -2
  17. package/dist/rspack.cjs +1 -1
  18. package/dist/rspack.js +1 -1
  19. package/dist/{source-candidate-scan-signature-D4X_VprL.cjs → source-candidate-scan-signature-BGDNJE2r.cjs} +1 -1
  20. package/dist/{source-candidate-scan-signature-ZozKGBbH.js → source-candidate-scan-signature-CdjPWQqv.js} +1 -1
  21. package/dist/{v4-generation-core-CDI6ChiH.cjs → v4-generation-core-BrkM1vCs.cjs} +130 -3
  22. package/dist/{vite-Dafw4jK-.js → vite-DM-U-Ins.js} +129 -130
  23. package/dist/{vite-AB_sUPv9.cjs → vite-n0mRgEcF.cjs} +130 -131
  24. package/dist/vite.cjs +1 -1
  25. package/dist/vite.js +1 -1
  26. package/dist/weapp-tw-css-import-rewrite-loader.cjs +2 -2
  27. package/dist/{webpack-B2ojv_HI.cjs → webpack-Bf8yJwTO.cjs} +4 -4
  28. package/dist/{webpack-Rx3u2_2x.js → webpack-BlUJf8Ru.js} +3 -3
  29. package/dist/webpack.cjs +1 -1
  30. package/dist/webpack.js +1 -1
  31. package/package.json +1 -1
  32. package/dist/bundlers/vite/processed-css-assets/empty-at-rule.d.ts +0 -1
@@ -4,13 +4,13 @@ const require_generator = require("./generator-BE34PYSC.cjs");
4
4
  const require_object = require("./object-C_Vr6_S5.cjs");
5
5
  const require_options = require("./options-hVsoTfwL.cjs");
6
6
  require("./utils-CuKLf1Zv.cjs");
7
- const require_v4_generation_core = require("./v4-generation-core-CDI6ChiH.cjs");
7
+ const require_v4_generation_core = require("./v4-generation-core-BrkM1vCs.cjs");
8
8
  const require_wxml = require("./wxml-DSMNuUaP.cjs");
9
- const require_hmr_timing = require("./hmr-timing-Cye_A4mI.cjs");
9
+ const require_hmr_timing = require("./hmr-timing-D607CWrq.cjs");
10
10
  const require_context = require("./context-OqD_eBxQ.cjs");
11
11
  const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs");
12
12
  const require_style_options = require("./style-options-B_ppaVIg.cjs");
13
- const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-D4X_VprL.cjs");
13
+ const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-BGDNJE2r.cjs");
14
14
  require("./logger-TlKT3xmR.cjs");
15
15
  const require_css_imports = require("./css-imports-DfNC3e6a.cjs");
16
16
  let node_fs = require("node:fs");
@@ -1340,86 +1340,6 @@ const mix = (del = delimiter) => {
1340
1340
  const posix = /* @__PURE__ */ mix(":");
1341
1341
  const win32 = /* @__PURE__ */ mix(";");
1342
1342
  //#endregion
1343
- //#region src/bundlers/vite/processed-css-assets/empty-at-rule.ts
1344
- function isAtRuleNameCharacter(code) {
1345
- return code === 45 || code >= 65 && code <= 90 || code >= 97 && code <= 122;
1346
- }
1347
- function isCssWhitespace(code) {
1348
- return code === 9 || code === 10 || code === 12 || code === 13 || code === 32;
1349
- }
1350
- function findAtRuleBlockStart(css, start) {
1351
- let parenthesisDepth = 0;
1352
- let quote = 0;
1353
- let squareBracketDepth = 0;
1354
- for (let index = start; index < css.length; index++) {
1355
- const code = css.charCodeAt(index);
1356
- if (quote !== 0) {
1357
- if (code === 92) index++;
1358
- else if (code === quote) quote = 0;
1359
- continue;
1360
- }
1361
- if (code === 34 || code === 39) {
1362
- quote = code;
1363
- continue;
1364
- }
1365
- if (code === 92) {
1366
- index++;
1367
- continue;
1368
- }
1369
- if (code === 47 && css.charCodeAt(index + 1) === 42) {
1370
- const commentEnd = css.indexOf("*/", index + 2);
1371
- if (commentEnd < 0) return -1;
1372
- index = commentEnd + 1;
1373
- continue;
1374
- }
1375
- if (code === 40) {
1376
- parenthesisDepth++;
1377
- continue;
1378
- }
1379
- if (code === 41 && parenthesisDepth > 0) {
1380
- parenthesisDepth--;
1381
- continue;
1382
- }
1383
- if (code === 91) {
1384
- squareBracketDepth++;
1385
- continue;
1386
- }
1387
- if (code === 93 && squareBracketDepth > 0) {
1388
- squareBracketDepth--;
1389
- continue;
1390
- }
1391
- if (code === 123 && parenthesisDepth === 0 && squareBracketDepth === 0) return index;
1392
- if ((code === 59 || code === 125) && parenthesisDepth === 0 && squareBracketDepth === 0) return -1;
1393
- }
1394
- return -1;
1395
- }
1396
- function isEmptyAtRuleBody(css, blockStart) {
1397
- for (let index = blockStart + 1; index < css.length; index++) {
1398
- const code = css.charCodeAt(index);
1399
- if (isCssWhitespace(code)) continue;
1400
- if (code === 47 && css.charCodeAt(index + 1) === 42) {
1401
- const commentEnd = css.indexOf("*/", index + 2);
1402
- if (commentEnd < 0) return false;
1403
- index = commentEnd + 1;
1404
- continue;
1405
- }
1406
- return code === 125;
1407
- }
1408
- return false;
1409
- }
1410
- function hasEmptyAtRuleBlockCandidate(css) {
1411
- let searchFrom = 0;
1412
- while (searchFrom < css.length) {
1413
- const atRuleStart = css.indexOf("@", searchFrom);
1414
- if (atRuleStart < 0) return false;
1415
- searchFrom = atRuleStart + 1;
1416
- if (!isAtRuleNameCharacter(css.charCodeAt(searchFrom))) continue;
1417
- const blockStart = findAtRuleBlockStart(css, searchFrom + 1);
1418
- if (blockStart >= 0 && isEmptyAtRuleBody(css, blockStart)) return true;
1419
- }
1420
- return false;
1421
- }
1422
- //#endregion
1423
1343
  //#region src/bundlers/vite/processed-css-assets/style-files.ts
1424
1344
  const CSS_OUTPUT_FILE_RE = /\.(?:css|wxss|acss|ttss|qss|jxss|tyss)(?:$|[?#])/i;
1425
1345
  function isCssOutputFile(file) {
@@ -1695,7 +1615,7 @@ function restoreCssImportAtRules(source, filtered, file) {
1695
1615
  return appendCss$1(missingImports.join("\n"), filtered);
1696
1616
  }
1697
1617
  function removeCommentOnlyAtRules(css) {
1698
- if (!hasEmptyAtRuleBlockCandidate(css)) return css;
1618
+ if (!require_v4_generation_core.hasEmptyAtRuleBlockCandidate(css)) return css;
1699
1619
  try {
1700
1620
  const root = _weapp_tailwindcss_postcss.postcss.parse(css);
1701
1621
  let changed = false;
@@ -1710,21 +1630,6 @@ function removeCommentOnlyAtRules(css) {
1710
1630
  return css;
1711
1631
  }
1712
1632
  }
1713
- function removeEmptyCssAtRules(css) {
1714
- if (!hasEmptyAtRuleBlockCandidate(css)) return css;
1715
- try {
1716
- const root = _weapp_tailwindcss_postcss.postcss.parse(css);
1717
- let removed = 0;
1718
- let passRemoved = 0;
1719
- do {
1720
- passRemoved = (0, _weapp_tailwindcss_postcss.removeEmptyAtRules)(root);
1721
- removed += passRemoved;
1722
- } while (passRemoved > 0);
1723
- return removed > 0 ? root.toString() : css;
1724
- } catch {
1725
- return css;
1726
- }
1727
- }
1728
1633
  function collectImportedBundleCssSources(bundle, importedStyleFiles) {
1729
1634
  if (importedStyleFiles.size === 0) return [];
1730
1635
  const importedFileNames = new Set([...importedStyleFiles].map((file) => posix.posix.basename(file)));
@@ -3045,7 +2950,10 @@ function collectViteProcessedCssAssetResults(bundle, options) {
3045
2950
  const singleMarkerFile = collectSingleViteGeneratedCssMarkerFile(rawSource);
3046
2951
  if (singleMarkerFile && (options.subpackageRoots == null || !isSubpackageOutputFile(file, options.subpackageRoots)) && shouldFilterRootGeneratedCssMarkerForScopedAsset(file, singleMarkerFile, options.resolveViteProcessedCssOutputFile)) nextCss = removeCssCoveredByRootStyleBundleSources(bundle, file, nextCss);
3047
2952
  nextCss = options.transformCss?.(nextCss, file) ?? nextCss;
3048
- if (nextCss !== rawSource) output.source = nextCss;
2953
+ if (nextCss !== rawSource) {
2954
+ output.source = nextCss;
2955
+ options.onAssetWrite?.(file);
2956
+ }
3049
2957
  options.markCssAssetProcessed?.(output, file);
3050
2958
  options.recordCssAssetResult?.(file, nextCss);
3051
2959
  const resolvedOutputFile = resolveViteGeneratedCssMarkerOutputFile(file, singleMarkerFile, existingAssetFiles, options.resolveViteProcessedCssOutputFile);
@@ -3058,6 +2966,7 @@ function collectViteProcessedCssAssetResults(bundle, options) {
3058
2966
  const targetNextCss = appendCss$1(targetRawSource, (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(targetRawSource, nextCss).trim());
3059
2967
  if (targetNextCss !== targetRawSource) {
3060
2968
  targetAsset.source = targetNextCss;
2969
+ options.onAssetWrite?.(resolvedOutputFile);
3061
2970
  options.markCssAssetProcessed?.(targetAsset, resolvedOutputFile);
3062
2971
  options.recordCssAssetResult?.(resolvedOutputFile, targetNextCss);
3063
2972
  }
@@ -4832,9 +4741,10 @@ function resolveViteCssTransformCachePlan(options) {
4832
4741
  const cssRuntimeSignature = createCssRuntimeSignature(options.runtimeSignature, options.scopedGeneratorCandidateSignature);
4833
4742
  const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, options.cssRuntimeAffectingHash);
4834
4743
  const tailwindcssMajorVersion = options.tailwindcssMajorVersion ?? "unknown";
4744
+ const cssCacheKey = `${options.outputFile}:css:${cssRuntimeSignature}:${tailwindcssMajorVersion}`;
4835
4745
  return {
4836
- cssCacheKey: options.outputFile,
4837
- cssHashKey: `${options.outputFile}:css:${cssRuntimeSignature}:${tailwindcssMajorVersion}`,
4746
+ cssCacheKey,
4747
+ cssHashKey: cssCacheKey,
4838
4748
  cssRuntimeSignature,
4839
4749
  cssSharedCacheKey: [
4840
4750
  options.cssShareScope,
@@ -4971,6 +4881,31 @@ function readAssetSource$1(output) {
4971
4881
  function shouldFinalizeMiniProgramCssAsset(source) {
4972
4882
  return source.includes(":hover") || source.includes("does-not-exist") || (0, _weapp_tailwindcss_postcss.hasMiniProgramCssSpecificityPlaceholders)(source);
4973
4883
  }
4884
+ function finalizeMiniProgramCssAssetStructures(bundle, options) {
4885
+ if (options.isWebGeneratorTarget) return 0;
4886
+ const plan = new require_v4_generation_core.AssetEmissionPlan();
4887
+ const writeTargets = /* @__PURE__ */ new Map();
4888
+ let updated = 0;
4889
+ for (const [bundleFile, output] of Object.entries(bundle)) {
4890
+ if (output.type !== "asset") continue;
4891
+ const file = output.fileName || bundleFile;
4892
+ if (!options.cssMatcher(file) || options.files && !options.files.has(file)) continue;
4893
+ const rawSource = readAssetSource$1(output);
4894
+ const outputCss = require_v4_generation_core.finalizeMiniProgramCssStructure(rawSource);
4895
+ if (outputCss === rawSource) continue;
4896
+ plan.write(file, outputCss);
4897
+ writeTargets.set(file, output);
4898
+ options.recordCssAssetResult?.(file, outputCss);
4899
+ options.onUpdate(file, rawSource, outputCss);
4900
+ options.debug?.("remove final empty mini-program css at-rules: %s bytes=%d", file, outputCss.length);
4901
+ updated++;
4902
+ }
4903
+ applyViteAssetEmissionPlan(plan, {
4904
+ bundle,
4905
+ writeTargets
4906
+ });
4907
+ return updated;
4908
+ }
4974
4909
  async function finalizeMiniProgramCssAssets(bundle, options) {
4975
4910
  if (options.isWebGeneratorTarget) return 0;
4976
4911
  const plan = new require_v4_generation_core.AssetEmissionPlan();
@@ -4983,7 +4918,7 @@ async function finalizeMiniProgramCssAssets(bundle, options) {
4983
4918
  const rawSource = readAssetSource$1(output);
4984
4919
  if (rawSource.trim().length === 0) continue;
4985
4920
  if (options.lastCssResultByFile?.has(file)) {
4986
- const outputCss = (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(removeEmptyCssAtRules(rawSource));
4921
+ const outputCss = (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_v4_generation_core.finalizeMiniProgramCssStructure(rawSource));
4987
4922
  if (outputCss !== rawSource) {
4988
4923
  plan.write(file, outputCss);
4989
4924
  writeTargets.set(file, output);
@@ -4995,7 +4930,7 @@ async function finalizeMiniProgramCssAssets(bundle, options) {
4995
4930
  continue;
4996
4931
  }
4997
4932
  if (!shouldFinalizeMiniProgramCssAsset(rawSource)) {
4998
- const structurallyCleanSource = removeEmptyCssAtRules(rawSource);
4933
+ const structurallyCleanSource = require_v4_generation_core.finalizeMiniProgramCssStructure(rawSource);
4999
4934
  if (structurallyCleanSource !== rawSource) {
5000
4935
  plan.write(file, structurallyCleanSource);
5001
4936
  writeTargets.set(file, output);
@@ -5017,7 +4952,7 @@ async function finalizeMiniProgramCssAssets(bundle, options) {
5017
4952
  },
5018
4953
  cssPresetEnv: {}
5019
4954
  });
5020
- const outputCss = (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(removeEmptyCssAtRules(css));
4955
+ const outputCss = (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_v4_generation_core.finalizeMiniProgramCssStructure(css));
5021
4956
  if (outputCss === rawSource) continue;
5022
4957
  plan.write(file, outputCss);
5023
4958
  writeTargets.set(file, output);
@@ -5760,6 +5695,7 @@ function createUniAppXHarmonyApplyExpander(options) {
5760
5695
  function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
5761
5696
  const modules = [];
5762
5697
  const seenModules = /* @__PURE__ */ new Set();
5698
+ const seenModuleIds = /* @__PURE__ */ new Set();
5763
5699
  const root = ctx.server.config?.root ?? node_process.default.cwd();
5764
5700
  const outDir = ctx.server.config?.build?.outDir ? normalizeAbsoluteFilePath(node_path.default.resolve(root, ctx.server.config.build.outDir)) : void 0;
5765
5701
  const isHotSourceStyleModule = (id) => {
@@ -5781,13 +5717,13 @@ function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
5781
5717
  modules.push(mod);
5782
5718
  };
5783
5719
  for (const id of tailwindRootCssModuleIds) {
5784
- const candidates = [
5785
- ctx.server.moduleGraph.getModuleById(id),
5786
- ctx.server.moduleGraph.getModuleById((0, _weapp_tailwindcss_shared.cleanUrl)(id)),
5787
- ...ctx.server.moduleGraph.getModulesByFile(id) ?? [],
5788
- ...ctx.server.moduleGraph.getModulesByFile((0, _weapp_tailwindcss_shared.cleanUrl)(id)) ?? []
5789
- ];
5790
- for (const mod of candidates) collectModule(mod);
5720
+ if (typeof id !== "string" || id.length === 0) continue;
5721
+ for (const moduleId of [id, (0, _weapp_tailwindcss_shared.cleanUrl)(id)]) {
5722
+ if (moduleId.length === 0 || seenModuleIds.has(moduleId)) continue;
5723
+ seenModuleIds.add(moduleId);
5724
+ const candidates = [ctx.server.moduleGraph.getModuleById(moduleId), ...ctx.server.moduleGraph.getModulesByFile(moduleId) ?? []];
5725
+ for (const mod of candidates) collectModule(mod);
5726
+ }
5791
5727
  }
5792
5728
  return modules;
5793
5729
  }
@@ -7806,11 +7742,16 @@ function createViteCssFinalizerOutputPlugin(context) {
7806
7742
  const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
7807
7743
  const outDir = resolvedConfig?.build?.outDir ? node_path.default.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
7808
7744
  const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
7745
+ const finalCssAssetFiles = /* @__PURE__ */ new Set();
7746
+ const trackFinalCssAssetUpdate = (file, original, generated) => {
7747
+ finalCssAssetFiles.add(file);
7748
+ opts.onUpdate(file, original, generated);
7749
+ };
7809
7750
  restoreFrameworkRootMiniProgramImportShellAssets(bundle, {
7810
7751
  debug,
7811
7752
  isWebGeneratorTarget,
7812
7753
  matchesCss: opts.cssMatcher,
7813
- onUpdate: opts.onUpdate,
7754
+ onUpdate: trackFinalCssAssetUpdate,
7814
7755
  recordCssAssetResult,
7815
7756
  shouldKeep: (file, css) => cssPipelineStrategy?.shouldKeepRootMiniProgramStyleAsImportShell?.({
7816
7757
  ...createCssPipelineContext(file),
@@ -7833,6 +7774,7 @@ function createViteCssFinalizerOutputPlugin(context) {
7833
7774
  markCssAssetProcessed,
7834
7775
  recordCssAssetResult,
7835
7776
  recordViteProcessedCssAssetResult,
7777
+ onAssetWrite: (file) => finalCssAssetFiles.add(file),
7836
7778
  resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot, resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) }), Object.keys(bundle)),
7837
7779
  transformCss: (css, file) => finalizeWebCss(css, {
7838
7780
  ...createCssPipelineContext(file),
@@ -7854,7 +7796,7 @@ function createViteCssFinalizerOutputPlugin(context) {
7854
7796
  file
7855
7797
  }, cssPipelineStrategy),
7856
7798
  debug,
7857
- onUpdate: opts.onUpdate
7799
+ onUpdate: trackFinalCssAssetUpdate
7858
7800
  });
7859
7801
  };
7860
7802
  collectViteProcessedCssAssets();
@@ -7907,6 +7849,14 @@ function createViteCssFinalizerOutputPlugin(context) {
7907
7849
  cssMatcher: opts.cssMatcher,
7908
7850
  debug,
7909
7851
  enabled: cssPipelineStrategy?.shouldNormalizeRootMiniProgramImportShell?.(createCssPipelineContext("")) === true,
7852
+ onUpdate: trackFinalCssAssetUpdate,
7853
+ recordCssAssetResult
7854
+ });
7855
+ finalizeMiniProgramCssAssetStructures(bundle, {
7856
+ cssMatcher: opts.cssMatcher,
7857
+ debug,
7858
+ files: finalCssAssetFiles,
7859
+ isWebGeneratorTarget,
7910
7860
  onUpdate: opts.onUpdate,
7911
7861
  recordCssAssetResult
7912
7862
  });
@@ -7922,6 +7872,7 @@ function createViteCssFinalizerOutputPlugin(context) {
7922
7872
  const writeTargets = /* @__PURE__ */ new Map();
7923
7873
  const writeCssAsset = (file, output, source) => {
7924
7874
  emissionPlan.write(file, source);
7875
+ finalCssAssetFiles.add(file);
7925
7876
  writeTargets.set(file, output);
7926
7877
  };
7927
7878
  await Promise.all(entries.map(async ([bundleFile, output]) => {
@@ -8026,6 +7977,14 @@ function createViteCssFinalizerOutputPlugin(context) {
8026
7977
  cssMatcher: opts.cssMatcher,
8027
7978
  debug,
8028
7979
  enabled: cssPipelineStrategy?.shouldNormalizeRootMiniProgramImportShell?.(createCssPipelineContext("")) === true,
7980
+ onUpdate: trackFinalCssAssetUpdate,
7981
+ recordCssAssetResult
7982
+ });
7983
+ finalizeMiniProgramCssAssetStructures(bundle, {
7984
+ cssMatcher: opts.cssMatcher,
7985
+ debug,
7986
+ files: finalCssAssetFiles,
7987
+ isWebGeneratorTarget,
8029
7988
  onUpdate: opts.onUpdate,
8030
7989
  recordCssAssetResult
8031
7990
  });
@@ -9055,20 +9014,30 @@ function createFrameworkSourceCandidatesPlugin(options) {
9055
9014
  options.hmrCandidateState.apply(options.hmrCandidateState.createChange(file, sourceCandidateChange, { runtimeAffecting: options.sourceScanSession.isDependency(file) }));
9056
9015
  return;
9057
9016
  }
9058
- await options.sourceScanSession.syncChangedFile(id);
9017
+ const changedSource = options.shouldOwnTailwindGeneration && require_v4_generation_core.isSourceCandidateRequest(id) && isCSSRequest(id) ? await (0, node_fs_promises.readFile)((0, _weapp_tailwindcss_shared.cleanUrl)(id), "utf8").catch(() => void 0) : void 0;
9018
+ if (typeof changedSource === "string") {
9019
+ options.rememberOriginalCssLayerSource(id, changedSource);
9020
+ await options.refreshTailwindRootCssSource(id, changedSource);
9021
+ }
9022
+ await options.sourceScanSession.syncChangedFile(id, changedSource);
9059
9023
  }, { emit: false });
9060
9024
  },
9061
9025
  async handleHotUpdate(ctx) {
9062
9026
  require_v4_generation_core.recordCompilationDependencyChanges(options.runtimeState, require_v4_generation_core.createCompilationDependencyChanges([node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(ctx.file))]));
9063
9027
  return options.hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
9064
9028
  const isSourceCandidateHotUpdate = options.shouldOwnTailwindGeneration && require_v4_generation_core.isSourceCandidateRequest(ctx.file);
9065
- if (isSourceCandidateHotUpdate && require_v4_generation_core.isSourceStyleRequest(ctx.file)) for (const mod of ctx.modules) {
9066
- options.rememberTailwindRootCssModule(mod.id);
9067
- options.rememberTailwindRootCssModule(mod.url);
9068
- options.rememberTailwindRootCssModule(mod.file);
9029
+ if (isSourceCandidateHotUpdate && require_v4_generation_core.isSourceStyleRequest(ctx.file)) {
9030
+ for (const mod of ctx.modules) for (const id of [
9031
+ mod.id,
9032
+ mod.url,
9033
+ mod.file
9034
+ ]) if (typeof id === "string" && id.length > 0) options.rememberTailwindRootCssModule(id);
9069
9035
  }
9070
9036
  const hotSource = isSourceCandidateHotUpdate && typeof ctx.read === "function" ? await ctx.read().catch(() => void 0) : void 0;
9071
- if (typeof hotSource === "string" && isCSSRequest(ctx.file)) options.rememberOriginalCssLayerSource(ctx.file, hotSource);
9037
+ if (typeof hotSource === "string" && isCSSRequest(ctx.file)) {
9038
+ options.rememberOriginalCssLayerSource(ctx.file, hotSource);
9039
+ await options.refreshTailwindRootCssSource(ctx.file, hotSource);
9040
+ }
9072
9041
  const sourceCandidateChange = await options.sourceScanSession.syncChangedFile(ctx.file, hotSource);
9073
9042
  const isWebLikeHotUpdate = options.isCurrentWebLikeStylePlatform();
9074
9043
  let canUseHmrCandidateAppend = false;
@@ -9276,6 +9245,39 @@ function createFrameworkSourceScanSession(options) {
9276
9245
  };
9277
9246
  }
9278
9247
  //#endregion
9248
+ //#region src/bundlers/vite/shared/framework-tailwind-root-css.ts
9249
+ function createFrameworkTailwindRootCss(options) {
9250
+ const hotSourceByFile = /* @__PURE__ */ new Map();
9251
+ const moduleIds = /* @__PURE__ */ new Set();
9252
+ const normalizeSourceFile = (id) => node_path.default.normalize(node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(id)));
9253
+ const rememberModule = (id) => {
9254
+ if (!options.shouldOwnTailwindGeneration || typeof id !== "string" || id.length === 0) return;
9255
+ moduleIds.add(id);
9256
+ const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
9257
+ if (require_v4_generation_core.isSourceStyleRequest(cleanId)) moduleIds.add(cleanId);
9258
+ };
9259
+ const register = async (id, code) => {
9260
+ rememberModule(id);
9261
+ const hotSource = hotSourceByFile.get(normalizeSourceFile(id));
9262
+ await options.registerAutoCssSource(id, hotSource ?? code);
9263
+ };
9264
+ const refreshSource = async (id, code) => {
9265
+ const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
9266
+ if (!moduleIds.has(id) && !moduleIds.has(file) && !require_generator.hasTailwindRootDirectives(code, { importFallback: options.getImportFallback() })) return;
9267
+ hotSourceByFile.set(normalizeSourceFile(id), code);
9268
+ await register(id, code);
9269
+ options.sourceScanSession.invalidate();
9270
+ await options.refreshRuntimeState(true);
9271
+ await options.sourceScanSession.sync({ force: true });
9272
+ };
9273
+ return {
9274
+ refreshSource,
9275
+ register,
9276
+ rememberModule,
9277
+ moduleIds
9278
+ };
9279
+ }
9280
+ //#endregion
9279
9281
  //#region src/bundlers/vite/shared/create-framework-plugins-runtime.ts
9280
9282
  const debug = require_wxml.createDebug();
9281
9283
  const weappTailwindcssPackageDir = require_source_candidate_scan_signature.resolvePackageDir("weapp-tailwindcss");
@@ -9500,7 +9502,6 @@ function createViteFrameworkPlugins$1(options = {}, frameworkBranch) {
9500
9502
  debug,
9501
9503
  getSourceCandidateSource: (file) => sourceCandidateCollector.source(file)
9502
9504
  });
9503
- const tailwindRootCssModuleIds = /* @__PURE__ */ new Set();
9504
9505
  const { runtimeState, refreshRuntimeState, ensureRuntimeClassSet, ensureBundleRuntimeClassSet } = createViteRuntimeClassSet({
9505
9506
  opts,
9506
9507
  initialTailwindRuntime,
@@ -9571,6 +9572,13 @@ function createViteFrameworkPlugins$1(options = {}, frameworkBranch) {
9571
9572
  shouldOwnTailwindGeneration,
9572
9573
  sourceCandidateCollector
9573
9574
  });
9575
+ const { moduleIds: tailwindRootCssModuleIds, refreshSource: refreshTailwindRootCssSource, register: registerTailwindRootCss, rememberModule: rememberTailwindRootCssModule } = createFrameworkTailwindRootCss({
9576
+ getImportFallback: () => resolveCurrentGeneratorOptions().importFallback,
9577
+ refreshRuntimeState,
9578
+ registerAutoCssSource,
9579
+ shouldOwnTailwindGeneration,
9580
+ sourceScanSession
9581
+ });
9574
9582
  const recordCssAssetResult = (file, css) => {
9575
9583
  touchMapEntry(cleanGeneratedCssByFile, normalizeVitePersistentCacheKey(file), css);
9576
9584
  };
@@ -9597,16 +9605,6 @@ function createViteFrameworkPlugins$1(options = {}, frameworkBranch) {
9597
9605
  };
9598
9606
  const normalizeViteProcessedCssFile = (file) => node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file));
9599
9607
  const markViteProcessedCssSource = processedCssRegistry.markSource;
9600
- const rememberTailwindRootCssModule = (id) => {
9601
- if (!shouldOwnTailwindGeneration) return;
9602
- tailwindRootCssModuleIds.add(id);
9603
- const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
9604
- if (require_v4_generation_core.isSourceStyleRequest(cleanId)) tailwindRootCssModuleIds.add(cleanId);
9605
- };
9606
- const registerTailwindRootCss = async (id, code) => {
9607
- rememberTailwindRootCssModule(id);
9608
- await registerAutoCssSource(id, code);
9609
- };
9610
9608
  const isUniViteProject = () => {
9611
9609
  return resolvedConfig?.plugins?.some((plugin) => plugin.name.includes("uni")) ?? false;
9612
9610
  };
@@ -9948,6 +9946,7 @@ ${tracedCss}`;
9948
9946
  prepareTailwindGeneration,
9949
9947
  preGenerateBundleHook,
9950
9948
  refreshRuntimeStateForAutoCssSources,
9949
+ refreshTailwindRootCssSource,
9951
9950
  rememberOriginalCssLayerSource,
9952
9951
  rememberTailwindRootCssModule,
9953
9952
  resolveCurrentGeneratorBranch,
package/dist/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-AB_sUPv9.cjs");
2
+ const require_vite = require("./vite-n0mRgEcF.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-Dafw4jK-.js";
1
+ import { t as WeappTailwindcss } from "./vite-DM-U-Ins.js";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };
@@ -5,10 +5,10 @@ Object.defineProperties(exports, {
5
5
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
6
6
  const require_generator = require("./generator-BE34PYSC.cjs");
7
7
  const require_options = require("./options-hVsoTfwL.cjs");
8
- const require_v4_generation_core = require("./v4-generation-core-CDI6ChiH.cjs");
8
+ const require_v4_generation_core = require("./v4-generation-core-BrkM1vCs.cjs");
9
9
  const require_style_options = require("./style-options-B_ppaVIg.cjs");
10
10
  const require_css_imports = require("./css-imports-DfNC3e6a.cjs");
11
- const require_pipeline_helpers = require("./pipeline-helpers-DMO0otI8.cjs");
11
+ const require_pipeline_helpers = require("./pipeline-helpers-BLpoT8fX.cjs");
12
12
  const require_runtime_registry = require("./runtime-registry-Y7NrD2WH.cjs");
13
13
  const require_watch_dependencies = require("./watch-dependencies-BZGubvuJ.cjs");
14
14
  let node_path = require("node:path");
@@ -3,14 +3,14 @@ const require_generator = require("./generator-BE34PYSC.cjs");
3
3
  const require_object = require("./object-C_Vr6_S5.cjs");
4
4
  const require_options = require("./options-hVsoTfwL.cjs");
5
5
  const require_utils = require("./utils-CuKLf1Zv.cjs");
6
- const require_v4_generation_core = require("./v4-generation-core-CDI6ChiH.cjs");
6
+ const require_v4_generation_core = require("./v4-generation-core-BrkM1vCs.cjs");
7
7
  const require_wxml = require("./wxml-DSMNuUaP.cjs");
8
- const require_hmr_timing = require("./hmr-timing-Cye_A4mI.cjs");
8
+ const require_hmr_timing = require("./hmr-timing-D607CWrq.cjs");
9
9
  const require_context = require("./context-OqD_eBxQ.cjs");
10
10
  const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs");
11
11
  const require_style_options = require("./style-options-B_ppaVIg.cjs");
12
- const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-D4X_VprL.cjs");
13
- const require_pipeline_helpers = require("./pipeline-helpers-DMO0otI8.cjs");
12
+ const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-BGDNJE2r.cjs");
13
+ const require_pipeline_helpers = require("./pipeline-helpers-BLpoT8fX.cjs");
14
14
  const require_css_loader_runtime = require("./css-loader-runtime-CSv0lKqV.cjs");
15
15
  const require_runtime_registry = require("./runtime-registry-Y7NrD2WH.cjs");
16
16
  let node_fs = require("node:fs");
@@ -2,11 +2,11 @@ import { $ as hasTailwindSourceDirectives, B as stripMiniProgramCssSpecificityPl
2
2
  import { n as _defineProperty } from "./object-Bvy6-w9r.js";
3
3
  import { _ as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, p as resolveSourceScanEntries } from "./tailwindcss-CTpCc_nd.js";
4
4
  import { r as getGroupedEntries } from "./utils-MVwpU07P.js";
5
- import { $ as createCompilationDependencyChanges, A as isCssSourceTraceEnabled, B as createRuntimeCompilationAffectingSignature, D as annotateCssSourceTrace, E as stripBundlerGeneratedCssMarkers, F as isPureLocalCssImportWrapper, G as createRuntimeAffectingSourceSignature, K as disposeCompilerOwner, M as createRuntimeClassSetManager, N as collectStrictEscapedRuntimeCandidates, O as createCssSourceTraceCacheSignature, P as createEscapeFragments, Q as recordCompilationDependencyChanges, R as finalizeCompilerShadowRun, S as stripRequestQuery, U as resetRuntimeCompilationBuildState, V as createRuntimeCompilationBuildState, W as updateRuntimeCompilationBuildState, X as getCompilationScopeDependencyRevision, Y as AssetEmissionPlan, _ as collectFrameworkPostcssOptionsFromLoaderEntries, b as hasMiniProgramTailwindV4PreflightReset, c as pushConcurrentTaskFactories, g as captureResolvedFrameworkPostcssOptions, it as resolveSourceCandidateScanFiles, j as processCachedTask, k as createCssTokenSourceMap, l as resolveTaskConcurrency, m as removeGeneratedSelectorCompatCss, n as emitHmrTiming, nt as isSourceCandidateRequest, p as scoreTailwindV4CssSourceFileMatch, q as beginCompilerShadowRun, r as generateTailwindV4Css, s as collectRawSourceClassSelectors, tt as createSourceCandidateStore, v as createCssSourceOrderAppend, w as hasBundlerGeneratedCssMarker, x as isSourceStyleRequest, z as buildRuntimeCompilationSnapshot } from "./hmr-timing-WgN_3dIC.js";
5
+ import { A as createCssSourceTraceCacheSignature, B as finalizeCompilerShadowRun, D as finalizeMiniProgramCssStructure, E as stripBundlerGeneratedCssMarkers, F as collectStrictEscapedRuntimeCandidates, G as resetRuntimeCompilationBuildState, H as createRuntimeCompilationAffectingSignature, I as createEscapeFragments, J as disposeCompilerOwner, K as updateRuntimeCompilationBuildState, L as isPureLocalCssImportWrapper, M as isCssSourceTraceEnabled, N as processCachedTask, P as createRuntimeClassSetManager, Q as getCompilationScopeDependencyRevision, S as stripRequestQuery, U as createRuntimeCompilationBuildState, V as buildRuntimeCompilationSnapshot, Y as beginCompilerShadowRun, Z as AssetEmissionPlan, _ as collectFrameworkPostcssOptionsFromLoaderEntries, b as hasMiniProgramTailwindV4PreflightReset, c as pushConcurrentTaskFactories, et as recordCompilationDependencyChanges, g as captureResolvedFrameworkPostcssOptions, it as isSourceCandidateRequest, j as createCssTokenSourceMap, k as annotateCssSourceTrace, l as resolveTaskConcurrency, m as removeGeneratedSelectorCompatCss, n as emitHmrTiming, ot as resolveSourceCandidateScanFiles, p as scoreTailwindV4CssSourceFileMatch, q as createRuntimeAffectingSourceSignature, r as generateTailwindV4Css, rt as createSourceCandidateStore, s as collectRawSourceClassSelectors, tt as createCompilationDependencyChanges, v as createCssSourceOrderAppend, w as hasBundlerGeneratedCssMarker, x as isSourceStyleRequest } from "./hmr-timing-Gs9P-QtZ.js";
6
6
  import { h as createDebug, v as md5Hash } from "./wxml-IBzZSaQC.js";
7
7
  import { d as refreshTailwindRuntimeState, i as pluginName, l as createTailwindRuntimeReadyPromise, n as normalizeStyleHandlerMajorVersion, o as shouldSkipJsTransform, r as resolveStyleOptionsFromContext, t as getCompilerContext, u as ensureRuntimeClassSet } from "./context-YAvTyPV2.js";
8
8
  import { getDefaultCssPreflight } from "./defaults.js";
9
- import { S as resolveWebpackFrameworkProfile, a as createCandidateSignature, b as webpackStyleInjectorDelegates, d as classifyRuntimeEntry, f as resolvePackageDir, g as toAbsoluteOutputPath, h as resolveOutputSpecifier, p as resolvePluginDisabledState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, v as createBuiltinWebpackStyleInjectorPlugin } from "./source-candidate-scan-signature-ZozKGBbH.js";
9
+ import { S as resolveWebpackFrameworkProfile, a as createCandidateSignature, b as webpackStyleInjectorDelegates, d as classifyRuntimeEntry, f as resolvePackageDir, g as toAbsoluteOutputPath, h as resolveOutputSpecifier, p as resolvePluginDisabledState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, v as createBuiltinWebpackStyleInjectorPlugin } from "./source-candidate-scan-signature-CdjPWQqv.js";
10
10
  import Module, { createRequire } from "node:module";
11
11
  import fs from "node:fs";
12
12
  import path from "node:path";
@@ -662,7 +662,7 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
662
662
  function finalizeWebpackCssAssetOutputSource(source, compilerOptions, isWebGeneratorTarget) {
663
663
  if (isWebGeneratorTarget) return source;
664
664
  const styleOptions = resolveStyleOptionsFromContext(compilerOptions);
665
- return stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(dedupeCoveredCssRules(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass));
665
+ return finalizeMiniProgramCssStructure(stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(dedupeCoveredCssRules(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass)));
666
666
  }
667
667
  function collectWebpackJsRuntimeCandidatesFromAssets(options) {
668
668
  if (options.isWebGeneratorTarget) return;
package/dist/webpack.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_webpack = require("./webpack-B2ojv_HI.cjs");
2
+ const require_webpack = require("./webpack-Bf8yJwTO.cjs");
3
3
  exports.WeappTailwindcss = require_webpack.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_webpack.WeappTailwindcss;
5
5
  exports.weappTailwindcssPackageDir = require_webpack.weappTailwindcssPackageDir;
package/dist/webpack.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-Rx3u2_2x.js";
1
+ import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-BlUJf8Ru.js";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss, weappTailwindcssPackageDir };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "weapp-tailwindcss",
3
3
  "type": "module",
4
- "version": "5.2.5",
4
+ "version": "5.2.7",
5
5
  "description": "把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!",
6
6
  "author": "ice breaker <1324318532@qq.com>",
7
7
  "license": "MIT",
@@ -1 +0,0 @@
1
- export declare function hasEmptyAtRuleBlockCandidate(css: string): boolean;