vitest 1.0.3 → 1.0.4
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/LICENSE.md
CHANGED
|
@@ -369,6 +369,13 @@ Repository: sindresorhus/cli-truncate
|
|
|
369
369
|
|
|
370
370
|
---------------------------------------
|
|
371
371
|
|
|
372
|
+
## eastasianwidth
|
|
373
|
+
License: MIT
|
|
374
|
+
By: Masaki Komagata
|
|
375
|
+
Repository: git://github.com/komagata/eastasianwidth.git
|
|
376
|
+
|
|
377
|
+
---------------------------------------
|
|
378
|
+
|
|
372
379
|
## emoji-regex
|
|
373
380
|
License: MIT
|
|
374
381
|
By: Mathias Bynens
|
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { normalize } from 'pathe';
|
|
2
2
|
import cac from 'cac';
|
|
3
3
|
import c from 'picocolors';
|
|
4
|
-
import { v as version, s as startVitest } from './vendor/node.
|
|
4
|
+
import { v as version, s as startVitest } from './vendor/node.vEetZgP7.js';
|
|
5
5
|
import './vendor/index.XU72Rmy8.js';
|
|
6
|
-
import { d as divider } from './vendor/reporters.
|
|
6
|
+
import { d as divider } from './vendor/reporters.r0gTYN3L.js';
|
|
7
7
|
import { t as toArray } from './vendor/base._79unx2z.js';
|
|
8
8
|
import 'vite';
|
|
9
9
|
import 'node:path';
|
|
@@ -57,7 +57,7 @@ import './vendor/date.Ns1pGd_X.js';
|
|
|
57
57
|
import './vendor/tasks.IknbGB2n.js';
|
|
58
58
|
|
|
59
59
|
const cli = cac("vitest");
|
|
60
|
-
cli.version(version).option("-r, --root <path>", "Root path").option("-c, --config <path>", "Path to config file").option("-u, --update", "Update snapshot").option("-w, --watch", "Enable watch mode").option("-t, --testNamePattern <pattern>", "Run tests with full names matching the specified regexp pattern").option("--dir <path>", "Base directory to scan for the test files").option("--ui", "Enable UI").option("--open", "Open UI automatically (default: !process.env.CI))").option("--api [api]", "Serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--silent", "Silent console output from tests").option("--hideSkippedTests", "Hide logs for skipped tests").option("--reporter <name>", "Specify reporters").option("--outputFile <filename/-s>", "Write test results to a file when supporter reporter is also specified, use cac's dot notation for individual outputs of multiple reporters").option("--coverage", "Enable coverage report").option("--run", "Disable watch mode").option("--mode <name>", "Override Vite mode (default: test)").option("--globals", "Inject apis globally").option("--dom", "Mock browser API with happy-dom").option("--browser [options]", "Run tests in the browser (default: false)").option("--pool <pool>", "Specify pool, if not running in the browser (default: threads)").option("--poolOptions <options>", "Specify pool options").option("--poolOptions.threads.isolate", "Isolate tests in threads pool (default: true)").option("--poolOptions.forks.isolate", "Isolate tests in forks pool (default: true)").option("--environment <env>", "Specify runner environment, if not running in the browser (default: node)").option("--passWithNoTests", "Pass when no tests found").option("--logHeapUsage", "Show the size of heap for each test").option("--allowOnly", "Allow tests and suites that are marked as only (default: !process.env.CI)").option("--dangerouslyIgnoreUnhandledErrors", "Ignore any unhandled errors that occur").option("--shard <shard>", "Test suite shard to execute in a format of <index>/<count>").option("--changed [since]", "Run tests that are affected by the changed files (default: false)").option("--sequence <options>", "Define in what order to run tests (use --sequence.shuffle to run tests in random order, use --sequence.concurrent to run tests in parallel)").option("--segfaultRetry <times>", "Return tests on segment fault (default: 0)", { default: 0 }).option("--no-color", "Removes colors from the console output").option("--inspect", "Enable Node.js inspector").option("--inspect-brk", "Enable Node.js inspector with break").option("--test-timeout <time>", "Default timeout of a test in milliseconds (default: 5000)").option("--bail <number>", "Stop test execution when given number of tests have failed (default: 0)").option("--retry <times>", "Retry the test specific number of times if it fails (default: 0)").option("--diff <path>", "Path to a diff config that will be used to generate diff interface").option("--expand-snapshot-diff", "Show full diff when snapshot fails").option("--typecheck [options]", "Custom options for typecheck pool").option("--typecheck.enabled", "Enable typechecking alongside tests (default: false)").option("--typecheck.only", "Run only typecheck tests. This automatically enables typecheck (default: false)").option("--project <name>", "The name of the project to run if you are using Vitest workspace feature. This can be repeated for multiple projects: --project=1 --project=2").help();
|
|
60
|
+
cli.version(version).option("-r, --root <path>", "Root path").option("-c, --config <path>", "Path to config file").option("-u, --update", "Update snapshot").option("-w, --watch", "Enable watch mode").option("-t, --testNamePattern <pattern>", "Run tests with full names matching the specified regexp pattern").option("--dir <path>", "Base directory to scan for the test files").option("--ui", "Enable UI").option("--open", "Open UI automatically (default: !process.env.CI))").option("--api [api]", "Serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--silent", "Silent console output from tests").option("--hideSkippedTests", "Hide logs for skipped tests").option("--reporter <name>", "Specify reporters").option("--outputFile <filename/-s>", "Write test results to a file when supporter reporter is also specified, use cac's dot notation for individual outputs of multiple reporters").option("--coverage", "Enable coverage report").option("--coverage.all", "Whether to include all files, including the untested ones into report", { default: true }).option("--run", "Disable watch mode").option("--mode <name>", "Override Vite mode (default: test)").option("--globals", "Inject apis globally").option("--dom", "Mock browser API with happy-dom").option("--browser [options]", "Run tests in the browser (default: false)").option("--pool <pool>", "Specify pool, if not running in the browser (default: threads)").option("--poolOptions <options>", "Specify pool options").option("--poolOptions.threads.isolate", "Isolate tests in threads pool (default: true)").option("--poolOptions.forks.isolate", "Isolate tests in forks pool (default: true)").option("--environment <env>", "Specify runner environment, if not running in the browser (default: node)").option("--passWithNoTests", "Pass when no tests found").option("--logHeapUsage", "Show the size of heap for each test").option("--allowOnly", "Allow tests and suites that are marked as only (default: !process.env.CI)").option("--dangerouslyIgnoreUnhandledErrors", "Ignore any unhandled errors that occur").option("--shard <shard>", "Test suite shard to execute in a format of <index>/<count>").option("--changed [since]", "Run tests that are affected by the changed files (default: false)").option("--sequence <options>", "Define in what order to run tests (use --sequence.shuffle to run tests in random order, use --sequence.concurrent to run tests in parallel)").option("--segfaultRetry <times>", "Return tests on segment fault (default: 0)", { default: 0 }).option("--no-color", "Removes colors from the console output").option("--inspect", "Enable Node.js inspector").option("--inspect-brk", "Enable Node.js inspector with break").option("--test-timeout <time>", "Default timeout of a test in milliseconds (default: 5000)").option("--bail <number>", "Stop test execution when given number of tests have failed (default: 0)").option("--retry <times>", "Retry the test specific number of times if it fails (default: 0)").option("--diff <path>", "Path to a diff config that will be used to generate diff interface").option("--expand-snapshot-diff", "Show full diff when snapshot fails").option("--typecheck [options]", "Custom options for typecheck pool").option("--typecheck.enabled", "Enable typechecking alongside tests (default: false)").option("--typecheck.only", "Run only typecheck tests. This automatically enables typecheck (default: false)").option("--project <name>", "The name of the project to run if you are using Vitest workspace feature. This can be repeated for multiple projects: --project=1 --project=2").help();
|
|
61
61
|
cli.command("run [...filters]").action(run);
|
|
62
62
|
cli.command("related [...filters]").action(runRelated);
|
|
63
63
|
cli.command("watch [...filters]").action(watch);
|
package/dist/node.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BaseSequencer, V as VitestPlugin, a as createMethodsRPC, c as createVitest, r as registerConsoleShortcuts, s as startVitest } from './vendor/node.
|
|
1
|
+
export { B as BaseSequencer, V as VitestPlugin, a as createMethodsRPC, c as createVitest, r as registerConsoleShortcuts, s as startVitest } from './vendor/node.vEetZgP7.js';
|
|
2
2
|
import 'pathe';
|
|
3
3
|
import 'vite';
|
|
4
4
|
import 'node:path';
|
|
@@ -41,7 +41,7 @@ import 'node:module';
|
|
|
41
41
|
import 'local-pkg';
|
|
42
42
|
import 'module';
|
|
43
43
|
import 'acorn-walk';
|
|
44
|
-
import './vendor/reporters.
|
|
44
|
+
import './vendor/reporters.r0gTYN3L.js';
|
|
45
45
|
import './chunks/runtime-console.hf2msWA9.js';
|
|
46
46
|
import 'node:stream';
|
|
47
47
|
import 'node:console';
|
package/dist/reporters.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { e as BasicReporter, B as BenchmarkReportsMap, D as DefaultReporter, f as DotReporter, H as HangingProcessReporter, g as JUnitReporter, J as JsonReporter, R as ReportersMap, h as TapFlatReporter, T as TapReporter, V as VerboseReporter } from './vendor/reporters.r0gTYN3L.js';
|
|
2
2
|
import 'node:perf_hooks';
|
|
3
3
|
import 'picocolors';
|
|
4
4
|
import './vendor/index.XU72Rmy8.js';
|
|
@@ -17,7 +17,7 @@ import { slash as slash$2, normalizeRequestId, cleanUrl } from 'vite-node/utils'
|
|
|
17
17
|
import { ViteNodeRunner } from 'vite-node/client';
|
|
18
18
|
import { SnapshotManager } from '@vitest/snapshot/manager';
|
|
19
19
|
import { ViteNodeServer } from 'vite-node/server';
|
|
20
|
-
import { r as removeUndefinedValues, a as isWindows
|
|
20
|
+
import { r as removeUndefinedValues, a as isWindows } from './index.XU72Rmy8.js';
|
|
21
21
|
import { g as getCoverageProvider, C as CoverageProviderMap } from './coverage.v6aD8iAh.js';
|
|
22
22
|
import { rootDir } from '../paths.js';
|
|
23
23
|
import v8 from 'node:v8';
|
|
@@ -39,7 +39,7 @@ import { isCI, provider as provider$1 } from 'std-env';
|
|
|
39
39
|
import ge from 'module';
|
|
40
40
|
import { ancestor, simple, findNodeAround } from 'acorn-walk';
|
|
41
41
|
import { generateHash, calculateSuiteHash, someTasksAreOnly, interpretTaskModes, getTasks, hasFailed } from '@vitest/runner/utils';
|
|
42
|
-
import { R as ReportersMap, B as BenchmarkReportsMap, s as
|
|
42
|
+
import { R as ReportersMap, B as BenchmarkReportsMap, s as stripAnsi, a as ansiStyles, b as sliceAnsi, d as divider, F as F_POINTER, c as cliTruncate } from './reporters.r0gTYN3L.js';
|
|
43
43
|
import crypto, { createHash } from 'node:crypto';
|
|
44
44
|
import require$$0$3 from 'assert';
|
|
45
45
|
import MagicString from 'magic-string';
|
|
@@ -63,7 +63,7 @@ function _mergeNamespaces(n, m) {
|
|
|
63
63
|
return Object.freeze(n);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
var version$1 = "1.0.
|
|
66
|
+
var version$1 = "1.0.4";
|
|
67
67
|
|
|
68
68
|
const __dirname$1 = url.fileURLToPath(new URL(".", import.meta.url));
|
|
69
69
|
async function ensurePackageInstalled(dependency, root) {
|
|
@@ -5281,15 +5281,7 @@ const ESC$1 = '\u001B[';
|
|
|
5281
5281
|
const OSC = '\u001B]';
|
|
5282
5282
|
const BEL = '\u0007';
|
|
5283
5283
|
const SEP = ';';
|
|
5284
|
-
|
|
5285
|
-
/* global window */
|
|
5286
|
-
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
5287
|
-
|
|
5288
|
-
const isTerminalApp = !isBrowser && process$2.env.TERM_PROGRAM === 'Apple_Terminal';
|
|
5289
|
-
const isWindows = !isBrowser && process$2.platform === 'win32';
|
|
5290
|
-
const cwdFunction = isBrowser ? () => {
|
|
5291
|
-
throw new Error('`process.cwd()` only works in Node.js, not the browser.');
|
|
5292
|
-
} : process$2.cwd;
|
|
5284
|
+
const isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';
|
|
5293
5285
|
|
|
5294
5286
|
const ansiEscapes = {};
|
|
5295
5287
|
|
|
@@ -5302,7 +5294,7 @@ ansiEscapes.cursorTo = (x, y) => {
|
|
|
5302
5294
|
return ESC$1 + (x + 1) + 'G';
|
|
5303
5295
|
}
|
|
5304
5296
|
|
|
5305
|
-
return ESC$1 + (y + 1) +
|
|
5297
|
+
return ESC$1 + (y + 1) + ';' + (x + 1) + 'H';
|
|
5306
5298
|
};
|
|
5307
5299
|
|
|
5308
5300
|
ansiEscapes.cursorMove = (x, y) => {
|
|
@@ -5366,33 +5358,32 @@ ansiEscapes.scrollDown = ESC$1 + 'T';
|
|
|
5366
5358
|
|
|
5367
5359
|
ansiEscapes.clearScreen = '\u001Bc';
|
|
5368
5360
|
|
|
5369
|
-
ansiEscapes.clearTerminal =
|
|
5370
|
-
|
|
5361
|
+
ansiEscapes.clearTerminal = process.platform === 'win32' ?
|
|
5362
|
+
`${ansiEscapes.eraseScreen}${ESC$1}0f` :
|
|
5371
5363
|
// 1. Erases the screen (Only done in case `2` is not supported)
|
|
5372
5364
|
// 2. Erases the whole screen including scrollback buffer
|
|
5373
5365
|
// 3. Moves cursor to the top-left position
|
|
5374
5366
|
// More info: https://www.real-world-systems.com/docs/ANSIcode.html
|
|
5375
|
-
|
|
5376
|
-
|
|
5377
|
-
ansiEscapes.enterAlternativeScreen = ESC$1 + '?1049h';
|
|
5378
|
-
ansiEscapes.exitAlternativeScreen = ESC$1 + '?1049l';
|
|
5367
|
+
`${ansiEscapes.eraseScreen}${ESC$1}3J${ESC$1}H`;
|
|
5379
5368
|
|
|
5380
5369
|
ansiEscapes.beep = BEL;
|
|
5381
5370
|
|
|
5382
|
-
ansiEscapes.link = (text, url) =>
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5371
|
+
ansiEscapes.link = (text, url) => {
|
|
5372
|
+
return [
|
|
5373
|
+
OSC,
|
|
5374
|
+
'8',
|
|
5375
|
+
SEP,
|
|
5376
|
+
SEP,
|
|
5377
|
+
url,
|
|
5378
|
+
BEL,
|
|
5379
|
+
text,
|
|
5380
|
+
OSC,
|
|
5381
|
+
'8',
|
|
5382
|
+
SEP,
|
|
5383
|
+
SEP,
|
|
5384
|
+
BEL
|
|
5385
|
+
].join('');
|
|
5386
|
+
};
|
|
5396
5387
|
|
|
5397
5388
|
ansiEscapes.image = (buffer, options = {}) => {
|
|
5398
5389
|
let returnValue = `${OSC}1337;File=inline=1`;
|
|
@@ -5413,9 +5404,9 @@ ansiEscapes.image = (buffer, options = {}) => {
|
|
|
5413
5404
|
};
|
|
5414
5405
|
|
|
5415
5406
|
ansiEscapes.iTerm = {
|
|
5416
|
-
setCwd: (cwd =
|
|
5407
|
+
setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,
|
|
5417
5408
|
|
|
5418
|
-
annotation(message, options = {}) {
|
|
5409
|
+
annotation: (message, options = {}) => {
|
|
5419
5410
|
let returnValue = `${OSC}1337;`;
|
|
5420
5411
|
|
|
5421
5412
|
const hasX = typeof options.x !== 'undefined';
|
|
@@ -5429,17 +5420,16 @@ ansiEscapes.iTerm = {
|
|
|
5429
5420
|
returnValue += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';
|
|
5430
5421
|
|
|
5431
5422
|
if (options.length > 0) {
|
|
5432
|
-
returnValue +=
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
).join('|');
|
|
5423
|
+
returnValue +=
|
|
5424
|
+
(hasX ?
|
|
5425
|
+
[message, options.length, options.x, options.y] :
|
|
5426
|
+
[options.length, message]).join('|');
|
|
5437
5427
|
} else {
|
|
5438
5428
|
returnValue += message;
|
|
5439
5429
|
}
|
|
5440
5430
|
|
|
5441
5431
|
return returnValue + BEL;
|
|
5442
|
-
}
|
|
5432
|
+
}
|
|
5443
5433
|
};
|
|
5444
5434
|
|
|
5445
5435
|
var onetime$2 = {exports: {}};
|
|
@@ -5821,7 +5811,382 @@ cliCursor.toggle = (force, writableStream) => {
|
|
|
5821
5811
|
}
|
|
5822
5812
|
};
|
|
5823
5813
|
|
|
5824
|
-
|
|
5814
|
+
var eastasianwidth = {exports: {}};
|
|
5815
|
+
|
|
5816
|
+
(function (module) {
|
|
5817
|
+
var eaw = {};
|
|
5818
|
+
|
|
5819
|
+
{
|
|
5820
|
+
module.exports = eaw;
|
|
5821
|
+
}
|
|
5822
|
+
|
|
5823
|
+
eaw.eastAsianWidth = function(character) {
|
|
5824
|
+
var x = character.charCodeAt(0);
|
|
5825
|
+
var y = (character.length == 2) ? character.charCodeAt(1) : 0;
|
|
5826
|
+
var codePoint = x;
|
|
5827
|
+
if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {
|
|
5828
|
+
x &= 0x3FF;
|
|
5829
|
+
y &= 0x3FF;
|
|
5830
|
+
codePoint = (x << 10) | y;
|
|
5831
|
+
codePoint += 0x10000;
|
|
5832
|
+
}
|
|
5833
|
+
|
|
5834
|
+
if ((0x3000 == codePoint) ||
|
|
5835
|
+
(0xFF01 <= codePoint && codePoint <= 0xFF60) ||
|
|
5836
|
+
(0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {
|
|
5837
|
+
return 'F';
|
|
5838
|
+
}
|
|
5839
|
+
if ((0x20A9 == codePoint) ||
|
|
5840
|
+
(0xFF61 <= codePoint && codePoint <= 0xFFBE) ||
|
|
5841
|
+
(0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||
|
|
5842
|
+
(0xFFCA <= codePoint && codePoint <= 0xFFCF) ||
|
|
5843
|
+
(0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||
|
|
5844
|
+
(0xFFDA <= codePoint && codePoint <= 0xFFDC) ||
|
|
5845
|
+
(0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {
|
|
5846
|
+
return 'H';
|
|
5847
|
+
}
|
|
5848
|
+
if ((0x1100 <= codePoint && codePoint <= 0x115F) ||
|
|
5849
|
+
(0x11A3 <= codePoint && codePoint <= 0x11A7) ||
|
|
5850
|
+
(0x11FA <= codePoint && codePoint <= 0x11FF) ||
|
|
5851
|
+
(0x2329 <= codePoint && codePoint <= 0x232A) ||
|
|
5852
|
+
(0x2E80 <= codePoint && codePoint <= 0x2E99) ||
|
|
5853
|
+
(0x2E9B <= codePoint && codePoint <= 0x2EF3) ||
|
|
5854
|
+
(0x2F00 <= codePoint && codePoint <= 0x2FD5) ||
|
|
5855
|
+
(0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||
|
|
5856
|
+
(0x3001 <= codePoint && codePoint <= 0x303E) ||
|
|
5857
|
+
(0x3041 <= codePoint && codePoint <= 0x3096) ||
|
|
5858
|
+
(0x3099 <= codePoint && codePoint <= 0x30FF) ||
|
|
5859
|
+
(0x3105 <= codePoint && codePoint <= 0x312D) ||
|
|
5860
|
+
(0x3131 <= codePoint && codePoint <= 0x318E) ||
|
|
5861
|
+
(0x3190 <= codePoint && codePoint <= 0x31BA) ||
|
|
5862
|
+
(0x31C0 <= codePoint && codePoint <= 0x31E3) ||
|
|
5863
|
+
(0x31F0 <= codePoint && codePoint <= 0x321E) ||
|
|
5864
|
+
(0x3220 <= codePoint && codePoint <= 0x3247) ||
|
|
5865
|
+
(0x3250 <= codePoint && codePoint <= 0x32FE) ||
|
|
5866
|
+
(0x3300 <= codePoint && codePoint <= 0x4DBF) ||
|
|
5867
|
+
(0x4E00 <= codePoint && codePoint <= 0xA48C) ||
|
|
5868
|
+
(0xA490 <= codePoint && codePoint <= 0xA4C6) ||
|
|
5869
|
+
(0xA960 <= codePoint && codePoint <= 0xA97C) ||
|
|
5870
|
+
(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||
|
|
5871
|
+
(0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||
|
|
5872
|
+
(0xD7CB <= codePoint && codePoint <= 0xD7FB) ||
|
|
5873
|
+
(0xF900 <= codePoint && codePoint <= 0xFAFF) ||
|
|
5874
|
+
(0xFE10 <= codePoint && codePoint <= 0xFE19) ||
|
|
5875
|
+
(0xFE30 <= codePoint && codePoint <= 0xFE52) ||
|
|
5876
|
+
(0xFE54 <= codePoint && codePoint <= 0xFE66) ||
|
|
5877
|
+
(0xFE68 <= codePoint && codePoint <= 0xFE6B) ||
|
|
5878
|
+
(0x1B000 <= codePoint && codePoint <= 0x1B001) ||
|
|
5879
|
+
(0x1F200 <= codePoint && codePoint <= 0x1F202) ||
|
|
5880
|
+
(0x1F210 <= codePoint && codePoint <= 0x1F23A) ||
|
|
5881
|
+
(0x1F240 <= codePoint && codePoint <= 0x1F248) ||
|
|
5882
|
+
(0x1F250 <= codePoint && codePoint <= 0x1F251) ||
|
|
5883
|
+
(0x20000 <= codePoint && codePoint <= 0x2F73F) ||
|
|
5884
|
+
(0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||
|
|
5885
|
+
(0x30000 <= codePoint && codePoint <= 0x3FFFD)) {
|
|
5886
|
+
return 'W';
|
|
5887
|
+
}
|
|
5888
|
+
if ((0x0020 <= codePoint && codePoint <= 0x007E) ||
|
|
5889
|
+
(0x00A2 <= codePoint && codePoint <= 0x00A3) ||
|
|
5890
|
+
(0x00A5 <= codePoint && codePoint <= 0x00A6) ||
|
|
5891
|
+
(0x00AC == codePoint) ||
|
|
5892
|
+
(0x00AF == codePoint) ||
|
|
5893
|
+
(0x27E6 <= codePoint && codePoint <= 0x27ED) ||
|
|
5894
|
+
(0x2985 <= codePoint && codePoint <= 0x2986)) {
|
|
5895
|
+
return 'Na';
|
|
5896
|
+
}
|
|
5897
|
+
if ((0x00A1 == codePoint) ||
|
|
5898
|
+
(0x00A4 == codePoint) ||
|
|
5899
|
+
(0x00A7 <= codePoint && codePoint <= 0x00A8) ||
|
|
5900
|
+
(0x00AA == codePoint) ||
|
|
5901
|
+
(0x00AD <= codePoint && codePoint <= 0x00AE) ||
|
|
5902
|
+
(0x00B0 <= codePoint && codePoint <= 0x00B4) ||
|
|
5903
|
+
(0x00B6 <= codePoint && codePoint <= 0x00BA) ||
|
|
5904
|
+
(0x00BC <= codePoint && codePoint <= 0x00BF) ||
|
|
5905
|
+
(0x00C6 == codePoint) ||
|
|
5906
|
+
(0x00D0 == codePoint) ||
|
|
5907
|
+
(0x00D7 <= codePoint && codePoint <= 0x00D8) ||
|
|
5908
|
+
(0x00DE <= codePoint && codePoint <= 0x00E1) ||
|
|
5909
|
+
(0x00E6 == codePoint) ||
|
|
5910
|
+
(0x00E8 <= codePoint && codePoint <= 0x00EA) ||
|
|
5911
|
+
(0x00EC <= codePoint && codePoint <= 0x00ED) ||
|
|
5912
|
+
(0x00F0 == codePoint) ||
|
|
5913
|
+
(0x00F2 <= codePoint && codePoint <= 0x00F3) ||
|
|
5914
|
+
(0x00F7 <= codePoint && codePoint <= 0x00FA) ||
|
|
5915
|
+
(0x00FC == codePoint) ||
|
|
5916
|
+
(0x00FE == codePoint) ||
|
|
5917
|
+
(0x0101 == codePoint) ||
|
|
5918
|
+
(0x0111 == codePoint) ||
|
|
5919
|
+
(0x0113 == codePoint) ||
|
|
5920
|
+
(0x011B == codePoint) ||
|
|
5921
|
+
(0x0126 <= codePoint && codePoint <= 0x0127) ||
|
|
5922
|
+
(0x012B == codePoint) ||
|
|
5923
|
+
(0x0131 <= codePoint && codePoint <= 0x0133) ||
|
|
5924
|
+
(0x0138 == codePoint) ||
|
|
5925
|
+
(0x013F <= codePoint && codePoint <= 0x0142) ||
|
|
5926
|
+
(0x0144 == codePoint) ||
|
|
5927
|
+
(0x0148 <= codePoint && codePoint <= 0x014B) ||
|
|
5928
|
+
(0x014D == codePoint) ||
|
|
5929
|
+
(0x0152 <= codePoint && codePoint <= 0x0153) ||
|
|
5930
|
+
(0x0166 <= codePoint && codePoint <= 0x0167) ||
|
|
5931
|
+
(0x016B == codePoint) ||
|
|
5932
|
+
(0x01CE == codePoint) ||
|
|
5933
|
+
(0x01D0 == codePoint) ||
|
|
5934
|
+
(0x01D2 == codePoint) ||
|
|
5935
|
+
(0x01D4 == codePoint) ||
|
|
5936
|
+
(0x01D6 == codePoint) ||
|
|
5937
|
+
(0x01D8 == codePoint) ||
|
|
5938
|
+
(0x01DA == codePoint) ||
|
|
5939
|
+
(0x01DC == codePoint) ||
|
|
5940
|
+
(0x0251 == codePoint) ||
|
|
5941
|
+
(0x0261 == codePoint) ||
|
|
5942
|
+
(0x02C4 == codePoint) ||
|
|
5943
|
+
(0x02C7 == codePoint) ||
|
|
5944
|
+
(0x02C9 <= codePoint && codePoint <= 0x02CB) ||
|
|
5945
|
+
(0x02CD == codePoint) ||
|
|
5946
|
+
(0x02D0 == codePoint) ||
|
|
5947
|
+
(0x02D8 <= codePoint && codePoint <= 0x02DB) ||
|
|
5948
|
+
(0x02DD == codePoint) ||
|
|
5949
|
+
(0x02DF == codePoint) ||
|
|
5950
|
+
(0x0300 <= codePoint && codePoint <= 0x036F) ||
|
|
5951
|
+
(0x0391 <= codePoint && codePoint <= 0x03A1) ||
|
|
5952
|
+
(0x03A3 <= codePoint && codePoint <= 0x03A9) ||
|
|
5953
|
+
(0x03B1 <= codePoint && codePoint <= 0x03C1) ||
|
|
5954
|
+
(0x03C3 <= codePoint && codePoint <= 0x03C9) ||
|
|
5955
|
+
(0x0401 == codePoint) ||
|
|
5956
|
+
(0x0410 <= codePoint && codePoint <= 0x044F) ||
|
|
5957
|
+
(0x0451 == codePoint) ||
|
|
5958
|
+
(0x2010 == codePoint) ||
|
|
5959
|
+
(0x2013 <= codePoint && codePoint <= 0x2016) ||
|
|
5960
|
+
(0x2018 <= codePoint && codePoint <= 0x2019) ||
|
|
5961
|
+
(0x201C <= codePoint && codePoint <= 0x201D) ||
|
|
5962
|
+
(0x2020 <= codePoint && codePoint <= 0x2022) ||
|
|
5963
|
+
(0x2024 <= codePoint && codePoint <= 0x2027) ||
|
|
5964
|
+
(0x2030 == codePoint) ||
|
|
5965
|
+
(0x2032 <= codePoint && codePoint <= 0x2033) ||
|
|
5966
|
+
(0x2035 == codePoint) ||
|
|
5967
|
+
(0x203B == codePoint) ||
|
|
5968
|
+
(0x203E == codePoint) ||
|
|
5969
|
+
(0x2074 == codePoint) ||
|
|
5970
|
+
(0x207F == codePoint) ||
|
|
5971
|
+
(0x2081 <= codePoint && codePoint <= 0x2084) ||
|
|
5972
|
+
(0x20AC == codePoint) ||
|
|
5973
|
+
(0x2103 == codePoint) ||
|
|
5974
|
+
(0x2105 == codePoint) ||
|
|
5975
|
+
(0x2109 == codePoint) ||
|
|
5976
|
+
(0x2113 == codePoint) ||
|
|
5977
|
+
(0x2116 == codePoint) ||
|
|
5978
|
+
(0x2121 <= codePoint && codePoint <= 0x2122) ||
|
|
5979
|
+
(0x2126 == codePoint) ||
|
|
5980
|
+
(0x212B == codePoint) ||
|
|
5981
|
+
(0x2153 <= codePoint && codePoint <= 0x2154) ||
|
|
5982
|
+
(0x215B <= codePoint && codePoint <= 0x215E) ||
|
|
5983
|
+
(0x2160 <= codePoint && codePoint <= 0x216B) ||
|
|
5984
|
+
(0x2170 <= codePoint && codePoint <= 0x2179) ||
|
|
5985
|
+
(0x2189 == codePoint) ||
|
|
5986
|
+
(0x2190 <= codePoint && codePoint <= 0x2199) ||
|
|
5987
|
+
(0x21B8 <= codePoint && codePoint <= 0x21B9) ||
|
|
5988
|
+
(0x21D2 == codePoint) ||
|
|
5989
|
+
(0x21D4 == codePoint) ||
|
|
5990
|
+
(0x21E7 == codePoint) ||
|
|
5991
|
+
(0x2200 == codePoint) ||
|
|
5992
|
+
(0x2202 <= codePoint && codePoint <= 0x2203) ||
|
|
5993
|
+
(0x2207 <= codePoint && codePoint <= 0x2208) ||
|
|
5994
|
+
(0x220B == codePoint) ||
|
|
5995
|
+
(0x220F == codePoint) ||
|
|
5996
|
+
(0x2211 == codePoint) ||
|
|
5997
|
+
(0x2215 == codePoint) ||
|
|
5998
|
+
(0x221A == codePoint) ||
|
|
5999
|
+
(0x221D <= codePoint && codePoint <= 0x2220) ||
|
|
6000
|
+
(0x2223 == codePoint) ||
|
|
6001
|
+
(0x2225 == codePoint) ||
|
|
6002
|
+
(0x2227 <= codePoint && codePoint <= 0x222C) ||
|
|
6003
|
+
(0x222E == codePoint) ||
|
|
6004
|
+
(0x2234 <= codePoint && codePoint <= 0x2237) ||
|
|
6005
|
+
(0x223C <= codePoint && codePoint <= 0x223D) ||
|
|
6006
|
+
(0x2248 == codePoint) ||
|
|
6007
|
+
(0x224C == codePoint) ||
|
|
6008
|
+
(0x2252 == codePoint) ||
|
|
6009
|
+
(0x2260 <= codePoint && codePoint <= 0x2261) ||
|
|
6010
|
+
(0x2264 <= codePoint && codePoint <= 0x2267) ||
|
|
6011
|
+
(0x226A <= codePoint && codePoint <= 0x226B) ||
|
|
6012
|
+
(0x226E <= codePoint && codePoint <= 0x226F) ||
|
|
6013
|
+
(0x2282 <= codePoint && codePoint <= 0x2283) ||
|
|
6014
|
+
(0x2286 <= codePoint && codePoint <= 0x2287) ||
|
|
6015
|
+
(0x2295 == codePoint) ||
|
|
6016
|
+
(0x2299 == codePoint) ||
|
|
6017
|
+
(0x22A5 == codePoint) ||
|
|
6018
|
+
(0x22BF == codePoint) ||
|
|
6019
|
+
(0x2312 == codePoint) ||
|
|
6020
|
+
(0x2460 <= codePoint && codePoint <= 0x24E9) ||
|
|
6021
|
+
(0x24EB <= codePoint && codePoint <= 0x254B) ||
|
|
6022
|
+
(0x2550 <= codePoint && codePoint <= 0x2573) ||
|
|
6023
|
+
(0x2580 <= codePoint && codePoint <= 0x258F) ||
|
|
6024
|
+
(0x2592 <= codePoint && codePoint <= 0x2595) ||
|
|
6025
|
+
(0x25A0 <= codePoint && codePoint <= 0x25A1) ||
|
|
6026
|
+
(0x25A3 <= codePoint && codePoint <= 0x25A9) ||
|
|
6027
|
+
(0x25B2 <= codePoint && codePoint <= 0x25B3) ||
|
|
6028
|
+
(0x25B6 <= codePoint && codePoint <= 0x25B7) ||
|
|
6029
|
+
(0x25BC <= codePoint && codePoint <= 0x25BD) ||
|
|
6030
|
+
(0x25C0 <= codePoint && codePoint <= 0x25C1) ||
|
|
6031
|
+
(0x25C6 <= codePoint && codePoint <= 0x25C8) ||
|
|
6032
|
+
(0x25CB == codePoint) ||
|
|
6033
|
+
(0x25CE <= codePoint && codePoint <= 0x25D1) ||
|
|
6034
|
+
(0x25E2 <= codePoint && codePoint <= 0x25E5) ||
|
|
6035
|
+
(0x25EF == codePoint) ||
|
|
6036
|
+
(0x2605 <= codePoint && codePoint <= 0x2606) ||
|
|
6037
|
+
(0x2609 == codePoint) ||
|
|
6038
|
+
(0x260E <= codePoint && codePoint <= 0x260F) ||
|
|
6039
|
+
(0x2614 <= codePoint && codePoint <= 0x2615) ||
|
|
6040
|
+
(0x261C == codePoint) ||
|
|
6041
|
+
(0x261E == codePoint) ||
|
|
6042
|
+
(0x2640 == codePoint) ||
|
|
6043
|
+
(0x2642 == codePoint) ||
|
|
6044
|
+
(0x2660 <= codePoint && codePoint <= 0x2661) ||
|
|
6045
|
+
(0x2663 <= codePoint && codePoint <= 0x2665) ||
|
|
6046
|
+
(0x2667 <= codePoint && codePoint <= 0x266A) ||
|
|
6047
|
+
(0x266C <= codePoint && codePoint <= 0x266D) ||
|
|
6048
|
+
(0x266F == codePoint) ||
|
|
6049
|
+
(0x269E <= codePoint && codePoint <= 0x269F) ||
|
|
6050
|
+
(0x26BE <= codePoint && codePoint <= 0x26BF) ||
|
|
6051
|
+
(0x26C4 <= codePoint && codePoint <= 0x26CD) ||
|
|
6052
|
+
(0x26CF <= codePoint && codePoint <= 0x26E1) ||
|
|
6053
|
+
(0x26E3 == codePoint) ||
|
|
6054
|
+
(0x26E8 <= codePoint && codePoint <= 0x26FF) ||
|
|
6055
|
+
(0x273D == codePoint) ||
|
|
6056
|
+
(0x2757 == codePoint) ||
|
|
6057
|
+
(0x2776 <= codePoint && codePoint <= 0x277F) ||
|
|
6058
|
+
(0x2B55 <= codePoint && codePoint <= 0x2B59) ||
|
|
6059
|
+
(0x3248 <= codePoint && codePoint <= 0x324F) ||
|
|
6060
|
+
(0xE000 <= codePoint && codePoint <= 0xF8FF) ||
|
|
6061
|
+
(0xFE00 <= codePoint && codePoint <= 0xFE0F) ||
|
|
6062
|
+
(0xFFFD == codePoint) ||
|
|
6063
|
+
(0x1F100 <= codePoint && codePoint <= 0x1F10A) ||
|
|
6064
|
+
(0x1F110 <= codePoint && codePoint <= 0x1F12D) ||
|
|
6065
|
+
(0x1F130 <= codePoint && codePoint <= 0x1F169) ||
|
|
6066
|
+
(0x1F170 <= codePoint && codePoint <= 0x1F19A) ||
|
|
6067
|
+
(0xE0100 <= codePoint && codePoint <= 0xE01EF) ||
|
|
6068
|
+
(0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||
|
|
6069
|
+
(0x100000 <= codePoint && codePoint <= 0x10FFFD)) {
|
|
6070
|
+
return 'A';
|
|
6071
|
+
}
|
|
6072
|
+
|
|
6073
|
+
return 'N';
|
|
6074
|
+
};
|
|
6075
|
+
|
|
6076
|
+
eaw.characterLength = function(character) {
|
|
6077
|
+
var code = this.eastAsianWidth(character);
|
|
6078
|
+
if (code == 'F' || code == 'W' || code == 'A') {
|
|
6079
|
+
return 2;
|
|
6080
|
+
} else {
|
|
6081
|
+
return 1;
|
|
6082
|
+
}
|
|
6083
|
+
};
|
|
6084
|
+
|
|
6085
|
+
// Split a string considering surrogate-pairs.
|
|
6086
|
+
function stringToArray(string) {
|
|
6087
|
+
return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
|
|
6088
|
+
}
|
|
6089
|
+
|
|
6090
|
+
eaw.length = function(string) {
|
|
6091
|
+
var characters = stringToArray(string);
|
|
6092
|
+
var len = 0;
|
|
6093
|
+
for (var i = 0; i < characters.length; i++) {
|
|
6094
|
+
len = len + this.characterLength(characters[i]);
|
|
6095
|
+
}
|
|
6096
|
+
return len;
|
|
6097
|
+
};
|
|
6098
|
+
|
|
6099
|
+
eaw.slice = function(text, start, end) {
|
|
6100
|
+
textLen = eaw.length(text);
|
|
6101
|
+
start = start ? start : 0;
|
|
6102
|
+
end = end ? end : 1;
|
|
6103
|
+
if (start < 0) {
|
|
6104
|
+
start = textLen + start;
|
|
6105
|
+
}
|
|
6106
|
+
if (end < 0) {
|
|
6107
|
+
end = textLen + end;
|
|
6108
|
+
}
|
|
6109
|
+
var result = '';
|
|
6110
|
+
var eawLen = 0;
|
|
6111
|
+
var chars = stringToArray(text);
|
|
6112
|
+
for (var i = 0; i < chars.length; i++) {
|
|
6113
|
+
var char = chars[i];
|
|
6114
|
+
var charLen = eaw.length(char);
|
|
6115
|
+
if (eawLen >= start - (charLen == 2 ? 1 : 0)) {
|
|
6116
|
+
if (eawLen + charLen <= end) {
|
|
6117
|
+
result += char;
|
|
6118
|
+
} else {
|
|
6119
|
+
break;
|
|
6120
|
+
}
|
|
6121
|
+
}
|
|
6122
|
+
eawLen += charLen;
|
|
6123
|
+
}
|
|
6124
|
+
return result;
|
|
6125
|
+
};
|
|
6126
|
+
} (eastasianwidth));
|
|
6127
|
+
|
|
6128
|
+
var eastasianwidthExports = eastasianwidth.exports;
|
|
6129
|
+
var eastAsianWidth = /*@__PURE__*/getDefaultExportFromCjs(eastasianwidthExports);
|
|
6130
|
+
|
|
6131
|
+
var emojiRegex = function () {
|
|
6132
|
+
// https://mths.be/emoji
|
|
6133
|
+
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;
|
|
6134
|
+
};
|
|
6135
|
+
|
|
6136
|
+
var emojiRegex$1 = /*@__PURE__*/getDefaultExportFromCjs(emojiRegex);
|
|
6137
|
+
|
|
6138
|
+
function stringWidth(string, options = {}) {
|
|
6139
|
+
if (typeof string !== 'string' || string.length === 0) {
|
|
6140
|
+
return 0;
|
|
6141
|
+
}
|
|
6142
|
+
|
|
6143
|
+
options = {
|
|
6144
|
+
ambiguousIsNarrow: true,
|
|
6145
|
+
...options
|
|
6146
|
+
};
|
|
6147
|
+
|
|
6148
|
+
string = stripAnsi(string);
|
|
6149
|
+
|
|
6150
|
+
if (string.length === 0) {
|
|
6151
|
+
return 0;
|
|
6152
|
+
}
|
|
6153
|
+
|
|
6154
|
+
string = string.replace(emojiRegex$1(), ' ');
|
|
6155
|
+
|
|
6156
|
+
const ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;
|
|
6157
|
+
let width = 0;
|
|
6158
|
+
|
|
6159
|
+
for (const character of string) {
|
|
6160
|
+
const codePoint = character.codePointAt(0);
|
|
6161
|
+
|
|
6162
|
+
// Ignore control characters
|
|
6163
|
+
if (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {
|
|
6164
|
+
continue;
|
|
6165
|
+
}
|
|
6166
|
+
|
|
6167
|
+
// Ignore combining characters
|
|
6168
|
+
if (codePoint >= 0x300 && codePoint <= 0x36F) {
|
|
6169
|
+
continue;
|
|
6170
|
+
}
|
|
6171
|
+
|
|
6172
|
+
const code = eastAsianWidth.eastAsianWidth(character);
|
|
6173
|
+
switch (code) {
|
|
6174
|
+
case 'F':
|
|
6175
|
+
case 'W':
|
|
6176
|
+
width += 2;
|
|
6177
|
+
break;
|
|
6178
|
+
case 'A':
|
|
6179
|
+
width += ambiguousCharacterWidth;
|
|
6180
|
+
break;
|
|
6181
|
+
default:
|
|
6182
|
+
width += 1;
|
|
6183
|
+
}
|
|
6184
|
+
}
|
|
6185
|
+
|
|
6186
|
+
return width;
|
|
6187
|
+
}
|
|
6188
|
+
|
|
6189
|
+
const ESCAPES = new Set([
|
|
5825
6190
|
'\u001B',
|
|
5826
6191
|
'\u009B',
|
|
5827
6192
|
]);
|
|
@@ -5833,8 +6198,8 @@ const ANSI_OSC = ']';
|
|
|
5833
6198
|
const ANSI_SGR_TERMINATOR = 'm';
|
|
5834
6199
|
const ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
|
|
5835
6200
|
|
|
5836
|
-
const wrapAnsiCode = code => `${ESCAPES
|
|
5837
|
-
const wrapAnsiHyperlink =
|
|
6201
|
+
const wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
|
|
6202
|
+
const wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;
|
|
5838
6203
|
|
|
5839
6204
|
// Calculate the length of words split on ' ', ignoring
|
|
5840
6205
|
// the extra characters added by ansi escape codes
|
|
@@ -5847,7 +6212,7 @@ const wrapWord = (rows, word, columns) => {
|
|
|
5847
6212
|
|
|
5848
6213
|
let isInsideEscape = false;
|
|
5849
6214
|
let isInsideLinkEscape = false;
|
|
5850
|
-
let visible = stringWidth(stripAnsi(rows.
|
|
6215
|
+
let visible = stringWidth(stripAnsi(rows[rows.length - 1]));
|
|
5851
6216
|
|
|
5852
6217
|
for (const [index, character] of characters.entries()) {
|
|
5853
6218
|
const characterLength = stringWidth(character);
|
|
@@ -5859,11 +6224,9 @@ const wrapWord = (rows, word, columns) => {
|
|
|
5859
6224
|
visible = 0;
|
|
5860
6225
|
}
|
|
5861
6226
|
|
|
5862
|
-
if (ESCAPES
|
|
6227
|
+
if (ESCAPES.has(character)) {
|
|
5863
6228
|
isInsideEscape = true;
|
|
5864
|
-
|
|
5865
|
-
const ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');
|
|
5866
|
-
isInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;
|
|
6229
|
+
isInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);
|
|
5867
6230
|
}
|
|
5868
6231
|
|
|
5869
6232
|
if (isInsideEscape) {
|
|
@@ -5889,7 +6252,7 @@ const wrapWord = (rows, word, columns) => {
|
|
|
5889
6252
|
|
|
5890
6253
|
// It's possible that the last row we copy over is only
|
|
5891
6254
|
// ansi escape characters, handle this edge-case
|
|
5892
|
-
if (!visible && rows.
|
|
6255
|
+
if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {
|
|
5893
6256
|
rows[rows.length - 2] += rows.pop();
|
|
5894
6257
|
}
|
|
5895
6258
|
};
|
|
@@ -5914,11 +6277,11 @@ const stringVisibleTrimSpacesRight = string => {
|
|
|
5914
6277
|
return words.slice(0, last).join(' ') + words.slice(last).join('');
|
|
5915
6278
|
};
|
|
5916
6279
|
|
|
5917
|
-
// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode
|
|
6280
|
+
// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode
|
|
5918
6281
|
//
|
|
5919
|
-
// 'hard' will never allow a string to take up more than columns characters
|
|
6282
|
+
// 'hard' will never allow a string to take up more than columns characters
|
|
5920
6283
|
//
|
|
5921
|
-
// 'soft' allows long words to expand past the column length
|
|
6284
|
+
// 'soft' allows long words to expand past the column length
|
|
5922
6285
|
const exec = (string, columns, options = {}) => {
|
|
5923
6286
|
if (options.trim !== false && string.trim() === '') {
|
|
5924
6287
|
return '';
|
|
@@ -5933,10 +6296,10 @@ const exec = (string, columns, options = {}) => {
|
|
|
5933
6296
|
|
|
5934
6297
|
for (const [index, word] of string.split(' ').entries()) {
|
|
5935
6298
|
if (options.trim !== false) {
|
|
5936
|
-
rows[rows.length - 1] = rows.
|
|
6299
|
+
rows[rows.length - 1] = rows[rows.length - 1].trimStart();
|
|
5937
6300
|
}
|
|
5938
6301
|
|
|
5939
|
-
let rowLength = stringWidth(rows.
|
|
6302
|
+
let rowLength = stringWidth(rows[rows.length - 1]);
|
|
5940
6303
|
|
|
5941
6304
|
if (index !== 0) {
|
|
5942
6305
|
if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
|
|
@@ -5985,17 +6348,13 @@ const exec = (string, columns, options = {}) => {
|
|
|
5985
6348
|
rows = rows.map(row => stringVisibleTrimSpacesRight(row));
|
|
5986
6349
|
}
|
|
5987
6350
|
|
|
5988
|
-
const
|
|
5989
|
-
const pre = [...preString];
|
|
5990
|
-
|
|
5991
|
-
// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.
|
|
5992
|
-
let preStringIndex = 0;
|
|
6351
|
+
const pre = [...rows.join('\n')];
|
|
5993
6352
|
|
|
5994
6353
|
for (const [index, character] of pre.entries()) {
|
|
5995
6354
|
returnValue += character;
|
|
5996
6355
|
|
|
5997
|
-
if (ESCAPES
|
|
5998
|
-
const {groups} = new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(
|
|
6356
|
+
if (ESCAPES.has(character)) {
|
|
6357
|
+
const {groups} = new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};
|
|
5999
6358
|
if (groups.code !== undefined) {
|
|
6000
6359
|
const code = Number.parseFloat(groups.code);
|
|
6001
6360
|
escapeCode = code === END_CODE ? undefined : code;
|
|
@@ -6023,8 +6382,6 @@ const exec = (string, columns, options = {}) => {
|
|
|
6023
6382
|
returnValue += wrapAnsiHyperlink(escapeUrl);
|
|
6024
6383
|
}
|
|
6025
6384
|
}
|
|
6026
|
-
|
|
6027
|
-
preStringIndex += character.length;
|
|
6028
6385
|
}
|
|
6029
6386
|
|
|
6030
6387
|
return returnValue;
|
|
@@ -6034,185 +6391,12 @@ const exec = (string, columns, options = {}) => {
|
|
|
6034
6391
|
function wrapAnsi(string, columns, options) {
|
|
6035
6392
|
return String(string)
|
|
6036
6393
|
.normalize()
|
|
6037
|
-
.
|
|
6394
|
+
.replace(/\r\n/g, '\n')
|
|
6038
6395
|
.split('\n')
|
|
6039
6396
|
.map(line => exec(line, columns, options))
|
|
6040
6397
|
.join('\n');
|
|
6041
6398
|
}
|
|
6042
6399
|
|
|
6043
|
-
function isFullwidthCodePoint(codePoint) {
|
|
6044
|
-
if (!Number.isInteger(codePoint)) {
|
|
6045
|
-
return false;
|
|
6046
|
-
}
|
|
6047
|
-
|
|
6048
|
-
return eastAsianWidth(codePoint) === 2;
|
|
6049
|
-
}
|
|
6050
|
-
|
|
6051
|
-
// \x1b and \x9b
|
|
6052
|
-
const ESCAPES = new Set([27, 155]);
|
|
6053
|
-
|
|
6054
|
-
const CODE_POINT_0 = '0'.codePointAt(0);
|
|
6055
|
-
const CODE_POINT_9 = '9'.codePointAt(0);
|
|
6056
|
-
|
|
6057
|
-
const endCodesSet = new Set();
|
|
6058
|
-
const endCodesMap = new Map();
|
|
6059
|
-
for (const [start, end] of ansiStyles.codes) {
|
|
6060
|
-
endCodesSet.add(ansiStyles.color.ansi(end));
|
|
6061
|
-
endCodesMap.set(ansiStyles.color.ansi(start), ansiStyles.color.ansi(end));
|
|
6062
|
-
}
|
|
6063
|
-
|
|
6064
|
-
function getEndCode(code) {
|
|
6065
|
-
if (endCodesSet.has(code)) {
|
|
6066
|
-
return code;
|
|
6067
|
-
}
|
|
6068
|
-
|
|
6069
|
-
if (endCodesMap.has(code)) {
|
|
6070
|
-
return endCodesMap.get(code);
|
|
6071
|
-
}
|
|
6072
|
-
|
|
6073
|
-
code = code.slice(2);
|
|
6074
|
-
if (code.includes(';')) {
|
|
6075
|
-
code = code[0] + '0';
|
|
6076
|
-
}
|
|
6077
|
-
|
|
6078
|
-
const returnValue = ansiStyles.codes.get(Number.parseInt(code, 10));
|
|
6079
|
-
if (returnValue) {
|
|
6080
|
-
return ansiStyles.color.ansi(returnValue);
|
|
6081
|
-
}
|
|
6082
|
-
|
|
6083
|
-
return ansiStyles.reset.open;
|
|
6084
|
-
}
|
|
6085
|
-
|
|
6086
|
-
function findNumberIndex(string) {
|
|
6087
|
-
for (let index = 0; index < string.length; index++) {
|
|
6088
|
-
const codePoint = string.codePointAt(index);
|
|
6089
|
-
if (codePoint >= CODE_POINT_0 && codePoint <= CODE_POINT_9) {
|
|
6090
|
-
return index;
|
|
6091
|
-
}
|
|
6092
|
-
}
|
|
6093
|
-
|
|
6094
|
-
return -1;
|
|
6095
|
-
}
|
|
6096
|
-
|
|
6097
|
-
function parseAnsiCode(string, offset) {
|
|
6098
|
-
string = string.slice(offset, offset + 19);
|
|
6099
|
-
const startIndex = findNumberIndex(string);
|
|
6100
|
-
if (startIndex !== -1) {
|
|
6101
|
-
let endIndex = string.indexOf('m', startIndex);
|
|
6102
|
-
if (endIndex === -1) {
|
|
6103
|
-
endIndex = string.length;
|
|
6104
|
-
}
|
|
6105
|
-
|
|
6106
|
-
return string.slice(0, endIndex + 1);
|
|
6107
|
-
}
|
|
6108
|
-
}
|
|
6109
|
-
|
|
6110
|
-
function tokenize(string, endCharacter = Number.POSITIVE_INFINITY) {
|
|
6111
|
-
const returnValue = [];
|
|
6112
|
-
|
|
6113
|
-
let index = 0;
|
|
6114
|
-
let visibleCount = 0;
|
|
6115
|
-
while (index < string.length) {
|
|
6116
|
-
const codePoint = string.codePointAt(index);
|
|
6117
|
-
|
|
6118
|
-
if (ESCAPES.has(codePoint)) {
|
|
6119
|
-
const code = parseAnsiCode(string, index);
|
|
6120
|
-
if (code) {
|
|
6121
|
-
returnValue.push({
|
|
6122
|
-
type: 'ansi',
|
|
6123
|
-
code,
|
|
6124
|
-
endCode: getEndCode(code),
|
|
6125
|
-
});
|
|
6126
|
-
index += code.length;
|
|
6127
|
-
continue;
|
|
6128
|
-
}
|
|
6129
|
-
}
|
|
6130
|
-
|
|
6131
|
-
const isFullWidth = isFullwidthCodePoint(codePoint);
|
|
6132
|
-
const character = String.fromCodePoint(codePoint);
|
|
6133
|
-
|
|
6134
|
-
returnValue.push({
|
|
6135
|
-
type: 'character',
|
|
6136
|
-
value: character,
|
|
6137
|
-
isFullWidth,
|
|
6138
|
-
});
|
|
6139
|
-
|
|
6140
|
-
index += character.length;
|
|
6141
|
-
visibleCount += isFullWidth ? 2 : character.length;
|
|
6142
|
-
|
|
6143
|
-
if (visibleCount >= endCharacter) {
|
|
6144
|
-
break;
|
|
6145
|
-
}
|
|
6146
|
-
}
|
|
6147
|
-
|
|
6148
|
-
return returnValue;
|
|
6149
|
-
}
|
|
6150
|
-
|
|
6151
|
-
function reduceAnsiCodes(codes) {
|
|
6152
|
-
let returnValue = [];
|
|
6153
|
-
|
|
6154
|
-
for (const code of codes) {
|
|
6155
|
-
if (code.code === ansiStyles.reset.open) {
|
|
6156
|
-
// Reset code, disable all codes
|
|
6157
|
-
returnValue = [];
|
|
6158
|
-
} else if (endCodesSet.has(code.code)) {
|
|
6159
|
-
// This is an end code, disable all matching start codes
|
|
6160
|
-
returnValue = returnValue.filter(returnValueCode => returnValueCode.endCode !== code.code);
|
|
6161
|
-
} else {
|
|
6162
|
-
// This is a start code. Disable all styles this "overrides", then enable it
|
|
6163
|
-
returnValue = returnValue.filter(returnValueCode => returnValueCode.endCode !== code.endCode);
|
|
6164
|
-
returnValue.push(code);
|
|
6165
|
-
}
|
|
6166
|
-
}
|
|
6167
|
-
|
|
6168
|
-
return returnValue;
|
|
6169
|
-
}
|
|
6170
|
-
|
|
6171
|
-
function undoAnsiCodes(codes) {
|
|
6172
|
-
const reduced = reduceAnsiCodes(codes);
|
|
6173
|
-
const endCodes = reduced.map(({endCode}) => endCode);
|
|
6174
|
-
return endCodes.reverse().join('');
|
|
6175
|
-
}
|
|
6176
|
-
|
|
6177
|
-
function sliceAnsi(string, start, end) {
|
|
6178
|
-
const tokens = tokenize(string, end);
|
|
6179
|
-
let activeCodes = [];
|
|
6180
|
-
let position = 0;
|
|
6181
|
-
let returnValue = '';
|
|
6182
|
-
let include = false;
|
|
6183
|
-
|
|
6184
|
-
for (const token of tokens) {
|
|
6185
|
-
if (end !== undefined && position >= end) {
|
|
6186
|
-
break;
|
|
6187
|
-
}
|
|
6188
|
-
|
|
6189
|
-
if (token.type === 'ansi') {
|
|
6190
|
-
activeCodes.push(token);
|
|
6191
|
-
if (include) {
|
|
6192
|
-
returnValue += token.code;
|
|
6193
|
-
}
|
|
6194
|
-
} else {
|
|
6195
|
-
// Character
|
|
6196
|
-
if (!include && position >= start) {
|
|
6197
|
-
include = true;
|
|
6198
|
-
// Simplify active codes
|
|
6199
|
-
activeCodes = reduceAnsiCodes(activeCodes);
|
|
6200
|
-
returnValue = activeCodes.map(({code}) => code).join('');
|
|
6201
|
-
}
|
|
6202
|
-
|
|
6203
|
-
if (include) {
|
|
6204
|
-
returnValue += token.value;
|
|
6205
|
-
}
|
|
6206
|
-
|
|
6207
|
-
position += token.isFullWidth ? 2 : token.value.length;
|
|
6208
|
-
}
|
|
6209
|
-
}
|
|
6210
|
-
|
|
6211
|
-
// Disable active codes at the end
|
|
6212
|
-
returnValue += undoAnsiCodes(activeCodes);
|
|
6213
|
-
return returnValue;
|
|
6214
|
-
}
|
|
6215
|
-
|
|
6216
6400
|
const defaultTerminalHeight = 24;
|
|
6217
6401
|
|
|
6218
6402
|
const getWidth = stream => {
|
|
@@ -6226,7 +6410,7 @@ const getWidth = stream => {
|
|
|
6226
6410
|
};
|
|
6227
6411
|
|
|
6228
6412
|
const fitToTerminalHeight = (stream, text) => {
|
|
6229
|
-
const terminalHeight = stream.rows
|
|
6413
|
+
const terminalHeight = stream.rows || defaultTerminalHeight;
|
|
6230
6414
|
const lines = text.split('\n');
|
|
6231
6415
|
|
|
6232
6416
|
const toRemove = lines.length - terminalHeight;
|
|
@@ -6292,7 +6476,7 @@ createLogUpdate(process$2.stdout);
|
|
|
6292
6476
|
|
|
6293
6477
|
createLogUpdate(process$2.stderr);
|
|
6294
6478
|
|
|
6295
|
-
var version = "1.0.
|
|
6479
|
+
var version = "1.0.4";
|
|
6296
6480
|
|
|
6297
6481
|
async function printError(error, project, options) {
|
|
6298
6482
|
const { showCodeFrame = true, fullStack = false, type } = options;
|
|
@@ -14686,7 +14870,7 @@ function registerConsoleShortcuts(ctx) {
|
|
|
14686
14870
|
}
|
|
14687
14871
|
return ctx.exit(true);
|
|
14688
14872
|
}
|
|
14689
|
-
if (!isWindows
|
|
14873
|
+
if (!isWindows && key && key.ctrl && key.name === "z") {
|
|
14690
14874
|
process.kill(process.ppid, "SIGTSTP");
|
|
14691
14875
|
process.kill(process.pid, "SIGTSTP");
|
|
14692
14876
|
return;
|
|
@@ -2651,4 +2651,4 @@ const ReportersMap = {
|
|
|
2651
2651
|
"hanging-process": HangingProcessReporter
|
|
2652
2652
|
};
|
|
2653
2653
|
|
|
2654
|
-
export { BenchmarkReportsMap as B, DefaultReporter as D, F_POINTER as F, HangingProcessReporter as H, JsonReporter$1 as J, ReportersMap as R, TapReporter as T, VerboseReporter as V, ansiStyles as a,
|
|
2654
|
+
export { BenchmarkReportsMap as B, DefaultReporter as D, F_POINTER as F, HangingProcessReporter as H, JsonReporter$1 as J, ReportersMap as R, TapReporter as T, VerboseReporter as V, ansiStyles as a, sliceAnsi as b, cliTruncate as c, divider as d, BasicReporter as e, DotReporter as f, JUnitReporter as g, TapFlatReporter as h, stripAnsi as s };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.4",
|
|
5
5
|
"description": "Next generation testing framework powered by Vite",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -147,12 +147,12 @@
|
|
|
147
147
|
"tinypool": "^0.8.1",
|
|
148
148
|
"vite": "^5.0.0",
|
|
149
149
|
"why-is-node-running": "^2.2.2",
|
|
150
|
-
"@vitest/expect": "1.0.
|
|
151
|
-
"@vitest/
|
|
152
|
-
"@vitest/
|
|
153
|
-
"@vitest/
|
|
154
|
-
"
|
|
155
|
-
"
|
|
150
|
+
"@vitest/expect": "1.0.4",
|
|
151
|
+
"@vitest/runner": "1.0.4",
|
|
152
|
+
"@vitest/snapshot": "1.0.4",
|
|
153
|
+
"@vitest/utils": "1.0.4",
|
|
154
|
+
"@vitest/spy": "1.0.4",
|
|
155
|
+
"vite-node": "1.0.4"
|
|
156
156
|
},
|
|
157
157
|
"devDependencies": {
|
|
158
158
|
"@ampproject/remapping": "^2.2.1",
|