@csszyx/unplugin 0.6.2 → 0.8.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/README.md CHANGED
@@ -66,10 +66,32 @@ module.exports = {
66
66
 
67
67
  ## Features
68
68
 
69
- - **sz prop transform** -- Compiles `sz={{ }}` objects into `className` strings via Babel AST
69
+ - **sz prop transform** -- Compiles `sz={{ }}` objects into `className` strings. Defaults to **oxc-parser + magic-string** (surgical edits, preserves source formatting) since v0.8.0; falls back to Babel automatically on unexpected oxc failures.
70
70
  - **HTML injection** -- Injects mangle maps and checksums for SSR hydration
71
71
  - **HMR support** -- Updates styles instantly during development
72
72
  - **CSS mangling** -- Compresses class names (e.g., `text-center` -> `z`) in production builds
73
+ - **File filters** -- Top-level `include` / `exclude` (glob or RegExp) skip large generated files before the AST budget guard fires; see [Config Overview](https://csszyx.com/config/overview#file-filters)
74
+
75
+ ## Parser selection
76
+
77
+ Per project:
78
+
79
+ ```ts
80
+ csszyx({
81
+ build: { parser: "babel" }, // opt out of oxc default
82
+ });
83
+ ```
84
+
85
+ Per build:
86
+
87
+ ```bash
88
+ CSSZYX_PARSER=babel pnpm build
89
+ ```
90
+
91
+ Either path routes prescan, transform, and HMR discovery through the
92
+ legacy Babel implementation. Both paths produce identical class output;
93
+ the only difference is whether magic-string preserves your original
94
+ formatting (oxc) or Babel's code generator pretty-prints it.
73
95
 
74
96
  ## License
75
97
 
@@ -1,44 +1,13 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ 'use strict';
2
+
3
+ const postcss = require('postcss');
4
+ const selectorParser = require('postcss-selector-parser');
5
+
6
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
7
+
8
+ const postcss__default = /*#__PURE__*/_interopDefaultCompat(postcss);
9
+ const selectorParser__default = /*#__PURE__*/_interopDefaultCompat(selectorParser);
29
10
 
30
- // src/css-mangler.ts
31
- var css_mangler_exports = {};
32
- __export(css_mangler_exports, {
33
- createPostCSSPlugin: () => createPostCSSPlugin,
34
- escapeCSSClassName: () => escapeCSSClassName,
35
- mangleCSS: () => mangleCSS,
36
- mangleCSSSync: () => mangleCSSSync,
37
- unescapeTailwindClass: () => unescapeTailwindClass
38
- });
39
- module.exports = __toCommonJS(css_mangler_exports);
40
- var import_postcss = __toESM(require("postcss"), 1);
41
- var import_postcss_selector_parser = __toESM(require("postcss-selector-parser"), 1);
42
11
  function unescapeTailwindClass(escapedName) {
43
12
  let result = "";
44
13
  let i = 0;
@@ -80,7 +49,7 @@ function escapeCSSClassName(className) {
80
49
  const code = char.charCodeAt(0);
81
50
  if (i === 0) {
82
51
  if (/[0-9]/.test(char)) {
83
- result += "\\3" + char + " ";
52
+ result += `\\3${char} `;
84
53
  continue;
85
54
  }
86
55
  if (char === "-" && i + 1 < className.length) {
@@ -92,7 +61,7 @@ function escapeCSSClassName(className) {
92
61
  }
93
62
  }
94
63
  if (/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/.test(char)) {
95
- result += "\\" + char;
64
+ result += `\\${char}`;
96
65
  } else if (code >= 128) {
97
66
  result += char;
98
67
  } else {
@@ -102,7 +71,7 @@ function escapeCSSClassName(className) {
102
71
  return result;
103
72
  }
104
73
  function createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses) {
105
- return (0, import_postcss_selector_parser.default)((selectors) => {
74
+ return selectorParser__default((selectors) => {
106
75
  selectors.walkClasses((classNode) => {
107
76
  const originalValue = classNode.value;
108
77
  const unescapedValue = unescapeTailwindClass(originalValue);
@@ -127,11 +96,7 @@ async function mangleCSS(css, mangleMap, options = {}) {
127
96
  const mangledClasses = /* @__PURE__ */ new Set();
128
97
  const unmangledClasses = /* @__PURE__ */ new Set();
129
98
  let transformedCount = 0;
130
- const selectorProcessor = createSelectorProcessor(
131
- mangleMap,
132
- mangledClasses,
133
- unmangledClasses
134
- );
99
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
135
100
  const csszyxManglerPlugin = {
136
101
  postcssPlugin: "csszyx-css-mangler",
137
102
  Rule(rule) {
@@ -149,7 +114,7 @@ async function mangleCSS(css, mangleMap, options = {}) {
149
114
  }
150
115
  }
151
116
  };
152
- const result = await (0, import_postcss.default)([csszyxManglerPlugin]).process(css, {
117
+ const result = await postcss__default([csszyxManglerPlugin]).process(css, {
153
118
  from: options.from
154
119
  });
155
120
  if (options.debug) {
@@ -168,12 +133,8 @@ function mangleCSSSync(css, mangleMap, options = {}) {
168
133
  const mangledClasses = /* @__PURE__ */ new Set();
169
134
  const unmangledClasses = /* @__PURE__ */ new Set();
170
135
  let transformedCount = 0;
171
- const selectorProcessor = createSelectorProcessor(
172
- mangleMap,
173
- mangledClasses,
174
- unmangledClasses
175
- );
176
- const root = import_postcss.default.parse(css, { from: options.from });
136
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
137
+ const root = postcss__default.parse(css, { from: options.from });
177
138
  root.walkRules((rule) => {
178
139
  try {
179
140
  const originalSelector = rule.selector;
@@ -203,11 +164,7 @@ function mangleCSSSync(css, mangleMap, options = {}) {
203
164
  function createPostCSSPlugin(mangleMap, options = {}) {
204
165
  const mangledClasses = /* @__PURE__ */ new Set();
205
166
  const unmangledClasses = /* @__PURE__ */ new Set();
206
- const selectorProcessor = createSelectorProcessor(
207
- mangleMap,
208
- mangledClasses,
209
- unmangledClasses
210
- );
167
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
211
168
  return {
212
169
  postcssPlugin: "csszyx-css-mangler",
213
170
  Rule(rule) {
@@ -230,11 +187,9 @@ function createPostCSSPlugin(mangleMap, options = {}) {
230
187
  }
231
188
  };
232
189
  }
233
- // Annotate the CommonJS export names for ESM import in node:
234
- 0 && (module.exports = {
235
- createPostCSSPlugin,
236
- escapeCSSClassName,
237
- mangleCSS,
238
- mangleCSSSync,
239
- unescapeTailwindClass
240
- });
190
+
191
+ exports.createPostCSSPlugin = createPostCSSPlugin;
192
+ exports.escapeCSSClassName = escapeCSSClassName;
193
+ exports.mangleCSS = mangleCSS;
194
+ exports.mangleCSSSync = mangleCSSSync;
195
+ exports.unescapeTailwindClass = unescapeTailwindClass;
@@ -120,4 +120,5 @@ declare function mangleCSSSync(css: string, mangleMap: MangleMap, options?: CSSM
120
120
  */
121
121
  declare function createPostCSSPlugin(mangleMap: MangleMap, options?: CSSManglerOptions): postcss.Plugin;
122
122
 
123
- export { type CSSManglerOptions, type CSSManglerResult, type MangleMap, createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass };
123
+ export { createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass };
124
+ export type { CSSManglerOptions, CSSManglerResult, MangleMap };
@@ -120,4 +120,5 @@ declare function mangleCSSSync(css: string, mangleMap: MangleMap, options?: CSSM
120
120
  */
121
121
  declare function createPostCSSPlugin(mangleMap: MangleMap, options?: CSSManglerOptions): postcss.Plugin;
122
122
 
123
- export { type CSSManglerOptions, type CSSManglerResult, type MangleMap, createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass };
123
+ export { createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass };
124
+ export type { CSSManglerOptions, CSSManglerResult, MangleMap };
@@ -1,6 +1,6 @@
1
- // src/css-mangler.ts
2
- import postcss from "postcss";
3
- import selectorParser from "postcss-selector-parser";
1
+ import postcss from 'postcss';
2
+ import selectorParser from 'postcss-selector-parser';
3
+
4
4
  function unescapeTailwindClass(escapedName) {
5
5
  let result = "";
6
6
  let i = 0;
@@ -42,7 +42,7 @@ function escapeCSSClassName(className) {
42
42
  const code = char.charCodeAt(0);
43
43
  if (i === 0) {
44
44
  if (/[0-9]/.test(char)) {
45
- result += "\\3" + char + " ";
45
+ result += `\\3${char} `;
46
46
  continue;
47
47
  }
48
48
  if (char === "-" && i + 1 < className.length) {
@@ -54,7 +54,7 @@ function escapeCSSClassName(className) {
54
54
  }
55
55
  }
56
56
  if (/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/.test(char)) {
57
- result += "\\" + char;
57
+ result += `\\${char}`;
58
58
  } else if (code >= 128) {
59
59
  result += char;
60
60
  } else {
@@ -89,11 +89,7 @@ async function mangleCSS(css, mangleMap, options = {}) {
89
89
  const mangledClasses = /* @__PURE__ */ new Set();
90
90
  const unmangledClasses = /* @__PURE__ */ new Set();
91
91
  let transformedCount = 0;
92
- const selectorProcessor = createSelectorProcessor(
93
- mangleMap,
94
- mangledClasses,
95
- unmangledClasses
96
- );
92
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
97
93
  const csszyxManglerPlugin = {
98
94
  postcssPlugin: "csszyx-css-mangler",
99
95
  Rule(rule) {
@@ -130,11 +126,7 @@ function mangleCSSSync(css, mangleMap, options = {}) {
130
126
  const mangledClasses = /* @__PURE__ */ new Set();
131
127
  const unmangledClasses = /* @__PURE__ */ new Set();
132
128
  let transformedCount = 0;
133
- const selectorProcessor = createSelectorProcessor(
134
- mangleMap,
135
- mangledClasses,
136
- unmangledClasses
137
- );
129
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
138
130
  const root = postcss.parse(css, { from: options.from });
139
131
  root.walkRules((rule) => {
140
132
  try {
@@ -165,11 +157,7 @@ function mangleCSSSync(css, mangleMap, options = {}) {
165
157
  function createPostCSSPlugin(mangleMap, options = {}) {
166
158
  const mangledClasses = /* @__PURE__ */ new Set();
167
159
  const unmangledClasses = /* @__PURE__ */ new Set();
168
- const selectorProcessor = createSelectorProcessor(
169
- mangleMap,
170
- mangledClasses,
171
- unmangledClasses
172
- );
160
+ const selectorProcessor = createSelectorProcessor(mangleMap, mangledClasses, unmangledClasses);
173
161
  return {
174
162
  postcssPlugin: "csszyx-css-mangler",
175
163
  Rule(rule) {
@@ -193,10 +181,4 @@ function createPostCSSPlugin(mangleMap, options = {}) {
193
181
  };
194
182
  }
195
183
 
196
- export {
197
- unescapeTailwindClass,
198
- escapeCSSClassName,
199
- mangleCSS,
200
- mangleCSSSync,
201
- createPostCSSPlugin
202
- };
184
+ export { createPostCSSPlugin, escapeCSSClassName, mangleCSS, mangleCSSSync, unescapeTailwindClass };