weapp-tailwindcss 5.0.10 → 5.0.12

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 (57) hide show
  1. package/dist/{bundle-state-CXzPknlT.mjs → bundle-state-BxMNKjBV.mjs} +2 -34
  2. package/dist/{bundle-state-BwtEqxvU.js → bundle-state-DU2ATDhw.js} +1 -39
  3. package/dist/bundlers/gulp/vinyl-transform.d.ts +1 -1
  4. package/dist/bundlers/shared/hmr-timing.d.ts +1 -0
  5. package/dist/bundlers/vite/generate-bundle/css-output.d.ts +2 -1
  6. package/dist/bundlers/vite/generate-bundle/remembered-css.d.ts +1 -1
  7. package/dist/bundlers/vite/generate-bundle/types.d.ts +5 -0
  8. package/dist/bundlers/vite/generate-bundle.d.ts +1 -1
  9. package/dist/bundlers/vite/source-candidates.d.ts +6 -0
  10. package/dist/bundlers/vite/weapp-vite-config.d.ts +1 -0
  11. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/helpers.d.ts +10 -8
  12. package/dist/cache/index.d.ts +4 -0
  13. package/dist/cli.js +7 -0
  14. package/dist/cli.mjs +7 -0
  15. package/dist/core.d.ts +7 -0
  16. package/dist/core.js +8 -5
  17. package/dist/core.mjs +8 -5
  18. package/dist/{generator-ChgOWNOj.js → generator-Cb1Zp3Al.js} +1 -1
  19. package/dist/{generator-h2XRiJ9-.mjs → generator-mvNFUvns.mjs} +1 -1
  20. package/dist/generator.js +2 -2
  21. package/dist/generator.mjs +2 -2
  22. package/dist/{gulp-Be88jhoY.mjs → gulp-BfZpaYSQ.mjs} +97 -11
  23. package/dist/{gulp-CHtZF-oT.js → gulp-CxGZU0-v.js} +97 -11
  24. package/dist/gulp.js +1 -1
  25. package/dist/gulp.mjs +1 -1
  26. package/dist/{hmr-timing-BkivBZvN.js → hmr-timing-DFR51wgo.js} +61 -9
  27. package/dist/{hmr-timing-Ct5w4hdM.mjs → hmr-timing-DNjF8bWA.mjs} +49 -10
  28. package/dist/index.js +4 -4
  29. package/dist/index.mjs +4 -4
  30. package/dist/postcss.js +9 -10
  31. package/dist/postcss.mjs +7 -5
  32. package/dist/{precheck-CY9oaH49.js → precheck-30zNPRlI.js} +13 -3
  33. package/dist/{precheck-BpHxsWRd.mjs → precheck-CsFr1q2l.mjs} +14 -4
  34. package/dist/presets.js +2 -2
  35. package/dist/presets.mjs +2 -2
  36. package/dist/tailwindcss/source-scan.d.ts +1 -0
  37. package/dist/tailwindcss/v3-engine/generator.d.ts +17 -0
  38. package/dist/tailwindcss/v3-engine/index.d.ts +1 -1
  39. package/dist/tailwindcss/v3-engine/types.d.ts +1 -0
  40. package/dist/tailwindcss/v4-engine/generator.d.ts +19 -0
  41. package/dist/tailwindcss/v4-engine/index.d.ts +1 -1
  42. package/dist/{tailwindcss-Bfy2egdX.mjs → tailwindcss-CK84uGBp.mjs} +1 -1
  43. package/dist/{tailwindcss-DbbAKAZP.js → tailwindcss-Clpkz1oR.js} +1 -1
  44. package/dist/{transform-Cd634UZV.js → transform-CaVEBOuR.js} +1 -1
  45. package/dist/{transform-r5evL6Hn.mjs → transform-Cju08-aJ.mjs} +1 -1
  46. package/dist/{v3-engine-D0yA9ZkF.js → v3-engine-CQE5JJNZ.js} +142 -29
  47. package/dist/{v3-engine-CFkP6dWF.mjs → v3-engine-DKBaKWGL.mjs} +131 -30
  48. package/dist/{vite-Bh-BNp5g.js → vite-BBGOjh9e.js} +301 -56
  49. package/dist/{vite-BM_iIFmS.mjs → vite-CS5DE-HD.mjs} +300 -55
  50. package/dist/vite.js +1 -1
  51. package/dist/vite.mjs +1 -1
  52. package/dist/weapp-tw-css-import-rewrite-loader.js +130 -31
  53. package/dist/{webpack-CJAOcYEO.js → webpack-DIWrcpRo.js} +93 -12
  54. package/dist/{webpack-DPdrcC2X.mjs → webpack-SPcri_D8.mjs} +92 -11
  55. package/dist/webpack.js +1 -1
  56. package/dist/webpack.mjs +1 -1
  57. package/package.json +3 -3
package/dist/vite.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-Bh-BNp5g.js");
2
+ const require_vite = require("./vite-BBGOjh9e.js");
3
3
  exports.WeappTailwindcss = require_vite.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_vite.WeappTailwindcss;
package/dist/vite.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as WeappTailwindcss } from "./vite-BM_iIFmS.mjs";
1
+ import { t as WeappTailwindcss } from "./vite-CS5DE-HD.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };
@@ -16,6 +16,7 @@ let _weapp_tailwindcss_shared = require("@weapp-tailwindcss/shared");
16
16
  let tailwindcss_patch = require("tailwindcss-patch");
17
17
  tailwindcss_patch = require_watch_dependencies.__toESM(tailwindcss_patch);
18
18
  let node_module = require("node:module");
19
+ let lru_cache = require("lru-cache");
19
20
  let _weapp_tailwindcss_logger = require("@weapp-tailwindcss/logger");
20
21
  let node_url = require("node:url");
21
22
  let debug = require("debug");
@@ -1783,8 +1784,12 @@ async function transformTailwindV4CssByTarget(css, target, options) {
1783
1784
  }
1784
1785
  //#endregion
1785
1786
  //#region src/tailwindcss/v4-engine/generator.ts
1786
- const incrementalGenerateCache$1 = /* @__PURE__ */ new Map();
1787
- const incrementalGenerateTaskCache = /* @__PURE__ */ new Map();
1787
+ const INCREMENTAL_GENERATE_CACHE_MAX$1 = 8;
1788
+ const INCREMENTAL_GENERATE_TASK_CACHE_MAX = 32;
1789
+ const INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX$1 = 128;
1790
+ const INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX$1 = 256 * 1024;
1791
+ const incrementalGenerateCache$1 = new lru_cache.LRUCache({ max: INCREMENTAL_GENERATE_CACHE_MAX$1 });
1792
+ const incrementalGenerateTaskCache = new lru_cache.LRUCache({ max: INCREMENTAL_GENERATE_TASK_CACHE_MAX });
1788
1793
  function collectCandidates(candidates) {
1789
1794
  return new Set(candidates ?? []);
1790
1795
  }
@@ -1880,6 +1885,9 @@ function collectCustomPropertyValues(css) {
1880
1885
  function mergeCustomPropertyValues(target, css) {
1881
1886
  for (const [prop, value] of collectCustomPropertyValues(css)) target.set(prop, value);
1882
1887
  }
1888
+ function shouldRebuildIncrementalEntry$1(cached, requestedCandidates, missingCandidates) {
1889
+ return cached.seenCandidates.size + missingCandidates.length > INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX$1 || cached.css.length > INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX$1 || cached.rawCss.length > INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX$1 || requestedCandidates.size > INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX$1;
1890
+ }
1883
1891
  function seedIncrementalGenerateCache(options) {
1884
1892
  const cacheKey = createIncrementalGenerateCacheKey(options.compatibleSource, options.target, options.styleOptions, options.tailwindcssV3Compatibility);
1885
1893
  const customPropertyValues = collectCustomPropertyValues(options.compatibleSource.css);
@@ -1967,6 +1975,18 @@ function createTailwindV4Engine(source) {
1967
1975
  root: cached.root,
1968
1976
  target: cached.target
1969
1977
  };
1978
+ if (shouldRebuildIncrementalEntry$1(cached, requestedCandidates, missingCandidates)) return runIncrementalGenerateTask(cacheKey, requestedCandidates, options.scanSources, async () => {
1979
+ const generated = await generateOnce(source, options);
1980
+ seedIncrementalGenerateCache({
1981
+ compatibleSource,
1982
+ generated,
1983
+ requestedCandidates,
1984
+ styleOptions,
1985
+ tailwindcssV3Compatibility: options.tailwindcssV3Compatibility,
1986
+ target
1987
+ });
1988
+ return generated;
1989
+ });
1970
1990
  return runIncrementalGenerateTask(cacheKey, requestedCandidates, options.scanSources, async () => {
1971
1991
  const designSystem = await cached.designSystemPromise;
1972
1992
  const normalizedMissing = normalizeRpxTextCandidates(missingCandidates);
@@ -3200,7 +3220,10 @@ async function transformTailwindV3CssByTarget(css, target, options) {
3200
3220
  }
3201
3221
  //#endregion
3202
3222
  //#region src/tailwindcss/v3-engine/generator.ts
3203
- const incrementalGenerateCache = /* @__PURE__ */ new Map();
3223
+ const INCREMENTAL_GENERATE_CACHE_MAX = 8;
3224
+ const INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX = 128;
3225
+ const INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX = 256 * 1024;
3226
+ const incrementalGenerateCache = new lru_cache.LRUCache({ max: INCREMENTAL_GENERATE_CACHE_MAX });
3204
3227
  const patchRawStyleGenerator = typeof tailwindcss_patch.generateTailwindV3RawStyle === "function" ? tailwindcss_patch.generateTailwindV3RawStyle : void 0;
3205
3228
  function isTailwindV3PatchResolutionError(error, packageName) {
3206
3229
  if (!error || typeof error !== "object") return false;
@@ -3324,6 +3347,48 @@ function sortCandidates(candidates) {
3324
3347
  return a < z ? -1 : 1;
3325
3348
  });
3326
3349
  }
3350
+ function createRequestedCandidatesCacheKey(candidates) {
3351
+ return sortCandidates(candidates).join("\n");
3352
+ }
3353
+ function createIncrementalResultsCache() {
3354
+ return new lru_cache.LRUCache({ max: 16 });
3355
+ }
3356
+ function replaceIncrementalEntry(entry, candidates, generated) {
3357
+ if (!generated.context) return;
3358
+ entry.context = generated.context;
3359
+ entry.seenCandidates = new Set(candidates);
3360
+ entry.classSet = new Set(generated.classSet);
3361
+ entry.css = generated.css;
3362
+ entry.rawCss = generated.rawCss;
3363
+ entry.dependencies = generated.dependencies;
3364
+ entry.resultsByCandidates.clear();
3365
+ }
3366
+ function seedIncrementalResult(entry, candidates, result) {
3367
+ entry.resultsByCandidates.set(createRequestedCandidatesCacheKey(candidates), {
3368
+ classSet: new Set(result.classSet),
3369
+ css: result.css,
3370
+ rawCss: result.rawCss,
3371
+ dependencies: result.dependencies
3372
+ });
3373
+ }
3374
+ function createGenerateResultFromCache(cached, result, candidates) {
3375
+ return {
3376
+ css: result.css,
3377
+ rawCss: result.rawCss,
3378
+ incrementalCss: "",
3379
+ incrementalRawCss: "",
3380
+ classSet: new Set(result.classSet),
3381
+ rawCandidates: new Set(candidates),
3382
+ dependencies: result.dependencies,
3383
+ sources: [],
3384
+ root: null,
3385
+ target: cached.target,
3386
+ version: 3
3387
+ };
3388
+ }
3389
+ function shouldRebuildIncrementalEntry(cached, requestedCandidates, missingCandidates) {
3390
+ return cached.seenCandidates.size + missingCandidates.length > INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX || cached.css.length > INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX || cached.rawCss.length > INCREMENTAL_GENERATE_ENTRY_CSS_BYTES_MAX || requestedCandidates.size > INCREMENTAL_GENERATE_ENTRY_CANDIDATES_MAX;
3391
+ }
3327
3392
  function appendUtilityRules(root, context, rules) {
3328
3393
  const sortedRules = context.offsets.sort(rules);
3329
3394
  for (const [sort, rule] of sortedRules) {
@@ -3453,38 +3518,31 @@ function createTailwindV3Engine(source) {
3453
3518
  if (cached) {
3454
3519
  if (hasRemovedCandidates(cached.seenCandidates, requestedCandidates)) {
3455
3520
  const generated = await generateOnce(source, options);
3456
- incrementalGenerateCache.set(cacheKey, {
3457
- context: generated.context,
3458
- seenCandidates: new Set(requestedCandidates),
3459
- classSet: new Set(generated.classSet),
3460
- css: generated.css,
3461
- rawCss: generated.rawCss,
3462
- dependencies: generated.dependencies,
3463
- target: generated.target
3464
- });
3521
+ replaceIncrementalEntry(cached, requestedCandidates, generated);
3522
+ seedIncrementalResult(cached, requestedCandidates, generated);
3465
3523
  return generated;
3466
3524
  }
3525
+ const requestedCacheKey = createRequestedCandidatesCacheKey(requestedCandidates);
3526
+ const cachedResult = cached.resultsByCandidates.get(requestedCacheKey);
3527
+ if (cachedResult) return createGenerateResultFromCache(cached, cachedResult, requestedCandidates);
3467
3528
  const missingCandidates = [...requestedCandidates].filter((candidate) => !cached.seenCandidates.has(candidate));
3468
- if (missingCandidates.length === 0) return {
3469
- css: cached.css,
3470
- rawCss: cached.rawCss,
3471
- incrementalCss: "",
3472
- incrementalRawCss: "",
3473
- classSet: new Set(cached.classSet),
3474
- rawCandidates: new Set(cached.seenCandidates),
3475
- dependencies: cached.dependencies,
3476
- sources: [],
3477
- root: null,
3478
- target: cached.target,
3479
- version: 3
3480
- };
3529
+ if (missingCandidates.length === 0) {
3530
+ seedIncrementalResult(cached, requestedCandidates, cached);
3531
+ return createGenerateResultFromCache(cached, cached, requestedCandidates);
3532
+ }
3533
+ if (shouldRebuildIncrementalEntry(cached, requestedCandidates, missingCandidates)) {
3534
+ const generated = await generateOnce(source, options);
3535
+ replaceIncrementalEntry(cached, requestedCandidates, generated);
3536
+ seedIncrementalResult(cached, requestedCandidates, generated);
3537
+ return generated;
3538
+ }
3481
3539
  const generated = await generateIncrementalMissingUtilities(cached.context, missingCandidates, target, styleOptions, options.bareArbitraryValues);
3482
3540
  for (const candidate of missingCandidates) cached.seenCandidates.add(candidate);
3483
3541
  for (const className of generated.classSet) cached.classSet.add(className);
3484
3542
  cached.css = [cached.css, generated.css].filter(Boolean).join("\n");
3485
3543
  cached.rawCss = [cached.rawCss, generated.rawCss].filter(Boolean).join("\n");
3486
3544
  cached.dependencies = [...new Set([...cached.dependencies, ...generated.dependencies])];
3487
- return {
3545
+ const result = {
3488
3546
  css: cached.css,
3489
3547
  rawCss: cached.rawCss,
3490
3548
  incrementalCss: generated.css,
@@ -3497,17 +3555,23 @@ function createTailwindV3Engine(source) {
3497
3555
  target: cached.target,
3498
3556
  version: 3
3499
3557
  };
3558
+ seedIncrementalResult(cached, requestedCandidates, result);
3559
+ return result;
3500
3560
  }
3501
3561
  const generated = await generateOnce(source, options);
3502
- incrementalGenerateCache.set(cacheKey, {
3562
+ const resultsByCandidates = createIncrementalResultsCache();
3563
+ const entry = {
3503
3564
  context: generated.context,
3504
3565
  seenCandidates: new Set(requestedCandidates),
3505
3566
  classSet: new Set(generated.classSet),
3506
3567
  css: generated.css,
3507
3568
  rawCss: generated.rawCss,
3508
3569
  dependencies: generated.dependencies,
3570
+ resultsByCandidates,
3509
3571
  target: generated.target
3510
- });
3572
+ };
3573
+ seedIncrementalResult(entry, requestedCandidates, generated);
3574
+ incrementalGenerateCache.set(cacheKey, entry);
3511
3575
  return generated;
3512
3576
  }
3513
3577
  async function generate(options = {}) {
@@ -3576,6 +3640,7 @@ async function resolveTailwindV3Source(options = {}) {
3576
3640
  const cssConfig = resolveCssConfig(options.css, base);
3577
3641
  const config = resolveOptionalPath(options.config, base) ?? cssConfig.config;
3578
3642
  const cwd = options.cwd ?? (config ? node_path.default.dirname(config) : projectRoot);
3643
+ const explicitConfigObject = normalizeLoadedConfig(options.configObject);
3579
3644
  const loaded = await (0, tailwindcss_config.loadConfig)(omitUndefined({
3580
3645
  config,
3581
3646
  cwd
@@ -3587,7 +3652,7 @@ async function resolveTailwindV3Source(options = {}) {
3587
3652
  base,
3588
3653
  css: cssConfig.css ?? options.css ?? DEFAULT_TAILWIND_V3_CSS,
3589
3654
  config: loaded?.filepath ?? config,
3590
- configObject: normalizeLoadedConfig(loaded?.config),
3655
+ configObject: explicitConfigObject ?? normalizeLoadedConfig(loaded?.config),
3591
3656
  dependencies: loaded?.filepath ? [loaded.filepath] : [],
3592
3657
  packageName: options.packageName ?? "tailwindcss",
3593
3658
  postcssPlugin: options.postcssPlugin ?? options.packageName ?? "tailwindcss"
@@ -5532,7 +5597,40 @@ function reorderMarkedUserLayerComponentsCss(css) {
5532
5597
  return appendCss(appendCss(rest.slice(0, insertionIndex), layerCss), rest.slice(insertionIndex));
5533
5598
  }
5534
5599
  //#endregion
5600
+ //#region src/bundlers/shared/run-tasks.ts
5601
+ async function runWithConcurrency(factories, limit = Math.min(4, Math.max(1, factories.length))) {
5602
+ if (factories.length === 0) return [];
5603
+ const results = Array.from({ length: factories.length });
5604
+ const executing = /* @__PURE__ */ new Set();
5605
+ let cursor = 0;
5606
+ const effectiveLimit = Math.max(1, limit);
5607
+ const scheduleNext = () => {
5608
+ if (cursor >= factories.length) return;
5609
+ const currentIndex = cursor++;
5610
+ const factory = factories[currentIndex];
5611
+ if (!factory) return;
5612
+ const wrapped = Promise.resolve(factory()).then((value) => {
5613
+ results[currentIndex] = value;
5614
+ }).finally(() => {
5615
+ executing.delete(wrapped);
5616
+ });
5617
+ executing.add(wrapped);
5618
+ };
5619
+ while (cursor < factories.length && executing.size < effectiveLimit) scheduleNext();
5620
+ while (cursor < factories.length) {
5621
+ await Promise.race(executing);
5622
+ scheduleNext();
5623
+ }
5624
+ await Promise.all(executing);
5625
+ return results;
5626
+ }
5627
+ //#endregion
5535
5628
  //#region src/bundlers/shared/generator-css.ts
5629
+ function resolveGeneratorSourceConcurrency() {
5630
+ const configured = Number.parseInt(node_process.default.env["WEAPP_TW_GENERATOR_SOURCE_CONCURRENCY"] ?? "", 10);
5631
+ if (Number.isFinite(configured) && configured > 0) return configured;
5632
+ return 1;
5633
+ }
5536
5634
  async function generateCssByGenerator(options) {
5537
5635
  const { opts, runtimeState, runtime, rawSource, file, cssHandlerOptions, cssUserHandlerOptions, getSourceCandidatesForEntries, styleHandler, debug } = options;
5538
5636
  const generatorOptions = {
@@ -5578,7 +5676,8 @@ async function generateCssByGenerator(options) {
5578
5676
  });
5579
5677
  const generatorStyleOptions = resolveGeneratorStyleOptions(opts, cssHandlerOptions, generatorOptions.styleOptions);
5580
5678
  const configuredContainerCompat = hasConfiguredContainerCompatSources(sources);
5581
- const generated = mergeGeneratorResults((await Promise.all(sources.map(async (source) => {
5679
+ const sourceConcurrency = resolveGeneratorSourceConcurrency();
5680
+ const generated = mergeGeneratorResults((await runWithConcurrency(sources.map((source) => async () => {
5582
5681
  const generator = createWeappTailwindcssGenerator(source);
5583
5682
  const sourceEntries = getSourceCandidatesForEntries && (majorVersion === 3 || majorVersion === 4) ? await resolveGeneratorSourceEntries(source, runtimeState) : void 0;
5584
5683
  const scopedRuntime = sourceEntries ? getSourceCandidatesForEntries?.(sourceEntries) : void 0;
@@ -5606,7 +5705,7 @@ async function generateCssByGenerator(options) {
5606
5705
  tailwindcssV3Compatibility: generatorOptions.tailwindcssV3Compatibility,
5607
5706
  target: generatorOptions.target
5608
5707
  });
5609
- }))).filter((item) => Boolean(item)));
5708
+ }), sourceConcurrency)).filter((item) => Boolean(item)));
5610
5709
  if (!generated) return;
5611
5710
  debug("tailwind generator result: %s rawBytes=%d cssBytes=%d candidates=%d", file, generated.rawCss.length, generated.css.length, generated.classSet.size);
5612
5711
  if ((generated.target !== "weapp" || !hasUserCssLayerBlocks(generatorRawSource)) && typeof options.previousCss === "string" && typeof generated.incrementalCss === "string") {
@@ -1,11 +1,11 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_v3_engine = require("./v3-engine-D0yA9ZkF.js");
3
- const require_generator = require("./generator-ChgOWNOj.js");
4
- const require_precheck = require("./precheck-CY9oaH49.js");
2
+ const require_v3_engine = require("./v3-engine-CQE5JJNZ.js");
3
+ const require_generator = require("./generator-Cb1Zp3Al.js");
4
+ const require_precheck = require("./precheck-30zNPRlI.js");
5
5
  const require_utils = require("./utils-Dolmt8EO.js");
6
- const require_tailwindcss = require("./tailwindcss-DbbAKAZP.js");
7
- const require_hmr_timing = require("./hmr-timing-BkivBZvN.js");
8
- const require_bundle_state = require("./bundle-state-BwtEqxvU.js");
6
+ const require_tailwindcss = require("./tailwindcss-Clpkz1oR.js");
7
+ const require_hmr_timing = require("./hmr-timing-DFR51wgo.js");
8
+ const require_bundle_state = require("./bundle-state-DU2ATDhw.js");
9
9
  let node_module = require("node:module");
10
10
  node_module = require_chunk.__toESM(node_module);
11
11
  let node_fs = require("node:fs");
@@ -299,6 +299,57 @@ function createWebpackAssetUpdater(options) {
299
299
  }
300
300
  //#endregion
301
301
  //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets.ts
302
+ const WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX = 128;
303
+ function toMb(bytes) {
304
+ return Math.round(bytes / 1024 / 1024);
305
+ }
306
+ function pruneMapToMaxSize(map, maxSize) {
307
+ while (map.size > maxSize) {
308
+ const oldestKey = map.keys().next().value;
309
+ if (oldestKey === void 0) break;
310
+ map.delete(oldestKey);
311
+ }
312
+ }
313
+ function pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles) {
314
+ const activeSuffixes = [...activeCssFiles].map((file) => `:${file}`);
315
+ for (const key of cssHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssHandlerOptionsCache.delete(key);
316
+ for (const key of cssUserHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssUserHandlerOptionsCache.delete(key);
317
+ pruneMapToMaxSize(cssHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
318
+ pruneMapToMaxSize(cssUserHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
319
+ }
320
+ function resolveWebpackMemoryDebugStats(context) {
321
+ if (node_process.default.env["WEAPP_TW_HMR_MEMORY_DEBUG"] !== "1") return;
322
+ const memory = node_process.default.memoryUsage();
323
+ return {
324
+ phase: context.phase,
325
+ process: {
326
+ rssMb: toMb(memory.rss),
327
+ heapTotalMb: toMb(memory.heapTotal),
328
+ heapUsedMb: toMb(memory.heapUsed),
329
+ externalMb: toMb(memory.external),
330
+ arrayBuffersMb: toMb(memory.arrayBuffers)
331
+ },
332
+ assets: {
333
+ active: context.activeAssetFiles,
334
+ activeCss: context.activeCssFiles
335
+ },
336
+ processCache: {
337
+ instance: context.cache.instance.size,
338
+ hashMap: context.cache.hashMap.size,
339
+ activeCacheKeys: context.activeProcessCacheKeys.size,
340
+ activeHashKeys: context.activeProcessHashKeys.size
341
+ },
342
+ webpackCss: {
343
+ handlerOptions: context.cssHandlerOptionsCache.size,
344
+ userHandlerOptions: context.cssUserHandlerOptionsCache.size,
345
+ maxHandlerOptions: WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX
346
+ },
347
+ tailwind: {
348
+ v3: require_v3_engine.getTailwindV3IncrementalGenerateCacheStats(),
349
+ v4: require_v3_engine.getTailwindV4IncrementalGenerateCacheStats()
350
+ }
351
+ };
352
+ }
302
353
  function setupWebpackV5ProcessAssetsHook(options) {
303
354
  const { compiler, options: compilerOptions, appType, runtimeState, getRuntimeRefreshRequirement, refreshRuntimeMetadata, isWebpackProcessedCssAsset, consumeRuntimeRefreshRequirement, isWatchMode, runtimeClassSetManager, debug } = options;
304
355
  const { Compilation, sources } = compiler.webpack;
@@ -363,6 +414,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
363
414
  }
364
415
  };
365
416
  const groupedEntries = require_utils.getGroupedEntries(entries, compilerOptions);
417
+ const activeProcessCacheKeys = /* @__PURE__ */ new Set();
418
+ const activeProcessHashKeys = /* @__PURE__ */ new Set();
419
+ const rememberProcessCacheKey = (cacheKey, hashKey = cacheKey) => {
420
+ activeProcessCacheKeys.add(cacheKey);
421
+ activeProcessHashKeys.add(hashKey);
422
+ };
423
+ for (const chunk of compilation.chunks) if (chunk.id) activeProcessHashKeys.add(chunk.id);
366
424
  const getCssHandlerOptions = (file) => {
367
425
  const majorVersion = runtimeState.twPatcher.majorVersion;
368
426
  const isMainChunk = compilerOptions.mainCssChunkMatcher(file, appType);
@@ -480,11 +538,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
480
538
  const [file, originalSource] = element;
481
539
  const rawSource = originalSource.source().toString();
482
540
  const cacheKey = file;
541
+ const hashKey = `${file}:asset`;
542
+ rememberProcessCacheKey(cacheKey, hashKey);
483
543
  const chunkHash = assetHashByChunk.get(file);
484
544
  tasks.push(require_hmr_timing.processCachedTask({
485
545
  cache: compilerOptions.cache,
486
546
  cacheKey,
487
- hashKey: `${file}:asset`,
547
+ hashKey,
488
548
  rawSource,
489
549
  hash: chunkHash,
490
550
  applyResult(source, { cacheHit }) {
@@ -505,6 +565,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
505
565
  const cacheKey = getCacheKey(file);
506
566
  const asset = compilation.getAsset(file);
507
567
  if (!asset) continue;
568
+ const hashKey = `${file}:asset`;
569
+ rememberProcessCacheKey(cacheKey, hashKey);
508
570
  const absoluteFile = require_bundle_state.toAbsoluteOutputPath(file, outputDir);
509
571
  const initialSource = asset.source.source();
510
572
  const initialRawSource = typeof initialSource === "string" ? initialSource : initialSource.toString();
@@ -513,7 +575,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
513
575
  await require_hmr_timing.processCachedTask({
514
576
  cache: compilerOptions.cache,
515
577
  cacheKey,
516
- hashKey: `${file}:asset`,
578
+ hashKey,
517
579
  rawSource: initialRawSource,
518
580
  hash: chunkHash,
519
581
  applyResult(source, { cacheHit }) {
@@ -549,10 +611,12 @@ function setupWebpackV5ProcessAssetsHook(options) {
549
611
  const rawSource = originalSource.source().toString();
550
612
  if (isWebpackProcessedCssAsset?.(file, rawSource)) {
551
613
  const nextCss = finalizeCssAssetSource(rawSource, { generatedCss: require_bundle_state.hasBundlerGeneratedCssMarker(rawSource) });
614
+ const hashKey = `${file}:asset`;
615
+ rememberProcessCacheKey(file, hashKey);
552
616
  tasks.push(require_hmr_timing.processCachedTask({
553
617
  cache: compilerOptions.cache,
554
618
  cacheKey: file,
555
- hashKey: `${file}:asset`,
619
+ hashKey,
556
620
  rawSource,
557
621
  hash: createRuntimeAwareCssHash(assetHashByChunk.get(file), compilerOptions.cache.computeHash(rawSource), `${runtimeSetHash}:${cssSourceTraceSignature}`),
558
622
  applyResult(source, { cacheHit }) {
@@ -569,11 +633,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
569
633
  continue;
570
634
  }
571
635
  const cacheKey = file;
636
+ const hashKey = `${file}:asset`;
637
+ rememberProcessCacheKey(cacheKey, hashKey);
572
638
  const runtimeAwareHash = createRuntimeAwareCssHash(assetHashByChunk.get(file), compilerOptions.cache.computeHash(rawSource), `${runtimeSetHash}:${cssSourceTraceSignature}`);
573
639
  tasks.push(require_hmr_timing.processCachedTask({
574
640
  cache: compilerOptions.cache,
575
641
  cacheKey,
576
- hashKey: `${file}:asset`,
642
+ hashKey,
577
643
  rawSource,
578
644
  hash: runtimeAwareHash,
579
645
  applyResult(source, { cacheHit }) {
@@ -604,10 +670,25 @@ function setupWebpackV5ProcessAssetsHook(options) {
604
670
  }
605
671
  }));
606
672
  }
607
- require_bundle_state.pushConcurrentTaskFactories(tasks, jsTaskFactories);
673
+ require_hmr_timing.pushConcurrentTaskFactories(tasks, jsTaskFactories);
608
674
  await Promise.all(tasks);
675
+ compilerOptions.cache.prune?.({
676
+ cacheKeys: activeProcessCacheKeys,
677
+ hashKeys: activeProcessHashKeys
678
+ });
679
+ const activeCssFiles = new Set(groupedEntries.css?.map(([file]) => file) ?? []);
680
+ pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles);
609
681
  debug("end");
610
- require_hmr_timing.emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt);
682
+ require_hmr_timing.emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt, { memoryDebug: resolveWebpackMemoryDebugStats({
683
+ activeAssetFiles: entries.length,
684
+ activeCssFiles: activeCssFiles.size,
685
+ activeProcessCacheKeys,
686
+ activeProcessHashKeys,
687
+ cache: compilerOptions.cache,
688
+ cssHandlerOptionsCache,
689
+ cssUserHandlerOptionsCache,
690
+ phase: "processAssets"
691
+ }) });
611
692
  compilerOptions.onEnd();
612
693
  });
613
694
  });
@@ -1,10 +1,10 @@
1
- import { M as removeTailwindSourceDirectives, l as getRuntimeClassSetSignature, m as resolveViteSourceScanEntries, rt as createDebug, st as resolveTailwindcssOptions } from "./v3-engine-CFkP6dWF.mjs";
2
- import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-h2XRiJ9-.mjs";
3
- import { b as refreshTailwindRuntimeState, d as _defineProperty, i as pluginName, n as getCompilerContext, t as shouldSkipJsTransform, v as createTailwindRuntimeReadyPromise, y as ensureRuntimeClassSet } from "./precheck-BpHxsWRd.mjs";
1
+ import { J as getTailwindV4IncrementalGenerateCacheStats, N as removeTailwindSourceDirectives, a as getTailwindV3IncrementalGenerateCacheStats, at as createDebug, h as resolveViteSourceScanEntries, lt as resolveTailwindcssOptions, u as getRuntimeClassSetSignature } from "./v3-engine-DKBaKWGL.mjs";
2
+ import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-mvNFUvns.mjs";
3
+ import { b as refreshTailwindRuntimeState, d as _defineProperty, i as pluginName, n as getCompilerContext, t as shouldSkipJsTransform, v as createTailwindRuntimeReadyPromise, y as ensureRuntimeClassSet } from "./precheck-CsFr1q2l.mjs";
4
4
  import { r as getGroupedEntries } from "./utils-DsaS975I.mjs";
5
- import { c as hasConfiguredTailwindV4CssRoots, l as upsertTailwindV4CssSource } from "./tailwindcss-Bfy2egdX.mjs";
6
- import { _ as isCssSourceTraceEnabled, a as createTailwindV3DefaultExtractor, d as isPureLocalCssImportWrapper, f as finalizeMiniProgramCss, g as createCssTokenSourceMap, h as createCssSourceTraceCacheSignature, m as annotateCssSourceTrace, n as emitHmrTiming, o as createBundleRuntimeClassSetManager, p as pruneMiniProgramGeneratedCss, r as createSourceCandidateCollector, s as generateCssByGenerator, v as processCachedTask } from "./hmr-timing-Ct5w4hdM.mjs";
7
- import { C as toAbsoluteOutputPath, S as resolveOutputSpecifier, b as stripRequestQuery, d as stripBundlerGeneratedCssMarkers, f as resolvePackageDir, l as hasBundlerGeneratedCssMarker, n as createBundleBuildState, p as resolvePluginDisabledState, r as updateBundleBuildState, s as pushConcurrentTaskFactories, t as buildBundleSnapshot, y as isSourceStyleRequest } from "./bundle-state-CXzPknlT.mjs";
5
+ import { c as hasConfiguredTailwindV4CssRoots, l as upsertTailwindV4CssSource } from "./tailwindcss-CK84uGBp.mjs";
6
+ import { _ as createCssSourceTraceCacheSignature, a as createTailwindV3DefaultExtractor, b as processCachedTask, g as annotateCssSourceTrace, h as pruneMiniProgramGeneratedCss, l as pushConcurrentTaskFactories, m as finalizeMiniProgramCss, n as emitHmrTiming, o as createBundleRuntimeClassSetManager, p as isPureLocalCssImportWrapper, r as createSourceCandidateCollector, s as generateCssByGenerator, v as createCssTokenSourceMap, y as isCssSourceTraceEnabled } from "./hmr-timing-DNjF8bWA.mjs";
7
+ import { S as toAbsoluteOutputPath, c as hasBundlerGeneratedCssMarker, d as resolvePackageDir, f as resolvePluginDisabledState, n as createBundleBuildState, r as updateBundleBuildState, t as buildBundleSnapshot, u as stripBundlerGeneratedCssMarkers, v as isSourceStyleRequest, x as resolveOutputSpecifier, y as stripRequestQuery } from "./bundle-state-BxMNKjBV.mjs";
8
8
  import Module, { createRequire } from "node:module";
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
@@ -293,6 +293,57 @@ function createWebpackAssetUpdater(options) {
293
293
  }
294
294
  //#endregion
295
295
  //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets.ts
296
+ const WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX = 128;
297
+ function toMb(bytes) {
298
+ return Math.round(bytes / 1024 / 1024);
299
+ }
300
+ function pruneMapToMaxSize(map, maxSize) {
301
+ while (map.size > maxSize) {
302
+ const oldestKey = map.keys().next().value;
303
+ if (oldestKey === void 0) break;
304
+ map.delete(oldestKey);
305
+ }
306
+ }
307
+ function pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles) {
308
+ const activeSuffixes = [...activeCssFiles].map((file) => `:${file}`);
309
+ for (const key of cssHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssHandlerOptionsCache.delete(key);
310
+ for (const key of cssUserHandlerOptionsCache.keys()) if (!activeSuffixes.some((suffix) => key.endsWith(suffix))) cssUserHandlerOptionsCache.delete(key);
311
+ pruneMapToMaxSize(cssHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
312
+ pruneMapToMaxSize(cssUserHandlerOptionsCache, WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX);
313
+ }
314
+ function resolveWebpackMemoryDebugStats(context) {
315
+ if (process.env["WEAPP_TW_HMR_MEMORY_DEBUG"] !== "1") return;
316
+ const memory = process.memoryUsage();
317
+ return {
318
+ phase: context.phase,
319
+ process: {
320
+ rssMb: toMb(memory.rss),
321
+ heapTotalMb: toMb(memory.heapTotal),
322
+ heapUsedMb: toMb(memory.heapUsed),
323
+ externalMb: toMb(memory.external),
324
+ arrayBuffersMb: toMb(memory.arrayBuffers)
325
+ },
326
+ assets: {
327
+ active: context.activeAssetFiles,
328
+ activeCss: context.activeCssFiles
329
+ },
330
+ processCache: {
331
+ instance: context.cache.instance.size,
332
+ hashMap: context.cache.hashMap.size,
333
+ activeCacheKeys: context.activeProcessCacheKeys.size,
334
+ activeHashKeys: context.activeProcessHashKeys.size
335
+ },
336
+ webpackCss: {
337
+ handlerOptions: context.cssHandlerOptionsCache.size,
338
+ userHandlerOptions: context.cssUserHandlerOptionsCache.size,
339
+ maxHandlerOptions: WEBPACK_CSS_HANDLER_OPTIONS_CACHE_MAX
340
+ },
341
+ tailwind: {
342
+ v3: getTailwindV3IncrementalGenerateCacheStats(),
343
+ v4: getTailwindV4IncrementalGenerateCacheStats()
344
+ }
345
+ };
346
+ }
296
347
  function setupWebpackV5ProcessAssetsHook(options) {
297
348
  const { compiler, options: compilerOptions, appType, runtimeState, getRuntimeRefreshRequirement, refreshRuntimeMetadata, isWebpackProcessedCssAsset, consumeRuntimeRefreshRequirement, isWatchMode, runtimeClassSetManager, debug } = options;
298
349
  const { Compilation, sources } = compiler.webpack;
@@ -357,6 +408,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
357
408
  }
358
409
  };
359
410
  const groupedEntries = getGroupedEntries(entries, compilerOptions);
411
+ const activeProcessCacheKeys = /* @__PURE__ */ new Set();
412
+ const activeProcessHashKeys = /* @__PURE__ */ new Set();
413
+ const rememberProcessCacheKey = (cacheKey, hashKey = cacheKey) => {
414
+ activeProcessCacheKeys.add(cacheKey);
415
+ activeProcessHashKeys.add(hashKey);
416
+ };
417
+ for (const chunk of compilation.chunks) if (chunk.id) activeProcessHashKeys.add(chunk.id);
360
418
  const getCssHandlerOptions = (file) => {
361
419
  const majorVersion = runtimeState.twPatcher.majorVersion;
362
420
  const isMainChunk = compilerOptions.mainCssChunkMatcher(file, appType);
@@ -474,11 +532,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
474
532
  const [file, originalSource] = element;
475
533
  const rawSource = originalSource.source().toString();
476
534
  const cacheKey = file;
535
+ const hashKey = `${file}:asset`;
536
+ rememberProcessCacheKey(cacheKey, hashKey);
477
537
  const chunkHash = assetHashByChunk.get(file);
478
538
  tasks.push(processCachedTask({
479
539
  cache: compilerOptions.cache,
480
540
  cacheKey,
481
- hashKey: `${file}:asset`,
541
+ hashKey,
482
542
  rawSource,
483
543
  hash: chunkHash,
484
544
  applyResult(source, { cacheHit }) {
@@ -499,6 +559,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
499
559
  const cacheKey = getCacheKey(file);
500
560
  const asset = compilation.getAsset(file);
501
561
  if (!asset) continue;
562
+ const hashKey = `${file}:asset`;
563
+ rememberProcessCacheKey(cacheKey, hashKey);
502
564
  const absoluteFile = toAbsoluteOutputPath(file, outputDir);
503
565
  const initialSource = asset.source.source();
504
566
  const initialRawSource = typeof initialSource === "string" ? initialSource : initialSource.toString();
@@ -507,7 +569,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
507
569
  await processCachedTask({
508
570
  cache: compilerOptions.cache,
509
571
  cacheKey,
510
- hashKey: `${file}:asset`,
572
+ hashKey,
511
573
  rawSource: initialRawSource,
512
574
  hash: chunkHash,
513
575
  applyResult(source, { cacheHit }) {
@@ -543,10 +605,12 @@ function setupWebpackV5ProcessAssetsHook(options) {
543
605
  const rawSource = originalSource.source().toString();
544
606
  if (isWebpackProcessedCssAsset?.(file, rawSource)) {
545
607
  const nextCss = finalizeCssAssetSource(rawSource, { generatedCss: hasBundlerGeneratedCssMarker(rawSource) });
608
+ const hashKey = `${file}:asset`;
609
+ rememberProcessCacheKey(file, hashKey);
546
610
  tasks.push(processCachedTask({
547
611
  cache: compilerOptions.cache,
548
612
  cacheKey: file,
549
- hashKey: `${file}:asset`,
613
+ hashKey,
550
614
  rawSource,
551
615
  hash: createRuntimeAwareCssHash(assetHashByChunk.get(file), compilerOptions.cache.computeHash(rawSource), `${runtimeSetHash}:${cssSourceTraceSignature}`),
552
616
  applyResult(source, { cacheHit }) {
@@ -563,11 +627,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
563
627
  continue;
564
628
  }
565
629
  const cacheKey = file;
630
+ const hashKey = `${file}:asset`;
631
+ rememberProcessCacheKey(cacheKey, hashKey);
566
632
  const runtimeAwareHash = createRuntimeAwareCssHash(assetHashByChunk.get(file), compilerOptions.cache.computeHash(rawSource), `${runtimeSetHash}:${cssSourceTraceSignature}`);
567
633
  tasks.push(processCachedTask({
568
634
  cache: compilerOptions.cache,
569
635
  cacheKey,
570
- hashKey: `${file}:asset`,
636
+ hashKey,
571
637
  rawSource,
572
638
  hash: runtimeAwareHash,
573
639
  applyResult(source, { cacheHit }) {
@@ -600,8 +666,23 @@ function setupWebpackV5ProcessAssetsHook(options) {
600
666
  }
601
667
  pushConcurrentTaskFactories(tasks, jsTaskFactories);
602
668
  await Promise.all(tasks);
669
+ compilerOptions.cache.prune?.({
670
+ cacheKeys: activeProcessCacheKeys,
671
+ hashKeys: activeProcessHashKeys
672
+ });
673
+ const activeCssFiles = new Set(groupedEntries.css?.map(([file]) => file) ?? []);
674
+ pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles);
603
675
  debug("end");
604
- emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt);
676
+ emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt, { memoryDebug: resolveWebpackMemoryDebugStats({
677
+ activeAssetFiles: entries.length,
678
+ activeCssFiles: activeCssFiles.size,
679
+ activeProcessCacheKeys,
680
+ activeProcessHashKeys,
681
+ cache: compilerOptions.cache,
682
+ cssHandlerOptionsCache,
683
+ cssUserHandlerOptionsCache,
684
+ phase: "processAssets"
685
+ }) });
605
686
  compilerOptions.onEnd();
606
687
  });
607
688
  });
package/dist/webpack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_webpack = require("./webpack-CJAOcYEO.js");
2
+ const require_webpack = require("./webpack-DIWrcpRo.js");
3
3
  exports.WeappTailwindcss = require_webpack.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_webpack.WeappTailwindcss;
5
5
  exports.weappTailwindcssPackageDir = require_webpack.weappTailwindcssPackageDir;
package/dist/webpack.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-DPdrcC2X.mjs";
1
+ import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-SPcri_D8.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss, weappTailwindcssPackageDir };