@csszyx/unplugin 0.15.3 → 0.16.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.
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const cssMangler = require('./css-mangler.cjs');
6
- const unplugin = require('./shared/unplugin.ZqxgHk5F.cjs');
6
+ const unplugin = require('./shared/unplugin.D3yBoTHP.cjs');
7
7
  const themeGroupsFile = require('./shared/unplugin.J6ue_lRJ.cjs');
8
8
  const types = require('@csszyx/types');
9
9
  const safelistSource = require('./shared/unplugin.DDSWQJYX.cjs');
@@ -81,6 +81,7 @@ exports.rollupPlugin = unplugin.rollupPlugin;
81
81
  exports.scanGlobalVarCss = unplugin.scanGlobalVarCss;
82
82
  exports.shouldEmitMissingCssFallback = unplugin.shouldEmitMissingCssFallback;
83
83
  exports.shouldEmitWarning = unplugin.shouldEmitWarning;
84
+ exports.shouldHoldAdvisories = unplugin.shouldHoldAdvisories;
84
85
  exports.shouldTrackGlobalVarSources = unplugin.shouldTrackGlobalVarSources;
85
86
  exports.shouldWarnMissingTailwindEntry = unplugin.shouldWarnMissingTailwindEntry;
86
87
  exports.shouldWarnUnscopedMonorepo = unplugin.shouldWarnUnscopedMonorepo;
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { CSSManglerOptions, CSSManglerResult, ClassAttributeSelector, MangleMap, classAttributeSelectorKey, createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass } from './css-mangler.cjs';
2
2
  export { CSSZYX_GLOBAL_ALIAS_PREFIX, TAILWIND_RESERVED_PREFIXES } from '@csszyx/types';
3
- import { G as GlobalVarScanCacheKeyInput, C as CssVarScanResult, S as ScanGlobalVarCssOptions, P as PlanGlobalVarAliasesInput, a as GlobalVarAliasPlan, R as RewriteGlobalVarCssAliasesOptions, b as GlobalVarCssAliasRewriteResult, c as CreateGlobalVarAliasValidationOptionsInput, V as ValidateGlobalVarAliasInputsOptions, d as GlobalVarAliasValidationResult } from './shared/unplugin.nvme_dSL.cjs';
3
+ import { G as GlobalVarScanCacheKeyInput, C as CssVarScanResult, S as ScanGlobalVarCssOptions, P as PlanGlobalVarAliasesInput, a as GlobalVarAliasPlan, R as RewriteGlobalVarCssAliasesOptions, b as GlobalVarCssAliasRewriteResult, c as CreateGlobalVarAliasValidationOptionsInput, V as ValidateGlobalVarAliasInputsOptions, d as GlobalVarAliasValidationResult } from './shared/unplugin.PKo7wFzu.cjs';
4
4
  // @ts-ignore
5
5
  export = undefined;
6
- export { e as CssVarDefinition, f as CssVarLocation, g as CssVarReference, h as GlobalVarAliasDiagnostic, i as GlobalVarAliasDiagnosticSeverity, j as GlobalVarAliasEntry, k as GlobalVarCodeSource, l as GlobalVarCssAssetSource, m as GlobalVarCssSource, n as GlobalVarScanCacheEntry, M as MangleHybridHazards, o as MangleSelectorHazard, p as ParsedTheme, q as ParsedUtilities, Q as QuietMode, r as RSCBoundaryViolation, s as RSCModuleRecord, t as allocateMangleTokens, u as assertNoRSCBoundaryViolation, v as assertNoRSCGraphViolation, w as collectMangleHybridHazards, x as createGlobalVarMapAssetSource, y as createRSCModuleRecord, z as cssHasContentScope, B as deleteRSCModuleRecord, D as emitMissingCssFallback, E as esbuildPlugin, F as extractGlobalVarAliasesForManifest, H as fileMayContainSafelistableSz, I as findLocalImportSources, J as findRSCBoundaryViolation, K as findRSCGraphViolation, L as hasInjectableTailwindCandidate, N as hasTokens, O as hasUseClientDirective, T as hasUseServerDirective, U as isAdvisoryDiagnostic, W as isCompileSourceOptedIn, X as isHardIgnoredPath, Y as isMangleableCssId, Z as isMonorepoPackage, _ as isPackagesSkippedSource, $ as isRSCServerModule, a0 as lateMangleCensusMessage, a1 as mangleCodeClassesSync, a2 as mangleEligibleClasses, a3 as mangleHybridHazardMessage, a4 as mergeThemes, a5 as missingTailwindEntryMessage, a6 as normalizeGlobalVarAliasesForCache, a7 as parseThemeBlocks, a8 as parseUtilityBlocks, a9 as realContentHashDisabledMessage, aa as recordGlobalVarSourceFile, ab as resolveCompileSourceDirs, ac as resolveNativeCacheIdentity, ad as resolveQuietMode, ae as rollupPlugin, af as scanCustomPropertyNames, ag as shouldEmitMissingCssFallback, ah as shouldEmitWarning, ai as shouldTrackGlobalVarSources, aj as shouldWarnMissingTailwindEntry, ak as shouldWarnUnscopedMonorepo, al as skippedSzFilesMessage, am as suppressedAdvisoryMessage, A as unplugin, an as unscopedMonorepoMessage, ao as vitePlugin, ap as watchModeMangleMessage, aq as webpackPlugin } from './shared/unplugin.nvme_dSL.cjs';
6
+ export { e as CssVarDefinition, f as CssVarLocation, g as CssVarReference, h as GlobalVarAliasDiagnostic, i as GlobalVarAliasDiagnosticSeverity, j as GlobalVarAliasEntry, k as GlobalVarCodeSource, l as GlobalVarCssAssetSource, m as GlobalVarCssSource, n as GlobalVarScanCacheEntry, M as MangleHybridHazards, o as MangleSelectorHazard, p as ParsedTheme, q as ParsedUtilities, Q as QuietMode, r as RSCBoundaryViolation, s as RSCModuleRecord, t as allocateMangleTokens, u as assertNoRSCBoundaryViolation, v as assertNoRSCGraphViolation, w as collectMangleHybridHazards, x as createGlobalVarMapAssetSource, y as createRSCModuleRecord, z as cssHasContentScope, B as deleteRSCModuleRecord, D as emitMissingCssFallback, E as esbuildPlugin, F as extractGlobalVarAliasesForManifest, H as fileMayContainSafelistableSz, I as findLocalImportSources, J as findRSCBoundaryViolation, K as findRSCGraphViolation, L as hasInjectableTailwindCandidate, N as hasTokens, O as hasUseClientDirective, T as hasUseServerDirective, U as isAdvisoryDiagnostic, W as isCompileSourceOptedIn, X as isHardIgnoredPath, Y as isMangleableCssId, Z as isMonorepoPackage, _ as isPackagesSkippedSource, $ as isRSCServerModule, a0 as lateMangleCensusMessage, a1 as mangleCodeClassesSync, a2 as mangleEligibleClasses, a3 as mangleHybridHazardMessage, a4 as mergeThemes, a5 as missingTailwindEntryMessage, a6 as normalizeGlobalVarAliasesForCache, a7 as parseThemeBlocks, a8 as parseUtilityBlocks, a9 as realContentHashDisabledMessage, aa as recordGlobalVarSourceFile, ab as resolveCompileSourceDirs, ac as resolveNativeCacheIdentity, ad as resolveQuietMode, ae as rollupPlugin, af as scanCustomPropertyNames, ag as shouldEmitMissingCssFallback, ah as shouldEmitWarning, ai as shouldHoldAdvisories, aj as shouldTrackGlobalVarSources, ak as shouldWarnMissingTailwindEntry, al as shouldWarnUnscopedMonorepo, am as skippedSzFilesMessage, an as suppressedAdvisoryMessage, A as unplugin, ao as unscopedMonorepoMessage, ap as vitePlugin, aq as watchModeMangleMessage, ar as webpackPlugin } from './shared/unplugin.PKo7wFzu.cjs';
7
7
  import 'postcss';
8
8
  import '@csszyx/compiler';
9
9
  import 'esbuild';
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { CSSManglerOptions, CSSManglerResult, ClassAttributeSelector, MangleMap, classAttributeSelectorKey, createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass } from './css-mangler.mjs';
2
2
  export { CSSZYX_GLOBAL_ALIAS_PREFIX, TAILWIND_RESERVED_PREFIXES } from '@csszyx/types';
3
- import { G as GlobalVarScanCacheKeyInput, C as CssVarScanResult, S as ScanGlobalVarCssOptions, P as PlanGlobalVarAliasesInput, a as GlobalVarAliasPlan, R as RewriteGlobalVarCssAliasesOptions, b as GlobalVarCssAliasRewriteResult, c as CreateGlobalVarAliasValidationOptionsInput, V as ValidateGlobalVarAliasInputsOptions, d as GlobalVarAliasValidationResult } from './shared/unplugin.CInSoHdQ.mjs';
4
- export { e as CssVarDefinition, f as CssVarLocation, g as CssVarReference, h as GlobalVarAliasDiagnostic, i as GlobalVarAliasDiagnosticSeverity, j as GlobalVarAliasEntry, k as GlobalVarCodeSource, l as GlobalVarCssAssetSource, m as GlobalVarCssSource, n as GlobalVarScanCacheEntry, M as MangleHybridHazards, o as MangleSelectorHazard, p as ParsedTheme, q as ParsedUtilities, Q as QuietMode, r as RSCBoundaryViolation, s as RSCModuleRecord, t as allocateMangleTokens, u as assertNoRSCBoundaryViolation, v as assertNoRSCGraphViolation, w as collectMangleHybridHazards, x as createGlobalVarMapAssetSource, y as createRSCModuleRecord, z as cssHasContentScope, A as default, B as deleteRSCModuleRecord, D as emitMissingCssFallback, E as esbuildPlugin, F as extractGlobalVarAliasesForManifest, H as fileMayContainSafelistableSz, I as findLocalImportSources, J as findRSCBoundaryViolation, K as findRSCGraphViolation, L as hasInjectableTailwindCandidate, N as hasTokens, O as hasUseClientDirective, T as hasUseServerDirective, U as isAdvisoryDiagnostic, W as isCompileSourceOptedIn, X as isHardIgnoredPath, Y as isMangleableCssId, Z as isMonorepoPackage, _ as isPackagesSkippedSource, $ as isRSCServerModule, a0 as lateMangleCensusMessage, a1 as mangleCodeClassesSync, a2 as mangleEligibleClasses, a3 as mangleHybridHazardMessage, a4 as mergeThemes, a5 as missingTailwindEntryMessage, a6 as normalizeGlobalVarAliasesForCache, a7 as parseThemeBlocks, a8 as parseUtilityBlocks, a9 as realContentHashDisabledMessage, aa as recordGlobalVarSourceFile, ab as resolveCompileSourceDirs, ac as resolveNativeCacheIdentity, ad as resolveQuietMode, ae as rollupPlugin, af as scanCustomPropertyNames, ag as shouldEmitMissingCssFallback, ah as shouldEmitWarning, ai as shouldTrackGlobalVarSources, aj as shouldWarnMissingTailwindEntry, ak as shouldWarnUnscopedMonorepo, al as skippedSzFilesMessage, am as suppressedAdvisoryMessage, A as unplugin, an as unscopedMonorepoMessage, ao as vitePlugin, ap as watchModeMangleMessage, aq as webpackPlugin } from './shared/unplugin.CInSoHdQ.mjs';
3
+ import { G as GlobalVarScanCacheKeyInput, C as CssVarScanResult, S as ScanGlobalVarCssOptions, P as PlanGlobalVarAliasesInput, a as GlobalVarAliasPlan, R as RewriteGlobalVarCssAliasesOptions, b as GlobalVarCssAliasRewriteResult, c as CreateGlobalVarAliasValidationOptionsInput, V as ValidateGlobalVarAliasInputsOptions, d as GlobalVarAliasValidationResult } from './shared/unplugin.Bu2rzRtv.mjs';
4
+ export { e as CssVarDefinition, f as CssVarLocation, g as CssVarReference, h as GlobalVarAliasDiagnostic, i as GlobalVarAliasDiagnosticSeverity, j as GlobalVarAliasEntry, k as GlobalVarCodeSource, l as GlobalVarCssAssetSource, m as GlobalVarCssSource, n as GlobalVarScanCacheEntry, M as MangleHybridHazards, o as MangleSelectorHazard, p as ParsedTheme, q as ParsedUtilities, Q as QuietMode, r as RSCBoundaryViolation, s as RSCModuleRecord, t as allocateMangleTokens, u as assertNoRSCBoundaryViolation, v as assertNoRSCGraphViolation, w as collectMangleHybridHazards, x as createGlobalVarMapAssetSource, y as createRSCModuleRecord, z as cssHasContentScope, A as default, B as deleteRSCModuleRecord, D as emitMissingCssFallback, E as esbuildPlugin, F as extractGlobalVarAliasesForManifest, H as fileMayContainSafelistableSz, I as findLocalImportSources, J as findRSCBoundaryViolation, K as findRSCGraphViolation, L as hasInjectableTailwindCandidate, N as hasTokens, O as hasUseClientDirective, T as hasUseServerDirective, U as isAdvisoryDiagnostic, W as isCompileSourceOptedIn, X as isHardIgnoredPath, Y as isMangleableCssId, Z as isMonorepoPackage, _ as isPackagesSkippedSource, $ as isRSCServerModule, a0 as lateMangleCensusMessage, a1 as mangleCodeClassesSync, a2 as mangleEligibleClasses, a3 as mangleHybridHazardMessage, a4 as mergeThemes, a5 as missingTailwindEntryMessage, a6 as normalizeGlobalVarAliasesForCache, a7 as parseThemeBlocks, a8 as parseUtilityBlocks, a9 as realContentHashDisabledMessage, aa as recordGlobalVarSourceFile, ab as resolveCompileSourceDirs, ac as resolveNativeCacheIdentity, ad as resolveQuietMode, ae as rollupPlugin, af as scanCustomPropertyNames, ag as shouldEmitMissingCssFallback, ah as shouldEmitWarning, ai as shouldHoldAdvisories, aj as shouldTrackGlobalVarSources, ak as shouldWarnMissingTailwindEntry, al as shouldWarnUnscopedMonorepo, am as skippedSzFilesMessage, an as suppressedAdvisoryMessage, A as unplugin, ao as unscopedMonorepoMessage, ap as vitePlugin, aq as watchModeMangleMessage, ar as webpackPlugin } from './shared/unplugin.Bu2rzRtv.mjs';
5
5
  import 'postcss';
6
6
  import '@csszyx/compiler';
7
7
  import 'esbuild';
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  export { classAttributeSelectorKey, createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass } from './css-mangler.mjs';
2
- export { a as allocateMangleTokens, b as assertNoRSCBoundaryViolation, c as assertNoRSCGraphViolation, d as collectMangleHybridHazards, e as createGlobalVarAliasValidationOptions, f as createGlobalVarMapAssetSource, g as createGlobalVarScanCacheKey, h as createRSCModuleRecord, i as cssHasContentScope, u as default, j as deleteRSCModuleRecord, k as emitMissingCssFallback, l as esbuildPlugin, m as extractGlobalVarAliasesForManifest, n as fileMayContainSafelistableSz, o as findLocalImportSources, p as findRSCBoundaryViolation, q as findRSCGraphViolation, r as hasInjectableTailwindCandidate, s as hasUseClientDirective, t as hasUseServerDirective, v as isAdvisoryDiagnostic, w as isCompileSourceOptedIn, x as isHardIgnoredPath, y as isMangleableCssId, z as isMonorepoPackage, A as isPackagesSkippedSource, B as isRSCServerModule, C as isTailwindReservedGlobalVar, D as lateMangleCensusMessage, E as mangleCodeClassesSync, F as mangleEligibleClasses, G as mangleHybridHazardMessage, H as missingTailwindEntryMessage, I as normalizeGlobalVarAliasesForCache, J as planGlobalVarAliases, K as readGlobalVarScanCache, L as realContentHashDisabledMessage, M as recordGlobalVarSourceFile, N as resolveCompileSourceDirs, O as resolveGlobalVarScanCacheDir, P as resolveNativeCacheIdentity, Q as resolveQuietMode, R as rewriteGlobalVarCssAliases, S as rollupPlugin, T as scanGlobalVarCss, U as shouldEmitMissingCssFallback, V as shouldEmitWarning, W as shouldTrackGlobalVarSources, X as shouldWarnMissingTailwindEntry, Y as shouldWarnUnscopedMonorepo, Z as skippedSzFilesMessage, _ as suppressedAdvisoryMessage, u as unplugin, $ as unscopedMonorepoMessage, a0 as validateGlobalVarAliasInputs, a1 as vitePlugin, a2 as watchModeMangleMessage, a3 as webpackPlugin, a4 as writeGlobalVarScanCache } from './shared/unplugin.CPo2xrEy.mjs';
2
+ export { a as allocateMangleTokens, b as assertNoRSCBoundaryViolation, c as assertNoRSCGraphViolation, d as collectMangleHybridHazards, e as createGlobalVarAliasValidationOptions, f as createGlobalVarMapAssetSource, g as createGlobalVarScanCacheKey, h as createRSCModuleRecord, i as cssHasContentScope, u as default, j as deleteRSCModuleRecord, k as emitMissingCssFallback, l as esbuildPlugin, m as extractGlobalVarAliasesForManifest, n as fileMayContainSafelistableSz, o as findLocalImportSources, p as findRSCBoundaryViolation, q as findRSCGraphViolation, r as hasInjectableTailwindCandidate, s as hasUseClientDirective, t as hasUseServerDirective, v as isAdvisoryDiagnostic, w as isCompileSourceOptedIn, x as isHardIgnoredPath, y as isMangleableCssId, z as isMonorepoPackage, A as isPackagesSkippedSource, B as isRSCServerModule, C as isTailwindReservedGlobalVar, D as lateMangleCensusMessage, E as mangleCodeClassesSync, F as mangleEligibleClasses, G as mangleHybridHazardMessage, H as missingTailwindEntryMessage, I as normalizeGlobalVarAliasesForCache, J as planGlobalVarAliases, K as readGlobalVarScanCache, L as realContentHashDisabledMessage, M as recordGlobalVarSourceFile, N as resolveCompileSourceDirs, O as resolveGlobalVarScanCacheDir, P as resolveNativeCacheIdentity, Q as resolveQuietMode, R as rewriteGlobalVarCssAliases, S as rollupPlugin, T as scanGlobalVarCss, U as shouldEmitMissingCssFallback, V as shouldEmitWarning, W as shouldHoldAdvisories, X as shouldTrackGlobalVarSources, Y as shouldWarnMissingTailwindEntry, Z as shouldWarnUnscopedMonorepo, _ as skippedSzFilesMessage, $ as suppressedAdvisoryMessage, u as unplugin, a0 as unscopedMonorepoMessage, a1 as validateGlobalVarAliasInputs, a2 as vitePlugin, a3 as watchModeMangleMessage, a4 as webpackPlugin, a5 as writeGlobalVarScanCache } from './shared/unplugin.Dx0ngYWw.mjs';
3
3
  export { h as hasTokens, m as mergeThemes, p as parseThemeBlocks, a as parseUtilityBlocks, s as scanCustomPropertyNames } from './shared/unplugin.Ceq-N4jI.mjs';
4
4
  export { CSSZYX_GLOBAL_ALIAS_PREFIX, TAILWIND_RESERVED_PREFIXES } from '@csszyx/types';
5
5
  export { S as SAFELIST_FILE, a as appendTailwindSourceDirective, c as computeSafelistRelPath, b as cssImportsTailwind } from './shared/unplugin.DH_ij6cf.mjs';
@@ -820,6 +820,22 @@ declare function shouldEmitWarning(quiet: QuietMode, devOnly: boolean, isProduct
820
820
  * @returns True when the diagnostic is an unsilenced missing-CSS failure.
821
821
  */
822
822
  declare function shouldEmitMissingCssFallback(quiet: QuietMode, message: string): boolean;
823
+ /**
824
+ * Whether this run holds the advisory fallback list back and counts it instead.
825
+ *
826
+ * A build prints the count once the bundle closes, so holding the list back
827
+ * still leaves a reader a number to act on. A dev server never closes a bundle:
828
+ * anything held back there is held back for good, which is why serving lists
829
+ * its fallbacks whatever the environment says. `NODE_ENV` alone was the whole
830
+ * test, and a monorepo script that exports it while running a dev server turned
831
+ * every advisory into a number nothing would print.
832
+ *
833
+ * @param quiet - Resolved quiet mode.
834
+ * @param serving - Whether this is a dev server rather than a build.
835
+ * @param nodeEnv - `process.env.NODE_ENV` as the process sees it.
836
+ * @returns True when the list is withheld in favour of a count.
837
+ */
838
+ declare function shouldHoldAdvisories(quiet: QuietMode, serving: boolean, nodeEnv: string | undefined): boolean;
823
839
  /**
824
840
  * Emit one missing-CSS fallback through the caller's output channel.
825
841
  *
@@ -1063,5 +1079,5 @@ declare const rollupPlugin: (options?: PartialCsszyxConfig) => InputPluginOption
1063
1079
  */
1064
1080
  declare const esbuildPlugin: (options?: PartialCsszyxConfig) => Plugin;
1065
1081
 
1066
- export { isRSCServerModule as $, unplugin as A, deleteRSCModuleRecord as B, emitMissingCssFallback as D, esbuildPlugin as E, extractGlobalVarAliasesForManifest as F, fileMayContainSafelistableSz as H, findLocalImportSources as I, findRSCBoundaryViolation as J, findRSCGraphViolation as K, hasInjectableTailwindCandidate as L, hasTokens as N, hasUseClientDirective as O, hasUseServerDirective as T, isAdvisoryDiagnostic as U, isCompileSourceOptedIn as W, isHardIgnoredPath as X, isMangleableCssId as Y, isMonorepoPackage as Z, isPackagesSkippedSource as _, lateMangleCensusMessage as a0, mangleCodeClassesSync as a1, mangleEligibleClasses as a2, mangleHybridHazardMessage as a3, mergeThemes as a4, missingTailwindEntryMessage as a5, normalizeGlobalVarAliasesForCache as a6, parseThemeBlocks as a7, parseUtilityBlocks as a8, realContentHashDisabledMessage as a9, recordGlobalVarSourceFile as aa, resolveCompileSourceDirs as ab, resolveNativeCacheIdentity as ac, resolveQuietMode as ad, rollupPlugin as ae, scanCustomPropertyNames as af, shouldEmitMissingCssFallback as ag, shouldEmitWarning as ah, shouldTrackGlobalVarSources as ai, shouldWarnMissingTailwindEntry as aj, shouldWarnUnscopedMonorepo as ak, skippedSzFilesMessage as al, suppressedAdvisoryMessage as am, unscopedMonorepoMessage as an, vitePlugin as ao, watchModeMangleMessage as ap, webpackPlugin as aq, allocateMangleTokens as t, assertNoRSCBoundaryViolation as u, assertNoRSCGraphViolation as v, collectMangleHybridHazards as w, createGlobalVarMapAssetSource as x, createRSCModuleRecord as y, cssHasContentScope as z };
1082
+ export { isRSCServerModule as $, unplugin as A, deleteRSCModuleRecord as B, emitMissingCssFallback as D, esbuildPlugin as E, extractGlobalVarAliasesForManifest as F, fileMayContainSafelistableSz as H, findLocalImportSources as I, findRSCBoundaryViolation as J, findRSCGraphViolation as K, hasInjectableTailwindCandidate as L, hasTokens as N, hasUseClientDirective as O, hasUseServerDirective as T, isAdvisoryDiagnostic as U, isCompileSourceOptedIn as W, isHardIgnoredPath as X, isMangleableCssId as Y, isMonorepoPackage as Z, isPackagesSkippedSource as _, lateMangleCensusMessage as a0, mangleCodeClassesSync as a1, mangleEligibleClasses as a2, mangleHybridHazardMessage as a3, mergeThemes as a4, missingTailwindEntryMessage as a5, normalizeGlobalVarAliasesForCache as a6, parseThemeBlocks as a7, parseUtilityBlocks as a8, realContentHashDisabledMessage as a9, recordGlobalVarSourceFile as aa, resolveCompileSourceDirs as ab, resolveNativeCacheIdentity as ac, resolveQuietMode as ad, rollupPlugin as ae, scanCustomPropertyNames as af, shouldEmitMissingCssFallback as ag, shouldEmitWarning as ah, shouldHoldAdvisories as ai, shouldTrackGlobalVarSources as aj, shouldWarnMissingTailwindEntry as ak, shouldWarnUnscopedMonorepo as al, skippedSzFilesMessage as am, suppressedAdvisoryMessage as an, unscopedMonorepoMessage as ao, vitePlugin as ap, watchModeMangleMessage as aq, webpackPlugin as ar, allocateMangleTokens as t, assertNoRSCBoundaryViolation as u, assertNoRSCGraphViolation as v, collectMangleHybridHazards as w, createGlobalVarMapAssetSource as x, createRSCModuleRecord as y, cssHasContentScope as z };
1067
1083
  export type { CssVarScanResult as C, GlobalVarScanCacheKeyInput as G, MangleHybridHazards as M, PlanGlobalVarAliasesInput as P, QuietMode as Q, RewriteGlobalVarCssAliasesOptions as R, ScanGlobalVarCssOptions as S, ValidateGlobalVarAliasInputsOptions as V, GlobalVarAliasPlan as a, GlobalVarCssAliasRewriteResult as b, CreateGlobalVarAliasValidationOptionsInput as c, GlobalVarAliasValidationResult as d, CssVarDefinition as e, CssVarLocation as f, CssVarReference as g, GlobalVarAliasDiagnostic as h, GlobalVarAliasDiagnosticSeverity as i, GlobalVarAliasEntry as j, GlobalVarCodeSource as k, GlobalVarCssAssetSource as l, GlobalVarCssSource as m, GlobalVarScanCacheEntry as n, MangleSelectorHazard as o, ParsedTheme as p, ParsedUtilities as q, RSCBoundaryViolation as r, RSCModuleRecord as s };
@@ -1936,9 +1936,18 @@ function removedMangleMapDeliveryMessage() {
1936
1936
  return "[csszyx] production.mangleMapDelivery has been removed and is ignored. The runtime mangle map is always registered from inside the JS bundle now, on every lane, so the built HTML never carries an executable inline <script> and a strict script-src 'self' policy needs no exception. Delete the option. (`window.__csszyx` is now opt-in through `production.mangleDebugGlobal`.)";
1937
1937
  }
1938
1938
 
1939
+ function utilityStart(className) {
1940
+ let depth = 0;
1941
+ let start = 0;
1942
+ for (let index = 0; index < className.length; index += 1) {
1943
+ const char = className[index];
1944
+ if (char === "[") depth += 1;
1945
+ else if (char === "]") depth = Math.max(0, depth - 1);
1946
+ else if (char === ":" && depth === 0) start = index + 1;
1947
+ }
1948
+ return start;
1949
+ }
1939
1950
  function compileManglePreserve(entries) {
1940
- const exact = /* @__PURE__ */ new Set();
1941
- const prefixes = [];
1942
1951
  const list = entries ?? [];
1943
1952
  list.forEach((entry, index) => {
1944
1953
  if (typeof entry !== "string" || entry.length === 0) {
@@ -1951,22 +1960,34 @@ function compileManglePreserve(entries) {
1951
1960
  "[csszyx] production.manglePreserve must not contain a lone `*`: it would keep every class and silently turn `production.mangle` into a no-op. Name a prefix (`bg-tag-*`) or set `production.mangle: false`."
1952
1961
  );
1953
1962
  }
1954
- if (entry.endsWith("*")) prefixes.push(entry.slice(0, -1));
1955
- else exact.add(entry);
1956
1963
  });
1957
- const test = (className) => exact.has(className) || prefixes.some((prefix) => className.startsWith(prefix));
1964
+ const compiled = list.map((value) => ({
1965
+ value,
1966
+ prefix: value.endsWith("*") ? value.slice(0, -1) : void 0
1967
+ }));
1968
+ const keeps = (entry, className, utilityStartIndex) => entry.prefix === void 0 ? className === entry.value || className.length - utilityStartIndex === entry.value.length && className.startsWith(entry.value, utilityStartIndex) : className.startsWith(entry.prefix) || className.startsWith(entry.prefix, utilityStartIndex);
1969
+ const test = (className) => {
1970
+ if (list.length === 0) return false;
1971
+ const start = utilityStart(className);
1972
+ return compiled.some((entry) => keeps(entry, className, start));
1973
+ };
1958
1974
  return {
1959
1975
  entries: list,
1960
1976
  test,
1961
1977
  unmatched(census) {
1962
- const names = [...census];
1963
- return list.filter((entry) => {
1964
- if (entry.endsWith("*")) {
1965
- const prefix = entry.slice(0, -1);
1966
- return !names.some((name) => name.startsWith(prefix));
1978
+ if (list.length === 0) return [];
1979
+ const matched = list.map(() => false);
1980
+ let remaining = list.length;
1981
+ for (const className of census) {
1982
+ const start = utilityStart(className);
1983
+ for (let index = 0; index < list.length; index += 1) {
1984
+ if (matched[index] || !keeps(compiled[index], className, start)) continue;
1985
+ matched[index] = true;
1986
+ remaining -= 1;
1967
1987
  }
1968
- return !names.includes(entry);
1969
- });
1988
+ if (remaining === 0) break;
1989
+ }
1990
+ return list.filter((_, index) => !matched[index]);
1970
1991
  }
1971
1992
  };
1972
1993
  }
@@ -2239,9 +2260,9 @@ let _hasWarnedTsConfig = false;
2239
2260
  let _hasWarnedTransformCacheVersion = false;
2240
2261
  let _hasWarnedNativeFallback = false;
2241
2262
  const _loggedActiveParsers = /* @__PURE__ */ new Set();
2242
- const requireFromHere = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/unplugin.ZqxgHk5F.cjs', document.baseURI).href)));
2263
+ const requireFromHere = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/unplugin.D3yBoTHP.cjs', document.baseURI).href)));
2243
2264
  const PLUGIN_VERSION = findPackageVersionFromFile(
2244
- node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/unplugin.ZqxgHk5F.cjs', document.baseURI).href))),
2265
+ node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/unplugin.D3yBoTHP.cjs', document.baseURI).href))),
2245
2266
  UNKNOWN_PACKAGE_VERSION
2246
2267
  );
2247
2268
  const COMPILER_VERSION = findPackageVersionFromModule("@csszyx/compiler", UNKNOWN_PACKAGE_VERSION);
@@ -2382,46 +2403,37 @@ function mangleHybridHazardMessage(hazards) {
2382
2403
  if (collisions.length === 0 && orphans.length === 0 && selectorMatches.length === 0) {
2383
2404
  return null;
2384
2405
  }
2406
+ const broken = selectorMatches.filter((hazard) => hazard.renamed.length > 0);
2407
+ const newlyMatched = selectorMatches.filter((hazard) => hazard.matchedTokens.length > 0);
2385
2408
  const parts = ["[csszyx] production mangle found hybrid hazards:"];
2386
2409
  if (collisions.length > 0) {
2387
2410
  const sample = collisions.slice(0, 8).join(", ");
2388
2411
  parts.push(
2389
- ` ${collisions.length} mangled token(s) collide with class names in non-csszyx CSS (e.g. ${sample}) \u2014 those tokens will cross-contaminate external ".${collisions[0]}" elements.`
2412
+ ` ${collisions.length} mangled token(s) collide with class names in non-csszyx CSS (e.g. ${sample}) \u2014 those tokens will cross-contaminate external ".${collisions[0]}" elements.`,
2413
+ " HOTFIX: pass `production: { mangle: false }` to the csszyx plugin to ship now. THEN fix it: if these short names are in your OWN CSS, rename them to something specific (e.g. `.x` \u2192 `.resize-handle-x`) \u2014 short/common names also clash on specificity with other libraries. Only for names in a third-party stylesheet you cannot edit, list them in `production.mangleExclude` instead. Run `npx @csszyx/cli scan-collisions` to find every offending name."
2390
2414
  );
2391
2415
  }
2392
2416
  if (orphans.length > 0) {
2393
2417
  const sample = orphans.slice(0, 8).join(", ");
2394
2418
  parts.push(
2395
- ` ${orphans.length} mangled class(es) have no emitted CSS rule (e.g. ${sample}) \u2014 those elements lose styling.`
2419
+ ` ${orphans.length} mangled class(es) have no emitted CSS rule (e.g. ${sample}) \u2014 those elements lose styling.`,
2420
+ " Those classes are csszyx-owned but no CSS was emitted for them (e.g. a separate Tailwind plugin owns the utility CSS, or the class is not a real utility). Ensure that CSS is generated, or pass `production: { mangle: false }` to the csszyx plugin until the pipelines are reconciled."
2396
2421
  );
2397
2422
  }
2398
- const broken = selectorMatches.filter((hazard) => hazard.renamed.length > 0);
2399
- const newlyMatched = selectorMatches.filter((hazard) => hazard.matchedTokens.length > 0);
2400
2423
  if (broken.length > 0) {
2401
2424
  const sample = broken.slice(0, 3).map((hazard) => `${hazard.selector} \u2192 ${hazard.renamed.slice(0, 4).join(", ")}`).join("; ");
2425
+ const entries = [...new Set(broken.flatMap(preserveEntriesFor))].join(", ");
2402
2426
  parts.push(
2403
- ` ${broken.length} attribute selector(s) match class names by text (e.g. ${sample}) \u2014 those rules stop matching once the classes are renamed, so the elements lose those styles.`
2427
+ ` ${broken.length} attribute selector(s) match class names by text (e.g. ${sample}) \u2014 those rules stop matching once the classes are renamed, so the elements lose those styles.`,
2428
+ ` Keep those classes readable with production.manglePreserve: [${entries}] (paste-ready), or key the rule off a data attribute, which mangling never touches. production.mangleExclude cannot help here: it reserves token names and does not keep a class from being renamed.`
2404
2429
  );
2405
2430
  }
2406
2431
  if (newlyMatched.length > 0) {
2407
2432
  const sample = newlyMatched.slice(0, 3).map((hazard) => `${hazard.selector} \u2192 ${hazard.matchedTokens.slice(0, 4).join(", ")}`).join("; ");
2433
+ const tokens = [...new Set(newlyMatched.flatMap((hazard) => hazard.matchedTokens))].map(quoteForConfig).join(", ");
2408
2434
  parts.push(
2409
- ` ${newlyMatched.length} attribute selector(s) would start matching mangled tokens instead (e.g. ${sample}).`
2410
- );
2411
- }
2412
- if (collisions.length > 0) {
2413
- parts.push(
2414
- " HOTFIX: pass `production: { mangle: false }` to the csszyx plugin to ship now. THEN fix it: if these short names are in your OWN CSS, rename them to something specific (e.g. `.x` \u2192 `.resize-handle-x`) \u2014 short/common names also clash on specificity with other libraries. Only for names in a third-party stylesheet you cannot edit, list them in `production.mangleExclude` instead. Run `npx @csszyx/cli scan-collisions` to find every offending name."
2415
- );
2416
- } else if (orphans.length > 0) {
2417
- parts.push(
2418
- " Those classes are csszyx-owned but no CSS was emitted for them (e.g. a separate Tailwind plugin owns the utility CSS, or the class is not a real utility). Ensure that CSS is generated, or pass `production: { mangle: false }` to the csszyx plugin until the pipelines are reconciled."
2419
- );
2420
- }
2421
- if (broken.length > 0) {
2422
- const entries = [...new Set(broken.flatMap(preserveEntriesFor))].join(", ");
2423
- parts.push(
2424
- ` Keep those classes readable with production.manglePreserve: [${entries}] (paste-ready), or key the rule off a data attribute, which mangling never touches. production.mangleExclude cannot help here: it reserves token names and does not keep a class from being renamed.`
2435
+ ` ${newlyMatched.length} attribute selector(s) would start matching mangled tokens instead (e.g. ${sample}).`,
2436
+ ` Reserve those token names with production.mangleExclude: [${tokens}] (paste-ready) so no class is renamed to one of them, or key the rule off a data attribute, which mangling never touches; a prefix or substring selector goes on matching other tokens, so the data attribute is the durable fix.`
2425
2437
  );
2426
2438
  }
2427
2439
  return parts.join("");
@@ -2493,6 +2505,9 @@ function shouldEmitWarning(quiet, devOnly, isProduction) {
2493
2505
  function shouldEmitMissingCssFallback(quiet, message) {
2494
2506
  return resolveQuietMode(quiet) !== "all" && compiler.szFallbackConsequenceOf(message) === "missing-css";
2495
2507
  }
2508
+ function shouldHoldAdvisories(quiet, serving, nodeEnv) {
2509
+ return quiet !== "off" || !serving && nodeEnv === "production";
2510
+ }
2496
2511
  function emitMissingCssFallback(quiet, message, id, emit) {
2497
2512
  if (shouldEmitMissingCssFallback(quiet, message)) emit(`[csszyx] ${id}
2498
2513
  ${message}`);
@@ -3322,6 +3337,7 @@ ${errors.join("\n")}`
3322
3337
  function createCsszyxPlugins(options = {}) {
3323
3338
  assertGlobalVarMangleConfig(options);
3324
3339
  let manglingEnabled = options.production?.mangle === true;
3340
+ let serving = false;
3325
3341
  const importedStaticSzEnabled = options.build?.importedStaticSz ?? types.DEFAULT_IMPORTED_STATIC_SZ;
3326
3342
  const szvCrossModuleRegistry = /* @__PURE__ */ new Map();
3327
3343
  const szvCrossModuleForwards = /* @__PURE__ */ new Map();
@@ -4462,7 +4478,7 @@ function createCsszyxPlugins(options = {}) {
4462
4478
  }
4463
4479
  const advisories = result.diagnostics.filter(isAdvisoryDiagnostic);
4464
4480
  if (advisories.length === 0) return;
4465
- if (quiet !== "off" || process.env.NODE_ENV === "production") {
4481
+ if (shouldHoldAdvisories(quiet, serving, process.env.NODE_ENV)) {
4466
4482
  state.suppressedAdvisories += advisories.length;
4467
4483
  return;
4468
4484
  }
@@ -4881,6 +4897,7 @@ ${transformedCode}`;
4881
4897
  specifierAliases = transformCache.collectSpecifierAliases(root, config.resolve?.alias);
4882
4898
  if (config.command === "serve") {
4883
4899
  manglingEnabled = false;
4900
+ serving = true;
4884
4901
  }
4885
4902
  if (manglingEnabled && config.build?.watch) {
4886
4903
  manglingEnabled = false;
@@ -5430,6 +5447,7 @@ exports.rollupPlugin = rollupPlugin;
5430
5447
  exports.scanGlobalVarCss = scanGlobalVarCss;
5431
5448
  exports.shouldEmitMissingCssFallback = shouldEmitMissingCssFallback;
5432
5449
  exports.shouldEmitWarning = shouldEmitWarning;
5450
+ exports.shouldHoldAdvisories = shouldHoldAdvisories;
5433
5451
  exports.shouldTrackGlobalVarSources = shouldTrackGlobalVarSources;
5434
5452
  exports.shouldWarnMissingTailwindEntry = shouldWarnMissingTailwindEntry;
5435
5453
  exports.shouldWarnUnscopedMonorepo = shouldWarnUnscopedMonorepo;
@@ -1914,9 +1914,18 @@ function removedMangleMapDeliveryMessage() {
1914
1914
  return "[csszyx] production.mangleMapDelivery has been removed and is ignored. The runtime mangle map is always registered from inside the JS bundle now, on every lane, so the built HTML never carries an executable inline <script> and a strict script-src 'self' policy needs no exception. Delete the option. (`window.__csszyx` is now opt-in through `production.mangleDebugGlobal`.)";
1915
1915
  }
1916
1916
 
1917
+ function utilityStart(className) {
1918
+ let depth = 0;
1919
+ let start = 0;
1920
+ for (let index = 0; index < className.length; index += 1) {
1921
+ const char = className[index];
1922
+ if (char === "[") depth += 1;
1923
+ else if (char === "]") depth = Math.max(0, depth - 1);
1924
+ else if (char === ":" && depth === 0) start = index + 1;
1925
+ }
1926
+ return start;
1927
+ }
1917
1928
  function compileManglePreserve(entries) {
1918
- const exact = /* @__PURE__ */ new Set();
1919
- const prefixes = [];
1920
1929
  const list = entries ?? [];
1921
1930
  list.forEach((entry, index) => {
1922
1931
  if (typeof entry !== "string" || entry.length === 0) {
@@ -1929,22 +1938,34 @@ function compileManglePreserve(entries) {
1929
1938
  "[csszyx] production.manglePreserve must not contain a lone `*`: it would keep every class and silently turn `production.mangle` into a no-op. Name a prefix (`bg-tag-*`) or set `production.mangle: false`."
1930
1939
  );
1931
1940
  }
1932
- if (entry.endsWith("*")) prefixes.push(entry.slice(0, -1));
1933
- else exact.add(entry);
1934
1941
  });
1935
- const test = (className) => exact.has(className) || prefixes.some((prefix) => className.startsWith(prefix));
1942
+ const compiled = list.map((value) => ({
1943
+ value,
1944
+ prefix: value.endsWith("*") ? value.slice(0, -1) : void 0
1945
+ }));
1946
+ const keeps = (entry, className, utilityStartIndex) => entry.prefix === void 0 ? className === entry.value || className.length - utilityStartIndex === entry.value.length && className.startsWith(entry.value, utilityStartIndex) : className.startsWith(entry.prefix) || className.startsWith(entry.prefix, utilityStartIndex);
1947
+ const test = (className) => {
1948
+ if (list.length === 0) return false;
1949
+ const start = utilityStart(className);
1950
+ return compiled.some((entry) => keeps(entry, className, start));
1951
+ };
1936
1952
  return {
1937
1953
  entries: list,
1938
1954
  test,
1939
1955
  unmatched(census) {
1940
- const names = [...census];
1941
- return list.filter((entry) => {
1942
- if (entry.endsWith("*")) {
1943
- const prefix = entry.slice(0, -1);
1944
- return !names.some((name) => name.startsWith(prefix));
1956
+ if (list.length === 0) return [];
1957
+ const matched = list.map(() => false);
1958
+ let remaining = list.length;
1959
+ for (const className of census) {
1960
+ const start = utilityStart(className);
1961
+ for (let index = 0; index < list.length; index += 1) {
1962
+ if (matched[index] || !keeps(compiled[index], className, start)) continue;
1963
+ matched[index] = true;
1964
+ remaining -= 1;
1945
1965
  }
1946
- return !names.includes(entry);
1947
- });
1966
+ if (remaining === 0) break;
1967
+ }
1968
+ return list.filter((_, index) => !matched[index]);
1948
1969
  }
1949
1970
  };
1950
1971
  }
@@ -2360,46 +2381,37 @@ function mangleHybridHazardMessage(hazards) {
2360
2381
  if (collisions.length === 0 && orphans.length === 0 && selectorMatches.length === 0) {
2361
2382
  return null;
2362
2383
  }
2384
+ const broken = selectorMatches.filter((hazard) => hazard.renamed.length > 0);
2385
+ const newlyMatched = selectorMatches.filter((hazard) => hazard.matchedTokens.length > 0);
2363
2386
  const parts = ["[csszyx] production mangle found hybrid hazards:"];
2364
2387
  if (collisions.length > 0) {
2365
2388
  const sample = collisions.slice(0, 8).join(", ");
2366
2389
  parts.push(
2367
- ` ${collisions.length} mangled token(s) collide with class names in non-csszyx CSS (e.g. ${sample}) \u2014 those tokens will cross-contaminate external ".${collisions[0]}" elements.`
2390
+ ` ${collisions.length} mangled token(s) collide with class names in non-csszyx CSS (e.g. ${sample}) \u2014 those tokens will cross-contaminate external ".${collisions[0]}" elements.`,
2391
+ " HOTFIX: pass `production: { mangle: false }` to the csszyx plugin to ship now. THEN fix it: if these short names are in your OWN CSS, rename them to something specific (e.g. `.x` \u2192 `.resize-handle-x`) \u2014 short/common names also clash on specificity with other libraries. Only for names in a third-party stylesheet you cannot edit, list them in `production.mangleExclude` instead. Run `npx @csszyx/cli scan-collisions` to find every offending name."
2368
2392
  );
2369
2393
  }
2370
2394
  if (orphans.length > 0) {
2371
2395
  const sample = orphans.slice(0, 8).join(", ");
2372
2396
  parts.push(
2373
- ` ${orphans.length} mangled class(es) have no emitted CSS rule (e.g. ${sample}) \u2014 those elements lose styling.`
2397
+ ` ${orphans.length} mangled class(es) have no emitted CSS rule (e.g. ${sample}) \u2014 those elements lose styling.`,
2398
+ " Those classes are csszyx-owned but no CSS was emitted for them (e.g. a separate Tailwind plugin owns the utility CSS, or the class is not a real utility). Ensure that CSS is generated, or pass `production: { mangle: false }` to the csszyx plugin until the pipelines are reconciled."
2374
2399
  );
2375
2400
  }
2376
- const broken = selectorMatches.filter((hazard) => hazard.renamed.length > 0);
2377
- const newlyMatched = selectorMatches.filter((hazard) => hazard.matchedTokens.length > 0);
2378
2401
  if (broken.length > 0) {
2379
2402
  const sample = broken.slice(0, 3).map((hazard) => `${hazard.selector} \u2192 ${hazard.renamed.slice(0, 4).join(", ")}`).join("; ");
2403
+ const entries = [...new Set(broken.flatMap(preserveEntriesFor))].join(", ");
2380
2404
  parts.push(
2381
- ` ${broken.length} attribute selector(s) match class names by text (e.g. ${sample}) \u2014 those rules stop matching once the classes are renamed, so the elements lose those styles.`
2405
+ ` ${broken.length} attribute selector(s) match class names by text (e.g. ${sample}) \u2014 those rules stop matching once the classes are renamed, so the elements lose those styles.`,
2406
+ ` Keep those classes readable with production.manglePreserve: [${entries}] (paste-ready), or key the rule off a data attribute, which mangling never touches. production.mangleExclude cannot help here: it reserves token names and does not keep a class from being renamed.`
2382
2407
  );
2383
2408
  }
2384
2409
  if (newlyMatched.length > 0) {
2385
2410
  const sample = newlyMatched.slice(0, 3).map((hazard) => `${hazard.selector} \u2192 ${hazard.matchedTokens.slice(0, 4).join(", ")}`).join("; ");
2411
+ const tokens = [...new Set(newlyMatched.flatMap((hazard) => hazard.matchedTokens))].map(quoteForConfig).join(", ");
2386
2412
  parts.push(
2387
- ` ${newlyMatched.length} attribute selector(s) would start matching mangled tokens instead (e.g. ${sample}).`
2388
- );
2389
- }
2390
- if (collisions.length > 0) {
2391
- parts.push(
2392
- " HOTFIX: pass `production: { mangle: false }` to the csszyx plugin to ship now. THEN fix it: if these short names are in your OWN CSS, rename them to something specific (e.g. `.x` \u2192 `.resize-handle-x`) \u2014 short/common names also clash on specificity with other libraries. Only for names in a third-party stylesheet you cannot edit, list them in `production.mangleExclude` instead. Run `npx @csszyx/cli scan-collisions` to find every offending name."
2393
- );
2394
- } else if (orphans.length > 0) {
2395
- parts.push(
2396
- " Those classes are csszyx-owned but no CSS was emitted for them (e.g. a separate Tailwind plugin owns the utility CSS, or the class is not a real utility). Ensure that CSS is generated, or pass `production: { mangle: false }` to the csszyx plugin until the pipelines are reconciled."
2397
- );
2398
- }
2399
- if (broken.length > 0) {
2400
- const entries = [...new Set(broken.flatMap(preserveEntriesFor))].join(", ");
2401
- parts.push(
2402
- ` Keep those classes readable with production.manglePreserve: [${entries}] (paste-ready), or key the rule off a data attribute, which mangling never touches. production.mangleExclude cannot help here: it reserves token names and does not keep a class from being renamed.`
2413
+ ` ${newlyMatched.length} attribute selector(s) would start matching mangled tokens instead (e.g. ${sample}).`,
2414
+ ` Reserve those token names with production.mangleExclude: [${tokens}] (paste-ready) so no class is renamed to one of them, or key the rule off a data attribute, which mangling never touches; a prefix or substring selector goes on matching other tokens, so the data attribute is the durable fix.`
2403
2415
  );
2404
2416
  }
2405
2417
  return parts.join("");
@@ -2471,6 +2483,9 @@ function shouldEmitWarning(quiet, devOnly, isProduction) {
2471
2483
  function shouldEmitMissingCssFallback(quiet, message) {
2472
2484
  return resolveQuietMode(quiet) !== "all" && szFallbackConsequenceOf(message) === "missing-css";
2473
2485
  }
2486
+ function shouldHoldAdvisories(quiet, serving, nodeEnv) {
2487
+ return quiet !== "off" || !serving && nodeEnv === "production";
2488
+ }
2474
2489
  function emitMissingCssFallback(quiet, message, id, emit) {
2475
2490
  if (shouldEmitMissingCssFallback(quiet, message)) emit(`[csszyx] ${id}
2476
2491
  ${message}`);
@@ -3300,6 +3315,7 @@ ${errors.join("\n")}`
3300
3315
  function createCsszyxPlugins(options = {}) {
3301
3316
  assertGlobalVarMangleConfig(options);
3302
3317
  let manglingEnabled = options.production?.mangle === true;
3318
+ let serving = false;
3303
3319
  const importedStaticSzEnabled = options.build?.importedStaticSz ?? DEFAULT_IMPORTED_STATIC_SZ;
3304
3320
  const szvCrossModuleRegistry = /* @__PURE__ */ new Map();
3305
3321
  const szvCrossModuleForwards = /* @__PURE__ */ new Map();
@@ -4440,7 +4456,7 @@ function createCsszyxPlugins(options = {}) {
4440
4456
  }
4441
4457
  const advisories = result.diagnostics.filter(isAdvisoryDiagnostic);
4442
4458
  if (advisories.length === 0) return;
4443
- if (quiet !== "off" || process.env.NODE_ENV === "production") {
4459
+ if (shouldHoldAdvisories(quiet, serving, process.env.NODE_ENV)) {
4444
4460
  state.suppressedAdvisories += advisories.length;
4445
4461
  return;
4446
4462
  }
@@ -4859,6 +4875,7 @@ ${transformedCode}`;
4859
4875
  specifierAliases = collectSpecifierAliases(root, config.resolve?.alias);
4860
4876
  if (config.command === "serve") {
4861
4877
  manglingEnabled = false;
4878
+ serving = true;
4862
4879
  }
4863
4880
  if (manglingEnabled && config.build?.watch) {
4864
4881
  manglingEnabled = false;
@@ -5361,4 +5378,4 @@ const esbuildPlugin = (options = {}) => {
5361
5378
  };
5362
5379
  };
5363
5380
 
5364
- export { unscopedMonorepoMessage as $, isPackagesSkippedSource as A, isRSCServerModule as B, isTailwindReservedGlobalVar as C, lateMangleCensusMessage as D, mangleCodeClassesSync as E, mangleEligibleClasses as F, mangleHybridHazardMessage as G, missingTailwindEntryMessage as H, normalizeGlobalVarAliasesForCache as I, planGlobalVarAliases as J, readGlobalVarScanCache as K, realContentHashDisabledMessage as L, recordGlobalVarSourceFile as M, resolveCompileSourceDirs as N, resolveGlobalVarScanCacheDir as O, resolveNativeCacheIdentity as P, resolveQuietMode as Q, rewriteGlobalVarCssAliases as R, rollupPlugin as S, scanGlobalVarCss as T, shouldEmitMissingCssFallback as U, shouldEmitWarning as V, shouldTrackGlobalVarSources as W, shouldWarnMissingTailwindEntry as X, shouldWarnUnscopedMonorepo as Y, skippedSzFilesMessage as Z, suppressedAdvisoryMessage as _, allocateMangleTokens as a, validateGlobalVarAliasInputs as a0, vitePlugin as a1, watchModeMangleMessage as a2, webpackPlugin as a3, writeGlobalVarScanCache as a4, assertNoRSCBoundaryViolation as b, assertNoRSCGraphViolation as c, collectMangleHybridHazards as d, createGlobalVarAliasValidationOptions as e, createGlobalVarMapAssetSource as f, createGlobalVarScanCacheKey as g, createRSCModuleRecord as h, cssHasContentScope as i, deleteRSCModuleRecord as j, emitMissingCssFallback as k, esbuildPlugin as l, extractGlobalVarAliasesForManifest as m, fileMayContainSafelistableSz as n, findLocalImportSources as o, findRSCBoundaryViolation as p, findRSCGraphViolation as q, hasInjectableTailwindCandidate as r, hasUseClientDirective as s, hasUseServerDirective as t, unplugin as u, isAdvisoryDiagnostic as v, isCompileSourceOptedIn as w, isHardIgnoredPath as x, isMangleableCssId as y, isMonorepoPackage as z };
5381
+ export { suppressedAdvisoryMessage as $, isPackagesSkippedSource as A, isRSCServerModule as B, isTailwindReservedGlobalVar as C, lateMangleCensusMessage as D, mangleCodeClassesSync as E, mangleEligibleClasses as F, mangleHybridHazardMessage as G, missingTailwindEntryMessage as H, normalizeGlobalVarAliasesForCache as I, planGlobalVarAliases as J, readGlobalVarScanCache as K, realContentHashDisabledMessage as L, recordGlobalVarSourceFile as M, resolveCompileSourceDirs as N, resolveGlobalVarScanCacheDir as O, resolveNativeCacheIdentity as P, resolveQuietMode as Q, rewriteGlobalVarCssAliases as R, rollupPlugin as S, scanGlobalVarCss as T, shouldEmitMissingCssFallback as U, shouldEmitWarning as V, shouldHoldAdvisories as W, shouldTrackGlobalVarSources as X, shouldWarnMissingTailwindEntry as Y, shouldWarnUnscopedMonorepo as Z, skippedSzFilesMessage as _, allocateMangleTokens as a, unscopedMonorepoMessage as a0, validateGlobalVarAliasInputs as a1, vitePlugin as a2, watchModeMangleMessage as a3, webpackPlugin as a4, writeGlobalVarScanCache as a5, assertNoRSCBoundaryViolation as b, assertNoRSCGraphViolation as c, collectMangleHybridHazards as d, createGlobalVarAliasValidationOptions as e, createGlobalVarMapAssetSource as f, createGlobalVarScanCacheKey as g, createRSCModuleRecord as h, cssHasContentScope as i, deleteRSCModuleRecord as j, emitMissingCssFallback as k, esbuildPlugin as l, extractGlobalVarAliasesForManifest as m, fileMayContainSafelistableSz as n, findLocalImportSources as o, findRSCBoundaryViolation as p, findRSCGraphViolation as q, hasInjectableTailwindCandidate as r, hasUseClientDirective as s, hasUseServerDirective as t, unplugin as u, isAdvisoryDiagnostic as v, isCompileSourceOptedIn as w, isHardIgnoredPath as x, isMangleableCssId as y, isMonorepoPackage as z };
@@ -820,6 +820,22 @@ declare function shouldEmitWarning(quiet: QuietMode, devOnly: boolean, isProduct
820
820
  * @returns True when the diagnostic is an unsilenced missing-CSS failure.
821
821
  */
822
822
  declare function shouldEmitMissingCssFallback(quiet: QuietMode, message: string): boolean;
823
+ /**
824
+ * Whether this run holds the advisory fallback list back and counts it instead.
825
+ *
826
+ * A build prints the count once the bundle closes, so holding the list back
827
+ * still leaves a reader a number to act on. A dev server never closes a bundle:
828
+ * anything held back there is held back for good, which is why serving lists
829
+ * its fallbacks whatever the environment says. `NODE_ENV` alone was the whole
830
+ * test, and a monorepo script that exports it while running a dev server turned
831
+ * every advisory into a number nothing would print.
832
+ *
833
+ * @param quiet - Resolved quiet mode.
834
+ * @param serving - Whether this is a dev server rather than a build.
835
+ * @param nodeEnv - `process.env.NODE_ENV` as the process sees it.
836
+ * @returns True when the list is withheld in favour of a count.
837
+ */
838
+ declare function shouldHoldAdvisories(quiet: QuietMode, serving: boolean, nodeEnv: string | undefined): boolean;
823
839
  /**
824
840
  * Emit one missing-CSS fallback through the caller's output channel.
825
841
  *
@@ -1063,5 +1079,5 @@ declare const rollupPlugin: (options?: PartialCsszyxConfig) => InputPluginOption
1063
1079
  */
1064
1080
  declare const esbuildPlugin: (options?: PartialCsszyxConfig) => Plugin;
1065
1081
 
1066
- export { isRSCServerModule as $, unplugin as A, deleteRSCModuleRecord as B, emitMissingCssFallback as D, esbuildPlugin as E, extractGlobalVarAliasesForManifest as F, fileMayContainSafelistableSz as H, findLocalImportSources as I, findRSCBoundaryViolation as J, findRSCGraphViolation as K, hasInjectableTailwindCandidate as L, hasTokens as N, hasUseClientDirective as O, hasUseServerDirective as T, isAdvisoryDiagnostic as U, isCompileSourceOptedIn as W, isHardIgnoredPath as X, isMangleableCssId as Y, isMonorepoPackage as Z, isPackagesSkippedSource as _, lateMangleCensusMessage as a0, mangleCodeClassesSync as a1, mangleEligibleClasses as a2, mangleHybridHazardMessage as a3, mergeThemes as a4, missingTailwindEntryMessage as a5, normalizeGlobalVarAliasesForCache as a6, parseThemeBlocks as a7, parseUtilityBlocks as a8, realContentHashDisabledMessage as a9, recordGlobalVarSourceFile as aa, resolveCompileSourceDirs as ab, resolveNativeCacheIdentity as ac, resolveQuietMode as ad, rollupPlugin as ae, scanCustomPropertyNames as af, shouldEmitMissingCssFallback as ag, shouldEmitWarning as ah, shouldTrackGlobalVarSources as ai, shouldWarnMissingTailwindEntry as aj, shouldWarnUnscopedMonorepo as ak, skippedSzFilesMessage as al, suppressedAdvisoryMessage as am, unscopedMonorepoMessage as an, vitePlugin as ao, watchModeMangleMessage as ap, webpackPlugin as aq, allocateMangleTokens as t, assertNoRSCBoundaryViolation as u, assertNoRSCGraphViolation as v, collectMangleHybridHazards as w, createGlobalVarMapAssetSource as x, createRSCModuleRecord as y, cssHasContentScope as z };
1082
+ export { isRSCServerModule as $, unplugin as A, deleteRSCModuleRecord as B, emitMissingCssFallback as D, esbuildPlugin as E, extractGlobalVarAliasesForManifest as F, fileMayContainSafelistableSz as H, findLocalImportSources as I, findRSCBoundaryViolation as J, findRSCGraphViolation as K, hasInjectableTailwindCandidate as L, hasTokens as N, hasUseClientDirective as O, hasUseServerDirective as T, isAdvisoryDiagnostic as U, isCompileSourceOptedIn as W, isHardIgnoredPath as X, isMangleableCssId as Y, isMonorepoPackage as Z, isPackagesSkippedSource as _, lateMangleCensusMessage as a0, mangleCodeClassesSync as a1, mangleEligibleClasses as a2, mangleHybridHazardMessage as a3, mergeThemes as a4, missingTailwindEntryMessage as a5, normalizeGlobalVarAliasesForCache as a6, parseThemeBlocks as a7, parseUtilityBlocks as a8, realContentHashDisabledMessage as a9, recordGlobalVarSourceFile as aa, resolveCompileSourceDirs as ab, resolveNativeCacheIdentity as ac, resolveQuietMode as ad, rollupPlugin as ae, scanCustomPropertyNames as af, shouldEmitMissingCssFallback as ag, shouldEmitWarning as ah, shouldHoldAdvisories as ai, shouldTrackGlobalVarSources as aj, shouldWarnMissingTailwindEntry as ak, shouldWarnUnscopedMonorepo as al, skippedSzFilesMessage as am, suppressedAdvisoryMessage as an, unscopedMonorepoMessage as ao, vitePlugin as ap, watchModeMangleMessage as aq, webpackPlugin as ar, allocateMangleTokens as t, assertNoRSCBoundaryViolation as u, assertNoRSCGraphViolation as v, collectMangleHybridHazards as w, createGlobalVarMapAssetSource as x, createRSCModuleRecord as y, cssHasContentScope as z };
1067
1083
  export type { CssVarScanResult as C, GlobalVarScanCacheKeyInput as G, MangleHybridHazards as M, PlanGlobalVarAliasesInput as P, QuietMode as Q, RewriteGlobalVarCssAliasesOptions as R, ScanGlobalVarCssOptions as S, ValidateGlobalVarAliasInputsOptions as V, GlobalVarAliasPlan as a, GlobalVarCssAliasRewriteResult as b, CreateGlobalVarAliasValidationOptionsInput as c, GlobalVarAliasValidationResult as d, CssVarDefinition as e, CssVarLocation as f, CssVarReference as g, GlobalVarAliasDiagnostic as h, GlobalVarAliasDiagnosticSeverity as i, GlobalVarAliasEntry as j, GlobalVarCodeSource as k, GlobalVarCssAssetSource as l, GlobalVarCssSource as m, GlobalVarScanCacheEntry as n, MangleSelectorHazard as o, ParsedTheme as p, ParsedUtilities as q, RSCBoundaryViolation as r, RSCModuleRecord as s };
package/dist/vite.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const unplugin = require('./shared/unplugin.ZqxgHk5F.cjs');
5
+ const unplugin = require('./shared/unplugin.D3yBoTHP.cjs');
6
6
  require('node:crypto');
7
7
  require('node:fs');
8
8
  require('node:module');
package/dist/vite.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { ao } from './shared/unplugin.nvme_dSL.cjs';
2
- export = ao;
1
+ import { ap } from './shared/unplugin.PKo7wFzu.cjs';
2
+ export = ap;
3
3
  import '@csszyx/compiler';
4
4
  import '@csszyx/types';
5
5
  import 'esbuild';
package/dist/vite.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { ao as default } from './shared/unplugin.CInSoHdQ.mjs';
1
+ export { ap as default } from './shared/unplugin.Bu2rzRtv.mjs';
2
2
  import '@csszyx/compiler';
3
3
  import '@csszyx/types';
4
4
  import 'esbuild';
package/dist/vite.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { a1 as default } from './shared/unplugin.CPo2xrEy.mjs';
1
+ export { a2 as default } from './shared/unplugin.Dx0ngYWw.mjs';
2
2
  import 'node:crypto';
3
3
  import 'node:fs';
4
4
  import 'node:module';
package/dist/webpack.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const unplugin = require('./shared/unplugin.ZqxgHk5F.cjs');
5
+ const unplugin = require('./shared/unplugin.D3yBoTHP.cjs');
6
6
  require('node:crypto');
7
7
  require('node:fs');
8
8
  require('node:module');
@@ -1,5 +1,5 @@
1
- import { aq } from './shared/unplugin.nvme_dSL.cjs';
2
- export = aq;
1
+ import { ar } from './shared/unplugin.PKo7wFzu.cjs';
2
+ export = ar;
3
3
  import '@csszyx/compiler';
4
4
  import '@csszyx/types';
5
5
  import 'esbuild';
@@ -1,4 +1,4 @@
1
- export { aq as default } from './shared/unplugin.CInSoHdQ.mjs';
1
+ export { ar as default } from './shared/unplugin.Bu2rzRtv.mjs';
2
2
  import '@csszyx/compiler';
3
3
  import '@csszyx/types';
4
4
  import 'esbuild';
package/dist/webpack.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { a3 as default } from './shared/unplugin.CPo2xrEy.mjs';
1
+ export { a4 as default } from './shared/unplugin.Dx0ngYWw.mjs';
2
2
  import 'node:crypto';
3
3
  import 'node:fs';
4
4
  import 'node:module';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@csszyx/unplugin",
3
- "version": "0.15.3",
3
+ "version": "0.16.0",
4
4
  "description": "Vite and Webpack integration for csszyx",
5
5
  "keywords": [
6
6
  "csszyx",
@@ -122,11 +122,11 @@
122
122
  "dist"
123
123
  ],
124
124
  "dependencies": {
125
- "@csszyx/compiler": "0.15.3",
126
- "@csszyx/core": "0.15.3",
127
- "@csszyx/svelte-adapter": "0.15.3",
128
- "@csszyx/types": "0.15.3",
129
- "@csszyx/vue-adapter": "0.15.3",
125
+ "@csszyx/compiler": "0.16.0",
126
+ "@csszyx/core": "0.16.0",
127
+ "@csszyx/svelte-adapter": "0.16.0",
128
+ "@csszyx/types": "0.16.0",
129
+ "@csszyx/vue-adapter": "0.16.0",
130
130
  "postcss": "^8.5.26",
131
131
  "postcss-selector-parser": "^7.1.5",
132
132
  "postcss-value-parser": "^4.2.0",
@@ -134,7 +134,7 @@
134
134
  "unplugin": "^3.3.0"
135
135
  },
136
136
  "peerDependencies": {
137
- "@csszyx/runtime": "^0.15.3",
137
+ "@csszyx/runtime": "^0.16.0",
138
138
  "vite": ">=5.0.0"
139
139
  },
140
140
  "peerDependenciesMeta": {
@@ -143,8 +143,8 @@
143
143
  }
144
144
  },
145
145
  "devDependencies": {
146
- "@csszyx/runtime": "0.15.3",
147
- "@csszyx/tooling-metadata": "0.15.3",
146
+ "@csszyx/runtime": "0.16.0",
147
+ "@csszyx/tooling-metadata": "0.16.0",
148
148
  "@tailwindcss/node": "4.3.3",
149
149
  "@types/node": "^22.20.1",
150
150
  "@types/proper-lockfile": "^4.1.4",