weapp-tailwindcss 3.4.0-alpha.0 → 3.4.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/babel/index.d.ts +16 -0
  2. package/dist/bundlers/gulp/index.d.ts +8 -0
  3. package/dist/bundlers/vite/index.d.ts +3 -0
  4. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4.d.ts +8 -0
  5. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5.d.ts +8 -0
  6. package/dist/bundlers/webpack/index.d.ts +1 -0
  7. package/dist/{weapp-tw-runtime-loader.d.ts → bundlers/webpack/loaders/weapp-tw-runtime-loader.d.ts} +2 -4
  8. package/dist/cache/index.d.ts +32 -0
  9. package/dist/cli.d.ts +1 -2
  10. package/dist/cli.js +51 -1760
  11. package/dist/cli.mjs +45 -34
  12. package/dist/constants-CFM1J-h1.js +42 -0
  13. package/dist/constants-Dy2Dd3Fz.mjs +36 -0
  14. package/dist/constants.d.ts +7 -0
  15. package/dist/core.d.ts +2 -16
  16. package/dist/core.js +60 -1775
  17. package/dist/core.mjs +60 -46
  18. package/dist/css-macro/constants.d.ts +14 -0
  19. package/dist/css-macro/index.d.ts +4 -7
  20. package/dist/css-macro/index.js +30 -140
  21. package/dist/css-macro/index.mjs +28 -35
  22. package/dist/css-macro/postcss.d.ts +3 -5
  23. package/dist/css-macro/postcss.js +46 -99
  24. package/dist/css-macro/postcss.mjs +45 -54
  25. package/dist/debug/index.d.ts +2 -0
  26. package/dist/defaults-DW-EahCC.js +145 -0
  27. package/dist/defaults-w3rlKQwe.mjs +139 -0
  28. package/dist/defaults.d.ts +2 -16
  29. package/dist/defaults.js +7 -208
  30. package/dist/defaults.mjs +4 -9
  31. package/dist/defu-Cdz2PomB.js +60 -0
  32. package/dist/defu-n46TJT6t.mjs +57 -0
  33. package/dist/env.d.ts +2 -0
  34. package/dist/escape.d.ts +4 -0
  35. package/dist/extractors/split.d.ts +3 -0
  36. package/dist/gulp.d.ts +1 -26
  37. package/dist/gulp.js +38 -1898
  38. package/dist/gulp.mjs +30 -15
  39. package/dist/index-B2TNoaOv.mjs +134 -0
  40. package/dist/index-B5NiRecR.js +130 -0
  41. package/dist/index-BEIjgKpF.mjs +11 -0
  42. package/dist/index-BPzIdybK.mjs +513 -0
  43. package/dist/index-DeW_zXzo.mjs +124 -0
  44. package/dist/index-DmzxhHCX.js +136 -0
  45. package/dist/index-DwZHOkK3.js +526 -0
  46. package/dist/index-HC-Qkn0i.js +17 -0
  47. package/dist/index.d.ts +4 -17
  48. package/dist/index.js +43 -2291
  49. package/dist/index.mjs +33 -23
  50. package/dist/js/handlers.d.ts +13 -0
  51. package/dist/js/index.d.ts +7 -0
  52. package/dist/mangle/index.d.ts +8 -0
  53. package/dist/options-7EjuAISl.mjs +869 -0
  54. package/dist/options-C-rvBixk.js +901 -0
  55. package/dist/options.d.ts +2 -0
  56. package/dist/postcss/cssVars.d.ts +5 -0
  57. package/dist/postcss/index.d.ts +3 -0
  58. package/dist/postcss/mp.d.ts +8 -0
  59. package/dist/postcss/plugins/ctx.d.ts +6 -0
  60. package/dist/postcss/plugins/index.d.ts +7 -0
  61. package/dist/postcss/plugins/post.d.ts +5 -0
  62. package/dist/postcss/plugins/pre.d.ts +5 -0
  63. package/dist/postcss/preflight.d.ts +3 -0
  64. package/dist/postcss/selectorParser.d.ts +6 -0
  65. package/dist/postcss/shared.d.ts +3 -0
  66. package/dist/postcss/symbols.d.ts +1 -0
  67. package/dist/postcss.d.ts +1 -23
  68. package/dist/postcss.js +22 -598
  69. package/dist/postcss.mjs +8 -17
  70. package/dist/reg.d.ts +1 -0
  71. package/dist/replace.d.ts +3 -19
  72. package/dist/replace.js +42 -93
  73. package/dist/replace.mjs +26 -30
  74. package/dist/shared-DbJl6i6a.mjs +25 -0
  75. package/dist/shared-hzYeE1wX.js +28 -0
  76. package/dist/tailwindcss/patcher.d.ts +3 -0
  77. package/dist/types.d.ts +165 -0
  78. package/dist/utils.d.ts +18 -0
  79. package/dist/v5-BD9-sqra.mjs +174 -0
  80. package/dist/v5-Ch6783yy.js +181 -0
  81. package/dist/vite.d.ts +1 -22
  82. package/dist/vite.js +36 -1947
  83. package/dist/vite.mjs +28 -15
  84. package/dist/weapp-tw-runtime-loader.js +14 -41
  85. package/dist/weapp-tw-runtime-loader.mjs +8 -12
  86. package/dist/webpack.d.ts +1 -26
  87. package/dist/webpack.js +37 -1994
  88. package/dist/webpack.mjs +29 -15
  89. package/dist/webpack4.d.ts +1 -27
  90. package/dist/webpack4.js +190 -1979
  91. package/dist/webpack4.mjs +188 -211
  92. package/dist/wxml/Tokenizer.d.ts +31 -0
  93. package/dist/wxml/index.d.ts +2 -0
  94. package/dist/wxml/shared.d.ts +2 -0
  95. package/dist/wxml/utils.d.ts +13 -0
  96. package/package.json +3 -3
  97. package/dist/chunk-257YPDSI.mjs +0 -173
  98. package/dist/chunk-75EWCRQW.mjs +0 -13
  99. package/dist/chunk-AB467PG7.mjs +0 -43
  100. package/dist/chunk-E7XGHGC7.mjs +0 -62
  101. package/dist/chunk-GUE4UCRJ.mjs +0 -126
  102. package/dist/chunk-IOYI6MSW.mjs +0 -533
  103. package/dist/chunk-LDWI65M5.mjs +0 -152
  104. package/dist/chunk-NVFWRLOI.mjs +0 -27
  105. package/dist/chunk-ORMKM6ZA.mjs +0 -30
  106. package/dist/chunk-PC4B5JJB.mjs +0 -953
  107. package/dist/chunk-SRLZU2YE.mjs +0 -95
  108. package/dist/chunk-VECXHWWG.mjs +0 -31
  109. package/dist/chunk-VN37QGSM.mjs +0 -216
  110. package/dist/cli.d.mts +0 -2
  111. package/dist/core.d.mts +0 -22
  112. package/dist/css-macro/index.d.mts +0 -18
  113. package/dist/css-macro/postcss.d.mts +0 -7
  114. package/dist/defaults.d.mts +0 -16
  115. package/dist/gulp.d.mts +0 -26
  116. package/dist/index.d.mts +0 -17
  117. package/dist/postcss.d.mts +0 -23
  118. package/dist/replace.d.mts +0 -19
  119. package/dist/types-DSNuiOhH.d.mts +0 -519
  120. package/dist/types-DSNuiOhH.d.ts +0 -519
  121. package/dist/vite.d.mts +0 -22
  122. package/dist/weapp-tw-runtime-loader.d.mts +0 -7
  123. package/dist/webpack.d.mts +0 -26
  124. package/dist/webpack4.d.mts +0 -27
@@ -0,0 +1,901 @@
1
+ 'use strict';
2
+
3
+ var MagicString = require('magic-string');
4
+ var replace = require('./replace.js');
5
+ var regex = require('@weapp-core/regex');
6
+ require('@weapp-core/escape');
7
+ var escape = require('@ast-core/escape');
8
+ var _babelGenerate = require('@babel/generator');
9
+ var _babelTraverse = require('@babel/traverse');
10
+ var parser = require('@babel/parser');
11
+ var defaults = require('./defaults-DW-EahCC.js');
12
+ var t = require('@babel/types');
13
+ var htmlparser2 = require('htmlparser2');
14
+ var postcss = require('postcss');
15
+ var index = require('./index-DwZHOkK3.js');
16
+ var path = require('node:path');
17
+ var process = require('node:process');
18
+ var tailwindcssPatch = require('tailwindcss-patch');
19
+ var shared = require('@tailwindcss-mangle/shared');
20
+ var lruCache = require('lru-cache');
21
+ var md5 = require('md5');
22
+
23
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
24
+
25
+ function _interopNamespaceCompat(e) {
26
+ if (e && typeof e === 'object' && 'default' in e) return e;
27
+ var n = Object.create(null);
28
+ if (e) {
29
+ Object.keys(e).forEach(function (k) {
30
+ if (k !== 'default') {
31
+ var d = Object.getOwnPropertyDescriptor(e, k);
32
+ Object.defineProperty(n, k, d.get ? d : {
33
+ enumerable: true,
34
+ get: function () { return e[k]; }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ n["default"] = e;
40
+ return Object.freeze(n);
41
+ }
42
+
43
+ var MagicString__default = /*#__PURE__*/_interopDefaultCompat(MagicString);
44
+ var _babelGenerate__default = /*#__PURE__*/_interopDefaultCompat(_babelGenerate);
45
+ var _babelTraverse__default = /*#__PURE__*/_interopDefaultCompat(_babelTraverse);
46
+ var t__namespace = /*#__PURE__*/_interopNamespaceCompat(t);
47
+ var postcss__default = /*#__PURE__*/_interopDefaultCompat(postcss);
48
+ var path__default = /*#__PURE__*/_interopDefaultCompat(path);
49
+ var process__default = /*#__PURE__*/_interopDefaultCompat(process);
50
+ var md5__default = /*#__PURE__*/_interopDefaultCompat(md5);
51
+
52
+ /******************************************************************************
53
+ Copyright (c) Microsoft Corporation.
54
+
55
+ Permission to use, copy, modify, and/or distribute this software for any
56
+ purpose with or without fee is hereby granted.
57
+
58
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
59
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
61
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
62
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
63
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
64
+ PERFORMANCE OF THIS SOFTWARE.
65
+ ***************************************************************************** */
66
+ /* global Reflect, Promise, SuppressedError, Symbol */
67
+
68
+
69
+ function __awaiter(thisArg, _arguments, P, generator) {
70
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
71
+ return new (P || (P = Promise))(function (resolve, reject) {
72
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
73
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
74
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
75
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
76
+ });
77
+ }
78
+
79
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
80
+ var e = new Error(message);
81
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
82
+ };
83
+
84
+ function decodeUnicode2(input) {
85
+ try {
86
+ return JSON.parse(`"${input}"`);
87
+ }
88
+ catch (_error) {
89
+ return input;
90
+ }
91
+ }
92
+
93
+ const validateFilterRE = /[\w\u00A0-\uFFFF%-?]/;
94
+ function isValidSelector(selector = '') {
95
+ return validateFilterRE.test(selector);
96
+ }
97
+ function splitCode(code, allowDoubleQuotes = false) {
98
+ const splitter = allowDoubleQuotes ? /\s+/ : /\s+|"/;
99
+ return code.split(splitter).filter(element => isValidSelector(element));
100
+ }
101
+
102
+ function replaceHandleValue(str, node, options, ms, offset = 0) {
103
+ const { classNameSet: set, escapeMap, mangleContext: ctx, needEscaped = false, jsPreserveClass, arbitraryValues, always, unescapeUnicode, } = options;
104
+ const allowDoubleQuotes = arbitraryValues === null || arbitraryValues === void 0 ? void 0 : arbitraryValues.allowDoubleQuotes;
105
+ let rawStr = str;
106
+ let needUpdate = false;
107
+ if (unescapeUnicode && rawStr.includes('\\u')) {
108
+ rawStr = decodeUnicode2(rawStr);
109
+ }
110
+ const arr = splitCode(rawStr, allowDoubleQuotes);
111
+ for (const v of arr) {
112
+ if (always || (set && set.has(v) && !(jsPreserveClass === null || jsPreserveClass === void 0 ? void 0 : jsPreserveClass(v)))) {
113
+ let ignoreFlag = false;
114
+ if (Array.isArray(node.leadingComments)) {
115
+ ignoreFlag
116
+ = node.leadingComments.findIndex(x => x.value.includes('weapp-tw') && x.value.includes('ignore')) > -1;
117
+ }
118
+ if (!ignoreFlag) {
119
+ if (ctx) {
120
+ rawStr = ctx.jsHandler(rawStr);
121
+ }
122
+ rawStr = rawStr.replace(new RegExp(regex.escapeStringRegexp(v)), replace.replaceJs(v, {
123
+ escapeMap,
124
+ }));
125
+ needUpdate = true;
126
+ }
127
+ }
128
+ }
129
+ if (needUpdate && typeof node.start === 'number' && typeof node.end === 'number') {
130
+ const start = node.start + offset;
131
+ const end = node.end - offset;
132
+ if (start < end && str !== rawStr) {
133
+ const content = needEscaped ? escape.jsStringEscape(rawStr) : rawStr;
134
+ ms.update(start, end, content);
135
+ }
136
+ }
137
+ return rawStr;
138
+ }
139
+
140
+ function _interopDefaultCompat$1(e) {
141
+ return e && typeof e === 'object' && 'default' in e ? e.default : e;
142
+ }
143
+ _interopDefaultCompat$1(_babelGenerate__default["default"]);
144
+ const traverse = _interopDefaultCompat$1(_babelTraverse__default["default"]);
145
+
146
+ function isEvalPath(p) {
147
+ if (p.isCallExpression()) {
148
+ const calleePath = p.get('callee');
149
+ return calleePath.isIdentifier() && calleePath.node.name === 'eval';
150
+ }
151
+ return false;
152
+ }
153
+ function getAstGrep() {
154
+ return __awaiter(this, void 0, void 0, function* () {
155
+ try {
156
+ const { js } = yield import('@ast-grep/napi');
157
+ return js;
158
+ }
159
+ catch (error) {
160
+ console.warn('请先安装 `@ast-grep/napi` , 安装完成后再尝试运行!');
161
+ throw error;
162
+ }
163
+ });
164
+ }
165
+ function astGrepUpdateString(ast, options, ms) {
166
+ return __awaiter(this, void 0, void 0, function* () {
167
+ const js = yield getAstGrep();
168
+ const nodes = ast.findAll(js.kind('string'));
169
+ for (const node of nodes) {
170
+ const range = node.range();
171
+ const text = node.text();
172
+ replaceHandleValue(text.slice(1, -1), {
173
+ end: range.end.index - 1,
174
+ start: range.start.index + 1,
175
+ }, Object.assign(Object.assign({}, options), { unescapeUnicode: true }), ms, 0);
176
+ }
177
+ const templateNodes = ast.findAll(js.kind('template_string'));
178
+ for (const node of templateNodes) {
179
+ const fragments = node.findAll(js.kind('string_fragment'));
180
+ for (const fragment of fragments) {
181
+ const range = fragment.range();
182
+ const text = fragment.text();
183
+ replaceHandleValue(text, {
184
+ end: range.end.index,
185
+ start: range.start.index,
186
+ }, Object.assign(Object.assign({}, options), { unescapeUnicode: true }), ms, 0);
187
+ }
188
+ }
189
+ });
190
+ }
191
+ function jsHandler(rawSource, options) {
192
+ const ms = new MagicString__default["default"](rawSource);
193
+ let ast;
194
+ try {
195
+ ast = parser.parse(rawSource, options.babelParserOptions);
196
+ }
197
+ catch (error) {
198
+ return {
199
+ code: rawSource,
200
+ error: error,
201
+ };
202
+ }
203
+ const traverseOptions = {
204
+ StringLiteral: {
205
+ enter(p) {
206
+ var _a;
207
+ if (isEvalPath(p.parentPath)) {
208
+ return;
209
+ }
210
+ const n = p.node;
211
+ replaceHandleValue(n.value, n, Object.assign(Object.assign({}, options), { needEscaped: (_a = options.needEscaped) !== null && _a !== void 0 ? _a : true }), ms, 1);
212
+ },
213
+ },
214
+ TemplateElement: {
215
+ enter(p) {
216
+ if (p.parentPath.isTemplateLiteral() && isEvalPath(p.parentPath.parentPath)) {
217
+ return;
218
+ }
219
+ const n = p.node;
220
+ replaceHandleValue(n.value.raw, n, Object.assign(Object.assign({}, options), { needEscaped: false }), ms, 0);
221
+ },
222
+ },
223
+ CallExpression: {
224
+ enter(p) {
225
+ if (isEvalPath(p)) {
226
+ p.traverse({
227
+ StringLiteral: {
228
+ enter(s) {
229
+ const res = jsHandler(s.node.value, Object.assign(Object.assign({}, options), { needEscaped: false, generateMap: false }));
230
+ if (res.code) {
231
+ const node = s.node;
232
+ if (typeof node.start === 'number' && typeof node.end === 'number') {
233
+ const start = node.start + 1;
234
+ const end = node.end - 1;
235
+ if (start < end && s.node.value !== res.code) {
236
+ ms.update(start, end, escape.jsStringEscape(res.code));
237
+ node.value = res.code;
238
+ }
239
+ }
240
+ }
241
+ },
242
+ },
243
+ TemplateElement: {
244
+ enter(s) {
245
+ const res = jsHandler(s.node.value.raw, Object.assign(Object.assign({}, options), { generateMap: false }));
246
+ if (res.code) {
247
+ const node = s.node;
248
+ if (typeof node.start === 'number' && typeof node.end === 'number') {
249
+ const start = node.start;
250
+ const end = node.end;
251
+ if (start < end && s.node.value.raw !== res.code) {
252
+ ms.update(start, end, res.code);
253
+ s.node.value.raw = res.code;
254
+ }
255
+ }
256
+ }
257
+ },
258
+ },
259
+ });
260
+ }
261
+ },
262
+ },
263
+ };
264
+ traverse(ast, traverseOptions);
265
+ return {
266
+ code: ms.toString(),
267
+ };
268
+ }
269
+ function jsHandlerAsync(rawSource, options) {
270
+ return __awaiter(this, void 0, void 0, function* () {
271
+ const ms = new MagicString__default["default"](rawSource);
272
+ const js = yield getAstGrep();
273
+ let ast;
274
+ try {
275
+ const root = yield js.parseAsync(rawSource);
276
+ ast = root.root();
277
+ }
278
+ catch (_a) {
279
+ return {
280
+ code: rawSource,
281
+ };
282
+ }
283
+ yield astGrepUpdateString(ast, options, ms);
284
+ return {
285
+ code: ms.toString(),
286
+ };
287
+ });
288
+ }
289
+ function createJsHandler(options) {
290
+ const { mangleContext, arbitraryValues, escapeMap, jsPreserveClass, generateMap, jsAstTool, babelParserOptions } = options;
291
+ function _jsHandler(rawSource, set, options) {
292
+ const opts = defaults.defuOverrideArray(options, {
293
+ classNameSet: set,
294
+ escapeMap,
295
+ arbitraryValues,
296
+ mangleContext,
297
+ jsPreserveClass,
298
+ generateMap,
299
+ jsAstTool,
300
+ babelParserOptions,
301
+ });
302
+ if (opts.jsAstTool === 'ast-grep') {
303
+ return jsHandlerAsync(rawSource, opts);
304
+ }
305
+ return jsHandler(rawSource, opts);
306
+ }
307
+ function sync(rawSource, set, options) {
308
+ const opts = defaults.defuOverrideArray(options, {
309
+ classNameSet: set,
310
+ escapeMap,
311
+ arbitraryValues,
312
+ mangleContext,
313
+ jsPreserveClass,
314
+ generateMap,
315
+ jsAstTool,
316
+ babelParserOptions,
317
+ });
318
+ return jsHandler(rawSource, opts);
319
+ }
320
+ _jsHandler.sync = sync;
321
+ return _jsHandler;
322
+ }
323
+
324
+ var State;
325
+ (function (State) {
326
+ State[State["START"] = 0] = "START";
327
+ State[State["TEXT"] = 1] = "TEXT";
328
+ State[State["OPEN_BRACE"] = 2] = "OPEN_BRACE";
329
+ State[State["POTENTIAL_CLOSE"] = 3] = "POTENTIAL_CLOSE";
330
+ State[State["BRACES_COMPLETE"] = 4] = "BRACES_COMPLETE";
331
+ })(State || (State = {}));
332
+ class Tokenizer {
333
+ constructor() {
334
+ this.reset();
335
+ }
336
+ processChar(char, index) {
337
+ switch (this.state) {
338
+ case State.START:
339
+ if (char === ' ') ;
340
+ else if (char === '{') {
341
+ this.state = State.OPEN_BRACE;
342
+ this.bufferStartIndex = index;
343
+ this.buffer += char;
344
+ this.expressionBuffer = char;
345
+ this.expressionStartIndex = index;
346
+ }
347
+ else {
348
+ this.state = State.TEXT;
349
+ this.bufferStartIndex = index;
350
+ this.buffer += char;
351
+ }
352
+ break;
353
+ case State.TEXT:
354
+ if (char === ' ') {
355
+ this.tokens.push({ start: this.bufferStartIndex, end: index, value: this.buffer, expressions: this.expressions });
356
+ this.buffer = '';
357
+ this.expressions = [];
358
+ this.state = State.START;
359
+ }
360
+ else if (char === '{') {
361
+ this.buffer += char;
362
+ this.expressionBuffer = char;
363
+ this.expressionStartIndex = index;
364
+ this.state = State.OPEN_BRACE;
365
+ }
366
+ else {
367
+ this.buffer += char;
368
+ }
369
+ break;
370
+ case State.OPEN_BRACE:
371
+ if (char === '}') {
372
+ this.buffer += char;
373
+ this.expressionBuffer += char;
374
+ this.state = State.POTENTIAL_CLOSE;
375
+ }
376
+ else {
377
+ this.buffer += char;
378
+ this.expressionBuffer += char;
379
+ }
380
+ break;
381
+ case State.POTENTIAL_CLOSE:
382
+ if (char === '}') {
383
+ this.buffer += char;
384
+ this.expressionBuffer += char;
385
+ this.expressions.push({
386
+ start: this.expressionStartIndex,
387
+ end: index + 1,
388
+ value: this.expressionBuffer,
389
+ });
390
+ this.expressionBuffer = '';
391
+ this.state = State.BRACES_COMPLETE;
392
+ }
393
+ else {
394
+ this.buffer += char;
395
+ this.expressionBuffer += char;
396
+ this.state = State.OPEN_BRACE;
397
+ }
398
+ break;
399
+ case State.BRACES_COMPLETE:
400
+ if (char === ' ') {
401
+ this.tokens.push({
402
+ start: this.bufferStartIndex,
403
+ end: index,
404
+ value: this.buffer,
405
+ expressions: this.expressions,
406
+ });
407
+ this.buffer = '';
408
+ this.expressions = [];
409
+ this.state = State.START;
410
+ }
411
+ else if (char === '{') {
412
+ this.expressionStartIndex = index;
413
+ this.expressionBuffer = char;
414
+ this.buffer += char;
415
+ this.state = State.OPEN_BRACE;
416
+ }
417
+ else {
418
+ this.buffer += char;
419
+ this.state = State.TEXT;
420
+ }
421
+ break;
422
+ default:
423
+ throw new Error('Unexpected state');
424
+ }
425
+ }
426
+ run(input) {
427
+ for (let i = 0; i < input.length; i++) {
428
+ const char = input[i];
429
+ this.processChar(char, i);
430
+ }
431
+ if (this.buffer.length > 0) {
432
+ this.tokens.push({
433
+ start: this.bufferStartIndex,
434
+ end: input.length,
435
+ value: this.buffer,
436
+ expressions: this.expressions,
437
+ });
438
+ }
439
+ return this.tokens;
440
+ }
441
+ reset() {
442
+ this.state = State.START;
443
+ this.buffer = '';
444
+ this.tokens = [];
445
+ this.bufferStartIndex = 0;
446
+ this.expressionBuffer = '';
447
+ this.expressionStartIndex = 0;
448
+ this.expressions = [];
449
+ }
450
+ }
451
+
452
+ function generateCode(match, options = {}) {
453
+ try {
454
+ const { jsHandler, runtimeSet } = options;
455
+ if (jsHandler && jsHandler.sync && runtimeSet) {
456
+ const { code } = jsHandler.sync(match, runtimeSet);
457
+ return code;
458
+ }
459
+ else {
460
+ const ms = new MagicString__default["default"](match);
461
+ const ast = parser.parseExpression(match);
462
+ traverse(ast, {
463
+ StringLiteral(path) {
464
+ var _a, _b;
465
+ if (t__namespace.isMemberExpression(path.parent)) {
466
+ return;
467
+ }
468
+ if (t__namespace.isBinaryExpression(path.parent) && (t__namespace.isConditionalExpression((_a = path.parentPath) === null || _a === void 0 ? void 0 : _a.parent) || t__namespace.isLogicalExpression((_b = path.parentPath) === null || _b === void 0 ? void 0 : _b.parent))) {
469
+ return;
470
+ }
471
+ const n = path.node;
472
+ replaceHandleValue(n.value, n, {
473
+ mangleContext: options.mangleContext,
474
+ escapeMap: options.escapeMap,
475
+ classNameSet: options.runtimeSet,
476
+ needEscaped: true,
477
+ always: true,
478
+ }, ms, 1);
479
+ },
480
+ noScope: true,
481
+ });
482
+ return ms.toString();
483
+ }
484
+ }
485
+ catch (_a) {
486
+ return match;
487
+ }
488
+ }
489
+ function extract(original, reg) {
490
+ let match = reg.exec(original);
491
+ const sources = [];
492
+ while (match !== null) {
493
+ const start = match.index;
494
+ const end = reg.lastIndex;
495
+ sources.push({
496
+ start,
497
+ end,
498
+ raw: match[1],
499
+ });
500
+ match = reg.exec(original);
501
+ }
502
+ return sources;
503
+ }
504
+ function extractSource(original) {
505
+ return extract(original, regex.variableRegExp);
506
+ }
507
+ function handleEachClassFragment(original, options = {}) {
508
+ const sources = extractSource(original);
509
+ if (sources.length > 0) {
510
+ const resultArray = [];
511
+ let p = 0;
512
+ for (let i = 0; i < sources.length; i++) {
513
+ const m = sources[i];
514
+ const before = original.slice(p, m.start);
515
+ resultArray.push(replace.replaceJs(before, {
516
+ keepEOL: true,
517
+ escapeMap: options.escapeMap,
518
+ mangleContext: options.mangleContext,
519
+ ignoreHead: p > 0,
520
+ }));
521
+ p = m.start;
522
+ if (m.raw.trim().length > 0) {
523
+ const code = generateCode(m.raw, options);
524
+ const source = `{{${code}}}`;
525
+ m.source = source;
526
+ }
527
+ else {
528
+ m.source = '';
529
+ }
530
+ resultArray.push(m.source);
531
+ p = m.end;
532
+ if (i === sources.length - 1) {
533
+ const after = original.slice(m.end);
534
+ resultArray.push(replace.replaceJs(after, {
535
+ keepEOL: true,
536
+ escapeMap: options.escapeMap,
537
+ mangleContext: options.mangleContext,
538
+ ignoreHead: true,
539
+ }));
540
+ }
541
+ }
542
+ return resultArray.filter(Boolean).join('').trim();
543
+ }
544
+ else {
545
+ return replace.replaceJs(original, {
546
+ keepEOL: false,
547
+ escapeMap: options.escapeMap,
548
+ mangleContext: options.mangleContext,
549
+ ignoreHead: false,
550
+ });
551
+ }
552
+ }
553
+ function templateReplacer(original, options = {}) {
554
+ const ms = new MagicString__default["default"](original);
555
+ const tokenizer = new Tokenizer();
556
+ const tokens = tokenizer.run(ms.original);
557
+ for (const token of tokens) {
558
+ const target = handleEachClassFragment(token.value, options);
559
+ ms.update(token.start, token.end, target);
560
+ }
561
+ return ms.toString();
562
+ }
563
+ function regTest(reg, str) {
564
+ reg.lastIndex = 0;
565
+ return reg.test(str);
566
+ }
567
+ function isPropsMatch(props, attr) {
568
+ if (Array.isArray(props)) {
569
+ for (const prop of props) {
570
+ const res = typeof prop === 'string' ? prop.toLowerCase() === attr.toLowerCase() : regTest(prop, attr);
571
+ if (res) {
572
+ return res;
573
+ }
574
+ }
575
+ return false;
576
+ }
577
+ else if (typeof props === 'string') {
578
+ return props === attr;
579
+ }
580
+ else {
581
+ return regTest(props, attr);
582
+ }
583
+ }
584
+ function customTemplateHandler(rawSource, options) {
585
+ return __awaiter(this, void 0, void 0, function* () {
586
+ const { customAttributesEntities = [], disabledDefaultTemplateHandler, inlineWxs, runtimeSet, jsHandler, } = options !== null && options !== void 0 ? options : {};
587
+ const s = new MagicString__default["default"](rawSource);
588
+ let tag = '';
589
+ const wxsArray = [];
590
+ const parser = new htmlparser2.Parser({
591
+ onopentagname(name) {
592
+ tag = name;
593
+ },
594
+ onattribute(name, value, quote) {
595
+ if (value) {
596
+ function update() {
597
+ s.update(parser.startIndex + name.length + 2, parser.endIndex - 1, templateReplacer(value, Object.assign(Object.assign({}, options), { quote })));
598
+ }
599
+ if (!disabledDefaultTemplateHandler
600
+ && (name === 'class' || name === 'hover-class' || name === 'virtualHostClass' || name === 'virtualhostclass')) {
601
+ update();
602
+ }
603
+ for (const [t, props] of customAttributesEntities) {
604
+ if (t === '*') {
605
+ if (isPropsMatch(props, name)) {
606
+ update();
607
+ }
608
+ }
609
+ else if (typeof t === 'string') {
610
+ if (t === tag && isPropsMatch(props, name)) {
611
+ update();
612
+ }
613
+ }
614
+ else if (regTest(t, tag) && isPropsMatch(props, name)) {
615
+ update();
616
+ }
617
+ }
618
+ }
619
+ },
620
+ ontext(data) {
621
+ if (inlineWxs && tag === 'wxs') {
622
+ wxsArray.push({
623
+ data,
624
+ endIndex: parser.endIndex + 1,
625
+ startIndex: parser.startIndex,
626
+ });
627
+ }
628
+ },
629
+ onclosetag() {
630
+ tag = '';
631
+ },
632
+ }, {
633
+ xmlMode: true,
634
+ });
635
+ parser.write(s.original);
636
+ parser.end();
637
+ for (const { data, endIndex, startIndex } of wxsArray) {
638
+ const { code } = yield jsHandler(data, runtimeSet);
639
+ s.update(startIndex, endIndex, code);
640
+ }
641
+ return s.toString();
642
+ });
643
+ }
644
+ function createTemplateHandler(options = {}) {
645
+ return (rawSource, opt = {}) => {
646
+ return customTemplateHandler(rawSource, defaults.defuOverrideArray(opt, options));
647
+ };
648
+ }
649
+
650
+ function styleHandler(rawSource, options) {
651
+ return __awaiter(this, void 0, void 0, function* () {
652
+ var _a, _b;
653
+ return (yield postcss__default["default"](index.getPlugins(options))
654
+ .process(rawSource, (_b = (_a = options.postcssOptions) === null || _a === void 0 ? void 0 : _a.options) !== null && _b !== void 0 ? _b : {
655
+ from: undefined,
656
+ })
657
+ .async()).css;
658
+ });
659
+ }
660
+ function createStyleHandler(options) {
661
+ return (rawSource, opt) => {
662
+ return styleHandler(rawSource, defaults.defuOverrideArray(opt, options));
663
+ };
664
+ }
665
+
666
+ function createInjectPreflight(options) {
667
+ const result = [];
668
+ if (options && typeof options === 'object') {
669
+ const entries = Object.entries(options);
670
+ for (const [prop, value] of entries) {
671
+ if (value !== false) {
672
+ result.push({
673
+ prop,
674
+ value: value.toString(),
675
+ });
676
+ }
677
+ }
678
+ }
679
+ return () => {
680
+ return result;
681
+ };
682
+ }
683
+
684
+ function createTailwindcssPatcher(basedir, cacheDir, supportCustomLengthUnitsPatch) {
685
+ const cache = {};
686
+ if (cacheDir) {
687
+ if (path__default["default"].isAbsolute(cacheDir)) {
688
+ cache.dir = cacheDir;
689
+ }
690
+ else if (basedir) {
691
+ cache.dir = path__default["default"].resolve(basedir, cacheDir);
692
+ }
693
+ else {
694
+ cache.dir = path__default["default"].resolve(process__default["default"].cwd(), cacheDir);
695
+ }
696
+ }
697
+ return new tailwindcssPatch.TailwindcssPatcher({
698
+ cache,
699
+ patch: {
700
+ basedir,
701
+ applyPatches: {
702
+ exportContext: true,
703
+ extendLengthUnits: supportCustomLengthUnitsPatch,
704
+ },
705
+ },
706
+ });
707
+ }
708
+
709
+ function getSelf(x) {
710
+ return x;
711
+ }
712
+ const defaultMangleContext = {
713
+ rawOptions: false,
714
+ runtimeSet: new Set(),
715
+ classGenerator: new shared.ClassGenerator(),
716
+ filter: shared.defaultMangleClassFilter,
717
+ cssHandler: getSelf,
718
+ jsHandler: getSelf,
719
+ wxmlHandler: getSelf,
720
+ };
721
+ function useMangleStore() {
722
+ const ctx = Object.assign({}, defaultMangleContext);
723
+ function resetMangle() {
724
+ return Object.assign(ctx, defaultMangleContext);
725
+ }
726
+ function handleValue(rawSource) {
727
+ const arr = splitCode(rawSource);
728
+ for (const x of arr) {
729
+ if (ctx.runtimeSet.has(x)) {
730
+ rawSource = rawSource.replace(new RegExp(regex.escapeStringRegexp(x)), ctx.classGenerator.generateClassName(x).name);
731
+ }
732
+ }
733
+ return rawSource;
734
+ }
735
+ function initMangle(options) {
736
+ var _a;
737
+ ctx.rawOptions = options;
738
+ if (options) {
739
+ if (options === true) {
740
+ options = {
741
+ classGenerator: {},
742
+ mangleClassFilter: shared.defaultMangleClassFilter,
743
+ };
744
+ }
745
+ ctx.classGenerator = new shared.ClassGenerator(options.classGenerator);
746
+ ctx.filter = (_a = options.mangleClassFilter) !== null && _a !== void 0 ? _a : shared.defaultMangleClassFilter;
747
+ ctx.jsHandler = (rawSource) => {
748
+ return handleValue(rawSource);
749
+ };
750
+ ctx.cssHandler = (rawSource) => {
751
+ return handleValue(rawSource);
752
+ };
753
+ ctx.wxmlHandler = (rawSource) => {
754
+ return handleValue(rawSource);
755
+ };
756
+ }
757
+ }
758
+ function setMangleRuntimeSet(runtimeSet) {
759
+ const newSet = new Set();
760
+ for (const c of runtimeSet) {
761
+ if (ctx.filter(c)) {
762
+ newSet.add(c);
763
+ }
764
+ }
765
+ ctx.runtimeSet = newSet;
766
+ }
767
+ return {
768
+ mangleContext: ctx,
769
+ resetMangle,
770
+ initMangle,
771
+ setMangleRuntimeSet,
772
+ };
773
+ }
774
+
775
+ function createCache(options) {
776
+ const disabled = options === false;
777
+ const hashMap = new Map();
778
+ const instance = new lruCache.LRUCache({
779
+ max: 1024,
780
+ ttl: 0,
781
+ ttlAutopurge: false,
782
+ });
783
+ return {
784
+ hashMap,
785
+ instance,
786
+ hasHashKey(key) {
787
+ return hashMap.has(key);
788
+ },
789
+ getHashValue(key) {
790
+ return hashMap.get(key);
791
+ },
792
+ setHashValue(key, value) {
793
+ return hashMap.set(key, value);
794
+ },
795
+ get(key) {
796
+ return instance.get(key);
797
+ },
798
+ set(key, value) {
799
+ return instance.set(key, value);
800
+ },
801
+ computeHash(message) {
802
+ return md5__default["default"](message);
803
+ },
804
+ calcHashValueChanged(key, hash) {
805
+ const hit = this.getHashValue(key);
806
+ if (hit) {
807
+ this.setHashValue(key, {
808
+ changed: hash !== hit.hash,
809
+ hash,
810
+ });
811
+ }
812
+ else {
813
+ this.setHashValue(key, {
814
+ changed: true,
815
+ hash,
816
+ });
817
+ }
818
+ return this;
819
+ },
820
+ has(key) {
821
+ return instance.has(key);
822
+ },
823
+ process(key, callback, fallback) {
824
+ return __awaiter(this, void 0, void 0, function* () {
825
+ if (disabled) {
826
+ const res = yield fallback();
827
+ if (res) {
828
+ this.set(res.key, res.source);
829
+ }
830
+ }
831
+ else {
832
+ const hit = this.getHashValue(key);
833
+ if (hit && !hit.changed) {
834
+ const returnFlag = yield callback();
835
+ if (returnFlag !== false) {
836
+ return;
837
+ }
838
+ }
839
+ const res = yield fallback();
840
+ if (res) {
841
+ this.set(res.key, res.source);
842
+ }
843
+ }
844
+ });
845
+ },
846
+ };
847
+ }
848
+
849
+ function getOptions(opts) {
850
+ const result = defaults.defuOverrideArray(opts, defaults.defaultOptions, {});
851
+ result.escapeMap = result.customReplaceDictionary;
852
+ const { cssPreflight, customRuleCallback, cssPreflightRange, customAttributes, supportCustomLengthUnitsPatch, arbitraryValues, cssChildCombinatorReplaceValue, inlineWxs, injectAdditionalCssVarScope, jsPreserveClass, disabledDefaultTemplateHandler, cssSelectorReplacement, rem2rpx, cache, jsAstTool, babelParserOptions, postcssOptions, cssRemoveHoverPseudoClass, escapeMap, mangle, tailwindcssBasedir, appType, } = result;
853
+ const cssInjectPreflight = createInjectPreflight(cssPreflight);
854
+ const customAttributesEntities = defaults.isMap(customAttributes)
855
+ ? [...customAttributes.entries()]
856
+ : Object.entries(customAttributes);
857
+ const { initMangle, mangleContext, setMangleRuntimeSet } = useMangleStore();
858
+ initMangle(mangle);
859
+ const styleHandler = createStyleHandler({
860
+ cssInjectPreflight,
861
+ customRuleCallback,
862
+ cssPreflightRange,
863
+ escapeMap,
864
+ mangleContext,
865
+ cssChildCombinatorReplaceValue,
866
+ injectAdditionalCssVarScope,
867
+ cssSelectorReplacement,
868
+ rem2rpx,
869
+ postcssOptions,
870
+ cssRemoveHoverPseudoClass,
871
+ });
872
+ const jsHandler = createJsHandler({
873
+ escapeMap,
874
+ mangleContext,
875
+ arbitraryValues,
876
+ jsPreserveClass,
877
+ generateMap: true,
878
+ jsAstTool,
879
+ babelParserOptions,
880
+ });
881
+ const templateHandler = createTemplateHandler({
882
+ customAttributesEntities,
883
+ escapeMap,
884
+ mangleContext,
885
+ inlineWxs,
886
+ jsHandler,
887
+ disabledDefaultTemplateHandler,
888
+ });
889
+ result.styleHandler = styleHandler;
890
+ result.jsHandler = jsHandler;
891
+ result.templateHandler = templateHandler;
892
+ const twPatcher = createTailwindcssPatcher(tailwindcssBasedir, appType === 'mpx' ? 'node_modules/tailwindcss-patch/.cache' : undefined, supportCustomLengthUnitsPatch !== null && supportCustomLengthUnitsPatch !== void 0 ? supportCustomLengthUnitsPatch : true);
893
+ result.patch = twPatcher.patch;
894
+ result.setMangleRuntimeSet = setMangleRuntimeSet;
895
+ result.cache = cache === undefined || typeof cache === 'boolean' ? createCache(cache) : cache;
896
+ result.twPatcher = twPatcher;
897
+ return result;
898
+ }
899
+
900
+ exports.__awaiter = __awaiter;
901
+ exports.getOptions = getOptions;