weapp-tailwindcss 5.0.13 → 5.1.0

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 (178) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/auto-Ba6hDrse.mjs +13 -0
  4. package/dist/auto-DtU6f3X6.js +18 -0
  5. package/dist/bundlers/shared/css-cleanup.d.ts +1 -1
  6. package/dist/bundlers/shared/generator-css/directives.d.ts +2 -1
  7. package/dist/bundlers/shared/generator-css/generation-helpers.d.ts +21 -9
  8. package/dist/bundlers/shared/generator-css/local-imports.d.ts +3 -0
  9. package/dist/bundlers/shared/generator-css/source-resolver/apply-reference.d.ts +3 -0
  10. package/dist/bundlers/shared/generator-css/source-resolver/matching.d.ts +0 -1
  11. package/dist/bundlers/shared/generator-css/source-resolver/metadata.d.ts +1 -1
  12. package/dist/bundlers/shared/generator-css/source-resolver/types.d.ts +3 -3
  13. package/dist/bundlers/shared/generator-css/source-resolver.d.ts +1 -1
  14. package/dist/bundlers/shared/generator-css/types.d.ts +13 -1
  15. package/dist/bundlers/shared/generator-css/user-css.d.ts +5 -1
  16. package/dist/bundlers/shared/run-tasks.d.ts +1 -0
  17. package/dist/bundlers/shared/v4-generation-core.d.ts +11 -0
  18. package/dist/bundlers/vite/css-finalizer.d.ts +1 -1
  19. package/dist/bundlers/vite/css-memory.d.ts +10 -0
  20. package/dist/bundlers/vite/generate-bundle/candidates.d.ts +0 -1
  21. package/dist/bundlers/vite/generate-bundle/configured-css-sources.d.ts +1 -1
  22. package/dist/bundlers/vite/generate-bundle/css-output.d.ts +1 -0
  23. package/dist/bundlers/vite/generate-bundle/env-flags.d.ts +0 -1
  24. package/dist/bundlers/vite/generate-bundle/final-css-assets.d.ts +12 -0
  25. package/dist/bundlers/vite/generate-bundle/finalize.d.ts +5 -0
  26. package/dist/bundlers/vite/generate-bundle/memory-debug.d.ts +21 -18
  27. package/dist/bundlers/vite/generate-bundle/sfc-style-source.d.ts +3 -1
  28. package/dist/bundlers/vite/generate-bundle/source-candidate-scope.d.ts +1 -0
  29. package/dist/bundlers/vite/generate-bundle/types.d.ts +1 -1
  30. package/dist/bundlers/vite/generate-bundle/vite-css-cache.d.ts +1 -1
  31. package/dist/bundlers/vite/generate-bundle.d.ts +3 -1
  32. package/dist/bundlers/vite/incremental-runtime-class-set/escaped-candidates.d.ts +1 -0
  33. package/dist/bundlers/vite/incremental-runtime-class-set.d.ts +3 -3
  34. package/dist/bundlers/vite/rewrite-css-imports.d.ts +1 -0
  35. package/dist/bundlers/vite/runtime-class-set.d.ts +5 -5
  36. package/dist/bundlers/vite/source-candidates/script.d.ts +1 -7
  37. package/dist/bundlers/vite/source-candidates.d.ts +9 -2
  38. package/dist/bundlers/vite/source-scan/css-entries.d.ts +2 -6
  39. package/dist/bundlers/vite/source-scan.d.ts +2 -2
  40. package/dist/bundlers/vite/uni-app-x-css-options.d.ts +1 -1
  41. package/dist/bundlers/vite/utils.d.ts +1 -0
  42. package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +24 -0
  43. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/helpers.d.ts +48 -11
  44. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/source-candidate-cache.d.ts +28 -0
  45. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.d.ts +4 -2
  46. package/dist/bundlers/webpack/loaders/runtime-registry.d.ts +10 -1
  47. package/dist/bundlers/webpack/shared/css-loader-runtime.d.ts +1 -0
  48. package/dist/cache/index.d.ts +1 -0
  49. package/dist/cli/mount-options.d.ts +2 -2
  50. package/dist/cli.js +124 -437
  51. package/dist/cli.mjs +120 -433
  52. package/dist/context/index.d.ts +3 -3
  53. package/dist/context/style-options.d.ts +4 -1
  54. package/dist/context/tailwindcss.d.ts +1 -1
  55. package/dist/{precheck-B0Z8yW7E.js → context-BHxLe743.js} +391 -153
  56. package/dist/{precheck-CRI90iL1.mjs → context-Mbzkek1q.mjs} +368 -137
  57. package/dist/core.js +15 -12
  58. package/dist/core.mjs +10 -7
  59. package/dist/css-macro.js +1 -1
  60. package/dist/css-macro.mjs +1 -1
  61. package/dist/{defaults-C_J_kBpw.js → defaults-CVcKbXBG.js} +4 -15
  62. package/dist/{defaults-Bqx18S1f.mjs → defaults-ZElj1zKc.mjs} +5 -10
  63. package/dist/defaults.d.ts +1 -7
  64. package/dist/defaults.js +1 -2
  65. package/dist/defaults.mjs +2 -2
  66. package/dist/generator/index.d.ts +6 -7
  67. package/dist/generator/options.d.ts +3 -3
  68. package/dist/generator/types.d.ts +9 -10
  69. package/dist/generator-9rUz4Hcb.js +170 -0
  70. package/dist/generator-Dc4qaPmT.mjs +123 -0
  71. package/dist/generator.js +10 -16
  72. package/dist/generator.mjs +3 -3
  73. package/dist/{gulp-XT8Jc7lH.js → gulp-B_sdP6dx.js} +47 -87
  74. package/dist/{gulp-DfOQERcV.mjs → gulp-uM36oIJs.mjs} +40 -80
  75. package/dist/gulp.js +1 -1
  76. package/dist/gulp.mjs +1 -1
  77. package/dist/{hmr-timing-DQIP_8qP.mjs → hmr-timing-BXMLsF4b.mjs} +1145 -842
  78. package/dist/{hmr-timing-BMftW7Us.js → hmr-timing-CogqkFaF.js} +1262 -881
  79. package/dist/index.js +4 -4
  80. package/dist/index.mjs +4 -4
  81. package/dist/js/fast-path/oxc.d.ts +4 -0
  82. package/dist/js/precheck.d.ts +1 -0
  83. package/dist/postcss.js +3 -4
  84. package/dist/postcss.mjs +2 -3
  85. package/dist/presets.js +9 -19
  86. package/dist/presets.mjs +8 -18
  87. package/dist/runtime-branch/create-branch.d.ts +2 -0
  88. package/dist/runtime-branch/generator-target-env.d.ts +4 -0
  89. package/dist/runtime-branch/index.d.ts +6 -0
  90. package/dist/runtime-branch/mini-program.d.ts +2 -0
  91. package/dist/runtime-branch/native-app.d.ts +2 -0
  92. package/dist/runtime-branch/platform.d.ts +6 -0
  93. package/dist/runtime-branch/tailwind-version.d.ts +2 -0
  94. package/dist/runtime-branch/types.d.ts +37 -0
  95. package/dist/runtime-branch/web.d.ts +2 -0
  96. package/dist/runtime-branch.d.ts +1 -0
  97. package/dist/{bundle-state-CKWeTEhv.js → source-candidate-scan-signature-2ybpptAK.js} +261 -19
  98. package/dist/{bundle-state-zQ2MrDdi.mjs → source-candidate-scan-signature-Cvb5z1ha.mjs} +187 -17
  99. package/dist/tailwindcss/candidates.d.ts +7 -0
  100. package/dist/tailwindcss/index.d.ts +2 -2
  101. package/dist/tailwindcss/runtime/cache.d.ts +6 -6
  102. package/dist/tailwindcss/runtime-factory.d.ts +12 -0
  103. package/dist/tailwindcss/runtime-options.d.ts +8 -0
  104. package/dist/tailwindcss/runtime-types.d.ts +86 -0
  105. package/dist/tailwindcss/runtime.d.ts +6 -6
  106. package/dist/tailwindcss/source-scan.d.ts +1 -1
  107. package/dist/tailwindcss/targets.d.ts +2 -2
  108. package/dist/tailwindcss/v4/config.d.ts +3 -3
  109. package/dist/tailwindcss/v4/css-entries.d.ts +1 -0
  110. package/dist/tailwindcss/v4/css-sources.d.ts +4 -2
  111. package/dist/tailwindcss/v4/index.d.ts +1 -1
  112. package/dist/tailwindcss/v4/multi-runtime.d.ts +2 -0
  113. package/dist/tailwindcss/v4/runtime-factory.d.ts +15 -0
  114. package/dist/tailwindcss/v4/runtime-options.d.ts +2 -0
  115. package/dist/tailwindcss/v4-engine/design-system.d.ts +1 -1
  116. package/dist/tailwindcss/v4-engine/generator/css-compat.d.ts +1 -1
  117. package/dist/tailwindcss/v4-engine/generator/rpx-candidates.d.ts +3 -3
  118. package/dist/tailwindcss/v4-engine/generator/scan-sources.d.ts +1 -1
  119. package/dist/tailwindcss/v4-engine/generator.d.ts +10 -3
  120. package/dist/tailwindcss/v4-engine/index.d.ts +1 -1
  121. package/dist/tailwindcss/v4-engine/miniprogram.d.ts +7 -1
  122. package/dist/tailwindcss/v4-engine/source.d.ts +23 -6
  123. package/dist/tailwindcss/v4-engine/types.d.ts +8 -9
  124. package/dist/tailwindcss/version.d.ts +1 -1
  125. package/dist/tailwindcss-DHIYcqXT.js +1523 -0
  126. package/dist/tailwindcss-wyUHrfil.mjs +1418 -0
  127. package/dist/{transform-YmrmxuF3.js → transform-CQVOgmzM.js} +17 -17
  128. package/dist/{transform-DfcEjsZF.mjs → transform-tExdt40m.mjs} +2 -2
  129. package/dist/typedoc.export.d.ts +1 -1
  130. package/dist/types/index.d.ts +16 -17
  131. package/dist/types/shared.d.ts +1 -1
  132. package/dist/types/{typedoc-tailwindcss-patch.d.ts → typedoc-tailwindcss-runtime.d.ts} +4 -10
  133. package/dist/types/user-defined-options/general.d.ts +5 -3
  134. package/dist/types/user-defined-options/important.d.ts +2 -2
  135. package/dist/uni-app-x/style-asset.d.ts +1 -0
  136. package/dist/v4-engine-CF9zt4Cw.mjs +2396 -0
  137. package/dist/v4-engine-D4ubP7N5.js +2778 -0
  138. package/dist/{vite-CXHVsHmX.js → vite-CP0ylSxZ.js} +1081 -542
  139. package/dist/{vite-DjI09vVN.mjs → vite-CPO83EhA.mjs} +916 -376
  140. package/dist/vite.js +1 -1
  141. package/dist/vite.mjs +1 -1
  142. package/dist/weapp-tw-css-import-rewrite-loader.js +5350 -4165
  143. package/dist/weapp-tw-runtime-classset-loader.js +15 -4
  144. package/dist/webpack-Bsek8VhR.js +2094 -0
  145. package/dist/webpack-BzqhJ8yK.mjs +2082 -0
  146. package/dist/webpack.js +1 -1
  147. package/dist/webpack.mjs +1 -1
  148. package/package.json +4 -5
  149. package/dist/auto-CTp6wE5a.js +0 -33
  150. package/dist/auto-Cl8_hsG6.mjs +0 -22
  151. package/dist/bundlers/vite/incremental-runtime-class-set/v3-candidates.d.ts +0 -13
  152. package/dist/bundlers/vite/source-candidates/tailwind-v3-default-extractor.d.ts +0 -1
  153. package/dist/context/tailwindcss/rax.d.ts +0 -2
  154. package/dist/generator-CzpArpCL.js +0 -92
  155. package/dist/generator-ITLd7PTl.mjs +0 -67
  156. package/dist/tailwindcss/patcher-options.d.ts +0 -8
  157. package/dist/tailwindcss/patcher.d.ts +0 -12
  158. package/dist/tailwindcss/runtime-patch.d.ts +0 -5
  159. package/dist/tailwindcss/v3-engine/generator/cache-key.d.ts +0 -3
  160. package/dist/tailwindcss/v3-engine/generator/content.d.ts +0 -10
  161. package/dist/tailwindcss/v3-engine/generator/runtime-ready.d.ts +0 -2
  162. package/dist/tailwindcss/v3-engine/generator.d.ts +0 -19
  163. package/dist/tailwindcss/v3-engine/index.d.ts +0 -4
  164. package/dist/tailwindcss/v3-engine/miniprogram.d.ts +0 -4
  165. package/dist/tailwindcss/v3-engine/source.d.ts +0 -5
  166. package/dist/tailwindcss/v3-engine/types.d.ts +0 -61
  167. package/dist/tailwindcss/v4/multi-patcher.d.ts +0 -2
  168. package/dist/tailwindcss/v4/patcher-options.d.ts +0 -2
  169. package/dist/tailwindcss/v4/patcher.d.ts +0 -15
  170. package/dist/tailwindcss/v4-engine/tailwind-v3-compatibility.d.ts +0 -1
  171. package/dist/tailwindcss/v4-engine/tailwind-v3-default-colors.d.ts +0 -1
  172. package/dist/tailwindcss-DTq3uYBK.mjs +0 -556
  173. package/dist/tailwindcss-DZEwT3C_.js +0 -613
  174. package/dist/v3-engine-2rrgylhn.js +0 -4686
  175. package/dist/v3-engine-C6eJ0YzK.mjs +0 -4272
  176. package/dist/webpack-BcPpnT90.mjs +0 -1184
  177. package/dist/webpack-CfkUkMXG.js +0 -1196
  178. /package/dist/tailwindcss/{patcher-resolve.d.ts → runtime-resolve.d.ts} +0 -0
@@ -0,0 +1,2082 @@
1
+ import { A as removeTailwindSourceDirectives, C as hasTailwindRootDirectives, E as normalizeTailwindConfigDirectives, F as hasTailwindGeneratedCss, I as hasTailwindGeneratedCssMarkers, K as getTailwindV4IncrementalGenerateCacheStats, T as hasTailwindSourceDirectives, _ as resolveTailwindcssOptions, k as parseImportRequest, lt as inferGeneratorTargetFromEnv, o as hasConfiguredTailwindV4CssRoots, rt as resolveSourceScanPath, s as upsertTailwindV4CssSource, x as hasTailwindApplyDirective } from "./v4-engine-CF9zt4Cw.mjs";
2
+ import { o as resolveRuntimeBranch } from "./generator-Dc4qaPmT.mjs";
3
+ import { r as getGroupedEntries } from "./utils-DodxWHGz.mjs";
4
+ import { S as md5Hash, b as refreshTailwindRuntimeState, c as shouldSkipJsTransform, d as _defineProperty, n as resolveStyleOptionsFromContext, r as pluginName, t as getCompilerContext, v as createTailwindRuntimeReadyPromise, x as createDebug, y as ensureRuntimeClassSet } from "./context-Mbzkek1q.mjs";
5
+ import { l as getRuntimeClassSetSignature, p as resolveViteSourceScanEntries } from "./tailwindcss-wyUHrfil.mjs";
6
+ import { A as stripMiniProgramCssSpecificityPlaceholders, C as stripUnmatchedTailwindSourceMediaCloseFragments, D as finalizeMiniProgramCss, E as hasMiniProgramTailwindV4PreflightReset, F as processCachedTask, M as createCssSourceTraceCacheSignature, N as createCssTokenSourceMap, P as isCssSourceTraceEnabled, S as stripTailwindSourceMediaFragments, T as createCssSourceOrderAppend, _ as isPureLocalCssImportWrapper, a as isSourceCandidateRequest, b as removeMiniProgramHoverSelectors, c as collectStrictEscapedRuntimeCandidates, f as pushConcurrentTaskFactories, i as createSourceCandidateStore, j as annotateCssSourceTrace, k as pruneMiniProgramGeneratedCss, l as createEscapeFragments, n as emitHmrTiming, o as resolveSourceCandidateScanFiles, p as resolveTaskConcurrency, s as createBundleRuntimeClassSetManager, w as scoreTailwindV4CssSourceFileMatch, x as removeTailwindV4GeneratorAtRules } from "./hmr-timing-BXMLsF4b.mjs";
7
+ import { A as isSourceStyleRequest, C as resolvePluginDisabledState, N as resolveOutputSpecifier, P as toAbsoluteOutputPath, S as resolvePackageDir, _ as generateTailwindV4Css, d as classifyBundleEntry, f as createBundleBuildState, i as createCandidateSignature, j as stripRequestQuery, m as createRuntimeAffectingSourceSignature, p as updateBundleBuildState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, x as stripBundlerGeneratedCssMarkers, y as hasBundlerGeneratedCssMarker } from "./source-candidate-scan-signature-Cvb5z1ha.mjs";
8
+ import Module, { createRequire } from "node:module";
9
+ import fs from "node:fs";
10
+ import path from "node:path";
11
+ import process from "node:process";
12
+ import { filterExistingCssRules, postcss } from "@weapp-tailwindcss/postcss";
13
+ import { readFile, stat } from "node:fs/promises";
14
+ import micromatch from "micromatch";
15
+ import { MappingChars2String } from "@weapp-core/escape";
16
+ import { fileURLToPath } from "node:url";
17
+ //#region src/shared/tailwindcss-css-redirect.ts
18
+ const moduleWithMutableResolve = Module;
19
+ const patched = /* @__PURE__ */ new WeakSet();
20
+ function installTailwindcssCssRedirect(pkgDir) {
21
+ const target = path.join(pkgDir, "index.css");
22
+ const original = moduleWithMutableResolve._resolveFilename;
23
+ if (patched.has(original)) return;
24
+ const replacements = new Set(["tailwindcss", "tailwindcss$"]);
25
+ const resolveTailwindcssCss = (request, parent, isMain, options) => {
26
+ if (replacements.has(request)) return target;
27
+ if (request.startsWith("tailwindcss/")) return path.join(pkgDir, request.slice(12));
28
+ return original(request, parent, isMain, options);
29
+ };
30
+ moduleWithMutableResolve._resolveFilename = resolveTailwindcssCss;
31
+ patched.add(moduleWithMutableResolve._resolveFilename);
32
+ }
33
+ //#endregion
34
+ //#region src/shared/mpx.ts
35
+ const localRequire = createRequire(import.meta.url);
36
+ const MPX_STYLE_RESOURCE_QUERY_RE$1 = /(?:^|[?&])type=styles(?:&|$)/;
37
+ const MPX_WEBPACK_PLUGIN_PACKAGE_RE = /@mpxjs[\\/]webpack-plugin[\\/]package\.json$/;
38
+ function isMpxStyleResourceQuery(query) {
39
+ if (typeof query !== "string") return false;
40
+ return MPX_STYLE_RESOURCE_QUERY_RE$1.test(query);
41
+ }
42
+ function isMpx(appType) {
43
+ return appType === "mpx";
44
+ }
45
+ function getTailwindcssCssEntry(pkgDir) {
46
+ return path.join(pkgDir, "index.css");
47
+ }
48
+ function resolveMpxWebpackPluginDir(compiler) {
49
+ const candidates = [
50
+ compiler?.context,
51
+ compiler?.options?.context,
52
+ process.cwd()
53
+ ].filter((item) => typeof item === "string" && item.length > 0);
54
+ for (const candidate of candidates) try {
55
+ const projectRequire = createRequire(path.join(candidate, "package.json"));
56
+ return path.dirname(projectRequire.resolve("@mpxjs/webpack-plugin/package.json"));
57
+ } catch {}
58
+ const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
59
+ if (cachedPackageJson) return path.dirname(cachedPackageJson);
60
+ try {
61
+ return path.dirname(localRequire.resolve("@mpxjs/webpack-plugin/package.json"));
62
+ } catch {
63
+ return;
64
+ }
65
+ }
66
+ function isMpxWebpackPluginRequest(request) {
67
+ return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
68
+ }
69
+ function resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir) {
70
+ if (request === "@mpxjs/webpack-plugin") return mpxWebpackPluginDir;
71
+ return path.join(mpxWebpackPluginDir, request.slice(22));
72
+ }
73
+ function addMpxWebpackPluginAlias(alias, pkgDir) {
74
+ const recordLoader = path.join(pkgDir, "lib/record-loader");
75
+ const styleCompiler = path.join(pkgDir, "lib/style-compiler/index");
76
+ const stripConditionalLoader = path.join(pkgDir, "lib/style-compiler/strip-conditional-loader");
77
+ if (Array.isArray(alias)) alias.push({
78
+ name: "@mpxjs/webpack-plugin/lib/record-loader",
79
+ alias: recordLoader
80
+ }, {
81
+ name: "@mpxjs/webpack-plugin/lib/style-compiler/index",
82
+ alias: styleCompiler
83
+ }, {
84
+ name: "@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader",
85
+ alias: stripConditionalLoader
86
+ }, {
87
+ name: /^@mpxjs\/webpack-plugin\//,
88
+ alias: pkgDir
89
+ });
90
+ else {
91
+ alias["@mpxjs/webpack-plugin"] = pkgDir;
92
+ alias["@mpxjs/webpack-plugin$"] = pkgDir;
93
+ alias["@mpxjs/webpack-plugin/lib/record-loader"] = recordLoader;
94
+ alias["@mpxjs/webpack-plugin/lib/style-compiler/index"] = styleCompiler;
95
+ alias["@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader"] = stripConditionalLoader;
96
+ }
97
+ }
98
+ function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
99
+ compiler.options.resolveLoader = compiler.options.resolveLoader || {};
100
+ const alias = compiler.options.resolveLoader.alias ?? {};
101
+ compiler.options.resolveLoader.alias = alias;
102
+ addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
103
+ }
104
+ function resolveMpxWebpackPluginRequire(compiler) {
105
+ const candidates = [
106
+ compiler?.context,
107
+ compiler?.options?.context,
108
+ process.cwd()
109
+ ].filter((item) => typeof item === "string" && item.length > 0);
110
+ for (const candidate of candidates) try {
111
+ const projectRequire = createRequire(path.join(candidate, "package.json"));
112
+ projectRequire.resolve("@mpxjs/webpack-plugin/package.json");
113
+ return projectRequire;
114
+ } catch {}
115
+ const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
116
+ if (cachedPackageJson) return createRequire(cachedPackageJson);
117
+ return localRequire;
118
+ }
119
+ function patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir) {
120
+ if (!mpxWebpackPluginDir) return false;
121
+ const projectRequire = resolveMpxWebpackPluginRequire(compiler);
122
+ let normalize;
123
+ try {
124
+ normalize = projectRequire("@mpxjs/webpack-plugin/lib/utils/normalize");
125
+ } catch {
126
+ return false;
127
+ }
128
+ if (typeof normalize.lib !== "function") return false;
129
+ if (normalize.lib.__weappTwPatched) return true;
130
+ const wrappedLib = (file) => path.join(mpxWebpackPluginDir, "lib", file);
131
+ wrappedLib.__weappTwPatched = true;
132
+ wrappedLib.__weappTwOriginal = normalize.lib;
133
+ normalize.lib = wrappedLib;
134
+ return true;
135
+ }
136
+ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
137
+ const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
138
+ compiler.options = compiler.options || {};
139
+ compiler.options.resolve = compiler.options.resolve || {};
140
+ const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
141
+ patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
142
+ if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
143
+ const alias = compiler.options.resolve.alias ?? {};
144
+ compiler.options.resolve.alias = alias;
145
+ if (Array.isArray(alias)) alias.push({
146
+ name: "tailwindcss",
147
+ alias: tailwindcssCssEntry
148
+ }, {
149
+ name: "tailwindcss$",
150
+ alias: tailwindcssCssEntry
151
+ });
152
+ else {
153
+ alias.tailwindcss = tailwindcssCssEntry;
154
+ alias.tailwindcss$ = tailwindcssCssEntry;
155
+ }
156
+ if (mpxWebpackPluginDir) addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
157
+ return tailwindcssCssEntry;
158
+ }
159
+ function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
160
+ if (!enabled || typeof loaderContext.resolve !== "function") return;
161
+ const originalResolve = loaderContext.resolve;
162
+ if (originalResolve.__weappTwPatched) return;
163
+ const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
164
+ const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
165
+ const wrappedResolve = function(context, request, callback) {
166
+ if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
167
+ if (request?.startsWith("tailwindcss/")) return callback(null, path.join(pkgDir, request.slice(12)));
168
+ if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
169
+ return originalResolve.call(this, context, request, callback);
170
+ };
171
+ wrappedResolve.__weappTwPatched = true;
172
+ loaderContext.resolve = wrappedResolve;
173
+ }
174
+ function setupMpxTailwindcssRedirect(pkgDir, enabled) {
175
+ if (enabled) installTailwindcssCssRedirect(pkgDir);
176
+ }
177
+ const CSS_EXT_RE = /\.css$/i;
178
+ function injectMpxCssRewritePreRules(compiler, loader, loaderOptions) {
179
+ var _compiler$options;
180
+ if (!loader) return;
181
+ const moduleOptions = (_compiler$options = compiler.options).module ?? (_compiler$options.module = { rules: [] });
182
+ moduleOptions.rules = moduleOptions.rules || [];
183
+ const createRule = (match) => ({
184
+ ...match,
185
+ enforce: "pre",
186
+ use: [{
187
+ loader,
188
+ options: loaderOptions
189
+ }]
190
+ });
191
+ moduleOptions.rules.unshift(createRule({ resourceQuery: (query) => isMpxStyleResourceQuery(query) }), createRule({
192
+ test: CSS_EXT_RE,
193
+ resourceQuery: (query) => !isMpxStyleResourceQuery(query)
194
+ }));
195
+ }
196
+ //#endregion
197
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/shared.ts
198
+ const MPX_STYLE_RESOURCE_QUERY_RE = /(?:\?|&)type=styles\b/;
199
+ function getCacheKey(filename) {
200
+ return filename;
201
+ }
202
+ function stripResourceQuery(resource) {
203
+ if (typeof resource !== "string") return resource;
204
+ return stripRequestQuery(resource);
205
+ }
206
+ function isCssLikeModuleResource(resource, cssMatcher, appType) {
207
+ if (typeof resource !== "string") return false;
208
+ const normalizedResource = stripResourceQuery(resource);
209
+ if (normalizedResource && cssMatcher(normalizedResource)) return true;
210
+ if (isSourceStyleRequest(resource)) return true;
211
+ if (appType === "mpx") return MPX_STYLE_RESOURCE_QUERY_RE.test(resource);
212
+ return false;
213
+ }
214
+ function hasLoaderEntry(entries, target) {
215
+ if (!target) return false;
216
+ return entries.some((entry) => entry.loader?.includes?.(target));
217
+ }
218
+ function normalizeWatchPath(file) {
219
+ return path.resolve(file);
220
+ }
221
+ function isFileInContext(file, context) {
222
+ const relative = path.relative(normalizeWatchPath(context), normalizeWatchPath(file));
223
+ return relative.length > 0 && !relative.startsWith("..") && !path.isAbsolute(relative);
224
+ }
225
+ function toChunkFiles(files) {
226
+ if (!files) return [];
227
+ if (Array.isArray(files)) return files;
228
+ return [...files];
229
+ }
230
+ function inferWebpackMainCssFiles(chunks, cssMatcher, options = {}) {
231
+ const mainCssFiles = /* @__PURE__ */ new Set();
232
+ const shouldCheckSourceResources = Boolean(options.mainSourceFiles?.size);
233
+ for (const chunk of chunks) {
234
+ const files = toChunkFiles(chunk.files);
235
+ if (!(chunk.hasRuntime?.() === true)) continue;
236
+ for (const file of files) {
237
+ if (!cssMatcher(file)) continue;
238
+ if (shouldCheckSourceResources) {
239
+ const resources = options.resourcesByAsset?.get(file);
240
+ if (!resources || ![...resources].some((resource) => options.mainSourceFiles?.has(resource))) continue;
241
+ }
242
+ mainCssFiles.add(file);
243
+ }
244
+ }
245
+ return mainCssFiles;
246
+ }
247
+ function resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAssetResourceFiles) {
248
+ const activeAssetResourceMatches = [...assetResources ?? []].map((sourceFile) => path.resolve(sourceFile)).filter((sourceFile) => activeWebpackAssetResourceFiles.has(sourceFile)).sort();
249
+ return activeAssetResourceMatches.length === 1 ? activeAssetResourceMatches[0] : void 0;
250
+ }
251
+ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
252
+ const resourcesByAsset = /* @__PURE__ */ new Map();
253
+ if (!chunkGraph?.getChunkModulesIterable) return resourcesByAsset;
254
+ const collectModuleResources = (module, resources, seen = /* @__PURE__ */ new Set()) => {
255
+ if (!module || seen.has(module)) return;
256
+ seen.add(module);
257
+ for (const candidate of [
258
+ module.resource,
259
+ module.request,
260
+ module.userRequest
261
+ ]) {
262
+ if (typeof candidate !== "string") continue;
263
+ const normalized = normalizeResource(candidate, module);
264
+ if (normalized) resources.add(normalized);
265
+ }
266
+ for (const nested of [module.rootModule, chunkGraph.getIssuer?.(module)]) if (nested) collectModuleResources(nested, resources, seen);
267
+ for (const nested of module.modules ?? []) collectModuleResources(nested, resources, seen);
268
+ for (const dependency of module.dependencies ?? []) {
269
+ const dependencyLike = dependency;
270
+ for (const candidate of [dependencyLike.request, dependencyLike.userRequest]) {
271
+ if (typeof candidate !== "string") continue;
272
+ const normalized = normalizeResource(candidate, module);
273
+ if (normalized) resources.add(normalized);
274
+ }
275
+ const dependencyModule = chunkGraph.getModule?.(dependency);
276
+ if (dependencyModule) collectModuleResources(dependencyModule, resources, seen);
277
+ }
278
+ };
279
+ for (const chunk of chunks) {
280
+ const cssFiles = toChunkFiles(chunk.files).filter((file) => cssMatcher(file));
281
+ if (cssFiles.length === 0) continue;
282
+ const modules = chunkGraph.getChunkModulesIterable(chunk);
283
+ if (!modules) continue;
284
+ const cssResources = /* @__PURE__ */ new Set();
285
+ for (const module of modules) collectModuleResources(module, cssResources);
286
+ if (cssResources.size === 0) continue;
287
+ for (const cssFile of cssFiles) resourcesByAsset.set(cssFile, cssResources);
288
+ }
289
+ return resourcesByAsset;
290
+ }
291
+ function createAssetHashByChunkMap(chunks) {
292
+ const partsByFile = /* @__PURE__ */ new Map();
293
+ for (const chunk of chunks) {
294
+ const hash = typeof chunk.hash === "string" ? chunk.hash : void 0;
295
+ if (!hash) continue;
296
+ const chunkId = String(chunk.id ?? chunk.name ?? "");
297
+ for (const file of toChunkFiles(chunk.files)) {
298
+ if (!file) continue;
299
+ let parts = partsByFile.get(file);
300
+ if (!parts) {
301
+ parts = [];
302
+ partsByFile.set(file, parts);
303
+ }
304
+ parts.push(`${chunkId}:${hash}`);
305
+ }
306
+ }
307
+ const hashByFile = /* @__PURE__ */ new Map();
308
+ for (const [file, parts] of partsByFile.entries()) hashByFile.set(file, parts.sort().join("|"));
309
+ return hashByFile;
310
+ }
311
+ function createRuntimeAwareCssHash(assetHash, sourceHash, runtimeSetHash) {
312
+ return `${assetHash ?? sourceHash}:${runtimeSetHash}`;
313
+ }
314
+ function isWatchFileInRuntimeDependencies(file, dependencies) {
315
+ const normalizedFile = normalizeWatchPath(file);
316
+ for (const dependency of dependencies.files ?? []) if (normalizeWatchPath(dependency) === normalizedFile) return true;
317
+ for (const context of dependencies.contexts ?? []) if (isFileInContext(normalizedFile, context)) return true;
318
+ return false;
319
+ }
320
+ //#endregion
321
+ //#region src/bundlers/webpack/shared/css-loader-runtime.ts
322
+ function isWebpackCssLoaderRuntimeSource(source) {
323
+ return source.includes("___CSS_LOADER_EXPORT___") && source.includes("___CSS_LOADER_API_IMPORT___") && source.includes("module.exports = ___CSS_LOADER_EXPORT___");
324
+ }
325
+ //#endregion
326
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/helpers.ts
327
+ function createChangedByType() {
328
+ return {
329
+ html: /* @__PURE__ */ new Set(),
330
+ js: /* @__PURE__ */ new Set(),
331
+ css: /* @__PURE__ */ new Set(),
332
+ other: /* @__PURE__ */ new Set()
333
+ };
334
+ }
335
+ function createProcessFiles() {
336
+ return {
337
+ html: /* @__PURE__ */ new Set(),
338
+ js: /* @__PURE__ */ new Set(),
339
+ css: /* @__PURE__ */ new Set()
340
+ };
341
+ }
342
+ function markProcessFile(type, file, processFiles) {
343
+ if (type === "html" || type === "js" || type === "css") processFiles[type].add(file);
344
+ }
345
+ function buildWebpackBundleSnapshot(assets, opts, state, compilation) {
346
+ const sourceHashByFile = /* @__PURE__ */ new Map();
347
+ const runtimeAffectingSignatureByFile = /* @__PURE__ */ new Map();
348
+ const runtimeAffectingHashByFile = /* @__PURE__ */ new Map();
349
+ const changedByType = createChangedByType();
350
+ const runtimeAffectingChangedByType = createChangedByType();
351
+ const processFiles = createProcessFiles();
352
+ const entries = [];
353
+ const firstRun = state.iteration === 0 && state.sourceHashByFile.size === 0;
354
+ for (const [file, asset] of Object.entries(assets)) {
355
+ const type = classifyBundleEntry(file, opts);
356
+ if (type !== "html" && type !== "js") continue;
357
+ const source = stringifyWebpackSource(compilation?.getAsset(file)?.source.source() ?? asset.source());
358
+ const hash = opts.cache.computeHash(source);
359
+ sourceHashByFile.set(file, hash);
360
+ const previousHash = state.sourceHashByFile.get(file);
361
+ const changed = previousHash == null || previousHash !== hash;
362
+ const previousRuntimeAffectingHash = state.runtimeAffectingHashByFile.get(file);
363
+ const runtimeAffectingHash = !changed && previousRuntimeAffectingHash != null ? previousRuntimeAffectingHash : (() => {
364
+ const runtimeAffectingSignature = createRuntimeAffectingSourceSignature(source, type);
365
+ runtimeAffectingSignatureByFile.set(file, runtimeAffectingSignature);
366
+ return opts.cache.computeHash(runtimeAffectingSignature);
367
+ })();
368
+ runtimeAffectingHashByFile.set(file, runtimeAffectingHash);
369
+ if (changed) changedByType[type].add(file);
370
+ if (previousRuntimeAffectingHash == null || previousRuntimeAffectingHash !== runtimeAffectingHash) runtimeAffectingChangedByType[type].add(file);
371
+ if (firstRun) markProcessFile(type, file, processFiles);
372
+ else if (type === "html") processFiles.html.add(file);
373
+ else if (changed) processFiles.js.add(file);
374
+ entries.push({
375
+ file,
376
+ output: {
377
+ fileName: file,
378
+ source,
379
+ type: "asset"
380
+ },
381
+ source,
382
+ type
383
+ });
384
+ }
385
+ return {
386
+ entries,
387
+ jsEntries: /* @__PURE__ */ new Map(),
388
+ sourceHashByFile,
389
+ runtimeAffectingSignatureByFile,
390
+ runtimeAffectingHashByFile,
391
+ hasOmittedKnownFiles: false,
392
+ changedByType,
393
+ runtimeAffectingChangedByType,
394
+ processFiles,
395
+ linkedImpactsByEntry: /* @__PURE__ */ new Map()
396
+ };
397
+ }
398
+ function releaseWebpackBundleSnapshotSources(snapshot) {
399
+ for (const entry of snapshot.entries) {
400
+ entry.source = "";
401
+ entry.output.source = "";
402
+ }
403
+ }
404
+ function stringifyWebpackSource(source) {
405
+ if (typeof source === "string") return source;
406
+ return source?.toString() ?? "";
407
+ }
408
+ function createWebpackAssetUpdater(options) {
409
+ const getCurrentAssetSource = (file) => {
410
+ const asset = options.compilation.getAsset(file);
411
+ if (!asset) return;
412
+ return stringifyWebpackSource(asset.source.source());
413
+ };
414
+ const updateAssetIfChanged = (file, source, { compare = true, notifyUpdate = true } = {}) => {
415
+ if (!compare) {
416
+ options.compilation.updateAsset(file, typeof source === "string" ? new options.ConcatSource(source) : source);
417
+ return true;
418
+ }
419
+ const nextSource = typeof source === "string" ? source : stringifyWebpackSource(source.source());
420
+ const previousSource = getCurrentAssetSource(file);
421
+ if (previousSource === nextSource) {
422
+ options.debug("asset unchanged, skip update: %s", file);
423
+ return false;
424
+ }
425
+ options.compilation.updateAsset(file, typeof source === "string" ? new options.ConcatSource(source) : source);
426
+ if (notifyUpdate) options.onUpdate(file, previousSource ?? "", nextSource);
427
+ return true;
428
+ };
429
+ return {
430
+ getCurrentAssetSource,
431
+ updateAssetIfChanged
432
+ };
433
+ }
434
+ //#endregion
435
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/source-candidate-cache.ts
436
+ const WEBPACK_SOURCE_CANDIDATE_SCAN_CACHE_MAX = 2;
437
+ function trimScanCache(cache) {
438
+ while (cache.size > WEBPACK_SOURCE_CANDIDATE_SCAN_CACHE_MAX) {
439
+ const oldestKey = cache.keys().next().value;
440
+ if (oldestKey === void 0) break;
441
+ cache.delete(oldestKey);
442
+ }
443
+ }
444
+ function collectWebpackSourceCandidateScanRoots(root, entries, explicit) {
445
+ const dedupedEntries = dedupeSourceEntries(entries);
446
+ if (dedupedEntries?.length) return [{
447
+ entries: dedupedEntries,
448
+ explicit,
449
+ root
450
+ }];
451
+ if (explicit && dedupedEntries !== void 0) return [];
452
+ return [{
453
+ entries: dedupedEntries,
454
+ root
455
+ }];
456
+ }
457
+ function dedupeSourceEntries(entries) {
458
+ if (!entries?.length) return entries;
459
+ const seen = /* @__PURE__ */ new Set();
460
+ const nextEntries = [];
461
+ for (const entry of entries) {
462
+ const key = JSON.stringify({
463
+ base: path.resolve(entry.base),
464
+ negated: entry.negated,
465
+ pattern: entry.pattern
466
+ });
467
+ if (seen.has(key)) continue;
468
+ seen.add(key);
469
+ nextEntries.push(entry);
470
+ }
471
+ return nextEntries;
472
+ }
473
+ function createWebpackSourceCandidateCacheRecord(collector, sourceScan, signatureHash) {
474
+ return {
475
+ getSourceCandidatesForEntries: (entries, options) => collector.valuesForEntries(entries, options),
476
+ signatureHash,
477
+ tokenSources: collector.sourcesForEntries(sourceScan?.entries)
478
+ };
479
+ }
480
+ function compactSnapshot(snapshot) {
481
+ return {
482
+ candidatesById: [],
483
+ cssCandidatesById: void 0,
484
+ inlineExcludedCandidates: snapshot.inlineExcludedCandidates,
485
+ inlineIncludedCandidates: snapshot.inlineIncludedCandidates,
486
+ scanCandidatesById: snapshot.scanCandidatesById,
487
+ sourceById: void 0,
488
+ transformCandidatesById: void 0
489
+ };
490
+ }
491
+ function normalizeChangedFiles(changedFiles) {
492
+ return new Set([...changedFiles ?? []].map((file) => resolveSourceScanPath(file)));
493
+ }
494
+ async function resolveScanFileSnapshot(file) {
495
+ try {
496
+ const stats = await stat(file);
497
+ const source = await readFile(file, "utf8");
498
+ return {
499
+ meta: {
500
+ contentHash: md5Hash(source),
501
+ mtimeMs: stats.mtimeMs,
502
+ size: stats.size
503
+ },
504
+ source
505
+ };
506
+ } catch (error) {
507
+ if ((typeof error === "object" && error !== null && "code" in error ? error.code : void 0) === "ENOENT") return;
508
+ throw error;
509
+ }
510
+ }
511
+ function isSameFileMeta(left, right) {
512
+ return left?.contentHash === right?.contentHash && left?.mtimeMs === right?.mtimeMs && left?.size === right?.size;
513
+ }
514
+ async function resolveScanFiles(roots, outDir) {
515
+ const files = /* @__PURE__ */ new Set();
516
+ await Promise.all(roots.map(async (root) => {
517
+ const rootFiles = await resolveSourceCandidateScanFiles({
518
+ entries: root.entries,
519
+ explicit: root.explicit,
520
+ filter: isSourceCandidateRequest,
521
+ outDir,
522
+ root: root.root
523
+ });
524
+ for (const file of rootFiles) files.add(resolveSourceScanPath(file));
525
+ }));
526
+ return files;
527
+ }
528
+ async function syncChangedScanFiles(collector, cachedScan, scanFiles, changedFiles) {
529
+ for (const file of cachedScan.files.keys()) {
530
+ if (scanFiles.has(file)) continue;
531
+ collector.remove(file);
532
+ cachedScan.files.delete(file);
533
+ }
534
+ await Promise.all([...scanFiles].map(async (file) => {
535
+ const nextSnapshot = await resolveScanFileSnapshot(file);
536
+ if (!nextSnapshot) {
537
+ collector.remove(file);
538
+ cachedScan.files.delete(file);
539
+ return;
540
+ }
541
+ const previousMeta = cachedScan.files.get(file);
542
+ if (previousMeta && isSameFileMeta(previousMeta, nextSnapshot.meta) && !changedFiles.has(file)) return;
543
+ await collector.sync(file, nextSnapshot.source);
544
+ cachedScan.files.set(file, nextSnapshot.meta);
545
+ }));
546
+ }
547
+ function createWebpackSourceCandidateScanCache() {
548
+ const scans = /* @__PURE__ */ new Map();
549
+ let lastHit = false;
550
+ let lastSignatureHash;
551
+ async function resolve({ changedFiles, collector, outDir, root, sourceScan, watchMode }) {
552
+ const explicit = sourceScan?.explicit ?? false;
553
+ const roots = collectWebpackSourceCandidateScanRoots(root, sourceScan?.entries, explicit);
554
+ const nextSignatureHash = md5Hash(createSourceCandidateScanSignature({
555
+ inlineCandidates: sourceScan?.inlineCandidates,
556
+ outDir,
557
+ roots,
558
+ scanAllSources: !explicit
559
+ }));
560
+ const scanFiles = await resolveScanFiles(roots, outDir);
561
+ const cachedScan = watchMode ? scans.get(nextSignatureHash) : void 0;
562
+ if (cachedScan) {
563
+ collector.restore(cachedScan.snapshot);
564
+ collector.syncInline(sourceScan?.inlineCandidates);
565
+ await syncChangedScanFiles(collector, cachedScan, scanFiles, normalizeChangedFiles(changedFiles));
566
+ cachedScan.snapshot = compactSnapshot(collector.snapshot());
567
+ lastHit = true;
568
+ lastSignatureHash = nextSignatureHash;
569
+ return createWebpackSourceCandidateCacheRecord(collector, sourceScan, nextSignatureHash);
570
+ }
571
+ collector.clearScan();
572
+ collector.syncInline(sourceScan?.inlineCandidates);
573
+ const files = /* @__PURE__ */ new Map();
574
+ await Promise.all([...scanFiles].map(async (file) => {
575
+ const nextSnapshot = await resolveScanFileSnapshot(file);
576
+ if (!nextSnapshot) return;
577
+ await collector.sync(file, nextSnapshot.source);
578
+ files.set(file, nextSnapshot.meta);
579
+ }));
580
+ if (watchMode) {
581
+ scans.set(nextSignatureHash, {
582
+ files,
583
+ snapshot: compactSnapshot(collector.snapshot())
584
+ });
585
+ trimScanCache(scans);
586
+ } else scans.clear();
587
+ lastHit = false;
588
+ lastSignatureHash = nextSignatureHash;
589
+ return createWebpackSourceCandidateCacheRecord(collector, sourceScan, nextSignatureHash);
590
+ }
591
+ function getMemoryStats() {
592
+ const cachedScans = [...scans.values()];
593
+ return {
594
+ entries: cachedScans.reduce((count, scan) => count + (scan.snapshot.scanCandidatesById?.length ?? scan.snapshot.candidatesById.length), 0),
595
+ files: cachedScans.reduce((count, scan) => count + scan.files.size, 0),
596
+ lastHit,
597
+ signatureHash: lastSignatureHash,
598
+ snapshots: scans.size
599
+ };
600
+ }
601
+ return {
602
+ getMemoryStats,
603
+ resolve
604
+ };
605
+ }
606
+ //#endregion
607
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets.ts
608
+ const WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX = 128;
609
+ function removeTailwindV4StandaloneHostPreflightRule(source) {
610
+ if (!source.includes("--theme(")) return source;
611
+ try {
612
+ const root = postcss.parse(source);
613
+ let changed = false;
614
+ root.walkRules((rule) => {
615
+ if (rule.selector.trim() !== ":host") return;
616
+ if (!rule.nodes?.some((node) => node.type === "decl" && node.value?.includes("--theme("))) return;
617
+ rule.remove();
618
+ changed = true;
619
+ });
620
+ return changed ? root.toString() : source;
621
+ } catch {
622
+ return source;
623
+ }
624
+ }
625
+ function isRuntimeTransformCandidate(candidate) {
626
+ return candidate.length > 0 && !candidate.includes("=") && !candidate.includes("<") && !candidate.includes(">") && !candidate.includes("${");
627
+ }
628
+ function collectRuntimeTokenSignatureParts(source) {
629
+ return source.match(/[\w-]+_[A-Z][\w-]*/gi) ?? [];
630
+ }
631
+ function hasMissingRuntimeCandidates(classSet, candidates) {
632
+ if (!classSet || !candidates?.size) return false;
633
+ for (const candidate of candidates) if (isRuntimeTransformCandidate(candidate) && !classSet.has(candidate)) return true;
634
+ return false;
635
+ }
636
+ function resolveGeneratedCssRuntimeCandidates(source, fallbackClassSet) {
637
+ const classSet = collectGeneratedCssRuntimeCandidates(source);
638
+ if (classSet.size > 0 || fallbackClassSet === void 0) return classSet;
639
+ return fallbackClassSet;
640
+ }
641
+ function getRuntimeClassSetSync(tailwindRuntime) {
642
+ if (typeof tailwindRuntime.getClassSetSync !== "function") return /* @__PURE__ */ new Set();
643
+ try {
644
+ return new Set(tailwindRuntime.getClassSetSync() ?? []);
645
+ } catch {
646
+ return /* @__PURE__ */ new Set();
647
+ }
648
+ }
649
+ function toMb(bytes) {
650
+ return Math.round(bytes / 1024 / 1024);
651
+ }
652
+ function pruneMapToMaxSize(map, maxSize) {
653
+ while (map.size > maxSize) {
654
+ const oldestKey = map.keys().next().value;
655
+ if (oldestKey === void 0) break;
656
+ map.delete(oldestKey);
657
+ }
658
+ }
659
+ function stripTrailingLineWhitespace(source) {
660
+ return source.replace(/[ \t]+$/gm, "");
661
+ }
662
+ function pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles) {
663
+ const activeSuffixes = [...activeCssFiles].map((file) => `:${file}`);
664
+ for (const key of cssHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssHandlerOptionsCache.delete(key);
665
+ for (const key of cssUserHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssUserHandlerOptionsCache.delete(key);
666
+ pruneMapToMaxSize(cssHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
667
+ pruneMapToMaxSize(cssUserHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
668
+ }
669
+ function resolveWebpackGeneratorRawSource(rawSource, cssHandlerOptions) {
670
+ const sourceCss = cssHandlerOptions.sourceOptions?.sourceCss;
671
+ if (sourceCss && (hasTailwindRootDirectives(sourceCss, { importFallback: true }) || hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || hasTailwindApplyDirective(sourceCss) || hasTailwindGeneratedCss(sourceCss) || hasTailwindGeneratedCssMarkers(sourceCss))) return sourceCss;
672
+ return rawSource;
673
+ }
674
+ function hasUsableWebpackGeneratorCssSources(cssSources) {
675
+ return Array.isArray(cssSources) && cssSources.some((source) => typeof source?.css === "string" && source.css.length > 0);
676
+ }
677
+ function normalizeWebpackGeneratorCssSources(cssSources) {
678
+ if (!Array.isArray(cssSources)) return;
679
+ const normalized = cssSources.filter((source) => typeof source?.css === "string" && source.css.length > 0);
680
+ return normalized.length > 0 ? normalized : void 0;
681
+ }
682
+ function shouldUseWebpackAssetAsGeneratorUserCss(rawSource, generatorRawSource, options = {}) {
683
+ return rawSource !== generatorRawSource && (options.processed === true || !rawSource.includes("data:")) && !hasTailwindRootDirectives(rawSource, { importFallback: true }) && !hasTailwindSourceDirectives(rawSource, { importFallback: true }) && !hasTailwindApplyDirective(rawSource) && /(?:^|[^\w-])\.[_a-z\u00A0-\uFFFF\\-]/i.test(rawSource) && (!hasTailwindGeneratedCssMarkers(rawSource) || hasAdditionalWebpackAssetUserCssMarkers(rawSource, generatorRawSource));
684
+ }
685
+ function collectWebpackAssetUserCssMarkers(source) {
686
+ const markers = /* @__PURE__ */ new Set();
687
+ for (const match of source.matchAll(/\.((?:\\.|[_a-z\u00A0-\uFFFF-])(?:\\.|[\w\u00A0-\uFFFF-])*)/gi)) markers.add(`class:${match[1]}`);
688
+ for (const match of source.matchAll(/@(?:-[\w-]+-)?keyframes\s+((?:\\.|[-\w\u00A0-\uFFFF])+)/gi)) markers.add(`keyframes:${match[1]}`);
689
+ return markers;
690
+ }
691
+ function collectWebpackCssRuleIdentityMarkers(source) {
692
+ const markers = /* @__PURE__ */ new Set();
693
+ try {
694
+ const root = postcss.parse(source);
695
+ root.walkRules((rule) => {
696
+ for (const selector of rule.selectors ?? [rule.selector]) for (const match of selector.matchAll(/\.((?:\\.|[_a-z\u00A0-\uFFFF-])(?:\\.|[\w\u00A0-\uFFFF-])*)/gi)) markers.add(`class:${match[1]}`);
697
+ });
698
+ root.walkAtRules("keyframes", (rule) => {
699
+ if (rule.params) markers.add(`keyframes:${rule.params}`);
700
+ });
701
+ } catch {}
702
+ return markers;
703
+ }
704
+ function unescapeCssIdentifier(value) {
705
+ return value.replace(/\\([0-9a-f]{1,6}\s?|.)/gi, (_match, escaped) => {
706
+ const hex = escaped.trim();
707
+ if (/^[0-9a-f]+$/i.test(hex)) {
708
+ const codePoint = Number.parseInt(hex, 16);
709
+ if (Number.isFinite(codePoint)) return String.fromCodePoint(codePoint);
710
+ }
711
+ return escaped;
712
+ });
713
+ }
714
+ function collectGeneratedCssRuntimeCandidates(source) {
715
+ const candidates = /* @__PURE__ */ new Set();
716
+ if (hasBundlerGeneratedCssMarker(source) || !hasTailwindGeneratedCss(source) && !hasTailwindGeneratedCssMarkers(source)) return candidates;
717
+ try {
718
+ postcss.parse(source).walkRules((rule) => {
719
+ for (const selector of rule.selectors ?? [rule.selector]) for (const match of selector.matchAll(/\.((?:\\.|[\w\u00A0-\uFFFF-])(?:\\.|[\w\u00A0-\uFFFF-])*)/g)) {
720
+ const candidate = unescapeCssIdentifier(match[1] ?? "");
721
+ if (isRuntimeTransformCandidate(candidate)) candidates.add(candidate);
722
+ }
723
+ });
724
+ } catch {}
725
+ return candidates;
726
+ }
727
+ function hasAdditionalWebpackAssetUserCssMarkers(rawSource, generatorRawSource) {
728
+ const rawMarkers = collectWebpackAssetUserCssMarkers(rawSource);
729
+ if (rawMarkers.size === 0) return false;
730
+ const generatorMarkers = collectWebpackAssetUserCssMarkers(generatorRawSource);
731
+ for (const marker of rawMarkers) if (!generatorMarkers.has(marker)) return true;
732
+ return false;
733
+ }
734
+ function hasWebpackTailwindSourceDirectives(source) {
735
+ return Boolean(source) && (hasTailwindRootDirectives(source, { importFallback: true }) || hasTailwindSourceDirectives(source, { importFallback: true }) || hasTailwindApplyDirective(source) || hasTailwindGeneratedCss(source) || hasTailwindGeneratedCssMarkers(source));
736
+ }
737
+ function isWebpackTailwindImportRequest(request) {
738
+ return request === "tailwindcss" || request === "tailwindcss4" || request?.startsWith("tailwindcss/") || request?.startsWith("tailwindcss4/") || request === "weapp-tailwindcss" || request?.startsWith("weapp-tailwindcss/");
739
+ }
740
+ function removeWebpackGeneratorNonTailwindImports(source) {
741
+ if (!source?.includes("@import")) return source;
742
+ try {
743
+ const root = postcss.parse(source);
744
+ let changed = false;
745
+ root.walkAtRules("import", (rule) => {
746
+ if (isWebpackTailwindImportRequest(parseImportRequest(rule.params))) return;
747
+ rule.remove();
748
+ changed = true;
749
+ });
750
+ return changed ? root.toString() : source;
751
+ } catch {
752
+ return source;
753
+ }
754
+ }
755
+ function isWebpackCssSourceRepresentedInAsset(rawSource, sourceCss) {
756
+ if (!sourceCss || !hasWebpackTailwindSourceDirectives(sourceCss)) return false;
757
+ const sourceMarkers = collectWebpackCssRuleIdentityMarkers(sourceCss);
758
+ if (sourceMarkers.size === 0) return false;
759
+ const rawMarkers = collectWebpackCssRuleIdentityMarkers(rawSource);
760
+ for (const marker of sourceMarkers) if (!rawMarkers.has(marker)) return false;
761
+ return true;
762
+ }
763
+ function createWebpackGeneratorCssSource(file, css) {
764
+ if (!file || !css || !hasWebpackTailwindSourceDirectives(css)) return;
765
+ return {
766
+ file,
767
+ base: path.dirname(file),
768
+ css,
769
+ dependencies: [file]
770
+ };
771
+ }
772
+ function createWebpackUserCssSourceAppend(sources, generatorRawSource, currentSourceFile, shouldIncludeSource) {
773
+ const matchedSources = [];
774
+ const seen = /* @__PURE__ */ new Set();
775
+ for (const source of sources) {
776
+ const css = source.css;
777
+ if (!css || seen.has(css)) continue;
778
+ if (shouldIncludeSource && !shouldIncludeSource(source.file)) continue;
779
+ seen.add(css);
780
+ if ((source.processed === true || !css.includes("data:")) && hasAdditionalWebpackAssetUserCssMarkers(css, generatorRawSource)) matchedSources.push({
781
+ css,
782
+ file: source.file,
783
+ processed: source.processed === true
784
+ });
785
+ }
786
+ const currentFile = currentSourceFile ? path.resolve(currentSourceFile) : void 0;
787
+ const parts = matchedSources.sort((a, b) => {
788
+ const aCurrent = currentFile !== void 0 && path.resolve(a.file) === currentFile;
789
+ if (aCurrent !== (currentFile !== void 0 && path.resolve(b.file) === currentFile)) return aCurrent ? -1 : 1;
790
+ return a.file.localeCompare(b.file);
791
+ }).map((source) => source.css);
792
+ return parts.length > 0 ? {
793
+ css: parts.join("\n"),
794
+ processed: matchedSources.every((source) => source.processed)
795
+ } : void 0;
796
+ }
797
+ function createWebpackGeneratorUserCssSourceAppend(...sources) {
798
+ const parts = sources.filter((source) => source !== void 0 && source.css.trim().length > 0);
799
+ if (parts.length === 0) return;
800
+ let css = "";
801
+ const usedParts = [];
802
+ for (const source of parts) {
803
+ const nextCss = css.trim().length > 0 ? filterExistingCssRules(css, source.css) : source.css;
804
+ if (nextCss.trim().length === 0) continue;
805
+ css = createCssSourceOrderAppend(css, nextCss);
806
+ usedParts.push(source);
807
+ }
808
+ if (css.trim().length === 0) return;
809
+ return {
810
+ css,
811
+ processed: usedParts.every((source) => source.processed)
812
+ };
813
+ }
814
+ function resolveWebpackMemoryDebugStats(context) {
815
+ if (process.env["WEAPP_TW_HMR_MEMORY_DEBUG"] !== "1") return;
816
+ const memory = process.memoryUsage();
817
+ const processCacheInstanceSize = context.cache.instance.size;
818
+ const processCacheHashMapSize = context.cache.hashMap.size;
819
+ return {
820
+ phase: context.phase,
821
+ process: {
822
+ rssMb: toMb(memory.rss),
823
+ heapTotalMb: toMb(memory.heapTotal),
824
+ heapUsedMb: toMb(memory.heapUsed),
825
+ externalMb: toMb(memory.external),
826
+ arrayBuffersMb: toMb(memory.arrayBuffers)
827
+ },
828
+ assets: {
829
+ active: context.activeAssetFiles,
830
+ activeCss: context.activeCssFiles
831
+ },
832
+ processCache: {
833
+ instance: processCacheInstanceSize,
834
+ hashMap: processCacheHashMapSize,
835
+ activeCacheKeys: context.activeProcessCacheKeys.size,
836
+ activeHashKeys: context.activeProcessHashKeys.size,
837
+ staleCacheKeys: Math.max(0, processCacheInstanceSize - context.activeProcessCacheKeys.size),
838
+ staleHashKeys: Math.max(0, processCacheHashMapSize - context.activeProcessHashKeys.size),
839
+ pruned: true,
840
+ pruneSkipped: false
841
+ },
842
+ webpackCss: {
843
+ handlerOptions: context.cssHandlerOptionsCache.size,
844
+ userHandlerOptions: context.cssUserHandlerOptionsCache.size,
845
+ maxHandlerOptions: WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX
846
+ },
847
+ sourceCandidateScan: context.sourceCandidateScan,
848
+ tailwind: { v4: getTailwindV4IncrementalGenerateCacheStats() }
849
+ };
850
+ }
851
+ function setupWebpackV5ProcessAssetsHook(options) {
852
+ const { compiler, options: compilerOptions, appType, runtimeState, getRuntimeRefreshRequirement, refreshRuntimeMetadata, isKnownWebpackProcessedCssAsset, isWebpackProcessedCssAsset, consumeRuntimeRefreshRequirement, isWatchMode, getWatchChangedFiles, runtimeClassSetManager, getWebpackCssSources, getWebpackGeneratedCssSources, pruneWebpackCssSources, prepareWebpackCssSources, debug } = options;
853
+ const { Compilation, sources } = compiler.webpack;
854
+ const { ConcatSource } = sources;
855
+ const isWebGeneratorTarget = compilerOptions.generator?.target === "web";
856
+ const cssHandlerOptionsCache = /* @__PURE__ */ new Map();
857
+ const cssUserHandlerOptionsCache = /* @__PURE__ */ new Map();
858
+ const webpackSourceCandidateScanCache = createWebpackSourceCandidateScanCache();
859
+ const bundleBuildState = createBundleBuildState();
860
+ const bundleRuntimeClassSetManager = runtimeClassSetManager ?? createBundleRuntimeClassSetManager();
861
+ const escapeFragments = createEscapeFragments(MappingChars2String);
862
+ const processedCssAssetSkipDecisionCache = /* @__PURE__ */ new Map();
863
+ let webpackWatchRuntimeScanInitialized = false;
864
+ compiler.hooks.compilation.tap(pluginName, (compilation) => {
865
+ compilation.hooks.processAssets.tapPromise({
866
+ name: pluginName,
867
+ stage: Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE
868
+ }, async (assets) => {
869
+ const entries = Object.entries(assets);
870
+ if (entries.length === 0) return;
871
+ const groupedEntries = getGroupedEntries(entries, compilerOptions);
872
+ if (isWebGeneratorTarget && !groupedEntries.css?.length) return;
873
+ compilerOptions.onStart();
874
+ debug("start");
875
+ await runtimeState.readyPromise;
876
+ const hmrTimingStartedAt = performance.now();
877
+ for (const chunk of compilation.chunks) if (chunk.id && chunk.hash) compilerOptions.cache.calcHashValueChanged(chunk.id, chunk.hash);
878
+ const assetHashByChunk = createAssetHashByChunkMap(compilation.chunks);
879
+ const { updateAssetIfChanged } = createWebpackAssetUpdater({
880
+ compilation,
881
+ ConcatSource,
882
+ onUpdate: compilerOptions.onUpdate,
883
+ debug
884
+ });
885
+ const compilerOutputPath = compilation.compiler?.outputPath ?? compiler.outputPath;
886
+ const outputDir = compilerOutputPath ? path.resolve(compilerOutputPath) : compilation.outputOptions?.path ?? process.cwd();
887
+ const jsAssets = /* @__PURE__ */ new Map();
888
+ for (const [file] of entries) if (compilerOptions.jsMatcher(file) || compilerOptions.wxsMatcher(file)) {
889
+ const absolute = toAbsoluteOutputPath(file, outputDir);
890
+ jsAssets.set(absolute, file);
891
+ }
892
+ const moduleGraphOptions = {
893
+ resolve(specifier, importer) {
894
+ return resolveOutputSpecifier(specifier, importer, outputDir, (candidate) => jsAssets.has(candidate));
895
+ },
896
+ load: (id) => {
897
+ const assetName = jsAssets.get(id);
898
+ if (!assetName) return;
899
+ const asset = compilation.getAsset(assetName);
900
+ if (!asset) return;
901
+ const source = asset.source.source();
902
+ return typeof source === "string" ? source : source.toString();
903
+ },
904
+ filter(id) {
905
+ return jsAssets.has(id);
906
+ }
907
+ };
908
+ const applyLinkedResults = (linked) => {
909
+ if (!linked) return;
910
+ for (const [id, { code }] of Object.entries(linked)) {
911
+ const assetName = jsAssets.get(id);
912
+ if (!assetName) continue;
913
+ const asset = compilation.getAsset(assetName);
914
+ if (!asset) continue;
915
+ const previousSource = asset.source.source();
916
+ if ((typeof previousSource === "string" ? previousSource : previousSource.toString()) === code) continue;
917
+ if (updateAssetIfChanged(assetName, new ConcatSource(code))) debug("js linked handle: %s", assetName);
918
+ }
919
+ };
920
+ const watchMode = isWatchMode?.() === true;
921
+ const cssAssetResources = createWebpackCssAssetResourceMap(compilation.chunks, compilation.chunkGraph, compilerOptions.cssMatcher, (resource, issuer) => {
922
+ if (!isCssLikeModuleResource(resource, compilerOptions.cssMatcher, appType)) return;
923
+ const normalized = stripResourceQuery(resource);
924
+ if (!normalized) return;
925
+ if (path.isAbsolute(normalized)) return path.resolve(normalized);
926
+ const issuerResource = issuer?.resource ? stripResourceQuery(issuer.resource) : void 0;
927
+ const issuerContext = issuerResource && path.isAbsolute(issuerResource) ? path.dirname(issuerResource) : issuer?.context;
928
+ return issuerContext ? path.resolve(issuerContext, normalized) : void 0;
929
+ });
930
+ const watchChangedFiles = new Set([...getWatchChangedFiles?.() ?? []].map((file) => path.resolve(file)));
931
+ const taskConcurrency = watchMode ? resolveTaskConcurrency(1) : void 0;
932
+ const activeProcessCacheKeys = /* @__PURE__ */ new Set();
933
+ const activeProcessHashKeys = /* @__PURE__ */ new Set();
934
+ const rememberProcessCacheKey = (cacheKey, hashKey = cacheKey) => {
935
+ activeProcessCacheKeys.add(cacheKey);
936
+ activeProcessHashKeys.add(hashKey);
937
+ };
938
+ const activeWebpackAssetResourceFiles = new Set([...cssAssetResources.values()].flatMap((resources) => [...resources].map((resource) => path.resolve(resource))));
939
+ const registeredWebpackCssSourceFiles = prepareWebpackCssSources?.(activeWebpackAssetResourceFiles) ?? /* @__PURE__ */ new Set();
940
+ for (const chunk of compilation.chunks) if (chunk.id) activeProcessHashKeys.add(chunk.id);
941
+ const cssSources = new Map([...getWebpackCssSources?.() ?? []].map(([file, source]) => [path.resolve(file), source]));
942
+ const generatedCssSources = new Map([...getWebpackGeneratedCssSources?.() ?? []].map(([file, source]) => [path.resolve(file), source]));
943
+ const hasConfiguredTailwindV4SourceRoots = () => {
944
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
945
+ return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0;
946
+ };
947
+ const configuredMainCssEntryFiles = (() => {
948
+ return [...resolveTailwindcssOptions(runtimeState.tailwindRuntime.options)?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => path.resolve(file));
949
+ })();
950
+ const inferredMainCssFiles = inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, {
951
+ mainSourceFiles: new Set(configuredMainCssEntryFiles),
952
+ resourcesByAsset: cssAssetResources
953
+ });
954
+ const singleConfiguredCssAsset = isWebGeneratorTarget && configuredMainCssEntryFiles.length > 0 && (groupedEntries.css?.length ?? 0) === 1 ? groupedEntries.css?.[0]?.[0] : void 0;
955
+ const isMainCssChunk = (file) => compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || file === singleConfiguredCssAsset;
956
+ const activeWebpackCssSourceFiles = /* @__PURE__ */ new Set();
957
+ const resolveConfiguredMainCssSourceFile = (file) => {
958
+ if (!isMainCssChunk(file)) return;
959
+ for (const sourceFile of configuredMainCssEntryFiles) if (cssSources.has(sourceFile)) {
960
+ activeWebpackCssSourceFiles.add(sourceFile);
961
+ return sourceFile;
962
+ }
963
+ };
964
+ const resolveWebpackCssSourceFile = (file, rawSource) => {
965
+ const assetResources = cssAssetResources.get(file);
966
+ const activeAssetResource = resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAssetResourceFiles);
967
+ if (cssSources.size === 0) {
968
+ if (activeAssetResource) {
969
+ activeWebpackCssSourceFiles.add(activeAssetResource);
970
+ return activeAssetResource;
971
+ }
972
+ if (assetResources && assetResources.size > 0) return;
973
+ return resolveConfiguredMainCssSourceFile(file);
974
+ }
975
+ const resourceMatches = [...assetResources ?? []].filter((sourceFile) => cssSources.has(sourceFile)).sort();
976
+ if (resourceMatches.length === 1) {
977
+ const sourceFile = resourceMatches[0];
978
+ activeWebpackCssSourceFiles.add(sourceFile);
979
+ return sourceFile;
980
+ }
981
+ const tailwindSourceMatches = resourceMatches.filter((sourceFile) => {
982
+ const sourceCss = cssSources.get(sourceFile)?.css;
983
+ return sourceCss && (hasTailwindRootDirectives(sourceCss, { importFallback: true }) || hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || hasTailwindApplyDirective(sourceCss) || hasTailwindGeneratedCss(sourceCss) || hasTailwindGeneratedCssMarkers(sourceCss));
984
+ });
985
+ if (tailwindSourceMatches.length === 1) {
986
+ const sourceFile = tailwindSourceMatches[0];
987
+ activeWebpackCssSourceFiles.add(sourceFile);
988
+ return sourceFile;
989
+ }
990
+ if (activeAssetResource) {
991
+ activeWebpackCssSourceFiles.add(activeAssetResource);
992
+ return activeAssetResource;
993
+ }
994
+ if (rawSource) {
995
+ const representedTailwindSourceMatches = [...cssSources.entries()].filter(([, source]) => isWebpackCssSourceRepresentedInAsset(rawSource, source.css)).map(([sourceFile]) => ({
996
+ sourceFile,
997
+ score: scoreTailwindV4CssSourceFileMatch(file, sourceFile, {
998
+ outputRoot: outputDir,
999
+ projectRoot: compilerOptions.tailwindcssBasedir,
1000
+ cwd: compilerOptions.tailwindcssBasedir
1001
+ })
1002
+ })).filter((match) => match.score > 0).sort((a, b) => b.score - a.score || a.sourceFile.localeCompare(b.sourceFile));
1003
+ const bestScore = representedTailwindSourceMatches[0]?.score ?? 0;
1004
+ const bestMatches = representedTailwindSourceMatches.filter((match) => match.score === bestScore);
1005
+ if (bestMatches.length === 1) {
1006
+ const sourceFile = bestMatches[0]?.sourceFile;
1007
+ activeWebpackCssSourceFiles.add(sourceFile);
1008
+ return sourceFile;
1009
+ }
1010
+ }
1011
+ const pathMatches = [...cssSources.keys()].map((sourceFile) => ({
1012
+ sourceFile,
1013
+ score: scoreTailwindV4CssSourceFileMatch(file, sourceFile, {
1014
+ outputRoot: outputDir,
1015
+ projectRoot: compilerOptions.tailwindcssBasedir,
1016
+ cwd: compilerOptions.tailwindcssBasedir
1017
+ })
1018
+ })).filter((match) => match.score >= 1e3).sort((a, b) => b.score - a.score || a.sourceFile.localeCompare(b.sourceFile));
1019
+ const bestPathScore = pathMatches[0]?.score ?? 0;
1020
+ const bestPathMatches = pathMatches.filter((match) => match.score === bestPathScore);
1021
+ if (bestPathMatches.length === 1) {
1022
+ const sourceFile = bestPathMatches[0]?.sourceFile;
1023
+ activeWebpackCssSourceFiles.add(sourceFile);
1024
+ return sourceFile;
1025
+ }
1026
+ if (assetResources && assetResources.size > 0) return;
1027
+ return resolveConfiguredMainCssSourceFile(file);
1028
+ };
1029
+ const isSameWebpackSourceScope = (outputFile, candidateSourceFile, currentSourceFile) => {
1030
+ if (!currentSourceFile) return false;
1031
+ if (path.resolve(candidateSourceFile) === path.resolve(currentSourceFile)) return true;
1032
+ const candidateKey = path.resolve(candidateSourceFile);
1033
+ return cssAssetResources.get(outputFile)?.has(candidateKey) === true;
1034
+ };
1035
+ const getCssHandlerOptions = (file, rawSource) => {
1036
+ const majorVersion = runtimeState.tailwindRuntime.majorVersion;
1037
+ const isMainChunk = isMainCssChunk(file);
1038
+ const sourceFile = resolveWebpackCssSourceFile(file, rawSource);
1039
+ const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0;
1040
+ const generatorSourceCss = removeWebpackGeneratorNonTailwindImports(sourceCss);
1041
+ const generatorCssSource = createWebpackGeneratorCssSource(sourceFile, generatorSourceCss);
1042
+ const cacheKey = [
1043
+ majorVersion ?? "unknown",
1044
+ isMainChunk ? "1" : "0",
1045
+ sourceFile ?? "asset",
1046
+ sourceCss === void 0 ? "source:0" : compilerOptions.cache.computeHash(sourceCss),
1047
+ generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss),
1048
+ file
1049
+ ].join(":");
1050
+ const cached = cssHandlerOptionsCache.get(cacheKey);
1051
+ if (cached) return cached;
1052
+ const created = {
1053
+ isMainChunk,
1054
+ postcssOptions: { options: { from: sourceFile ?? file } },
1055
+ sourceOptions: {
1056
+ outputRoot: outputDir,
1057
+ ...generatorCssSource === void 0 ? {} : { cssSources: [generatorCssSource] },
1058
+ ...generatorSourceCss === void 0 ? {} : { sourceCss: generatorSourceCss },
1059
+ ...sourceFile === void 0 ? {} : { sourceFile }
1060
+ },
1061
+ ...majorVersion === void 0 ? {} : { majorVersion }
1062
+ };
1063
+ cssHandlerOptionsCache.set(cacheKey, created);
1064
+ return created;
1065
+ };
1066
+ const getCssUserHandlerOptions = (file) => {
1067
+ const majorVersion = runtimeState.tailwindRuntime.majorVersion;
1068
+ const sourceFile = resolveWebpackCssSourceFile(file);
1069
+ const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0;
1070
+ const generatorSourceCss = removeWebpackGeneratorNonTailwindImports(sourceCss);
1071
+ const cacheKey = [
1072
+ majorVersion ?? "unknown",
1073
+ sourceFile ?? "asset",
1074
+ sourceCss === void 0 ? "source:0" : compilerOptions.cache.computeHash(sourceCss),
1075
+ generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss),
1076
+ file
1077
+ ].join(":");
1078
+ const cached = cssUserHandlerOptionsCache.get(cacheKey);
1079
+ if (cached) return cached;
1080
+ const created = {
1081
+ ...getCssHandlerOptions(file),
1082
+ isMainChunk: false
1083
+ };
1084
+ cssUserHandlerOptionsCache.set(cacheKey, created);
1085
+ return created;
1086
+ };
1087
+ const refreshWebpackSourceCandidates = async () => {
1088
+ const root = compilerOptions.tailwindcssBasedir ?? process.cwd();
1089
+ let sourceScan;
1090
+ try {
1091
+ sourceScan = await resolveViteSourceScanEntries(compilerOptions, runtimeState.tailwindRuntime, {
1092
+ root,
1093
+ outDir: outputDir
1094
+ });
1095
+ } catch (error) {
1096
+ debug("webpack source candidate scan skipped: %O", error);
1097
+ return;
1098
+ }
1099
+ return webpackSourceCandidateScanCache.resolve({
1100
+ changedFiles: watchChangedFiles,
1101
+ collector: createSourceCandidateStore({ bareArbitraryValues: compilerOptions.arbitraryValues?.bareArbitraryValues }),
1102
+ outDir: outputDir,
1103
+ root,
1104
+ sourceScan,
1105
+ watchMode
1106
+ });
1107
+ };
1108
+ const finalizeCssAssetSource = (source, options = {}) => {
1109
+ const styleOptions = resolveStyleOptionsFromContext(compilerOptions);
1110
+ if (isWebGeneratorTarget) {
1111
+ if (options.generatedCss === true) return stripTrailingLineWhitespace(stripUnmatchedTailwindSourceMediaCloseFragments(stripTailwindSourceMediaFragments(stripBundlerGeneratedCssMarkers(source))));
1112
+ return stripTrailingLineWhitespace(stripUnmatchedTailwindSourceMediaCloseFragments(stripTailwindSourceMediaFragments(removeTailwindV4GeneratorAtRules(removeTailwindSourceDirectives(stripBundlerGeneratedCssMarkers(source), { importFallback: true })))));
1113
+ }
1114
+ let finalized = removeTailwindSourceDirectives(stripBundlerGeneratedCssMarkers(source), { importFallback: true });
1115
+ if (isWebGeneratorTarget || options.generatedCss !== true) return isWebGeneratorTarget ? finalized : stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(finalized, styleOptions.cssRemoveHoverPseudoClass));
1116
+ try {
1117
+ finalized = pruneMiniProgramGeneratedCss(finalized, { preservePreflight: true });
1118
+ } catch {
1119
+ finalized = finalizeMiniProgramCss(finalized, {
1120
+ cssPreflight: !hasMiniProgramTailwindV4PreflightReset(finalized) ? compilerOptions.cssPreflight : void 0,
1121
+ isTailwindcssV4: true,
1122
+ tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
1123
+ });
1124
+ }
1125
+ return stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(finalized, styleOptions.cssRemoveHoverPseudoClass));
1126
+ };
1127
+ const finalizeMiniProgramUserCssAssetSource = (source, options = {}) => {
1128
+ const styleOptions = resolveStyleOptionsFromContext(compilerOptions);
1129
+ if (isWebGeneratorTarget) return source;
1130
+ return stripMiniProgramCssSpecificityPlaceholders(removeTailwindV4StandaloneHostPreflightRule(finalizeMiniProgramCss(removeMiniProgramHoverSelectors(source, styleOptions.cssRemoveHoverPseudoClass), {
1131
+ cssPreflight: options.cssPreflight !== false && !hasMiniProgramTailwindV4PreflightReset(source) ? compilerOptions.cssPreflight : void 0,
1132
+ isTailwindcssV4: true,
1133
+ tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
1134
+ })));
1135
+ };
1136
+ const webpackSourceCandidates = !isWebGeneratorTarget && (groupedEntries.css?.length ?? 0) > 0 || cssSources.size > 0 || generatedCssSources.size > 0 || isCssSourceTraceEnabled(compilerOptions) ? await refreshWebpackSourceCandidates() : void 0;
1137
+ const webpackSourceCandidateValueSignature = webpackSourceCandidates ? createCandidateSignature(webpackSourceCandidates.getSourceCandidatesForEntries(void 0)) : "source-candidates:0";
1138
+ const cssSourceTraceTokenSources = isCssSourceTraceEnabled(compilerOptions) && webpackSourceCandidates ? createCssTokenSourceMap(webpackSourceCandidates.tokenSources, compilerOptions) : void 0;
1139
+ const cssSourceTraceSignature = createCssSourceTraceCacheSignature(cssSourceTraceTokenSources, compilerOptions);
1140
+ const annotateCss = (css) => annotateCssSourceTrace(css, {
1141
+ opts: compilerOptions,
1142
+ tokenSources: cssSourceTraceTokenSources
1143
+ });
1144
+ const shouldInjectCssTracePreflight = (cssHandlerOptions) => {
1145
+ return compilerOptions.appType !== "mpx" || cssHandlerOptions.isMainChunk !== false;
1146
+ };
1147
+ const finalizeTracedCss = (css, cssHandlerOptions) => {
1148
+ const traced = annotateCss(css);
1149
+ if (isWebGeneratorTarget || !isCssSourceTraceEnabled(compilerOptions)) return traced;
1150
+ return finalizeMiniProgramUserCssAssetSource(traced, { cssPreflight: shouldInjectCssTracePreflight(cssHandlerOptions) });
1151
+ };
1152
+ const hasRuntimeTransformAssets = Boolean(!isWebGeneratorTarget && ((groupedEntries.html?.length ?? 0) > 0 || (groupedEntries.js?.length ?? 0) > 0));
1153
+ const forceRuntimeRefresh = getRuntimeRefreshRequirement();
1154
+ debug("processAssets ensure runtime set forceRefresh=%s major=%s", forceRuntimeRefresh, runtimeState.tailwindRuntime.majorVersion ?? "unknown");
1155
+ let runtimeSet;
1156
+ let runtimeAffectingSourceHash = "runtime-affecting:0";
1157
+ if (isWebGeneratorTarget && !hasRuntimeTransformAssets && !forceRuntimeRefresh) runtimeSet = getRuntimeClassSetSync(runtimeState.tailwindRuntime);
1158
+ else if (watchMode && !forceRuntimeRefresh) {
1159
+ const shouldSkipInitialRuntimeBundleScan = isWebGeneratorTarget && !webpackWatchRuntimeScanInitialized;
1160
+ const baseRuntimeSet = getRuntimeClassSetSync(runtimeState.tailwindRuntime);
1161
+ const snapshot = buildWebpackBundleSnapshot(assets, compilerOptions, bundleBuildState, compilation);
1162
+ if (!webpackWatchRuntimeScanInitialized && !shouldSkipInitialRuntimeBundleScan) {
1163
+ for (const entry of snapshot.entries) if (entry.type === "html" || entry.type === "js") snapshot.runtimeAffectingChangedByType[entry.type].add(entry.file);
1164
+ }
1165
+ runtimeAffectingSourceHash = compilerOptions.cache.computeHash([...(groupedEntries.html ?? []).map(([file, source]) => `${file}:${compilerOptions.cache.computeHash(source.source().toString())}`), ...(groupedEntries.js ?? []).map(([file, source]) => `${file}:${compilerOptions.cache.computeHash(source.source().toString())}`)].sort().join("\n\n"));
1166
+ if (shouldSkipInitialRuntimeBundleScan) runtimeSet = baseRuntimeSet;
1167
+ else try {
1168
+ runtimeSet = await bundleRuntimeClassSetManager.sync(runtimeState.tailwindRuntime, snapshot, {
1169
+ baseClassSet: baseRuntimeSet,
1170
+ skipInitialFullScanWithBase: false
1171
+ });
1172
+ } catch (error) {
1173
+ debug("webpack incremental runtime set sync failed, fallback to full collect: %O", error);
1174
+ await bundleRuntimeClassSetManager.reset();
1175
+ runtimeSet = getRuntimeClassSetSync(runtimeState.tailwindRuntime);
1176
+ }
1177
+ releaseWebpackBundleSnapshotSources(snapshot);
1178
+ updateBundleBuildState(bundleBuildState, snapshot, /* @__PURE__ */ new Map(), { incremental: true });
1179
+ webpackWatchRuntimeScanInitialized = true;
1180
+ } else {
1181
+ if (forceRuntimeRefresh) {
1182
+ await bundleRuntimeClassSetManager.reset();
1183
+ webpackWatchRuntimeScanInitialized = false;
1184
+ }
1185
+ runtimeSet = await ensureRuntimeClassSet(runtimeState, {
1186
+ forceRefresh: forceRuntimeRefresh,
1187
+ forceCollect: !watchMode || forceRuntimeRefresh,
1188
+ clearCache: forceRuntimeRefresh,
1189
+ allowEmpty: false
1190
+ });
1191
+ }
1192
+ await refreshRuntimeMetadata(forceRuntimeRefresh);
1193
+ consumeRuntimeRefreshRequirement();
1194
+ const webpackSourceCandidateSet = webpackSourceCandidates?.getSourceCandidatesForEntries(void 0);
1195
+ const generatorRuntimeSet = new Set(runtimeSet);
1196
+ if (webpackSourceCandidateSet?.size) {
1197
+ for (const candidate of webpackSourceCandidateSet) if (isRuntimeTransformCandidate(candidate)) generatorRuntimeSet.add(candidate);
1198
+ }
1199
+ const transformRuntimeSet = new Set(runtimeSet);
1200
+ if (hasRuntimeTransformAssets && Array.isArray(groupedEntries.css)) for (const [, originalSource] of groupedEntries.css) for (const candidate of collectGeneratedCssRuntimeCandidates(originalSource.source().toString())) transformRuntimeSet.add(candidate);
1201
+ const transformedJsRuntimeCandidates = /* @__PURE__ */ new Set();
1202
+ let currentJsRuntimeCandidates;
1203
+ let currentJsRuntimeTokenSignature;
1204
+ const getCurrentJsRuntimeCandidates = () => {
1205
+ if (isWebGeneratorTarget) return;
1206
+ if (currentJsRuntimeCandidates) return currentJsRuntimeCandidates;
1207
+ currentJsRuntimeCandidates = /* @__PURE__ */ new Set();
1208
+ for (const file of jsAssets.values()) {
1209
+ const asset = compilation.getAsset(file);
1210
+ if (!asset) continue;
1211
+ const value = asset.source.source();
1212
+ const source = typeof value === "string" ? value : value.toString();
1213
+ for (const candidate of collectStrictEscapedRuntimeCandidates(source, MappingChars2String, escapeFragments)) if (isRuntimeTransformCandidate(candidate)) currentJsRuntimeCandidates.add(candidate);
1214
+ }
1215
+ return currentJsRuntimeCandidates;
1216
+ };
1217
+ const getCurrentJsRuntimeTokenSignature = () => {
1218
+ if (currentJsRuntimeTokenSignature !== void 0) return currentJsRuntimeTokenSignature;
1219
+ if (isWebGeneratorTarget) {
1220
+ currentJsRuntimeTokenSignature = "";
1221
+ return currentJsRuntimeTokenSignature;
1222
+ }
1223
+ const tokens = [];
1224
+ for (const file of jsAssets.values()) {
1225
+ const asset = compilation.getAsset(file);
1226
+ if (!asset) continue;
1227
+ const value = asset.source.source();
1228
+ const source = typeof value === "string" ? value : value.toString();
1229
+ tokens.push(...collectRuntimeTokenSignatureParts(source));
1230
+ }
1231
+ currentJsRuntimeTokenSignature = tokens.sort().join("\n");
1232
+ return currentJsRuntimeTokenSignature;
1233
+ };
1234
+ const rememberTransformedRuntimeCandidates = (source) => {
1235
+ currentJsRuntimeCandidates = void 0;
1236
+ currentJsRuntimeTokenSignature = void 0;
1237
+ const value = typeof source === "string" ? source : source.source();
1238
+ const code = typeof value === "string" ? value : value.toString();
1239
+ for (const candidate of collectStrictEscapedRuntimeCandidates(code, MappingChars2String, escapeFragments)) if (isRuntimeTransformCandidate(candidate)) transformedJsRuntimeCandidates.add(candidate);
1240
+ };
1241
+ const createRuntimeSetHash = (generatorRuntimeSet) => compilerOptions.cache.computeHash([
1242
+ getRuntimeClassSetSignature(runtimeState.tailwindRuntime),
1243
+ [...runtimeSet].sort().join("\n"),
1244
+ [...transformRuntimeSet].sort().join("\n"),
1245
+ [...generatorRuntimeSet].sort().join("\n"),
1246
+ getCurrentJsRuntimeTokenSignature()
1247
+ ].join("\n\n"));
1248
+ const getGeneratorRuntimeSet = () => {
1249
+ const currentJsCandidates = getCurrentJsRuntimeCandidates();
1250
+ if (transformedJsRuntimeCandidates.size === 0 && (!currentJsCandidates || currentJsCandidates.size === 0)) return generatorRuntimeSet;
1251
+ return new Set([
1252
+ ...generatorRuntimeSet,
1253
+ ...currentJsCandidates ?? [],
1254
+ ...transformedJsRuntimeCandidates
1255
+ ]);
1256
+ };
1257
+ const defaultTemplateHandlerOptions = { runtimeSet: transformRuntimeSet };
1258
+ debug("get runtimeSet, class count: %d, transform class count: %d", runtimeSet.size, transformRuntimeSet.size);
1259
+ const tasks = [];
1260
+ const htmlTaskFactories = [];
1261
+ const cssTaskFactories = [];
1262
+ const enqueueTask = async (factory, target) => {
1263
+ if (watchMode) {
1264
+ await factory();
1265
+ return;
1266
+ }
1267
+ target.push(factory);
1268
+ };
1269
+ if (!isWebGeneratorTarget && Array.isArray(groupedEntries.html)) for (const element of groupedEntries.html) {
1270
+ const [file, originalSource] = element;
1271
+ let rawSource;
1272
+ const readRawSource = () => {
1273
+ rawSource ?? (rawSource = originalSource.source().toString());
1274
+ return rawSource;
1275
+ };
1276
+ const cacheKey = file;
1277
+ const hashKey = `${file}:asset`;
1278
+ rememberProcessCacheKey(cacheKey, hashKey);
1279
+ const chunkHash = assetHashByChunk.get(file);
1280
+ await enqueueTask(async () => {
1281
+ await processCachedTask({
1282
+ cache: compilerOptions.cache,
1283
+ cacheKey,
1284
+ hashKey,
1285
+ rawSource: chunkHash === void 0 ? readRawSource() : void 0,
1286
+ hash: chunkHash,
1287
+ applyResult(source, { cacheHit }) {
1288
+ updateAssetIfChanged(file, source, {
1289
+ compare: !cacheHit,
1290
+ notifyUpdate: !cacheHit
1291
+ });
1292
+ },
1293
+ onCacheHit() {
1294
+ debug("html cache hit: %s", file);
1295
+ },
1296
+ transform: async () => {
1297
+ const source = new ConcatSource(await compilerOptions.templateHandler(readRawSource(), defaultTemplateHandlerOptions));
1298
+ debug("html handle: %s", file);
1299
+ return { result: source };
1300
+ }
1301
+ });
1302
+ }, htmlTaskFactories);
1303
+ }
1304
+ const jsTaskFactories = [];
1305
+ const enqueueJsTask = async (factory) => {
1306
+ await enqueueTask(factory, jsTaskFactories);
1307
+ };
1308
+ if (!isWebGeneratorTarget && Array.isArray(groupedEntries.js)) for (const [file] of groupedEntries.js) {
1309
+ const cacheKey = getCacheKey(file);
1310
+ const asset = compilation.getAsset(file);
1311
+ if (!asset) continue;
1312
+ const hashKey = `${file}:asset`;
1313
+ rememberProcessCacheKey(cacheKey, hashKey);
1314
+ const absoluteFile = toAbsoluteOutputPath(file, outputDir);
1315
+ let initialRawSource;
1316
+ const readInitialRawSource = () => {
1317
+ if (initialRawSource === void 0) {
1318
+ const initialSource = asset.source.source();
1319
+ initialRawSource = typeof initialSource === "string" ? initialSource : initialSource.toString();
1320
+ }
1321
+ return initialRawSource;
1322
+ };
1323
+ const chunkHash = assetHashByChunk.get(file);
1324
+ await enqueueJsTask(async () => {
1325
+ await processCachedTask({
1326
+ cache: compilerOptions.cache,
1327
+ cacheKey,
1328
+ hashKey,
1329
+ rawSource: chunkHash === void 0 ? readInitialRawSource() : void 0,
1330
+ hash: chunkHash,
1331
+ applyResult(source, { cacheHit }) {
1332
+ if (updateAssetIfChanged(file, source, {
1333
+ compare: !cacheHit,
1334
+ notifyUpdate: !cacheHit
1335
+ })) rememberTransformedRuntimeCandidates(source);
1336
+ },
1337
+ onCacheHit() {
1338
+ debug("js cache hit: %s", file);
1339
+ },
1340
+ transform: async () => {
1341
+ const currentSourceValue = compilation.getAsset(file)?.source.source();
1342
+ const currentSource = typeof currentSourceValue === "string" ? currentSourceValue : currentSourceValue?.toString() ?? "";
1343
+ const handlerOptions = {
1344
+ tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
1345
+ generateMap: false,
1346
+ filename: absoluteFile,
1347
+ moduleGraph: moduleGraphOptions,
1348
+ babelParserOptions: { sourceFilename: absoluteFile }
1349
+ };
1350
+ if (shouldSkipJsTransform(currentSource, {
1351
+ ...handlerOptions,
1352
+ classNameSet: transformRuntimeSet
1353
+ })) return { result: new ConcatSource(currentSource) };
1354
+ const { code, linked } = await compilerOptions.jsHandler(currentSource, transformRuntimeSet, handlerOptions);
1355
+ const source = new ConcatSource(code);
1356
+ debug("js handle: %s", file);
1357
+ applyLinkedResults(linked);
1358
+ return { result: source };
1359
+ }
1360
+ });
1361
+ });
1362
+ }
1363
+ if (Array.isArray(groupedEntries.css)) for (const element of groupedEntries.css) {
1364
+ const [file, originalSource] = element;
1365
+ let rawSource;
1366
+ const readRawSource = () => {
1367
+ rawSource ?? (rawSource = originalSource.source().toString());
1368
+ return rawSource;
1369
+ };
1370
+ const chunkHash = assetHashByChunk.get(file);
1371
+ const cssHandlerOptionsForProcessedAsset = getCssHandlerOptions(file);
1372
+ const processedCssAssetMetadata = { isMainCssChunk: cssHandlerOptionsForProcessedAsset.isMainChunk };
1373
+ const processedSourceFile = cssHandlerOptionsForProcessedAsset.sourceOptions?.sourceFile;
1374
+ const processedSourceCss = processedSourceFile ? cssSources.get(path.resolve(processedSourceFile))?.css : void 0;
1375
+ const shouldRegenerateProcessedTailwindV4SourceCss = processedSourceCss !== void 0 && (hasTailwindSourceDirectives(processedSourceCss, { importFallback: true }) || processedSourceCss.includes("@config"));
1376
+ const processedCssAssetKnown = isKnownWebpackProcessedCssAsset?.(file, processedCssAssetMetadata) === true;
1377
+ const processedLoaderGeneratedCss = processedSourceFile ? generatedCssSources.get(path.resolve(processedSourceFile)) : void 0;
1378
+ const processedCssDecisionCacheKey = `${file}:${createRuntimeAwareCssHash(chunkHash, chunkHash === void 0 ? void 0 : "webpack-css-asset:chunk", `${createRuntimeSetHash(getGeneratorRuntimeSet())}:${runtimeAffectingSourceHash}:${webpackSourceCandidates?.signatureHash ?? "source-candidates:0"}:${webpackSourceCandidateValueSignature}:${cssSourceTraceSignature}`) ?? "hash:0"}`;
1379
+ let currentProcessedRawSource;
1380
+ let hasGeneratedCssMarker = false;
1381
+ let hasTailwindGeneratedAssetCss = false;
1382
+ const readCurrentProcessedRawSource = () => {
1383
+ currentProcessedRawSource ?? (currentProcessedRawSource = readRawSource());
1384
+ return currentProcessedRawSource;
1385
+ };
1386
+ const shouldRegenerateStaleProcessedWebCssAsset = isWebGeneratorTarget && cssHandlerOptionsForProcessedAsset.isMainChunk && webpackSourceCandidateSet !== void 0 && (hasMissingRuntimeCandidates(processedLoaderGeneratedCss?.classSet, webpackSourceCandidateSet) || hasMissingRuntimeCandidates(resolveGeneratedCssRuntimeCandidates(readCurrentProcessedRawSource(), processedLoaderGeneratedCss?.classSet), webpackSourceCandidateSet));
1387
+ const cachedSkipProcessedCssAsset = processedCssAssetKnown ? processedCssAssetSkipDecisionCache.get(processedCssDecisionCacheKey) : void 0;
1388
+ if (cachedSkipProcessedCssAsset !== void 0) {
1389
+ hasGeneratedCssMarker = cachedSkipProcessedCssAsset && cssHandlerOptionsForProcessedAsset.isMainChunk;
1390
+ hasTailwindGeneratedAssetCss = hasGeneratedCssMarker;
1391
+ } else {
1392
+ const source = readCurrentProcessedRawSource();
1393
+ hasGeneratedCssMarker = hasBundlerGeneratedCssMarker(source);
1394
+ hasTailwindGeneratedAssetCss = hasTailwindGeneratedCss(source) || hasTailwindGeneratedCssMarkers(source);
1395
+ }
1396
+ const shouldForceConfiguredMainCssGeneration = cssHandlerOptionsForProcessedAsset.isMainChunk && hasConfiguredTailwindV4SourceRoots() && !hasGeneratedCssMarker;
1397
+ const hasProcessedMainAssetUserCss = cachedSkipProcessedCssAsset === void 0 && cssHandlerOptionsForProcessedAsset.isMainChunk && (hasGeneratedCssMarker || hasTailwindGeneratedAssetCss) && createWebpackUserCssSourceAppend([...cssSources.entries()].map(([sourceFile, source]) => ({
1398
+ ...source,
1399
+ file: sourceFile
1400
+ })), readCurrentProcessedRawSource()) !== void 0;
1401
+ const shouldFinalizeProcessedWebCssAsset = isWebGeneratorTarget && !shouldForceConfiguredMainCssGeneration && !shouldRegenerateProcessedTailwindV4SourceCss && hasTailwindSourceDirectives(readCurrentProcessedRawSource(), { importFallback: true });
1402
+ const shouldPreserveFinalWebCssAsset = isWebGeneratorTarget && processedSourceFile === void 0 && !shouldForceConfiguredMainCssGeneration && (hasGeneratedCssMarker || hasTailwindGeneratedAssetCss);
1403
+ const shouldSkipKnownProcessedCssAsset = !shouldForceConfiguredMainCssGeneration && !shouldRegenerateProcessedTailwindV4SourceCss && !shouldRegenerateStaleProcessedWebCssAsset && (processedCssAssetKnown || isWebpackProcessedCssAsset?.(file, readCurrentProcessedRawSource(), processedCssAssetMetadata)) && !hasProcessedMainAssetUserCss && (!cssHandlerOptionsForProcessedAsset.isMainChunk || hasGeneratedCssMarker || hasTailwindGeneratedAssetCss);
1404
+ const shouldSkipProcessedCssAsset = cachedSkipProcessedCssAsset ?? (shouldFinalizeProcessedWebCssAsset || shouldPreserveFinalWebCssAsset || shouldSkipKnownProcessedCssAsset);
1405
+ if (processedCssAssetKnown && cachedSkipProcessedCssAsset === void 0 && !shouldFinalizeProcessedWebCssAsset && !shouldPreserveFinalWebCssAsset) processedCssAssetSkipDecisionCache.set(processedCssDecisionCacheKey, shouldSkipProcessedCssAsset);
1406
+ if (shouldSkipProcessedCssAsset) {
1407
+ const hashKey = `${file}:asset`;
1408
+ const sourceHash = chunkHash === void 0 ? compilerOptions.cache.computeHash(readCurrentProcessedRawSource()) : "webpack-css-asset:chunk";
1409
+ rememberProcessCacheKey(file, hashKey);
1410
+ await enqueueTask(async () => {
1411
+ await processCachedTask({
1412
+ cache: compilerOptions.cache,
1413
+ cacheKey: file,
1414
+ hashKey,
1415
+ rawSource: chunkHash === void 0 ? readCurrentProcessedRawSource() : void 0,
1416
+ hash: createRuntimeAwareCssHash(chunkHash, sourceHash, `${createRuntimeSetHash(getGeneratorRuntimeSet())}:${runtimeAffectingSourceHash}:${webpackSourceCandidates?.signatureHash ?? "source-candidates:0"}:${webpackSourceCandidateValueSignature}:${cssSourceTraceSignature}`),
1417
+ applyResult(source, { cacheHit }) {
1418
+ updateAssetIfChanged(file, source, {
1419
+ compare: !cacheHit,
1420
+ notifyUpdate: !cacheHit
1421
+ });
1422
+ },
1423
+ onCacheHit() {
1424
+ debug("css webpack-loader-pipeline cache hit: %s", file);
1425
+ },
1426
+ transform: async () => {
1427
+ const source = readCurrentProcessedRawSource();
1428
+ const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, { generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss }));
1429
+ debug("css skip webpack-loader-pipeline asset: %s", file);
1430
+ return { result: new ConcatSource(finalizeTracedCss(nextCss, cssHandlerOptionsForProcessedAsset)) };
1431
+ }
1432
+ });
1433
+ }, cssTaskFactories);
1434
+ continue;
1435
+ }
1436
+ const currentRawSource = readRawSource();
1437
+ if (isWebpackCssLoaderRuntimeSource(currentRawSource)) {
1438
+ const hashKey = `${file}:asset`;
1439
+ rememberProcessCacheKey(file, hashKey);
1440
+ await enqueueTask(async () => {
1441
+ await processCachedTask({
1442
+ cache: compilerOptions.cache,
1443
+ cacheKey: file,
1444
+ hashKey,
1445
+ rawSource: currentRawSource,
1446
+ hash: createRuntimeAwareCssHash(chunkHash, compilerOptions.cache.computeHash(currentRawSource), "webpack-css-loader-runtime"),
1447
+ applyResult(source, { cacheHit }) {
1448
+ updateAssetIfChanged(file, source, {
1449
+ compare: !cacheHit,
1450
+ notifyUpdate: !cacheHit
1451
+ });
1452
+ },
1453
+ onCacheHit() {
1454
+ debug("css-loader runtime cache hit: %s", file);
1455
+ },
1456
+ transform: async () => ({ result: new ConcatSource(currentRawSource) })
1457
+ });
1458
+ }, cssTaskFactories);
1459
+ continue;
1460
+ }
1461
+ const cacheKey = file;
1462
+ const hashKey = `${file}:asset`;
1463
+ rememberProcessCacheKey(cacheKey, hashKey);
1464
+ const cssHandlerOptionsForHash = getCssHandlerOptions(file, currentRawSource);
1465
+ const cssChunkHash = watchMode && cssHandlerOptionsForHash.isMainChunk ? void 0 : chunkHash;
1466
+ const cssSourceHash = (() => {
1467
+ const sourceFile = resolveWebpackCssSourceFile(file, currentRawSource);
1468
+ const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0;
1469
+ const generatorSourceCss = removeWebpackGeneratorNonTailwindImports(sourceCss);
1470
+ if (sourceCss === void 0) return sourceFile === void 0 ? "webpack-css-source:0" : `webpack-css-source:0:${sourceFile}`;
1471
+ return `webpack-css-source:1:${compilerOptions.cache.computeHash(sourceCss)}:${generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss)}`;
1472
+ })();
1473
+ const runtimeAwareHash = createRuntimeAwareCssHash(cssChunkHash, compilerOptions.cache.computeHash(currentRawSource), `${createRuntimeSetHash(getGeneratorRuntimeSet())}:${runtimeAffectingSourceHash}:${webpackSourceCandidates?.signatureHash ?? "source-candidates:0"}:${webpackSourceCandidateValueSignature}:${cssSourceTraceSignature}:${cssSourceHash}`);
1474
+ await enqueueTask(async () => {
1475
+ await processCachedTask({
1476
+ cache: compilerOptions.cache,
1477
+ cacheKey,
1478
+ hashKey,
1479
+ rawSource: currentRawSource,
1480
+ hash: runtimeAwareHash,
1481
+ applyResult(source, { cacheHit }) {
1482
+ updateAssetIfChanged(file, source, {
1483
+ compare: !cacheHit,
1484
+ notifyUpdate: !cacheHit
1485
+ });
1486
+ },
1487
+ onCacheHit() {
1488
+ debug("css cache hit: %s", file);
1489
+ },
1490
+ transform: async () => {
1491
+ await runtimeState.readyPromise;
1492
+ const cssHandlerOptions = getCssHandlerOptions(file, currentRawSource);
1493
+ const generatorRawSource = resolveWebpackGeneratorRawSource(currentRawSource, cssHandlerOptions);
1494
+ if (isWebpackCssLoaderRuntimeSource(generatorRawSource)) return { result: new ConcatSource(currentRawSource) };
1495
+ const sourceFile = cssHandlerOptions.sourceOptions?.sourceFile;
1496
+ const loaderGeneratedCss = sourceFile && !isWebGeneratorTarget ? generatedCssSources.get(path.resolve(sourceFile)) : void 0;
1497
+ const sourceCss = sourceFile ? cssSources.get(path.resolve(sourceFile))?.css : void 0;
1498
+ const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
1499
+ if (loaderGeneratedCss && !shouldRegenerateExplicitTailwindV4CssSource) {
1500
+ for (const className of loaderGeneratedCss.classSet) {
1501
+ generatorRuntimeSet.add(className);
1502
+ transformRuntimeSet.add(className);
1503
+ }
1504
+ for (const dependency of loaderGeneratedCss.dependencies) compilation.fileDependencies?.add?.(dependency);
1505
+ const css = finalizeTracedCss(finalizeCssAssetSource(loaderGeneratedCss.css, { generatedCss: true }), cssHandlerOptions);
1506
+ debug("css consume webpack loader generation: %s <- %s", file, sourceFile);
1507
+ return { result: new ConcatSource(css) };
1508
+ }
1509
+ const sourceCssProcessed = sourceFile ? cssSources.get(path.resolve(sourceFile))?.processed === true : false;
1510
+ const registeredUserRawSource = createWebpackUserCssSourceAppend([...cssSources.entries()].map(([registeredSourceFile, source]) => ({
1511
+ ...source,
1512
+ file: registeredSourceFile
1513
+ })), generatorRawSource, sourceFile, (registeredSourceFile) => isSameWebpackSourceScope(file, registeredSourceFile, sourceFile));
1514
+ const currentAssetLooksGenerated = hasTailwindGeneratedCss(currentRawSource) || hasTailwindGeneratedCssMarkers(currentRawSource);
1515
+ const currentAssetHasBundlerGeneratedMarker = hasBundlerGeneratedCssMarker(currentRawSource);
1516
+ const shouldPreserveGeneratedWebAssetUserCss = isWebGeneratorTarget && currentAssetLooksGenerated && !currentAssetHasBundlerGeneratedMarker;
1517
+ const hasExplicitSourceCssForCurrentAsset = sourceCss !== void 0 && (hasTailwindRootDirectives(sourceCss, { importFallback: true }) || hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || hasTailwindApplyDirective(sourceCss));
1518
+ const currentAssetHasAdditionalUserCss = currentAssetLooksGenerated && hasAdditionalWebpackAssetUserCssMarkers(currentRawSource, generatorRawSource);
1519
+ const currentAssetHasUserCss = (sourceCssProcessed || hasExplicitSourceCssForCurrentAsset) && currentAssetLooksGenerated && !shouldPreserveGeneratedWebAssetUserCss ? currentAssetHasAdditionalUserCss : shouldUseWebpackAssetAsGeneratorUserCss(currentRawSource, generatorRawSource, { processed: sourceCssProcessed || shouldPreserveGeneratedWebAssetUserCss });
1520
+ const shouldAppendCurrentAssetUserCss = !currentAssetHasBundlerGeneratedMarker && !shouldPreserveGeneratedWebAssetUserCss && (!sourceCssProcessed || registeredUserRawSource === void 0 || currentAssetHasUserCss) && !(sourceCssProcessed && currentAssetLooksGenerated && !currentAssetHasUserCss);
1521
+ const userRawSource = createWebpackGeneratorUserCssSourceAppend(sourceCssProcessed && shouldAppendCurrentAssetUserCss ? {
1522
+ css: currentRawSource,
1523
+ processed: true
1524
+ } : shouldAppendCurrentAssetUserCss && currentAssetHasUserCss ? {
1525
+ css: currentRawSource,
1526
+ processed: currentAssetLooksGenerated
1527
+ } : void 0, registeredUserRawSource);
1528
+ if (isPureLocalCssImportWrapper(currentRawSource)) return { result: new ConcatSource(removeTailwindSourceDirectives(stripBundlerGeneratedCssMarkers(currentRawSource), { importFallback: true })) };
1529
+ const fallbackGeneratorRuntimeSet = getGeneratorRuntimeSet();
1530
+ const hasExplicitTailwindV4SourceCss = sourceCss !== void 0 && (hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
1531
+ const shouldForceTailwindV4Generation = cssHandlerOptions.isMainChunk && hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 || hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) || hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) || hasTailwindApplyDirective(generatorRawSource) || hasExplicitTailwindV4SourceCss);
1532
+ const resolvedScopedGeneratorRuntimeSet = await createScopedGeneratorRuntime({
1533
+ cssHandlerOptions,
1534
+ fallbackRuntime: hasExplicitTailwindV4SourceCss ? /* @__PURE__ */ new Set() : fallbackGeneratorRuntimeSet,
1535
+ getSourceCandidatesForEntries: webpackSourceCandidates?.getSourceCandidatesForEntries,
1536
+ majorVersion: runtimeState.tailwindRuntime.majorVersion,
1537
+ outputFile: file,
1538
+ rawSource: sourceFile ? cssSources.get(path.resolve(sourceFile))?.css ?? generatorRawSource : generatorRawSource,
1539
+ shouldExcludeSubpackageSourceCandidates: () => false,
1540
+ sourceFile: sourceFile ?? file,
1541
+ scopedSourceCandidateGetter: webpackSourceCandidates?.getSourceCandidatesForEntries
1542
+ });
1543
+ const scopedGeneratorRuntimeSet = !hasExplicitTailwindV4SourceCss && resolvedScopedGeneratorRuntimeSet !== fallbackGeneratorRuntimeSet ? new Set([...fallbackGeneratorRuntimeSet, ...resolvedScopedGeneratorRuntimeSet]) : resolvedScopedGeneratorRuntimeSet;
1544
+ const generatorCssSources = normalizeWebpackGeneratorCssSources(cssHandlerOptions.sourceOptions?.cssSources);
1545
+ const generatorCssHandlerOptions = generatorCssSources === void 0 ? cssHandlerOptions : {
1546
+ ...cssHandlerOptions,
1547
+ sourceOptions: {
1548
+ ...cssHandlerOptions.sourceOptions ?? {},
1549
+ cssSources: generatorCssSources
1550
+ }
1551
+ };
1552
+ const generatorOptions = {
1553
+ opts: compilerOptions,
1554
+ runtimeState,
1555
+ runtime: scopedGeneratorRuntimeSet,
1556
+ rawSource: generatorRawSource,
1557
+ forceGenerator: shouldForceTailwindV4Generation,
1558
+ ...hasUsableWebpackGeneratorCssSources(generatorCssSources) ? { cssSources: generatorCssSources } : {},
1559
+ ...userRawSource === void 0 ? {} : { userRawSource: userRawSource.css },
1560
+ ...userRawSource?.processed === true ? { userRawSourceProcessed: true } : {},
1561
+ file,
1562
+ cssHandlerOptions: generatorCssHandlerOptions,
1563
+ cssUserHandlerOptions: getCssUserHandlerOptions(file),
1564
+ getSourceCandidatesForEntries: webpackSourceCandidates?.getSourceCandidatesForEntries,
1565
+ sourceCandidates: scopedGeneratorRuntimeSet,
1566
+ restoreLocalCssImports: false,
1567
+ styleHandler: compilerOptions.styleHandler,
1568
+ debug
1569
+ };
1570
+ let generated;
1571
+ try {
1572
+ generated = await generateTailwindV4Css({
1573
+ ...generatorOptions,
1574
+ outputFile: file
1575
+ });
1576
+ } catch (error) {
1577
+ if (!(!hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) && !hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) && !hasTailwindApplyDirective(generatorRawSource) && !hasExplicitTailwindV4SourceCss && configuredMainCssEntryFiles.length === 0)) throw error;
1578
+ debug("css generator skipped for plain webpack css asset: %s %O", file, error);
1579
+ generated = void 0;
1580
+ }
1581
+ const source = new ConcatSource(finalizeTracedCss(generated ? finalizeCssAssetSource(generated.css, { generatedCss: true }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }), cssHandlerOptions));
1582
+ if (generated) {
1583
+ for (const className of generated.classSet) generatorRuntimeSet.add(className);
1584
+ debug("css handle via tailwind v%s engine(%s): %s", runtimeState.tailwindRuntime.majorVersion, generated.target, file);
1585
+ } else debug("css handle: %s", file);
1586
+ return { result: source };
1587
+ }
1588
+ });
1589
+ }, cssTaskFactories);
1590
+ }
1591
+ if (!watchMode) {
1592
+ pushConcurrentTaskFactories(tasks, htmlTaskFactories, taskConcurrency);
1593
+ await Promise.all(tasks);
1594
+ tasks.length = 0;
1595
+ pushConcurrentTaskFactories(tasks, jsTaskFactories, taskConcurrency);
1596
+ await Promise.all(tasks);
1597
+ tasks.length = 0;
1598
+ pushConcurrentTaskFactories(tasks, cssTaskFactories, taskConcurrency);
1599
+ }
1600
+ await Promise.all(tasks);
1601
+ compilerOptions.cache.prune?.({
1602
+ cacheKeys: activeProcessCacheKeys,
1603
+ hashKeys: activeProcessHashKeys
1604
+ });
1605
+ const activeCssFiles = new Set(groupedEntries.css?.map(([file]) => file) ?? []);
1606
+ pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles);
1607
+ if (activeCssFiles.size > 0) pruneWebpackCssSources?.(new Set([
1608
+ ...registeredWebpackCssSourceFiles,
1609
+ ...activeWebpackCssSourceFiles,
1610
+ ...[...cssAssetResources.values()].flatMap((resources) => [...resources])
1611
+ ]), { watchMode });
1612
+ debug("end");
1613
+ emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt, { memoryDebug: resolveWebpackMemoryDebugStats({
1614
+ activeAssetFiles: entries.length,
1615
+ activeCssFiles: activeCssFiles.size,
1616
+ activeProcessCacheKeys,
1617
+ activeProcessHashKeys,
1618
+ cache: compilerOptions.cache,
1619
+ cssHandlerOptionsCache,
1620
+ cssUserHandlerOptionsCache,
1621
+ phase: "processAssets",
1622
+ sourceCandidateScan: webpackSourceCandidateScanCache.getMemoryStats()
1623
+ }) });
1624
+ compilerOptions.onEnd();
1625
+ });
1626
+ });
1627
+ }
1628
+ //#endregion
1629
+ //#region ../../node_modules/.pnpm/tsdown@0.22.2_oxc-resolver@11.20.0_tsx@4.22.4_typescript@6.0.3_unrun@0.2.37_synckit@0.1_c2142480ddc0e0584f1991298dd762a0/node_modules/tsdown/esm-shims.js
1630
+ const getFilename = () => fileURLToPath(import.meta.url);
1631
+ const getDirname = () => path.dirname(getFilename());
1632
+ const __dirname = /* @__PURE__ */ getDirname();
1633
+ //#endregion
1634
+ //#region src/bundlers/webpack/loaders/runtime-registry.ts
1635
+ const runtimeRegistryHolder = globalThis;
1636
+ const runtimeRegistry = runtimeRegistryHolder.__WEAPP_TW_WEBPACK_LOADER_RUNTIME_REGISTRY__ ?? (runtimeRegistryHolder.__WEAPP_TW_WEBPACK_LOADER_RUNTIME_REGISTRY__ = /* @__PURE__ */ new Map());
1637
+ function setWebpackLoaderRuntime(key, entry) {
1638
+ runtimeRegistry.set(key, entry);
1639
+ }
1640
+ function deleteWebpackLoaderRuntime(key) {
1641
+ runtimeRegistry.delete(key);
1642
+ }
1643
+ //#endregion
1644
+ //#region src/bundlers/webpack/shared/loader-anchors.ts
1645
+ const MPX_STRIP_CONDITIONAL_LOADER = "@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader";
1646
+ const MPX_STYLE_COMPILER_LOADER = "@mpxjs/webpack-plugin/lib/style-compiler/index";
1647
+ const MPX_REWRITE_PRECEDENCE_LOADERS = [MPX_STYLE_COMPILER_LOADER, MPX_STRIP_CONDITIONAL_LOADER];
1648
+ function createFinder(targets) {
1649
+ return (entries) => entries.findIndex((entry) => targets.some((target) => entry?.loader?.includes?.(target)));
1650
+ }
1651
+ function createPrioritizedFinder(targets) {
1652
+ return (entries) => {
1653
+ for (const target of targets) {
1654
+ const idx = entries.findIndex((entry) => entry?.loader?.includes?.(target));
1655
+ if (idx !== -1) return idx;
1656
+ }
1657
+ return -1;
1658
+ };
1659
+ }
1660
+ function createLoaderAnchorFinders(appType) {
1661
+ if (isMpx(appType)) return {
1662
+ findRewriteAnchor: createPrioritizedFinder(MPX_REWRITE_PRECEDENCE_LOADERS),
1663
+ findClassSetAnchor: createFinder([MPX_STYLE_COMPILER_LOADER])
1664
+ };
1665
+ const fallbackFinder = createFinder(["postcss-loader"]);
1666
+ return {
1667
+ findRewriteAnchor: fallbackFinder,
1668
+ findClassSetAnchor: fallbackFinder
1669
+ };
1670
+ }
1671
+ //#endregion
1672
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.ts
1673
+ function setupWebpackV5Loaders(options) {
1674
+ const { compiler, options: compilerOptions, appType, weappTailwindcssPackageDir, shouldRewriteCssImports, runtimeLoaderPath, registerAutoCssSource, runtimeState, getClassSetInLoader, getRuntimeSetInLoader, markWebpackProcessedCssSource, markWebpackCssSourceModule, registerWebpackGeneratedCss, registerWebpackCssSourceFile, getRuntimeWatchDependencies, runtimeRegistryKey = `weapp-tailwindcss-${Date.now()}-${Math.random().toString(36).slice(2)}`, debug } = options;
1675
+ const isMpxApp = isMpx(appType);
1676
+ const generatorTarget = compilerOptions.generator?.target ?? inferGeneratorTargetFromEnv();
1677
+ const generatorBranch = resolveRuntimeBranch({
1678
+ appType: compilerOptions.appType,
1679
+ generatorTarget,
1680
+ platform: compilerOptions.cssOptions?.platform ?? compilerOptions.platform,
1681
+ tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
1682
+ uniAppX: compilerOptions.uniAppX
1683
+ });
1684
+ if (shouldRewriteCssImports && isMpxApp) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
1685
+ const runtimeClassSetLoader = runtimeLoaderPath ?? path.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
1686
+ const shouldInjectRuntimeClassSetLoader = !generatorBranch.isWeb;
1687
+ const shouldInjectCssImportRewriteLoader = shouldRewriteCssImports || !generatorBranch.isWeb || runtimeState.tailwindRuntime.majorVersion === 4;
1688
+ const runtimeCssImportRewriteLoader = shouldInjectCssImportRewriteLoader ? path.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js") : void 0;
1689
+ const runtimeClassSetLoaderExists = fs.existsSync(runtimeClassSetLoader);
1690
+ const runtimeCssImportRewriteLoaderExists = runtimeCssImportRewriteLoader ? fs.existsSync(runtimeCssImportRewriteLoader) : false;
1691
+ const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader ? {
1692
+ pkgDir: weappTailwindcssPackageDir,
1693
+ compilerOptions,
1694
+ runtimeState,
1695
+ ...appType === void 0 ? {} : { appType },
1696
+ ...registerAutoCssSource === void 0 ? {} : { registerCssSource: registerAutoCssSource },
1697
+ ...registerWebpackCssSourceFile === void 0 ? {} : { registerCssSourceFile: registerWebpackCssSourceFile },
1698
+ getRuntimeSet: getRuntimeSetInLoader,
1699
+ ...markWebpackProcessedCssSource === void 0 ? {} : { markGeneratedCssSource: markWebpackProcessedCssSource },
1700
+ ...registerWebpackGeneratedCss === void 0 ? {} : { registerGeneratedCss: registerWebpackGeneratedCss }
1701
+ } : void 0;
1702
+ setWebpackLoaderRuntime(runtimeRegistryKey, {
1703
+ classSet: {
1704
+ getClassSet: getClassSetInLoader,
1705
+ getWatchDependencies: getRuntimeWatchDependencies,
1706
+ ...registerWebpackCssSourceFile === void 0 ? {} : { registerCssSourceFile: registerWebpackCssSourceFile }
1707
+ },
1708
+ ...runtimeLoaderRewriteOptions === void 0 ? {} : { cssImportRewrite: runtimeLoaderRewriteOptions }
1709
+ });
1710
+ const cleanupWebpackLoaderRuntime = () => {
1711
+ deleteWebpackLoaderRuntime(runtimeRegistryKey);
1712
+ };
1713
+ compiler.hooks.watchClose?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
1714
+ compiler.hooks.shutdown?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
1715
+ const { findRewriteAnchor, findClassSetAnchor } = createLoaderAnchorFinders(appType);
1716
+ const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? { tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey } : void 0;
1717
+ if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && isMpxApp) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
1718
+ const createRuntimeClassSetLoaderEntry = () => ({
1719
+ loader: runtimeClassSetLoader,
1720
+ options: { weappTailwindcssRuntimeKey: runtimeRegistryKey },
1721
+ ident: null,
1722
+ type: null
1723
+ });
1724
+ const createCssImportRewriteLoaderEntry = () => {
1725
+ if (!runtimeCssImportRewriteLoader || !cssImportRewriteLoaderOptions) return null;
1726
+ return {
1727
+ loader: runtimeCssImportRewriteLoader,
1728
+ options: cssImportRewriteLoaderOptions,
1729
+ ident: null,
1730
+ type: null
1731
+ };
1732
+ };
1733
+ const { NormalModule } = compiler.webpack;
1734
+ compiler.hooks.compilation.tap(pluginName, (compilation) => {
1735
+ NormalModule.getCompilationHooks(compilation).loader.tap(pluginName, (_loaderContext, module) => {
1736
+ if (!(runtimeClassSetLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
1737
+ patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && isMpxApp);
1738
+ const loaderEntries = module.loaders || [];
1739
+ let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
1740
+ const classSetAnchorIdx = findClassSetAnchor(loaderEntries);
1741
+ const isCssModule = isCssLikeModuleResource(module.resource, compilerOptions.cssMatcher, appType);
1742
+ if (isCssModule && typeof module.resource === "string") markWebpackCssSourceModule?.(module.resource);
1743
+ if (process.env["WEAPP_TW_LOADER_DEBUG"] && isCssModule) debug("loader hook css module: %s loaders=%o anchors=%o", module.resource, loaderEntries.map((x) => x.loader), {
1744
+ rewriteAnchorIdx,
1745
+ classSetAnchorIdx
1746
+ });
1747
+ if (process.env["WEAPP_TW_LOADER_DEBUG"] && typeof module.resource === "string" && module.resource.endsWith(".css")) debug("css module seen: %s loaders=%o anchors=%o", module.resource, loaderEntries.map((x) => x.loader), {
1748
+ rewriteAnchorIdx,
1749
+ classSetAnchorIdx
1750
+ });
1751
+ if (rewriteAnchorIdx === -1 && classSetAnchorIdx === -1 && !isCssModule) return;
1752
+ const anchorlessInsert = (entry, position) => {
1753
+ if (position === "after") loaderEntries.push(entry);
1754
+ else loaderEntries.unshift(entry);
1755
+ };
1756
+ if (cssImportRewriteLoaderOptions && runtimeCssImportRewriteLoaderExists && runtimeCssImportRewriteLoader && isCssModule) {
1757
+ const existingIndex = loaderEntries.findIndex((entry) => entry.loader?.includes?.(runtimeCssImportRewriteLoader));
1758
+ const rewriteLoaderEntry = existingIndex !== -1 ? loaderEntries.splice(existingIndex, 1)[0] : createCssImportRewriteLoaderEntry();
1759
+ if (rewriteLoaderEntry) {
1760
+ const anchorIndex = findRewriteAnchor(loaderEntries);
1761
+ if (anchorIndex === -1) anchorlessInsert(rewriteLoaderEntry, "after");
1762
+ else loaderEntries.splice(anchorIndex + 1, 0, rewriteLoaderEntry);
1763
+ rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
1764
+ }
1765
+ }
1766
+ if (shouldInjectRuntimeClassSetLoader && runtimeClassSetLoaderExists && !hasLoaderEntry(loaderEntries, runtimeClassSetLoader)) {
1767
+ const classSetLoaderEntry = createRuntimeClassSetLoaderEntry();
1768
+ const anchorIndex = findClassSetAnchor(loaderEntries);
1769
+ if (anchorIndex === -1) anchorlessInsert(classSetLoaderEntry, "before");
1770
+ else {
1771
+ const insertIndex = anchorIndex === -1 ? rewriteAnchorIdx : anchorIndex;
1772
+ loaderEntries.splice(insertIndex, 0, classSetLoaderEntry);
1773
+ }
1774
+ }
1775
+ });
1776
+ });
1777
+ }
1778
+ //#endregion
1779
+ //#region src/bundlers/webpack/BaseUnifiedPlugin/v5.ts
1780
+ const debug = createDebug();
1781
+ const weappTailwindcssPackageDir = resolvePackageDir("weapp-tailwindcss");
1782
+ const outputIgnoredPredicatePath = Symbol("weapp-tailwindcss.outputIgnoredPredicatePath");
1783
+ function normalizeIgnoredList(ignored) {
1784
+ return (Array.isArray(ignored) ? [...ignored] : [ignored]).filter((item) => typeof item === "string" || item instanceof RegExp || typeof item === "function");
1785
+ }
1786
+ function createOutputIgnoredPredicate(ignoredList, ignoredPath) {
1787
+ const predicate = (file) => {
1788
+ const resolvedFile = path.resolve(file);
1789
+ if (resolvedFile === ignoredPath || resolvedFile.startsWith(`${ignoredPath}${path.sep}`)) return true;
1790
+ const normalizedFile = file.replace(/\\/g, "/");
1791
+ return ignoredList.some((item) => {
1792
+ if (typeof item === "string") {
1793
+ const resolvedItem = path.resolve(item);
1794
+ if (resolvedFile === resolvedItem || resolvedFile.startsWith(`${resolvedItem}${path.sep}`)) return true;
1795
+ return micromatch.isMatch(normalizedFile, item);
1796
+ }
1797
+ if (item instanceof RegExp) return item.test(normalizedFile);
1798
+ return item(file);
1799
+ });
1800
+ };
1801
+ predicate[outputIgnoredPredicatePath] = ignoredPath;
1802
+ return predicate;
1803
+ }
1804
+ function appendIgnoredPath(ignored, ignoredPath) {
1805
+ if (typeof ignored === "function" && ignored[outputIgnoredPredicatePath] === ignoredPath) return ignored;
1806
+ const ignoredList = normalizeIgnoredList(ignored);
1807
+ if (ignoredList.some((item) => typeof item !== "string")) return createOutputIgnoredPredicate(ignoredList, ignoredPath);
1808
+ if (ignoredList.some((item) => typeof item === "string" && path.resolve(item) === ignoredPath)) return ignored;
1809
+ return [...ignoredList, ignoredPath];
1810
+ }
1811
+ function setupWebpackWatchOutputIgnore(compiler) {
1812
+ const appendOutputIgnoredPath = (watchOptions, outputPath) => {
1813
+ const resolvedOutputPath = outputPath || compiler.outputPath || compiler.options?.output?.path;
1814
+ const outputDir = resolvedOutputPath ? path.resolve(resolvedOutputPath) : void 0;
1815
+ if (!outputDir) return watchOptions;
1816
+ if (watchOptions && typeof watchOptions === "object") {
1817
+ const nextIgnored = appendIgnoredPath(watchOptions.ignored, outputDir);
1818
+ if (nextIgnored === void 0) delete watchOptions.ignored;
1819
+ else watchOptions.ignored = nextIgnored;
1820
+ return watchOptions;
1821
+ }
1822
+ return { ignored: appendIgnoredPath(void 0, outputDir) };
1823
+ };
1824
+ const compilerWatchOptions = appendOutputIgnoredPath(compiler.options.watchOptions);
1825
+ if (compilerWatchOptions) compiler.options.watchOptions = compilerWatchOptions;
1826
+ const syncOutputIgnoredPath = () => {
1827
+ const outputPath = compiler.outputPath || compiler.options?.output?.path;
1828
+ const watchOptions = compiler.watching?.watchOptions;
1829
+ if (watchOptions) appendOutputIgnoredPath(watchOptions, outputPath);
1830
+ };
1831
+ compiler.hooks.watchRun?.tap(pluginName, syncOutputIgnoredPath);
1832
+ compiler.hooks.thisCompilation?.tap(pluginName, (compilation) => {
1833
+ const outputPath = compilation.compiler?.outputPath || compilation.outputOptions?.path;
1834
+ const watchOptions = compiler.watching?.watchOptions;
1835
+ if (watchOptions) appendOutputIgnoredPath(watchOptions, outputPath);
1836
+ else {
1837
+ const compilerWatchOptions = appendOutputIgnoredPath(compiler.options.watchOptions, outputPath);
1838
+ if (compilerWatchOptions) compiler.options.watchOptions = compilerWatchOptions;
1839
+ }
1840
+ });
1841
+ }
1842
+ /**
1843
+ * @name WeappTailwindcss
1844
+ * @description webpack5 核心转义插件
1845
+ * @link https://tw.icebreaker.top/docs/intro
1846
+ */
1847
+ var WeappTailwindcss = class {
1848
+ constructor(options = {}) {
1849
+ _defineProperty(this, "options", void 0);
1850
+ _defineProperty(this, "appType", void 0);
1851
+ _defineProperty(this, "hasInitialTailwindCssRoots", void 0);
1852
+ this.hasInitialTailwindCssRoots = hasConfiguredTailwindV4CssRoots(options);
1853
+ this.options = getCompilerContext({
1854
+ ...options,
1855
+ __internalDeferMissingCssEntriesWarning: true
1856
+ });
1857
+ this.appType = this.options.appType;
1858
+ }
1859
+ apply(compiler) {
1860
+ compiler.options = compiler.options || {};
1861
+ const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime } = this.options;
1862
+ const initialTailwindRuntime = tailwindRuntime;
1863
+ const refreshTailwindRuntime = refreshTailwindcssRuntime;
1864
+ const disabledOptions = resolvePluginDisabledState(disabled);
1865
+ const shouldRewriteCssImports = this.options.rewriteCssImports === true;
1866
+ const isMpxApp = isMpx(this.appType);
1867
+ if (shouldRewriteCssImports) setupMpxTailwindcssRedirect(weappTailwindcssPackageDir, isMpxApp);
1868
+ if (disabledOptions.plugin) return;
1869
+ if (initialTailwindRuntime.majorVersion !== 4) throw new Error("weapp-tailwindcss/webpack 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
1870
+ setupWebpackWatchOutputIgnore(compiler);
1871
+ const runtimeState = {
1872
+ tailwindRuntime: initialTailwindRuntime,
1873
+ readyPromise: createTailwindRuntimeReadyPromise(initialTailwindRuntime),
1874
+ refreshTailwindcssRuntime: refreshTailwindRuntime
1875
+ };
1876
+ let runtimeSetPrepared = false;
1877
+ let runtimeSetSignature;
1878
+ let runtimeRefreshRequiredForCompilation = false;
1879
+ let watchRunObserved = false;
1880
+ const runtimeWatchDependencyFiles = /* @__PURE__ */ new Set();
1881
+ const runtimeWatchDependencyContexts = /* @__PURE__ */ new Set();
1882
+ const webpackProcessedCssSourceFiles = /* @__PURE__ */ new Set();
1883
+ const webpackCssSources = /* @__PURE__ */ new Map();
1884
+ const webpackGeneratedCssSources = /* @__PURE__ */ new Map();
1885
+ const currentWebpackCssSourceFiles = /* @__PURE__ */ new Set();
1886
+ const currentWebpackCssSourceModules = /* @__PURE__ */ new Set();
1887
+ let runtimeMetadataPrepared = false;
1888
+ const updateRuntimeWatchDependencies = async () => {
1889
+ runtimeWatchDependencyFiles.clear();
1890
+ runtimeWatchDependencyContexts.clear();
1891
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
1892
+ if (tailwindOptions?.config) runtimeWatchDependencyFiles.add(tailwindOptions.config);
1893
+ for (const entry of tailwindOptions?.v4?.cssEntries ?? []) runtimeWatchDependencyFiles.add(entry);
1894
+ for (const source of tailwindOptions?.v4?.cssSources ?? []) {
1895
+ if (source.file) runtimeWatchDependencyFiles.add(source.file);
1896
+ for (const dependency of source.dependencies ?? []) runtimeWatchDependencyFiles.add(dependency);
1897
+ }
1898
+ for (const source of tailwindOptions?.v4?.sources ?? []) if (source?.base) runtimeWatchDependencyContexts.add(source.base);
1899
+ if (typeof runtimeState.tailwindRuntime.collectContentTokens !== "function") return;
1900
+ try {
1901
+ const report = await runtimeState.tailwindRuntime.collectContentTokens();
1902
+ for (const entry of report.entries ?? []) if (entry.file) runtimeWatchDependencyFiles.add(entry.file);
1903
+ for (const source of report.sources ?? []) if (source?.base) runtimeWatchDependencyContexts.add(source.base);
1904
+ } catch (error) {
1905
+ debug("collect runtime watch dependencies failed: %O", error);
1906
+ }
1907
+ };
1908
+ const ensureRuntimeMetadata = async (force = false) => {
1909
+ if (runtimeMetadataPrepared && !force) return;
1910
+ await updateRuntimeWatchDependencies();
1911
+ runtimeMetadataPrepared = true;
1912
+ };
1913
+ const collectWatchChangedFiles = () => {
1914
+ const compilerLike = compiler;
1915
+ return new Set([...compilerLike.modifiedFiles ?? [], ...compilerLike.removedFiles ?? []]);
1916
+ };
1917
+ const hasRuntimeDependencyChanges = (files) => {
1918
+ for (const file of files) if (isWatchFileInRuntimeDependencies(file, {
1919
+ contexts: runtimeWatchDependencyContexts,
1920
+ files: runtimeWatchDependencyFiles
1921
+ })) return true;
1922
+ return false;
1923
+ };
1924
+ const syncRuntimeRefreshRequirement = (markWatchRun = false) => {
1925
+ if (markWatchRun) watchRunObserved = true;
1926
+ const changedFiles = collectWatchChangedFiles();
1927
+ runtimeRefreshRequiredForCompilation = runtimeRefreshRequiredForCompilation || hasRuntimeDependencyChanges(changedFiles);
1928
+ };
1929
+ const resetRuntimePreparation = () => {
1930
+ runtimeSetPrepared = false;
1931
+ syncRuntimeRefreshRequirement();
1932
+ };
1933
+ const registerAutoCssSource = async (source) => {
1934
+ if (!source.file) return;
1935
+ if (!upsertTailwindV4CssSource(this.options, source)) return;
1936
+ runtimeSetPrepared = false;
1937
+ runtimeMetadataPrepared = false;
1938
+ runtimeRefreshRequiredForCompilation = true;
1939
+ await refreshTailwindRuntimeState(runtimeState, {
1940
+ force: true,
1941
+ clearCache: true
1942
+ });
1943
+ debug("detected tailwindcss v4 css source from webpack css module: %s", source.file);
1944
+ };
1945
+ const markWebpackProcessedCssSource = (file) => {
1946
+ webpackProcessedCssSourceFiles.add(path.resolve(file));
1947
+ };
1948
+ const markWebpackCssSourceModule = (file) => {
1949
+ currentWebpackCssSourceModules.add(path.resolve(file));
1950
+ };
1951
+ const registerWebpackCssSourceFile = (source) => {
1952
+ const file = path.resolve(source.file);
1953
+ const previous = webpackCssSources.get(file);
1954
+ if (source.processed === true && previous?.processed === false) {
1955
+ currentWebpackCssSourceFiles.add(file);
1956
+ return;
1957
+ }
1958
+ webpackCssSources.set(file, {
1959
+ css: typeof source.css === "string" ? normalizeTailwindConfigDirectives(source.css, path.dirname(file)) : source.css,
1960
+ processed: source.processed
1961
+ });
1962
+ currentWebpackCssSourceFiles.add(file);
1963
+ };
1964
+ const registerWebpackGeneratedCss = (source) => {
1965
+ const file = path.resolve(source.file);
1966
+ webpackGeneratedCssSources.set(file, {
1967
+ ...source,
1968
+ file
1969
+ });
1970
+ currentWebpackCssSourceFiles.add(file);
1971
+ };
1972
+ const pruneWebpackCssSources = (activeSourceFiles, _options = {}) => {
1973
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
1974
+ const configuredSourceFiles = /* @__PURE__ */ new Set();
1975
+ for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
1976
+ for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(path.resolve(source.file));
1977
+ for (const file of webpackCssSources.keys()) if (!activeSourceFiles.has(file) && !configuredSourceFiles.has(file)) webpackCssSources.delete(file);
1978
+ for (const file of webpackGeneratedCssSources.keys()) if (!activeSourceFiles.has(file) && !configuredSourceFiles.has(file)) webpackGeneratedCssSources.delete(file);
1979
+ };
1980
+ const prepareWebpackCssSources = (activeAssetResources = /* @__PURE__ */ new Set()) => {
1981
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
1982
+ const configuredSourceFiles = /* @__PURE__ */ new Set();
1983
+ for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
1984
+ for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(path.resolve(source.file));
1985
+ const activeSourceFiles = new Set([
1986
+ ...configuredSourceFiles,
1987
+ ...currentWebpackCssSourceModules,
1988
+ ...activeAssetResources,
1989
+ ...[...currentWebpackCssSourceFiles].filter((file) => currentWebpackCssSourceModules.has(file)),
1990
+ ...[...currentWebpackCssSourceFiles].filter((file) => activeAssetResources.has(file))
1991
+ ]);
1992
+ currentWebpackCssSourceFiles.clear();
1993
+ currentWebpackCssSourceModules.clear();
1994
+ return activeSourceFiles;
1995
+ };
1996
+ const isWebpackProcessedTailwindEntryAsset = (isMainCssChunk) => {
1997
+ if (isMainCssChunk !== true || webpackProcessedCssSourceFiles.size === 0) return false;
1998
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
1999
+ for (const entry of tailwindOptions?.v4?.cssEntries ?? []) if (webpackProcessedCssSourceFiles.has(path.resolve(entry))) return true;
2000
+ for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file && webpackProcessedCssSourceFiles.has(path.resolve(source.file))) return true;
2001
+ return false;
2002
+ };
2003
+ compiler.hooks.invalid?.tap?.(pluginName, (fileName) => {
2004
+ if (!fileName) return;
2005
+ runtimeRefreshRequiredForCompilation = runtimeRefreshRequiredForCompilation || hasRuntimeDependencyChanges([path.resolve(fileName)]);
2006
+ });
2007
+ compiler.hooks.watchRun?.tap?.(pluginName, () => syncRuntimeRefreshRequirement(true));
2008
+ if (compiler.hooks.thisCompilation?.tap) compiler.hooks.thisCompilation.tap(pluginName, resetRuntimePreparation);
2009
+ else if (compiler.hooks.compilation?.tap) compiler.hooks.compilation.tap(pluginName, resetRuntimePreparation);
2010
+ async function getClassSetInLoader() {
2011
+ if (runtimeSetPrepared) return;
2012
+ const signature = getRuntimeClassSetSignature(runtimeState.tailwindRuntime);
2013
+ const forceRefresh = runtimeRefreshRequiredForCompilation || signature !== runtimeSetSignature;
2014
+ debug("runtime loader ensure class set forceRefresh=%s watchDirty=%s signatureChanged=%s", forceRefresh, runtimeRefreshRequiredForCompilation, signature !== runtimeSetSignature);
2015
+ runtimeSetPrepared = true;
2016
+ await ensureRuntimeClassSet(runtimeState, {
2017
+ forceRefresh,
2018
+ forceCollect: forceRefresh || !watchRunObserved,
2019
+ clearCache: forceRefresh,
2020
+ allowEmpty: true
2021
+ });
2022
+ await ensureRuntimeMetadata(forceRefresh);
2023
+ runtimeSetSignature = signature;
2024
+ runtimeRefreshRequiredForCompilation = false;
2025
+ }
2026
+ async function getRuntimeSetInLoader() {
2027
+ await getClassSetInLoader();
2028
+ return ensureRuntimeClassSet(runtimeState, { allowEmpty: true });
2029
+ }
2030
+ onLoad();
2031
+ setupWebpackV5Loaders({
2032
+ compiler,
2033
+ options: this.options,
2034
+ appType: this.appType,
2035
+ weappTailwindcssPackageDir,
2036
+ shouldRewriteCssImports,
2037
+ runtimeLoaderPath,
2038
+ registerAutoCssSource,
2039
+ runtimeState,
2040
+ getClassSetInLoader,
2041
+ getRuntimeSetInLoader,
2042
+ markWebpackProcessedCssSource,
2043
+ markWebpackCssSourceModule,
2044
+ registerWebpackCssSourceFile,
2045
+ registerWebpackGeneratedCss,
2046
+ getRuntimeWatchDependencies() {
2047
+ return {
2048
+ files: runtimeWatchDependencyFiles,
2049
+ contexts: runtimeWatchDependencyContexts
2050
+ };
2051
+ },
2052
+ debug
2053
+ });
2054
+ setupWebpackV5ProcessAssetsHook({
2055
+ compiler,
2056
+ options: this.options,
2057
+ appType: this.appType,
2058
+ runtimeState,
2059
+ getRuntimeRefreshRequirement: () => runtimeRefreshRequiredForCompilation,
2060
+ refreshRuntimeMetadata: ensureRuntimeMetadata,
2061
+ isKnownWebpackProcessedCssAsset(file, metadata) {
2062
+ return webpackProcessedCssSourceFiles.has(path.resolve(file)) || isWebpackProcessedTailwindEntryAsset(metadata?.isMainCssChunk);
2063
+ },
2064
+ isWebpackProcessedCssAsset(file, rawSource, metadata) {
2065
+ return webpackProcessedCssSourceFiles.has(path.resolve(file)) || isWebpackProcessedTailwindEntryAsset(metadata?.isMainCssChunk) || hasTailwindGeneratedCss(rawSource) || hasTailwindGeneratedCssMarkers(rawSource) || rawSource.includes("weapp-tailwindcss webpack-generated-css");
2066
+ },
2067
+ consumeRuntimeRefreshRequirement() {
2068
+ runtimeRefreshRequiredForCompilation = false;
2069
+ },
2070
+ isWatchMode: () => watchRunObserved || compiler.options?.watch === true,
2071
+ getWatchChangedFiles: collectWatchChangedFiles,
2072
+ runtimeClassSetManager: this.options.__internalWebpackRuntimeClassSetManager,
2073
+ getWebpackCssSources: () => webpackCssSources,
2074
+ getWebpackGeneratedCssSources: () => webpackGeneratedCssSources,
2075
+ pruneWebpackCssSources,
2076
+ prepareWebpackCssSources,
2077
+ debug
2078
+ });
2079
+ }
2080
+ };
2081
+ //#endregion
2082
+ export { weappTailwindcssPackageDir as n, WeappTailwindcss as t };