wxt 0.18.6 → 0.18.8
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/{chunk-5X3S6AWF.js → chunk-BERPNPEZ.js} +2 -4
- package/dist/{chunk-ZZCTFNQ5.js → chunk-BM6QYGAW.js} +1 -1
- package/dist/{chunk-NAMV4VWQ.js → chunk-KPD5J7PZ.js} +1 -1
- package/dist/{chunk-VBXJIVYU.js → chunk-QGM4M3NI.js} +1 -2
- package/dist/{chunk-73I7FAJU.js → chunk-SGKCDMVR.js} +1 -2
- package/dist/{chunk-QOYT5J6A.js → chunk-Z3C7S5VV.js} +117 -182
- package/dist/cli.js +139 -220
- package/dist/client.js +12 -24
- package/dist/{execa-QQUOQNS3.js → execa-ATHZH2Y4.js} +1576 -610
- package/dist/{execa-5TSWMF32.js → execa-D7CMCKO2.js} +1576 -610
- package/dist/index.cjs +2182 -1180
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +24 -38
- package/dist/modules.cjs +8 -12
- package/dist/modules.js +9 -13
- package/dist/{prompt-Y7B5HSD5.js → prompt-25QIVJDC.js} +28 -55
- package/dist/{prompt-TFJ7OLL7.js → prompt-7BMKNSWS.js} +28 -55
- package/dist/sandbox.js +2 -4
- package/dist/storage.cjs +4 -8
- package/dist/storage.js +6 -10
- package/dist/testing.cjs +35 -69
- package/dist/testing.js +4 -4
- package/dist/virtual/background-entrypoint.js +46 -36
- package/dist/virtual/content-script-isolated-world-entrypoint.js +1 -2
- package/dist/virtual/content-script-main-world-entrypoint.js +1 -2
- package/dist/virtual/reload-html.js +38 -31
- package/dist/virtual/unlisted-script-entrypoint.js +1 -2
- package/package.json +33 -32
package/dist/index.d.cts
CHANGED
|
@@ -65,6 +65,6 @@ declare function prepare(config: InlineConfig): Promise<void>;
|
|
|
65
65
|
*/
|
|
66
66
|
declare function zip(config?: InlineConfig): Promise<string[]>;
|
|
67
67
|
|
|
68
|
-
var version = "0.18.
|
|
68
|
+
var version = "0.18.7";
|
|
69
69
|
|
|
70
70
|
export { BuildOutput, ExtensionRunnerConfig, InlineConfig, UserConfig, WxtDevServer, build, clean, createServer, defineConfig, defineRunnerConfig, initialize, prepare, version, zip };
|
package/dist/index.d.ts
CHANGED
|
@@ -65,6 +65,6 @@ declare function prepare(config: InlineConfig): Promise<void>;
|
|
|
65
65
|
*/
|
|
66
66
|
declare function zip(config?: InlineConfig): Promise<string[]>;
|
|
67
67
|
|
|
68
|
-
var version = "0.18.
|
|
68
|
+
var version = "0.18.7";
|
|
69
69
|
|
|
70
70
|
export { BuildOutput, ExtensionRunnerConfig, InlineConfig, UserConfig, WxtDevServer, build, clean, createServer, defineConfig, defineRunnerConfig, initialize, prepare, version, zip };
|
package/dist/index.js
CHANGED
|
@@ -19,12 +19,12 @@ import {
|
|
|
19
19
|
unnormalizePath,
|
|
20
20
|
version,
|
|
21
21
|
wxt
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-Z3C7S5VV.js";
|
|
23
|
+
import "./chunk-BERPNPEZ.js";
|
|
24
24
|
import {
|
|
25
25
|
consola
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-BM6QYGAW.js";
|
|
27
|
+
import "./chunk-QGM4M3NI.js";
|
|
28
28
|
|
|
29
29
|
// src/core/build.ts
|
|
30
30
|
async function build(config) {
|
|
@@ -107,10 +107,8 @@ function createWebExtRunner() {
|
|
|
107
107
|
}
|
|
108
108
|
const webExtLogger = await import("web-ext-run/util/logger");
|
|
109
109
|
webExtLogger.consoleStream.write = ({ level, msg, name }) => {
|
|
110
|
-
if (level >= ERROR_LOG_LEVEL)
|
|
111
|
-
|
|
112
|
-
if (level >= WARN_LOG_LEVEL)
|
|
113
|
-
wxt.logger.warn(msg);
|
|
110
|
+
if (level >= ERROR_LOG_LEVEL) wxt.logger.error(name, msg);
|
|
111
|
+
if (level >= WARN_LOG_LEVEL) wxt.logger.warn(msg);
|
|
114
112
|
};
|
|
115
113
|
const wxtUserConfig = wxt.config.runnerConfig.config;
|
|
116
114
|
const userConfig = {
|
|
@@ -212,12 +210,9 @@ async function isWsl() {
|
|
|
212
210
|
|
|
213
211
|
// src/core/runners/index.ts
|
|
214
212
|
async function createExtensionRunner() {
|
|
215
|
-
if (wxt.config.browser === "safari")
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
return createWslRunner();
|
|
219
|
-
if (wxt.config.runnerConfig.config?.disabled)
|
|
220
|
-
return createManualRunner();
|
|
213
|
+
if (wxt.config.browser === "safari") return createSafariRunner();
|
|
214
|
+
if (await isWsl()) return createWslRunner();
|
|
215
|
+
if (wxt.config.runnerConfig.config?.disabled) return createManualRunner();
|
|
221
216
|
return createWebExtRunner();
|
|
222
217
|
}
|
|
223
218
|
|
|
@@ -294,8 +289,7 @@ async function createServer(inlineConfig) {
|
|
|
294
289
|
runner = await createExtensionRunner();
|
|
295
290
|
};
|
|
296
291
|
server.ws.on("wxt:background-initialized", () => {
|
|
297
|
-
if (server.currentOutput == null)
|
|
298
|
-
return;
|
|
292
|
+
if (server.currentOutput == null) return;
|
|
299
293
|
reloadContentScripts(server.currentOutput.steps, server);
|
|
300
294
|
});
|
|
301
295
|
const reloadOnChange = createFileReloader(server);
|
|
@@ -307,18 +301,15 @@ function createFileReloader(server) {
|
|
|
307
301
|
const changeQueue = [];
|
|
308
302
|
return async (event, path4) => {
|
|
309
303
|
await wxt.reloadConfig();
|
|
310
|
-
if (path4.startsWith(wxt.config.outBaseDir))
|
|
311
|
-
|
|
304
|
+
if (path4.startsWith(wxt.config.outBaseDir)) return;
|
|
305
|
+
if (path4.startsWith(wxt.config.wxtDir)) return;
|
|
312
306
|
changeQueue.push([event, path4]);
|
|
313
307
|
await fileChangedMutex.runExclusive(async () => {
|
|
314
|
-
if (server.currentOutput == null)
|
|
315
|
-
return;
|
|
308
|
+
if (server.currentOutput == null) return;
|
|
316
309
|
const fileChanges = changeQueue.splice(0, changeQueue.length).map(([_, file]) => file);
|
|
317
|
-
if (fileChanges.length === 0)
|
|
318
|
-
return;
|
|
310
|
+
if (fileChanges.length === 0) return;
|
|
319
311
|
const changes = detectDevChanges(fileChanges, server.currentOutput);
|
|
320
|
-
if (changes.type === "no-change")
|
|
321
|
-
return;
|
|
312
|
+
if (changes.type === "no-change") return;
|
|
322
313
|
if (changes.type === "full-restart") {
|
|
323
314
|
wxt.logger.info("Config changed, restarting server...");
|
|
324
315
|
server.restart();
|
|
@@ -367,11 +358,9 @@ function createFileReloader(server) {
|
|
|
367
358
|
function reloadContentScripts(steps, server) {
|
|
368
359
|
if (wxt.config.manifestVersion === 3) {
|
|
369
360
|
steps.forEach((step) => {
|
|
370
|
-
if (server.currentOutput == null)
|
|
371
|
-
return;
|
|
361
|
+
if (server.currentOutput == null) return;
|
|
372
362
|
const entry = step.entrypoints;
|
|
373
|
-
if (Array.isArray(entry) || entry.type !== "content-script")
|
|
374
|
-
return;
|
|
363
|
+
if (Array.isArray(entry) || entry.type !== "content-script") return;
|
|
375
364
|
const js = getContentScriptJs(wxt.config, entry);
|
|
376
365
|
const cssMap = getContentScriptsCssMap(server.currentOutput, [entry]);
|
|
377
366
|
const css = getContentScriptCssFiles([entry], cssMap);
|
|
@@ -409,8 +398,7 @@ function getExternalOutputDependencies(server) {
|
|
|
409
398
|
return [];
|
|
410
399
|
}
|
|
411
400
|
return step.chunks.flatMap((chunk) => {
|
|
412
|
-
if (chunk.type === "asset")
|
|
413
|
-
return [];
|
|
401
|
+
if (chunk.type === "asset") return [];
|
|
414
402
|
return chunk.moduleIds;
|
|
415
403
|
});
|
|
416
404
|
}).filter(
|
|
@@ -488,8 +476,7 @@ async function initialize(options) {
|
|
|
488
476
|
console.log();
|
|
489
477
|
consola.log("Next steps:");
|
|
490
478
|
let step = 0;
|
|
491
|
-
if (cdPath !== "")
|
|
492
|
-
consola.log(` ${++step}.`, pc3.cyan(`cd ${cdPath}`));
|
|
479
|
+
if (cdPath !== "") consola.log(` ${++step}.`, pc3.cyan(`cd ${cdPath}`));
|
|
493
480
|
consola.log(` ${++step}.`, pc3.cyan(`${input.packageManager} install`));
|
|
494
481
|
console.log();
|
|
495
482
|
}
|
|
@@ -503,8 +490,7 @@ async function listTemplates() {
|
|
|
503
490
|
const lWeight = TEMPLATE_SORT_WEIGHT[l.name] ?? Number.MAX_SAFE_INTEGER;
|
|
504
491
|
const rWeight = TEMPLATE_SORT_WEIGHT[r.name] ?? Number.MAX_SAFE_INTEGER;
|
|
505
492
|
const diff = lWeight - rWeight;
|
|
506
|
-
if (diff !== 0)
|
|
507
|
-
return diff;
|
|
493
|
+
if (diff !== 0) return diff;
|
|
508
494
|
return l.name.localeCompare(r.name);
|
|
509
495
|
});
|
|
510
496
|
} catch (err) {
|
|
@@ -614,8 +600,9 @@ async function zipDir(directory, outputPath, options) {
|
|
|
614
600
|
cwd: directory,
|
|
615
601
|
// Ignore node_modules, otherwise this glob step takes forever
|
|
616
602
|
ignore: ["**/node_modules"],
|
|
617
|
-
onlyFiles: true
|
|
618
|
-
|
|
603
|
+
onlyFiles: true
|
|
604
|
+
// TODO: Fix #738
|
|
605
|
+
// dot: true,
|
|
619
606
|
})).filter((relativePath) => {
|
|
620
607
|
return options?.include?.some((pattern) => minimatch(relativePath, pattern)) || !options?.exclude?.some((pattern) => minimatch(relativePath, pattern));
|
|
621
608
|
});
|
|
@@ -674,8 +661,7 @@ async function downloadPrivatePackages() {
|
|
|
674
661
|
return { overrides, files };
|
|
675
662
|
}
|
|
676
663
|
function addOverridesToPackageJson(absolutePackageJsonPath, content, overrides) {
|
|
677
|
-
if (Object.keys(overrides).length === 0)
|
|
678
|
-
return content;
|
|
664
|
+
if (Object.keys(overrides).length === 0) return content;
|
|
679
665
|
const packageJsonDir = path3.dirname(absolutePackageJsonPath);
|
|
680
666
|
const oldPackage = JSON.parse(content);
|
|
681
667
|
const newPackage = {
|
package/dist/modules.cjs
CHANGED
|
@@ -42,8 +42,7 @@ var vite = __toESM(require("vite"), 1);
|
|
|
42
42
|
var import_fast_glob = __toESM(require("fast-glob"), 1);
|
|
43
43
|
var import_node_path = require("path");
|
|
44
44
|
function defineWxtModule(module2) {
|
|
45
|
-
if (typeof module2 === "function")
|
|
46
|
-
return { setup: module2 };
|
|
45
|
+
if (typeof module2 === "function") return { setup: module2 };
|
|
47
46
|
return module2;
|
|
48
47
|
}
|
|
49
48
|
function addEntrypoint(wxt, entrypoint) {
|
|
@@ -66,12 +65,11 @@ function addPublicAssets(wxt, dir) {
|
|
|
66
65
|
function addViteConfig(wxt, viteConfig) {
|
|
67
66
|
wxt.hooks.hook("ready", (wxt2) => {
|
|
68
67
|
const userVite = wxt2.config.vite;
|
|
69
|
-
wxt2.config.vite = (env) =>
|
|
70
|
-
|
|
71
|
-
viteConfig(env) ?? {}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
);
|
|
68
|
+
wxt2.config.vite = async (env) => {
|
|
69
|
+
const fromUser = await userVite(env);
|
|
70
|
+
const fromModule = viteConfig(env) ?? {};
|
|
71
|
+
return vite.mergeConfig(fromModule, fromUser);
|
|
72
|
+
};
|
|
75
73
|
});
|
|
76
74
|
}
|
|
77
75
|
function addWxtPlugin(wxt, plugin) {
|
|
@@ -81,11 +79,9 @@ function addWxtPlugin(wxt, plugin) {
|
|
|
81
79
|
}
|
|
82
80
|
function addImportPreset(wxt, preset) {
|
|
83
81
|
wxt.hooks.hook("ready", (wxt2) => {
|
|
84
|
-
if (!wxt2.config.imports)
|
|
85
|
-
return;
|
|
82
|
+
if (!wxt2.config.imports) return;
|
|
86
83
|
wxt2.config.imports.presets ??= [];
|
|
87
|
-
if (wxt2.config.imports.presets.includes(preset))
|
|
88
|
-
return;
|
|
84
|
+
if (wxt2.config.imports.presets.includes(preset)) return;
|
|
89
85
|
wxt2.config.imports.presets.push(preset);
|
|
90
86
|
});
|
|
91
87
|
}
|
package/dist/modules.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-QGM4M3NI.js";
|
|
2
2
|
|
|
3
3
|
// src/modules.ts
|
|
4
4
|
import * as vite from "vite";
|
|
5
5
|
import glob from "fast-glob";
|
|
6
6
|
import { resolve } from "node:path";
|
|
7
7
|
function defineWxtModule(module) {
|
|
8
|
-
if (typeof module === "function")
|
|
9
|
-
return { setup: module };
|
|
8
|
+
if (typeof module === "function") return { setup: module };
|
|
10
9
|
return module;
|
|
11
10
|
}
|
|
12
11
|
function addEntrypoint(wxt, entrypoint) {
|
|
@@ -29,12 +28,11 @@ function addPublicAssets(wxt, dir) {
|
|
|
29
28
|
function addViteConfig(wxt, viteConfig) {
|
|
30
29
|
wxt.hooks.hook("ready", (wxt2) => {
|
|
31
30
|
const userVite = wxt2.config.vite;
|
|
32
|
-
wxt2.config.vite = (env) =>
|
|
33
|
-
|
|
34
|
-
viteConfig(env) ?? {}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
);
|
|
31
|
+
wxt2.config.vite = async (env) => {
|
|
32
|
+
const fromUser = await userVite(env);
|
|
33
|
+
const fromModule = viteConfig(env) ?? {};
|
|
34
|
+
return vite.mergeConfig(fromModule, fromUser);
|
|
35
|
+
};
|
|
38
36
|
});
|
|
39
37
|
}
|
|
40
38
|
function addWxtPlugin(wxt, plugin) {
|
|
@@ -44,11 +42,9 @@ function addWxtPlugin(wxt, plugin) {
|
|
|
44
42
|
}
|
|
45
43
|
function addImportPreset(wxt, preset) {
|
|
46
44
|
wxt.hooks.hook("ready", (wxt2) => {
|
|
47
|
-
if (!wxt2.config.imports)
|
|
48
|
-
return;
|
|
45
|
+
if (!wxt2.config.imports) return;
|
|
49
46
|
wxt2.config.imports.presets ??= [];
|
|
50
|
-
if (wxt2.config.imports.presets.includes(preset))
|
|
51
|
-
return;
|
|
47
|
+
if (wxt2.config.imports.presets.includes(preset)) return;
|
|
52
48
|
wxt2.config.imports.presets.push(preset);
|
|
53
49
|
});
|
|
54
50
|
}
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
colors,
|
|
4
4
|
getDefaultExportFromCjs,
|
|
5
5
|
isUnicodeSupported
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-KPD5J7PZ.js";
|
|
7
|
+
import "./chunk-SGKCDMVR.js";
|
|
8
8
|
|
|
9
9
|
// ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/chunks/prompt.mjs
|
|
10
10
|
import { stdin, stdout } from "node:process";
|
|
@@ -16,20 +16,15 @@ var CSI = `${ESC}[`;
|
|
|
16
16
|
var beep = "\x07";
|
|
17
17
|
var cursor = {
|
|
18
18
|
to(x, y) {
|
|
19
|
-
if (!y)
|
|
20
|
-
return `${CSI}${x + 1}G`;
|
|
19
|
+
if (!y) return `${CSI}${x + 1}G`;
|
|
21
20
|
return `${CSI}${y + 1};${x + 1}H`;
|
|
22
21
|
},
|
|
23
22
|
move(x, y) {
|
|
24
23
|
let ret = "";
|
|
25
|
-
if (x < 0)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (y < 0)
|
|
30
|
-
ret += `${CSI}${-y}A`;
|
|
31
|
-
else if (y > 0)
|
|
32
|
-
ret += `${CSI}${y}B`;
|
|
24
|
+
if (x < 0) ret += `${CSI}${-x}D`;
|
|
25
|
+
else if (x > 0) ret += `${CSI}${x}C`;
|
|
26
|
+
if (y < 0) ret += `${CSI}${-y}A`;
|
|
27
|
+
else if (y > 0) ret += `${CSI}${y}B`;
|
|
33
28
|
return ret;
|
|
34
29
|
},
|
|
35
30
|
up: (count = 1) => `${CSI}${count}A`,
|
|
@@ -116,8 +111,7 @@ function z({ onlyFirst: t = false } = {}) {
|
|
|
116
111
|
return new RegExp(u, t ? void 0 : "g");
|
|
117
112
|
}
|
|
118
113
|
function $(t) {
|
|
119
|
-
if (typeof t != "string")
|
|
120
|
-
throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);
|
|
114
|
+
if (typeof t != "string") throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);
|
|
121
115
|
return t.replace(z(), "");
|
|
122
116
|
}
|
|
123
117
|
var m = {};
|
|
@@ -139,18 +133,14 @@ var G = { get exports() {
|
|
|
139
133
|
return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
|
|
140
134
|
}
|
|
141
135
|
u.length = function(e) {
|
|
142
|
-
for (var s2 = F(e), C = 0, D = 0; D < s2.length; D++)
|
|
143
|
-
C = C + this.characterLength(s2[D]);
|
|
136
|
+
for (var s2 = F(e), C = 0, D = 0; D < s2.length; D++) C = C + this.characterLength(s2[D]);
|
|
144
137
|
return C;
|
|
145
138
|
}, u.slice = function(e, s2, C) {
|
|
146
139
|
textLen = u.length(e), s2 = s2 || 0, C = C || 1, s2 < 0 && (s2 = textLen + s2), C < 0 && (C = textLen + C);
|
|
147
140
|
for (var D = "", i = 0, o = F(e), E = 0; E < o.length; E++) {
|
|
148
141
|
var a = o[E], n = u.length(a);
|
|
149
|
-
if (i >= s2 - (n == 2 ? 1 : 0))
|
|
150
|
-
|
|
151
|
-
D += a;
|
|
152
|
-
else
|
|
153
|
-
break;
|
|
142
|
+
if (i >= s2 - (n == 2 ? 1 : 0)) if (i + n <= C) D += a;
|
|
143
|
+
else break;
|
|
154
144
|
i += n;
|
|
155
145
|
}
|
|
156
146
|
return D;
|
|
@@ -161,15 +151,13 @@ var Y = function() {
|
|
|
161
151
|
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
|
|
162
152
|
};
|
|
163
153
|
function c(t, u = {}) {
|
|
164
|
-
if (typeof t != "string" || t.length === 0 || (u = { ambiguousIsNarrow: true, ...u }, t = $(t), t.length === 0))
|
|
165
|
-
return 0;
|
|
154
|
+
if (typeof t != "string" || t.length === 0 || (u = { ambiguousIsNarrow: true, ...u }, t = $(t), t.length === 0)) return 0;
|
|
166
155
|
t = t.replace(Y(), " ");
|
|
167
156
|
const F = u.ambiguousIsNarrow ? 1 : 2;
|
|
168
157
|
let e = 0;
|
|
169
158
|
for (const s2 of t) {
|
|
170
159
|
const C = s2.codePointAt(0);
|
|
171
|
-
if (C <= 31 || C >= 127 && C <= 159 || C >= 768 && C <= 879)
|
|
172
|
-
continue;
|
|
160
|
+
if (C <= 31 || C >= 127 && C <= 159 || C >= 768 && C <= 879) continue;
|
|
173
161
|
switch (K.eastAsianWidth(s2)) {
|
|
174
162
|
case "F":
|
|
175
163
|
case "W":
|
|
@@ -196,34 +184,28 @@ var H = Object.keys(r.bgColor);
|
|
|
196
184
|
function U() {
|
|
197
185
|
const t = /* @__PURE__ */ new Map();
|
|
198
186
|
for (const [u, F] of Object.entries(r)) {
|
|
199
|
-
for (const [e, s2] of Object.entries(F))
|
|
200
|
-
r[e] = { open: `\x1B[${s2[0]}m`, close: `\x1B[${s2[1]}m` }, F[e] = r[e], t.set(s2[0], s2[1]);
|
|
187
|
+
for (const [e, s2] of Object.entries(F)) r[e] = { open: `\x1B[${s2[0]}m`, close: `\x1B[${s2[1]}m` }, F[e] = r[e], t.set(s2[0], s2[1]);
|
|
201
188
|
Object.defineProperty(r, u, { value: F, enumerable: false });
|
|
202
189
|
}
|
|
203
190
|
return Object.defineProperty(r, "codes", { value: t, enumerable: false }), r.color.close = "\x1B[39m", r.bgColor.close = "\x1B[49m", r.color.ansi = L(), r.color.ansi256 = M(), r.color.ansi16m = T(), r.bgColor.ansi = L(v), r.bgColor.ansi256 = M(v), r.bgColor.ansi16m = T(v), Object.defineProperties(r, { rgbToAnsi256: { value: (u, F, e) => u === F && F === e ? u < 8 ? 16 : u > 248 ? 231 : Math.round((u - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(u / 255 * 5) + 6 * Math.round(F / 255 * 5) + Math.round(e / 255 * 5), enumerable: false }, hexToRgb: { value: (u) => {
|
|
204
191
|
const F = /[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));
|
|
205
|
-
if (!F)
|
|
206
|
-
return [0, 0, 0];
|
|
192
|
+
if (!F) return [0, 0, 0];
|
|
207
193
|
let [e] = F;
|
|
208
194
|
e.length === 3 && (e = [...e].map((C) => C + C).join(""));
|
|
209
195
|
const s2 = Number.parseInt(e, 16);
|
|
210
196
|
return [s2 >> 16 & 255, s2 >> 8 & 255, s2 & 255];
|
|
211
197
|
}, enumerable: false }, hexToAnsi256: { value: (u) => r.rgbToAnsi256(...r.hexToRgb(u)), enumerable: false }, ansi256ToAnsi: { value: (u) => {
|
|
212
|
-
if (u < 8)
|
|
213
|
-
|
|
214
|
-
if (u < 16)
|
|
215
|
-
return 90 + (u - 8);
|
|
198
|
+
if (u < 8) return 30 + u;
|
|
199
|
+
if (u < 16) return 90 + (u - 8);
|
|
216
200
|
let F, e, s2;
|
|
217
|
-
if (u >= 232)
|
|
218
|
-
F = ((u - 232) * 10 + 8) / 255, e = F, s2 = F;
|
|
201
|
+
if (u >= 232) F = ((u - 232) * 10 + 8) / 255, e = F, s2 = F;
|
|
219
202
|
else {
|
|
220
203
|
u -= 16;
|
|
221
204
|
const i = u % 36;
|
|
222
205
|
F = Math.floor(u / 36) / 5, e = Math.floor(i / 6) / 5, s2 = i % 6 / 5;
|
|
223
206
|
}
|
|
224
207
|
const C = Math.max(F, e, s2) * 2;
|
|
225
|
-
if (C === 0)
|
|
226
|
-
return 30;
|
|
208
|
+
if (C === 0) return 30;
|
|
227
209
|
let D = 30 + (Math.round(s2) << 2 | Math.round(e) << 1 | Math.round(F));
|
|
228
210
|
return C === 2 && (D += 60), D;
|
|
229
211
|
}, enumerable: false }, rgbToAnsi: { value: (u, F, e) => r.ansi256ToAnsi(r.rgbToAnsi256(u, F, e)), enumerable: false }, hexToAnsi: { value: (u) => r.ansi256ToAnsi(r.hexToAnsi256(u)), enumerable: false } }), r;
|
|
@@ -255,13 +237,11 @@ var _ = (t, u, F) => {
|
|
|
255
237
|
var DD = (t) => {
|
|
256
238
|
const u = t.split(" ");
|
|
257
239
|
let F = u.length;
|
|
258
|
-
for (; F > 0 && !(c(u[F - 1]) > 0); )
|
|
259
|
-
F--;
|
|
240
|
+
for (; F > 0 && !(c(u[F - 1]) > 0); ) F--;
|
|
260
241
|
return F === u.length ? t : u.slice(0, F).join(" ") + u.slice(F).join("");
|
|
261
242
|
};
|
|
262
243
|
var uD = (t, u, F = {}) => {
|
|
263
|
-
if (F.trim !== false && t.trim() === "")
|
|
264
|
-
return "";
|
|
244
|
+
if (F.trim !== false && t.trim() === "") return "";
|
|
265
245
|
let e = "", s2, C;
|
|
266
246
|
const D = X(t);
|
|
267
247
|
let i = [""];
|
|
@@ -295,8 +275,7 @@ var uD = (t, u, F = {}) => {
|
|
|
295
275
|
if (B.code !== void 0) {
|
|
296
276
|
const A = Number.parseFloat(B.code);
|
|
297
277
|
s2 = A === J ? void 0 : A;
|
|
298
|
-
} else
|
|
299
|
-
B.uri !== void 0 && (C = B.uri.length === 0 ? void 0 : B.uri);
|
|
278
|
+
} else B.uri !== void 0 && (C = B.uri.length === 0 ? void 0 : B.uri);
|
|
300
279
|
}
|
|
301
280
|
const n = q.codes.get(Number(s2));
|
|
302
281
|
o[E + 1] === `
|
|
@@ -312,13 +291,11 @@ function P(t, u, F) {
|
|
|
312
291
|
`);
|
|
313
292
|
}
|
|
314
293
|
function FD(t, u) {
|
|
315
|
-
if (t === u)
|
|
316
|
-
return;
|
|
294
|
+
if (t === u) return;
|
|
317
295
|
const F = t.split(`
|
|
318
296
|
`), e = u.split(`
|
|
319
297
|
`), s2 = [];
|
|
320
|
-
for (let C = 0; C < Math.max(F.length, e.length); C++)
|
|
321
|
-
F[C] !== e[C] && s2.push(C);
|
|
298
|
+
for (let C = 0; C < Math.max(F.length, e.length); C++) F[C] !== e[C] && s2.push(C);
|
|
322
299
|
return s2;
|
|
323
300
|
}
|
|
324
301
|
var R = Symbol("clack:cancel");
|
|
@@ -353,10 +330,8 @@ var h = class {
|
|
|
353
330
|
}
|
|
354
331
|
emit(u, ...F) {
|
|
355
332
|
const e = this.subscribers.get(u) ?? [], s2 = [];
|
|
356
|
-
for (const C of e)
|
|
357
|
-
|
|
358
|
-
for (const C of s2)
|
|
359
|
-
C();
|
|
333
|
+
for (const C of e) C.cb(...F), C.once && s2.push(() => e.splice(e.indexOf(C), 1));
|
|
334
|
+
for (const C of s2) C();
|
|
360
335
|
}
|
|
361
336
|
unsubscribe() {
|
|
362
337
|
this.subscribers.clear();
|
|
@@ -383,8 +358,7 @@ var h = class {
|
|
|
383
358
|
render() {
|
|
384
359
|
const u = P(this._render(this) ?? "", process.stdout.columns, { hard: true });
|
|
385
360
|
if (u !== this._prevFrame) {
|
|
386
|
-
if (this.state === "initial")
|
|
387
|
-
this.output.write(src.cursor.hide);
|
|
361
|
+
if (this.state === "initial") this.output.write(src.cursor.hide);
|
|
388
362
|
else {
|
|
389
363
|
const F = FD(this._prevFrame, u);
|
|
390
364
|
if (this.restoreCursor(), F && F?.length === 1) {
|
|
@@ -486,8 +460,7 @@ var oD = class extends h {
|
|
|
486
460
|
super(u), this.valueWithCursor = "", this.on("finalize", () => {
|
|
487
461
|
this.value || (this.value = u.defaultValue), this.valueWithCursor = this.value;
|
|
488
462
|
}), this.on("value", () => {
|
|
489
|
-
if (this.cursor >= this.value.length)
|
|
490
|
-
this.valueWithCursor = `${this.value}${l.inverse(l.hidden("_"))}`;
|
|
463
|
+
if (this.cursor >= this.value.length) this.valueWithCursor = `${this.value}${l.inverse(l.hidden("_"))}`;
|
|
491
464
|
else {
|
|
492
465
|
const F = this.value.slice(0, this.cursor), e = this.value.slice(this.cursor);
|
|
493
466
|
this.valueWithCursor = `${F}${l.inverse(e[0])}${e.slice(1)}`;
|