weapp-tailwindcss 2.6.3 → 2.7.1

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
@@ -21,7 +21,8 @@
21
21
  [![test](https://github.com/sonofmagic/weapp-tailwindcss/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/sonofmagic/weapp-tailwindcss/actions/workflows/test.yml)
22
22
  [![codecov](https://codecov.io/gh/sonofmagic/weapp-tailwindcss/branch/main/graph/badge.svg?token=zn05qXYznt)](https://codecov.io/gh/sonofmagic/weapp-tailwindcss)
23
23
 
24
- > `小程序` + `tailwindcss` 全方面解决方案
24
+ > `小程序` + `tailwindcss` 全方面解决方案
25
+ > 想试试在小程序里使用 `CSS-in-JS` 思想? 👉🏻👉🏻试试 [`weapp-pandacss`](https://github.com/sonofmagic/weapp-pandacss)
25
26
 
26
27
  \[[国内部署的文档地址](https://weapp-tw.icebreaker.top)\] \| \[[备用Github Page](https://sonofmagic.github.io/weapp-tailwindcss/)\] \| \[[1.x文档]('./v1.md')\]
27
28
 
@@ -70,7 +71,7 @@
70
71
 
71
72
  目前,这些插件支持最新版本的 `tailwindcss v3.x.x` 版本和 `webpack5`,`vite` 和 `gulp`。
72
73
 
73
- > 如果你还在使用 `tailwindcss@2` 版本,那你应该使用本插件的 `1.x` 版本。另外请确保你的 `nodejs` 版本 `>=16`。目前低于 `16` 的长期维护版本(`偶数版本`) 都已经结束了生命周期,建议安装 `nodejs` 的 `LTS`版本,详见 [nodejs/release](https://github.com/nodejs/release)
74
+ > 如果你还在使用 `tailwindcss@2` 版本,那你应该使用本插件的 `1.x` 版本。另外请确保你的 `nodejs` 版本 `>=16.6.0`。目前低于 `16` 的长期维护版本(`偶数版本`) 都已经结束了生命周期,建议安装 `nodejs` 的 `LTS`版本,详见 [nodejs/release](https://github.com/nodejs/release)
74
75
 
75
76
  ## [安装与使用方式](https://weapp-tw.icebreaker.top/docs/quick-start/install)
76
77
 
package/dist/cli.js CHANGED
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var options = require('./options-43afee21.js');
3
+ var options = require('./options-b7411c31.js');
4
4
  require('micromatch');
5
- require('@babel/types');
6
- require('@babel/generator');
7
- require('@babel/parser');
8
- require('@babel/traverse');
5
+ require('magic-string');
9
6
  require('./replace.js');
10
7
  require('@weapp-core/escape');
11
8
  require('./shared-df9de23f.js');
12
9
  require('@weapp-core/regex');
13
- require('./defaults-28cfeec8.js');
10
+ require('@babel/generator');
11
+ require('@babel/parser');
12
+ require('@babel/traverse');
13
+ require('./defaults-344ba6d9.js');
14
+ require('@babel/types');
14
15
  require('postcss');
15
16
  require('./postcss-4e99a8e8.js');
16
17
  require('postcss-selector-parser');
@@ -19,7 +20,7 @@ require('node:path');
19
20
  require('node:fs');
20
21
  require('semver');
21
22
  require('tailwindcss-patch');
22
- require('tailwindcss-mangle-shared');
23
+ require('@tailwindcss-mangle/shared');
23
24
 
24
25
  const args = process.argv.slice(2);
25
26
  if (args[0] === 'patch') {
package/dist/cli.mjs CHANGED
@@ -1,14 +1,15 @@
1
- import { g as getOptions, c as createPatch } from './options-d8cb9e14.mjs';
1
+ import { g as getOptions, c as createPatch } from './options-8805cf56.mjs';
2
2
  import 'micromatch';
3
- import '@babel/types';
4
- import '@babel/generator';
5
- import '@babel/parser';
6
- import '@babel/traverse';
3
+ import 'magic-string';
7
4
  import './replace.mjs';
8
5
  import '@weapp-core/escape';
9
6
  import './shared-fd149084.mjs';
10
7
  import '@weapp-core/regex';
11
- import './defaults-702719e1.mjs';
8
+ import '@babel/generator';
9
+ import '@babel/parser';
10
+ import '@babel/traverse';
11
+ import './defaults-0743f523.mjs';
12
+ import '@babel/types';
12
13
  import 'postcss';
13
14
  import './postcss-a551ddc0.mjs';
14
15
  import 'postcss-selector-parser';
@@ -17,7 +18,7 @@ import 'node:path';
17
18
  import 'node:fs';
18
19
  import 'semver';
19
20
  import 'tailwindcss-patch';
20
- import 'tailwindcss-mangle-shared';
21
+ import '@tailwindcss-mangle/shared';
21
22
 
22
23
  const args = process.argv.slice(2);
23
24
  if (args[0] === 'patch') {
@@ -125,7 +125,8 @@ const defaultOptions = {
125
125
  }
126
126
  return false;
127
127
  },
128
- disabledDefaultTemplateHandler: false
128
+ disabledDefaultTemplateHandler: false,
129
+ jsEscapeStrategy: 'regenerate'
129
130
  };
130
131
 
131
132
  export { defaultOptions as d, getGroupedEntries as g, isMap as i, noop as n };
@@ -127,7 +127,8 @@ const defaultOptions = {
127
127
  }
128
128
  return false;
129
129
  },
130
- disabledDefaultTemplateHandler: false
130
+ disabledDefaultTemplateHandler: false,
131
+ jsEscapeStrategy: 'regenerate'
131
132
  };
132
133
 
133
134
  exports.defaultOptions = defaultOptions;
package/dist/defaults.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var defaults = require('./defaults-28cfeec8.js');
5
+ var defaults = require('./defaults-344ba6d9.js');
6
6
  require('@weapp-core/escape');
7
7
 
8
8
 
package/dist/defaults.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export { d as defaultOptions } from './defaults-702719e1.mjs';
1
+ export { d as defaultOptions } from './defaults-0743f523.mjs';
2
2
  import '@weapp-core/escape';
package/dist/gulp.js CHANGED
@@ -3,17 +3,18 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var stream = require('node:stream');
6
- var options = require('./options-43afee21.js');
6
+ var options = require('./options-b7411c31.js');
7
7
  require('micromatch');
8
- require('@babel/types');
9
- require('@babel/generator');
10
- require('@babel/parser');
11
- require('@babel/traverse');
8
+ require('magic-string');
12
9
  require('./replace.js');
13
10
  require('@weapp-core/escape');
14
11
  require('./shared-df9de23f.js');
15
12
  require('@weapp-core/regex');
16
- require('./defaults-28cfeec8.js');
13
+ require('@babel/generator');
14
+ require('@babel/parser');
15
+ require('@babel/traverse');
16
+ require('./defaults-344ba6d9.js');
17
+ require('@babel/types');
17
18
  require('postcss');
18
19
  require('./postcss-4e99a8e8.js');
19
20
  require('postcss-selector-parser');
@@ -22,7 +23,7 @@ require('node:path');
22
23
  require('node:fs');
23
24
  require('semver');
24
25
  require('tailwindcss-patch');
25
- require('tailwindcss-mangle-shared');
26
+ require('@tailwindcss-mangle/shared');
26
27
 
27
28
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
29
 
package/dist/gulp.mjs CHANGED
@@ -1,15 +1,16 @@
1
1
  import stream from 'node:stream';
2
- import { g as getOptions, a as createTailwindcssPatcher } from './options-d8cb9e14.mjs';
2
+ import { g as getOptions, a as createTailwindcssPatcher } from './options-8805cf56.mjs';
3
3
  import 'micromatch';
4
- import '@babel/types';
5
- import '@babel/generator';
6
- import '@babel/parser';
7
- import '@babel/traverse';
4
+ import 'magic-string';
8
5
  import './replace.mjs';
9
6
  import '@weapp-core/escape';
10
7
  import './shared-fd149084.mjs';
11
8
  import '@weapp-core/regex';
12
- import './defaults-702719e1.mjs';
9
+ import '@babel/generator';
10
+ import '@babel/parser';
11
+ import '@babel/traverse';
12
+ import './defaults-0743f523.mjs';
13
+ import '@babel/types';
13
14
  import 'postcss';
14
15
  import './postcss-a551ddc0.mjs';
15
16
  import 'postcss-selector-parser';
@@ -18,7 +19,7 @@ import 'node:path';
18
19
  import 'node:fs';
19
20
  import 'semver';
20
21
  import 'tailwindcss-patch';
21
- import 'tailwindcss-mangle-shared';
22
+ import '@tailwindcss-mangle/shared';
22
23
 
23
24
  const Transform = stream.Transform;
24
25
  function createPlugins(options = {}) {
package/dist/index.js CHANGED
@@ -7,24 +7,25 @@ var vite = require('./vite.js');
7
7
  var gulp = require('./gulp.js');
8
8
  require('node:path');
9
9
  require('node:fs');
10
- require('./options-43afee21.js');
10
+ require('./options-b7411c31.js');
11
11
  require('micromatch');
12
- require('@babel/types');
13
- require('@babel/generator');
14
- require('@babel/parser');
15
- require('@babel/traverse');
12
+ require('magic-string');
16
13
  require('./replace.js');
17
14
  require('@weapp-core/escape');
18
15
  require('./shared-df9de23f.js');
19
16
  require('@weapp-core/regex');
20
- require('./defaults-28cfeec8.js');
17
+ require('@babel/generator');
18
+ require('@babel/parser');
19
+ require('@babel/traverse');
20
+ require('./defaults-344ba6d9.js');
21
+ require('@babel/types');
21
22
  require('postcss');
22
23
  require('./postcss-4e99a8e8.js');
23
24
  require('postcss-selector-parser');
24
25
  require('@csstools/postcss-is-pseudo-class');
25
26
  require('semver');
26
27
  require('tailwindcss-patch');
27
- require('tailwindcss-mangle-shared');
28
+ require('@tailwindcss-mangle/shared');
28
29
  require('node:stream');
29
30
 
30
31
 
package/dist/index.mjs CHANGED
@@ -3,22 +3,23 @@ export { UnifiedViteWeappTailwindcssPlugin } from './vite.mjs';
3
3
  export { createPlugins } from './gulp.mjs';
4
4
  import 'node:path';
5
5
  import 'node:fs';
6
- import './options-d8cb9e14.mjs';
6
+ import './options-8805cf56.mjs';
7
7
  import 'micromatch';
8
- import '@babel/types';
9
- import '@babel/generator';
10
- import '@babel/parser';
11
- import '@babel/traverse';
8
+ import 'magic-string';
12
9
  import './replace.mjs';
13
10
  import '@weapp-core/escape';
14
11
  import './shared-fd149084.mjs';
15
12
  import '@weapp-core/regex';
16
- import './defaults-702719e1.mjs';
13
+ import '@babel/generator';
14
+ import '@babel/parser';
15
+ import '@babel/traverse';
16
+ import './defaults-0743f523.mjs';
17
+ import '@babel/types';
17
18
  import 'postcss';
18
19
  import './postcss-a551ddc0.mjs';
19
20
  import 'postcss-selector-parser';
20
21
  import '@csstools/postcss-is-pseudo-class';
21
22
  import 'semver';
22
23
  import 'tailwindcss-patch';
23
- import 'tailwindcss-mangle-shared';
24
+ import '@tailwindcss-mangle/shared';
24
25
  import 'node:stream';
@@ -0,0 +1,6 @@
1
+ import type { StringLiteral, TemplateElement } from '@babel/types';
2
+ import MagicString from 'magic-string';
3
+ import type { IJsHandlerOptions } from "../types";
4
+ export declare function jsStringEscape(str: unknown): string;
5
+ export declare function regenerateHandleValue(str: string, node: StringLiteral | TemplateElement, options: IJsHandlerOptions): string;
6
+ export declare function replaceHandleValue(str: string, node: StringLiteral | TemplateElement, options: IJsHandlerOptions, ms: MagicString, offset?: number, needEscaped?: boolean): string;
@@ -1,5 +1,7 @@
1
- import type { StringLiteral, TemplateElement } from '@babel/types';
2
1
  import type { IJsHandlerOptions } from "../types";
3
- export declare function handleValue(str: string, node: StringLiteral | TemplateElement, options: IJsHandlerOptions): string;
4
- export declare function jsHandler(rawSource: string, options: IJsHandlerOptions): import("@babel/generator").GeneratorResult;
5
- export declare function createjsHandler(options: Omit<IJsHandlerOptions, 'classNameSet'>): (rawSource: string, set: Set<string>) => import("@babel/generator").GeneratorResult;
2
+ export declare function jsHandler(rawSource: string, options: IJsHandlerOptions): import("@babel/generator").GeneratorResult | {
3
+ code: string;
4
+ };
5
+ export declare function createjsHandler(options: Omit<IJsHandlerOptions, 'classNameSet'>): (rawSource: string, set: Set<string>) => import("@babel/generator").GeneratorResult | {
6
+ code: string;
7
+ };
@@ -1,11 +1,12 @@
1
1
  import { isMatch } from 'micromatch';
2
- import * as t from '@babel/types';
2
+ import MagicString from 'magic-string';
3
+ import { replaceJs as replaceWxml } from './replace.mjs';
4
+ import { escapeStringRegexp, makeCustomAttributes, tagWithEitherClassAndHoverClassRegexp, templateClassExactRegexp, wxsTagRegexp, variableRegExp } from '@weapp-core/regex';
3
5
  import generate from '@babel/generator';
4
6
  import { parse, parseExpression } from '@babel/parser';
5
7
  import traverse from '@babel/traverse';
6
- import { replaceJs as replaceWxml } from './replace.mjs';
7
- import { escapeStringRegexp, makeCustomAttributes, tagWithEitherClassAndHoverClassRegexp, templateClassExactRegexp, wxsTagRegexp, variableRegExp } from '@weapp-core/regex';
8
- import { n as noop, d as defaultOptions, i as isMap } from './defaults-702719e1.mjs';
8
+ import { n as noop, d as defaultOptions, i as isMap } from './defaults-0743f523.mjs';
9
+ import * as t from '@babel/types';
9
10
  import postcss from 'postcss';
10
11
  import { p as postcssWeappTailwindcss } from './postcss-a551ddc0.mjs';
11
12
  import postcssIsPseudoClass from '@csstools/postcss-is-pseudo-class';
@@ -14,7 +15,7 @@ import path from 'node:path';
14
15
  import fs from 'node:fs';
15
16
  import { gte } from 'semver';
16
17
  import { monkeyPatchForExposingContext, requireResolve, TailwindcssPatcher } from 'tailwindcss-patch';
17
- import { ClassGenerator, defaultMangleClassFilter } from 'tailwindcss-mangle-shared';
18
+ import { ClassGenerator, defaultMangleClassFilter } from '@tailwindcss-mangle/shared';
18
19
 
19
20
  const validateFilterRE = /[\w%-?\u00A0-\uFFFF-]/;
20
21
  function isValidSelector(selector = '') {
@@ -25,9 +26,33 @@ const splitCode = (code, allowDoubleQuotes = false) => {
25
26
  return code.split(splitter).filter((element) => isValidSelector(element));
26
27
  };
27
28
 
28
- const isProd = () => process.env.NODE_ENV === 'production';
29
-
30
- function handleValue(str, node, options) {
29
+ function jsStringEscape(str) {
30
+ return ('' + str).replaceAll(/[\n\r"'\\\u2028\u2029]/g, (character) => {
31
+ switch (character) {
32
+ case '"':
33
+ case "'":
34
+ case '\\': {
35
+ return '\\' + character;
36
+ }
37
+ case '\n': {
38
+ return '\\n';
39
+ }
40
+ case '\r': {
41
+ return '\\r';
42
+ }
43
+ case '\u2028': {
44
+ return '\\u2028';
45
+ }
46
+ case '\u2029': {
47
+ return '\\u2029';
48
+ }
49
+ default: {
50
+ return character;
51
+ }
52
+ }
53
+ });
54
+ }
55
+ function regenerateHandleValue(str, node, options) {
31
56
  var _a;
32
57
  const set = options.classNameSet;
33
58
  const escapeMap = options.escapeMap;
@@ -54,44 +79,126 @@ function handleValue(str, node, options) {
54
79
  }
55
80
  return rawStr;
56
81
  }
82
+ function replaceHandleValue(str, node, options, ms, offset = 0, needEscaped = false) {
83
+ var _a;
84
+ const set = options.classNameSet;
85
+ const escapeMap = options.escapeMap;
86
+ const allowDoubleQuotes = (_a = options.arbitraryValues) === null || _a === void 0 ? void 0 : _a.allowDoubleQuotes;
87
+ const ctx = options.mangleContext;
88
+ const jsPreserveClass = options.jsPreserveClass;
89
+ const arr = splitCode(str, allowDoubleQuotes);
90
+ let rawStr = str;
91
+ for (const v of arr) {
92
+ if (set.has(v) && !(jsPreserveClass === null || jsPreserveClass === void 0 ? void 0 : jsPreserveClass(v))) {
93
+ let ignoreFlag = false;
94
+ if (Array.isArray(node.leadingComments)) {
95
+ ignoreFlag = node.leadingComments.findIndex((x) => x.value.includes('weapp-tw') && x.value.includes('ignore')) > -1;
96
+ }
97
+ if (!ignoreFlag) {
98
+ if (ctx) {
99
+ rawStr = ctx.jsHandler(rawStr);
100
+ }
101
+ rawStr = rawStr.replaceAll(new RegExp(escapeStringRegexp(v), 'g'), replaceWxml(v, {
102
+ escapeMap
103
+ }));
104
+ }
105
+ }
106
+ }
107
+ if (typeof node.start === 'number' && typeof node.end === 'number') {
108
+ const start = node.start + offset;
109
+ const end = node.end - offset;
110
+ if (start < end) {
111
+ ms.update(node.start + offset, node.end - offset, needEscaped ? jsStringEscape(rawStr) : rawStr);
112
+ }
113
+ }
114
+ return rawStr;
115
+ }
116
+
117
+ const isProd = () => process.env.NODE_ENV === 'production';
118
+
57
119
  function jsHandler(rawSource, options) {
58
120
  var _a;
59
121
  const ast = parse(rawSource, {
60
122
  sourceType: 'unambiguous'
61
123
  });
62
- const topt = {
63
- StringLiteral: {
64
- enter(p) {
65
- const n = p.node;
66
- n.value = handleValue(n.value, n, options);
67
- }
68
- },
69
- TemplateElement: {
70
- enter(p) {
71
- const n = p.node;
72
- n.value.raw = handleValue(n.value.raw, n, options);
124
+ if (options.strategy === 'replace') {
125
+ const ms = new MagicString(rawSource);
126
+ const ropt = {
127
+ StringLiteral: {
128
+ enter(p) {
129
+ const n = p.node;
130
+ replaceHandleValue(n.value, n, options, ms, 1, true);
131
+ }
132
+ },
133
+ TemplateElement: {
134
+ enter(p) {
135
+ const n = p.node;
136
+ replaceHandleValue(n.value.raw, n, options, ms, 0, false);
137
+ }
138
+ },
139
+ CallExpression: {
140
+ enter(p) {
141
+ const calleePath = p.get('callee');
142
+ if (calleePath.isIdentifier() && calleePath.node.name === 'eval') {
143
+ p.traverse({
144
+ StringLiteral: {
145
+ enter(s) {
146
+ const res = jsHandler(s.node.value, options);
147
+ if (res.code) {
148
+ s.node.value = res.code;
149
+ }
150
+ }
151
+ }
152
+ });
153
+ }
154
+ }
73
155
  }
74
- },
75
- CallExpression: {
76
- enter(p) {
77
- const n = p.node;
78
- if (t.isIdentifier(n.callee) && n.callee.name === 'eval' && t.isStringLiteral(n.arguments[0])) {
79
- const res = jsHandler(n.arguments[0].value, options);
80
- if (res.code) {
81
- n.arguments[0].value = res.code;
156
+ };
157
+ traverse(ast, ropt);
158
+ return {
159
+ code: ms.toString()
160
+ };
161
+ }
162
+ else {
163
+ const gopt = {
164
+ StringLiteral: {
165
+ enter(p) {
166
+ const n = p.node;
167
+ n.value = regenerateHandleValue(n.value, n, options);
168
+ }
169
+ },
170
+ TemplateElement: {
171
+ enter(p) {
172
+ const n = p.node;
173
+ n.value.raw = regenerateHandleValue(n.value.raw, n, options);
174
+ }
175
+ },
176
+ CallExpression: {
177
+ enter(p) {
178
+ const calleePath = p.get('callee');
179
+ if (calleePath.isIdentifier() && calleePath.node.name === 'eval') {
180
+ p.traverse({
181
+ StringLiteral: {
182
+ enter(s) {
183
+ const res = jsHandler(s.node.value, options);
184
+ if (res.code) {
185
+ s.node.value = res.code;
186
+ }
187
+ }
188
+ }
189
+ });
82
190
  }
83
191
  }
84
192
  }
85
- },
86
- noScope: true
87
- };
88
- traverse(ast, topt);
89
- return generate(ast, {
90
- minified: (_a = options.minifiedJs) !== null && _a !== void 0 ? _a : isProd()
91
- });
193
+ };
194
+ traverse(ast, gopt);
195
+ return generate(ast, {
196
+ minified: (_a = options.minifiedJs) !== null && _a !== void 0 ? _a : isProd()
197
+ });
198
+ }
92
199
  }
93
200
  function createjsHandler(options) {
94
- const { mangleContext, arbitraryValues, minifiedJs, escapeMap, jsPreserveClass } = options;
201
+ const { mangleContext, arbitraryValues, minifiedJs, escapeMap, jsPreserveClass, strategy } = options;
95
202
  return (rawSource, set) => {
96
203
  return jsHandler(rawSource, {
97
204
  classNameSet: set,
@@ -99,7 +206,8 @@ function createjsHandler(options) {
99
206
  escapeMap,
100
207
  arbitraryValues,
101
208
  mangleContext,
102
- jsPreserveClass
209
+ jsPreserveClass,
210
+ strategy
103
211
  });
104
212
  };
105
213
  }
@@ -508,7 +616,7 @@ function getOptions(options = {}) {
508
616
  const result = defu(options, defaultOptions, {
509
617
  minifiedJs: isProd()
510
618
  });
511
- const { cssPreflight, customRuleCallback, cssPreflightRange, replaceUniversalSelectorWith, customAttributes, customReplaceDictionary, supportCustomLengthUnitsPatch, arbitraryValues, cssChildCombinatorReplaceValue, inlineWxs, injectAdditionalCssVarScope, jsPreserveClass, disabledDefaultTemplateHandler } = result;
619
+ const { cssPreflight, customRuleCallback, cssPreflightRange, replaceUniversalSelectorWith, customAttributes, customReplaceDictionary, supportCustomLengthUnitsPatch, arbitraryValues, cssChildCombinatorReplaceValue, inlineWxs, injectAdditionalCssVarScope, jsPreserveClass, disabledDefaultTemplateHandler, jsEscapeStrategy } = result;
512
620
  result.escapeMap = customReplaceDictionary;
513
621
  const cssInjectPreflight = createInjectPreflight(cssPreflight);
514
622
  const customAttributesEntities = isMap(options.customAttributes)
@@ -533,7 +641,8 @@ function getOptions(options = {}) {
533
641
  escapeMap,
534
642
  mangleContext,
535
643
  arbitraryValues,
536
- jsPreserveClass
644
+ jsPreserveClass,
645
+ strategy: jsEscapeStrategy
537
646
  });
538
647
  result.jsHandler = jsHandler;
539
648
  const templateHandler = createTemplateHandler({
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var micromatch = require('micromatch');
4
- var t = require('@babel/types');
4
+ var MagicString = require('magic-string');
5
+ var replace = require('./replace.js');
6
+ var regex = require('@weapp-core/regex');
5
7
  var generate = require('@babel/generator');
6
8
  var parser = require('@babel/parser');
7
9
  var traverse = require('@babel/traverse');
8
- var replace = require('./replace.js');
9
- var regex = require('@weapp-core/regex');
10
- var defaults = require('./defaults-28cfeec8.js');
10
+ var defaults = require('./defaults-344ba6d9.js');
11
+ var t = require('@babel/types');
11
12
  var postcss = require('postcss');
12
13
  var postcss$1 = require('./postcss-4e99a8e8.js');
13
14
  var postcssIsPseudoClass = require('@csstools/postcss-is-pseudo-class');
@@ -16,7 +17,7 @@ var path = require('node:path');
16
17
  var fs = require('node:fs');
17
18
  var semver = require('semver');
18
19
  var tailwindcssPatch = require('tailwindcss-patch');
19
- var tailwindcssMangleShared = require('tailwindcss-mangle-shared');
20
+ var shared = require('@tailwindcss-mangle/shared');
20
21
 
21
22
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
23
 
@@ -38,9 +39,10 @@ function _interopNamespaceCompat(e) {
38
39
  return Object.freeze(n);
39
40
  }
40
41
 
41
- var t__namespace = /*#__PURE__*/_interopNamespaceCompat(t);
42
+ var MagicString__default = /*#__PURE__*/_interopDefaultCompat(MagicString);
42
43
  var generate__default = /*#__PURE__*/_interopDefaultCompat(generate);
43
44
  var traverse__default = /*#__PURE__*/_interopDefaultCompat(traverse);
45
+ var t__namespace = /*#__PURE__*/_interopNamespaceCompat(t);
44
46
  var postcss__default = /*#__PURE__*/_interopDefaultCompat(postcss);
45
47
  var postcssIsPseudoClass__default = /*#__PURE__*/_interopDefaultCompat(postcssIsPseudoClass);
46
48
  var path__default = /*#__PURE__*/_interopDefaultCompat(path);
@@ -55,9 +57,33 @@ const splitCode = (code, allowDoubleQuotes = false) => {
55
57
  return code.split(splitter).filter((element) => isValidSelector(element));
56
58
  };
57
59
 
58
- const isProd = () => process.env.NODE_ENV === 'production';
59
-
60
- function handleValue(str, node, options) {
60
+ function jsStringEscape(str) {
61
+ return ('' + str).replaceAll(/[\n\r"'\\\u2028\u2029]/g, (character) => {
62
+ switch (character) {
63
+ case '"':
64
+ case "'":
65
+ case '\\': {
66
+ return '\\' + character;
67
+ }
68
+ case '\n': {
69
+ return '\\n';
70
+ }
71
+ case '\r': {
72
+ return '\\r';
73
+ }
74
+ case '\u2028': {
75
+ return '\\u2028';
76
+ }
77
+ case '\u2029': {
78
+ return '\\u2029';
79
+ }
80
+ default: {
81
+ return character;
82
+ }
83
+ }
84
+ });
85
+ }
86
+ function regenerateHandleValue(str, node, options) {
61
87
  var _a;
62
88
  const set = options.classNameSet;
63
89
  const escapeMap = options.escapeMap;
@@ -84,44 +110,126 @@ function handleValue(str, node, options) {
84
110
  }
85
111
  return rawStr;
86
112
  }
113
+ function replaceHandleValue(str, node, options, ms, offset = 0, needEscaped = false) {
114
+ var _a;
115
+ const set = options.classNameSet;
116
+ const escapeMap = options.escapeMap;
117
+ const allowDoubleQuotes = (_a = options.arbitraryValues) === null || _a === void 0 ? void 0 : _a.allowDoubleQuotes;
118
+ const ctx = options.mangleContext;
119
+ const jsPreserveClass = options.jsPreserveClass;
120
+ const arr = splitCode(str, allowDoubleQuotes);
121
+ let rawStr = str;
122
+ for (const v of arr) {
123
+ if (set.has(v) && !(jsPreserveClass === null || jsPreserveClass === void 0 ? void 0 : jsPreserveClass(v))) {
124
+ let ignoreFlag = false;
125
+ if (Array.isArray(node.leadingComments)) {
126
+ ignoreFlag = node.leadingComments.findIndex((x) => x.value.includes('weapp-tw') && x.value.includes('ignore')) > -1;
127
+ }
128
+ if (!ignoreFlag) {
129
+ if (ctx) {
130
+ rawStr = ctx.jsHandler(rawStr);
131
+ }
132
+ rawStr = rawStr.replaceAll(new RegExp(regex.escapeStringRegexp(v), 'g'), replace.replaceJs(v, {
133
+ escapeMap
134
+ }));
135
+ }
136
+ }
137
+ }
138
+ if (typeof node.start === 'number' && typeof node.end === 'number') {
139
+ const start = node.start + offset;
140
+ const end = node.end - offset;
141
+ if (start < end) {
142
+ ms.update(node.start + offset, node.end - offset, needEscaped ? jsStringEscape(rawStr) : rawStr);
143
+ }
144
+ }
145
+ return rawStr;
146
+ }
147
+
148
+ const isProd = () => process.env.NODE_ENV === 'production';
149
+
87
150
  function jsHandler(rawSource, options) {
88
151
  var _a;
89
152
  const ast = parser.parse(rawSource, {
90
153
  sourceType: 'unambiguous'
91
154
  });
92
- const topt = {
93
- StringLiteral: {
94
- enter(p) {
95
- const n = p.node;
96
- n.value = handleValue(n.value, n, options);
97
- }
98
- },
99
- TemplateElement: {
100
- enter(p) {
101
- const n = p.node;
102
- n.value.raw = handleValue(n.value.raw, n, options);
155
+ if (options.strategy === 'replace') {
156
+ const ms = new MagicString__default["default"](rawSource);
157
+ const ropt = {
158
+ StringLiteral: {
159
+ enter(p) {
160
+ const n = p.node;
161
+ replaceHandleValue(n.value, n, options, ms, 1, true);
162
+ }
163
+ },
164
+ TemplateElement: {
165
+ enter(p) {
166
+ const n = p.node;
167
+ replaceHandleValue(n.value.raw, n, options, ms, 0, false);
168
+ }
169
+ },
170
+ CallExpression: {
171
+ enter(p) {
172
+ const calleePath = p.get('callee');
173
+ if (calleePath.isIdentifier() && calleePath.node.name === 'eval') {
174
+ p.traverse({
175
+ StringLiteral: {
176
+ enter(s) {
177
+ const res = jsHandler(s.node.value, options);
178
+ if (res.code) {
179
+ s.node.value = res.code;
180
+ }
181
+ }
182
+ }
183
+ });
184
+ }
185
+ }
103
186
  }
104
- },
105
- CallExpression: {
106
- enter(p) {
107
- const n = p.node;
108
- if (t__namespace.isIdentifier(n.callee) && n.callee.name === 'eval' && t__namespace.isStringLiteral(n.arguments[0])) {
109
- const res = jsHandler(n.arguments[0].value, options);
110
- if (res.code) {
111
- n.arguments[0].value = res.code;
187
+ };
188
+ traverse__default["default"](ast, ropt);
189
+ return {
190
+ code: ms.toString()
191
+ };
192
+ }
193
+ else {
194
+ const gopt = {
195
+ StringLiteral: {
196
+ enter(p) {
197
+ const n = p.node;
198
+ n.value = regenerateHandleValue(n.value, n, options);
199
+ }
200
+ },
201
+ TemplateElement: {
202
+ enter(p) {
203
+ const n = p.node;
204
+ n.value.raw = regenerateHandleValue(n.value.raw, n, options);
205
+ }
206
+ },
207
+ CallExpression: {
208
+ enter(p) {
209
+ const calleePath = p.get('callee');
210
+ if (calleePath.isIdentifier() && calleePath.node.name === 'eval') {
211
+ p.traverse({
212
+ StringLiteral: {
213
+ enter(s) {
214
+ const res = jsHandler(s.node.value, options);
215
+ if (res.code) {
216
+ s.node.value = res.code;
217
+ }
218
+ }
219
+ }
220
+ });
112
221
  }
113
222
  }
114
223
  }
115
- },
116
- noScope: true
117
- };
118
- traverse__default["default"](ast, topt);
119
- return generate__default["default"](ast, {
120
- minified: (_a = options.minifiedJs) !== null && _a !== void 0 ? _a : isProd()
121
- });
224
+ };
225
+ traverse__default["default"](ast, gopt);
226
+ return generate__default["default"](ast, {
227
+ minified: (_a = options.minifiedJs) !== null && _a !== void 0 ? _a : isProd()
228
+ });
229
+ }
122
230
  }
123
231
  function createjsHandler(options) {
124
- const { mangleContext, arbitraryValues, minifiedJs, escapeMap, jsPreserveClass } = options;
232
+ const { mangleContext, arbitraryValues, minifiedJs, escapeMap, jsPreserveClass, strategy } = options;
125
233
  return (rawSource, set) => {
126
234
  return jsHandler(rawSource, {
127
235
  classNameSet: set,
@@ -129,7 +237,8 @@ function createjsHandler(options) {
129
237
  escapeMap,
130
238
  arbitraryValues,
131
239
  mangleContext,
132
- jsPreserveClass
240
+ jsPreserveClass,
241
+ strategy
133
242
  });
134
243
  };
135
244
  }
@@ -450,8 +559,8 @@ function getSelf(x) {
450
559
  const defaultMangleContext = {
451
560
  rawOptions: false,
452
561
  runtimeSet: new Set(),
453
- classGenerator: new tailwindcssMangleShared.ClassGenerator(),
454
- filter: tailwindcssMangleShared.defaultMangleClassFilter,
562
+ classGenerator: new shared.ClassGenerator(),
563
+ filter: shared.defaultMangleClassFilter,
455
564
  cssHandler: getSelf,
456
565
  jsHandler: getSelf,
457
566
  wxmlHandler: getSelf
@@ -477,11 +586,11 @@ function useMangleStore() {
477
586
  if (options === true) {
478
587
  options = {
479
588
  classGenerator: {},
480
- mangleClassFilter: tailwindcssMangleShared.defaultMangleClassFilter
589
+ mangleClassFilter: shared.defaultMangleClassFilter
481
590
  };
482
591
  }
483
- ctx.classGenerator = new tailwindcssMangleShared.ClassGenerator(options.classGenerator);
484
- ctx.filter = (_a = options.mangleClassFilter) !== null && _a !== void 0 ? _a : tailwindcssMangleShared.defaultMangleClassFilter;
592
+ ctx.classGenerator = new shared.ClassGenerator(options.classGenerator);
593
+ ctx.filter = (_a = options.mangleClassFilter) !== null && _a !== void 0 ? _a : shared.defaultMangleClassFilter;
485
594
  ctx.jsHandler = (rawSource) => {
486
595
  return handleValue(rawSource);
487
596
  };
@@ -538,7 +647,7 @@ function getOptions(options = {}) {
538
647
  const result = defu(options, defaults.defaultOptions, {
539
648
  minifiedJs: isProd()
540
649
  });
541
- const { cssPreflight, customRuleCallback, cssPreflightRange, replaceUniversalSelectorWith, customAttributes, customReplaceDictionary, supportCustomLengthUnitsPatch, arbitraryValues, cssChildCombinatorReplaceValue, inlineWxs, injectAdditionalCssVarScope, jsPreserveClass, disabledDefaultTemplateHandler } = result;
650
+ const { cssPreflight, customRuleCallback, cssPreflightRange, replaceUniversalSelectorWith, customAttributes, customReplaceDictionary, supportCustomLengthUnitsPatch, arbitraryValues, cssChildCombinatorReplaceValue, inlineWxs, injectAdditionalCssVarScope, jsPreserveClass, disabledDefaultTemplateHandler, jsEscapeStrategy } = result;
542
651
  result.escapeMap = customReplaceDictionary;
543
652
  const cssInjectPreflight = createInjectPreflight(cssPreflight);
544
653
  const customAttributesEntities = defaults.isMap(options.customAttributes)
@@ -563,7 +672,8 @@ function getOptions(options = {}) {
563
672
  escapeMap,
564
673
  mangleContext,
565
674
  arbitraryValues,
566
- jsPreserveClass
675
+ jsPreserveClass,
676
+ strategy: jsEscapeStrategy
567
677
  });
568
678
  result.jsHandler = jsHandler;
569
679
  const templateHandler = createTemplateHandler({
package/dist/types.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { Rule } from 'postcss';
2
- import type { IClassGeneratorOptions, ClassGenerator } from 'tailwindcss-mangle-shared';
3
- import type { GeneratorResult } from '@babel/generator';
2
+ import type { IClassGeneratorOptions, ClassGenerator } from '@tailwindcss-mangle/shared';
4
3
  import type { InjectPreflight } from './postcss/preflight';
5
4
  export type ItemOrItemArray<T> = T | T[];
6
5
  export type AppType = 'uni-app' | 'uni-app-vite' | 'taro' | 'remax' | 'rax' | 'native' | 'kbone' | 'mpx';
@@ -39,6 +38,7 @@ export type IJsHandlerOptions = {
39
38
  arbitraryValues?: IArbitraryValues;
40
39
  mangleContext?: IMangleScopeContext;
41
40
  jsPreserveClass?: (keyword: string) => boolean | undefined;
41
+ strategy?: UserDefinedOptions['jsEscapeStrategy'];
42
42
  };
43
43
  export interface RawSource {
44
44
  start: number;
@@ -94,6 +94,7 @@ export interface UserDefinedOptions {
94
94
  injectAdditionalCssVarScope?: boolean;
95
95
  jsPreserveClass?: (keyword: string) => boolean | undefined;
96
96
  disabledDefaultTemplateHandler?: boolean;
97
+ jsEscapeStrategy?: 'regenerate' | 'replace';
97
98
  }
98
99
  export interface IMangleScopeContext {
99
100
  rawOptions: UserDefinedOptions['mangle'];
@@ -113,7 +114,9 @@ export interface ITemplateHandlerOptions extends ICommonReplaceOptions {
113
114
  escapeMap?: Record<string, string>;
114
115
  mangleContext?: IMangleScopeContext;
115
116
  inlineWxs?: boolean;
116
- jsHandler?: (rawSource: string, set: Set<string>) => GeneratorResult;
117
+ jsHandler?: (rawSource: string, set: Set<string>) => {
118
+ code: string;
119
+ };
117
120
  runtimeSet?: Set<string>;
118
121
  disabledDefaultTemplateHandler?: boolean;
119
122
  }
@@ -124,7 +127,9 @@ export type InternalUserDefinedOptions = Required<Omit<UserDefinedOptions, GlobO
124
127
  supportCustomLengthUnitsPatch: ILengthUnitsPatchOptions | false;
125
128
  templateHandler: (rawSource: string, options?: ITemplateHandlerOptions) => string;
126
129
  styleHandler: (rawSource: string, options: IStyleHandlerOptions) => string;
127
- jsHandler: (rawSource: string, set: Set<string>) => GeneratorResult;
130
+ jsHandler: (rawSource: string, set: Set<string>) => {
131
+ code: string;
132
+ };
128
133
  escapeMap: Record<string, string>;
129
134
  patch: () => void;
130
135
  customReplaceDictionary: Record<string, string>;
package/dist/vite.js CHANGED
@@ -2,25 +2,26 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var options = require('./options-43afee21.js');
5
+ var options = require('./options-b7411c31.js');
6
6
  var postcss = require('./postcss-4e99a8e8.js');
7
- var defaults = require('./defaults-28cfeec8.js');
7
+ var defaults = require('./defaults-344ba6d9.js');
8
8
  require('micromatch');
9
- require('@babel/types');
10
- require('@babel/generator');
11
- require('@babel/parser');
12
- require('@babel/traverse');
9
+ require('magic-string');
13
10
  require('./replace.js');
14
11
  require('@weapp-core/escape');
15
12
  require('./shared-df9de23f.js');
16
13
  require('@weapp-core/regex');
14
+ require('@babel/generator');
15
+ require('@babel/parser');
16
+ require('@babel/traverse');
17
+ require('@babel/types');
17
18
  require('postcss');
18
19
  require('@csstools/postcss-is-pseudo-class');
19
20
  require('node:path');
20
21
  require('node:fs');
21
22
  require('semver');
22
23
  require('tailwindcss-patch');
23
- require('tailwindcss-mangle-shared');
24
+ require('@tailwindcss-mangle/shared');
24
25
  require('postcss-selector-parser');
25
26
 
26
27
  function UnifiedViteWeappTailwindcssPlugin(options$1 = {}) {
package/dist/vite.mjs CHANGED
@@ -1,22 +1,23 @@
1
- import { g as getOptions, a as createTailwindcssPatcher } from './options-d8cb9e14.mjs';
1
+ import { g as getOptions, a as createTailwindcssPatcher } from './options-8805cf56.mjs';
2
2
  import { v as vitePluginName } from './postcss-a551ddc0.mjs';
3
- import { g as getGroupedEntries } from './defaults-702719e1.mjs';
3
+ import { g as getGroupedEntries } from './defaults-0743f523.mjs';
4
4
  import 'micromatch';
5
- import '@babel/types';
6
- import '@babel/generator';
7
- import '@babel/parser';
8
- import '@babel/traverse';
5
+ import 'magic-string';
9
6
  import './replace.mjs';
10
7
  import '@weapp-core/escape';
11
8
  import './shared-fd149084.mjs';
12
9
  import '@weapp-core/regex';
10
+ import '@babel/generator';
11
+ import '@babel/parser';
12
+ import '@babel/traverse';
13
+ import '@babel/types';
13
14
  import 'postcss';
14
15
  import '@csstools/postcss-is-pseudo-class';
15
16
  import 'node:path';
16
17
  import 'node:fs';
17
18
  import 'semver';
18
19
  import 'tailwindcss-patch';
19
- import 'tailwindcss-mangle-shared';
20
+ import '@tailwindcss-mangle/shared';
20
21
  import 'postcss-selector-parser';
21
22
 
22
23
  function UnifiedViteWeappTailwindcssPlugin(options = {}) {
package/dist/webpack.js CHANGED
@@ -4,23 +4,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var path = require('node:path');
6
6
  var fs = require('node:fs');
7
- var options = require('./options-43afee21.js');
7
+ var options = require('./options-b7411c31.js');
8
8
  var postcss = require('./postcss-4e99a8e8.js');
9
- var defaults = require('./defaults-28cfeec8.js');
9
+ var defaults = require('./defaults-344ba6d9.js');
10
10
  require('micromatch');
11
- require('@babel/types');
12
- require('@babel/generator');
13
- require('@babel/parser');
14
- require('@babel/traverse');
11
+ require('magic-string');
15
12
  require('./replace.js');
16
13
  require('@weapp-core/escape');
17
14
  require('./shared-df9de23f.js');
18
15
  require('@weapp-core/regex');
16
+ require('@babel/generator');
17
+ require('@babel/parser');
18
+ require('@babel/traverse');
19
+ require('@babel/types');
19
20
  require('postcss');
20
21
  require('@csstools/postcss-is-pseudo-class');
21
22
  require('semver');
22
23
  require('tailwindcss-patch');
23
- require('tailwindcss-mangle-shared');
24
+ require('@tailwindcss-mangle/shared');
24
25
  require('postcss-selector-parser');
25
26
 
26
27
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
package/dist/webpack.mjs CHANGED
@@ -1,22 +1,23 @@
1
1
  import path from 'node:path';
2
2
  import fs from 'node:fs';
3
- import { g as getOptions, a as createTailwindcssPatcher } from './options-d8cb9e14.mjs';
3
+ import { g as getOptions, a as createTailwindcssPatcher } from './options-8805cf56.mjs';
4
4
  import { a as pluginName } from './postcss-a551ddc0.mjs';
5
- import { g as getGroupedEntries } from './defaults-702719e1.mjs';
5
+ import { g as getGroupedEntries } from './defaults-0743f523.mjs';
6
6
  import 'micromatch';
7
- import '@babel/types';
8
- import '@babel/generator';
9
- import '@babel/parser';
10
- import '@babel/traverse';
7
+ import 'magic-string';
11
8
  import './replace.mjs';
12
9
  import '@weapp-core/escape';
13
10
  import './shared-fd149084.mjs';
14
11
  import '@weapp-core/regex';
12
+ import '@babel/generator';
13
+ import '@babel/parser';
14
+ import '@babel/traverse';
15
+ import '@babel/types';
15
16
  import 'postcss';
16
17
  import '@csstools/postcss-is-pseudo-class';
17
18
  import 'semver';
18
19
  import 'tailwindcss-patch';
19
- import 'tailwindcss-mangle-shared';
20
+ import '@tailwindcss-mangle/shared';
20
21
  import 'postcss-selector-parser';
21
22
 
22
23
  class UnifiedWebpackPluginV5 {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weapp-tailwindcss",
3
- "version": "2.6.3",
3
+ "version": "2.7.1",
4
4
  "description": "把tailwindcss jit引擎,带给小程序开发者们\nbring tailwindcss jit engine to our miniprogram developers!",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -102,8 +102,8 @@
102
102
  },
103
103
  "homepage": "https://weapp-tw.icebreaker.top",
104
104
  "devDependencies": {
105
- "@babel/core": "^7.22.9",
106
- "@icebreakers/cli": "^0.1.1",
105
+ "@babel/core": "^7.22.10",
106
+ "@icebreakers/cli": "0.1.1",
107
107
  "@icebreakers/readme": "0.1.0",
108
108
  "@rollup/plugin-alias": "^5.0.0",
109
109
  "@rollup/plugin-commonjs": "^25.0.3",
@@ -118,46 +118,49 @@
118
118
  "@types/gulp": "^4.0.13",
119
119
  "@types/gulp-postcss": "^8.0.3",
120
120
  "@types/jest": "^29.5.3",
121
+ "@types/js-beautify": "^1.14.0",
121
122
  "@types/klaw": "^3.0.3",
122
123
  "@types/loader-utils": "^2.0.3",
123
- "@types/lodash": "^4.14.196",
124
+ "@types/lodash": "^4.14.197",
124
125
  "@types/micromatch": "^4.0.2",
125
- "@types/node": "^20.4.5",
126
+ "@types/node": "^20.4.9",
126
127
  "@types/semver": "^7.5.0",
127
128
  "@types/vinyl": "^2.0.7",
128
129
  "@types/webpack": "^5.28.1",
129
130
  "@types/webpack-sources": "^3.2.0",
130
- "@vitest/coverage-v8": "^0.33.0",
131
+ "@vitest/coverage-v8": "^0.34.1",
131
132
  "autoprefixer": "^10.4.14",
132
133
  "babel-loader": "^9.1.3",
133
134
  "bumpp": "^9.1.1",
134
135
  "colorette": "^2.0.20",
135
136
  "cross-env": "^7.0.3",
136
137
  "css-loader": "^6.8.1",
138
+ "dedent": "^1.5.1",
137
139
  "defu": "6.1.2",
138
140
  "del": "^7.0.0",
139
- "eslint": "8.45.0",
141
+ "eslint": "8.46.0",
140
142
  "eslint-config-icebreaker": "^1.2.2",
141
- "eslint-config-prettier": "^8.8.0",
142
- "eslint-plugin-prettier": "^4.2.1",
143
+ "eslint-config-prettier": "^9.0.0",
144
+ "eslint-plugin-prettier": "^5.0.0",
145
+ "execa": "^7.2.0",
143
146
  "fast-glob": "^3.3.1",
144
147
  "fs-extra": "^11.1.1",
145
148
  "gulp": "^4.0.2",
146
149
  "gulp-postcss": "^9.0.1",
147
150
  "html-loader": "^4.2.0",
148
- "jest": "^29.6.1",
151
+ "jest": "^29.6.2",
152
+ "js-beautify": "^1.14.9",
149
153
  "klaw": "^4.1.0",
150
154
  "lodash": "^4.17.21",
151
- "magic-string": "^0.30.1",
152
155
  "mini-css-extract-plugin": "^2.7.6",
153
156
  "miniprogram-automator": "^0.12.0",
154
157
  "pkg-types": "^1.0.3",
155
158
  "postcss-load-config": "^4.0.1",
156
159
  "postcss-loader": "^7.3.3",
157
160
  "postcss-rem-to-responsive-pixel": "^5.1.3",
158
- "prettier": "^2.8.8",
161
+ "prettier": "^3.0.1",
159
162
  "promisify-loader-runner": "^1.0.0",
160
- "rollup": "^3.26.3",
163
+ "rollup": "^3.28.0",
161
164
  "rollup-plugin-visualizer": "^5.9.2",
162
165
  "style-loader": "^3.3.3",
163
166
  "tailwind-children": "^0.5.0",
@@ -170,29 +173,33 @@
170
173
  "typescript": "^5.1.6",
171
174
  "typescript-transform-paths": "^3.4.6",
172
175
  "vinyl": "^3.0.0",
173
- "vite": "^4.4.7",
174
- "vitest": "^0.33.0",
176
+ "vite": "^4.4.9",
177
+ "vitest": "^0.34.1",
175
178
  "weapp-tailwindcss-children": "^0.1.0",
176
179
  "webpack": "^5.88.2",
177
180
  "webpack-build-utils": "^0.0.4"
178
181
  },
179
182
  "dependencies": {
180
- "@babel/generator": "^7.22.9",
181
- "@babel/parser": "^7.22.7",
182
- "@babel/traverse": "^7.22.8",
183
- "@babel/types": "^7.22.5",
183
+ "@babel/generator": "^7.22.10",
184
+ "@babel/parser": "^7.22.10",
185
+ "@babel/traverse": "^7.22.10",
186
+ "@babel/types": "^7.22.10",
184
187
  "@csstools/postcss-is-pseudo-class": "^4.0.0",
188
+ "@tailwindcss-mangle/shared": "^2.0.4",
185
189
  "@weapp-core/escape": "^1.0.0",
186
190
  "@weapp-core/regex": "^1.0.0",
187
191
  "loader-utils": "^2.0.3",
192
+ "magic-string": "^0.30.2",
188
193
  "micromatch": "^4.0.5",
189
194
  "postcss": "8.4.27",
190
195
  "postcss-selector-parser": "^6.0.13",
191
196
  "semver": "^7.5.4",
192
- "tailwindcss-mangle-shared": "^1.2.7",
193
- "tailwindcss-patch": "^1.2.7"
197
+ "tailwindcss-patch": "^2.0.4"
198
+ },
199
+ "packageManager": "pnpm@8.6.11",
200
+ "engines": {
201
+ "node": ">=16.6.0"
194
202
  },
195
- "packageManager": "pnpm@8.6.9",
196
203
  "scripts": {
197
204
  "dev": "yarn clean && yarn dts && cross-env NODE_ENV=development rollup -c rollup.config.ts --configPlugin typescript -w",
198
205
  "build": "yarn clean && cross-env NODE_ENV=production rollup -c rollup.config.ts --configPlugin typescript && yarn dts",