weapp-tailwindcss 5.0.0-next.3 → 5.0.0-next.30

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 (243) hide show
  1. package/README.md +6 -7
  2. package/bin/weapp-tailwindcss.js +1 -21
  3. package/dist/auto-TH1jG2UW.js +115 -0
  4. package/dist/auto-XyKTOP7B.mjs +78 -0
  5. package/dist/bundle-state-Bi-cQua6.mjs +413 -0
  6. package/dist/bundle-state-Ct_8GcSR.js +529 -0
  7. package/dist/bundlers/shared/cache.d.ts +6 -6
  8. package/dist/bundlers/shared/css-cleanup/at-rules.d.ts +1 -0
  9. package/dist/bundlers/shared/css-cleanup.d.ts +1 -4
  10. package/dist/bundlers/shared/css-imports.d.ts +3 -3
  11. package/dist/bundlers/shared/generated-css-marker.d.ts +3 -0
  12. package/dist/bundlers/shared/generator-css/config-directive.d.ts +2 -0
  13. package/dist/bundlers/shared/generator-css/directives.d.ts +20 -0
  14. package/dist/bundlers/shared/generator-css/legacy-compat.d.ts +7 -0
  15. package/dist/bundlers/shared/generator-css/legacy-selectors.d.ts +5 -0
  16. package/dist/bundlers/shared/generator-css/legacy-units.d.ts +1 -0
  17. package/dist/bundlers/shared/generator-css/markers.d.ts +28 -0
  18. package/dist/bundlers/shared/generator-css/source-files.d.ts +14 -0
  19. package/dist/bundlers/shared/generator-css/source-resolver.d.ts +24 -0
  20. package/dist/bundlers/shared/generator-css.d.ts +16 -22
  21. package/dist/bundlers/shared/hmr-timing.d.ts +22 -0
  22. package/dist/bundlers/shared/style-requests.d.ts +2 -0
  23. package/dist/bundlers/vite/bundle-state.d.ts +1 -0
  24. package/dist/bundlers/vite/css-finalizer.d.ts +7 -1
  25. package/dist/bundlers/vite/generate-bundle/candidates.d.ts +2 -0
  26. package/dist/bundlers/vite/generate-bundle/css-handler-options.d.ts +24 -0
  27. package/dist/bundlers/vite/generate-bundle/css-share-scope.d.ts +4 -0
  28. package/dist/bundlers/vite/generate-bundle/dirty-state.d.ts +1 -0
  29. package/dist/bundlers/vite/generate-bundle/js-entries.d.ts +2 -0
  30. package/dist/bundlers/vite/generate-bundle/js-handler-options.d.ts +8 -0
  31. package/dist/bundlers/vite/generate-bundle/js-linking.d.ts +13 -0
  32. package/dist/bundlers/vite/generate-bundle/metrics.d.ts +17 -0
  33. package/dist/bundlers/vite/generate-bundle/process-plan.d.ts +9 -0
  34. package/dist/bundlers/vite/generate-bundle/rollup-assets.d.ts +7 -0
  35. package/dist/bundlers/vite/generate-bundle/signatures.d.ts +8 -0
  36. package/dist/bundlers/vite/generate-bundle.d.ts +14 -2
  37. package/dist/bundlers/vite/incremental-runtime-class-set.d.ts +5 -1
  38. package/dist/bundlers/vite/index.d.ts +5 -2
  39. package/dist/bundlers/vite/official-tailwind-plugins.d.ts +5 -0
  40. package/dist/bundlers/vite/postcss-config.d.ts +6 -0
  41. package/dist/bundlers/vite/processed-css-assets.d.ts +32 -0
  42. package/dist/bundlers/vite/rewrite-css-imports.d.ts +8 -3
  43. package/dist/bundlers/vite/runtime-class-set.d.ts +25 -0
  44. package/dist/bundlers/vite/serve-css-generation.d.ts +11 -0
  45. package/dist/bundlers/vite/source-candidates.d.ts +19 -1
  46. package/dist/bundlers/vite/source-scan.d.ts +26 -0
  47. package/dist/bundlers/vite/static-config-content.d.ts +5 -0
  48. package/dist/bundlers/vite/tailwind-basedir.d.ts +1 -0
  49. package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +6 -0
  50. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets.d.ts +6 -2
  51. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.d.ts +9 -3
  52. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5.d.ts +2 -1
  53. package/dist/bundlers/webpack/loaders/runtime-registry.d.ts +31 -0
  54. package/dist/bundlers/webpack/loaders/weapp-tw-css-import-rewrite-loader.d.ts +2 -6
  55. package/dist/bundlers/webpack/loaders/weapp-tw-runtime-classset-loader.d.ts +3 -7
  56. package/dist/cache/index.d.ts +6 -6
  57. package/dist/{chunk-8l464Juk.js → chunk-C5U5_Hdc.js} +14 -0
  58. package/dist/cli/context.d.ts +1 -14
  59. package/dist/cli/doctor/types.d.ts +11 -11
  60. package/dist/cli/helpers.d.ts +1 -2
  61. package/dist/cli/mount-options.d.ts +2 -0
  62. package/dist/cli/types.d.ts +0 -2
  63. package/dist/cli/vscode-entry.d.ts +3 -3
  64. package/dist/cli.js +758 -604
  65. package/dist/cli.mjs +766 -612
  66. package/dist/constants.d.ts +1 -2
  67. package/dist/context/runtime-package-replacements.d.ts +2 -0
  68. package/dist/context/style-options.d.ts +3 -0
  69. package/dist/core.js +12 -20
  70. package/dist/core.mjs +8 -14
  71. package/dist/css-macro/auto.d.ts +10 -0
  72. package/dist/css-macro/constants.d.ts +5 -2
  73. package/dist/css-macro/postcss.d.ts +1 -0
  74. package/dist/css-macro/postcss.js +7 -46
  75. package/dist/css-macro/postcss.mjs +2 -46
  76. package/dist/css-macro.d.ts +1 -0
  77. package/dist/css-macro.js +16 -7
  78. package/dist/css-macro.mjs +15 -6
  79. package/dist/defaults-8xrgzxFY.mjs +151 -0
  80. package/dist/defaults-zKUH2mDe.js +193 -0
  81. package/dist/defaults.d.ts +15 -1
  82. package/dist/defaults.js +6 -131
  83. package/dist/defaults.mjs +2 -129
  84. package/dist/escape.js +10 -2
  85. package/dist/escape.mjs +10 -2
  86. package/dist/generator/index.d.ts +1 -1
  87. package/dist/generator/options.d.ts +9 -8
  88. package/dist/generator/types.d.ts +3 -3
  89. package/dist/generator-CrU-Ghc1.js +90 -0
  90. package/dist/generator-Qw-tZ0Z2.mjs +65 -0
  91. package/dist/generator.js +12 -12
  92. package/dist/generator.mjs +2 -1
  93. package/dist/gulp.js +187 -48
  94. package/dist/gulp.mjs +180 -41
  95. package/dist/incremental-runtime-class-set-BdZHkoTs.mjs +1975 -0
  96. package/dist/incremental-runtime-class-set-BxvZONkv.js +2038 -0
  97. package/dist/index.d.ts +3 -2
  98. package/dist/index.js +19 -7
  99. package/dist/index.mjs +6 -5
  100. package/dist/js/babel/cache-options.d.ts +3 -0
  101. package/dist/js/babel/parse.d.ts +7 -4
  102. package/dist/js/index.d.ts +1 -0
  103. package/dist/js/literal-transform.d.ts +2 -0
  104. package/dist/js/precheck.d.ts +2 -2
  105. package/dist/logger-BNzxZbZj.mjs +2 -0
  106. package/dist/logger-TlKT3xmR.js +1 -0
  107. package/dist/postcss/config-directive.d.ts +1 -0
  108. package/dist/postcss/context.d.ts +9 -0
  109. package/dist/postcss/source-files.d.ts +8 -0
  110. package/dist/postcss/tailwind-version.d.ts +3 -0
  111. package/dist/postcss-C6zOQqlL.mjs +228 -0
  112. package/dist/postcss-C7BMYpEF.mjs +169 -0
  113. package/dist/postcss-CiYLsqZn.js +192 -0
  114. package/dist/postcss-DAWf9D3C.js +237 -0
  115. package/dist/postcss-html-transform.js +1 -1
  116. package/dist/postcss.d.ts +2 -2
  117. package/dist/postcss.js +3 -276
  118. package/dist/postcss.mjs +1 -269
  119. package/dist/precheck-D7K12zeX.mjs +4716 -0
  120. package/dist/precheck-D7gJSmJz.js +4842 -0
  121. package/dist/presets/index.d.ts +1 -0
  122. package/dist/presets/uni-app-x.d.ts +1 -0
  123. package/dist/presets.js +29 -13
  124. package/dist/presets.mjs +25 -11
  125. package/dist/reset.d.ts +1 -0
  126. package/dist/reset.js +1 -1
  127. package/dist/runtime-registry-DpcR3IHI.js +5496 -0
  128. package/dist/shared/mpx.d.ts +1 -0
  129. package/dist/source-candidates-CX2ozpKM.mjs +322 -0
  130. package/dist/source-candidates-DNM8iwXW.js +335 -0
  131. package/dist/tailwindcss/miniprogram.d.ts +1 -1
  132. package/dist/tailwindcss/patcher-options.d.ts +3 -51
  133. package/dist/tailwindcss/patcher.d.ts +1 -2
  134. package/dist/tailwindcss/remove-unsupported-css.d.ts +1 -2
  135. package/dist/tailwindcss/runtime/cache.d.ts +4 -3
  136. package/dist/tailwindcss/runtime-patch.d.ts +5 -0
  137. package/dist/tailwindcss/runtime.d.ts +11 -12
  138. package/dist/tailwindcss/source-scan.d.ts +35 -0
  139. package/dist/tailwindcss/targets.d.ts +1 -5
  140. package/dist/tailwindcss/v3-engine/types.d.ts +17 -14
  141. package/dist/tailwindcss/v4/css-entries.d.ts +2 -2
  142. package/dist/tailwindcss/v4/css-sources.d.ts +5 -0
  143. package/dist/tailwindcss/v4/patcher-options.d.ts +1 -23
  144. package/dist/tailwindcss/v4/patcher.d.ts +1 -0
  145. package/dist/tailwindcss/v4-engine/source.d.ts +2 -2
  146. package/dist/tailwindcss/v4-engine/types.d.ts +17 -5
  147. package/dist/tailwindcss/version.d.ts +4 -0
  148. package/dist/tailwindcss-B-e2RiXr.js +642 -0
  149. package/dist/tailwindcss-C7dJHZ0G.mjs +591 -0
  150. package/dist/typedoc.export.d.ts +0 -2
  151. package/dist/types/index.d.ts +52 -49
  152. package/dist/types/shared.d.ts +6 -0
  153. package/dist/types/user-defined-options/general.d.ts +25 -24
  154. package/dist/types/user-defined-options/important.d.ts +33 -28
  155. package/dist/types/user-defined-options/lifecycle.d.ts +4 -4
  156. package/dist/types/user-defined-options/matcher.d.ts +6 -6
  157. package/dist/uni-app-x/vite.d.ts +1 -1
  158. package/dist/unocss/index.d.ts +2 -0
  159. package/dist/utils/disabled.d.ts +2 -3
  160. package/dist/utils/object.d.ts +9 -0
  161. package/dist/utils/options.d.ts +2 -0
  162. package/dist/utils/regex.d.ts +1 -0
  163. package/dist/{utils-DmC9_In3.js → utils-D7Ygohep.js} +2 -2
  164. package/dist/{utils-7DUGTFED.mjs → utils-DsaS975I.mjs} +1 -1
  165. package/dist/v3-engine-CHItlVq5.js +3616 -0
  166. package/dist/v3-engine-DcvCCHfs.mjs +3321 -0
  167. package/dist/vite-C65DdWEj.js +24439 -0
  168. package/dist/vite-rmL1rsA_.mjs +24425 -0
  169. package/dist/vite.d.ts +1 -2
  170. package/dist/vite.js +3 -4
  171. package/dist/vite.mjs +2 -2
  172. package/dist/weapp-tw-css-import-rewrite-loader.js +5032 -18
  173. package/dist/weapp-tw-runtime-classset-loader.js +32 -9
  174. package/dist/webpack-BU2Er4qg.mjs +841 -0
  175. package/dist/webpack-CqGvjvSQ.js +851 -0
  176. package/dist/webpack.d.ts +1 -3
  177. package/dist/webpack.js +3 -4
  178. package/dist/webpack.mjs +2 -2
  179. package/package.json +38 -48
  180. package/dist/bundlers/shared/generator-candidates.d.ts +0 -5
  181. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-assets.d.ts +0 -14
  182. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-loaders.d.ts +0 -15
  183. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4.d.ts +0 -9
  184. package/dist/bundlers/webpack/shared/css-imports.d.ts +0 -6
  185. package/dist/cli/config.d.ts +0 -5
  186. package/dist/cli/helpers/patch-cwd.d.ts +0 -1
  187. package/dist/cli/mount-options/patch-status.d.ts +0 -2
  188. package/dist/cli/patch-options.d.ts +0 -6
  189. package/dist/cli/tokens.d.ts +0 -4
  190. package/dist/cli/workspace/package-dirs.d.ts +0 -3
  191. package/dist/cli/workspace/patch-package.d.ts +0 -3
  192. package/dist/cli/workspace/patch-utils.d.ts +0 -3
  193. package/dist/cli/workspace/types.d.ts +0 -11
  194. package/dist/cli/workspace/workspace-globs.d.ts +0 -2
  195. package/dist/cli/workspace/workspace-io.d.ts +0 -1
  196. package/dist/cli/workspace/workspace-lock.d.ts +0 -1
  197. package/dist/cli/workspace.d.ts +0 -2
  198. package/dist/constants-B-_T5UnW.mjs +0 -44
  199. package/dist/constants-p1dyh1x1.js +0 -73
  200. package/dist/css-imports-BbrbluP9.js +0 -177
  201. package/dist/css-imports-CSdPq_Sc.mjs +0 -128
  202. package/dist/experimental/index.d.ts +0 -2
  203. package/dist/experimental/oxc/ast-utils.d.ts +0 -30
  204. package/dist/experimental/oxc/index.d.ts +0 -2
  205. package/dist/experimental/oxc/module-specifiers.d.ts +0 -2
  206. package/dist/experimental/shared/cache.d.ts +0 -3
  207. package/dist/experimental/shared/transform.d.ts +0 -3
  208. package/dist/experimental/shared.d.ts +0 -8
  209. package/dist/experimental/swc/ast-utils.d.ts +0 -30
  210. package/dist/experimental/swc/index.d.ts +0 -2
  211. package/dist/experimental/swc/module-specifiers.d.ts +0 -2
  212. package/dist/generator-Y-Ikv4Fu.mjs +0 -1177
  213. package/dist/generator-css-Bwy_Uz89.mjs +0 -1097
  214. package/dist/generator-css-CRLrHW4F.js +0 -1124
  215. package/dist/generator-mmhXzZnv.js +0 -1276
  216. package/dist/js/syntax.d.ts +0 -10
  217. package/dist/lightningcss/index.d.ts +0 -8
  218. package/dist/lightningcss/style-handler/options.d.ts +0 -3
  219. package/dist/lightningcss/style-handler/selector-transform.d.ts +0 -10
  220. package/dist/lightningcss/style-handler/selector-utils.d.ts +0 -10
  221. package/dist/lightningcss/style-handler.d.ts +0 -17
  222. package/dist/loader-anchors-1MumTAtA.mjs +0 -205
  223. package/dist/loader-anchors-TrFvT6g1.js +0 -273
  224. package/dist/logger-BZ45DZJT.js +0 -1003
  225. package/dist/logger-BoVx1Dbt.mjs +0 -935
  226. package/dist/patcher-options-6gJN2EXy.js +0 -115
  227. package/dist/patcher-options-DQfR5xxT.mjs +0 -92
  228. package/dist/recorder-GdTJ3QqX.js +0 -2878
  229. package/dist/recorder-XdFvVASS.mjs +0 -2763
  230. package/dist/tailwindcss/recorder.d.ts +0 -13
  231. package/dist/tailwindcss/targets/paths.d.ts +0 -13
  232. package/dist/tailwindcss/targets/record-io.d.ts +0 -5
  233. package/dist/tailwindcss/targets/recorder.d.ts +0 -3
  234. package/dist/tailwindcss/targets/types.d.ts +0 -35
  235. package/dist/types/disabled-options.d.ts +0 -4
  236. package/dist/vite-BDywuCjn.mjs +0 -2186
  237. package/dist/vite-DgRh_GXn.js +0 -2199
  238. package/dist/webpack-CAJR4hhP.js +0 -456
  239. package/dist/webpack-CiHqVZTg.mjs +0 -441
  240. package/dist/webpack4.d.ts +0 -4
  241. package/dist/webpack4.js +0 -387
  242. package/dist/webpack4.mjs +0 -379
  243. package/scripts/postinstall.mjs +0 -59
package/dist/gulp.mjs CHANGED
@@ -1,9 +1,12 @@
1
- import { _ as refreshTailwindRuntimeState, g as ensureRuntimeClassSet, n as shouldSkipJsTransform, r as getCompilerContext, t as setupPatchRecorder, v as createDebug } from "./recorder-XdFvVASS.mjs";
2
- import { i as processCachedTask, t as generateCssByGenerator } from "./generator-css-Bwy_Uz89.mjs";
1
+ import { b as ensureRuntimeClassSet, n as getCompilerContext, t as shouldSkipJsTransform, y as createTailwindRuntimeReadyPromise } from "./precheck-D7K12zeX.mjs";
2
+ import { B as createDebug, _ as resolveViteSourceScanEntries, l as getRuntimeClassSetSignature } from "./v3-engine-DcvCCHfs.mjs";
3
+ import { i as generateCssByGenerator, l as normalizeTailwindSourceForGenerator, o as processCachedTask, r as emitHmrTiming, s as hasTailwindRootDirectives, t as createBundleRuntimeClassSetManager } from "./incremental-runtime-class-set-BdZHkoTs.mjs";
4
+ import { c as upsertTailwindV4CssSource, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-C7dJHZ0G.mjs";
5
+ import { t as createSourceCandidateCollector } from "./source-candidates-CX2ozpKM.mjs";
6
+ import fs from "node:fs";
3
7
  import path from "node:path";
4
8
  import process from "node:process";
5
9
  import { Buffer } from "node:buffer";
6
- import fs from "node:fs";
7
10
  import stream from "node:stream";
8
11
  //#region src/bundlers/gulp/index.ts
9
12
  const debug = createDebug();
@@ -14,18 +17,18 @@ const Transform = stream.Transform;
14
17
  * @link https://tw.icebreaker.top/docs/quick-start/frameworks/native
15
18
  */
16
19
  function createPlugins(options = {}) {
17
- const opts = getCompilerContext(options);
18
- const { templateHandler, styleHandler, jsHandler, cache, twPatcher: initialTwPatcher, refreshTailwindcssPatcher } = opts;
19
- const patchRecorderState = setupPatchRecorder(initialTwPatcher, opts.tailwindcssBasedir, {
20
- source: "runtime",
21
- cwd: opts.tailwindcssBasedir ?? process.cwd()
20
+ const hasInitialTailwindCssRoots = hasConfiguredTailwindV4CssRoots(options);
21
+ const opts = getCompilerContext({
22
+ ...options,
23
+ __internalDeferMissingCssEntriesWarning: true
22
24
  });
25
+ const { templateHandler, styleHandler, jsHandler, cache, twPatcher: initialTwPatcher, refreshTailwindcssPatcher } = opts;
26
+ const readyPromise = createTailwindRuntimeReadyPromise(initialTwPatcher);
23
27
  let runtimeSet = /* @__PURE__ */ new Set();
24
28
  const runtimeState = {
25
29
  twPatcher: initialTwPatcher,
26
- patchPromise: patchRecorderState.patchPromise,
27
- refreshTailwindcssPatcher,
28
- onPatchCompleted: patchRecorderState.onPatchCompleted
30
+ readyPromise,
31
+ refreshTailwindcssPatcher
29
32
  };
30
33
  const defaultStyleHandlerOptionsCache = /* @__PURE__ */ new Map();
31
34
  let cachedDefaultTemplateHandlerOptions;
@@ -40,20 +43,138 @@ function createPlugins(options = {}) {
40
43
  ".jsx"
41
44
  ];
42
45
  let runtimeSetInitialized = false;
43
- async function refreshRuntimeState(force) {
44
- await refreshTailwindRuntimeState(runtimeState, force);
45
- }
46
- async function refreshRuntimeSet(force = false) {
47
- if (!force && runtimeSetInitialized) return runtimeSet;
46
+ let runtimeSetDirty = false;
47
+ const runtimeSourceHashByFile = /* @__PURE__ */ new Map();
48
+ const runtimeSourcesByFile = /* @__PURE__ */ new Map();
49
+ let cachedGulpSourceCandidates;
50
+ let cachedGulpSourceCandidateSignature;
51
+ const bundleRuntimeClassSetManager = options.__internalGulpRuntimeClassSetManager ?? createBundleRuntimeClassSetManager();
52
+ async function refreshRuntimeSet(options = false) {
53
+ const normalizedOptions = typeof options === "boolean" ? {
54
+ forceRefresh: options,
55
+ forceCollect: options,
56
+ clearCache: options
57
+ } : options;
58
+ const forceRefresh = normalizedOptions.forceRefresh === true;
59
+ const shouldForceCollect = normalizedOptions.forceCollect === true || runtimeSetDirty;
60
+ const clearCache = normalizedOptions.clearCache === true || runtimeSetDirty;
61
+ if (!forceRefresh && !shouldForceCollect && runtimeSetInitialized) return runtimeSet;
48
62
  runtimeSet = await ensureRuntimeClassSet(runtimeState, {
49
- forceRefresh: force,
50
- forceCollect: force,
51
- clearCache: force,
63
+ forceRefresh,
64
+ forceCollect: shouldForceCollect,
65
+ clearCache,
52
66
  allowEmpty: false
53
67
  });
54
68
  runtimeSetInitialized = true;
69
+ runtimeSetDirty = false;
55
70
  return runtimeSet;
56
71
  }
72
+ function createRuntimeSnapshot(changedFiles) {
73
+ const runtimeAffectingChangedByType = {
74
+ html: /* @__PURE__ */ new Set(),
75
+ js: /* @__PURE__ */ new Set(),
76
+ css: /* @__PURE__ */ new Set(),
77
+ other: /* @__PURE__ */ new Set()
78
+ };
79
+ for (const file of changedFiles) {
80
+ const entry = runtimeSourcesByFile.get(file);
81
+ if (entry) runtimeAffectingChangedByType[entry.type].add(file);
82
+ }
83
+ return {
84
+ entries: [...runtimeSourcesByFile.entries()].map(([file, entry]) => ({
85
+ file,
86
+ output: {
87
+ fileName: file,
88
+ source: entry.source,
89
+ type: "asset"
90
+ },
91
+ source: entry.source,
92
+ type: entry.type
93
+ })),
94
+ jsEntries: /* @__PURE__ */ new Map(),
95
+ sourceHashByFile: /* @__PURE__ */ new Map(),
96
+ runtimeAffectingSignatureByFile: /* @__PURE__ */ new Map(),
97
+ runtimeAffectingHashByFile: /* @__PURE__ */ new Map(),
98
+ changedByType: {
99
+ html: /* @__PURE__ */ new Set(),
100
+ js: /* @__PURE__ */ new Set(),
101
+ css: /* @__PURE__ */ new Set(),
102
+ other: /* @__PURE__ */ new Set()
103
+ },
104
+ runtimeAffectingChangedByType,
105
+ processFiles: {
106
+ html: /* @__PURE__ */ new Set(),
107
+ js: /* @__PURE__ */ new Set(),
108
+ css: /* @__PURE__ */ new Set()
109
+ },
110
+ linkedImpactsByEntry: /* @__PURE__ */ new Map()
111
+ };
112
+ }
113
+ async function refreshRuntimeSetForSource(file, rawSource, type) {
114
+ const filename = path.resolve(file.path);
115
+ const hash = cache.computeHash(rawSource);
116
+ const changed = runtimeSourceHashByFile.get(filename) !== hash;
117
+ runtimeSourceHashByFile.set(filename, hash);
118
+ runtimeSourcesByFile.set(filename, {
119
+ source: rawSource,
120
+ type
121
+ });
122
+ if (!changed && runtimeSetInitialized) return runtimeSet;
123
+ if (runtimeState.twPatcher.majorVersion === 4 && !runtimeSetDirty) try {
124
+ runtimeSet = await bundleRuntimeClassSetManager.sync(runtimeState.twPatcher, createRuntimeSnapshot([filename]));
125
+ runtimeSetInitialized = true;
126
+ return runtimeSet;
127
+ } catch (error) {
128
+ debug("gulp incremental runtime set sync failed, fallback to collect: %O", error);
129
+ await bundleRuntimeClassSetManager.reset();
130
+ }
131
+ return refreshRuntimeSet({ forceCollect: true });
132
+ }
133
+ async function refreshGulpSourceCandidates(forceRefresh = false) {
134
+ if (runtimeState.twPatcher.majorVersion !== 3) return /* @__PURE__ */ new Set();
135
+ const root = opts.tailwindcssBasedir ?? process.cwd();
136
+ const sourceScan = await resolveViteSourceScanEntries(opts, runtimeState.twPatcher, { root });
137
+ const nextSignature = cache.computeHash(JSON.stringify({
138
+ root,
139
+ entries: sourceScan?.entries,
140
+ inlineCandidates: sourceScan?.inlineCandidates ? {
141
+ included: [...sourceScan.inlineCandidates.included].sort(),
142
+ excluded: [...sourceScan.inlineCandidates.excluded].sort()
143
+ } : void 0,
144
+ explicit: sourceScan?.explicit ?? false,
145
+ dependencies: [...sourceScan?.dependencies ?? []].sort()
146
+ }));
147
+ if (!forceRefresh && cachedGulpSourceCandidateSignature === nextSignature && cachedGulpSourceCandidates) return cachedGulpSourceCandidates;
148
+ const collector = createSourceCandidateCollector();
149
+ await collector.scanRoot({
150
+ entries: sourceScan?.entries,
151
+ root
152
+ });
153
+ collector.syncInline(sourceScan?.inlineCandidates);
154
+ cachedGulpSourceCandidateSignature = nextSignature;
155
+ cachedGulpSourceCandidates = sourceScan?.entries ? collector.valuesForEntries(sourceScan.entries) : collector.values();
156
+ return cachedGulpSourceCandidates;
157
+ }
158
+ function createRuntimeSetHash(rawSource, nextRuntimeSet) {
159
+ return cache.computeHash([
160
+ rawSource,
161
+ getRuntimeClassSetSignature(runtimeState.twPatcher),
162
+ [...nextRuntimeSet].sort().join("\n")
163
+ ].join("\n\n"));
164
+ }
165
+ async function registerAutoCssSource(file, rawSource) {
166
+ if (hasInitialTailwindCssRoots || (runtimeState.twPatcher.majorVersion ?? 0) < 4 || !file.path || !hasTailwindRootDirectives(rawSource)) return false;
167
+ const sourceCss = normalizeTailwindSourceForGenerator(rawSource, { importFallback: true });
168
+ if (!upsertTailwindV4CssSource(opts, {
169
+ file: path.resolve(file.path),
170
+ css: sourceCss
171
+ })) return false;
172
+ runtimeSetInitialized = false;
173
+ runtimeSetDirty = true;
174
+ await bundleRuntimeClassSetManager.reset();
175
+ debug("detected tailwindcss v4 css source from gulp css file: %s", file.path);
176
+ return true;
177
+ }
57
178
  function resolveWithExtensions(base) {
58
179
  for (const ext of MODULE_EXTENSIONS) {
59
180
  const candidate = `${base}${ext}`;
@@ -100,12 +221,14 @@ function createPlugins(options = {}) {
100
221
  if (!cachedDefaultModuleGraphOptions) cachedDefaultModuleGraphOptions = createModuleGraphOptionsFor();
101
222
  return cachedDefaultModuleGraphOptions;
102
223
  }
103
- function createVinylTransform(handler) {
224
+ function createVinylTransform(phase, handler) {
104
225
  return new Transform({
105
226
  objectMode: true,
106
227
  async transform(file, _encoding, callback) {
228
+ const hmrTimingStartedAt = performance.now();
107
229
  try {
108
230
  await handler(file);
231
+ emitHmrTiming("gulp", phase, performance.now() - hmrTimingStartedAt, { file: file.relative || path.basename(file.path) });
109
232
  callback(null, file);
110
233
  } catch (error) {
111
234
  callback(error, file);
@@ -118,12 +241,12 @@ function createPlugins(options = {}) {
118
241
  if (!options || Object.keys(options).length === 0) {
119
242
  let cached = defaultStyleHandlerOptionsCache.get(majorVersion);
120
243
  if (!cached) {
121
- cached = { majorVersion: runtimeState.twPatcher.majorVersion };
244
+ cached = runtimeState.twPatcher.majorVersion === void 0 ? {} : { majorVersion: runtimeState.twPatcher.majorVersion };
122
245
  defaultStyleHandlerOptionsCache.set(majorVersion, cached);
123
246
  }
124
247
  return cached;
125
248
  }
126
- return {
249
+ return runtimeState.twPatcher.majorVersion === void 0 ? { ...options } : {
127
250
  majorVersion: runtimeState.twPatcher.majorVersion,
128
251
  ...options
129
252
  };
@@ -158,15 +281,28 @@ function createPlugins(options = {}) {
158
281
  ...options
159
282
  };
160
283
  }
161
- const transformWxss = (options = {}) => createVinylTransform(async (file) => {
284
+ const transformWxss = (options = {}) => createVinylTransform("css", async (file) => {
162
285
  if (!file.contents) return;
163
- await refreshRuntimeState(true);
164
- await runtimeState.patchPromise;
165
286
  const rawSource = file.contents.toString();
287
+ const cssSourceChanged = await registerAutoCssSource(file, rawSource);
288
+ const isMainChunk = opts.mainCssChunkMatcher(resolveGulpMatcherName(file), opts.appType);
289
+ const shouldUseGenerator = runtimeState.twPatcher.majorVersion !== 3 || hasTailwindRootDirectives(rawSource);
290
+ let nextRuntimeSet = await refreshRuntimeSet({
291
+ forceRefresh: cssSourceChanged,
292
+ forceCollect: cssSourceChanged || runtimeState.twPatcher.majorVersion !== 4 && isMainChunk,
293
+ clearCache: cssSourceChanged
294
+ });
295
+ if (runtimeState.twPatcher.majorVersion === 3 && isMainChunk && shouldUseGenerator) {
296
+ const sourceCandidates = await refreshGulpSourceCandidates(cssSourceChanged);
297
+ if (sourceCandidates.size > 0) {
298
+ nextRuntimeSet = new Set([...nextRuntimeSet, ...sourceCandidates]);
299
+ runtimeSet = nextRuntimeSet;
300
+ }
301
+ }
166
302
  await processCachedTask({
167
303
  cache,
168
304
  cacheKey: file.path,
169
- rawSource,
305
+ hash: createRuntimeSetHash(rawSource, nextRuntimeSet),
170
306
  applyResult(source) {
171
307
  file.contents = Buffer.from(source);
172
308
  },
@@ -174,41 +310,41 @@ function createPlugins(options = {}) {
174
310
  debug("css cache hit: %s", file.path);
175
311
  },
176
312
  async transform() {
177
- await runtimeState.patchPromise;
313
+ await runtimeState.readyPromise;
178
314
  const cssHandlerOptions = resolveWxssFileHandlerOptions(file, options);
179
- const css = (await generateCssByGenerator({
315
+ const css = (shouldUseGenerator ? await generateCssByGenerator({
180
316
  opts,
181
317
  runtimeState,
182
- runtime: await refreshRuntimeSet(false),
318
+ runtime: nextRuntimeSet,
183
319
  rawSource,
184
320
  file: file.path,
185
321
  cssHandlerOptions,
186
322
  cssUserHandlerOptions: resolveWxssUserHandlerOptions(options),
187
323
  styleHandler,
188
324
  debug
189
- }))?.css ?? (await styleHandler(rawSource, cssHandlerOptions)).css;
325
+ }) : void 0)?.css ?? (await styleHandler(rawSource, cssHandlerOptions)).css;
190
326
  debug("css handle: %s", file.path);
191
327
  return { result: css };
192
328
  }
193
329
  });
194
330
  });
195
- const transformJs = (options = {}) => createVinylTransform(async (file) => {
331
+ const transformJs = (options = {}) => createVinylTransform("js", async (file) => {
196
332
  if (!file.contents) return;
197
- await refreshRuntimeSet(false);
198
- await runtimeState.patchPromise;
199
333
  const filename = path.resolve(file.path);
334
+ const rawSource = file.contents.toString();
335
+ await refreshRuntimeSetForSource(file, rawSource, "js");
336
+ await runtimeState.readyPromise;
200
337
  const moduleGraph = resolveModuleGraphOptions(options.moduleGraph);
201
338
  const handlerOptions = {
202
339
  ...options,
203
340
  filename,
204
341
  moduleGraph,
205
- tailwindcssMajorVersion: runtimeState.twPatcher.majorVersion,
206
342
  babelParserOptions: {
207
343
  ...options?.babelParserOptions ?? {},
208
344
  sourceFilename: filename
209
345
  }
210
346
  };
211
- const rawSource = file.contents.toString();
347
+ if (runtimeState.twPatcher.majorVersion !== void 0) handlerOptions.tailwindcssMajorVersion = runtimeState.twPatcher.majorVersion;
212
348
  await processCachedTask({
213
349
  cache,
214
350
  cacheKey: file.path,
@@ -220,20 +356,23 @@ function createPlugins(options = {}) {
220
356
  debug("js cache hit: %s", file.path);
221
357
  },
222
358
  async transform() {
223
- await runtimeState.patchPromise;
359
+ await runtimeState.readyPromise;
224
360
  const currentSource = file.contents?.toString() ?? rawSource;
225
- if (shouldSkipJsTransform(currentSource, handlerOptions)) return { result: currentSource };
361
+ if (shouldSkipJsTransform(currentSource, {
362
+ ...handlerOptions,
363
+ classNameSet: runtimeSet
364
+ })) return { result: currentSource };
226
365
  const { code } = await jsHandler(currentSource, runtimeSet, handlerOptions);
227
366
  debug("js handle: %s", file.path);
228
367
  return { result: code };
229
368
  }
230
369
  });
231
370
  });
232
- const transformWxml = (options = {}) => createVinylTransform(async (file) => {
371
+ const transformWxml = (options = {}) => createVinylTransform("html", async (file) => {
233
372
  if (!file.contents) return;
234
- await refreshRuntimeSet(false);
235
- await runtimeState.patchPromise;
236
373
  const rawSource = file.contents.toString();
374
+ await refreshRuntimeSetForSource(file, rawSource, "html");
375
+ await runtimeState.readyPromise;
237
376
  await processCachedTask({
238
377
  cache,
239
378
  cacheKey: file.path,
@@ -245,7 +384,7 @@ function createPlugins(options = {}) {
245
384
  debug("html cache hit: %s", file.path);
246
385
  },
247
386
  async transform() {
248
- await runtimeState.patchPromise;
387
+ await runtimeState.readyPromise;
249
388
  const code = await templateHandler(rawSource, resolveWxmlHandlerOptions(options));
250
389
  debug("html handle: %s", file.path);
251
390
  return { result: code };