From 3b5da64c1d514e9b31aa05a39d84ab293aabe219 Mon Sep 17 00:00:00 2001 From: Daniel Rivas Date: Tue, 10 Feb 2026 10:23:52 +0000 Subject: [PATCH] Untrack node_modules (whoops) --- node_modules/.bin/esbuild | 18 - node_modules/.bin/tsc | 21 - node_modules/.bin/tsserver | 21 - node_modules/.bin/tsx | 21 - node_modules/.bin/vitest | 21 - .../results.json | 1 - .../deps/_metadata.json | 52 - .../deps/chunk-5WRI5ZAA.js | 30 - .../deps/chunk-5WRI5ZAA.js.map | 7 - .../deps/chunk-SGEW2ZTH.js | 119 - .../deps/chunk-SGEW2ZTH.js.map | 7 - .../deps/expect-type.js | 5 - .../deps/expect-type.js.map | 7 - .../deps/highlight__js_lib_core.js | 1552 ------- .../deps/highlight__js_lib_core.js.map | 7 - .../highlight__js_lib_languages_typescript.js | 819 ---- ...hlight__js_lib_languages_typescript.js.map | 7 - .../deps/package.json | 3 - .../deps/vitest___@vitest_expect___chai.js | 4061 ----------------- .../vitest___@vitest_expect___chai.js.map | 7 - ...itest___@vitest_snapshot___magic-string.js | 1309 ------ ...t___@vitest_snapshot___magic-string.js.map | 7 - .../deps/vitest___expect-type.js | 5 - .../deps/vitest___expect-type.js.map | 7 - node_modules/@types/node | 1 - node_modules/@vitest/browser | 1 - node_modules/@vitest/browser-playwright | 1 - node_modules/commander | 1 - node_modules/esbuild | 1 - node_modules/highlight.js | 1 - node_modules/tsx | 1 - node_modules/typescript | 1 - node_modules/vitest | 1 - 33 files changed, 8123 deletions(-) delete mode 100755 node_modules/.bin/esbuild delete mode 100755 node_modules/.bin/tsc delete mode 100755 node_modules/.bin/tsserver delete mode 100755 node_modules/.bin/tsx delete mode 100755 node_modules/.bin/vitest delete mode 100644 node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/_metadata.json delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/package.json delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js.map delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js delete mode 100644 node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js.map delete mode 120000 node_modules/@types/node delete mode 120000 node_modules/@vitest/browser delete mode 120000 node_modules/@vitest/browser-playwright delete mode 120000 node_modules/commander delete mode 120000 node_modules/esbuild delete mode 120000 node_modules/highlight.js delete mode 120000 node_modules/tsx delete mode 120000 node_modules/typescript delete mode 120000 node_modules/vitest diff --git a/node_modules/.bin/esbuild b/node_modules/.bin/esbuild deleted file mode 100755 index 8f4e2a7..0000000 --- a/node_modules/.bin/esbuild +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules/esbuild/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules/esbuild/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules" -else - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules/esbuild/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules/esbuild/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/esbuild@0.24.2/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules:$NODE_PATH" -fi -"$basedir/../.pnpm/esbuild@0.24.2/node_modules/esbuild/bin/esbuild" "$@" -exit $? diff --git a/node_modules/.bin/tsc b/node_modules/.bin/tsc deleted file mode 100755 index c1f2001..0000000 --- a/node_modules/.bin/tsc +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules" -else - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules:$NODE_PATH" -fi -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsc" "$@" -else - exec node "$basedir/../.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsc" "$@" -fi diff --git a/node_modules/.bin/tsserver b/node_modules/.bin/tsserver deleted file mode 100755 index f38caa7..0000000 --- a/node_modules/.bin/tsserver +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules" -else - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules:$NODE_PATH" -fi -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsserver" "$@" -else - exec node "$basedir/../.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsserver" "$@" -fi diff --git a/node_modules/.bin/tsx b/node_modules/.bin/tsx deleted file mode 100755 index 8317830..0000000 --- a/node_modules/.bin/tsx +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules" -else - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/tsx@4.21.0/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules:$NODE_PATH" -fi -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/tsx@4.21.0/node_modules/tsx/dist/cli.mjs" "$@" -else - exec node "$basedir/../.pnpm/tsx@4.21.0/node_modules/tsx/dist/cli.mjs" "$@" -fi diff --git a/node_modules/.bin/vitest b/node_modules/.bin/vitest deleted file mode 100755 index 3b3cd98..0000000 --- a/node_modules/.bin/vitest +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -z "$NODE_PATH" ]; then - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules/vitest/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules" -else - export NODE_PATH="/Users/drpz/dev/ts-callpath/node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules/vitest/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules:/Users/drpz/dev/ts-callpath/node_modules/.pnpm/node_modules:$NODE_PATH" -fi -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules/vitest/vitest.mjs" "$@" -else - exec node "$basedir/../.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules/vitest/vitest.mjs" "$@" -fi diff --git a/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json b/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json deleted file mode 100644 index 32d2646..0000000 --- a/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"4.0.18","results":[["browser (chromium):visualiser/src/__tests__/render.browser.test.ts",{"duration":14.5,"failed":false}],["unit:src/__tests__/codeowners.test.ts",{"duration":3.6234579999999994,"failed":false}],["unit:src/__tests__/parser.test.ts",{"duration":19.78804199999996,"failed":false}],["unit:src/__tests__/wrapperUnwrap.test.ts",{"duration":7.992000000000019,"failed":false}],["unit:visualiser/src/__tests__/layout-utils.unit.test.ts",{"duration":13.72233399999999,"failed":false}],["unit:src/__tests__/graph.test.ts",{"duration":3.7744169999999997,"failed":false}],["unit:src/__tests__/types.test.ts",{"duration":3.3089999999999975,"failed":false}],["unit:visualiser/src/__tests__/render-utils.unit.test.ts",{"duration":5.356040999999976,"failed":false}],["unit:src/__tests__/integration.test.ts",{"duration":29.360500000000002,"failed":false}],["unit:visualiser/src/__tests__/layout-integration.unit.test.ts",{"duration":8.220791999999989,"failed":false}],["unit:src/__tests__/dotRenderer.test.ts",{"duration":4.067958000000004,"failed":false}]]} \ No newline at end of file diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/_metadata.json b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/_metadata.json deleted file mode 100644 index 17e2896..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/_metadata.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "hash": "7b77b574", - "configHash": "828e9169", - "lockfileHash": "37237ce8", - "browserHash": "9665ba6c", - "optimized": { - "vitest > expect-type": { - "src": "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js", - "file": "vitest___expect-type.js", - "fileHash": "d53f277c", - "needsInterop": true - }, - "vitest > @vitest/snapshot > magic-string": { - "src": "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs", - "file": "vitest___@vitest_snapshot___magic-string.js", - "fileHash": "fb8cbb83", - "needsInterop": false - }, - "vitest > @vitest/expect > chai": { - "src": "../../../../.pnpm/chai@6.2.2/node_modules/chai/index.js", - "file": "vitest___@vitest_expect___chai.js", - "fileHash": "11c8364f", - "needsInterop": false - }, - "expect-type": { - "src": "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js", - "file": "expect-type.js", - "fileHash": "8420b4f4", - "needsInterop": true - }, - "highlight.js/lib/core": { - "src": "../../../../.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/core.js", - "file": "highlight__js_lib_core.js", - "fileHash": "beea6b15", - "needsInterop": false - }, - "highlight.js/lib/languages/typescript": { - "src": "../../../../.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/languages/typescript.js", - "file": "highlight__js_lib_languages_typescript.js", - "fileHash": "9db8d963", - "needsInterop": false - } - }, - "chunks": { - "chunk-SGEW2ZTH": { - "file": "chunk-SGEW2ZTH.js" - }, - "chunk-5WRI5ZAA": { - "file": "chunk-5WRI5ZAA.js" - } - } -} \ No newline at end of file diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js deleted file mode 100644 index 0e67478..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js +++ /dev/null @@ -1,30 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -export { - __commonJS, - __toESM -}; diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js.map deleted file mode 100644 index 9865211..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-5WRI5ZAA.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js deleted file mode 100644 index f1d14a0..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js +++ /dev/null @@ -1,119 +0,0 @@ -import { - __commonJS -} from "./chunk-5WRI5ZAA.js"; - -// node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js -var require_branding = __commonJS({ - "node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } -}); - -// node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js -var require_messages = __commonJS({ - "node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } -}); - -// node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js -var require_overloads = __commonJS({ - "node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } -}); - -// node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js -var require_utils = __commonJS({ - "node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - } -}); - -// node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js -var require_dist = __commonJS({ - "node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js"(exports) { - var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { - return m[k]; - } }; - } - Object.defineProperty(o, k2, desc); - }) : (function(o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - })); - var __exportStar = exports && exports.__exportStar || function(m, exports2) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.expectTypeOf = void 0; - __exportStar(require_branding(), exports); - __exportStar(require_messages(), exports); - __exportStar(require_overloads(), exports); - __exportStar(require_utils(), exports); - var fn = () => true; - var expectTypeOf = (_actual) => { - const nonFunctionProperties = [ - "parameters", - "returns", - "resolves", - "not", - "items", - "constructorParameters", - "thisParameter", - "instance", - "guards", - "asserts", - "branded" - ]; - const obj = { - /* eslint-disable @typescript-eslint/no-unsafe-assignment */ - toBeAny: fn, - toBeUnknown: fn, - toBeNever: fn, - toBeFunction: fn, - toBeObject: fn, - toBeArray: fn, - toBeString: fn, - toBeNumber: fn, - toBeBoolean: fn, - toBeVoid: fn, - toBeSymbol: fn, - toBeNull: fn, - toBeUndefined: fn, - toBeNullable: fn, - toBeBigInt: fn, - toMatchTypeOf: fn, - toEqualTypeOf: fn, - toBeConstructibleWith: fn, - toMatchObjectType: fn, - toExtend: fn, - map: exports.expectTypeOf, - toBeCallableWith: exports.expectTypeOf, - extract: exports.expectTypeOf, - exclude: exports.expectTypeOf, - pick: exports.expectTypeOf, - omit: exports.expectTypeOf, - toHaveProperty: exports.expectTypeOf, - parameter: exports.expectTypeOf - }; - const getterProperties = nonFunctionProperties; - getterProperties.forEach((prop) => Object.defineProperty(obj, prop, { get: () => (0, exports.expectTypeOf)({}) })); - return obj; - }; - exports.expectTypeOf = expectTypeOf; - } -}); - -export { - require_dist -}; -//# sourceMappingURL=chunk-SGEW2ZTH.js.map diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js.map deleted file mode 100644 index 01416bf..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/chunk-SGEW2ZTH.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js", "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js", "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js", "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js", "../../../../.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js"], - "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nconst inverted = Symbol('inverted');\n/**\n * @internal\n */\nconst expectNull = Symbol('expectNull');\n/**\n * @internal\n */\nconst expectUndefined = Symbol('expectUndefined');\n/**\n * @internal\n */\nconst expectNumber = Symbol('expectNumber');\n/**\n * @internal\n */\nconst expectString = Symbol('expectString');\n/**\n * @internal\n */\nconst expectBoolean = Symbol('expectBoolean');\n/**\n * @internal\n */\nconst expectVoid = Symbol('expectVoid');\n/**\n * @internal\n */\nconst expectFunction = Symbol('expectFunction');\n/**\n * @internal\n */\nconst expectObject = Symbol('expectObject');\n/**\n * @internal\n */\nconst expectArray = Symbol('expectArray');\n/**\n * @internal\n */\nconst expectSymbol = Symbol('expectSymbol');\n/**\n * @internal\n */\nconst expectAny = Symbol('expectAny');\n/**\n * @internal\n */\nconst expectUnknown = Symbol('expectUnknown');\n/**\n * @internal\n */\nconst expectNever = Symbol('expectNever');\n/**\n * @internal\n */\nconst expectNullable = Symbol('expectNullable');\n/**\n * @internal\n */\nconst expectBigInt = Symbol('expectBigInt');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nconst secret = Symbol('secret');\n/**\n * @internal\n */\nconst mismatch = Symbol('mismatch');\n/**\n * A type which should match anything passed as a value but *doesn't*\n * match {@linkcode Mismatch}. It helps TypeScript select the right overload\n * for {@linkcode PositiveExpectTypeOf.toEqualTypeOf | .toEqualTypeOf()} and\n * {@linkcode PositiveExpectTypeOf.toMatchTypeOf | .toMatchTypeOf()}.\n *\n * @internal\n */\nconst avalue = Symbol('avalue');\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expectTypeOf = void 0;\n__exportStar(require(\"./branding\"), exports); // backcompat, consider removing in next major version\n__exportStar(require(\"./messages\"), exports); // backcompat, consider removing in next major version\n__exportStar(require(\"./overloads\"), exports);\n__exportStar(require(\"./utils\"), exports); // backcompat, consider removing in next major version\nconst fn = () => true;\n/**\n * Similar to Jest's `expect`, but with type-awareness.\n * Gives you access to a number of type-matchers that let you make assertions about the\n * form of a reference or generic type parameter.\n *\n * @example\n * ```ts\n * import { foo, bar } from '../foo'\n * import { expectTypeOf } from 'expect-type'\n *\n * test('foo types', () => {\n * // make sure `foo` has type { a: number }\n * expectTypeOf(foo).toMatchTypeOf({ a: 1 })\n * expectTypeOf(foo).toHaveProperty('a').toBeNumber()\n *\n * // make sure `bar` is a function taking a string:\n * expectTypeOf(bar).parameter(0).toBeString()\n * expectTypeOf(bar).returns.not.toBeAny()\n * })\n * ```\n *\n * @description\n * See the [full docs](https://npmjs.com/package/expect-type#documentation) for lots more examples.\n */\nconst expectTypeOf = (_actual) => {\n const nonFunctionProperties = [\n 'parameters',\n 'returns',\n 'resolves',\n 'not',\n 'items',\n 'constructorParameters',\n 'thisParameter',\n 'instance',\n 'guards',\n 'asserts',\n 'branded',\n ];\n const obj = {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n toBeAny: fn,\n toBeUnknown: fn,\n toBeNever: fn,\n toBeFunction: fn,\n toBeObject: fn,\n toBeArray: fn,\n toBeString: fn,\n toBeNumber: fn,\n toBeBoolean: fn,\n toBeVoid: fn,\n toBeSymbol: fn,\n toBeNull: fn,\n toBeUndefined: fn,\n toBeNullable: fn,\n toBeBigInt: fn,\n toMatchTypeOf: fn,\n toEqualTypeOf: fn,\n toBeConstructibleWith: fn,\n toMatchObjectType: fn,\n toExtend: fn,\n map: exports.expectTypeOf,\n toBeCallableWith: exports.expectTypeOf,\n extract: exports.expectTypeOf,\n exclude: exports.expectTypeOf,\n pick: exports.expectTypeOf,\n omit: exports.expectTypeOf,\n toHaveProperty: exports.expectTypeOf,\n parameter: exports.expectTypeOf,\n };\n const getterProperties = nonFunctionProperties;\n getterProperties.forEach((prop) => Object.defineProperty(obj, prop, { get: () => (0, exports.expectTypeOf)({}) }));\n return obj;\n};\nexports.expectTypeOf = expectTypeOf;\n"], - "mappings": ";;;;;AAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,iBAAO,EAAE,CAAC;AAAA,QAAG,EAAE;AAAA,MAC9D;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgB,WAAQ,QAAK,gBAAiB,SAAS,GAAGA,UAAS;AACnE,eAAS,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC,EAAG,iBAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,eAAe;AACvB,iBAAa,oBAAuB,OAAO;AAC3C,iBAAa,oBAAuB,OAAO;AAC3C,iBAAa,qBAAwB,OAAO;AAC5C,iBAAa,iBAAoB,OAAO;AACxC,QAAM,KAAK,MAAM;AAyBjB,QAAM,eAAe,CAAC,YAAY;AAC9B,YAAM,wBAAwB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,YAAM,MAAM;AAAA;AAAA,QAER,SAAS;AAAA,QACT,aAAa;AAAA,QACb,WAAW;AAAA,QACX,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,QACf,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,eAAe;AAAA,QACf,uBAAuB;AAAA,QACvB,mBAAmB;AAAA,QACnB,UAAU;AAAA,QACV,KAAK,QAAQ;AAAA,QACb,kBAAkB,QAAQ;AAAA,QAC1B,SAAS,QAAQ;AAAA,QACjB,SAAS,QAAQ;AAAA,QACjB,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,QACd,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,MACvB;AACA,YAAM,mBAAmB;AACzB,uBAAiB,QAAQ,CAAC,SAAS,OAAO,eAAe,KAAK,MAAM,EAAE,KAAK,OAAO,GAAG,QAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;AACjH,aAAO;AAAA,IACX;AACA,YAAQ,eAAe;AAAA;AAAA;", - "names": ["exports"] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js deleted file mode 100644 index 964fcf4..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js +++ /dev/null @@ -1,5 +0,0 @@ -import { - require_dist -} from "./chunk-SGEW2ZTH.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_dist(); diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js.map deleted file mode 100644 index 9865211..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/expect-type.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js deleted file mode 100644 index f147d08..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js +++ /dev/null @@ -1,1552 +0,0 @@ -import { - __commonJS, - __toESM -} from "./chunk-5WRI5ZAA.js"; - -// node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/lib/core.js -var require_core = __commonJS({ - "node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/lib/core.js"(exports, module) { - function deepFreeze(obj) { - if (obj instanceof Map) { - obj.clear = obj.delete = obj.set = function() { - throw new Error("map is read-only"); - }; - } else if (obj instanceof Set) { - obj.add = obj.clear = obj.delete = function() { - throw new Error("set is read-only"); - }; - } - Object.freeze(obj); - Object.getOwnPropertyNames(obj).forEach((name) => { - const prop = obj[name]; - const type = typeof prop; - if ((type === "object" || type === "function") && !Object.isFrozen(prop)) { - deepFreeze(prop); - } - }); - return obj; - } - var Response = class { - /** - * @param {CompiledMode} mode - */ - constructor(mode) { - if (mode.data === void 0) mode.data = {}; - this.data = mode.data; - this.isMatchIgnored = false; - } - ignoreMatch() { - this.isMatchIgnored = true; - } - }; - function escapeHTML(value) { - return value.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); - } - function inherit$1(original, ...objects) { - const result = /* @__PURE__ */ Object.create(null); - for (const key in original) { - result[key] = original[key]; - } - objects.forEach(function(obj) { - for (const key in obj) { - result[key] = obj[key]; - } - }); - return ( - /** @type {T} */ - result - ); - } - var SPAN_CLOSE = ""; - var emitsWrappingTags = (node) => { - return !!node.scope; - }; - var scopeToCSSClass = (name, { prefix }) => { - if (name.startsWith("language:")) { - return name.replace("language:", "language-"); - } - if (name.includes(".")) { - const pieces = name.split("."); - return [ - `${prefix}${pieces.shift()}`, - ...pieces.map((x, i) => `${x}${"_".repeat(i + 1)}`) - ].join(" "); - } - return `${prefix}${name}`; - }; - var HTMLRenderer = class { - /** - * Creates a new HTMLRenderer - * - * @param {Tree} parseTree - the parse tree (must support `walk` API) - * @param {{classPrefix: string}} options - */ - constructor(parseTree, options) { - this.buffer = ""; - this.classPrefix = options.classPrefix; - parseTree.walk(this); - } - /** - * Adds texts to the output stream - * - * @param {string} text */ - addText(text) { - this.buffer += escapeHTML(text); - } - /** - * Adds a node open to the output stream (if needed) - * - * @param {Node} node */ - openNode(node) { - if (!emitsWrappingTags(node)) return; - const className = scopeToCSSClass( - node.scope, - { prefix: this.classPrefix } - ); - this.span(className); - } - /** - * Adds a node close to the output stream (if needed) - * - * @param {Node} node */ - closeNode(node) { - if (!emitsWrappingTags(node)) return; - this.buffer += SPAN_CLOSE; - } - /** - * returns the accumulated buffer - */ - value() { - return this.buffer; - } - // helpers - /** - * Builds a span element - * - * @param {string} className */ - span(className) { - this.buffer += ``; - } - }; - var newNode = (opts = {}) => { - const result = { children: [] }; - Object.assign(result, opts); - return result; - }; - var TokenTree = class _TokenTree { - constructor() { - this.rootNode = newNode(); - this.stack = [this.rootNode]; - } - get top() { - return this.stack[this.stack.length - 1]; - } - get root() { - return this.rootNode; - } - /** @param {Node} node */ - add(node) { - this.top.children.push(node); - } - /** @param {string} scope */ - openNode(scope) { - const node = newNode({ scope }); - this.add(node); - this.stack.push(node); - } - closeNode() { - if (this.stack.length > 1) { - return this.stack.pop(); - } - return void 0; - } - closeAllNodes() { - while (this.closeNode()) ; - } - toJSON() { - return JSON.stringify(this.rootNode, null, 4); - } - /** - * @typedef { import("./html_renderer").Renderer } Renderer - * @param {Renderer} builder - */ - walk(builder) { - return this.constructor._walk(builder, this.rootNode); - } - /** - * @param {Renderer} builder - * @param {Node} node - */ - static _walk(builder, node) { - if (typeof node === "string") { - builder.addText(node); - } else if (node.children) { - builder.openNode(node); - node.children.forEach((child) => this._walk(builder, child)); - builder.closeNode(node); - } - return builder; - } - /** - * @param {Node} node - */ - static _collapse(node) { - if (typeof node === "string") return; - if (!node.children) return; - if (node.children.every((el) => typeof el === "string")) { - node.children = [node.children.join("")]; - } else { - node.children.forEach((child) => { - _TokenTree._collapse(child); - }); - } - } - }; - var TokenTreeEmitter = class extends TokenTree { - /** - * @param {*} options - */ - constructor(options) { - super(); - this.options = options; - } - /** - * @param {string} text - */ - addText(text) { - if (text === "") { - return; - } - this.add(text); - } - /** @param {string} scope */ - startScope(scope) { - this.openNode(scope); - } - endScope() { - this.closeNode(); - } - /** - * @param {Emitter & {root: DataNode}} emitter - * @param {string} name - */ - __addSublanguage(emitter, name) { - const node = emitter.root; - if (name) node.scope = `language:${name}`; - this.add(node); - } - toHTML() { - const renderer = new HTMLRenderer(this, this.options); - return renderer.value(); - } - finalize() { - this.closeAllNodes(); - return true; - } - }; - function source(re) { - if (!re) return null; - if (typeof re === "string") return re; - return re.source; - } - function lookahead(re) { - return concat("(?=", re, ")"); - } - function anyNumberOfTimes(re) { - return concat("(?:", re, ")*"); - } - function optional(re) { - return concat("(?:", re, ")?"); - } - function concat(...args) { - const joined = args.map((x) => source(x)).join(""); - return joined; - } - function stripOptionsFromArgs(args) { - const opts = args[args.length - 1]; - if (typeof opts === "object" && opts.constructor === Object) { - args.splice(args.length - 1, 1); - return opts; - } else { - return {}; - } - } - function either(...args) { - const opts = stripOptionsFromArgs(args); - const joined = "(" + (opts.capture ? "" : "?:") + args.map((x) => source(x)).join("|") + ")"; - return joined; - } - function countMatchGroups(re) { - return new RegExp(re.toString() + "|").exec("").length - 1; - } - function startsWith(re, lexeme) { - const match = re && re.exec(lexeme); - return match && match.index === 0; - } - var BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; - function _rewriteBackreferences(regexps, { joinWith }) { - let numCaptures = 0; - return regexps.map((regex) => { - numCaptures += 1; - const offset = numCaptures; - let re = source(regex); - let out = ""; - while (re.length > 0) { - const match = BACKREF_RE.exec(re); - if (!match) { - out += re; - break; - } - out += re.substring(0, match.index); - re = re.substring(match.index + match[0].length); - if (match[0][0] === "\\" && match[1]) { - out += "\\" + String(Number(match[1]) + offset); - } else { - out += match[0]; - if (match[0] === "(") { - numCaptures++; - } - } - } - return out; - }).map((re) => `(${re})`).join(joinWith); - } - var MATCH_NOTHING_RE = /\b\B/; - var IDENT_RE = "[a-zA-Z]\\w*"; - var UNDERSCORE_IDENT_RE = "[a-zA-Z_]\\w*"; - var NUMBER_RE = "\\b\\d+(\\.\\d+)?"; - var C_NUMBER_RE = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"; - var BINARY_NUMBER_RE = "\\b(0b[01]+)"; - var RE_STARTERS_RE = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~"; - var SHEBANG = (opts = {}) => { - const beginShebang = /^#![ ]*\//; - if (opts.binary) { - opts.begin = concat( - beginShebang, - /.*\b/, - opts.binary, - /\b.*/ - ); - } - return inherit$1({ - scope: "meta", - begin: beginShebang, - end: /$/, - relevance: 0, - /** @type {ModeCallback} */ - "on:begin": (m, resp) => { - if (m.index !== 0) resp.ignoreMatch(); - } - }, opts); - }; - var BACKSLASH_ESCAPE = { - begin: "\\\\[\\s\\S]", - relevance: 0 - }; - var APOS_STRING_MODE = { - scope: "string", - begin: "'", - end: "'", - illegal: "\\n", - contains: [BACKSLASH_ESCAPE] - }; - var QUOTE_STRING_MODE = { - scope: "string", - begin: '"', - end: '"', - illegal: "\\n", - contains: [BACKSLASH_ESCAPE] - }; - var PHRASAL_WORDS_MODE = { - begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ - }; - var COMMENT = function(begin, end, modeOptions = {}) { - const mode = inherit$1( - { - scope: "comment", - begin, - end, - contains: [] - }, - modeOptions - ); - mode.contains.push({ - scope: "doctag", - // hack to avoid the space from being included. the space is necessary to - // match here to prevent the plain text rule below from gobbling up doctags - begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", - end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/, - excludeBegin: true, - relevance: 0 - }); - const ENGLISH_WORD = either( - // list of common 1 and 2 letter words in English - "I", - "a", - "is", - "so", - "us", - "to", - "at", - "if", - "in", - "it", - "on", - // note: this is not an exhaustive list of contractions, just popular ones - /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, - // contractions - can't we'd they're let's, etc - /[A-Za-z]+[-][a-z]+/, - // `no-way`, etc. - /[A-Za-z][a-z]{2,}/ - // allow capitalized words at beginning of sentences - ); - mode.contains.push( - { - // TODO: how to include ", (, ) without breaking grammars that use these for - // comment delimiters? - // begin: /[ ]+([()"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()":]?([.][ ]|[ ]|\))){3}/ - // --- - // this tries to find sequences of 3 english words in a row (without any - // "programming" type syntax) this gives us a strong signal that we've - // TRULY found a comment - vs perhaps scanning with the wrong language. - // It's possible to find something that LOOKS like the start of the - // comment - but then if there is no readable text - good chance it is a - // false match and not a comment. - // - // for a visual example please see: - // https://github.com/highlightjs/highlight.js/issues/2827 - begin: concat( - /[ ]+/, - // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */ - "(", - ENGLISH_WORD, - /[.]?[:]?([.][ ]|[ ])/, - "){3}" - ) - // look for 3 words in a row - } - ); - return mode; - }; - var C_LINE_COMMENT_MODE = COMMENT("//", "$"); - var C_BLOCK_COMMENT_MODE = COMMENT("/\\*", "\\*/"); - var HASH_COMMENT_MODE = COMMENT("#", "$"); - var NUMBER_MODE = { - scope: "number", - begin: NUMBER_RE, - relevance: 0 - }; - var C_NUMBER_MODE = { - scope: "number", - begin: C_NUMBER_RE, - relevance: 0 - }; - var BINARY_NUMBER_MODE = { - scope: "number", - begin: BINARY_NUMBER_RE, - relevance: 0 - }; - var REGEXP_MODE = { - scope: "regexp", - begin: /\/(?=[^/\n]*\/)/, - end: /\/[gimuy]*/, - contains: [ - BACKSLASH_ESCAPE, - { - begin: /\[/, - end: /\]/, - relevance: 0, - contains: [BACKSLASH_ESCAPE] - } - ] - }; - var TITLE_MODE = { - scope: "title", - begin: IDENT_RE, - relevance: 0 - }; - var UNDERSCORE_TITLE_MODE = { - scope: "title", - begin: UNDERSCORE_IDENT_RE, - relevance: 0 - }; - var METHOD_GUARD = { - // excludes method names from keyword processing - begin: "\\.\\s*" + UNDERSCORE_IDENT_RE, - relevance: 0 - }; - var END_SAME_AS_BEGIN = function(mode) { - return Object.assign( - mode, - { - /** @type {ModeCallback} */ - "on:begin": (m, resp) => { - resp.data._beginMatch = m[1]; - }, - /** @type {ModeCallback} */ - "on:end": (m, resp) => { - if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); - } - } - ); - }; - var MODES = Object.freeze({ - __proto__: null, - APOS_STRING_MODE, - BACKSLASH_ESCAPE, - BINARY_NUMBER_MODE, - BINARY_NUMBER_RE, - COMMENT, - C_BLOCK_COMMENT_MODE, - C_LINE_COMMENT_MODE, - C_NUMBER_MODE, - C_NUMBER_RE, - END_SAME_AS_BEGIN, - HASH_COMMENT_MODE, - IDENT_RE, - MATCH_NOTHING_RE, - METHOD_GUARD, - NUMBER_MODE, - NUMBER_RE, - PHRASAL_WORDS_MODE, - QUOTE_STRING_MODE, - REGEXP_MODE, - RE_STARTERS_RE, - SHEBANG, - TITLE_MODE, - UNDERSCORE_IDENT_RE, - UNDERSCORE_TITLE_MODE - }); - function skipIfHasPrecedingDot(match, response) { - const before = match.input[match.index - 1]; - if (before === ".") { - response.ignoreMatch(); - } - } - function scopeClassName(mode, _parent) { - if (mode.className !== void 0) { - mode.scope = mode.className; - delete mode.className; - } - } - function beginKeywords(mode, parent) { - if (!parent) return; - if (!mode.beginKeywords) return; - mode.begin = "\\b(" + mode.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)"; - mode.__beforeBegin = skipIfHasPrecedingDot; - mode.keywords = mode.keywords || mode.beginKeywords; - delete mode.beginKeywords; - if (mode.relevance === void 0) mode.relevance = 0; - } - function compileIllegal(mode, _parent) { - if (!Array.isArray(mode.illegal)) return; - mode.illegal = either(...mode.illegal); - } - function compileMatch(mode, _parent) { - if (!mode.match) return; - if (mode.begin || mode.end) throw new Error("begin & end are not supported with match"); - mode.begin = mode.match; - delete mode.match; - } - function compileRelevance(mode, _parent) { - if (mode.relevance === void 0) mode.relevance = 1; - } - var beforeMatchExt = (mode, parent) => { - if (!mode.beforeMatch) return; - if (mode.starts) throw new Error("beforeMatch cannot be used with starts"); - const originalMode = Object.assign({}, mode); - Object.keys(mode).forEach((key) => { - delete mode[key]; - }); - mode.keywords = originalMode.keywords; - mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin)); - mode.starts = { - relevance: 0, - contains: [ - Object.assign(originalMode, { endsParent: true }) - ] - }; - mode.relevance = 0; - delete originalMode.beforeMatch; - }; - var COMMON_KEYWORDS = [ - "of", - "and", - "for", - "in", - "not", - "or", - "if", - "then", - "parent", - // common variable name - "list", - // common variable name - "value" - // common variable name - ]; - var DEFAULT_KEYWORD_SCOPE = "keyword"; - function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) { - const compiledKeywords = /* @__PURE__ */ Object.create(null); - if (typeof rawKeywords === "string") { - compileList(scopeName, rawKeywords.split(" ")); - } else if (Array.isArray(rawKeywords)) { - compileList(scopeName, rawKeywords); - } else { - Object.keys(rawKeywords).forEach(function(scopeName2) { - Object.assign( - compiledKeywords, - compileKeywords(rawKeywords[scopeName2], caseInsensitive, scopeName2) - ); - }); - } - return compiledKeywords; - function compileList(scopeName2, keywordList) { - if (caseInsensitive) { - keywordList = keywordList.map((x) => x.toLowerCase()); - } - keywordList.forEach(function(keyword) { - const pair = keyword.split("|"); - compiledKeywords[pair[0]] = [scopeName2, scoreForKeyword(pair[0], pair[1])]; - }); - } - } - function scoreForKeyword(keyword, providedScore) { - if (providedScore) { - return Number(providedScore); - } - return commonKeyword(keyword) ? 0 : 1; - } - function commonKeyword(keyword) { - return COMMON_KEYWORDS.includes(keyword.toLowerCase()); - } - var seenDeprecations = {}; - var error = (message) => { - console.error(message); - }; - var warn = (message, ...args) => { - console.log(`WARN: ${message}`, ...args); - }; - var deprecated = (version2, message) => { - if (seenDeprecations[`${version2}/${message}`]) return; - console.log(`Deprecated as of ${version2}. ${message}`); - seenDeprecations[`${version2}/${message}`] = true; - }; - var MultiClassError = new Error(); - function remapScopeNames(mode, regexes, { key }) { - let offset = 0; - const scopeNames = mode[key]; - const emit = {}; - const positions = {}; - for (let i = 1; i <= regexes.length; i++) { - positions[i + offset] = scopeNames[i]; - emit[i + offset] = true; - offset += countMatchGroups(regexes[i - 1]); - } - mode[key] = positions; - mode[key]._emit = emit; - mode[key]._multi = true; - } - function beginMultiClass(mode) { - if (!Array.isArray(mode.begin)) return; - if (mode.skip || mode.excludeBegin || mode.returnBegin) { - error("skip, excludeBegin, returnBegin not compatible with beginScope: {}"); - throw MultiClassError; - } - if (typeof mode.beginScope !== "object" || mode.beginScope === null) { - error("beginScope must be object"); - throw MultiClassError; - } - remapScopeNames(mode, mode.begin, { key: "beginScope" }); - mode.begin = _rewriteBackreferences(mode.begin, { joinWith: "" }); - } - function endMultiClass(mode) { - if (!Array.isArray(mode.end)) return; - if (mode.skip || mode.excludeEnd || mode.returnEnd) { - error("skip, excludeEnd, returnEnd not compatible with endScope: {}"); - throw MultiClassError; - } - if (typeof mode.endScope !== "object" || mode.endScope === null) { - error("endScope must be object"); - throw MultiClassError; - } - remapScopeNames(mode, mode.end, { key: "endScope" }); - mode.end = _rewriteBackreferences(mode.end, { joinWith: "" }); - } - function scopeSugar(mode) { - if (mode.scope && typeof mode.scope === "object" && mode.scope !== null) { - mode.beginScope = mode.scope; - delete mode.scope; - } - } - function MultiClass(mode) { - scopeSugar(mode); - if (typeof mode.beginScope === "string") { - mode.beginScope = { _wrap: mode.beginScope }; - } - if (typeof mode.endScope === "string") { - mode.endScope = { _wrap: mode.endScope }; - } - beginMultiClass(mode); - endMultiClass(mode); - } - function compileLanguage(language) { - function langRe(value, global) { - return new RegExp( - source(value), - "m" + (language.case_insensitive ? "i" : "") + (language.unicodeRegex ? "u" : "") + (global ? "g" : "") - ); - } - class MultiRegex { - constructor() { - this.matchIndexes = {}; - this.regexes = []; - this.matchAt = 1; - this.position = 0; - } - // @ts-ignore - addRule(re, opts) { - opts.position = this.position++; - this.matchIndexes[this.matchAt] = opts; - this.regexes.push([opts, re]); - this.matchAt += countMatchGroups(re) + 1; - } - compile() { - if (this.regexes.length === 0) { - this.exec = () => null; - } - const terminators = this.regexes.map((el) => el[1]); - this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: "|" }), true); - this.lastIndex = 0; - } - /** @param {string} s */ - exec(s) { - this.matcherRe.lastIndex = this.lastIndex; - const match = this.matcherRe.exec(s); - if (!match) { - return null; - } - const i = match.findIndex((el, i2) => i2 > 0 && el !== void 0); - const matchData = this.matchIndexes[i]; - match.splice(0, i); - return Object.assign(match, matchData); - } - } - class ResumableMultiRegex { - constructor() { - this.rules = []; - this.multiRegexes = []; - this.count = 0; - this.lastIndex = 0; - this.regexIndex = 0; - } - // @ts-ignore - getMatcher(index) { - if (this.multiRegexes[index]) return this.multiRegexes[index]; - const matcher = new MultiRegex(); - this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts)); - matcher.compile(); - this.multiRegexes[index] = matcher; - return matcher; - } - resumingScanAtSamePosition() { - return this.regexIndex !== 0; - } - considerAll() { - this.regexIndex = 0; - } - // @ts-ignore - addRule(re, opts) { - this.rules.push([re, opts]); - if (opts.type === "begin") this.count++; - } - /** @param {string} s */ - exec(s) { - const m = this.getMatcher(this.regexIndex); - m.lastIndex = this.lastIndex; - let result = m.exec(s); - if (this.resumingScanAtSamePosition()) { - if (result && result.index === this.lastIndex) ; - else { - const m2 = this.getMatcher(0); - m2.lastIndex = this.lastIndex + 1; - result = m2.exec(s); - } - } - if (result) { - this.regexIndex += result.position + 1; - if (this.regexIndex === this.count) { - this.considerAll(); - } - } - return result; - } - } - function buildModeRegex(mode) { - const mm = new ResumableMultiRegex(); - mode.contains.forEach((term) => mm.addRule(term.begin, { rule: term, type: "begin" })); - if (mode.terminatorEnd) { - mm.addRule(mode.terminatorEnd, { type: "end" }); - } - if (mode.illegal) { - mm.addRule(mode.illegal, { type: "illegal" }); - } - return mm; - } - function compileMode(mode, parent) { - const cmode = ( - /** @type CompiledMode */ - mode - ); - if (mode.isCompiled) return cmode; - [ - scopeClassName, - // do this early so compiler extensions generally don't have to worry about - // the distinction between match/begin - compileMatch, - MultiClass, - beforeMatchExt - ].forEach((ext) => ext(mode, parent)); - language.compilerExtensions.forEach((ext) => ext(mode, parent)); - mode.__beforeBegin = null; - [ - beginKeywords, - // do this later so compiler extensions that come earlier have access to the - // raw array if they wanted to perhaps manipulate it, etc. - compileIllegal, - // default to 1 relevance if not specified - compileRelevance - ].forEach((ext) => ext(mode, parent)); - mode.isCompiled = true; - let keywordPattern = null; - if (typeof mode.keywords === "object" && mode.keywords.$pattern) { - mode.keywords = Object.assign({}, mode.keywords); - keywordPattern = mode.keywords.$pattern; - delete mode.keywords.$pattern; - } - keywordPattern = keywordPattern || /\w+/; - if (mode.keywords) { - mode.keywords = compileKeywords(mode.keywords, language.case_insensitive); - } - cmode.keywordPatternRe = langRe(keywordPattern, true); - if (parent) { - if (!mode.begin) mode.begin = /\B|\b/; - cmode.beginRe = langRe(cmode.begin); - if (!mode.end && !mode.endsWithParent) mode.end = /\B|\b/; - if (mode.end) cmode.endRe = langRe(cmode.end); - cmode.terminatorEnd = source(cmode.end) || ""; - if (mode.endsWithParent && parent.terminatorEnd) { - cmode.terminatorEnd += (mode.end ? "|" : "") + parent.terminatorEnd; - } - } - if (mode.illegal) cmode.illegalRe = langRe( - /** @type {RegExp | string} */ - mode.illegal - ); - if (!mode.contains) mode.contains = []; - mode.contains = [].concat(...mode.contains.map(function(c) { - return expandOrCloneMode(c === "self" ? mode : c); - })); - mode.contains.forEach(function(c) { - compileMode( - /** @type Mode */ - c, - cmode - ); - }); - if (mode.starts) { - compileMode(mode.starts, parent); - } - cmode.matcher = buildModeRegex(cmode); - return cmode; - } - if (!language.compilerExtensions) language.compilerExtensions = []; - if (language.contains && language.contains.includes("self")) { - throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation."); - } - language.classNameAliases = inherit$1(language.classNameAliases || {}); - return compileMode( - /** @type Mode */ - language - ); - } - function dependencyOnParent(mode) { - if (!mode) return false; - return mode.endsWithParent || dependencyOnParent(mode.starts); - } - function expandOrCloneMode(mode) { - if (mode.variants && !mode.cachedVariants) { - mode.cachedVariants = mode.variants.map(function(variant) { - return inherit$1(mode, { variants: null }, variant); - }); - } - if (mode.cachedVariants) { - return mode.cachedVariants; - } - if (dependencyOnParent(mode)) { - return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null }); - } - if (Object.isFrozen(mode)) { - return inherit$1(mode); - } - return mode; - } - var version = "11.11.1"; - var HTMLInjectionError = class extends Error { - constructor(reason, html) { - super(reason); - this.name = "HTMLInjectionError"; - this.html = html; - } - }; - var escape = escapeHTML; - var inherit = inherit$1; - var NO_MATCH = /* @__PURE__ */ Symbol("nomatch"); - var MAX_KEYWORD_HITS = 7; - var HLJS = function(hljs) { - const languages = /* @__PURE__ */ Object.create(null); - const aliases = /* @__PURE__ */ Object.create(null); - const plugins = []; - let SAFE_MODE = true; - const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?"; - const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: "Plain text", contains: [] }; - let options = { - ignoreUnescapedHTML: false, - throwUnescapedHTML: false, - noHighlightRe: /^(no-?highlight)$/i, - languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, - classPrefix: "hljs-", - cssSelector: "pre code", - languages: null, - // beta configuration options, subject to change, welcome to discuss - // https://github.com/highlightjs/highlight.js/issues/1086 - __emitter: TokenTreeEmitter - }; - function shouldNotHighlight(languageName) { - return options.noHighlightRe.test(languageName); - } - function blockLanguage(block) { - let classes = block.className + " "; - classes += block.parentNode ? block.parentNode.className : ""; - const match = options.languageDetectRe.exec(classes); - if (match) { - const language = getLanguage(match[1]); - if (!language) { - warn(LANGUAGE_NOT_FOUND.replace("{}", match[1])); - warn("Falling back to no-highlight mode for this block.", block); - } - return language ? match[1] : "no-highlight"; - } - return classes.split(/\s+/).find((_class) => shouldNotHighlight(_class) || getLanguage(_class)); - } - function highlight2(codeOrLanguageName, optionsOrCode, ignoreIllegals) { - let code = ""; - let languageName = ""; - if (typeof optionsOrCode === "object") { - code = codeOrLanguageName; - ignoreIllegals = optionsOrCode.ignoreIllegals; - languageName = optionsOrCode.language; - } else { - deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated."); - deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"); - languageName = codeOrLanguageName; - code = optionsOrCode; - } - if (ignoreIllegals === void 0) { - ignoreIllegals = true; - } - const context = { - code, - language: languageName - }; - fire("before:highlight", context); - const result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals); - result.code = context.code; - fire("after:highlight", result); - return result; - } - function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) { - const keywordHits = /* @__PURE__ */ Object.create(null); - function keywordData(mode, matchText) { - return mode.keywords[matchText]; - } - function processKeywords() { - if (!top.keywords) { - emitter.addText(modeBuffer); - return; - } - let lastIndex = 0; - top.keywordPatternRe.lastIndex = 0; - let match = top.keywordPatternRe.exec(modeBuffer); - let buf = ""; - while (match) { - buf += modeBuffer.substring(lastIndex, match.index); - const word = language.case_insensitive ? match[0].toLowerCase() : match[0]; - const data = keywordData(top, word); - if (data) { - const [kind, keywordRelevance] = data; - emitter.addText(buf); - buf = ""; - keywordHits[word] = (keywordHits[word] || 0) + 1; - if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance; - if (kind.startsWith("_")) { - buf += match[0]; - } else { - const cssClass = language.classNameAliases[kind] || kind; - emitKeyword(match[0], cssClass); - } - } else { - buf += match[0]; - } - lastIndex = top.keywordPatternRe.lastIndex; - match = top.keywordPatternRe.exec(modeBuffer); - } - buf += modeBuffer.substring(lastIndex); - emitter.addText(buf); - } - function processSubLanguage() { - if (modeBuffer === "") return; - let result2 = null; - if (typeof top.subLanguage === "string") { - if (!languages[top.subLanguage]) { - emitter.addText(modeBuffer); - return; - } - result2 = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]); - continuations[top.subLanguage] = /** @type {CompiledMode} */ - result2._top; - } else { - result2 = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null); - } - if (top.relevance > 0) { - relevance += result2.relevance; - } - emitter.__addSublanguage(result2._emitter, result2.language); - } - function processBuffer() { - if (top.subLanguage != null) { - processSubLanguage(); - } else { - processKeywords(); - } - modeBuffer = ""; - } - function emitKeyword(keyword, scope) { - if (keyword === "") return; - emitter.startScope(scope); - emitter.addText(keyword); - emitter.endScope(); - } - function emitMultiClass(scope, match) { - let i = 1; - const max = match.length - 1; - while (i <= max) { - if (!scope._emit[i]) { - i++; - continue; - } - const klass = language.classNameAliases[scope[i]] || scope[i]; - const text = match[i]; - if (klass) { - emitKeyword(text, klass); - } else { - modeBuffer = text; - processKeywords(); - modeBuffer = ""; - } - i++; - } - } - function startNewMode(mode, match) { - if (mode.scope && typeof mode.scope === "string") { - emitter.openNode(language.classNameAliases[mode.scope] || mode.scope); - } - if (mode.beginScope) { - if (mode.beginScope._wrap) { - emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap); - modeBuffer = ""; - } else if (mode.beginScope._multi) { - emitMultiClass(mode.beginScope, match); - modeBuffer = ""; - } - } - top = Object.create(mode, { parent: { value: top } }); - return top; - } - function endOfMode(mode, match, matchPlusRemainder) { - let matched = startsWith(mode.endRe, matchPlusRemainder); - if (matched) { - if (mode["on:end"]) { - const resp = new Response(mode); - mode["on:end"](match, resp); - if (resp.isMatchIgnored) matched = false; - } - if (matched) { - while (mode.endsParent && mode.parent) { - mode = mode.parent; - } - return mode; - } - } - if (mode.endsWithParent) { - return endOfMode(mode.parent, match, matchPlusRemainder); - } - } - function doIgnore(lexeme) { - if (top.matcher.regexIndex === 0) { - modeBuffer += lexeme[0]; - return 1; - } else { - resumeScanAtSamePosition = true; - return 0; - } - } - function doBeginMatch(match) { - const lexeme = match[0]; - const newMode = match.rule; - const resp = new Response(newMode); - const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]]; - for (const cb of beforeCallbacks) { - if (!cb) continue; - cb(match, resp); - if (resp.isMatchIgnored) return doIgnore(lexeme); - } - if (newMode.skip) { - modeBuffer += lexeme; - } else { - if (newMode.excludeBegin) { - modeBuffer += lexeme; - } - processBuffer(); - if (!newMode.returnBegin && !newMode.excludeBegin) { - modeBuffer = lexeme; - } - } - startNewMode(newMode, match); - return newMode.returnBegin ? 0 : lexeme.length; - } - function doEndMatch(match) { - const lexeme = match[0]; - const matchPlusRemainder = codeToHighlight.substring(match.index); - const endMode = endOfMode(top, match, matchPlusRemainder); - if (!endMode) { - return NO_MATCH; - } - const origin = top; - if (top.endScope && top.endScope._wrap) { - processBuffer(); - emitKeyword(lexeme, top.endScope._wrap); - } else if (top.endScope && top.endScope._multi) { - processBuffer(); - emitMultiClass(top.endScope, match); - } else if (origin.skip) { - modeBuffer += lexeme; - } else { - if (!(origin.returnEnd || origin.excludeEnd)) { - modeBuffer += lexeme; - } - processBuffer(); - if (origin.excludeEnd) { - modeBuffer = lexeme; - } - } - do { - if (top.scope) { - emitter.closeNode(); - } - if (!top.skip && !top.subLanguage) { - relevance += top.relevance; - } - top = top.parent; - } while (top !== endMode.parent); - if (endMode.starts) { - startNewMode(endMode.starts, match); - } - return origin.returnEnd ? 0 : lexeme.length; - } - function processContinuations() { - const list = []; - for (let current = top; current !== language; current = current.parent) { - if (current.scope) { - list.unshift(current.scope); - } - } - list.forEach((item) => emitter.openNode(item)); - } - let lastMatch = {}; - function processLexeme(textBeforeMatch, match) { - const lexeme = match && match[0]; - modeBuffer += textBeforeMatch; - if (lexeme == null) { - processBuffer(); - return 0; - } - if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") { - modeBuffer += codeToHighlight.slice(match.index, match.index + 1); - if (!SAFE_MODE) { - const err = new Error(`0 width match regex (${languageName})`); - err.languageName = languageName; - err.badRule = lastMatch.rule; - throw err; - } - return 1; - } - lastMatch = match; - if (match.type === "begin") { - return doBeginMatch(match); - } else if (match.type === "illegal" && !ignoreIllegals) { - const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.scope || "") + '"'); - err.mode = top; - throw err; - } else if (match.type === "end") { - const processed = doEndMatch(match); - if (processed !== NO_MATCH) { - return processed; - } - } - if (match.type === "illegal" && lexeme === "") { - modeBuffer += "\n"; - return 1; - } - if (iterations > 1e5 && iterations > match.index * 3) { - const err = new Error("potential infinite loop, way more iterations than matches"); - throw err; - } - modeBuffer += lexeme; - return lexeme.length; - } - const language = getLanguage(languageName); - if (!language) { - error(LANGUAGE_NOT_FOUND.replace("{}", languageName)); - throw new Error('Unknown language: "' + languageName + '"'); - } - const md = compileLanguage(language); - let result = ""; - let top = continuation || md; - const continuations = {}; - const emitter = new options.__emitter(options); - processContinuations(); - let modeBuffer = ""; - let relevance = 0; - let index = 0; - let iterations = 0; - let resumeScanAtSamePosition = false; - try { - if (!language.__emitTokens) { - top.matcher.considerAll(); - for (; ; ) { - iterations++; - if (resumeScanAtSamePosition) { - resumeScanAtSamePosition = false; - } else { - top.matcher.considerAll(); - } - top.matcher.lastIndex = index; - const match = top.matcher.exec(codeToHighlight); - if (!match) break; - const beforeMatch = codeToHighlight.substring(index, match.index); - const processedCount = processLexeme(beforeMatch, match); - index = match.index + processedCount; - } - processLexeme(codeToHighlight.substring(index)); - } else { - language.__emitTokens(codeToHighlight, emitter); - } - emitter.finalize(); - result = emitter.toHTML(); - return { - language: languageName, - value: result, - relevance, - illegal: false, - _emitter: emitter, - _top: top - }; - } catch (err) { - if (err.message && err.message.includes("Illegal")) { - return { - language: languageName, - value: escape(codeToHighlight), - illegal: true, - relevance: 0, - _illegalBy: { - message: err.message, - index, - context: codeToHighlight.slice(index - 100, index + 100), - mode: err.mode, - resultSoFar: result - }, - _emitter: emitter - }; - } else if (SAFE_MODE) { - return { - language: languageName, - value: escape(codeToHighlight), - illegal: false, - relevance: 0, - errorRaised: err, - _emitter: emitter, - _top: top - }; - } else { - throw err; - } - } - } - function justTextHighlightResult(code) { - const result = { - value: escape(code), - illegal: false, - relevance: 0, - _top: PLAINTEXT_LANGUAGE, - _emitter: new options.__emitter(options) - }; - result._emitter.addText(code); - return result; - } - function highlightAuto(code, languageSubset) { - languageSubset = languageSubset || options.languages || Object.keys(languages); - const plaintext = justTextHighlightResult(code); - const results = languageSubset.filter(getLanguage).filter(autoDetection).map( - (name) => _highlight(name, code, false) - ); - results.unshift(plaintext); - const sorted = results.sort((a, b) => { - if (a.relevance !== b.relevance) return b.relevance - a.relevance; - if (a.language && b.language) { - if (getLanguage(a.language).supersetOf === b.language) { - return 1; - } else if (getLanguage(b.language).supersetOf === a.language) { - return -1; - } - } - return 0; - }); - const [best, secondBest] = sorted; - const result = best; - result.secondBest = secondBest; - return result; - } - function updateClassName(element, currentLang, resultLang) { - const language = currentLang && aliases[currentLang] || resultLang; - element.classList.add("hljs"); - element.classList.add(`language-${language}`); - } - function highlightElement(element) { - let node = null; - const language = blockLanguage(element); - if (shouldNotHighlight(language)) return; - fire( - "before:highlightElement", - { el: element, language } - ); - if (element.dataset.highlighted) { - console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", element); - return; - } - if (element.children.length > 0) { - if (!options.ignoreUnescapedHTML) { - console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."); - console.warn("https://github.com/highlightjs/highlight.js/wiki/security"); - console.warn("The element with unescaped HTML:"); - console.warn(element); - } - if (options.throwUnescapedHTML) { - const err = new HTMLInjectionError( - "One of your code blocks includes unescaped HTML.", - element.innerHTML - ); - throw err; - } - } - node = element; - const text = node.textContent; - const result = language ? highlight2(text, { language, ignoreIllegals: true }) : highlightAuto(text); - element.innerHTML = result.value; - element.dataset.highlighted = "yes"; - updateClassName(element, language, result.language); - element.result = { - language: result.language, - // TODO: remove with version 11.0 - re: result.relevance, - relevance: result.relevance - }; - if (result.secondBest) { - element.secondBest = { - language: result.secondBest.language, - relevance: result.secondBest.relevance - }; - } - fire("after:highlightElement", { el: element, result, text }); - } - function configure(userOptions) { - options = inherit(options, userOptions); - } - const initHighlighting = () => { - highlightAll(); - deprecated("10.6.0", "initHighlighting() deprecated. Use highlightAll() now."); - }; - function initHighlightingOnLoad() { - highlightAll(); - deprecated("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now."); - } - let wantsHighlight = false; - function highlightAll() { - function boot() { - highlightAll(); - } - if (document.readyState === "loading") { - if (!wantsHighlight) { - window.addEventListener("DOMContentLoaded", boot, false); - } - wantsHighlight = true; - return; - } - const blocks = document.querySelectorAll(options.cssSelector); - blocks.forEach(highlightElement); - } - function registerLanguage(languageName, languageDefinition) { - let lang = null; - try { - lang = languageDefinition(hljs); - } catch (error$1) { - error("Language definition for '{}' could not be registered.".replace("{}", languageName)); - if (!SAFE_MODE) { - throw error$1; - } else { - error(error$1); - } - lang = PLAINTEXT_LANGUAGE; - } - if (!lang.name) lang.name = languageName; - languages[languageName] = lang; - lang.rawDefinition = languageDefinition.bind(null, hljs); - if (lang.aliases) { - registerAliases(lang.aliases, { languageName }); - } - } - function unregisterLanguage(languageName) { - delete languages[languageName]; - for (const alias of Object.keys(aliases)) { - if (aliases[alias] === languageName) { - delete aliases[alias]; - } - } - } - function listLanguages() { - return Object.keys(languages); - } - function getLanguage(name) { - name = (name || "").toLowerCase(); - return languages[name] || languages[aliases[name]]; - } - function registerAliases(aliasList, { languageName }) { - if (typeof aliasList === "string") { - aliasList = [aliasList]; - } - aliasList.forEach((alias) => { - aliases[alias.toLowerCase()] = languageName; - }); - } - function autoDetection(name) { - const lang = getLanguage(name); - return lang && !lang.disableAutodetect; - } - function upgradePluginAPI(plugin) { - if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) { - plugin["before:highlightElement"] = (data) => { - plugin["before:highlightBlock"]( - Object.assign({ block: data.el }, data) - ); - }; - } - if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) { - plugin["after:highlightElement"] = (data) => { - plugin["after:highlightBlock"]( - Object.assign({ block: data.el }, data) - ); - }; - } - } - function addPlugin(plugin) { - upgradePluginAPI(plugin); - plugins.push(plugin); - } - function removePlugin(plugin) { - const index = plugins.indexOf(plugin); - if (index !== -1) { - plugins.splice(index, 1); - } - } - function fire(event, args) { - const cb = event; - plugins.forEach(function(plugin) { - if (plugin[cb]) { - plugin[cb](args); - } - }); - } - function deprecateHighlightBlock(el) { - deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0"); - deprecated("10.7.0", "Please use highlightElement now."); - return highlightElement(el); - } - Object.assign(hljs, { - highlight: highlight2, - highlightAuto, - highlightAll, - highlightElement, - // TODO: Remove with v12 API - highlightBlock: deprecateHighlightBlock, - configure, - initHighlighting, - initHighlightingOnLoad, - registerLanguage, - unregisterLanguage, - listLanguages, - getLanguage, - registerAliases, - autoDetection, - inherit, - addPlugin, - removePlugin - }); - hljs.debugMode = function() { - SAFE_MODE = false; - }; - hljs.safeMode = function() { - SAFE_MODE = true; - }; - hljs.versionString = version; - hljs.regex = { - concat, - lookahead, - either, - optional, - anyNumberOfTimes - }; - for (const key in MODES) { - if (typeof MODES[key] === "object") { - deepFreeze(MODES[key]); - } - } - Object.assign(hljs, MODES); - return hljs; - }; - var highlight = HLJS({}); - highlight.newInstance = () => HLJS({}); - module.exports = highlight; - highlight.HighlightJS = highlight; - highlight.default = highlight; - } -}); - -// node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/core.js -var import_core = __toESM(require_core()); -var core_default = import_core.default; -var export_HighlightJS = import_core.default; -export { - export_HighlightJS as HighlightJS, - core_default as default -}; -//# sourceMappingURL=highlight__js_lib_core.js.map diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js.map deleted file mode 100644 index 7272bac..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_core.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../.pnpm/highlight.js@11.11.1/node_modules/highlight.js/lib/core.js", "../../../../.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/core.js"], - "sourcesContent": ["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += ``;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record | Array} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record */\n const emit = {};\n /** @type Record */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n const languages = Object.create(null);\n /** @type {Record} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n", "// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/core.js';\nexport { HighlightJS };\nexport default HighlightJS;\n"], - "mappings": "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", - "names": ["scopeName", "version", "i", "highlight", "result", "HighlightJS"] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js deleted file mode 100644 index 71108d2..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js +++ /dev/null @@ -1,819 +0,0 @@ -import "./chunk-5WRI5ZAA.js"; - -// node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/languages/typescript.js -var IDENT_RE = "[A-Za-z$_][0-9A-Za-z$_]*"; -var KEYWORDS = [ - "as", - // for exports - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - // JS handles these with a special rule - // "get", - // "set", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - // It's reached stage 3, which is "recommended for implementation": - "using" -]; -var LITERALS = [ - "true", - "false", - "null", - "undefined", - "NaN", - "Infinity" -]; -var TYPES = [ - // Fundamental objects - "Object", - "Function", - "Boolean", - "Symbol", - // numbers and dates - "Math", - "Date", - "Number", - "BigInt", - // text - "String", - "RegExp", - // Indexed collections - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - // Keyed collections - "Set", - "Map", - "WeakSet", - "WeakMap", - // Structured data - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - // Control abstraction objects - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - // Reflection - "Reflect", - "Proxy", - // Internationalization - "Intl", - // WebAssembly - "WebAssembly" -]; -var ERROR_TYPES = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError" -]; -var BUILT_IN_GLOBALS = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - "require", - "exports", - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape" -]; -var BUILT_IN_VARIABLES = [ - "arguments", - "this", - "super", - "console", - "window", - "document", - "localStorage", - "sessionStorage", - "module", - "global" - // Node.js -]; -var BUILT_INS = [].concat( - BUILT_IN_GLOBALS, - TYPES, - ERROR_TYPES -); -function javascript(hljs) { - const regex = hljs.regex; - const hasClosingTag = (match, { after }) => { - const tag = "", - end: "" - }; - const XML_SELF_CLOSING = /<[A-Za-z0-9\\._:-]+\s*\/>/; - const XML_TAG = { - begin: /<[A-Za-z0-9\\._:-]+/, - end: /\/[A-Za-z0-9\\._:-]+>|\/>/, - /** - * @param {RegExpMatchArray} match - * @param {CallbackResponse} response - */ - isTrulyOpeningTag: (match, response) => { - const afterMatchIndex = match[0].length + match.index; - const nextChar = match.input[afterMatchIndex]; - if ( - // HTML should not include another raw `<` inside a tag - // nested type? - // `>`, etc. - nextChar === "<" || // the , gives away that this is not HTML - // `` - nextChar === "," - ) { - response.ignoreMatch(); - return; - } - if (nextChar === ">") { - if (!hasClosingTag(match, { after: afterMatchIndex })) { - response.ignoreMatch(); - } - } - let m; - const afterMatch = match.input.substring(afterMatchIndex); - if (m = afterMatch.match(/^\s*=/)) { - response.ignoreMatch(); - return; - } - if (m = afterMatch.match(/^\s+extends\s+/)) { - if (m.index === 0) { - response.ignoreMatch(); - return; - } - } - } - }; - const KEYWORDS$1 = { - $pattern: IDENT_RE, - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILT_INS, - "variable.language": BUILT_IN_VARIABLES - }; - const decimalDigits = "[0-9](_?[0-9])*"; - const frac = `\\.(${decimalDigits})`; - const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`; - const NUMBER = { - className: "number", - variants: [ - // DecimalLiteral - { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))[eE][+-]?(${decimalDigits})\\b` }, - { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` }, - // DecimalBigIntegerLiteral - { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` }, - // NonDecimalIntegerLiteral - { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, - { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, - { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, - // LegacyOctalIntegerLiteral (does not include underscore separators) - // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals - { begin: "\\b0[0-7]+n?\\b" } - ], - relevance: 0 - }; - const SUBST = { - className: "subst", - begin: "\\$\\{", - end: "\\}", - keywords: KEYWORDS$1, - contains: [] - // defined later - }; - const HTML_TEMPLATE = { - begin: ".?html`", - end: "", - starts: { - end: "`", - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: "xml" - } - }; - const CSS_TEMPLATE = { - begin: ".?css`", - end: "", - starts: { - end: "`", - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: "css" - } - }; - const GRAPHQL_TEMPLATE = { - begin: ".?gql`", - end: "", - starts: { - end: "`", - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: "graphql" - } - }; - const TEMPLATE_STRING = { - className: "string", - begin: "`", - end: "`", - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - const JSDOC_COMMENT = hljs.COMMENT( - /\/\*\*(?!\/)/, - "\\*/", - { - relevance: 0, - contains: [ - { - begin: "(?=@[A-Za-z]+)", - relevance: 0, - contains: [ - { - className: "doctag", - begin: "@[A-Za-z]+" - }, - { - className: "type", - begin: "\\{", - end: "\\}", - excludeEnd: true, - excludeBegin: true, - relevance: 0 - }, - { - className: "variable", - begin: IDENT_RE$1 + "(?=\\s*(-)|$)", - endsParent: true, - relevance: 0 - }, - // eat spaces (not newlines) so we can find - // types or variables - { - begin: /(?=[^\n])\s/, - relevance: 0 - } - ] - } - ] - } - ); - const COMMENT = { - className: "comment", - variants: [ - JSDOC_COMMENT, - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_LINE_COMMENT_MODE - ] - }; - const SUBST_INTERNALS = [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER - // This is intentional: - // See https://github.com/highlightjs/highlight.js/issues/3288 - // hljs.REGEXP_MODE - ]; - SUBST.contains = SUBST_INTERNALS.concat({ - // we need to pair up {} inside our subst to prevent - // it from ending too early by matching another } - begin: /\{/, - end: /\}/, - keywords: KEYWORDS$1, - contains: [ - "self" - ].concat(SUBST_INTERNALS) - }); - const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains); - const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([ - // eat recursive parens in sub expressions - { - begin: /(\s*)\(/, - end: /\)/, - keywords: KEYWORDS$1, - contains: ["self"].concat(SUBST_AND_COMMENTS) - } - ]); - const PARAMS = { - className: "params", - // convert this to negative lookbehind in v12 - begin: /(\s*)\(/, - // to match the parms with - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - }; - const CLASS_OR_EXTENDS = { - variants: [ - // class Car extends vehicle - { - match: [ - /class/, - /\s+/, - IDENT_RE$1, - /\s+/, - /extends/, - /\s+/, - regex.concat(IDENT_RE$1, "(", regex.concat(/\./, IDENT_RE$1), ")*") - ], - scope: { - 1: "keyword", - 3: "title.class", - 5: "keyword", - 7: "title.class.inherited" - } - }, - // class Car - { - match: [ - /class/, - /\s+/, - IDENT_RE$1 - ], - scope: { - 1: "keyword", - 3: "title.class" - } - } - ] - }; - const CLASS_REFERENCE = { - relevance: 0, - match: regex.either( - // Hard coded exceptions - /\bJSON/, - // Float32Array, OutT - /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, - // CSSFactory, CSSFactoryT - /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, - // FPs, FPsT - /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/ - // P - // single letters are not highlighted - // BLAH - // this will be flagged as a UPPER_CASE_CONSTANT instead - ), - className: "title.class", - keywords: { - _: [ - // se we still get relevance credit for JS library classes - ...TYPES, - ...ERROR_TYPES - ] - } - }; - const USE_STRICT = { - label: "use_strict", - className: "meta", - relevance: 10, - begin: /^\s*['"]use (strict|asm)['"]/ - }; - const FUNCTION_DEFINITION = { - variants: [ - { - match: [ - /function/, - /\s+/, - IDENT_RE$1, - /(?=\s*\()/ - ] - }, - // anonymous function - { - match: [ - /function/, - /\s*(?=\()/ - ] - } - ], - className: { - 1: "keyword", - 3: "title.function" - }, - label: "func.def", - contains: [PARAMS], - illegal: /%/ - }; - const UPPER_CASE_CONSTANT = { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant" - }; - function noneOf(list) { - return regex.concat("(?!", list.join("|"), ")"); - } - const FUNCTION_CALL = { - match: regex.concat( - /\b/, - noneOf([ - ...BUILT_IN_GLOBALS, - "super", - "import" - ].map((x) => `${x}\\s*\\(`)), - IDENT_RE$1, - regex.lookahead(/\s*\(/) - ), - className: "title.function", - relevance: 0 - }; - const PROPERTY_ACCESS = { - begin: regex.concat(/\./, regex.lookahead( - regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/) - )), - end: IDENT_RE$1, - excludeBegin: true, - keywords: "prototype", - className: "property", - relevance: 0 - }; - const GETTER_OR_SETTER = { - match: [ - /get|set/, - /\s+/, - IDENT_RE$1, - /(?=\()/ - ], - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - { - // eat to avoid empty params - begin: /\(\)/ - }, - PARAMS - ] - }; - const FUNC_LEAD_IN_RE = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + hljs.UNDERSCORE_IDENT_RE + ")\\s*=>"; - const FUNCTION_VARIABLE = { - match: [ - /const|var|let/, - /\s+/, - IDENT_RE$1, - /\s*/, - /=\s*/, - /(async\s*)?/, - // async is optional - regex.lookahead(FUNC_LEAD_IN_RE) - ], - keywords: "async", - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - PARAMS - ] - }; - return { - name: "JavaScript", - aliases: ["js", "jsx", "mjs", "cjs"], - keywords: KEYWORDS$1, - // this will be extended by TypeScript - exports: { PARAMS_CONTAINS, CLASS_REFERENCE }, - illegal: /#(?![$_A-z])/, - contains: [ - hljs.SHEBANG({ - label: "shebang", - binary: "node", - relevance: 5 - }), - USE_STRICT, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - COMMENT, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER, - CLASS_REFERENCE, - { - scope: "attr", - match: IDENT_RE$1 + regex.lookahead(":"), - relevance: 0 - }, - FUNCTION_VARIABLE, - { - // "value" container - begin: "(" + hljs.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*", - keywords: "return throw case", - relevance: 0, - contains: [ - COMMENT, - hljs.REGEXP_MODE, - { - className: "function", - // we have to count the parens to make sure we actually have the - // correct bounding ( ) before the =>. There could be any number of - // sub-expressions inside also surrounded by parens. - begin: FUNC_LEAD_IN_RE, - returnBegin: true, - end: "\\s*=>", - contains: [ - { - className: "params", - variants: [ - { - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - }, - { - className: null, - begin: /\(\s*\)/, - skip: true - }, - { - begin: /(\s*)\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - } - ] - } - ] - }, - { - // could be a comma delimited list of params to a function call - begin: /,/, - relevance: 0 - }, - { - match: /\s+/, - relevance: 0 - }, - { - // JSX - variants: [ - { begin: FRAGMENT.begin, end: FRAGMENT.end }, - { match: XML_SELF_CLOSING }, - { - begin: XML_TAG.begin, - // we carefully check the opening tag to see if it truly - // is a tag and not a false positive - "on:begin": XML_TAG.isTrulyOpeningTag, - end: XML_TAG.end - } - ], - subLanguage: "xml", - contains: [ - { - begin: XML_TAG.begin, - end: XML_TAG.end, - skip: true, - contains: ["self"] - } - ] - } - ] - }, - FUNCTION_DEFINITION, - { - // prevent this from getting swallowed up by function - // since they appear "function like" - beginKeywords: "while if switch catch for" - }, - { - // we have to count the parens to make sure we actually have the correct - // bounding ( ). There could be any number of sub-expressions inside - // also surrounded by parens. - begin: "\\b(?!function)" + hljs.UNDERSCORE_IDENT_RE + "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", - // end parens - returnBegin: true, - label: "func.def", - contains: [ - PARAMS, - hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" }) - ] - }, - // catch ... so it won't trigger the property rule below - { - match: /\.\.\./, - relevance: 0 - }, - PROPERTY_ACCESS, - // hack: prevents detection of keywords in some circumstances - // .keyword() - // $keyword = x - { - match: "\\$" + IDENT_RE$1, - relevance: 0 - }, - { - match: [/\bconstructor(?=\s*\()/], - className: { 1: "title.function" }, - contains: [PARAMS] - }, - FUNCTION_CALL, - UPPER_CASE_CONSTANT, - CLASS_OR_EXTENDS, - GETTER_OR_SETTER, - { - match: /\$[(.]/ - // relevance booster for a pattern common to JS libs: `$(something)` and `$.something` - } - ] - }; -} -function typescript(hljs) { - const regex = hljs.regex; - const tsLanguage = javascript(hljs); - const IDENT_RE$1 = IDENT_RE; - const TYPES2 = [ - "any", - "void", - "number", - "boolean", - "string", - "object", - "never", - "symbol", - "bigint", - "unknown" - ]; - const NAMESPACE = { - begin: [ - /namespace/, - /\s+/, - hljs.IDENT_RE - ], - beginScope: { - 1: "keyword", - 3: "title.class" - } - }; - const INTERFACE = { - beginKeywords: "interface", - end: /\{/, - excludeEnd: true, - keywords: { - keyword: "interface extends", - built_in: TYPES2 - }, - contains: [tsLanguage.exports.CLASS_REFERENCE] - }; - const USE_STRICT = { - className: "meta", - relevance: 10, - begin: /^\s*['"]use strict['"]/ - }; - const TS_SPECIFIC_KEYWORDS = [ - "type", - // "namespace", - "interface", - "public", - "private", - "protected", - "implements", - "declare", - "abstract", - "readonly", - "enum", - "override", - "satisfies" - ]; - const KEYWORDS$1 = { - $pattern: IDENT_RE, - keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS), - literal: LITERALS, - built_in: BUILT_INS.concat(TYPES2), - "variable.language": BUILT_IN_VARIABLES - }; - const DECORATOR = { - className: "meta", - begin: "@" + IDENT_RE$1 - }; - const swapMode = (mode, label, replacement) => { - const indx = mode.contains.findIndex((m) => m.label === label); - if (indx === -1) { - throw new Error("can not find mode to replace"); - } - mode.contains.splice(indx, 1, replacement); - }; - Object.assign(tsLanguage.keywords, KEYWORDS$1); - tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR); - const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find((c) => c.scope === "attr"); - const OPTIONAL_KEY_OR_ARGUMENT = Object.assign( - {}, - ATTRIBUTE_HIGHLIGHT, - { match: regex.concat(IDENT_RE$1, regex.lookahead(/\s*\?:/)) } - ); - tsLanguage.exports.PARAMS_CONTAINS.push([ - tsLanguage.exports.CLASS_REFERENCE, - // class reference for highlighting the params types - ATTRIBUTE_HIGHLIGHT, - // highlight the params key - OPTIONAL_KEY_OR_ARGUMENT - // Added for optional property assignment highlighting - ]); - tsLanguage.contains = tsLanguage.contains.concat([ - DECORATOR, - NAMESPACE, - INTERFACE, - OPTIONAL_KEY_OR_ARGUMENT - // Added for optional property assignment highlighting - ]); - swapMode(tsLanguage, "shebang", hljs.SHEBANG()); - swapMode(tsLanguage, "use_strict", USE_STRICT); - const functionDeclaration = tsLanguage.contains.find((m) => m.label === "func.def"); - functionDeclaration.relevance = 0; - Object.assign(tsLanguage, { - name: "TypeScript", - aliases: [ - "ts", - "tsx", - "mts", - "cts" - ] - }); - return tsLanguage; -} -export { - typescript as default -}; -//# sourceMappingURL=highlight__js_lib_languages_typescript.js.map diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js.map deleted file mode 100644 index b708d5b..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/highlight__js_lib_languages_typescript.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../.pnpm/highlight.js@11.11.1/node_modules/highlight.js/es/languages/typescript.js"], - "sourcesContent": ["const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \" {\n const tag = \"',\n end: ''\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // ``\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // (key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti \nContributors: Ike Ku \nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const regex = hljs.regex;\n const tsLanguage = javascript(hljs);\n\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"symbol\",\n \"bigint\",\n \"unknown\"\n ];\n const NAMESPACE = {\n begin: [\n /namespace/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n };\n const INTERFACE = {\n beginKeywords: 'interface',\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: 'interface extends',\n built_in: TYPES\n },\n contains: [ tsLanguage.exports.CLASS_REFERENCE ]\n };\n const USE_STRICT = {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n // \"namespace\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\",\n \"enum\",\n \"override\",\n \"satisfies\"\n ];\n /*\n namespace is a TS keyword but it's fine to use it as a variable name too.\n const message = 'foo';\n const namespace = 'bar';\n */\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n const DECORATOR = {\n className: 'meta',\n begin: '@' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error(\"can not find mode to replace\"); }\n\n mode.contains.splice(indx, 1, replacement);\n };\n\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n\n // highlight the function params\n const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === \"attr\");\n\n // take default attr rule and extend it to support optionals\n const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({},\n ATTRIBUTE_HIGHLIGHT,\n { match: regex.concat(IDENT_RE$1, regex.lookahead(/\\s*\\?:/)) }\n );\n tsLanguage.exports.PARAMS_CONTAINS.push([\n tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types\n ATTRIBUTE_HIGHLIGHT, // highlight the params key\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // Add the optional property assignment highlighting for objects or classes\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.label === \"func.def\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: 'TypeScript',\n aliases: [\n 'ts',\n 'tsx',\n 'mts',\n 'cts'\n ]\n });\n\n return tsLanguage;\n}\n\nexport { typescript as default };\n"], - "mappings": "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", - "names": ["TYPES"] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/package.json b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/package.json deleted file mode 100644 index 3dbc1ca..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js deleted file mode 100644 index 8ec57ef..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js +++ /dev/null @@ -1,4061 +0,0 @@ -import "./chunk-5WRI5ZAA.js"; - -// node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js -var __defProp = Object.defineProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); -var utils_exports = {}; -__export(utils_exports, { - addChainableMethod: () => addChainableMethod, - addLengthGuard: () => addLengthGuard, - addMethod: () => addMethod, - addProperty: () => addProperty, - checkError: () => check_error_exports, - compareByInspect: () => compareByInspect, - eql: () => deep_eql_default, - events: () => events, - expectTypes: () => expectTypes, - flag: () => flag, - getActual: () => getActual, - getMessage: () => getMessage2, - getName: () => getName, - getOperator: () => getOperator, - getOwnEnumerableProperties: () => getOwnEnumerableProperties, - getOwnEnumerablePropertySymbols: () => getOwnEnumerablePropertySymbols, - getPathInfo: () => getPathInfo, - hasProperty: () => hasProperty, - inspect: () => inspect2, - isNaN: () => isNaN2, - isNumeric: () => isNumeric, - isProxyEnabled: () => isProxyEnabled, - isRegExp: () => isRegExp2, - objDisplay: () => objDisplay, - overwriteChainableMethod: () => overwriteChainableMethod, - overwriteMethod: () => overwriteMethod, - overwriteProperty: () => overwriteProperty, - proxify: () => proxify, - test: () => test, - transferFlags: () => transferFlags, - type: () => type -}); -var check_error_exports = {}; -__export(check_error_exports, { - compatibleConstructor: () => compatibleConstructor, - compatibleInstance: () => compatibleInstance, - compatibleMessage: () => compatibleMessage, - getConstructorName: () => getConstructorName, - getMessage: () => getMessage -}); -function isErrorInstance(obj) { - return obj instanceof Error || Object.prototype.toString.call(obj) === "[object Error]"; -} -__name(isErrorInstance, "isErrorInstance"); -function isRegExp(obj) { - return Object.prototype.toString.call(obj) === "[object RegExp]"; -} -__name(isRegExp, "isRegExp"); -function compatibleInstance(thrown, errorLike) { - return isErrorInstance(errorLike) && thrown === errorLike; -} -__name(compatibleInstance, "compatibleInstance"); -function compatibleConstructor(thrown, errorLike) { - if (isErrorInstance(errorLike)) { - return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor; - } else if ((typeof errorLike === "object" || typeof errorLike === "function") && errorLike.prototype) { - return thrown.constructor === errorLike || thrown instanceof errorLike; - } - return false; -} -__name(compatibleConstructor, "compatibleConstructor"); -function compatibleMessage(thrown, errMatcher) { - const comparisonString = typeof thrown === "string" ? thrown : thrown.message; - if (isRegExp(errMatcher)) { - return errMatcher.test(comparisonString); - } else if (typeof errMatcher === "string") { - return comparisonString.indexOf(errMatcher) !== -1; - } - return false; -} -__name(compatibleMessage, "compatibleMessage"); -function getConstructorName(errorLike) { - let constructorName = errorLike; - if (isErrorInstance(errorLike)) { - constructorName = errorLike.constructor.name; - } else if (typeof errorLike === "function") { - constructorName = errorLike.name; - if (constructorName === "") { - const newConstructorName = new errorLike().name; - constructorName = newConstructorName || constructorName; - } - } - return constructorName; -} -__name(getConstructorName, "getConstructorName"); -function getMessage(errorLike) { - let msg = ""; - if (errorLike && errorLike.message) { - msg = errorLike.message; - } else if (typeof errorLike === "string") { - msg = errorLike; - } - return msg; -} -__name(getMessage, "getMessage"); -function flag(obj, key, value) { - let flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null)); - if (arguments.length === 3) { - flags[key] = value; - } else { - return flags[key]; - } -} -__name(flag, "flag"); -function test(obj, args) { - let negate = flag(obj, "negate"), expr = args[0]; - return negate ? !expr : expr; -} -__name(test, "test"); -function type(obj) { - if (typeof obj === "undefined") { - return "undefined"; - } - if (obj === null) { - return "null"; - } - const stringTag = obj[Symbol.toStringTag]; - if (typeof stringTag === "string") { - return stringTag; - } - const type3 = Object.prototype.toString.call(obj).slice(8, -1); - return type3; -} -__name(type, "type"); -var canElideFrames = "captureStackTrace" in Error; -var _AssertionError = class _AssertionError2 extends Error { - constructor(message = "Unspecified AssertionError", props, ssf) { - super(message); - __publicField(this, "message"); - this.message = message; - if (canElideFrames) { - Error.captureStackTrace(this, ssf || _AssertionError2); - } - for (const key in props) { - if (!(key in this)) { - this[key] = props[key]; - } - } - } - get name() { - return "AssertionError"; - } - get ok() { - return false; - } - toJSON(stack) { - return { - ...this, - name: this.name, - message: this.message, - ok: false, - stack: stack !== false ? this.stack : void 0 - }; - } -}; -__name(_AssertionError, "AssertionError"); -var AssertionError = _AssertionError; -function expectTypes(obj, types) { - let flagMsg = flag(obj, "message"); - let ssfi = flag(obj, "ssfi"); - flagMsg = flagMsg ? flagMsg + ": " : ""; - obj = flag(obj, "object"); - types = types.map(function(t) { - return t.toLowerCase(); - }); - types.sort(); - let str = types.map(function(t, index) { - let art = ~["a", "e", "i", "o", "u"].indexOf(t.charAt(0)) ? "an" : "a"; - let or = types.length > 1 && index === types.length - 1 ? "or " : ""; - return or + art + " " + t; - }).join(", "); - let objType = type(obj).toLowerCase(); - if (!types.some(function(expected) { - return objType === expected; - })) { - throw new AssertionError( - flagMsg + "object tested must be " + str + ", but " + objType + " given", - void 0, - ssfi - ); - } -} -__name(expectTypes, "expectTypes"); -function getActual(obj, args) { - return args.length > 4 ? args[4] : obj._obj; -} -__name(getActual, "getActual"); -var ansiColors = { - bold: ["1", "22"], - dim: ["2", "22"], - italic: ["3", "23"], - underline: ["4", "24"], - // 5 & 6 are blinking - inverse: ["7", "27"], - hidden: ["8", "28"], - strike: ["9", "29"], - // 10-20 are fonts - // 21-29 are resets for 1-9 - black: ["30", "39"], - red: ["31", "39"], - green: ["32", "39"], - yellow: ["33", "39"], - blue: ["34", "39"], - magenta: ["35", "39"], - cyan: ["36", "39"], - white: ["37", "39"], - brightblack: ["30;1", "39"], - brightred: ["31;1", "39"], - brightgreen: ["32;1", "39"], - brightyellow: ["33;1", "39"], - brightblue: ["34;1", "39"], - brightmagenta: ["35;1", "39"], - brightcyan: ["36;1", "39"], - brightwhite: ["37;1", "39"], - grey: ["90", "39"] -}; -var styles = { - special: "cyan", - number: "yellow", - bigint: "yellow", - boolean: "yellow", - undefined: "grey", - null: "bold", - string: "green", - symbol: "green", - date: "magenta", - regexp: "red" -}; -var truncator = "…"; -function colorise(value, styleType) { - const color = ansiColors[styles[styleType]] || ansiColors[styleType] || ""; - if (!color) { - return String(value); - } - return `\x1B[${color[0]}m${String(value)}\x1B[${color[1]}m`; -} -__name(colorise, "colorise"); -function normaliseOptions({ - showHidden = false, - depth = 2, - colors = false, - customInspect = true, - showProxy = false, - maxArrayLength = Infinity, - breakLength = Infinity, - seen = [], - // eslint-disable-next-line no-shadow - truncate: truncate2 = Infinity, - stylize = String -} = {}, inspect3) { - const options = { - showHidden: Boolean(showHidden), - depth: Number(depth), - colors: Boolean(colors), - customInspect: Boolean(customInspect), - showProxy: Boolean(showProxy), - maxArrayLength: Number(maxArrayLength), - breakLength: Number(breakLength), - truncate: Number(truncate2), - seen, - inspect: inspect3, - stylize - }; - if (options.colors) { - options.stylize = colorise; - } - return options; -} -__name(normaliseOptions, "normaliseOptions"); -function isHighSurrogate(char) { - return char >= "\uD800" && char <= "\uDBFF"; -} -__name(isHighSurrogate, "isHighSurrogate"); -function truncate(string, length, tail = truncator) { - string = String(string); - const tailLength = tail.length; - const stringLength = string.length; - if (tailLength > length && stringLength > tailLength) { - return tail; - } - if (stringLength > length && stringLength > tailLength) { - let end = length - tailLength; - if (end > 0 && isHighSurrogate(string[end - 1])) { - end = end - 1; - } - return `${string.slice(0, end)}${tail}`; - } - return string; -} -__name(truncate, "truncate"); -function inspectList(list, options, inspectItem, separator = ", ") { - inspectItem = inspectItem || options.inspect; - const size = list.length; - if (size === 0) - return ""; - const originalLength = options.truncate; - let output = ""; - let peek = ""; - let truncated = ""; - for (let i = 0; i < size; i += 1) { - const last = i + 1 === list.length; - const secondToLast = i + 2 === list.length; - truncated = `${truncator}(${list.length - i})`; - const value = list[i]; - options.truncate = originalLength - output.length - (last ? 0 : separator.length); - const string = peek || inspectItem(value, options) + (last ? "" : separator); - const nextLength = output.length + string.length; - const truncatedLength = nextLength + truncated.length; - if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) { - break; - } - if (!last && !secondToLast && truncatedLength > originalLength) { - break; - } - peek = last ? "" : inspectItem(list[i + 1], options) + (secondToLast ? "" : separator); - if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) { - break; - } - output += string; - if (!last && !secondToLast && nextLength + peek.length >= originalLength) { - truncated = `${truncator}(${list.length - i - 1})`; - break; - } - truncated = ""; - } - return `${output}${truncated}`; -} -__name(inspectList, "inspectList"); -function quoteComplexKey(key) { - if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) { - return key; - } - return JSON.stringify(key).replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); -} -__name(quoteComplexKey, "quoteComplexKey"); -function inspectProperty([key, value], options) { - options.truncate -= 2; - if (typeof key === "string") { - key = quoteComplexKey(key); - } else if (typeof key !== "number") { - key = `[${options.inspect(key, options)}]`; - } - options.truncate -= key.length; - value = options.inspect(value, options); - return `${key}: ${value}`; -} -__name(inspectProperty, "inspectProperty"); -function inspectArray(array, options) { - const nonIndexProperties = Object.keys(array).slice(array.length); - if (!array.length && !nonIndexProperties.length) - return "[]"; - options.truncate -= 4; - const listContents = inspectList(array, options); - options.truncate -= listContents.length; - let propertyContents = ""; - if (nonIndexProperties.length) { - propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty); - } - return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ""} ]`; -} -__name(inspectArray, "inspectArray"); -var getArrayName = __name((array) => { - if (typeof Buffer === "function" && array instanceof Buffer) { - return "Buffer"; - } - if (array[Symbol.toStringTag]) { - return array[Symbol.toStringTag]; - } - return array.constructor.name; -}, "getArrayName"); -function inspectTypedArray(array, options) { - const name = getArrayName(array); - options.truncate -= name.length + 4; - const nonIndexProperties = Object.keys(array).slice(array.length); - if (!array.length && !nonIndexProperties.length) - return `${name}[]`; - let output = ""; - for (let i = 0; i < array.length; i++) { - const string = `${options.stylize(truncate(array[i], options.truncate), "number")}${i === array.length - 1 ? "" : ", "}`; - options.truncate -= string.length; - if (array[i] !== array.length && options.truncate <= 3) { - output += `${truncator}(${array.length - array[i] + 1})`; - break; - } - output += string; - } - let propertyContents = ""; - if (nonIndexProperties.length) { - propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty); - } - return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ""} ]`; -} -__name(inspectTypedArray, "inspectTypedArray"); -function inspectDate(dateObject, options) { - const stringRepresentation = dateObject.toJSON(); - if (stringRepresentation === null) { - return "Invalid Date"; - } - const split = stringRepresentation.split("T"); - const date = split[0]; - return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, "date"); -} -__name(inspectDate, "inspectDate"); -function inspectFunction(func, options) { - const functionType = func[Symbol.toStringTag] || "Function"; - const name = func.name; - if (!name) { - return options.stylize(`[${functionType}]`, "special"); - } - return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, "special"); -} -__name(inspectFunction, "inspectFunction"); -function inspectMapEntry([key, value], options) { - options.truncate -= 4; - key = options.inspect(key, options); - options.truncate -= key.length; - value = options.inspect(value, options); - return `${key} => ${value}`; -} -__name(inspectMapEntry, "inspectMapEntry"); -function mapToEntries(map) { - const entries = []; - map.forEach((value, key) => { - entries.push([key, value]); - }); - return entries; -} -__name(mapToEntries, "mapToEntries"); -function inspectMap(map, options) { - if (map.size === 0) - return "Map{}"; - options.truncate -= 7; - return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`; -} -__name(inspectMap, "inspectMap"); -var isNaN = Number.isNaN || ((i) => i !== i); -function inspectNumber(number, options) { - if (isNaN(number)) { - return options.stylize("NaN", "number"); - } - if (number === Infinity) { - return options.stylize("Infinity", "number"); - } - if (number === -Infinity) { - return options.stylize("-Infinity", "number"); - } - if (number === 0) { - return options.stylize(1 / number === Infinity ? "+0" : "-0", "number"); - } - return options.stylize(truncate(String(number), options.truncate), "number"); -} -__name(inspectNumber, "inspectNumber"); -function inspectBigInt(number, options) { - let nums = truncate(number.toString(), options.truncate - 1); - if (nums !== truncator) - nums += "n"; - return options.stylize(nums, "bigint"); -} -__name(inspectBigInt, "inspectBigInt"); -function inspectRegExp(value, options) { - const flags = value.toString().split("/")[2]; - const sourceLength = options.truncate - (2 + flags.length); - const source = value.source; - return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, "regexp"); -} -__name(inspectRegExp, "inspectRegExp"); -function arrayFromSet(set2) { - const values = []; - set2.forEach((value) => { - values.push(value); - }); - return values; -} -__name(arrayFromSet, "arrayFromSet"); -function inspectSet(set2, options) { - if (set2.size === 0) - return "Set{}"; - options.truncate -= 7; - return `Set{ ${inspectList(arrayFromSet(set2), options)} }`; -} -__name(inspectSet, "inspectSet"); -var stringEscapeChars = new RegExp("['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]", "g"); -var escapeCharacters = { - "\b": "\\b", - " ": "\\t", - "\n": "\\n", - "\f": "\\f", - "\r": "\\r", - "'": "\\'", - "\\": "\\\\" -}; -var hex = 16; -var unicodeLength = 4; -function escape(char) { - return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`; -} -__name(escape, "escape"); -function inspectString(string, options) { - if (stringEscapeChars.test(string)) { - string = string.replace(stringEscapeChars, escape); - } - return options.stylize(`'${truncate(string, options.truncate - 2)}'`, "string"); -} -__name(inspectString, "inspectString"); -function inspectSymbol(value) { - if ("description" in Symbol.prototype) { - return value.description ? `Symbol(${value.description})` : "Symbol()"; - } - return value.toString(); -} -__name(inspectSymbol, "inspectSymbol"); -var getPromiseValue = __name(() => "Promise{…}", "getPromiseValue"); -var promise_default = getPromiseValue; -function inspectObject(object, options) { - const properties = Object.getOwnPropertyNames(object); - const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []; - if (properties.length === 0 && symbols.length === 0) { - return "{}"; - } - options.truncate -= 4; - options.seen = options.seen || []; - if (options.seen.includes(object)) { - return "[Circular]"; - } - options.seen.push(object); - const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty); - const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty); - options.seen.pop(); - let sep = ""; - if (propertyContents && symbolContents) { - sep = ", "; - } - return `{ ${propertyContents}${sep}${symbolContents} }`; -} -__name(inspectObject, "inspectObject"); -var toStringTag = typeof Symbol !== "undefined" && Symbol.toStringTag ? Symbol.toStringTag : false; -function inspectClass(value, options) { - let name = ""; - if (toStringTag && toStringTag in value) { - name = value[toStringTag]; - } - name = name || value.constructor.name; - if (!name || name === "_class") { - name = ""; - } - options.truncate -= name.length; - return `${name}${inspectObject(value, options)}`; -} -__name(inspectClass, "inspectClass"); -function inspectArguments(args, options) { - if (args.length === 0) - return "Arguments[]"; - options.truncate -= 13; - return `Arguments[ ${inspectList(args, options)} ]`; -} -__name(inspectArguments, "inspectArguments"); -var errorKeys = [ - "stack", - "line", - "column", - "name", - "message", - "fileName", - "lineNumber", - "columnNumber", - "number", - "description", - "cause" -]; -function inspectObject2(error, options) { - const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1); - const name = error.name; - options.truncate -= name.length; - let message = ""; - if (typeof error.message === "string") { - message = truncate(error.message, options.truncate); - } else { - properties.unshift("message"); - } - message = message ? `: ${message}` : ""; - options.truncate -= message.length + 5; - options.seen = options.seen || []; - if (options.seen.includes(error)) { - return "[Circular]"; - } - options.seen.push(error); - const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty); - return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ""}`; -} -__name(inspectObject2, "inspectObject"); -function inspectAttribute([key, value], options) { - options.truncate -= 3; - if (!value) { - return `${options.stylize(String(key), "yellow")}`; - } - return `${options.stylize(String(key), "yellow")}=${options.stylize(`"${value}"`, "string")}`; -} -__name(inspectAttribute, "inspectAttribute"); -function inspectNodeCollection(collection, options) { - return inspectList(collection, options, inspectNode, "\n"); -} -__name(inspectNodeCollection, "inspectNodeCollection"); -function inspectNode(node, options) { - switch (node.nodeType) { - case 1: - return inspectHTML(node, options); - case 3: - return options.inspect(node.data, options); - default: - return options.inspect(node, options); - } -} -__name(inspectNode, "inspectNode"); -function inspectHTML(element, options) { - const properties = element.getAttributeNames(); - const name = element.tagName.toLowerCase(); - const head = options.stylize(`<${name}`, "special"); - const headClose = options.stylize(`>`, "special"); - const tail = options.stylize(``, "special"); - options.truncate -= name.length * 2 + 5; - let propertyContents = ""; - if (properties.length > 0) { - propertyContents += " "; - propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, " "); - } - options.truncate -= propertyContents.length; - const truncate2 = options.truncate; - let children = inspectNodeCollection(element.children, options); - if (children && children.length > truncate2) { - children = `${truncator}(${element.children.length})`; - } - return `${head}${propertyContents}${headClose}${children}${tail}`; -} -__name(inspectHTML, "inspectHTML"); -var symbolsSupported = typeof Symbol === "function" && typeof Symbol.for === "function"; -var chaiInspect = symbolsSupported ? /* @__PURE__ */ Symbol.for("chai/inspect") : "@@chai/inspect"; -var nodeInspect = /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom"); -var constructorMap = /* @__PURE__ */ new WeakMap(); -var stringTagMap = {}; -var baseTypesMap = { - undefined: __name((value, options) => options.stylize("undefined", "undefined"), "undefined"), - null: __name((value, options) => options.stylize("null", "null"), "null"), - boolean: __name((value, options) => options.stylize(String(value), "boolean"), "boolean"), - Boolean: __name((value, options) => options.stylize(String(value), "boolean"), "Boolean"), - number: inspectNumber, - Number: inspectNumber, - bigint: inspectBigInt, - BigInt: inspectBigInt, - string: inspectString, - String: inspectString, - function: inspectFunction, - Function: inspectFunction, - symbol: inspectSymbol, - // A Symbol polyfill will return `Symbol` not `symbol` from typedetect - Symbol: inspectSymbol, - Array: inspectArray, - Date: inspectDate, - Map: inspectMap, - Set: inspectSet, - RegExp: inspectRegExp, - Promise: promise_default, - // WeakSet, WeakMap are totally opaque to us - WeakSet: __name((value, options) => options.stylize("WeakSet{…}", "special"), "WeakSet"), - WeakMap: __name((value, options) => options.stylize("WeakMap{…}", "special"), "WeakMap"), - Arguments: inspectArguments, - Int8Array: inspectTypedArray, - Uint8Array: inspectTypedArray, - Uint8ClampedArray: inspectTypedArray, - Int16Array: inspectTypedArray, - Uint16Array: inspectTypedArray, - Int32Array: inspectTypedArray, - Uint32Array: inspectTypedArray, - Float32Array: inspectTypedArray, - Float64Array: inspectTypedArray, - Generator: __name(() => "", "Generator"), - DataView: __name(() => "", "DataView"), - ArrayBuffer: __name(() => "", "ArrayBuffer"), - Error: inspectObject2, - HTMLCollection: inspectNodeCollection, - NodeList: inspectNodeCollection -}; -var inspectCustom = __name((value, options, type3, inspectFn) => { - if (chaiInspect in value && typeof value[chaiInspect] === "function") { - return value[chaiInspect](options); - } - if (nodeInspect in value && typeof value[nodeInspect] === "function") { - return value[nodeInspect](options.depth, options, inspectFn); - } - if ("inspect" in value && typeof value.inspect === "function") { - return value.inspect(options.depth, options); - } - if ("constructor" in value && constructorMap.has(value.constructor)) { - return constructorMap.get(value.constructor)(value, options); - } - if (stringTagMap[type3]) { - return stringTagMap[type3](value, options); - } - return ""; -}, "inspectCustom"); -var toString = Object.prototype.toString; -function inspect(value, opts = {}) { - const options = normaliseOptions(opts, inspect); - const { customInspect } = options; - let type3 = value === null ? "null" : typeof value; - if (type3 === "object") { - type3 = toString.call(value).slice(8, -1); - } - if (type3 in baseTypesMap) { - return baseTypesMap[type3](value, options); - } - if (customInspect && value) { - const output = inspectCustom(value, options, type3, inspect); - if (output) { - if (typeof output === "string") - return output; - return inspect(output, options); - } - } - const proto = value ? Object.getPrototypeOf(value) : false; - if (proto === Object.prototype || proto === null) { - return inspectObject(value, options); - } - if (value && typeof HTMLElement === "function" && value instanceof HTMLElement) { - return inspectHTML(value, options); - } - if ("constructor" in value) { - if (value.constructor !== Object) { - return inspectClass(value, options); - } - return inspectObject(value, options); - } - if (value === Object(value)) { - return inspectObject(value, options); - } - return options.stylize(String(value), type3); -} -__name(inspect, "inspect"); -var config = { - /** - * ### config.includeStack - * - * User configurable property, influences whether stack trace - * is included in Assertion error message. Default of false - * suppresses stack trace in the error message. - * - * chai.config.includeStack = true; // enable stack on error - * - * @param {boolean} - * @public - */ - includeStack: false, - /** - * ### config.showDiff - * - * User configurable property, influences whether or not - * the `showDiff` flag should be included in the thrown - * AssertionErrors. `false` will always be `false`; `true` - * will be true when the assertion has requested a diff - * be shown. - * - * @param {boolean} - * @public - */ - showDiff: true, - /** - * ### config.truncateThreshold - * - * User configurable property, sets length threshold for actual and - * expected values in assertion errors. If this threshold is exceeded, for - * example for large data structures, the value is replaced with something - * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. - * - * Set it to zero if you want to disable truncating altogether. - * - * This is especially userful when doing assertions on arrays: having this - * set to a reasonable large value makes the failure messages readily - * inspectable. - * - * chai.config.truncateThreshold = 0; // disable truncating - * - * @param {number} - * @public - */ - truncateThreshold: 40, - /** - * ### config.useProxy - * - * User configurable property, defines if chai will use a Proxy to throw - * an error when a non-existent property is read, which protects users - * from typos when using property-based assertions. - * - * Set it to false if you want to disable this feature. - * - * chai.config.useProxy = false; // disable use of Proxy - * - * This feature is automatically disabled regardless of this config value - * in environments that don't support proxies. - * - * @param {boolean} - * @public - */ - useProxy: true, - /** - * ### config.proxyExcludedKeys - * - * User configurable property, defines which properties should be ignored - * instead of throwing an error if they do not exist on the assertion. - * This is only applied if the environment Chai is running in supports proxies and - * if the `useProxy` configuration setting is enabled. - * By default, `then` and `inspect` will not throw an error if they do not exist on the - * assertion object because the `.inspect` property is read by `util.inspect` (for example, when - * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking. - * - * // By default these keys will not throw an error if they do not exist on the assertion object - * chai.config.proxyExcludedKeys = ['then', 'inspect']; - * - * @param {Array} - * @public - */ - proxyExcludedKeys: ["then", "catch", "inspect", "toJSON"], - /** - * ### config.deepEqual - * - * User configurable property, defines which a custom function to use for deepEqual - * comparisons. - * By default, the function used is the one from the `deep-eql` package without custom comparator. - * - * // use a custom comparator - * chai.config.deepEqual = (expected, actual) => { - * return chai.util.eql(expected, actual, { - * comparator: (expected, actual) => { - * // for non number comparison, use the default behavior - * if(typeof expected !== 'number') return null; - * // allow a difference of 10 between compared numbers - * return typeof actual === 'number' && Math.abs(actual - expected) < 10 - * } - * }) - * }; - * - * @param {Function} - * @public - */ - deepEqual: null -}; -function inspect2(obj, showHidden, depth, colors) { - let options = { - colors, - depth: typeof depth === "undefined" ? 2 : depth, - showHidden, - truncate: config.truncateThreshold ? config.truncateThreshold : Infinity - }; - return inspect(obj, options); -} -__name(inspect2, "inspect"); -function objDisplay(obj) { - let str = inspect2(obj), type3 = Object.prototype.toString.call(obj); - if (config.truncateThreshold && str.length >= config.truncateThreshold) { - if (type3 === "[object Function]") { - return !obj.name || obj.name === "" ? "[Function]" : "[Function: " + obj.name + "]"; - } else if (type3 === "[object Array]") { - return "[ Array(" + obj.length + ") ]"; - } else if (type3 === "[object Object]") { - let keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(", ") + ", ..." : keys.join(", "); - return "{ Object (" + kstr + ") }"; - } else { - return str; - } - } else { - return str; - } -} -__name(objDisplay, "objDisplay"); -function getMessage2(obj, args) { - let negate = flag(obj, "negate"); - let val = flag(obj, "object"); - let expected = args[3]; - let actual = getActual(obj, args); - let msg = negate ? args[2] : args[1]; - let flagMsg = flag(obj, "message"); - if (typeof msg === "function") msg = msg(); - msg = msg || ""; - msg = msg.replace(/#\{this\}/g, function() { - return objDisplay(val); - }).replace(/#\{act\}/g, function() { - return objDisplay(actual); - }).replace(/#\{exp\}/g, function() { - return objDisplay(expected); - }); - return flagMsg ? flagMsg + ": " + msg : msg; -} -__name(getMessage2, "getMessage"); -function transferFlags(assertion, object, includeAll) { - let flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null)); - if (!object.__flags) { - object.__flags = /* @__PURE__ */ Object.create(null); - } - includeAll = arguments.length === 3 ? includeAll : true; - for (let flag3 in flags) { - if (includeAll || flag3 !== "object" && flag3 !== "ssfi" && flag3 !== "lockSsfi" && flag3 != "message") { - object.__flags[flag3] = flags[flag3]; - } - } -} -__name(transferFlags, "transferFlags"); -function type2(obj) { - if (typeof obj === "undefined") { - return "undefined"; - } - if (obj === null) { - return "null"; - } - const stringTag = obj[Symbol.toStringTag]; - if (typeof stringTag === "string") { - return stringTag; - } - const sliceStart = 8; - const sliceEnd = -1; - return Object.prototype.toString.call(obj).slice(sliceStart, sliceEnd); -} -__name(type2, "type"); -function FakeMap() { - this._key = "chai/deep-eql__" + Math.random() + Date.now(); -} -__name(FakeMap, "FakeMap"); -FakeMap.prototype = { - get: __name(function get(key) { - return key[this._key]; - }, "get"), - set: __name(function set(key, value) { - if (Object.isExtensible(key)) { - Object.defineProperty(key, this._key, { - value, - configurable: true - }); - } - }, "set") -}; -var MemoizeMap = typeof WeakMap === "function" ? WeakMap : FakeMap; -function memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) { - if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return null; - } - var leftHandMap = memoizeMap.get(leftHandOperand); - if (leftHandMap) { - var result = leftHandMap.get(rightHandOperand); - if (typeof result === "boolean") { - return result; - } - } - return null; -} -__name(memoizeCompare, "memoizeCompare"); -function memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) { - if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return; - } - var leftHandMap = memoizeMap.get(leftHandOperand); - if (leftHandMap) { - leftHandMap.set(rightHandOperand, result); - } else { - leftHandMap = new MemoizeMap(); - leftHandMap.set(rightHandOperand, result); - memoizeMap.set(leftHandOperand, leftHandMap); - } -} -__name(memoizeSet, "memoizeSet"); -var deep_eql_default = deepEqual; -function deepEqual(leftHandOperand, rightHandOperand, options) { - if (options && options.comparator) { - return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); - } - var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); - if (simpleResult !== null) { - return simpleResult; - } - return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); -} -__name(deepEqual, "deepEqual"); -function simpleEqual(leftHandOperand, rightHandOperand) { - if (leftHandOperand === rightHandOperand) { - return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand; - } - if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare - rightHandOperand !== rightHandOperand) { - return true; - } - if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { - return false; - } - return null; -} -__name(simpleEqual, "simpleEqual"); -function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) { - options = options || {}; - options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap(); - var comparator = options && options.comparator; - var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize); - if (memoizeResultLeft !== null) { - return memoizeResultLeft; - } - var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize); - if (memoizeResultRight !== null) { - return memoizeResultRight; - } - if (comparator) { - var comparatorResult = comparator(leftHandOperand, rightHandOperand); - if (comparatorResult === false || comparatorResult === true) { - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult); - return comparatorResult; - } - var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); - if (simpleResult !== null) { - return simpleResult; - } - } - var leftHandType = type2(leftHandOperand); - if (leftHandType !== type2(rightHandOperand)) { - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false); - return false; - } - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true); - var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options); - memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result); - return result; -} -__name(extensiveDeepEqual, "extensiveDeepEqual"); -function extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) { - switch (leftHandType) { - case "String": - case "Number": - case "Boolean": - case "Date": - return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf()); - case "Promise": - case "Symbol": - case "function": - case "WeakMap": - case "WeakSet": - return leftHandOperand === rightHandOperand; - case "Error": - return keysEqual(leftHandOperand, rightHandOperand, ["name", "message", "code"], options); - case "Arguments": - case "Int8Array": - case "Uint8Array": - case "Uint8ClampedArray": - case "Int16Array": - case "Uint16Array": - case "Int32Array": - case "Uint32Array": - case "Float32Array": - case "Float64Array": - case "Array": - return iterableEqual(leftHandOperand, rightHandOperand, options); - case "RegExp": - return regexpEqual(leftHandOperand, rightHandOperand); - case "Generator": - return generatorEqual(leftHandOperand, rightHandOperand, options); - case "DataView": - return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options); - case "ArrayBuffer": - return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options); - case "Set": - return entriesEqual(leftHandOperand, rightHandOperand, options); - case "Map": - return entriesEqual(leftHandOperand, rightHandOperand, options); - case "Temporal.PlainDate": - case "Temporal.PlainTime": - case "Temporal.PlainDateTime": - case "Temporal.Instant": - case "Temporal.ZonedDateTime": - case "Temporal.PlainYearMonth": - case "Temporal.PlainMonthDay": - return leftHandOperand.equals(rightHandOperand); - case "Temporal.Duration": - return leftHandOperand.total("nanoseconds") === rightHandOperand.total("nanoseconds"); - case "Temporal.TimeZone": - case "Temporal.Calendar": - return leftHandOperand.toString() === rightHandOperand.toString(); - default: - return objectEqual(leftHandOperand, rightHandOperand, options); - } -} -__name(extensiveDeepEqualByType, "extensiveDeepEqualByType"); -function regexpEqual(leftHandOperand, rightHandOperand) { - return leftHandOperand.toString() === rightHandOperand.toString(); -} -__name(regexpEqual, "regexpEqual"); -function entriesEqual(leftHandOperand, rightHandOperand, options) { - try { - if (leftHandOperand.size !== rightHandOperand.size) { - return false; - } - if (leftHandOperand.size === 0) { - return true; - } - } catch (sizeError) { - return false; - } - var leftHandItems = []; - var rightHandItems = []; - leftHandOperand.forEach(__name(function gatherEntries(key, value) { - leftHandItems.push([key, value]); - }, "gatherEntries")); - rightHandOperand.forEach(__name(function gatherEntries(key, value) { - rightHandItems.push([key, value]); - }, "gatherEntries")); - return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options); -} -__name(entriesEqual, "entriesEqual"); -function iterableEqual(leftHandOperand, rightHandOperand, options) { - var length = leftHandOperand.length; - if (length !== rightHandOperand.length) { - return false; - } - if (length === 0) { - return true; - } - var index = -1; - while (++index < length) { - if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) { - return false; - } - } - return true; -} -__name(iterableEqual, "iterableEqual"); -function generatorEqual(leftHandOperand, rightHandOperand, options) { - return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options); -} -__name(generatorEqual, "generatorEqual"); -function hasIteratorFunction(target) { - return typeof Symbol !== "undefined" && typeof target === "object" && typeof Symbol.iterator !== "undefined" && typeof target[Symbol.iterator] === "function"; -} -__name(hasIteratorFunction, "hasIteratorFunction"); -function getIteratorEntries(target) { - if (hasIteratorFunction(target)) { - try { - return getGeneratorEntries(target[Symbol.iterator]()); - } catch (iteratorError) { - return []; - } - } - return []; -} -__name(getIteratorEntries, "getIteratorEntries"); -function getGeneratorEntries(generator) { - var generatorResult = generator.next(); - var accumulator = [generatorResult.value]; - while (generatorResult.done === false) { - generatorResult = generator.next(); - accumulator.push(generatorResult.value); - } - return accumulator; -} -__name(getGeneratorEntries, "getGeneratorEntries"); -function getEnumerableKeys(target) { - var keys = []; - for (var key in target) { - keys.push(key); - } - return keys; -} -__name(getEnumerableKeys, "getEnumerableKeys"); -function getEnumerableSymbols(target) { - var keys = []; - var allKeys = Object.getOwnPropertySymbols(target); - for (var i = 0; i < allKeys.length; i += 1) { - var key = allKeys[i]; - if (Object.getOwnPropertyDescriptor(target, key).enumerable) { - keys.push(key); - } - } - return keys; -} -__name(getEnumerableSymbols, "getEnumerableSymbols"); -function keysEqual(leftHandOperand, rightHandOperand, keys, options) { - var length = keys.length; - if (length === 0) { - return true; - } - for (var i = 0; i < length; i += 1) { - if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) { - return false; - } - } - return true; -} -__name(keysEqual, "keysEqual"); -function objectEqual(leftHandOperand, rightHandOperand, options) { - var leftHandKeys = getEnumerableKeys(leftHandOperand); - var rightHandKeys = getEnumerableKeys(rightHandOperand); - var leftHandSymbols = getEnumerableSymbols(leftHandOperand); - var rightHandSymbols = getEnumerableSymbols(rightHandOperand); - leftHandKeys = leftHandKeys.concat(leftHandSymbols); - rightHandKeys = rightHandKeys.concat(rightHandSymbols); - if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) { - if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) { - return false; - } - return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options); - } - var leftHandEntries = getIteratorEntries(leftHandOperand); - var rightHandEntries = getIteratorEntries(rightHandOperand); - if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) { - leftHandEntries.sort(); - rightHandEntries.sort(); - return iterableEqual(leftHandEntries, rightHandEntries, options); - } - if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) { - return true; - } - return false; -} -__name(objectEqual, "objectEqual"); -function isPrimitive(value) { - return value === null || typeof value !== "object"; -} -__name(isPrimitive, "isPrimitive"); -function mapSymbols(arr) { - return arr.map(__name(function mapSymbol(entry) { - if (typeof entry === "symbol") { - return entry.toString(); - } - return entry; - }, "mapSymbol")); -} -__name(mapSymbols, "mapSymbols"); -function hasProperty(obj, name) { - if (typeof obj === "undefined" || obj === null) { - return false; - } - return name in Object(obj); -} -__name(hasProperty, "hasProperty"); -function parsePath(path) { - const str = path.replace(/([^\\])\[/g, "$1.["); - const parts = str.match(/(\\\.|[^.]+?)+/g); - return parts.map((value) => { - if (value === "constructor" || value === "__proto__" || value === "prototype") { - return {}; - } - const regexp = /^\[(\d+)\]$/; - const mArr = regexp.exec(value); - let parsed = null; - if (mArr) { - parsed = { i: parseFloat(mArr[1]) }; - } else { - parsed = { p: value.replace(/\\([.[\]])/g, "$1") }; - } - return parsed; - }); -} -__name(parsePath, "parsePath"); -function internalGetPathValue(obj, parsed, pathDepth) { - let temporaryValue = obj; - let res = null; - pathDepth = typeof pathDepth === "undefined" ? parsed.length : pathDepth; - for (let i = 0; i < pathDepth; i++) { - const part = parsed[i]; - if (temporaryValue) { - if (typeof part.p === "undefined") { - temporaryValue = temporaryValue[part.i]; - } else { - temporaryValue = temporaryValue[part.p]; - } - if (i === pathDepth - 1) { - res = temporaryValue; - } - } - } - return res; -} -__name(internalGetPathValue, "internalGetPathValue"); -function getPathInfo(obj, path) { - const parsed = parsePath(path); - const last = parsed[parsed.length - 1]; - const info = { - parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj, - name: last.p || last.i, - value: internalGetPathValue(obj, parsed) - }; - info.exists = hasProperty(info.parent, info.name); - return info; -} -__name(getPathInfo, "getPathInfo"); -var _Assertion = class _Assertion2 { - /** - * Creates object for chaining. - * `Assertion` objects contain metadata in the form of flags. Three flags can - * be assigned during instantiation by passing arguments to this constructor: - * - * - `object`: This flag contains the target of the assertion. For example, in - * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will - * contain `numKittens` so that the `equal` assertion can reference it when - * needed. - * - * - `message`: This flag contains an optional custom error message to be - * prepended to the error message that's generated by the assertion when it - * fails. - * - * - `ssfi`: This flag stands for "start stack function indicator". It - * contains a function reference that serves as the starting point for - * removing frames from the stack trace of the error that's created by the - * assertion when it fails. The goal is to provide a cleaner stack trace to - * end users by removing Chai's internal functions. Note that it only works - * in environments that support `Error.captureStackTrace`, and only when - * `Chai.config.includeStack` hasn't been set to `false`. - * - * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag - * should retain its current value, even as assertions are chained off of - * this object. This is usually set to `true` when creating a new assertion - * from within another assertion. It's also temporarily set to `true` before - * an overwritten assertion gets called by the overwriting assertion. - * - * - `eql`: This flag contains the deepEqual function to be used by the assertion. - * - * @param {unknown} obj target of the assertion - * @param {string} [msg] (optional) custom error message - * @param {Function} [ssfi] (optional) starting point for removing stack frames - * @param {boolean} [lockSsfi] (optional) whether or not the ssfi flag is locked - */ - constructor(obj, msg, ssfi, lockSsfi) { - __publicField(this, "__flags", {}); - flag(this, "ssfi", ssfi || _Assertion2); - flag(this, "lockSsfi", lockSsfi); - flag(this, "object", obj); - flag(this, "message", msg); - flag(this, "eql", config.deepEqual || deep_eql_default); - return proxify(this); - } - /** @returns {boolean} */ - static get includeStack() { - console.warn( - "Assertion.includeStack is deprecated, use chai.config.includeStack instead." - ); - return config.includeStack; - } - /** @param {boolean} value */ - static set includeStack(value) { - console.warn( - "Assertion.includeStack is deprecated, use chai.config.includeStack instead." - ); - config.includeStack = value; - } - /** @returns {boolean} */ - static get showDiff() { - console.warn( - "Assertion.showDiff is deprecated, use chai.config.showDiff instead." - ); - return config.showDiff; - } - /** @param {boolean} value */ - static set showDiff(value) { - console.warn( - "Assertion.showDiff is deprecated, use chai.config.showDiff instead." - ); - config.showDiff = value; - } - /** - * @param {string} name - * @param {Function} fn - */ - static addProperty(name, fn) { - addProperty(this.prototype, name, fn); - } - /** - * @param {string} name - * @param {Function} fn - */ - static addMethod(name, fn) { - addMethod(this.prototype, name, fn); - } - /** - * @param {string} name - * @param {Function} fn - * @param {Function} chainingBehavior - */ - static addChainableMethod(name, fn, chainingBehavior) { - addChainableMethod(this.prototype, name, fn, chainingBehavior); - } - /** - * @param {string} name - * @param {Function} fn - */ - static overwriteProperty(name, fn) { - overwriteProperty(this.prototype, name, fn); - } - /** - * @param {string} name - * @param {Function} fn - */ - static overwriteMethod(name, fn) { - overwriteMethod(this.prototype, name, fn); - } - /** - * @param {string} name - * @param {Function} fn - * @param {Function} chainingBehavior - */ - static overwriteChainableMethod(name, fn, chainingBehavior) { - overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); - } - /** - * ### .assert(expression, message, negateMessage, expected, actual, showDiff) - * - * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass. - * - * @name assert - * @param {unknown} _expr to be tested - * @param {string | Function} msg or function that returns message to display if expression fails - * @param {string | Function} _negateMsg or function that returns negatedMessage to display if negated expression fails - * @param {unknown} expected value (remember to check for negation) - * @param {unknown} _actual (optional) will default to `this.obj` - * @param {boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails - * @returns {void} - */ - assert(_expr, msg, _negateMsg, expected, _actual, showDiff) { - const ok = test(this, arguments); - if (false !== showDiff) showDiff = true; - if (void 0 === expected && void 0 === _actual) showDiff = false; - if (true !== config.showDiff) showDiff = false; - if (!ok) { - msg = getMessage2(this, arguments); - const actual = getActual(this, arguments); - const assertionErrorObjectProperties = { - actual, - expected, - showDiff - }; - const operator = getOperator(this, arguments); - if (operator) { - assertionErrorObjectProperties.operator = operator; - } - throw new AssertionError( - msg, - assertionErrorObjectProperties, - // @ts-expect-error Not sure what to do about these types yet - config.includeStack ? this.assert : flag(this, "ssfi") - ); - } - } - /** - * Quick reference to stored `actual` value for plugin developers. - * - * @returns {unknown} - */ - get _obj() { - return flag(this, "object"); - } - /** - * Quick reference to stored `actual` value for plugin developers. - * - * @param {unknown} val - */ - set _obj(val) { - flag(this, "object", val); - } -}; -__name(_Assertion, "Assertion"); -var Assertion = _Assertion; -var events = new EventTarget(); -var _PluginEvent = class _PluginEvent2 extends Event { - constructor(type3, name, fn) { - super(type3); - this.name = String(name); - this.fn = fn; - } -}; -__name(_PluginEvent, "PluginEvent"); -var PluginEvent = _PluginEvent; -function isProxyEnabled() { - return config.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined"; -} -__name(isProxyEnabled, "isProxyEnabled"); -function addProperty(ctx, name, getter) { - getter = getter === void 0 ? function() { - } : getter; - Object.defineProperty(ctx, name, { - get: __name(function propertyGetter() { - if (!isProxyEnabled() && !flag(this, "lockSsfi")) { - flag(this, "ssfi", propertyGetter); - } - let result = getter.call(this); - if (result !== void 0) return result; - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "propertyGetter"), - configurable: true - }); - events.dispatchEvent(new PluginEvent("addProperty", name, getter)); -} -__name(addProperty, "addProperty"); -var fnLengthDesc = Object.getOwnPropertyDescriptor(function() { -}, "length"); -function addLengthGuard(fn, assertionName, isChainable) { - if (!fnLengthDesc.configurable) return fn; - Object.defineProperty(fn, "length", { - get: __name(function() { - if (isChainable) { - throw Error( - "Invalid Chai property: " + assertionName + '.length. Due to a compatibility issue, "length" cannot directly follow "' + assertionName + '". Use "' + assertionName + '.lengthOf" instead.' - ); - } - throw Error( - "Invalid Chai property: " + assertionName + '.length. See docs for proper usage of "' + assertionName + '".' - ); - }, "get") - }); - return fn; -} -__name(addLengthGuard, "addLengthGuard"); -function getProperties(object) { - let result = Object.getOwnPropertyNames(object); - function addProperty2(property) { - if (result.indexOf(property) === -1) { - result.push(property); - } - } - __name(addProperty2, "addProperty"); - let proto = Object.getPrototypeOf(object); - while (proto !== null) { - Object.getOwnPropertyNames(proto).forEach(addProperty2); - proto = Object.getPrototypeOf(proto); - } - return result; -} -__name(getProperties, "getProperties"); -var builtins = ["__flags", "__methods", "_obj", "assert"]; -function proxify(obj, nonChainableMethodName) { - if (!isProxyEnabled()) return obj; - return new Proxy(obj, { - get: __name(function proxyGetter(target, property) { - if (typeof property === "string" && config.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) { - if (nonChainableMethodName) { - throw Error( - "Invalid Chai property: " + nonChainableMethodName + "." + property + '. See docs for proper usage of "' + nonChainableMethodName + '".' - ); - } - let suggestion = null; - let suggestionDistance = 4; - getProperties(target).forEach(function(prop) { - if ( - // we actually mean to check `Object.prototype` here - // eslint-disable-next-line no-prototype-builtins - !Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1 - ) { - let dist = stringDistanceCapped(property, prop, suggestionDistance); - if (dist < suggestionDistance) { - suggestion = prop; - suggestionDistance = dist; - } - } - }); - if (suggestion !== null) { - throw Error( - "Invalid Chai property: " + property + '. Did you mean "' + suggestion + '"?' - ); - } else { - throw Error("Invalid Chai property: " + property); - } - } - if (builtins.indexOf(property) === -1 && !flag(target, "lockSsfi")) { - flag(target, "ssfi", proxyGetter); - } - return Reflect.get(target, property); - }, "proxyGetter") - }); -} -__name(proxify, "proxify"); -function stringDistanceCapped(strA, strB, cap) { - if (Math.abs(strA.length - strB.length) >= cap) { - return cap; - } - let memo = []; - for (let i = 0; i <= strA.length; i++) { - memo[i] = Array(strB.length + 1).fill(0); - memo[i][0] = i; - } - for (let j = 0; j < strB.length; j++) { - memo[0][j] = j; - } - for (let i = 1; i <= strA.length; i++) { - let ch = strA.charCodeAt(i - 1); - for (let j = 1; j <= strB.length; j++) { - if (Math.abs(i - j) >= cap) { - memo[i][j] = cap; - continue; - } - memo[i][j] = Math.min( - memo[i - 1][j] + 1, - memo[i][j - 1] + 1, - memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1) - ); - } - } - return memo[strA.length][strB.length]; -} -__name(stringDistanceCapped, "stringDistanceCapped"); -function addMethod(ctx, name, method) { - let methodWrapper = __name(function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", methodWrapper); - } - let result = method.apply(this, arguments); - if (result !== void 0) return result; - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "methodWrapper"); - addLengthGuard(methodWrapper, name, false); - ctx[name] = proxify(methodWrapper, name); - events.dispatchEvent(new PluginEvent("addMethod", name, method)); -} -__name(addMethod, "addMethod"); -function overwriteProperty(ctx, name, getter) { - let _get = Object.getOwnPropertyDescriptor(ctx, name), _super = __name(function() { - }, "_super"); - if (_get && "function" === typeof _get.get) _super = _get.get; - Object.defineProperty(ctx, name, { - get: __name(function overwritingPropertyGetter() { - if (!isProxyEnabled() && !flag(this, "lockSsfi")) { - flag(this, "ssfi", overwritingPropertyGetter); - } - let origLockSsfi = flag(this, "lockSsfi"); - flag(this, "lockSsfi", true); - let result = getter(_super).call(this); - flag(this, "lockSsfi", origLockSsfi); - if (result !== void 0) { - return result; - } - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "overwritingPropertyGetter"), - configurable: true - }); -} -__name(overwriteProperty, "overwriteProperty"); -function overwriteMethod(ctx, name, method) { - let _method = ctx[name], _super = __name(function() { - throw new Error(name + " is not a function"); - }, "_super"); - if (_method && "function" === typeof _method) _super = _method; - let overwritingMethodWrapper = __name(function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", overwritingMethodWrapper); - } - let origLockSsfi = flag(this, "lockSsfi"); - flag(this, "lockSsfi", true); - let result = method(_super).apply(this, arguments); - flag(this, "lockSsfi", origLockSsfi); - if (result !== void 0) { - return result; - } - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "overwritingMethodWrapper"); - addLengthGuard(overwritingMethodWrapper, name, false); - ctx[name] = proxify(overwritingMethodWrapper, name); -} -__name(overwriteMethod, "overwriteMethod"); -var canSetPrototype = typeof Object.setPrototypeOf === "function"; -var testFn = __name(function() { -}, "testFn"); -var excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) { - let propDesc = Object.getOwnPropertyDescriptor(testFn, name); - if (typeof propDesc !== "object") return true; - return !propDesc.configurable; -}); -var call = Function.prototype.call; -var apply = Function.prototype.apply; -var _PluginAddChainableMethodEvent = class _PluginAddChainableMethodEvent2 extends PluginEvent { - constructor(type3, name, fn, chainingBehavior) { - super(type3, name, fn); - this.chainingBehavior = chainingBehavior; - } -}; -__name(_PluginAddChainableMethodEvent, "PluginAddChainableMethodEvent"); -var PluginAddChainableMethodEvent = _PluginAddChainableMethodEvent; -function addChainableMethod(ctx, name, method, chainingBehavior) { - if (typeof chainingBehavior !== "function") { - chainingBehavior = __name(function() { - }, "chainingBehavior"); - } - let chainableBehavior = { - method, - chainingBehavior - }; - if (!ctx.__methods) { - ctx.__methods = {}; - } - ctx.__methods[name] = chainableBehavior; - Object.defineProperty(ctx, name, { - get: __name(function chainableMethodGetter() { - chainableBehavior.chainingBehavior.call(this); - let chainableMethodWrapper = __name(function() { - if (!flag(this, "lockSsfi")) { - flag(this, "ssfi", chainableMethodWrapper); - } - let result = chainableBehavior.method.apply(this, arguments); - if (result !== void 0) { - return result; - } - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "chainableMethodWrapper"); - addLengthGuard(chainableMethodWrapper, name, true); - if (canSetPrototype) { - let prototype = Object.create(this); - prototype.call = call; - prototype.apply = apply; - Object.setPrototypeOf(chainableMethodWrapper, prototype); - } else { - let asserterNames = Object.getOwnPropertyNames(ctx); - asserterNames.forEach(function(asserterName) { - if (excludeNames.indexOf(asserterName) !== -1) { - return; - } - let pd = Object.getOwnPropertyDescriptor(ctx, asserterName); - Object.defineProperty(chainableMethodWrapper, asserterName, pd); - }); - } - transferFlags(this, chainableMethodWrapper); - return proxify(chainableMethodWrapper); - }, "chainableMethodGetter"), - configurable: true - }); - events.dispatchEvent( - new PluginAddChainableMethodEvent( - "addChainableMethod", - name, - method, - chainingBehavior - ) - ); -} -__name(addChainableMethod, "addChainableMethod"); -function overwriteChainableMethod(ctx, name, method, chainingBehavior) { - let chainableBehavior = ctx.__methods[name]; - let _chainingBehavior = chainableBehavior.chainingBehavior; - chainableBehavior.chainingBehavior = __name(function overwritingChainableMethodGetter() { - let result = chainingBehavior(_chainingBehavior).call(this); - if (result !== void 0) { - return result; - } - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "overwritingChainableMethodGetter"); - let _method = chainableBehavior.method; - chainableBehavior.method = __name(function overwritingChainableMethodWrapper() { - let result = method(_method).apply(this, arguments); - if (result !== void 0) { - return result; - } - let newAssertion = new Assertion(); - transferFlags(this, newAssertion); - return newAssertion; - }, "overwritingChainableMethodWrapper"); -} -__name(overwriteChainableMethod, "overwriteChainableMethod"); -function compareByInspect(a, b) { - return inspect2(a) < inspect2(b) ? -1 : 1; -} -__name(compareByInspect, "compareByInspect"); -function getOwnEnumerablePropertySymbols(obj) { - if (typeof Object.getOwnPropertySymbols !== "function") return []; - return Object.getOwnPropertySymbols(obj).filter(function(sym) { - return Object.getOwnPropertyDescriptor(obj, sym).enumerable; - }); -} -__name(getOwnEnumerablePropertySymbols, "getOwnEnumerablePropertySymbols"); -function getOwnEnumerableProperties(obj) { - return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj)); -} -__name(getOwnEnumerableProperties, "getOwnEnumerableProperties"); -var isNaN2 = Number.isNaN; -function isObjectType(obj) { - let objectType = type(obj); - let objectTypes = ["Array", "Object", "Function"]; - return objectTypes.indexOf(objectType) !== -1; -} -__name(isObjectType, "isObjectType"); -function getOperator(obj, args) { - let operator = flag(obj, "operator"); - let negate = flag(obj, "negate"); - let expected = args[3]; - let msg = negate ? args[2] : args[1]; - if (operator) { - return operator; - } - if (typeof msg === "function") msg = msg(); - msg = msg || ""; - if (!msg) { - return void 0; - } - if (/\shave\s/.test(msg)) { - return void 0; - } - let isObject = isObjectType(expected); - if (/\snot\s/.test(msg)) { - return isObject ? "notDeepStrictEqual" : "notStrictEqual"; - } - return isObject ? "deepStrictEqual" : "strictEqual"; -} -__name(getOperator, "getOperator"); -function getName(fn) { - return fn.name; -} -__name(getName, "getName"); -function isRegExp2(obj) { - return Object.prototype.toString.call(obj) === "[object RegExp]"; -} -__name(isRegExp2, "isRegExp"); -function isNumeric(obj) { - return ["Number", "BigInt"].includes(type(obj)); -} -__name(isNumeric, "isNumeric"); -var { flag: flag2 } = utils_exports; -[ - "to", - "be", - "been", - "is", - "and", - "has", - "have", - "with", - "that", - "which", - "at", - "of", - "same", - "but", - "does", - "still", - "also" -].forEach(function(chain) { - Assertion.addProperty(chain); -}); -Assertion.addProperty("not", function() { - flag2(this, "negate", true); -}); -Assertion.addProperty("deep", function() { - flag2(this, "deep", true); -}); -Assertion.addProperty("nested", function() { - flag2(this, "nested", true); -}); -Assertion.addProperty("own", function() { - flag2(this, "own", true); -}); -Assertion.addProperty("ordered", function() { - flag2(this, "ordered", true); -}); -Assertion.addProperty("any", function() { - flag2(this, "any", true); - flag2(this, "all", false); -}); -Assertion.addProperty("all", function() { - flag2(this, "all", true); - flag2(this, "any", false); -}); -var functionTypes = { - function: [ - "function", - "asyncfunction", - "generatorfunction", - "asyncgeneratorfunction" - ], - asyncfunction: ["asyncfunction", "asyncgeneratorfunction"], - generatorfunction: ["generatorfunction", "asyncgeneratorfunction"], - asyncgeneratorfunction: ["asyncgeneratorfunction"] -}; -function an(type3, msg) { - if (msg) flag2(this, "message", msg); - type3 = type3.toLowerCase(); - let obj = flag2(this, "object"), article = ~["a", "e", "i", "o", "u"].indexOf(type3.charAt(0)) ? "an " : "a "; - const detectedType = type(obj).toLowerCase(); - if (functionTypes["function"].includes(type3)) { - this.assert( - functionTypes[type3].includes(detectedType), - "expected #{this} to be " + article + type3, - "expected #{this} not to be " + article + type3 - ); - } else { - this.assert( - type3 === detectedType, - "expected #{this} to be " + article + type3, - "expected #{this} not to be " + article + type3 - ); - } -} -__name(an, "an"); -Assertion.addChainableMethod("an", an); -Assertion.addChainableMethod("a", an); -function SameValueZero(a, b) { - return isNaN2(a) && isNaN2(b) || a === b; -} -__name(SameValueZero, "SameValueZero"); -function includeChainingBehavior() { - flag2(this, "contains", true); -} -__name(includeChainingBehavior, "includeChainingBehavior"); -function include(val, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, "message"), negate = flag2(this, "negate"), ssfi = flag2(this, "ssfi"), isDeep = flag2(this, "deep"), descriptor = isDeep ? "deep " : "", isEql = isDeep ? flag2(this, "eql") : SameValueZero; - flagMsg = flagMsg ? flagMsg + ": " : ""; - let included = false; - switch (objType) { - case "string": - included = obj.indexOf(val) !== -1; - break; - case "weakset": - if (isDeep) { - throw new AssertionError( - flagMsg + "unable to use .deep.include with WeakSet", - void 0, - ssfi - ); - } - included = obj.has(val); - break; - case "map": - obj.forEach(function(item) { - included = included || isEql(item, val); - }); - break; - case "set": - if (isDeep) { - obj.forEach(function(item) { - included = included || isEql(item, val); - }); - } else { - included = obj.has(val); - } - break; - case "array": - if (isDeep) { - included = obj.some(function(item) { - return isEql(item, val); - }); - } else { - included = obj.indexOf(val) !== -1; - } - break; - default: { - if (val !== Object(val)) { - throw new AssertionError( - flagMsg + "the given combination of arguments (" + objType + " and " + type(val).toLowerCase() + ") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a " + type(val).toLowerCase(), - void 0, - ssfi - ); - } - let props = Object.keys(val); - let firstErr = null; - let numErrs = 0; - props.forEach(function(prop) { - let propAssertion = new Assertion(obj); - transferFlags(this, propAssertion, true); - flag2(propAssertion, "lockSsfi", true); - if (!negate || props.length === 1) { - propAssertion.property(prop, val[prop]); - return; - } - try { - propAssertion.property(prop, val[prop]); - } catch (err) { - if (!check_error_exports.compatibleConstructor(err, AssertionError)) { - throw err; - } - if (firstErr === null) firstErr = err; - numErrs++; - } - }, this); - if (negate && props.length > 1 && numErrs === props.length) { - throw firstErr; - } - return; - } - } - this.assert( - included, - "expected #{this} to " + descriptor + "include " + inspect2(val), - "expected #{this} to not " + descriptor + "include " + inspect2(val) - ); -} -__name(include, "include"); -Assertion.addChainableMethod("include", include, includeChainingBehavior); -Assertion.addChainableMethod("contain", include, includeChainingBehavior); -Assertion.addChainableMethod("contains", include, includeChainingBehavior); -Assertion.addChainableMethod("includes", include, includeChainingBehavior); -Assertion.addProperty("ok", function() { - this.assert( - flag2(this, "object"), - "expected #{this} to be truthy", - "expected #{this} to be falsy" - ); -}); -Assertion.addProperty("true", function() { - this.assert( - true === flag2(this, "object"), - "expected #{this} to be true", - "expected #{this} to be false", - flag2(this, "negate") ? false : true - ); -}); -Assertion.addProperty("numeric", function() { - const object = flag2(this, "object"); - this.assert( - ["Number", "BigInt"].includes(type(object)), - "expected #{this} to be numeric", - "expected #{this} to not be numeric", - flag2(this, "negate") ? false : true - ); -}); -Assertion.addProperty("callable", function() { - const val = flag2(this, "object"); - const ssfi = flag2(this, "ssfi"); - const message = flag2(this, "message"); - const msg = message ? `${message}: ` : ""; - const negate = flag2(this, "negate"); - const assertionMessage = negate ? `${msg}expected ${inspect2(val)} not to be a callable function` : `${msg}expected ${inspect2(val)} to be a callable function`; - const isCallable = [ - "Function", - "AsyncFunction", - "GeneratorFunction", - "AsyncGeneratorFunction" - ].includes(type(val)); - if (isCallable && negate || !isCallable && !negate) { - throw new AssertionError(assertionMessage, void 0, ssfi); - } -}); -Assertion.addProperty("false", function() { - this.assert( - false === flag2(this, "object"), - "expected #{this} to be false", - "expected #{this} to be true", - flag2(this, "negate") ? true : false - ); -}); -Assertion.addProperty("null", function() { - this.assert( - null === flag2(this, "object"), - "expected #{this} to be null", - "expected #{this} not to be null" - ); -}); -Assertion.addProperty("undefined", function() { - this.assert( - void 0 === flag2(this, "object"), - "expected #{this} to be undefined", - "expected #{this} not to be undefined" - ); -}); -Assertion.addProperty("NaN", function() { - this.assert( - isNaN2(flag2(this, "object")), - "expected #{this} to be NaN", - "expected #{this} not to be NaN" - ); -}); -function assertExist() { - let val = flag2(this, "object"); - this.assert( - val !== null && val !== void 0, - "expected #{this} to exist", - "expected #{this} to not exist" - ); -} -__name(assertExist, "assertExist"); -Assertion.addProperty("exist", assertExist); -Assertion.addProperty("exists", assertExist); -Assertion.addProperty("empty", function() { - let val = flag2(this, "object"), ssfi = flag2(this, "ssfi"), flagMsg = flag2(this, "message"), itemsCount; - flagMsg = flagMsg ? flagMsg + ": " : ""; - switch (type(val).toLowerCase()) { - case "array": - case "string": - itemsCount = val.length; - break; - case "map": - case "set": - itemsCount = val.size; - break; - case "weakmap": - case "weakset": - throw new AssertionError( - flagMsg + ".empty was passed a weak collection", - void 0, - ssfi - ); - case "function": { - const msg = flagMsg + ".empty was passed a function " + getName(val); - throw new AssertionError(msg.trim(), void 0, ssfi); - } - default: - if (val !== Object(val)) { - throw new AssertionError( - flagMsg + ".empty was passed non-string primitive " + inspect2(val), - void 0, - ssfi - ); - } - itemsCount = Object.keys(val).length; - } - this.assert( - 0 === itemsCount, - "expected #{this} to be empty", - "expected #{this} not to be empty" - ); -}); -function checkArguments() { - let obj = flag2(this, "object"), type3 = type(obj); - this.assert( - "Arguments" === type3, - "expected #{this} to be arguments but got " + type3, - "expected #{this} to not be arguments" - ); -} -__name(checkArguments, "checkArguments"); -Assertion.addProperty("arguments", checkArguments); -Assertion.addProperty("Arguments", checkArguments); -function assertEqual(val, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"); - if (flag2(this, "deep")) { - let prevLockSsfi = flag2(this, "lockSsfi"); - flag2(this, "lockSsfi", true); - this.eql(val); - flag2(this, "lockSsfi", prevLockSsfi); - } else { - this.assert( - val === obj, - "expected #{this} to equal #{exp}", - "expected #{this} to not equal #{exp}", - val, - this._obj, - true - ); - } -} -__name(assertEqual, "assertEqual"); -Assertion.addMethod("equal", assertEqual); -Assertion.addMethod("equals", assertEqual); -Assertion.addMethod("eq", assertEqual); -function assertEql(obj, msg) { - if (msg) flag2(this, "message", msg); - let eql = flag2(this, "eql"); - this.assert( - eql(obj, flag2(this, "object")), - "expected #{this} to deeply equal #{exp}", - "expected #{this} to not deeply equal #{exp}", - obj, - this._obj, - true - ); -} -__name(assertEql, "assertEql"); -Assertion.addMethod("eql", assertEql); -Assertion.addMethod("eqls", assertEql); -function assertAbove(n, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), doLength = flag2(this, "doLength"), flagMsg = flag2(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag2(this, "ssfi"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(); - if (doLength && objType !== "map" && objType !== "set") { - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && objType === "date" && nType !== "date") { - throw new AssertionError( - msgPrefix + "the argument to above must be a date", - void 0, - ssfi - ); - } else if (!isNumeric(n) && (doLength || isNumeric(obj))) { - throw new AssertionError( - msgPrefix + "the argument to above must be a number", - void 0, - ssfi - ); - } else if (!doLength && objType !== "date" && !isNumeric(obj)) { - let printObj = objType === "string" ? "'" + obj + "'" : obj; - throw new AssertionError( - msgPrefix + "expected " + printObj + " to be a number or a date", - void 0, - ssfi - ); - } - if (doLength) { - let descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount > n, - "expected #{this} to have a " + descriptor + " above #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " above #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj > n, - "expected #{this} to be above #{exp}", - "expected #{this} to be at most #{exp}", - n - ); - } -} -__name(assertAbove, "assertAbove"); -Assertion.addMethod("above", assertAbove); -Assertion.addMethod("gt", assertAbove); -Assertion.addMethod("greaterThan", assertAbove); -function assertLeast(n, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), doLength = flag2(this, "doLength"), flagMsg = flag2(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag2(this, "ssfi"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && objType === "date" && nType !== "date") { - errorMessage = msgPrefix + "the argument to least must be a date"; - } else if (!isNumeric(n) && (doLength || isNumeric(obj))) { - errorMessage = msgPrefix + "the argument to least must be a number"; - } else if (!doLength && objType !== "date" && !isNumeric(obj)) { - let printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError(errorMessage, void 0, ssfi); - } - if (doLength) { - let descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount >= n, - "expected #{this} to have a " + descriptor + " at least #{exp} but got #{act}", - "expected #{this} to have a " + descriptor + " below #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj >= n, - "expected #{this} to be at least #{exp}", - "expected #{this} to be below #{exp}", - n - ); - } -} -__name(assertLeast, "assertLeast"); -Assertion.addMethod("least", assertLeast); -Assertion.addMethod("gte", assertLeast); -Assertion.addMethod("greaterThanOrEqual", assertLeast); -function assertBelow(n, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), doLength = flag2(this, "doLength"), flagMsg = flag2(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag2(this, "ssfi"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && objType === "date" && nType !== "date") { - errorMessage = msgPrefix + "the argument to below must be a date"; - } else if (!isNumeric(n) && (doLength || isNumeric(obj))) { - errorMessage = msgPrefix + "the argument to below must be a number"; - } else if (!doLength && objType !== "date" && !isNumeric(obj)) { - let printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError(errorMessage, void 0, ssfi); - } - if (doLength) { - let descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount < n, - "expected #{this} to have a " + descriptor + " below #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " below #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj < n, - "expected #{this} to be below #{exp}", - "expected #{this} to be at least #{exp}", - n - ); - } -} -__name(assertBelow, "assertBelow"); -Assertion.addMethod("below", assertBelow); -Assertion.addMethod("lt", assertBelow); -Assertion.addMethod("lessThan", assertBelow); -function assertMost(n, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), doLength = flag2(this, "doLength"), flagMsg = flag2(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag2(this, "ssfi"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && objType === "date" && nType !== "date") { - errorMessage = msgPrefix + "the argument to most must be a date"; - } else if (!isNumeric(n) && (doLength || isNumeric(obj))) { - errorMessage = msgPrefix + "the argument to most must be a number"; - } else if (!doLength && objType !== "date" && !isNumeric(obj)) { - let printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError(errorMessage, void 0, ssfi); - } - if (doLength) { - let descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount <= n, - "expected #{this} to have a " + descriptor + " at most #{exp} but got #{act}", - "expected #{this} to have a " + descriptor + " above #{exp}", - n, - itemsCount - ); - } else { - this.assert( - obj <= n, - "expected #{this} to be at most #{exp}", - "expected #{this} to be above #{exp}", - n - ); - } -} -__name(assertMost, "assertMost"); -Assertion.addMethod("most", assertMost); -Assertion.addMethod("lte", assertMost); -Assertion.addMethod("lessThanOrEqual", assertMost); -Assertion.addMethod("within", function(start, finish, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), doLength = flag2(this, "doLength"), flagMsg = flag2(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag2(this, "ssfi"), objType = type(obj).toLowerCase(), startType = type(start).toLowerCase(), finishType = type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === "date" && finishType === "date" ? start.toISOString() + ".." + finish.toISOString() : start + ".." + finish; - if (doLength && objType !== "map" && objType !== "set") { - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - } - if (!doLength && objType === "date" && (startType !== "date" || finishType !== "date")) { - errorMessage = msgPrefix + "the arguments to within must be dates"; - } else if ((!isNumeric(start) || !isNumeric(finish)) && (doLength || isNumeric(obj))) { - errorMessage = msgPrefix + "the arguments to within must be numbers"; - } else if (!doLength && objType !== "date" && !isNumeric(obj)) { - let printObj = objType === "string" ? "'" + obj + "'" : obj; - errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; - } else { - shouldThrow = false; - } - if (shouldThrow) { - throw new AssertionError(errorMessage, void 0, ssfi); - } - if (doLength) { - let descriptor = "length", itemsCount; - if (objType === "map" || objType === "set") { - descriptor = "size"; - itemsCount = obj.size; - } else { - itemsCount = obj.length; - } - this.assert( - itemsCount >= start && itemsCount <= finish, - "expected #{this} to have a " + descriptor + " within " + range, - "expected #{this} to not have a " + descriptor + " within " + range - ); - } else { - this.assert( - obj >= start && obj <= finish, - "expected #{this} to be within " + range, - "expected #{this} to not be within " + range - ); - } -}); -function assertInstanceOf(constructor, msg) { - if (msg) flag2(this, "message", msg); - let target = flag2(this, "object"); - let ssfi = flag2(this, "ssfi"); - let flagMsg = flag2(this, "message"); - let isInstanceOf; - try { - isInstanceOf = target instanceof constructor; - } catch (err) { - if (err instanceof TypeError) { - flagMsg = flagMsg ? flagMsg + ": " : ""; - throw new AssertionError( - flagMsg + "The instanceof assertion needs a constructor but " + type(constructor) + " was given.", - void 0, - ssfi - ); - } - throw err; - } - let name = getName(constructor); - if (name == null) { - name = "an unnamed constructor"; - } - this.assert( - isInstanceOf, - "expected #{this} to be an instance of " + name, - "expected #{this} to not be an instance of " + name - ); -} -__name(assertInstanceOf, "assertInstanceOf"); -Assertion.addMethod("instanceof", assertInstanceOf); -Assertion.addMethod("instanceOf", assertInstanceOf); -function assertProperty(name, val, msg) { - if (msg) flag2(this, "message", msg); - let isNested = flag2(this, "nested"), isOwn = flag2(this, "own"), flagMsg = flag2(this, "message"), obj = flag2(this, "object"), ssfi = flag2(this, "ssfi"), nameType = typeof name; - flagMsg = flagMsg ? flagMsg + ": " : ""; - if (isNested) { - if (nameType !== "string") { - throw new AssertionError( - flagMsg + "the argument to property must be a string when using nested syntax", - void 0, - ssfi - ); - } - } else { - if (nameType !== "string" && nameType !== "number" && nameType !== "symbol") { - throw new AssertionError( - flagMsg + "the argument to property must be a string, number, or symbol", - void 0, - ssfi - ); - } - } - if (isNested && isOwn) { - throw new AssertionError( - flagMsg + 'The "nested" and "own" flags cannot be combined.', - void 0, - ssfi - ); - } - if (obj === null || obj === void 0) { - throw new AssertionError( - flagMsg + "Target cannot be null or undefined.", - void 0, - ssfi - ); - } - let isDeep = flag2(this, "deep"), negate = flag2(this, "negate"), pathInfo = isNested ? getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag2(this, "eql") : (val1, val2) => val1 === val2; - let descriptor = ""; - if (isDeep) descriptor += "deep "; - if (isOwn) descriptor += "own "; - if (isNested) descriptor += "nested "; - descriptor += "property "; - let hasProperty2; - if (isOwn) hasProperty2 = Object.prototype.hasOwnProperty.call(obj, name); - else if (isNested) hasProperty2 = pathInfo.exists; - else hasProperty2 = hasProperty(obj, name); - if (!negate || arguments.length === 1) { - this.assert( - hasProperty2, - "expected #{this} to have " + descriptor + inspect2(name), - "expected #{this} to not have " + descriptor + inspect2(name) - ); - } - if (arguments.length > 1) { - this.assert( - hasProperty2 && isEql(val, value), - "expected #{this} to have " + descriptor + inspect2(name) + " of #{exp}, but got #{act}", - "expected #{this} to not have " + descriptor + inspect2(name) + " of #{act}", - val, - value - ); - } - flag2(this, "object", value); -} -__name(assertProperty, "assertProperty"); -Assertion.addMethod("property", assertProperty); -function assertOwnProperty(_name, _value, _msg) { - flag2(this, "own", true); - assertProperty.apply(this, arguments); -} -__name(assertOwnProperty, "assertOwnProperty"); -Assertion.addMethod("ownProperty", assertOwnProperty); -Assertion.addMethod("haveOwnProperty", assertOwnProperty); -function assertOwnPropertyDescriptor(name, descriptor, msg) { - if (typeof descriptor === "string") { - msg = descriptor; - descriptor = null; - } - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"); - let actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); - let eql = flag2(this, "eql"); - if (actualDescriptor && descriptor) { - this.assert( - eql(descriptor, actualDescriptor), - "expected the own property descriptor for " + inspect2(name) + " on #{this} to match " + inspect2(descriptor) + ", got " + inspect2(actualDescriptor), - "expected the own property descriptor for " + inspect2(name) + " on #{this} to not match " + inspect2(descriptor), - descriptor, - actualDescriptor, - true - ); - } else { - this.assert( - actualDescriptor, - "expected #{this} to have an own property descriptor for " + inspect2(name), - "expected #{this} to not have an own property descriptor for " + inspect2(name) - ); - } - flag2(this, "object", actualDescriptor); -} -__name(assertOwnPropertyDescriptor, "assertOwnPropertyDescriptor"); -Assertion.addMethod("ownPropertyDescriptor", assertOwnPropertyDescriptor); -Assertion.addMethod("haveOwnPropertyDescriptor", assertOwnPropertyDescriptor); -function assertLengthChain() { - flag2(this, "doLength", true); -} -__name(assertLengthChain, "assertLengthChain"); -function assertLength(n, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"), descriptor = "length", itemsCount; - switch (objType) { - case "map": - case "set": - descriptor = "size"; - itemsCount = obj.size; - break; - default: - new Assertion(obj, flagMsg, ssfi, true).to.have.property("length"); - itemsCount = obj.length; - } - this.assert( - itemsCount == n, - "expected #{this} to have a " + descriptor + " of #{exp} but got #{act}", - "expected #{this} to not have a " + descriptor + " of #{act}", - n, - itemsCount - ); -} -__name(assertLength, "assertLength"); -Assertion.addChainableMethod("length", assertLength, assertLengthChain); -Assertion.addChainableMethod("lengthOf", assertLength, assertLengthChain); -function assertMatch(re, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"); - this.assert( - re.exec(obj), - "expected #{this} to match " + re, - "expected #{this} not to match " + re - ); -} -__name(assertMatch, "assertMatch"); -Assertion.addMethod("match", assertMatch); -Assertion.addMethod("matches", assertMatch); -Assertion.addMethod("string", function(str, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(obj, flagMsg, ssfi, true).is.a("string"); - this.assert( - ~obj.indexOf(str), - "expected #{this} to contain " + inspect2(str), - "expected #{this} to not contain " + inspect2(str) - ); -}); -function assertKeys(keys) { - let obj = flag2(this, "object"), objType = type(obj), keysType = type(keys), ssfi = flag2(this, "ssfi"), isDeep = flag2(this, "deep"), str, deepStr = "", actual, ok = true, flagMsg = flag2(this, "message"); - flagMsg = flagMsg ? flagMsg + ": " : ""; - let mixedArgsMsg = flagMsg + "when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments"; - if (objType === "Map" || objType === "Set") { - deepStr = isDeep ? "deeply " : ""; - actual = []; - obj.forEach(function(val, key) { - actual.push(key); - }); - if (keysType !== "Array") { - keys = Array.prototype.slice.call(arguments); - } - } else { - actual = getOwnEnumerableProperties(obj); - switch (keysType) { - case "Array": - if (arguments.length > 1) { - throw new AssertionError(mixedArgsMsg, void 0, ssfi); - } - break; - case "Object": - if (arguments.length > 1) { - throw new AssertionError(mixedArgsMsg, void 0, ssfi); - } - keys = Object.keys(keys); - break; - default: - keys = Array.prototype.slice.call(arguments); - } - keys = keys.map(function(val) { - return typeof val === "symbol" ? val : String(val); - }); - } - if (!keys.length) { - throw new AssertionError(flagMsg + "keys required", void 0, ssfi); - } - let len = keys.length, any = flag2(this, "any"), all = flag2(this, "all"), expected = keys, isEql = isDeep ? flag2(this, "eql") : (val1, val2) => val1 === val2; - if (!any && !all) { - all = true; - } - if (any) { - ok = expected.some(function(expectedKey) { - return actual.some(function(actualKey) { - return isEql(expectedKey, actualKey); - }); - }); - } - if (all) { - ok = expected.every(function(expectedKey) { - return actual.some(function(actualKey) { - return isEql(expectedKey, actualKey); - }); - }); - if (!flag2(this, "contains")) { - ok = ok && keys.length == actual.length; - } - } - if (len > 1) { - keys = keys.map(function(key) { - return inspect2(key); - }); - let last = keys.pop(); - if (all) { - str = keys.join(", ") + ", and " + last; - } - if (any) { - str = keys.join(", ") + ", or " + last; - } - } else { - str = inspect2(keys[0]); - } - str = (len > 1 ? "keys " : "key ") + str; - str = (flag2(this, "contains") ? "contain " : "have ") + str; - this.assert( - ok, - "expected #{this} to " + deepStr + str, - "expected #{this} to not " + deepStr + str, - expected.slice(0).sort(compareByInspect), - actual.sort(compareByInspect), - true - ); -} -__name(assertKeys, "assertKeys"); -Assertion.addMethod("keys", assertKeys); -Assertion.addMethod("key", assertKeys); -function assertThrows(errorLike, errMsgMatcher, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), ssfi = flag2(this, "ssfi"), flagMsg = flag2(this, "message"), negate = flag2(this, "negate") || false; - new Assertion(obj, flagMsg, ssfi, true).is.a("function"); - if (isRegExp2(errorLike) || typeof errorLike === "string") { - errMsgMatcher = errorLike; - errorLike = null; - } - let caughtErr; - let errorWasThrown = false; - try { - obj(); - } catch (err) { - errorWasThrown = true; - caughtErr = err; - } - let everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0; - let everyArgIsDefined = Boolean(errorLike && errMsgMatcher); - let errorLikeFail = false; - let errMsgMatcherFail = false; - if (everyArgIsUndefined || !everyArgIsUndefined && !negate) { - let errorLikeString = "an error"; - if (errorLike instanceof Error) { - errorLikeString = "#{exp}"; - } else if (errorLike) { - errorLikeString = check_error_exports.getConstructorName(errorLike); - } - let actual = caughtErr; - if (caughtErr instanceof Error) { - actual = caughtErr.toString(); - } else if (typeof caughtErr === "string") { - actual = caughtErr; - } else if (caughtErr && (typeof caughtErr === "object" || typeof caughtErr === "function")) { - try { - actual = check_error_exports.getConstructorName(caughtErr); - } catch (_err) { - } - } - this.assert( - errorWasThrown, - "expected #{this} to throw " + errorLikeString, - "expected #{this} to not throw an error but #{act} was thrown", - errorLike && errorLike.toString(), - actual - ); - } - if (errorLike && caughtErr) { - if (errorLike instanceof Error) { - let isCompatibleInstance = check_error_exports.compatibleInstance( - caughtErr, - errorLike - ); - if (isCompatibleInstance === negate) { - if (everyArgIsDefined && negate) { - errorLikeFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr && !negate ? " but #{act} was thrown" : ""), - errorLike.toString(), - caughtErr.toString() - ); - } - } - } - let isCompatibleConstructor = check_error_exports.compatibleConstructor( - caughtErr, - errorLike - ); - if (isCompatibleConstructor === negate) { - if (everyArgIsDefined && negate) { - errorLikeFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), - errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike), - caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr) - ); - } - } - } - if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) { - let placeholder = "including"; - if (isRegExp2(errMsgMatcher)) { - placeholder = "matching"; - } - let isCompatibleMessage = check_error_exports.compatibleMessage( - caughtErr, - errMsgMatcher - ); - if (isCompatibleMessage === negate) { - if (everyArgIsDefined && negate) { - errMsgMatcherFail = true; - } else { - this.assert( - negate, - "expected #{this} to throw error " + placeholder + " #{exp} but got #{act}", - "expected #{this} to throw error not " + placeholder + " #{exp}", - errMsgMatcher, - check_error_exports.getMessage(caughtErr) - ); - } - } - } - if (errorLikeFail && errMsgMatcherFail) { - this.assert( - negate, - "expected #{this} to throw #{exp} but #{act} was thrown", - "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), - errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike), - caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr) - ); - } - flag2(this, "object", caughtErr); -} -__name(assertThrows, "assertThrows"); -Assertion.addMethod("throw", assertThrows); -Assertion.addMethod("throws", assertThrows); -Assertion.addMethod("Throw", assertThrows); -function respondTo(method, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), itself = flag2(this, "itself"), context = "function" === typeof obj && !itself ? obj.prototype[method] : obj[method]; - this.assert( - "function" === typeof context, - "expected #{this} to respond to " + inspect2(method), - "expected #{this} to not respond to " + inspect2(method) - ); -} -__name(respondTo, "respondTo"); -Assertion.addMethod("respondTo", respondTo); -Assertion.addMethod("respondsTo", respondTo); -Assertion.addProperty("itself", function() { - flag2(this, "itself", true); -}); -function satisfy(matcher, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"); - let result = matcher(obj); - this.assert( - result, - "expected #{this} to satisfy " + objDisplay(matcher), - "expected #{this} to not satisfy" + objDisplay(matcher), - flag2(this, "negate") ? false : true, - result - ); -} -__name(satisfy, "satisfy"); -Assertion.addMethod("satisfy", satisfy); -Assertion.addMethod("satisfies", satisfy); -function closeTo(expected, delta, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(obj, flagMsg, ssfi, true).is.numeric; - let message = "A `delta` value is required for `closeTo`"; - if (delta == void 0) { - throw new AssertionError( - flagMsg ? `${flagMsg}: ${message}` : message, - void 0, - ssfi - ); - } - new Assertion(delta, flagMsg, ssfi, true).is.numeric; - message = "A `expected` value is required for `closeTo`"; - if (expected == void 0) { - throw new AssertionError( - flagMsg ? `${flagMsg}: ${message}` : message, - void 0, - ssfi - ); - } - new Assertion(expected, flagMsg, ssfi, true).is.numeric; - const abs = __name((x) => x < 0 ? -x : x, "abs"); - const strip = __name((number) => parseFloat(parseFloat(number).toPrecision(12)), "strip"); - this.assert( - strip(abs(obj - expected)) <= delta, - "expected #{this} to be close to " + expected + " +/- " + delta, - "expected #{this} not to be close to " + expected + " +/- " + delta - ); -} -__name(closeTo, "closeTo"); -Assertion.addMethod("closeTo", closeTo); -Assertion.addMethod("approximately", closeTo); -function isSubsetOf(_subset, _superset, cmp, contains, ordered) { - let superset = Array.from(_superset); - let subset = Array.from(_subset); - if (!contains) { - if (subset.length !== superset.length) return false; - superset = superset.slice(); - } - return subset.every(function(elem, idx) { - if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx]; - if (!cmp) { - let matchIdx = superset.indexOf(elem); - if (matchIdx === -1) return false; - if (!contains) superset.splice(matchIdx, 1); - return true; - } - return superset.some(function(elem2, matchIdx) { - if (!cmp(elem, elem2)) return false; - if (!contains) superset.splice(matchIdx, 1); - return true; - }); - }); -} -__name(isSubsetOf, "isSubsetOf"); -Assertion.addMethod("members", function(subset, msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(obj, flagMsg, ssfi, true).to.be.iterable; - new Assertion(subset, flagMsg, ssfi, true).to.be.iterable; - let contains = flag2(this, "contains"); - let ordered = flag2(this, "ordered"); - let subject, failMsg, failNegateMsg; - if (contains) { - subject = ordered ? "an ordered superset" : "a superset"; - failMsg = "expected #{this} to be " + subject + " of #{exp}"; - failNegateMsg = "expected #{this} to not be " + subject + " of #{exp}"; - } else { - subject = ordered ? "ordered members" : "members"; - failMsg = "expected #{this} to have the same " + subject + " as #{exp}"; - failNegateMsg = "expected #{this} to not have the same " + subject + " as #{exp}"; - } - let cmp = flag2(this, "deep") ? flag2(this, "eql") : void 0; - this.assert( - isSubsetOf(subset, obj, cmp, contains, ordered), - failMsg, - failNegateMsg, - subset, - obj, - true - ); -}); -Assertion.addProperty("iterable", function(msg) { - if (msg) flag2(this, "message", msg); - let obj = flag2(this, "object"); - this.assert( - obj != void 0 && obj[Symbol.iterator], - "expected #{this} to be an iterable", - "expected #{this} to not be an iterable", - obj - ); -}); -function oneOf(list, msg) { - if (msg) flag2(this, "message", msg); - let expected = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"), contains = flag2(this, "contains"), isDeep = flag2(this, "deep"), eql = flag2(this, "eql"); - new Assertion(list, flagMsg, ssfi, true).to.be.an("array"); - if (contains) { - this.assert( - list.some(function(possibility) { - return expected.indexOf(possibility) > -1; - }), - "expected #{this} to contain one of #{exp}", - "expected #{this} to not contain one of #{exp}", - list, - expected - ); - } else { - if (isDeep) { - this.assert( - list.some(function(possibility) { - return eql(expected, possibility); - }), - "expected #{this} to deeply equal one of #{exp}", - "expected #{this} to deeply equal one of #{exp}", - list, - expected - ); - } else { - this.assert( - list.indexOf(expected) > -1, - "expected #{this} to be one of #{exp}", - "expected #{this} to not be one of #{exp}", - list, - expected - ); - } - } -} -__name(oneOf, "oneOf"); -Assertion.addMethod("oneOf", oneOf); -function assertChanges(subject, prop, msg) { - if (msg) flag2(this, "message", msg); - let fn = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(fn, flagMsg, ssfi, true).is.a("function"); - let initial; - if (!prop) { - new Assertion(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - fn(); - let final = prop === void 0 || prop === null ? subject() : subject[prop]; - let msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag2(this, "deltaMsgObj", msgObj); - flag2(this, "initialDeltaValue", initial); - flag2(this, "finalDeltaValue", final); - flag2(this, "deltaBehavior", "change"); - flag2(this, "realDelta", final !== initial); - this.assert( - initial !== final, - "expected " + msgObj + " to change", - "expected " + msgObj + " to not change" - ); -} -__name(assertChanges, "assertChanges"); -Assertion.addMethod("change", assertChanges); -Assertion.addMethod("changes", assertChanges); -function assertIncreases(subject, prop, msg) { - if (msg) flag2(this, "message", msg); - let fn = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(fn, flagMsg, ssfi, true).is.a("function"); - let initial; - if (!prop) { - new Assertion(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - new Assertion(initial, flagMsg, ssfi, true).is.a("number"); - fn(); - let final = prop === void 0 || prop === null ? subject() : subject[prop]; - let msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag2(this, "deltaMsgObj", msgObj); - flag2(this, "initialDeltaValue", initial); - flag2(this, "finalDeltaValue", final); - flag2(this, "deltaBehavior", "increase"); - flag2(this, "realDelta", final - initial); - this.assert( - final - initial > 0, - "expected " + msgObj + " to increase", - "expected " + msgObj + " to not increase" - ); -} -__name(assertIncreases, "assertIncreases"); -Assertion.addMethod("increase", assertIncreases); -Assertion.addMethod("increases", assertIncreases); -function assertDecreases(subject, prop, msg) { - if (msg) flag2(this, "message", msg); - let fn = flag2(this, "object"), flagMsg = flag2(this, "message"), ssfi = flag2(this, "ssfi"); - new Assertion(fn, flagMsg, ssfi, true).is.a("function"); - let initial; - if (!prop) { - new Assertion(subject, flagMsg, ssfi, true).is.a("function"); - initial = subject(); - } else { - new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop); - initial = subject[prop]; - } - new Assertion(initial, flagMsg, ssfi, true).is.a("number"); - fn(); - let final = prop === void 0 || prop === null ? subject() : subject[prop]; - let msgObj = prop === void 0 || prop === null ? initial : "." + prop; - flag2(this, "deltaMsgObj", msgObj); - flag2(this, "initialDeltaValue", initial); - flag2(this, "finalDeltaValue", final); - flag2(this, "deltaBehavior", "decrease"); - flag2(this, "realDelta", initial - final); - this.assert( - final - initial < 0, - "expected " + msgObj + " to decrease", - "expected " + msgObj + " to not decrease" - ); -} -__name(assertDecreases, "assertDecreases"); -Assertion.addMethod("decrease", assertDecreases); -Assertion.addMethod("decreases", assertDecreases); -function assertDelta(delta, msg) { - if (msg) flag2(this, "message", msg); - let msgObj = flag2(this, "deltaMsgObj"); - let initial = flag2(this, "initialDeltaValue"); - let final = flag2(this, "finalDeltaValue"); - let behavior = flag2(this, "deltaBehavior"); - let realDelta = flag2(this, "realDelta"); - let expression; - if (behavior === "change") { - expression = Math.abs(final - initial) === Math.abs(delta); - } else { - expression = realDelta === Math.abs(delta); - } - this.assert( - expression, - "expected " + msgObj + " to " + behavior + " by " + delta, - "expected " + msgObj + " to not " + behavior + " by " + delta - ); -} -__name(assertDelta, "assertDelta"); -Assertion.addMethod("by", assertDelta); -Assertion.addProperty("extensible", function() { - let obj = flag2(this, "object"); - let isExtensible = obj === Object(obj) && Object.isExtensible(obj); - this.assert( - isExtensible, - "expected #{this} to be extensible", - "expected #{this} to not be extensible" - ); -}); -Assertion.addProperty("sealed", function() { - let obj = flag2(this, "object"); - let isSealed = obj === Object(obj) ? Object.isSealed(obj) : true; - this.assert( - isSealed, - "expected #{this} to be sealed", - "expected #{this} to not be sealed" - ); -}); -Assertion.addProperty("frozen", function() { - let obj = flag2(this, "object"); - let isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true; - this.assert( - isFrozen, - "expected #{this} to be frozen", - "expected #{this} to not be frozen" - ); -}); -Assertion.addProperty("finite", function(_msg) { - let obj = flag2(this, "object"); - this.assert( - typeof obj === "number" && isFinite(obj), - "expected #{this} to be a finite number", - "expected #{this} to not be a finite number" - ); -}); -function compareSubset(expected, actual) { - if (expected === actual) { - return true; - } - if (typeof actual !== typeof expected) { - return false; - } - if (typeof expected !== "object" || expected === null) { - return expected === actual; - } - if (!actual) { - return false; - } - if (Array.isArray(expected)) { - if (!Array.isArray(actual)) { - return false; - } - return expected.every(function(exp) { - return actual.some(function(act) { - return compareSubset(exp, act); - }); - }); - } - if (expected instanceof Date) { - if (actual instanceof Date) { - return expected.getTime() === actual.getTime(); - } else { - return false; - } - } - return Object.keys(expected).every(function(key) { - let expectedValue = expected[key]; - let actualValue = actual[key]; - if (typeof expectedValue === "object" && expectedValue !== null && actualValue !== null) { - return compareSubset(expectedValue, actualValue); - } - if (typeof expectedValue === "function") { - return expectedValue(actualValue); - } - return actualValue === expectedValue; - }); -} -__name(compareSubset, "compareSubset"); -Assertion.addMethod("containSubset", function(expected) { - const actual = flag(this, "object"); - const showDiff = config.showDiff; - this.assert( - compareSubset(expected, actual), - "expected #{act} to contain subset #{exp}", - "expected #{act} to not contain subset #{exp}", - expected, - actual, - showDiff - ); -}); -function expect(val, message) { - return new Assertion(val, message); -} -__name(expect, "expect"); -expect.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "expect.fail()"; - throw new AssertionError( - message, - { - actual, - expected, - operator - }, - expect.fail - ); -}; -var should_exports = {}; -__export(should_exports, { - Should: () => Should, - should: () => should -}); -function loadShould() { - function shouldGetter() { - if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === "function" && this instanceof Symbol || typeof BigInt === "function" && this instanceof BigInt) { - return new Assertion(this.valueOf(), null, shouldGetter); - } - return new Assertion(this, null, shouldGetter); - } - __name(shouldGetter, "shouldGetter"); - function shouldSetter(value) { - Object.defineProperty(this, "should", { - value, - enumerable: true, - configurable: true, - writable: true - }); - } - __name(shouldSetter, "shouldSetter"); - Object.defineProperty(Object.prototype, "should", { - set: shouldSetter, - get: shouldGetter, - configurable: true - }); - let should2 = {}; - should2.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "should.fail()"; - throw new AssertionError( - message, - { - actual, - expected, - operator - }, - should2.fail - ); - }; - should2.equal = function(actual, expected, message) { - new Assertion(actual, message).to.equal(expected); - }; - should2.Throw = function(fn, errt, errs, msg) { - new Assertion(fn, msg).to.Throw(errt, errs); - }; - should2.exist = function(val, msg) { - new Assertion(val, msg).to.exist; - }; - should2.not = {}; - should2.not.equal = function(actual, expected, msg) { - new Assertion(actual, msg).to.not.equal(expected); - }; - should2.not.Throw = function(fn, errt, errs, msg) { - new Assertion(fn, msg).to.not.Throw(errt, errs); - }; - should2.not.exist = function(val, msg) { - new Assertion(val, msg).to.not.exist; - }; - should2["throw"] = should2["Throw"]; - should2.not["throw"] = should2.not["Throw"]; - return should2; -} -__name(loadShould, "loadShould"); -var should = loadShould; -var Should = loadShould; -function assert(express, errmsg) { - let test2 = new Assertion(null, null, assert, true); - test2.assert(express, errmsg, "[ negation message unavailable ]"); -} -__name(assert, "assert"); -assert.fail = function(actual, expected, message, operator) { - if (arguments.length < 2) { - message = actual; - actual = void 0; - } - message = message || "assert.fail()"; - throw new AssertionError( - message, - { - actual, - expected, - operator - }, - assert.fail - ); -}; -assert.isOk = function(val, msg) { - new Assertion(val, msg, assert.isOk, true).is.ok; -}; -assert.isNotOk = function(val, msg) { - new Assertion(val, msg, assert.isNotOk, true).is.not.ok; -}; -assert.equal = function(act, exp, msg) { - let test2 = new Assertion(act, msg, assert.equal, true); - test2.assert( - exp == flag(test2, "object"), - "expected #{this} to equal #{exp}", - "expected #{this} to not equal #{act}", - exp, - act, - true - ); -}; -assert.notEqual = function(act, exp, msg) { - let test2 = new Assertion(act, msg, assert.notEqual, true); - test2.assert( - exp != flag(test2, "object"), - "expected #{this} to not equal #{exp}", - "expected #{this} to equal #{act}", - exp, - act, - true - ); -}; -assert.strictEqual = function(act, exp, msg) { - new Assertion(act, msg, assert.strictEqual, true).to.equal(exp); -}; -assert.notStrictEqual = function(act, exp, msg) { - new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp); -}; -assert.deepEqual = assert.deepStrictEqual = function(act, exp, msg) { - new Assertion(act, msg, assert.deepEqual, true).to.eql(exp); -}; -assert.notDeepEqual = function(act, exp, msg) { - new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp); -}; -assert.isAbove = function(val, abv, msg) { - new Assertion(val, msg, assert.isAbove, true).to.be.above(abv); -}; -assert.isAtLeast = function(val, atlst, msg) { - new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst); -}; -assert.isBelow = function(val, blw, msg) { - new Assertion(val, msg, assert.isBelow, true).to.be.below(blw); -}; -assert.isAtMost = function(val, atmst, msg) { - new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst); -}; -assert.isTrue = function(val, msg) { - new Assertion(val, msg, assert.isTrue, true).is["true"]; -}; -assert.isNotTrue = function(val, msg) { - new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true); -}; -assert.isFalse = function(val, msg) { - new Assertion(val, msg, assert.isFalse, true).is["false"]; -}; -assert.isNotFalse = function(val, msg) { - new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false); -}; -assert.isNull = function(val, msg) { - new Assertion(val, msg, assert.isNull, true).to.equal(null); -}; -assert.isNotNull = function(val, msg) { - new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null); -}; -assert.isNaN = function(val, msg) { - new Assertion(val, msg, assert.isNaN, true).to.be.NaN; -}; -assert.isNotNaN = function(value, message) { - new Assertion(value, message, assert.isNotNaN, true).not.to.be.NaN; -}; -assert.exists = function(val, msg) { - new Assertion(val, msg, assert.exists, true).to.exist; -}; -assert.notExists = function(val, msg) { - new Assertion(val, msg, assert.notExists, true).to.not.exist; -}; -assert.isUndefined = function(val, msg) { - new Assertion(val, msg, assert.isUndefined, true).to.equal(void 0); -}; -assert.isDefined = function(val, msg) { - new Assertion(val, msg, assert.isDefined, true).to.not.equal(void 0); -}; -assert.isCallable = function(value, message) { - new Assertion(value, message, assert.isCallable, true).is.callable; -}; -assert.isNotCallable = function(value, message) { - new Assertion(value, message, assert.isNotCallable, true).is.not.callable; -}; -assert.isObject = function(val, msg) { - new Assertion(val, msg, assert.isObject, true).to.be.a("object"); -}; -assert.isNotObject = function(val, msg) { - new Assertion(val, msg, assert.isNotObject, true).to.not.be.a("object"); -}; -assert.isArray = function(val, msg) { - new Assertion(val, msg, assert.isArray, true).to.be.an("array"); -}; -assert.isNotArray = function(val, msg) { - new Assertion(val, msg, assert.isNotArray, true).to.not.be.an("array"); -}; -assert.isString = function(val, msg) { - new Assertion(val, msg, assert.isString, true).to.be.a("string"); -}; -assert.isNotString = function(val, msg) { - new Assertion(val, msg, assert.isNotString, true).to.not.be.a("string"); -}; -assert.isNumber = function(val, msg) { - new Assertion(val, msg, assert.isNumber, true).to.be.a("number"); -}; -assert.isNotNumber = function(val, msg) { - new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a("number"); -}; -assert.isNumeric = function(val, msg) { - new Assertion(val, msg, assert.isNumeric, true).is.numeric; -}; -assert.isNotNumeric = function(val, msg) { - new Assertion(val, msg, assert.isNotNumeric, true).is.not.numeric; -}; -assert.isFinite = function(val, msg) { - new Assertion(val, msg, assert.isFinite, true).to.be.finite; -}; -assert.isBoolean = function(val, msg) { - new Assertion(val, msg, assert.isBoolean, true).to.be.a("boolean"); -}; -assert.isNotBoolean = function(val, msg) { - new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a("boolean"); -}; -assert.typeOf = function(val, type3, msg) { - new Assertion(val, msg, assert.typeOf, true).to.be.a(type3); -}; -assert.notTypeOf = function(value, type3, message) { - new Assertion(value, message, assert.notTypeOf, true).to.not.be.a(type3); -}; -assert.instanceOf = function(val, type3, msg) { - new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type3); -}; -assert.notInstanceOf = function(val, type3, msg) { - new Assertion(val, msg, assert.notInstanceOf, true).to.not.be.instanceOf( - type3 - ); -}; -assert.include = function(exp, inc, msg) { - new Assertion(exp, msg, assert.include, true).include(inc); -}; -assert.notInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.notInclude, true).not.include(inc); -}; -assert.deepInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc); -}; -assert.notDeepInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc); -}; -assert.nestedInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc); -}; -assert.notNestedInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.notNestedInclude, true).not.nested.include( - inc - ); -}; -assert.deepNestedInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.deepNestedInclude, true).deep.nested.include( - inc - ); -}; -assert.notDeepNestedInclude = function(exp, inc, msg) { - new Assertion( - exp, - msg, - assert.notDeepNestedInclude, - true - ).not.deep.nested.include(inc); -}; -assert.ownInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.ownInclude, true).own.include(inc); -}; -assert.notOwnInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc); -}; -assert.deepOwnInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.deepOwnInclude, true).deep.own.include(inc); -}; -assert.notDeepOwnInclude = function(exp, inc, msg) { - new Assertion(exp, msg, assert.notDeepOwnInclude, true).not.deep.own.include( - inc - ); -}; -assert.match = function(exp, re, msg) { - new Assertion(exp, msg, assert.match, true).to.match(re); -}; -assert.notMatch = function(exp, re, msg) { - new Assertion(exp, msg, assert.notMatch, true).to.not.match(re); -}; -assert.property = function(obj, prop, msg) { - new Assertion(obj, msg, assert.property, true).to.have.property(prop); -}; -assert.notProperty = function(obj, prop, msg) { - new Assertion(obj, msg, assert.notProperty, true).to.not.have.property(prop); -}; -assert.propertyVal = function(obj, prop, val, msg) { - new Assertion(obj, msg, assert.propertyVal, true).to.have.property(prop, val); -}; -assert.notPropertyVal = function(obj, prop, val, msg) { - new Assertion(obj, msg, assert.notPropertyVal, true).to.not.have.property( - prop, - val - ); -}; -assert.deepPropertyVal = function(obj, prop, val, msg) { - new Assertion(obj, msg, assert.deepPropertyVal, true).to.have.deep.property( - prop, - val - ); -}; -assert.notDeepPropertyVal = function(obj, prop, val, msg) { - new Assertion( - obj, - msg, - assert.notDeepPropertyVal, - true - ).to.not.have.deep.property(prop, val); -}; -assert.ownProperty = function(obj, prop, msg) { - new Assertion(obj, msg, assert.ownProperty, true).to.have.own.property(prop); -}; -assert.notOwnProperty = function(obj, prop, msg) { - new Assertion(obj, msg, assert.notOwnProperty, true).to.not.have.own.property( - prop - ); -}; -assert.ownPropertyVal = function(obj, prop, value, msg) { - new Assertion(obj, msg, assert.ownPropertyVal, true).to.have.own.property( - prop, - value - ); -}; -assert.notOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion( - obj, - msg, - assert.notOwnPropertyVal, - true - ).to.not.have.own.property(prop, value); -}; -assert.deepOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion( - obj, - msg, - assert.deepOwnPropertyVal, - true - ).to.have.deep.own.property(prop, value); -}; -assert.notDeepOwnPropertyVal = function(obj, prop, value, msg) { - new Assertion( - obj, - msg, - assert.notDeepOwnPropertyVal, - true - ).to.not.have.deep.own.property(prop, value); -}; -assert.nestedProperty = function(obj, prop, msg) { - new Assertion(obj, msg, assert.nestedProperty, true).to.have.nested.property( - prop - ); -}; -assert.notNestedProperty = function(obj, prop, msg) { - new Assertion( - obj, - msg, - assert.notNestedProperty, - true - ).to.not.have.nested.property(prop); -}; -assert.nestedPropertyVal = function(obj, prop, val, msg) { - new Assertion( - obj, - msg, - assert.nestedPropertyVal, - true - ).to.have.nested.property(prop, val); -}; -assert.notNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion( - obj, - msg, - assert.notNestedPropertyVal, - true - ).to.not.have.nested.property(prop, val); -}; -assert.deepNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion( - obj, - msg, - assert.deepNestedPropertyVal, - true - ).to.have.deep.nested.property(prop, val); -}; -assert.notDeepNestedPropertyVal = function(obj, prop, val, msg) { - new Assertion( - obj, - msg, - assert.notDeepNestedPropertyVal, - true - ).to.not.have.deep.nested.property(prop, val); -}; -assert.lengthOf = function(exp, len, msg) { - new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len); -}; -assert.hasAnyKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys); -}; -assert.hasAllKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys); -}; -assert.containsAllKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.containsAllKeys, true).to.contain.all.keys( - keys - ); -}; -assert.doesNotHaveAnyKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true).to.not.have.any.keys( - keys - ); -}; -assert.doesNotHaveAllKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.doesNotHaveAllKeys, true).to.not.have.all.keys( - keys - ); -}; -assert.hasAnyDeepKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.hasAnyDeepKeys, true).to.have.any.deep.keys( - keys - ); -}; -assert.hasAllDeepKeys = function(obj, keys, msg) { - new Assertion(obj, msg, assert.hasAllDeepKeys, true).to.have.all.deep.keys( - keys - ); -}; -assert.containsAllDeepKeys = function(obj, keys, msg) { - new Assertion( - obj, - msg, - assert.containsAllDeepKeys, - true - ).to.contain.all.deep.keys(keys); -}; -assert.doesNotHaveAnyDeepKeys = function(obj, keys, msg) { - new Assertion( - obj, - msg, - assert.doesNotHaveAnyDeepKeys, - true - ).to.not.have.any.deep.keys(keys); -}; -assert.doesNotHaveAllDeepKeys = function(obj, keys, msg) { - new Assertion( - obj, - msg, - assert.doesNotHaveAllDeepKeys, - true - ).to.not.have.all.deep.keys(keys); -}; -assert.throws = function(fn, errorLike, errMsgMatcher, msg) { - if ("string" === typeof errorLike || errorLike instanceof RegExp) { - errMsgMatcher = errorLike; - errorLike = null; - } - let assertErr = new Assertion(fn, msg, assert.throws, true).to.throw( - errorLike, - errMsgMatcher - ); - return flag(assertErr, "object"); -}; -assert.doesNotThrow = function(fn, errorLike, errMsgMatcher, message) { - if ("string" === typeof errorLike || errorLike instanceof RegExp) { - errMsgMatcher = errorLike; - errorLike = null; - } - new Assertion(fn, message, assert.doesNotThrow, true).to.not.throw( - errorLike, - errMsgMatcher - ); -}; -assert.operator = function(val, operator, val2, msg) { - let ok; - switch (operator) { - case "==": - ok = val == val2; - break; - case "===": - ok = val === val2; - break; - case ">": - ok = val > val2; - break; - case ">=": - ok = val >= val2; - break; - case "<": - ok = val < val2; - break; - case "<=": - ok = val <= val2; - break; - case "!=": - ok = val != val2; - break; - case "!==": - ok = val !== val2; - break; - default: - msg = msg ? msg + ": " : msg; - throw new AssertionError( - msg + 'Invalid operator "' + operator + '"', - void 0, - assert.operator - ); - } - let test2 = new Assertion(ok, msg, assert.operator, true); - test2.assert( - true === flag(test2, "object"), - "expected " + inspect2(val) + " to be " + operator + " " + inspect2(val2), - "expected " + inspect2(val) + " to not be " + operator + " " + inspect2(val2) - ); -}; -assert.closeTo = function(act, exp, delta, msg) { - new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta); -}; -assert.approximately = function(act, exp, delta, msg) { - new Assertion(act, msg, assert.approximately, true).to.be.approximately( - exp, - delta - ); -}; -assert.sameMembers = function(set1, set2, msg) { - new Assertion(set1, msg, assert.sameMembers, true).to.have.same.members(set2); -}; -assert.notSameMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.notSameMembers, - true - ).to.not.have.same.members(set2); -}; -assert.sameDeepMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.sameDeepMembers, - true - ).to.have.same.deep.members(set2); -}; -assert.notSameDeepMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.notSameDeepMembers, - true - ).to.not.have.same.deep.members(set2); -}; -assert.sameOrderedMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.sameOrderedMembers, - true - ).to.have.same.ordered.members(set2); -}; -assert.notSameOrderedMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.notSameOrderedMembers, - true - ).to.not.have.same.ordered.members(set2); -}; -assert.sameDeepOrderedMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.sameDeepOrderedMembers, - true - ).to.have.same.deep.ordered.members(set2); -}; -assert.notSameDeepOrderedMembers = function(set1, set2, msg) { - new Assertion( - set1, - msg, - assert.notSameDeepOrderedMembers, - true - ).to.not.have.same.deep.ordered.members(set2); -}; -assert.includeMembers = function(superset, subset, msg) { - new Assertion(superset, msg, assert.includeMembers, true).to.include.members( - subset - ); -}; -assert.notIncludeMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.notIncludeMembers, - true - ).to.not.include.members(subset); -}; -assert.includeDeepMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.includeDeepMembers, - true - ).to.include.deep.members(subset); -}; -assert.notIncludeDeepMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.notIncludeDeepMembers, - true - ).to.not.include.deep.members(subset); -}; -assert.includeOrderedMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.includeOrderedMembers, - true - ).to.include.ordered.members(subset); -}; -assert.notIncludeOrderedMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.notIncludeOrderedMembers, - true - ).to.not.include.ordered.members(subset); -}; -assert.includeDeepOrderedMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.includeDeepOrderedMembers, - true - ).to.include.deep.ordered.members(subset); -}; -assert.notIncludeDeepOrderedMembers = function(superset, subset, msg) { - new Assertion( - superset, - msg, - assert.notIncludeDeepOrderedMembers, - true - ).to.not.include.deep.ordered.members(subset); -}; -assert.oneOf = function(inList, list, msg) { - new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list); -}; -assert.isIterable = function(obj, msg) { - if (obj == void 0 || !obj[Symbol.iterator]) { - msg = msg ? `${msg} expected ${inspect2(obj)} to be an iterable` : `expected ${inspect2(obj)} to be an iterable`; - throw new AssertionError(msg, void 0, assert.isIterable); - } -}; -assert.changes = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - new Assertion(fn, msg, assert.changes, true).to.change(obj, prop); -}; -assert.changesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.changesBy, true).to.change(obj, prop).by(delta); -}; -assert.doesNotChange = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion(fn, msg, assert.doesNotChange, true).to.not.change( - obj, - prop - ); -}; -assert.changesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.changesButNotBy, true).to.change(obj, prop).but.not.by(delta); -}; -assert.increases = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion(fn, msg, assert.increases, true).to.increase(obj, prop); -}; -assert.increasesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.increasesBy, true).to.increase(obj, prop).by(delta); -}; -assert.doesNotIncrease = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion(fn, msg, assert.doesNotIncrease, true).to.not.increase( - obj, - prop - ); -}; -assert.increasesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta); -}; -assert.decreases = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion(fn, msg, assert.decreases, true).to.decrease(obj, prop); -}; -assert.decreasesBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.decreasesBy, true).to.decrease(obj, prop).by(delta); -}; -assert.doesNotDecrease = function(fn, obj, prop, msg) { - if (arguments.length === 3 && typeof obj === "function") { - msg = prop; - prop = null; - } - return new Assertion(fn, msg, assert.doesNotDecrease, true).to.not.decrease( - obj, - prop - ); -}; -assert.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - return new Assertion(fn, msg, assert.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta); -}; -assert.decreasesButNotBy = function(fn, obj, prop, delta, msg) { - if (arguments.length === 4 && typeof obj === "function") { - let tmpMsg = delta; - delta = prop; - msg = tmpMsg; - } else if (arguments.length === 3) { - delta = prop; - prop = null; - } - new Assertion(fn, msg, assert.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta); -}; -assert.ifError = function(val) { - if (val) { - throw val; - } -}; -assert.isExtensible = function(obj, msg) { - new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible; -}; -assert.isNotExtensible = function(obj, msg) { - new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible; -}; -assert.isSealed = function(obj, msg) { - new Assertion(obj, msg, assert.isSealed, true).to.be.sealed; -}; -assert.isNotSealed = function(obj, msg) { - new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed; -}; -assert.isFrozen = function(obj, msg) { - new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen; -}; -assert.isNotFrozen = function(obj, msg) { - new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen; -}; -assert.isEmpty = function(val, msg) { - new Assertion(val, msg, assert.isEmpty, true).to.be.empty; -}; -assert.isNotEmpty = function(val, msg) { - new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty; -}; -assert.containsSubset = function(val, exp, msg) { - new Assertion(val, msg).to.containSubset(exp); -}; -assert.doesNotContainSubset = function(val, exp, msg) { - new Assertion(val, msg).to.not.containSubset(exp); -}; -var aliases = [ - ["isOk", "ok"], - ["isNotOk", "notOk"], - ["throws", "throw"], - ["throws", "Throw"], - ["isExtensible", "extensible"], - ["isNotExtensible", "notExtensible"], - ["isSealed", "sealed"], - ["isNotSealed", "notSealed"], - ["isFrozen", "frozen"], - ["isNotFrozen", "notFrozen"], - ["isEmpty", "empty"], - ["isNotEmpty", "notEmpty"], - ["isCallable", "isFunction"], - ["isNotCallable", "isNotFunction"], - ["containsSubset", "containSubset"] -]; -for (const [name, as] of aliases) { - assert[as] = assert[name]; -} -var used = []; -function use(fn) { - const exports = { - use, - AssertionError, - util: utils_exports, - config, - expect, - assert, - Assertion, - ...should_exports - }; - if (!~used.indexOf(fn)) { - fn(exports, utils_exports); - used.push(fn); - } - return exports; -} -__name(use, "use"); -export { - Assertion, - AssertionError, - Should, - assert, - config, - expect, - should, - use, - utils_exports as util -}; -//# sourceMappingURL=vitest___@vitest_expect___chai.js.map diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js.map deleted file mode 100644 index 6978fc8..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_expect___chai.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../.pnpm/chai@6.2.2/node_modules/chai/index.js"], - "sourcesContent": ["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// lib/chai/utils/index.js\nvar utils_exports = {};\n__export(utils_exports, {\n addChainableMethod: () => addChainableMethod,\n addLengthGuard: () => addLengthGuard,\n addMethod: () => addMethod,\n addProperty: () => addProperty,\n checkError: () => check_error_exports,\n compareByInspect: () => compareByInspect,\n eql: () => deep_eql_default,\n events: () => events,\n expectTypes: () => expectTypes,\n flag: () => flag,\n getActual: () => getActual,\n getMessage: () => getMessage2,\n getName: () => getName,\n getOperator: () => getOperator,\n getOwnEnumerableProperties: () => getOwnEnumerableProperties,\n getOwnEnumerablePropertySymbols: () => getOwnEnumerablePropertySymbols,\n getPathInfo: () => getPathInfo,\n hasProperty: () => hasProperty,\n inspect: () => inspect2,\n isNaN: () => isNaN2,\n isNumeric: () => isNumeric,\n isProxyEnabled: () => isProxyEnabled,\n isRegExp: () => isRegExp2,\n objDisplay: () => objDisplay,\n overwriteChainableMethod: () => overwriteChainableMethod,\n overwriteMethod: () => overwriteMethod,\n overwriteProperty: () => overwriteProperty,\n proxify: () => proxify,\n test: () => test,\n transferFlags: () => transferFlags,\n type: () => type\n});\n\n// node_modules/check-error/index.js\nvar check_error_exports = {};\n__export(check_error_exports, {\n compatibleConstructor: () => compatibleConstructor,\n compatibleInstance: () => compatibleInstance,\n compatibleMessage: () => compatibleMessage,\n getConstructorName: () => getConstructorName,\n getMessage: () => getMessage\n});\nfunction isErrorInstance(obj) {\n return obj instanceof Error || Object.prototype.toString.call(obj) === \"[object Error]\";\n}\n__name(isErrorInstance, \"isErrorInstance\");\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp, \"isRegExp\");\nfunction compatibleInstance(thrown, errorLike) {\n return isErrorInstance(errorLike) && thrown === errorLike;\n}\n__name(compatibleInstance, \"compatibleInstance\");\nfunction compatibleConstructor(thrown, errorLike) {\n if (isErrorInstance(errorLike)) {\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if ((typeof errorLike === \"object\" || typeof errorLike === \"function\") && errorLike.prototype) {\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n return false;\n}\n__name(compatibleConstructor, \"compatibleConstructor\");\nfunction compatibleMessage(thrown, errMatcher) {\n const comparisonString = typeof thrown === \"string\" ? thrown : thrown.message;\n if (isRegExp(errMatcher)) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === \"string\") {\n return comparisonString.indexOf(errMatcher) !== -1;\n }\n return false;\n}\n__name(compatibleMessage, \"compatibleMessage\");\nfunction getConstructorName(errorLike) {\n let constructorName = errorLike;\n if (isErrorInstance(errorLike)) {\n constructorName = errorLike.constructor.name;\n } else if (typeof errorLike === \"function\") {\n constructorName = errorLike.name;\n if (constructorName === \"\") {\n const newConstructorName = new errorLike().name;\n constructorName = newConstructorName || constructorName;\n }\n }\n return constructorName;\n}\n__name(getConstructorName, \"getConstructorName\");\nfunction getMessage(errorLike) {\n let msg = \"\";\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === \"string\") {\n msg = errorLike;\n }\n return msg;\n}\n__name(getMessage, \"getMessage\");\n\n// lib/chai/utils/flag.js\nfunction flag(obj, key, value) {\n let flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n}\n__name(flag, \"flag\");\n\n// lib/chai/utils/test.js\nfunction test(obj, args) {\n let negate = flag(obj, \"negate\"), expr = args[0];\n return negate ? !expr : expr;\n}\n__name(test, \"test\");\n\n// lib/chai/utils/type-detect.js\nfunction type(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const type3 = Object.prototype.toString.call(obj).slice(8, -1);\n return type3;\n}\n__name(type, \"type\");\n\n// node_modules/assertion-error/index.js\nvar canElideFrames = \"captureStackTrace\" in Error;\nvar _AssertionError = class _AssertionError extends Error {\n constructor(message = \"Unspecified AssertionError\", props, ssf) {\n super(message);\n __publicField(this, \"message\");\n this.message = message;\n if (canElideFrames) {\n Error.captureStackTrace(this, ssf || _AssertionError);\n }\n for (const key in props) {\n if (!(key in this)) {\n this[key] = props[key];\n }\n }\n }\n get name() {\n return \"AssertionError\";\n }\n get ok() {\n return false;\n }\n toJSON(stack) {\n return {\n ...this,\n name: this.name,\n message: this.message,\n ok: false,\n stack: stack !== false ? this.stack : void 0\n };\n }\n};\n__name(_AssertionError, \"AssertionError\");\nvar AssertionError = _AssertionError;\n\n// lib/chai/utils/expectTypes.js\nfunction expectTypes(obj, types) {\n let flagMsg = flag(obj, \"message\");\n let ssfi = flag(obj, \"ssfi\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n obj = flag(obj, \"object\");\n types = types.map(function(t) {\n return t.toLowerCase();\n });\n types.sort();\n let str = types.map(function(t, index) {\n let art = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(t.charAt(0)) ? \"an\" : \"a\";\n let or = types.length > 1 && index === types.length - 1 ? \"or \" : \"\";\n return or + art + \" \" + t;\n }).join(\", \");\n let objType = type(obj).toLowerCase();\n if (!types.some(function(expected) {\n return objType === expected;\n })) {\n throw new AssertionError(\n flagMsg + \"object tested must be \" + str + \", but \" + objType + \" given\",\n void 0,\n ssfi\n );\n }\n}\n__name(expectTypes, \"expectTypes\");\n\n// lib/chai/utils/getActual.js\nfunction getActual(obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n}\n__name(getActual, \"getActual\");\n\n// node_modules/loupe/lib/helpers.js\nvar ansiColors = {\n bold: [\"1\", \"22\"],\n dim: [\"2\", \"22\"],\n italic: [\"3\", \"23\"],\n underline: [\"4\", \"24\"],\n // 5 & 6 are blinking\n inverse: [\"7\", \"27\"],\n hidden: [\"8\", \"28\"],\n strike: [\"9\", \"29\"],\n // 10-20 are fonts\n // 21-29 are resets for 1-9\n black: [\"30\", \"39\"],\n red: [\"31\", \"39\"],\n green: [\"32\", \"39\"],\n yellow: [\"33\", \"39\"],\n blue: [\"34\", \"39\"],\n magenta: [\"35\", \"39\"],\n cyan: [\"36\", \"39\"],\n white: [\"37\", \"39\"],\n brightblack: [\"30;1\", \"39\"],\n brightred: [\"31;1\", \"39\"],\n brightgreen: [\"32;1\", \"39\"],\n brightyellow: [\"33;1\", \"39\"],\n brightblue: [\"34;1\", \"39\"],\n brightmagenta: [\"35;1\", \"39\"],\n brightcyan: [\"36;1\", \"39\"],\n brightwhite: [\"37;1\", \"39\"],\n grey: [\"90\", \"39\"]\n};\nvar styles = {\n special: \"cyan\",\n number: \"yellow\",\n bigint: \"yellow\",\n boolean: \"yellow\",\n undefined: \"grey\",\n null: \"bold\",\n string: \"green\",\n symbol: \"green\",\n date: \"magenta\",\n regexp: \"red\"\n};\nvar truncator = \"\\u2026\";\nfunction colorise(value, styleType) {\n const color = ansiColors[styles[styleType]] || ansiColors[styleType] || \"\";\n if (!color) {\n return String(value);\n }\n return `\\x1B[${color[0]}m${String(value)}\\x1B[${color[1]}m`;\n}\n__name(colorise, \"colorise\");\nfunction normaliseOptions({\n showHidden = false,\n depth = 2,\n colors = false,\n customInspect = true,\n showProxy = false,\n maxArrayLength = Infinity,\n breakLength = Infinity,\n seen = [],\n // eslint-disable-next-line no-shadow\n truncate: truncate2 = Infinity,\n stylize = String\n} = {}, inspect3) {\n const options = {\n showHidden: Boolean(showHidden),\n depth: Number(depth),\n colors: Boolean(colors),\n customInspect: Boolean(customInspect),\n showProxy: Boolean(showProxy),\n maxArrayLength: Number(maxArrayLength),\n breakLength: Number(breakLength),\n truncate: Number(truncate2),\n seen,\n inspect: inspect3,\n stylize\n };\n if (options.colors) {\n options.stylize = colorise;\n }\n return options;\n}\n__name(normaliseOptions, \"normaliseOptions\");\nfunction isHighSurrogate(char) {\n return char >= \"\\uD800\" && char <= \"\\uDBFF\";\n}\n__name(isHighSurrogate, \"isHighSurrogate\");\nfunction truncate(string, length, tail = truncator) {\n string = String(string);\n const tailLength = tail.length;\n const stringLength = string.length;\n if (tailLength > length && stringLength > tailLength) {\n return tail;\n }\n if (stringLength > length && stringLength > tailLength) {\n let end = length - tailLength;\n if (end > 0 && isHighSurrogate(string[end - 1])) {\n end = end - 1;\n }\n return `${string.slice(0, end)}${tail}`;\n }\n return string;\n}\n__name(truncate, \"truncate\");\nfunction inspectList(list, options, inspectItem, separator = \", \") {\n inspectItem = inspectItem || options.inspect;\n const size = list.length;\n if (size === 0)\n return \"\";\n const originalLength = options.truncate;\n let output = \"\";\n let peek = \"\";\n let truncated = \"\";\n for (let i = 0; i < size; i += 1) {\n const last = i + 1 === list.length;\n const secondToLast = i + 2 === list.length;\n truncated = `${truncator}(${list.length - i})`;\n const value = list[i];\n options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n const string = peek || inspectItem(value, options) + (last ? \"\" : separator);\n const nextLength = output.length + string.length;\n const truncatedLength = nextLength + truncated.length;\n if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n break;\n }\n if (!last && !secondToLast && truncatedLength > originalLength) {\n break;\n }\n peek = last ? \"\" : inspectItem(list[i + 1], options) + (secondToLast ? \"\" : separator);\n if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) {\n break;\n }\n output += string;\n if (!last && !secondToLast && nextLength + peek.length >= originalLength) {\n truncated = `${truncator}(${list.length - i - 1})`;\n break;\n }\n truncated = \"\";\n }\n return `${output}${truncated}`;\n}\n__name(inspectList, \"inspectList\");\nfunction quoteComplexKey(key) {\n if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n return key;\n }\n return JSON.stringify(key).replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n}\n__name(quoteComplexKey, \"quoteComplexKey\");\nfunction inspectProperty([key, value], options) {\n options.truncate -= 2;\n if (typeof key === \"string\") {\n key = quoteComplexKey(key);\n } else if (typeof key !== \"number\") {\n key = `[${options.inspect(key, options)}]`;\n }\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key}: ${value}`;\n}\n__name(inspectProperty, \"inspectProperty\");\n\n// node_modules/loupe/lib/array.js\nfunction inspectArray(array, options) {\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return \"[]\";\n options.truncate -= 4;\n const listContents = inspectList(array, options);\n options.truncate -= listContents.length;\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectArray, \"inspectArray\");\n\n// node_modules/loupe/lib/typedarray.js\nvar getArrayName = /* @__PURE__ */ __name((array) => {\n if (typeof Buffer === \"function\" && array instanceof Buffer) {\n return \"Buffer\";\n }\n if (array[Symbol.toStringTag]) {\n return array[Symbol.toStringTag];\n }\n return array.constructor.name;\n}, \"getArrayName\");\nfunction inspectTypedArray(array, options) {\n const name = getArrayName(array);\n options.truncate -= name.length + 4;\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return `${name}[]`;\n let output = \"\";\n for (let i = 0; i < array.length; i++) {\n const string = `${options.stylize(truncate(array[i], options.truncate), \"number\")}${i === array.length - 1 ? \"\" : \", \"}`;\n options.truncate -= string.length;\n if (array[i] !== array.length && options.truncate <= 3) {\n output += `${truncator}(${array.length - array[i] + 1})`;\n break;\n }\n output += string;\n }\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectTypedArray, \"inspectTypedArray\");\n\n// node_modules/loupe/lib/date.js\nfunction inspectDate(dateObject, options) {\n const stringRepresentation = dateObject.toJSON();\n if (stringRepresentation === null) {\n return \"Invalid Date\";\n }\n const split = stringRepresentation.split(\"T\");\n const date = split[0];\n return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, \"date\");\n}\n__name(inspectDate, \"inspectDate\");\n\n// node_modules/loupe/lib/function.js\nfunction inspectFunction(func, options) {\n const functionType = func[Symbol.toStringTag] || \"Function\";\n const name = func.name;\n if (!name) {\n return options.stylize(`[${functionType}]`, \"special\");\n }\n return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, \"special\");\n}\n__name(inspectFunction, \"inspectFunction\");\n\n// node_modules/loupe/lib/map.js\nfunction inspectMapEntry([key, value], options) {\n options.truncate -= 4;\n key = options.inspect(key, options);\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key} => ${value}`;\n}\n__name(inspectMapEntry, \"inspectMapEntry\");\nfunction mapToEntries(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n}\n__name(mapToEntries, \"mapToEntries\");\nfunction inspectMap(map, options) {\n if (map.size === 0)\n return \"Map{}\";\n options.truncate -= 7;\n return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n__name(inspectMap, \"inspectMap\");\n\n// node_modules/loupe/lib/number.js\nvar isNaN = Number.isNaN || ((i) => i !== i);\nfunction inspectNumber(number, options) {\n if (isNaN(number)) {\n return options.stylize(\"NaN\", \"number\");\n }\n if (number === Infinity) {\n return options.stylize(\"Infinity\", \"number\");\n }\n if (number === -Infinity) {\n return options.stylize(\"-Infinity\", \"number\");\n }\n if (number === 0) {\n return options.stylize(1 / number === Infinity ? \"+0\" : \"-0\", \"number\");\n }\n return options.stylize(truncate(String(number), options.truncate), \"number\");\n}\n__name(inspectNumber, \"inspectNumber\");\n\n// node_modules/loupe/lib/bigint.js\nfunction inspectBigInt(number, options) {\n let nums = truncate(number.toString(), options.truncate - 1);\n if (nums !== truncator)\n nums += \"n\";\n return options.stylize(nums, \"bigint\");\n}\n__name(inspectBigInt, \"inspectBigInt\");\n\n// node_modules/loupe/lib/regexp.js\nfunction inspectRegExp(value, options) {\n const flags = value.toString().split(\"/\")[2];\n const sourceLength = options.truncate - (2 + flags.length);\n const source = value.source;\n return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, \"regexp\");\n}\n__name(inspectRegExp, \"inspectRegExp\");\n\n// node_modules/loupe/lib/set.js\nfunction arrayFromSet(set2) {\n const values = [];\n set2.forEach((value) => {\n values.push(value);\n });\n return values;\n}\n__name(arrayFromSet, \"arrayFromSet\");\nfunction inspectSet(set2, options) {\n if (set2.size === 0)\n return \"Set{}\";\n options.truncate -= 7;\n return `Set{ ${inspectList(arrayFromSet(set2), options)} }`;\n}\n__name(inspectSet, \"inspectSet\");\n\n// node_modules/loupe/lib/string.js\nvar stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]\", \"g\");\nvar escapeCharacters = {\n \"\\b\": \"\\\\b\",\n \"\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"'\": \"\\\\'\",\n \"\\\\\": \"\\\\\\\\\"\n};\nvar hex = 16;\nvar unicodeLength = 4;\nfunction escape(char) {\n return escapeCharacters[char] || `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`;\n}\n__name(escape, \"escape\");\nfunction inspectString(string, options) {\n if (stringEscapeChars.test(string)) {\n string = string.replace(stringEscapeChars, escape);\n }\n return options.stylize(`'${truncate(string, options.truncate - 2)}'`, \"string\");\n}\n__name(inspectString, \"inspectString\");\n\n// node_modules/loupe/lib/symbol.js\nfunction inspectSymbol(value) {\n if (\"description\" in Symbol.prototype) {\n return value.description ? `Symbol(${value.description})` : \"Symbol()\";\n }\n return value.toString();\n}\n__name(inspectSymbol, \"inspectSymbol\");\n\n// node_modules/loupe/lib/promise.js\nvar getPromiseValue = /* @__PURE__ */ __name(() => \"Promise{\\u2026}\", \"getPromiseValue\");\nvar promise_default = getPromiseValue;\n\n// node_modules/loupe/lib/object.js\nfunction inspectObject(object, options) {\n const properties = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n if (properties.length === 0 && symbols.length === 0) {\n return \"{}\";\n }\n options.truncate -= 4;\n options.seen = options.seen || [];\n if (options.seen.includes(object)) {\n return \"[Circular]\";\n }\n options.seen.push(object);\n const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty);\n const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty);\n options.seen.pop();\n let sep = \"\";\n if (propertyContents && symbolContents) {\n sep = \", \";\n }\n return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n__name(inspectObject, \"inspectObject\");\n\n// node_modules/loupe/lib/class.js\nvar toStringTag = typeof Symbol !== \"undefined\" && Symbol.toStringTag ? Symbol.toStringTag : false;\nfunction inspectClass(value, options) {\n let name = \"\";\n if (toStringTag && toStringTag in value) {\n name = value[toStringTag];\n }\n name = name || value.constructor.name;\n if (!name || name === \"_class\") {\n name = \"\";\n }\n options.truncate -= name.length;\n return `${name}${inspectObject(value, options)}`;\n}\n__name(inspectClass, \"inspectClass\");\n\n// node_modules/loupe/lib/arguments.js\nfunction inspectArguments(args, options) {\n if (args.length === 0)\n return \"Arguments[]\";\n options.truncate -= 13;\n return `Arguments[ ${inspectList(args, options)} ]`;\n}\n__name(inspectArguments, \"inspectArguments\");\n\n// node_modules/loupe/lib/error.js\nvar errorKeys = [\n \"stack\",\n \"line\",\n \"column\",\n \"name\",\n \"message\",\n \"fileName\",\n \"lineNumber\",\n \"columnNumber\",\n \"number\",\n \"description\",\n \"cause\"\n];\nfunction inspectObject2(error, options) {\n const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1);\n const name = error.name;\n options.truncate -= name.length;\n let message = \"\";\n if (typeof error.message === \"string\") {\n message = truncate(error.message, options.truncate);\n } else {\n properties.unshift(\"message\");\n }\n message = message ? `: ${message}` : \"\";\n options.truncate -= message.length + 5;\n options.seen = options.seen || [];\n if (options.seen.includes(error)) {\n return \"[Circular]\";\n }\n options.seen.push(error);\n const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty);\n return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : \"\"}`;\n}\n__name(inspectObject2, \"inspectObject\");\n\n// node_modules/loupe/lib/html.js\nfunction inspectAttribute([key, value], options) {\n options.truncate -= 3;\n if (!value) {\n return `${options.stylize(String(key), \"yellow\")}`;\n }\n return `${options.stylize(String(key), \"yellow\")}=${options.stylize(`\"${value}\"`, \"string\")}`;\n}\n__name(inspectAttribute, \"inspectAttribute\");\nfunction inspectNodeCollection(collection, options) {\n return inspectList(collection, options, inspectNode, \"\\n\");\n}\n__name(inspectNodeCollection, \"inspectNodeCollection\");\nfunction inspectNode(node, options) {\n switch (node.nodeType) {\n case 1:\n return inspectHTML(node, options);\n case 3:\n return options.inspect(node.data, options);\n default:\n return options.inspect(node, options);\n }\n}\n__name(inspectNode, \"inspectNode\");\nfunction inspectHTML(element, options) {\n const properties = element.getAttributeNames();\n const name = element.tagName.toLowerCase();\n const head = options.stylize(`<${name}`, \"special\");\n const headClose = options.stylize(`>`, \"special\");\n const tail = options.stylize(``, \"special\");\n options.truncate -= name.length * 2 + 5;\n let propertyContents = \"\";\n if (properties.length > 0) {\n propertyContents += \" \";\n propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, \" \");\n }\n options.truncate -= propertyContents.length;\n const truncate2 = options.truncate;\n let children = inspectNodeCollection(element.children, options);\n if (children && children.length > truncate2) {\n children = `${truncator}(${element.children.length})`;\n }\n return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n__name(inspectHTML, \"inspectHTML\");\n\n// node_modules/loupe/lib/index.js\nvar symbolsSupported = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nvar chaiInspect = symbolsSupported ? /* @__PURE__ */ Symbol.for(\"chai/inspect\") : \"@@chai/inspect\";\nvar nodeInspect = /* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\");\nvar constructorMap = /* @__PURE__ */ new WeakMap();\nvar stringTagMap = {};\nvar baseTypesMap = {\n undefined: /* @__PURE__ */ __name((value, options) => options.stylize(\"undefined\", \"undefined\"), \"undefined\"),\n null: /* @__PURE__ */ __name((value, options) => options.stylize(\"null\", \"null\"), \"null\"),\n boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"boolean\"),\n Boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"Boolean\"),\n number: inspectNumber,\n Number: inspectNumber,\n bigint: inspectBigInt,\n BigInt: inspectBigInt,\n string: inspectString,\n String: inspectString,\n function: inspectFunction,\n Function: inspectFunction,\n symbol: inspectSymbol,\n // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n Symbol: inspectSymbol,\n Array: inspectArray,\n Date: inspectDate,\n Map: inspectMap,\n Set: inspectSet,\n RegExp: inspectRegExp,\n Promise: promise_default,\n // WeakSet, WeakMap are totally opaque to us\n WeakSet: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakSet{\\u2026}\", \"special\"), \"WeakSet\"),\n WeakMap: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakMap{\\u2026}\", \"special\"), \"WeakMap\"),\n Arguments: inspectArguments,\n Int8Array: inspectTypedArray,\n Uint8Array: inspectTypedArray,\n Uint8ClampedArray: inspectTypedArray,\n Int16Array: inspectTypedArray,\n Uint16Array: inspectTypedArray,\n Int32Array: inspectTypedArray,\n Uint32Array: inspectTypedArray,\n Float32Array: inspectTypedArray,\n Float64Array: inspectTypedArray,\n Generator: /* @__PURE__ */ __name(() => \"\", \"Generator\"),\n DataView: /* @__PURE__ */ __name(() => \"\", \"DataView\"),\n ArrayBuffer: /* @__PURE__ */ __name(() => \"\", \"ArrayBuffer\"),\n Error: inspectObject2,\n HTMLCollection: inspectNodeCollection,\n NodeList: inspectNodeCollection\n};\nvar inspectCustom = /* @__PURE__ */ __name((value, options, type3, inspectFn) => {\n if (chaiInspect in value && typeof value[chaiInspect] === \"function\") {\n return value[chaiInspect](options);\n }\n if (nodeInspect in value && typeof value[nodeInspect] === \"function\") {\n return value[nodeInspect](options.depth, options, inspectFn);\n }\n if (\"inspect\" in value && typeof value.inspect === \"function\") {\n return value.inspect(options.depth, options);\n }\n if (\"constructor\" in value && constructorMap.has(value.constructor)) {\n return constructorMap.get(value.constructor)(value, options);\n }\n if (stringTagMap[type3]) {\n return stringTagMap[type3](value, options);\n }\n return \"\";\n}, \"inspectCustom\");\nvar toString = Object.prototype.toString;\nfunction inspect(value, opts = {}) {\n const options = normaliseOptions(opts, inspect);\n const { customInspect } = options;\n let type3 = value === null ? \"null\" : typeof value;\n if (type3 === \"object\") {\n type3 = toString.call(value).slice(8, -1);\n }\n if (type3 in baseTypesMap) {\n return baseTypesMap[type3](value, options);\n }\n if (customInspect && value) {\n const output = inspectCustom(value, options, type3, inspect);\n if (output) {\n if (typeof output === \"string\")\n return output;\n return inspect(output, options);\n }\n }\n const proto = value ? Object.getPrototypeOf(value) : false;\n if (proto === Object.prototype || proto === null) {\n return inspectObject(value, options);\n }\n if (value && typeof HTMLElement === \"function\" && value instanceof HTMLElement) {\n return inspectHTML(value, options);\n }\n if (\"constructor\" in value) {\n if (value.constructor !== Object) {\n return inspectClass(value, options);\n }\n return inspectObject(value, options);\n }\n if (value === Object(value)) {\n return inspectObject(value, options);\n }\n return options.stylize(String(value), type3);\n}\n__name(inspect, \"inspect\");\n\n// lib/chai/config.js\nvar config = {\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {boolean}\n * @public\n */\n includeStack: false,\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {boolean}\n * @public\n */\n showDiff: true,\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {number}\n * @public\n */\n truncateThreshold: 40,\n /**\n * ### config.useProxy\n *\n * User configurable property, defines if chai will use a Proxy to throw\n * an error when a non-existent property is read, which protects users\n * from typos when using property-based assertions.\n *\n * Set it to false if you want to disable this feature.\n *\n * chai.config.useProxy = false; // disable use of Proxy\n *\n * This feature is automatically disabled regardless of this config value\n * in environments that don't support proxies.\n *\n * @param {boolean}\n * @public\n */\n useProxy: true,\n /**\n * ### config.proxyExcludedKeys\n *\n * User configurable property, defines which properties should be ignored\n * instead of throwing an error if they do not exist on the assertion.\n * This is only applied if the environment Chai is running in supports proxies and\n * if the `useProxy` configuration setting is enabled.\n * By default, `then` and `inspect` will not throw an error if they do not exist on the\n * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n *\n * // By default these keys will not throw an error if they do not exist on the assertion object\n * chai.config.proxyExcludedKeys = ['then', 'inspect'];\n *\n * @param {Array}\n * @public\n */\n proxyExcludedKeys: [\"then\", \"catch\", \"inspect\", \"toJSON\"],\n /**\n * ### config.deepEqual\n *\n * User configurable property, defines which a custom function to use for deepEqual\n * comparisons.\n * By default, the function used is the one from the `deep-eql` package without custom comparator.\n *\n * // use a custom comparator\n * chai.config.deepEqual = (expected, actual) => {\n * return chai.util.eql(expected, actual, {\n * comparator: (expected, actual) => {\n * // for non number comparison, use the default behavior\n * if(typeof expected !== 'number') return null;\n * // allow a difference of 10 between compared numbers\n * return typeof actual === 'number' && Math.abs(actual - expected) < 10\n * }\n * })\n * };\n *\n * @param {Function}\n * @public\n */\n deepEqual: null\n};\n\n// lib/chai/utils/inspect.js\nfunction inspect2(obj, showHidden, depth, colors) {\n let options = {\n colors,\n depth: typeof depth === \"undefined\" ? 2 : depth,\n showHidden,\n truncate: config.truncateThreshold ? config.truncateThreshold : Infinity\n };\n return inspect(obj, options);\n}\n__name(inspect2, \"inspect\");\n\n// lib/chai/utils/objDisplay.js\nfunction objDisplay(obj) {\n let str = inspect2(obj), type3 = Object.prototype.toString.call(obj);\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type3 === \"[object Function]\") {\n return !obj.name || obj.name === \"\" ? \"[Function]\" : \"[Function: \" + obj.name + \"]\";\n } else if (type3 === \"[object Array]\") {\n return \"[ Array(\" + obj.length + \") ]\";\n } else if (type3 === \"[object Object]\") {\n let keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(\", \") + \", ...\" : keys.join(\", \");\n return \"{ Object (\" + kstr + \") }\";\n } else {\n return str;\n }\n } else {\n return str;\n }\n}\n__name(objDisplay, \"objDisplay\");\n\n// lib/chai/utils/getMessage.js\nfunction getMessage2(obj, args) {\n let negate = flag(obj, \"negate\");\n let val = flag(obj, \"object\");\n let expected = args[3];\n let actual = getActual(obj, args);\n let msg = negate ? args[2] : args[1];\n let flagMsg = flag(obj, \"message\");\n if (typeof msg === \"function\") msg = msg();\n msg = msg || \"\";\n msg = msg.replace(/#\\{this\\}/g, function() {\n return objDisplay(val);\n }).replace(/#\\{act\\}/g, function() {\n return objDisplay(actual);\n }).replace(/#\\{exp\\}/g, function() {\n return objDisplay(expected);\n });\n return flagMsg ? flagMsg + \": \" + msg : msg;\n}\n__name(getMessage2, \"getMessage\");\n\n// lib/chai/utils/transferFlags.js\nfunction transferFlags(assertion, object, includeAll) {\n let flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null));\n if (!object.__flags) {\n object.__flags = /* @__PURE__ */ Object.create(null);\n }\n includeAll = arguments.length === 3 ? includeAll : true;\n for (let flag3 in flags) {\n if (includeAll || flag3 !== \"object\" && flag3 !== \"ssfi\" && flag3 !== \"lockSsfi\" && flag3 != \"message\") {\n object.__flags[flag3] = flags[flag3];\n }\n }\n}\n__name(transferFlags, \"transferFlags\");\n\n// node_modules/deep-eql/index.js\nfunction type2(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const sliceStart = 8;\n const sliceEnd = -1;\n return Object.prototype.toString.call(obj).slice(sliceStart, sliceEnd);\n}\n__name(type2, \"type\");\nfunction FakeMap() {\n this._key = \"chai/deep-eql__\" + Math.random() + Date.now();\n}\n__name(FakeMap, \"FakeMap\");\nFakeMap.prototype = {\n get: /* @__PURE__ */ __name(function get(key) {\n return key[this._key];\n }, \"get\"),\n set: /* @__PURE__ */ __name(function set(key, value) {\n if (Object.isExtensible(key)) {\n Object.defineProperty(key, this._key, {\n value,\n configurable: true\n });\n }\n }, \"set\")\n};\nvar MemoizeMap = typeof WeakMap === \"function\" ? WeakMap : FakeMap;\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return null;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n var result = leftHandMap.get(rightHandOperand);\n if (typeof result === \"boolean\") {\n return result;\n }\n }\n return null;\n}\n__name(memoizeCompare, \"memoizeCompare\");\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n leftHandMap.set(rightHandOperand, result);\n } else {\n leftHandMap = new MemoizeMap();\n leftHandMap.set(rightHandOperand, result);\n memoizeMap.set(leftHandOperand, leftHandMap);\n }\n}\n__name(memoizeSet, \"memoizeSet\");\nvar deep_eql_default = deepEqual;\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n if (options && options.comparator) {\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n__name(deepEqual, \"deepEqual\");\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n if (leftHandOperand === rightHandOperand) {\n return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n }\n if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n rightHandOperand !== rightHandOperand) {\n return true;\n }\n if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return false;\n }\n return null;\n}\n__name(simpleEqual, \"simpleEqual\");\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n options = options || {};\n options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n var comparator = options && options.comparator;\n var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n if (memoizeResultLeft !== null) {\n return memoizeResultLeft;\n }\n var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n if (memoizeResultRight !== null) {\n return memoizeResultRight;\n }\n if (comparator) {\n var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n if (comparatorResult === false || comparatorResult === true) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n return comparatorResult;\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n }\n var leftHandType = type2(leftHandOperand);\n if (leftHandType !== type2(rightHandOperand)) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n return false;\n }\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n return result;\n}\n__name(extensiveDeepEqual, \"extensiveDeepEqual\");\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n switch (leftHandType) {\n case \"String\":\n case \"Number\":\n case \"Boolean\":\n case \"Date\":\n return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n case \"Promise\":\n case \"Symbol\":\n case \"function\":\n case \"WeakMap\":\n case \"WeakSet\":\n return leftHandOperand === rightHandOperand;\n case \"Error\":\n return keysEqual(leftHandOperand, rightHandOperand, [\"name\", \"message\", \"code\"], options);\n case \"Arguments\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"Array\":\n return iterableEqual(leftHandOperand, rightHandOperand, options);\n case \"RegExp\":\n return regexpEqual(leftHandOperand, rightHandOperand);\n case \"Generator\":\n return generatorEqual(leftHandOperand, rightHandOperand, options);\n case \"DataView\":\n return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n case \"ArrayBuffer\":\n return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n case \"Set\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Map\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Temporal.PlainDate\":\n case \"Temporal.PlainTime\":\n case \"Temporal.PlainDateTime\":\n case \"Temporal.Instant\":\n case \"Temporal.ZonedDateTime\":\n case \"Temporal.PlainYearMonth\":\n case \"Temporal.PlainMonthDay\":\n return leftHandOperand.equals(rightHandOperand);\n case \"Temporal.Duration\":\n return leftHandOperand.total(\"nanoseconds\") === rightHandOperand.total(\"nanoseconds\");\n case \"Temporal.TimeZone\":\n case \"Temporal.Calendar\":\n return leftHandOperand.toString() === rightHandOperand.toString();\n default:\n return objectEqual(leftHandOperand, rightHandOperand, options);\n }\n}\n__name(extensiveDeepEqualByType, \"extensiveDeepEqualByType\");\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n return leftHandOperand.toString() === rightHandOperand.toString();\n}\n__name(regexpEqual, \"regexpEqual\");\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n try {\n if (leftHandOperand.size !== rightHandOperand.size) {\n return false;\n }\n if (leftHandOperand.size === 0) {\n return true;\n }\n } catch (sizeError) {\n return false;\n }\n var leftHandItems = [];\n var rightHandItems = [];\n leftHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n leftHandItems.push([key, value]);\n }, \"gatherEntries\"));\n rightHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n rightHandItems.push([key, value]);\n }, \"gatherEntries\"));\n return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n__name(entriesEqual, \"entriesEqual\");\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n var length = leftHandOperand.length;\n if (length !== rightHandOperand.length) {\n return false;\n }\n if (length === 0) {\n return true;\n }\n var index = -1;\n while (++index < length) {\n if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(iterableEqual, \"iterableEqual\");\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n__name(generatorEqual, \"generatorEqual\");\nfunction hasIteratorFunction(target) {\n return typeof Symbol !== \"undefined\" && typeof target === \"object\" && typeof Symbol.iterator !== \"undefined\" && typeof target[Symbol.iterator] === \"function\";\n}\n__name(hasIteratorFunction, \"hasIteratorFunction\");\nfunction getIteratorEntries(target) {\n if (hasIteratorFunction(target)) {\n try {\n return getGeneratorEntries(target[Symbol.iterator]());\n } catch (iteratorError) {\n return [];\n }\n }\n return [];\n}\n__name(getIteratorEntries, \"getIteratorEntries\");\nfunction getGeneratorEntries(generator) {\n var generatorResult = generator.next();\n var accumulator = [generatorResult.value];\n while (generatorResult.done === false) {\n generatorResult = generator.next();\n accumulator.push(generatorResult.value);\n }\n return accumulator;\n}\n__name(getGeneratorEntries, \"getGeneratorEntries\");\nfunction getEnumerableKeys(target) {\n var keys = [];\n for (var key in target) {\n keys.push(key);\n }\n return keys;\n}\n__name(getEnumerableKeys, \"getEnumerableKeys\");\nfunction getEnumerableSymbols(target) {\n var keys = [];\n var allKeys = Object.getOwnPropertySymbols(target);\n for (var i = 0; i < allKeys.length; i += 1) {\n var key = allKeys[i];\n if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n keys.push(key);\n }\n }\n return keys;\n}\n__name(getEnumerableSymbols, \"getEnumerableSymbols\");\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n var length = keys.length;\n if (length === 0) {\n return true;\n }\n for (var i = 0; i < length; i += 1) {\n if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(keysEqual, \"keysEqual\");\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n var leftHandKeys = getEnumerableKeys(leftHandOperand);\n var rightHandKeys = getEnumerableKeys(rightHandOperand);\n var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n return false;\n }\n return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n }\n var leftHandEntries = getIteratorEntries(leftHandOperand);\n var rightHandEntries = getIteratorEntries(rightHandOperand);\n if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n leftHandEntries.sort();\n rightHandEntries.sort();\n return iterableEqual(leftHandEntries, rightHandEntries, options);\n }\n if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) {\n return true;\n }\n return false;\n}\n__name(objectEqual, \"objectEqual\");\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"object\";\n}\n__name(isPrimitive, \"isPrimitive\");\nfunction mapSymbols(arr) {\n return arr.map(/* @__PURE__ */ __name(function mapSymbol(entry) {\n if (typeof entry === \"symbol\") {\n return entry.toString();\n }\n return entry;\n }, \"mapSymbol\"));\n}\n__name(mapSymbols, \"mapSymbols\");\n\n// node_modules/pathval/index.js\nfunction hasProperty(obj, name) {\n if (typeof obj === \"undefined\" || obj === null) {\n return false;\n }\n return name in Object(obj);\n}\n__name(hasProperty, \"hasProperty\");\nfunction parsePath(path) {\n const str = path.replace(/([^\\\\])\\[/g, \"$1.[\");\n const parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map((value) => {\n if (value === \"constructor\" || value === \"__proto__\" || value === \"prototype\") {\n return {};\n }\n const regexp = /^\\[(\\d+)\\]$/;\n const mArr = regexp.exec(value);\n let parsed = null;\n if (mArr) {\n parsed = { i: parseFloat(mArr[1]) };\n } else {\n parsed = { p: value.replace(/\\\\([.[\\]])/g, \"$1\") };\n }\n return parsed;\n });\n}\n__name(parsePath, \"parsePath\");\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n let temporaryValue = obj;\n let res = null;\n pathDepth = typeof pathDepth === \"undefined\" ? parsed.length : pathDepth;\n for (let i = 0; i < pathDepth; i++) {\n const part = parsed[i];\n if (temporaryValue) {\n if (typeof part.p === \"undefined\") {\n temporaryValue = temporaryValue[part.i];\n } else {\n temporaryValue = temporaryValue[part.p];\n }\n if (i === pathDepth - 1) {\n res = temporaryValue;\n }\n }\n }\n return res;\n}\n__name(internalGetPathValue, \"internalGetPathValue\");\nfunction getPathInfo(obj, path) {\n const parsed = parsePath(path);\n const last = parsed[parsed.length - 1];\n const info = {\n parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj,\n name: last.p || last.i,\n value: internalGetPathValue(obj, parsed)\n };\n info.exists = hasProperty(info.parent, info.name);\n return info;\n}\n__name(getPathInfo, \"getPathInfo\");\n\n// lib/chai/assertion.js\nvar _Assertion = class _Assertion {\n /**\n * Creates object for chaining.\n * `Assertion` objects contain metadata in the form of flags. Three flags can\n * be assigned during instantiation by passing arguments to this constructor:\n *\n * - `object`: This flag contains the target of the assertion. For example, in\n * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will\n * contain `numKittens` so that the `equal` assertion can reference it when\n * needed.\n *\n * - `message`: This flag contains an optional custom error message to be\n * prepended to the error message that's generated by the assertion when it\n * fails.\n *\n * - `ssfi`: This flag stands for \"start stack function indicator\". It\n * contains a function reference that serves as the starting point for\n * removing frames from the stack trace of the error that's created by the\n * assertion when it fails. The goal is to provide a cleaner stack trace to\n * end users by removing Chai's internal functions. Note that it only works\n * in environments that support `Error.captureStackTrace`, and only when\n * `Chai.config.includeStack` hasn't been set to `false`.\n *\n * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag\n * should retain its current value, even as assertions are chained off of\n * this object. This is usually set to `true` when creating a new assertion\n * from within another assertion. It's also temporarily set to `true` before\n * an overwritten assertion gets called by the overwriting assertion.\n *\n * - `eql`: This flag contains the deepEqual function to be used by the assertion.\n *\n * @param {unknown} obj target of the assertion\n * @param {string} [msg] (optional) custom error message\n * @param {Function} [ssfi] (optional) starting point for removing stack frames\n * @param {boolean} [lockSsfi] (optional) whether or not the ssfi flag is locked\n */\n constructor(obj, msg, ssfi, lockSsfi) {\n /** @type {{}} */\n __publicField(this, \"__flags\", {});\n flag(this, \"ssfi\", ssfi || _Assertion);\n flag(this, \"lockSsfi\", lockSsfi);\n flag(this, \"object\", obj);\n flag(this, \"message\", msg);\n flag(this, \"eql\", config.deepEqual || deep_eql_default);\n return proxify(this);\n }\n /** @returns {boolean} */\n static get includeStack() {\n console.warn(\n \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n );\n return config.includeStack;\n }\n /** @param {boolean} value */\n static set includeStack(value) {\n console.warn(\n \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n );\n config.includeStack = value;\n }\n /** @returns {boolean} */\n static get showDiff() {\n console.warn(\n \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n );\n return config.showDiff;\n }\n /** @param {boolean} value */\n static set showDiff(value) {\n console.warn(\n \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n );\n config.showDiff = value;\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static addProperty(name, fn) {\n addProperty(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static addMethod(name, fn) {\n addMethod(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n * @param {Function} chainingBehavior\n */\n static addChainableMethod(name, fn, chainingBehavior) {\n addChainableMethod(this.prototype, name, fn, chainingBehavior);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static overwriteProperty(name, fn) {\n overwriteProperty(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static overwriteMethod(name, fn) {\n overwriteMethod(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n * @param {Function} chainingBehavior\n */\n static overwriteChainableMethod(name, fn, chainingBehavior) {\n overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n }\n /**\n * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n *\n * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n *\n * @name assert\n * @param {unknown} _expr to be tested\n * @param {string | Function} msg or function that returns message to display if expression fails\n * @param {string | Function} _negateMsg or function that returns negatedMessage to display if negated expression fails\n * @param {unknown} expected value (remember to check for negation)\n * @param {unknown} _actual (optional) will default to `this.obj`\n * @param {boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n * @returns {void}\n */\n assert(_expr, msg, _negateMsg, expected, _actual, showDiff) {\n const ok = test(this, arguments);\n if (false !== showDiff) showDiff = true;\n if (void 0 === expected && void 0 === _actual) showDiff = false;\n if (true !== config.showDiff) showDiff = false;\n if (!ok) {\n msg = getMessage2(this, arguments);\n const actual = getActual(this, arguments);\n const assertionErrorObjectProperties = {\n actual,\n expected,\n showDiff\n };\n const operator = getOperator(this, arguments);\n if (operator) {\n assertionErrorObjectProperties.operator = operator;\n }\n throw new AssertionError(\n msg,\n assertionErrorObjectProperties,\n // @ts-expect-error Not sure what to do about these types yet\n config.includeStack ? this.assert : flag(this, \"ssfi\")\n );\n }\n }\n /**\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @returns {unknown}\n */\n get _obj() {\n return flag(this, \"object\");\n }\n /**\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @param {unknown} val\n */\n set _obj(val) {\n flag(this, \"object\", val);\n }\n};\n__name(_Assertion, \"Assertion\");\nvar Assertion = _Assertion;\n\n// lib/chai/utils/events.js\nvar events = new EventTarget();\nvar _PluginEvent = class _PluginEvent extends Event {\n constructor(type3, name, fn) {\n super(type3);\n this.name = String(name);\n this.fn = fn;\n }\n};\n__name(_PluginEvent, \"PluginEvent\");\nvar PluginEvent = _PluginEvent;\n\n// lib/chai/utils/isProxyEnabled.js\nfunction isProxyEnabled() {\n return config.useProxy && typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\";\n}\n__name(isProxyEnabled, \"isProxyEnabled\");\n\n// lib/chai/utils/addProperty.js\nfunction addProperty(ctx, name, getter) {\n getter = getter === void 0 ? function() {\n } : getter;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function propertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", propertyGetter);\n }\n let result = getter.call(this);\n if (result !== void 0) return result;\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"propertyGetter\"),\n configurable: true\n });\n events.dispatchEvent(new PluginEvent(\"addProperty\", name, getter));\n}\n__name(addProperty, \"addProperty\");\n\n// lib/chai/utils/addLengthGuard.js\nvar fnLengthDesc = Object.getOwnPropertyDescriptor(function() {\n}, \"length\");\nfunction addLengthGuard(fn, assertionName, isChainable) {\n if (!fnLengthDesc.configurable) return fn;\n Object.defineProperty(fn, \"length\", {\n get: /* @__PURE__ */ __name(function() {\n if (isChainable) {\n throw Error(\n \"Invalid Chai property: \" + assertionName + '.length. Due to a compatibility issue, \"length\" cannot directly follow \"' + assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.'\n );\n }\n throw Error(\n \"Invalid Chai property: \" + assertionName + '.length. See docs for proper usage of \"' + assertionName + '\".'\n );\n }, \"get\")\n });\n return fn;\n}\n__name(addLengthGuard, \"addLengthGuard\");\n\n// lib/chai/utils/getProperties.js\nfunction getProperties(object) {\n let result = Object.getOwnPropertyNames(object);\n function addProperty2(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n __name(addProperty2, \"addProperty\");\n let proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty2);\n proto = Object.getPrototypeOf(proto);\n }\n return result;\n}\n__name(getProperties, \"getProperties\");\n\n// lib/chai/utils/proxify.js\nvar builtins = [\"__flags\", \"__methods\", \"_obj\", \"assert\"];\nfunction proxify(obj, nonChainableMethodName) {\n if (!isProxyEnabled()) return obj;\n return new Proxy(obj, {\n get: /* @__PURE__ */ __name(function proxyGetter(target, property) {\n if (typeof property === \"string\" && config.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) {\n if (nonChainableMethodName) {\n throw Error(\n \"Invalid Chai property: \" + nonChainableMethodName + \".\" + property + '. See docs for proper usage of \"' + nonChainableMethodName + '\".'\n );\n }\n let suggestion = null;\n let suggestionDistance = 4;\n getProperties(target).forEach(function(prop) {\n if (\n // we actually mean to check `Object.prototype` here\n // eslint-disable-next-line no-prototype-builtins\n !Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1\n ) {\n let dist = stringDistanceCapped(property, prop, suggestionDistance);\n if (dist < suggestionDistance) {\n suggestion = prop;\n suggestionDistance = dist;\n }\n }\n });\n if (suggestion !== null) {\n throw Error(\n \"Invalid Chai property: \" + property + '. Did you mean \"' + suggestion + '\"?'\n );\n } else {\n throw Error(\"Invalid Chai property: \" + property);\n }\n }\n if (builtins.indexOf(property) === -1 && !flag(target, \"lockSsfi\")) {\n flag(target, \"ssfi\", proxyGetter);\n }\n return Reflect.get(target, property);\n }, \"proxyGetter\")\n });\n}\n__name(proxify, \"proxify\");\nfunction stringDistanceCapped(strA, strB, cap) {\n if (Math.abs(strA.length - strB.length) >= cap) {\n return cap;\n }\n let memo = [];\n for (let i = 0; i <= strA.length; i++) {\n memo[i] = Array(strB.length + 1).fill(0);\n memo[i][0] = i;\n }\n for (let j = 0; j < strB.length; j++) {\n memo[0][j] = j;\n }\n for (let i = 1; i <= strA.length; i++) {\n let ch = strA.charCodeAt(i - 1);\n for (let j = 1; j <= strB.length; j++) {\n if (Math.abs(i - j) >= cap) {\n memo[i][j] = cap;\n continue;\n }\n memo[i][j] = Math.min(\n memo[i - 1][j] + 1,\n memo[i][j - 1] + 1,\n memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n );\n }\n }\n return memo[strA.length][strB.length];\n}\n__name(stringDistanceCapped, \"stringDistanceCapped\");\n\n// lib/chai/utils/addMethod.js\nfunction addMethod(ctx, name, method) {\n let methodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", methodWrapper);\n }\n let result = method.apply(this, arguments);\n if (result !== void 0) return result;\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"methodWrapper\");\n addLengthGuard(methodWrapper, name, false);\n ctx[name] = proxify(methodWrapper, name);\n events.dispatchEvent(new PluginEvent(\"addMethod\", name, method));\n}\n__name(addMethod, \"addMethod\");\n\n// lib/chai/utils/overwriteProperty.js\nfunction overwriteProperty(ctx, name, getter) {\n let _get = Object.getOwnPropertyDescriptor(ctx, name), _super = /* @__PURE__ */ __name(function() {\n }, \"_super\");\n if (_get && \"function\" === typeof _get.get) _super = _get.get;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function overwritingPropertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingPropertyGetter);\n }\n let origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n let result = getter(_super).call(this);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingPropertyGetter\"),\n configurable: true\n });\n}\n__name(overwriteProperty, \"overwriteProperty\");\n\n// lib/chai/utils/overwriteMethod.js\nfunction overwriteMethod(ctx, name, method) {\n let _method = ctx[name], _super = /* @__PURE__ */ __name(function() {\n throw new Error(name + \" is not a function\");\n }, \"_super\");\n if (_method && \"function\" === typeof _method) _super = _method;\n let overwritingMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingMethodWrapper);\n }\n let origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n let result = method(_super).apply(this, arguments);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingMethodWrapper\");\n addLengthGuard(overwritingMethodWrapper, name, false);\n ctx[name] = proxify(overwritingMethodWrapper, name);\n}\n__name(overwriteMethod, \"overwriteMethod\");\n\n// lib/chai/utils/addChainableMethod.js\nvar canSetPrototype = typeof Object.setPrototypeOf === \"function\";\nvar testFn = /* @__PURE__ */ __name(function() {\n}, \"testFn\");\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n let propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n if (typeof propDesc !== \"object\") return true;\n return !propDesc.configurable;\n});\nvar call = Function.prototype.call;\nvar apply = Function.prototype.apply;\nvar _PluginAddChainableMethodEvent = class _PluginAddChainableMethodEvent extends PluginEvent {\n constructor(type3, name, fn, chainingBehavior) {\n super(type3, name, fn);\n this.chainingBehavior = chainingBehavior;\n }\n};\n__name(_PluginAddChainableMethodEvent, \"PluginAddChainableMethodEvent\");\nvar PluginAddChainableMethodEvent = _PluginAddChainableMethodEvent;\nfunction addChainableMethod(ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== \"function\") {\n chainingBehavior = /* @__PURE__ */ __name(function() {\n }, \"chainingBehavior\");\n }\n let chainableBehavior = {\n method,\n chainingBehavior\n };\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function chainableMethodGetter() {\n chainableBehavior.chainingBehavior.call(this);\n let chainableMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", chainableMethodWrapper);\n }\n let result = chainableBehavior.method.apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"chainableMethodWrapper\");\n addLengthGuard(chainableMethodWrapper, name, true);\n if (canSetPrototype) {\n let prototype = Object.create(this);\n prototype.call = call;\n prototype.apply = apply;\n Object.setPrototypeOf(chainableMethodWrapper, prototype);\n } else {\n let asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function(asserterName) {\n if (excludeNames.indexOf(asserterName) !== -1) {\n return;\n }\n let pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n });\n }\n transferFlags(this, chainableMethodWrapper);\n return proxify(chainableMethodWrapper);\n }, \"chainableMethodGetter\"),\n configurable: true\n });\n events.dispatchEvent(\n new PluginAddChainableMethodEvent(\n \"addChainableMethod\",\n name,\n method,\n chainingBehavior\n )\n );\n}\n__name(addChainableMethod, \"addChainableMethod\");\n\n// lib/chai/utils/overwriteChainableMethod.js\nfunction overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n let chainableBehavior = ctx.__methods[name];\n let _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = /* @__PURE__ */ __name(function overwritingChainableMethodGetter() {\n let result = chainingBehavior(_chainingBehavior).call(this);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodGetter\");\n let _method = chainableBehavior.method;\n chainableBehavior.method = /* @__PURE__ */ __name(function overwritingChainableMethodWrapper() {\n let result = method(_method).apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodWrapper\");\n}\n__name(overwriteChainableMethod, \"overwriteChainableMethod\");\n\n// lib/chai/utils/compareByInspect.js\nfunction compareByInspect(a, b) {\n return inspect2(a) < inspect2(b) ? -1 : 1;\n}\n__name(compareByInspect, \"compareByInspect\");\n\n// lib/chai/utils/getOwnEnumerablePropertySymbols.js\nfunction getOwnEnumerablePropertySymbols(obj) {\n if (typeof Object.getOwnPropertySymbols !== \"function\") return [];\n return Object.getOwnPropertySymbols(obj).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n });\n}\n__name(getOwnEnumerablePropertySymbols, \"getOwnEnumerablePropertySymbols\");\n\n// lib/chai/utils/getOwnEnumerableProperties.js\nfunction getOwnEnumerableProperties(obj) {\n return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n}\n__name(getOwnEnumerableProperties, \"getOwnEnumerableProperties\");\n\n// lib/chai/utils/isNaN.js\nvar isNaN2 = Number.isNaN;\n\n// lib/chai/utils/getOperator.js\nfunction isObjectType(obj) {\n let objectType = type(obj);\n let objectTypes = [\"Array\", \"Object\", \"Function\"];\n return objectTypes.indexOf(objectType) !== -1;\n}\n__name(isObjectType, \"isObjectType\");\nfunction getOperator(obj, args) {\n let operator = flag(obj, \"operator\");\n let negate = flag(obj, \"negate\");\n let expected = args[3];\n let msg = negate ? args[2] : args[1];\n if (operator) {\n return operator;\n }\n if (typeof msg === \"function\") msg = msg();\n msg = msg || \"\";\n if (!msg) {\n return void 0;\n }\n if (/\\shave\\s/.test(msg)) {\n return void 0;\n }\n let isObject = isObjectType(expected);\n if (/\\snot\\s/.test(msg)) {\n return isObject ? \"notDeepStrictEqual\" : \"notStrictEqual\";\n }\n return isObject ? \"deepStrictEqual\" : \"strictEqual\";\n}\n__name(getOperator, \"getOperator\");\n\n// lib/chai/utils/index.js\nfunction getName(fn) {\n return fn.name;\n}\n__name(getName, \"getName\");\nfunction isRegExp2(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp2, \"isRegExp\");\nfunction isNumeric(obj) {\n return [\"Number\", \"BigInt\"].includes(type(obj));\n}\n__name(isNumeric, \"isNumeric\");\n\n// lib/chai/core/assertions.js\nvar { flag: flag2 } = utils_exports;\n[\n \"to\",\n \"be\",\n \"been\",\n \"is\",\n \"and\",\n \"has\",\n \"have\",\n \"with\",\n \"that\",\n \"which\",\n \"at\",\n \"of\",\n \"same\",\n \"but\",\n \"does\",\n \"still\",\n \"also\"\n].forEach(function(chain) {\n Assertion.addProperty(chain);\n});\nAssertion.addProperty(\"not\", function() {\n flag2(this, \"negate\", true);\n});\nAssertion.addProperty(\"deep\", function() {\n flag2(this, \"deep\", true);\n});\nAssertion.addProperty(\"nested\", function() {\n flag2(this, \"nested\", true);\n});\nAssertion.addProperty(\"own\", function() {\n flag2(this, \"own\", true);\n});\nAssertion.addProperty(\"ordered\", function() {\n flag2(this, \"ordered\", true);\n});\nAssertion.addProperty(\"any\", function() {\n flag2(this, \"any\", true);\n flag2(this, \"all\", false);\n});\nAssertion.addProperty(\"all\", function() {\n flag2(this, \"all\", true);\n flag2(this, \"any\", false);\n});\nvar functionTypes = {\n function: [\n \"function\",\n \"asyncfunction\",\n \"generatorfunction\",\n \"asyncgeneratorfunction\"\n ],\n asyncfunction: [\"asyncfunction\", \"asyncgeneratorfunction\"],\n generatorfunction: [\"generatorfunction\", \"asyncgeneratorfunction\"],\n asyncgeneratorfunction: [\"asyncgeneratorfunction\"]\n};\nfunction an(type3, msg) {\n if (msg) flag2(this, \"message\", msg);\n type3 = type3.toLowerCase();\n let obj = flag2(this, \"object\"), article = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(type3.charAt(0)) ? \"an \" : \"a \";\n const detectedType = type(obj).toLowerCase();\n if (functionTypes[\"function\"].includes(type3)) {\n this.assert(\n functionTypes[type3].includes(detectedType),\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n } else {\n this.assert(\n type3 === detectedType,\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n }\n}\n__name(an, \"an\");\nAssertion.addChainableMethod(\"an\", an);\nAssertion.addChainableMethod(\"a\", an);\nfunction SameValueZero(a, b) {\n return isNaN2(a) && isNaN2(b) || a === b;\n}\n__name(SameValueZero, \"SameValueZero\");\nfunction includeChainingBehavior() {\n flag2(this, \"contains\", true);\n}\n__name(includeChainingBehavior, \"includeChainingBehavior\");\nfunction include(val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\"), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), descriptor = isDeep ? \"deep \" : \"\", isEql = isDeep ? flag2(this, \"eql\") : SameValueZero;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n let included = false;\n switch (objType) {\n case \"string\":\n included = obj.indexOf(val) !== -1;\n break;\n case \"weakset\":\n if (isDeep) {\n throw new AssertionError(\n flagMsg + \"unable to use .deep.include with WeakSet\",\n void 0,\n ssfi\n );\n }\n included = obj.has(val);\n break;\n case \"map\":\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n break;\n case \"set\":\n if (isDeep) {\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n } else {\n included = obj.has(val);\n }\n break;\n case \"array\":\n if (isDeep) {\n included = obj.some(function(item) {\n return isEql(item, val);\n });\n } else {\n included = obj.indexOf(val) !== -1;\n }\n break;\n default: {\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \"the given combination of arguments (\" + objType + \" and \" + type(val).toLowerCase() + \") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a \" + type(val).toLowerCase(),\n void 0,\n ssfi\n );\n }\n let props = Object.keys(val);\n let firstErr = null;\n let numErrs = 0;\n props.forEach(function(prop) {\n let propAssertion = new Assertion(obj);\n transferFlags(this, propAssertion, true);\n flag2(propAssertion, \"lockSsfi\", true);\n if (!negate || props.length === 1) {\n propAssertion.property(prop, val[prop]);\n return;\n }\n try {\n propAssertion.property(prop, val[prop]);\n } catch (err) {\n if (!check_error_exports.compatibleConstructor(err, AssertionError)) {\n throw err;\n }\n if (firstErr === null) firstErr = err;\n numErrs++;\n }\n }, this);\n if (negate && props.length > 1 && numErrs === props.length) {\n throw firstErr;\n }\n return;\n }\n }\n this.assert(\n included,\n \"expected #{this} to \" + descriptor + \"include \" + inspect2(val),\n \"expected #{this} to not \" + descriptor + \"include \" + inspect2(val)\n );\n}\n__name(include, \"include\");\nAssertion.addChainableMethod(\"include\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contain\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contains\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"includes\", include, includeChainingBehavior);\nAssertion.addProperty(\"ok\", function() {\n this.assert(\n flag2(this, \"object\"),\n \"expected #{this} to be truthy\",\n \"expected #{this} to be falsy\"\n );\n});\nAssertion.addProperty(\"true\", function() {\n this.assert(\n true === flag2(this, \"object\"),\n \"expected #{this} to be true\",\n \"expected #{this} to be false\",\n flag2(this, \"negate\") ? false : true\n );\n});\nAssertion.addProperty(\"numeric\", function() {\n const object = flag2(this, \"object\");\n this.assert(\n [\"Number\", \"BigInt\"].includes(type(object)),\n \"expected #{this} to be numeric\",\n \"expected #{this} to not be numeric\",\n flag2(this, \"negate\") ? false : true\n );\n});\nAssertion.addProperty(\"callable\", function() {\n const val = flag2(this, \"object\");\n const ssfi = flag2(this, \"ssfi\");\n const message = flag2(this, \"message\");\n const msg = message ? `${message}: ` : \"\";\n const negate = flag2(this, \"negate\");\n const assertionMessage = negate ? `${msg}expected ${inspect2(val)} not to be a callable function` : `${msg}expected ${inspect2(val)} to be a callable function`;\n const isCallable = [\n \"Function\",\n \"AsyncFunction\",\n \"GeneratorFunction\",\n \"AsyncGeneratorFunction\"\n ].includes(type(val));\n if (isCallable && negate || !isCallable && !negate) {\n throw new AssertionError(assertionMessage, void 0, ssfi);\n }\n});\nAssertion.addProperty(\"false\", function() {\n this.assert(\n false === flag2(this, \"object\"),\n \"expected #{this} to be false\",\n \"expected #{this} to be true\",\n flag2(this, \"negate\") ? true : false\n );\n});\nAssertion.addProperty(\"null\", function() {\n this.assert(\n null === flag2(this, \"object\"),\n \"expected #{this} to be null\",\n \"expected #{this} not to be null\"\n );\n});\nAssertion.addProperty(\"undefined\", function() {\n this.assert(\n void 0 === flag2(this, \"object\"),\n \"expected #{this} to be undefined\",\n \"expected #{this} not to be undefined\"\n );\n});\nAssertion.addProperty(\"NaN\", function() {\n this.assert(\n isNaN2(flag2(this, \"object\")),\n \"expected #{this} to be NaN\",\n \"expected #{this} not to be NaN\"\n );\n});\nfunction assertExist() {\n let val = flag2(this, \"object\");\n this.assert(\n val !== null && val !== void 0,\n \"expected #{this} to exist\",\n \"expected #{this} to not exist\"\n );\n}\n__name(assertExist, \"assertExist\");\nAssertion.addProperty(\"exist\", assertExist);\nAssertion.addProperty(\"exists\", assertExist);\nAssertion.addProperty(\"empty\", function() {\n let val = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), itemsCount;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n switch (type(val).toLowerCase()) {\n case \"array\":\n case \"string\":\n itemsCount = val.length;\n break;\n case \"map\":\n case \"set\":\n itemsCount = val.size;\n break;\n case \"weakmap\":\n case \"weakset\":\n throw new AssertionError(\n flagMsg + \".empty was passed a weak collection\",\n void 0,\n ssfi\n );\n case \"function\": {\n const msg = flagMsg + \".empty was passed a function \" + getName(val);\n throw new AssertionError(msg.trim(), void 0, ssfi);\n }\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \".empty was passed non-string primitive \" + inspect2(val),\n void 0,\n ssfi\n );\n }\n itemsCount = Object.keys(val).length;\n }\n this.assert(\n 0 === itemsCount,\n \"expected #{this} to be empty\",\n \"expected #{this} not to be empty\"\n );\n});\nfunction checkArguments() {\n let obj = flag2(this, \"object\"), type3 = type(obj);\n this.assert(\n \"Arguments\" === type3,\n \"expected #{this} to be arguments but got \" + type3,\n \"expected #{this} to not be arguments\"\n );\n}\n__name(checkArguments, \"checkArguments\");\nAssertion.addProperty(\"arguments\", checkArguments);\nAssertion.addProperty(\"Arguments\", checkArguments);\nfunction assertEqual(val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n if (flag2(this, \"deep\")) {\n let prevLockSsfi = flag2(this, \"lockSsfi\");\n flag2(this, \"lockSsfi\", true);\n this.eql(val);\n flag2(this, \"lockSsfi\", prevLockSsfi);\n } else {\n this.assert(\n val === obj,\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{exp}\",\n val,\n this._obj,\n true\n );\n }\n}\n__name(assertEqual, \"assertEqual\");\nAssertion.addMethod(\"equal\", assertEqual);\nAssertion.addMethod(\"equals\", assertEqual);\nAssertion.addMethod(\"eq\", assertEqual);\nfunction assertEql(obj, msg) {\n if (msg) flag2(this, \"message\", msg);\n let eql = flag2(this, \"eql\");\n this.assert(\n eql(obj, flag2(this, \"object\")),\n \"expected #{this} to deeply equal #{exp}\",\n \"expected #{this} to not deeply equal #{exp}\",\n obj,\n this._obj,\n true\n );\n}\n__name(assertEql, \"assertEql\");\nAssertion.addMethod(\"eql\", assertEql);\nAssertion.addMethod(\"eqls\", assertEql);\nfunction assertAbove(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase();\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n throw new AssertionError(\n msgPrefix + \"the argument to above must be a date\",\n void 0,\n ssfi\n );\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n throw new AssertionError(\n msgPrefix + \"the argument to above must be a number\",\n void 0,\n ssfi\n );\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n throw new AssertionError(\n msgPrefix + \"expected \" + printObj + \" to be a number or a date\",\n void 0,\n ssfi\n );\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount > n,\n \"expected #{this} to have a \" + descriptor + \" above #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj > n,\n \"expected #{this} to be above #{exp}\",\n \"expected #{this} to be at most #{exp}\",\n n\n );\n }\n}\n__name(assertAbove, \"assertAbove\");\nAssertion.addMethod(\"above\", assertAbove);\nAssertion.addMethod(\"gt\", assertAbove);\nAssertion.addMethod(\"greaterThan\", assertAbove);\nfunction assertLeast(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to least must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to least must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= n,\n \"expected #{this} to have a \" + descriptor + \" at least #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj >= n,\n \"expected #{this} to be at least #{exp}\",\n \"expected #{this} to be below #{exp}\",\n n\n );\n }\n}\n__name(assertLeast, \"assertLeast\");\nAssertion.addMethod(\"least\", assertLeast);\nAssertion.addMethod(\"gte\", assertLeast);\nAssertion.addMethod(\"greaterThanOrEqual\", assertLeast);\nfunction assertBelow(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to below must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to below must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount < n,\n \"expected #{this} to have a \" + descriptor + \" below #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj < n,\n \"expected #{this} to be below #{exp}\",\n \"expected #{this} to be at least #{exp}\",\n n\n );\n }\n}\n__name(assertBelow, \"assertBelow\");\nAssertion.addMethod(\"below\", assertBelow);\nAssertion.addMethod(\"lt\", assertBelow);\nAssertion.addMethod(\"lessThan\", assertBelow);\nfunction assertMost(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to most must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to most must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount <= n,\n \"expected #{this} to have a \" + descriptor + \" at most #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj <= n,\n \"expected #{this} to be at most #{exp}\",\n \"expected #{this} to be above #{exp}\",\n n\n );\n }\n}\n__name(assertMost, \"assertMost\");\nAssertion.addMethod(\"most\", assertMost);\nAssertion.addMethod(\"lte\", assertMost);\nAssertion.addMethod(\"lessThanOrEqual\", assertMost);\nAssertion.addMethod(\"within\", function(start, finish, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), startType = type(start).toLowerCase(), finishType = type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === \"date\" && finishType === \"date\" ? start.toISOString() + \"..\" + finish.toISOString() : start + \"..\" + finish;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && (startType !== \"date\" || finishType !== \"date\")) {\n errorMessage = msgPrefix + \"the arguments to within must be dates\";\n } else if ((!isNumeric(start) || !isNumeric(finish)) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the arguments to within must be numbers\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= start && itemsCount <= finish,\n \"expected #{this} to have a \" + descriptor + \" within \" + range,\n \"expected #{this} to not have a \" + descriptor + \" within \" + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish,\n \"expected #{this} to be within \" + range,\n \"expected #{this} to not be within \" + range\n );\n }\n});\nfunction assertInstanceOf(constructor, msg) {\n if (msg) flag2(this, \"message\", msg);\n let target = flag2(this, \"object\");\n let ssfi = flag2(this, \"ssfi\");\n let flagMsg = flag2(this, \"message\");\n let isInstanceOf;\n try {\n isInstanceOf = target instanceof constructor;\n } catch (err) {\n if (err instanceof TypeError) {\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n throw new AssertionError(\n flagMsg + \"The instanceof assertion needs a constructor but \" + type(constructor) + \" was given.\",\n void 0,\n ssfi\n );\n }\n throw err;\n }\n let name = getName(constructor);\n if (name == null) {\n name = \"an unnamed constructor\";\n }\n this.assert(\n isInstanceOf,\n \"expected #{this} to be an instance of \" + name,\n \"expected #{this} to not be an instance of \" + name\n );\n}\n__name(assertInstanceOf, \"assertInstanceOf\");\nAssertion.addMethod(\"instanceof\", assertInstanceOf);\nAssertion.addMethod(\"instanceOf\", assertInstanceOf);\nfunction assertProperty(name, val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let isNested = flag2(this, \"nested\"), isOwn = flag2(this, \"own\"), flagMsg = flag2(this, \"message\"), obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), nameType = typeof name;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n if (isNested) {\n if (nameType !== \"string\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string when using nested syntax\",\n void 0,\n ssfi\n );\n }\n } else {\n if (nameType !== \"string\" && nameType !== \"number\" && nameType !== \"symbol\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string, number, or symbol\",\n void 0,\n ssfi\n );\n }\n }\n if (isNested && isOwn) {\n throw new AssertionError(\n flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n void 0,\n ssfi\n );\n }\n if (obj === null || obj === void 0) {\n throw new AssertionError(\n flagMsg + \"Target cannot be null or undefined.\",\n void 0,\n ssfi\n );\n }\n let isDeep = flag2(this, \"deep\"), negate = flag2(this, \"negate\"), pathInfo = isNested ? getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n let descriptor = \"\";\n if (isDeep) descriptor += \"deep \";\n if (isOwn) descriptor += \"own \";\n if (isNested) descriptor += \"nested \";\n descriptor += \"property \";\n let hasProperty2;\n if (isOwn) hasProperty2 = Object.prototype.hasOwnProperty.call(obj, name);\n else if (isNested) hasProperty2 = pathInfo.exists;\n else hasProperty2 = hasProperty(obj, name);\n if (!negate || arguments.length === 1) {\n this.assert(\n hasProperty2,\n \"expected #{this} to have \" + descriptor + inspect2(name),\n \"expected #{this} to not have \" + descriptor + inspect2(name)\n );\n }\n if (arguments.length > 1) {\n this.assert(\n hasProperty2 && isEql(val, value),\n \"expected #{this} to have \" + descriptor + inspect2(name) + \" of #{exp}, but got #{act}\",\n \"expected #{this} to not have \" + descriptor + inspect2(name) + \" of #{act}\",\n val,\n value\n );\n }\n flag2(this, \"object\", value);\n}\n__name(assertProperty, \"assertProperty\");\nAssertion.addMethod(\"property\", assertProperty);\nfunction assertOwnProperty(_name, _value, _msg) {\n flag2(this, \"own\", true);\n assertProperty.apply(this, arguments);\n}\n__name(assertOwnProperty, \"assertOwnProperty\");\nAssertion.addMethod(\"ownProperty\", assertOwnProperty);\nAssertion.addMethod(\"haveOwnProperty\", assertOwnProperty);\nfunction assertOwnPropertyDescriptor(name, descriptor, msg) {\n if (typeof descriptor === \"string\") {\n msg = descriptor;\n descriptor = null;\n }\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n let actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n let eql = flag2(this, \"eql\");\n if (actualDescriptor && descriptor) {\n this.assert(\n eql(descriptor, actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to match \" + inspect2(descriptor) + \", got \" + inspect2(actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to not match \" + inspect2(descriptor),\n descriptor,\n actualDescriptor,\n true\n );\n } else {\n this.assert(\n actualDescriptor,\n \"expected #{this} to have an own property descriptor for \" + inspect2(name),\n \"expected #{this} to not have an own property descriptor for \" + inspect2(name)\n );\n }\n flag2(this, \"object\", actualDescriptor);\n}\n__name(assertOwnPropertyDescriptor, \"assertOwnPropertyDescriptor\");\nAssertion.addMethod(\"ownPropertyDescriptor\", assertOwnPropertyDescriptor);\nAssertion.addMethod(\"haveOwnPropertyDescriptor\", assertOwnPropertyDescriptor);\nfunction assertLengthChain() {\n flag2(this, \"doLength\", true);\n}\n__name(assertLengthChain, \"assertLengthChain\");\nfunction assertLength(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), descriptor = \"length\", itemsCount;\n switch (objType) {\n case \"map\":\n case \"set\":\n descriptor = \"size\";\n itemsCount = obj.size;\n break;\n default:\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount == n,\n \"expected #{this} to have a \" + descriptor + \" of #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" of #{act}\",\n n,\n itemsCount\n );\n}\n__name(assertLength, \"assertLength\");\nAssertion.addChainableMethod(\"length\", assertLength, assertLengthChain);\nAssertion.addChainableMethod(\"lengthOf\", assertLength, assertLengthChain);\nfunction assertMatch(re, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n this.assert(\n re.exec(obj),\n \"expected #{this} to match \" + re,\n \"expected #{this} not to match \" + re\n );\n}\n__name(assertMatch, \"assertMatch\");\nAssertion.addMethod(\"match\", assertMatch);\nAssertion.addMethod(\"matches\", assertMatch);\nAssertion.addMethod(\"string\", function(str, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"string\");\n this.assert(\n ~obj.indexOf(str),\n \"expected #{this} to contain \" + inspect2(str),\n \"expected #{this} to not contain \" + inspect2(str)\n );\n});\nfunction assertKeys(keys) {\n let obj = flag2(this, \"object\"), objType = type(obj), keysType = type(keys), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), str, deepStr = \"\", actual, ok = true, flagMsg = flag2(this, \"message\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n let mixedArgsMsg = flagMsg + \"when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments\";\n if (objType === \"Map\" || objType === \"Set\") {\n deepStr = isDeep ? \"deeply \" : \"\";\n actual = [];\n obj.forEach(function(val, key) {\n actual.push(key);\n });\n if (keysType !== \"Array\") {\n keys = Array.prototype.slice.call(arguments);\n }\n } else {\n actual = getOwnEnumerableProperties(obj);\n switch (keysType) {\n case \"Array\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n break;\n case \"Object\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n keys = keys.map(function(val) {\n return typeof val === \"symbol\" ? val : String(val);\n });\n }\n if (!keys.length) {\n throw new AssertionError(flagMsg + \"keys required\", void 0, ssfi);\n }\n let len = keys.length, any = flag2(this, \"any\"), all = flag2(this, \"all\"), expected = keys, isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n if (!any && !all) {\n all = true;\n }\n if (any) {\n ok = expected.some(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n }\n if (all) {\n ok = expected.every(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n if (!flag2(this, \"contains\")) {\n ok = ok && keys.length == actual.length;\n }\n }\n if (len > 1) {\n keys = keys.map(function(key) {\n return inspect2(key);\n });\n let last = keys.pop();\n if (all) {\n str = keys.join(\", \") + \", and \" + last;\n }\n if (any) {\n str = keys.join(\", \") + \", or \" + last;\n }\n } else {\n str = inspect2(keys[0]);\n }\n str = (len > 1 ? \"keys \" : \"key \") + str;\n str = (flag2(this, \"contains\") ? \"contain \" : \"have \") + str;\n this.assert(\n ok,\n \"expected #{this} to \" + deepStr + str,\n \"expected #{this} to not \" + deepStr + str,\n expected.slice(0).sort(compareByInspect),\n actual.sort(compareByInspect),\n true\n );\n}\n__name(assertKeys, \"assertKeys\");\nAssertion.addMethod(\"keys\", assertKeys);\nAssertion.addMethod(\"key\", assertKeys);\nfunction assertThrows(errorLike, errMsgMatcher, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\") || false;\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"function\");\n if (isRegExp2(errorLike) || typeof errorLike === \"string\") {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n let caughtErr;\n let errorWasThrown = false;\n try {\n obj();\n } catch (err) {\n errorWasThrown = true;\n caughtErr = err;\n }\n let everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0;\n let everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n let errorLikeFail = false;\n let errMsgMatcherFail = false;\n if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n let errorLikeString = \"an error\";\n if (errorLike instanceof Error) {\n errorLikeString = \"#{exp}\";\n } else if (errorLike) {\n errorLikeString = check_error_exports.getConstructorName(errorLike);\n }\n let actual = caughtErr;\n if (caughtErr instanceof Error) {\n actual = caughtErr.toString();\n } else if (typeof caughtErr === \"string\") {\n actual = caughtErr;\n } else if (caughtErr && (typeof caughtErr === \"object\" || typeof caughtErr === \"function\")) {\n try {\n actual = check_error_exports.getConstructorName(caughtErr);\n } catch (_err) {\n }\n }\n this.assert(\n errorWasThrown,\n \"expected #{this} to throw \" + errorLikeString,\n \"expected #{this} to not throw an error but #{act} was thrown\",\n errorLike && errorLike.toString(),\n actual\n );\n }\n if (errorLike && caughtErr) {\n if (errorLike instanceof Error) {\n let isCompatibleInstance = check_error_exports.compatibleInstance(\n caughtErr,\n errorLike\n );\n if (isCompatibleInstance === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr && !negate ? \" but #{act} was thrown\" : \"\"),\n errorLike.toString(),\n caughtErr.toString()\n );\n }\n }\n }\n let isCompatibleConstructor = check_error_exports.compatibleConstructor(\n caughtErr,\n errorLike\n );\n if (isCompatibleConstructor === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n }\n }\n if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) {\n let placeholder = \"including\";\n if (isRegExp2(errMsgMatcher)) {\n placeholder = \"matching\";\n }\n let isCompatibleMessage = check_error_exports.compatibleMessage(\n caughtErr,\n errMsgMatcher\n );\n if (isCompatibleMessage === negate) {\n if (everyArgIsDefined && negate) {\n errMsgMatcherFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw error \" + placeholder + \" #{exp} but got #{act}\",\n \"expected #{this} to throw error not \" + placeholder + \" #{exp}\",\n errMsgMatcher,\n check_error_exports.getMessage(caughtErr)\n );\n }\n }\n }\n if (errorLikeFail && errMsgMatcherFail) {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n flag2(this, \"object\", caughtErr);\n}\n__name(assertThrows, \"assertThrows\");\nAssertion.addMethod(\"throw\", assertThrows);\nAssertion.addMethod(\"throws\", assertThrows);\nAssertion.addMethod(\"Throw\", assertThrows);\nfunction respondTo(method, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), itself = flag2(this, \"itself\"), context = \"function\" === typeof obj && !itself ? obj.prototype[method] : obj[method];\n this.assert(\n \"function\" === typeof context,\n \"expected #{this} to respond to \" + inspect2(method),\n \"expected #{this} to not respond to \" + inspect2(method)\n );\n}\n__name(respondTo, \"respondTo\");\nAssertion.addMethod(\"respondTo\", respondTo);\nAssertion.addMethod(\"respondsTo\", respondTo);\nAssertion.addProperty(\"itself\", function() {\n flag2(this, \"itself\", true);\n});\nfunction satisfy(matcher, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n let result = matcher(obj);\n this.assert(\n result,\n \"expected #{this} to satisfy \" + objDisplay(matcher),\n \"expected #{this} to not satisfy\" + objDisplay(matcher),\n flag2(this, \"negate\") ? false : true,\n result\n );\n}\n__name(satisfy, \"satisfy\");\nAssertion.addMethod(\"satisfy\", satisfy);\nAssertion.addMethod(\"satisfies\", satisfy);\nfunction closeTo(expected, delta, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.numeric;\n let message = \"A `delta` value is required for `closeTo`\";\n if (delta == void 0) {\n throw new AssertionError(\n flagMsg ? `${flagMsg}: ${message}` : message,\n void 0,\n ssfi\n );\n }\n new Assertion(delta, flagMsg, ssfi, true).is.numeric;\n message = \"A `expected` value is required for `closeTo`\";\n if (expected == void 0) {\n throw new AssertionError(\n flagMsg ? `${flagMsg}: ${message}` : message,\n void 0,\n ssfi\n );\n }\n new Assertion(expected, flagMsg, ssfi, true).is.numeric;\n const abs = /* @__PURE__ */ __name((x) => x < 0 ? -x : x, \"abs\");\n const strip = /* @__PURE__ */ __name((number) => parseFloat(parseFloat(number).toPrecision(12)), \"strip\");\n this.assert(\n strip(abs(obj - expected)) <= delta,\n \"expected #{this} to be close to \" + expected + \" +/- \" + delta,\n \"expected #{this} not to be close to \" + expected + \" +/- \" + delta\n );\n}\n__name(closeTo, \"closeTo\");\nAssertion.addMethod(\"closeTo\", closeTo);\nAssertion.addMethod(\"approximately\", closeTo);\nfunction isSubsetOf(_subset, _superset, cmp, contains, ordered) {\n let superset = Array.from(_superset);\n let subset = Array.from(_subset);\n if (!contains) {\n if (subset.length !== superset.length) return false;\n superset = superset.slice();\n }\n return subset.every(function(elem, idx) {\n if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n if (!cmp) {\n let matchIdx = superset.indexOf(elem);\n if (matchIdx === -1) return false;\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n }\n return superset.some(function(elem2, matchIdx) {\n if (!cmp(elem, elem2)) return false;\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n });\n });\n}\n__name(isSubsetOf, \"isSubsetOf\");\nAssertion.addMethod(\"members\", function(subset, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).to.be.iterable;\n new Assertion(subset, flagMsg, ssfi, true).to.be.iterable;\n let contains = flag2(this, \"contains\");\n let ordered = flag2(this, \"ordered\");\n let subject, failMsg, failNegateMsg;\n if (contains) {\n subject = ordered ? \"an ordered superset\" : \"a superset\";\n failMsg = \"expected #{this} to be \" + subject + \" of #{exp}\";\n failNegateMsg = \"expected #{this} to not be \" + subject + \" of #{exp}\";\n } else {\n subject = ordered ? \"ordered members\" : \"members\";\n failMsg = \"expected #{this} to have the same \" + subject + \" as #{exp}\";\n failNegateMsg = \"expected #{this} to not have the same \" + subject + \" as #{exp}\";\n }\n let cmp = flag2(this, \"deep\") ? flag2(this, \"eql\") : void 0;\n this.assert(\n isSubsetOf(subset, obj, cmp, contains, ordered),\n failMsg,\n failNegateMsg,\n subset,\n obj,\n true\n );\n});\nAssertion.addProperty(\"iterable\", function(msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n this.assert(\n obj != void 0 && obj[Symbol.iterator],\n \"expected #{this} to be an iterable\",\n \"expected #{this} to not be an iterable\",\n obj\n );\n});\nfunction oneOf(list, msg) {\n if (msg) flag2(this, \"message\", msg);\n let expected = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), contains = flag2(this, \"contains\"), isDeep = flag2(this, \"deep\"), eql = flag2(this, \"eql\");\n new Assertion(list, flagMsg, ssfi, true).to.be.an(\"array\");\n if (contains) {\n this.assert(\n list.some(function(possibility) {\n return expected.indexOf(possibility) > -1;\n }),\n \"expected #{this} to contain one of #{exp}\",\n \"expected #{this} to not contain one of #{exp}\",\n list,\n expected\n );\n } else {\n if (isDeep) {\n this.assert(\n list.some(function(possibility) {\n return eql(expected, possibility);\n }),\n \"expected #{this} to deeply equal one of #{exp}\",\n \"expected #{this} to deeply equal one of #{exp}\",\n list,\n expected\n );\n } else {\n this.assert(\n list.indexOf(expected) > -1,\n \"expected #{this} to be one of #{exp}\",\n \"expected #{this} to not be one of #{exp}\",\n list,\n expected\n );\n }\n }\n}\n__name(oneOf, \"oneOf\");\nAssertion.addMethod(\"oneOf\", oneOf);\nfunction assertChanges(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"change\");\n flag2(this, \"realDelta\", final !== initial);\n this.assert(\n initial !== final,\n \"expected \" + msgObj + \" to change\",\n \"expected \" + msgObj + \" to not change\"\n );\n}\n__name(assertChanges, \"assertChanges\");\nAssertion.addMethod(\"change\", assertChanges);\nAssertion.addMethod(\"changes\", assertChanges);\nfunction assertIncreases(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"increase\");\n flag2(this, \"realDelta\", final - initial);\n this.assert(\n final - initial > 0,\n \"expected \" + msgObj + \" to increase\",\n \"expected \" + msgObj + \" to not increase\"\n );\n}\n__name(assertIncreases, \"assertIncreases\");\nAssertion.addMethod(\"increase\", assertIncreases);\nAssertion.addMethod(\"increases\", assertIncreases);\nfunction assertDecreases(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"decrease\");\n flag2(this, \"realDelta\", initial - final);\n this.assert(\n final - initial < 0,\n \"expected \" + msgObj + \" to decrease\",\n \"expected \" + msgObj + \" to not decrease\"\n );\n}\n__name(assertDecreases, \"assertDecreases\");\nAssertion.addMethod(\"decrease\", assertDecreases);\nAssertion.addMethod(\"decreases\", assertDecreases);\nfunction assertDelta(delta, msg) {\n if (msg) flag2(this, \"message\", msg);\n let msgObj = flag2(this, \"deltaMsgObj\");\n let initial = flag2(this, \"initialDeltaValue\");\n let final = flag2(this, \"finalDeltaValue\");\n let behavior = flag2(this, \"deltaBehavior\");\n let realDelta = flag2(this, \"realDelta\");\n let expression;\n if (behavior === \"change\") {\n expression = Math.abs(final - initial) === Math.abs(delta);\n } else {\n expression = realDelta === Math.abs(delta);\n }\n this.assert(\n expression,\n \"expected \" + msgObj + \" to \" + behavior + \" by \" + delta,\n \"expected \" + msgObj + \" to not \" + behavior + \" by \" + delta\n );\n}\n__name(assertDelta, \"assertDelta\");\nAssertion.addMethod(\"by\", assertDelta);\nAssertion.addProperty(\"extensible\", function() {\n let obj = flag2(this, \"object\");\n let isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n this.assert(\n isExtensible,\n \"expected #{this} to be extensible\",\n \"expected #{this} to not be extensible\"\n );\n});\nAssertion.addProperty(\"sealed\", function() {\n let obj = flag2(this, \"object\");\n let isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n this.assert(\n isSealed,\n \"expected #{this} to be sealed\",\n \"expected #{this} to not be sealed\"\n );\n});\nAssertion.addProperty(\"frozen\", function() {\n let obj = flag2(this, \"object\");\n let isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true;\n this.assert(\n isFrozen,\n \"expected #{this} to be frozen\",\n \"expected #{this} to not be frozen\"\n );\n});\nAssertion.addProperty(\"finite\", function(_msg) {\n let obj = flag2(this, \"object\");\n this.assert(\n typeof obj === \"number\" && isFinite(obj),\n \"expected #{this} to be a finite number\",\n \"expected #{this} to not be a finite number\"\n );\n});\nfunction compareSubset(expected, actual) {\n if (expected === actual) {\n return true;\n }\n if (typeof actual !== typeof expected) {\n return false;\n }\n if (typeof expected !== \"object\" || expected === null) {\n return expected === actual;\n }\n if (!actual) {\n return false;\n }\n if (Array.isArray(expected)) {\n if (!Array.isArray(actual)) {\n return false;\n }\n return expected.every(function(exp) {\n return actual.some(function(act) {\n return compareSubset(exp, act);\n });\n });\n }\n if (expected instanceof Date) {\n if (actual instanceof Date) {\n return expected.getTime() === actual.getTime();\n } else {\n return false;\n }\n }\n return Object.keys(expected).every(function(key) {\n let expectedValue = expected[key];\n let actualValue = actual[key];\n if (typeof expectedValue === \"object\" && expectedValue !== null && actualValue !== null) {\n return compareSubset(expectedValue, actualValue);\n }\n if (typeof expectedValue === \"function\") {\n return expectedValue(actualValue);\n }\n return actualValue === expectedValue;\n });\n}\n__name(compareSubset, \"compareSubset\");\nAssertion.addMethod(\"containSubset\", function(expected) {\n const actual = flag(this, \"object\");\n const showDiff = config.showDiff;\n this.assert(\n compareSubset(expected, actual),\n \"expected #{act} to contain subset #{exp}\",\n \"expected #{act} to not contain subset #{exp}\",\n expected,\n actual,\n showDiff\n );\n});\n\n// lib/chai/interface/expect.js\nfunction expect(val, message) {\n return new Assertion(val, message);\n}\n__name(expect, \"expect\");\nexpect.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"expect.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n expect.fail\n );\n};\n\n// lib/chai/interface/should.js\nvar should_exports = {};\n__export(should_exports, {\n Should: () => Should,\n should: () => should\n});\nfunction loadShould() {\n function shouldGetter() {\n if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === \"function\" && this instanceof Symbol || typeof BigInt === \"function\" && this instanceof BigInt) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n __name(shouldGetter, \"shouldGetter\");\n function shouldSetter(value) {\n Object.defineProperty(this, \"should\", {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n __name(shouldSetter, \"shouldSetter\");\n Object.defineProperty(Object.prototype, \"should\", {\n set: shouldSetter,\n get: shouldGetter,\n configurable: true\n });\n let should2 = {};\n should2.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"should.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n should2.fail\n );\n };\n should2.equal = function(actual, expected, message) {\n new Assertion(actual, message).to.equal(expected);\n };\n should2.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n should2.exist = function(val, msg) {\n new Assertion(val, msg).to.exist;\n };\n should2.not = {};\n should2.not.equal = function(actual, expected, msg) {\n new Assertion(actual, msg).to.not.equal(expected);\n };\n should2.not.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n should2.not.exist = function(val, msg) {\n new Assertion(val, msg).to.not.exist;\n };\n should2[\"throw\"] = should2[\"Throw\"];\n should2.not[\"throw\"] = should2.not[\"Throw\"];\n return should2;\n}\n__name(loadShould, \"loadShould\");\nvar should = loadShould;\nvar Should = loadShould;\n\n// lib/chai/interface/assert.js\nfunction assert(express, errmsg) {\n let test2 = new Assertion(null, null, assert, true);\n test2.assert(express, errmsg, \"[ negation message unavailable ]\");\n}\n__name(assert, \"assert\");\nassert.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"assert.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n assert.fail\n );\n};\nassert.isOk = function(val, msg) {\n new Assertion(val, msg, assert.isOk, true).is.ok;\n};\nassert.isNotOk = function(val, msg) {\n new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n};\nassert.equal = function(act, exp, msg) {\n let test2 = new Assertion(act, msg, assert.equal, true);\n test2.assert(\n exp == flag(test2, \"object\"),\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.notEqual = function(act, exp, msg) {\n let test2 = new Assertion(act, msg, assert.notEqual, true);\n test2.assert(\n exp != flag(test2, \"object\"),\n \"expected #{this} to not equal #{exp}\",\n \"expected #{this} to equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.strictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n};\nassert.notStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n};\nassert.deepEqual = assert.deepStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n};\nassert.notDeepEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n};\nassert.isAbove = function(val, abv, msg) {\n new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n};\nassert.isAtLeast = function(val, atlst, msg) {\n new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n};\nassert.isBelow = function(val, blw, msg) {\n new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n};\nassert.isAtMost = function(val, atmst, msg) {\n new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n};\nassert.isTrue = function(val, msg) {\n new Assertion(val, msg, assert.isTrue, true).is[\"true\"];\n};\nassert.isNotTrue = function(val, msg) {\n new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n};\nassert.isFalse = function(val, msg) {\n new Assertion(val, msg, assert.isFalse, true).is[\"false\"];\n};\nassert.isNotFalse = function(val, msg) {\n new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n};\nassert.isNull = function(val, msg) {\n new Assertion(val, msg, assert.isNull, true).to.equal(null);\n};\nassert.isNotNull = function(val, msg) {\n new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n};\nassert.isNaN = function(val, msg) {\n new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n};\nassert.isNotNaN = function(value, message) {\n new Assertion(value, message, assert.isNotNaN, true).not.to.be.NaN;\n};\nassert.exists = function(val, msg) {\n new Assertion(val, msg, assert.exists, true).to.exist;\n};\nassert.notExists = function(val, msg) {\n new Assertion(val, msg, assert.notExists, true).to.not.exist;\n};\nassert.isUndefined = function(val, msg) {\n new Assertion(val, msg, assert.isUndefined, true).to.equal(void 0);\n};\nassert.isDefined = function(val, msg) {\n new Assertion(val, msg, assert.isDefined, true).to.not.equal(void 0);\n};\nassert.isCallable = function(value, message) {\n new Assertion(value, message, assert.isCallable, true).is.callable;\n};\nassert.isNotCallable = function(value, message) {\n new Assertion(value, message, assert.isNotCallable, true).is.not.callable;\n};\nassert.isObject = function(val, msg) {\n new Assertion(val, msg, assert.isObject, true).to.be.a(\"object\");\n};\nassert.isNotObject = function(val, msg) {\n new Assertion(val, msg, assert.isNotObject, true).to.not.be.a(\"object\");\n};\nassert.isArray = function(val, msg) {\n new Assertion(val, msg, assert.isArray, true).to.be.an(\"array\");\n};\nassert.isNotArray = function(val, msg) {\n new Assertion(val, msg, assert.isNotArray, true).to.not.be.an(\"array\");\n};\nassert.isString = function(val, msg) {\n new Assertion(val, msg, assert.isString, true).to.be.a(\"string\");\n};\nassert.isNotString = function(val, msg) {\n new Assertion(val, msg, assert.isNotString, true).to.not.be.a(\"string\");\n};\nassert.isNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNumber, true).to.be.a(\"number\");\n};\nassert.isNotNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a(\"number\");\n};\nassert.isNumeric = function(val, msg) {\n new Assertion(val, msg, assert.isNumeric, true).is.numeric;\n};\nassert.isNotNumeric = function(val, msg) {\n new Assertion(val, msg, assert.isNotNumeric, true).is.not.numeric;\n};\nassert.isFinite = function(val, msg) {\n new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n};\nassert.isBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isBoolean, true).to.be.a(\"boolean\");\n};\nassert.isNotBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a(\"boolean\");\n};\nassert.typeOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.typeOf, true).to.be.a(type3);\n};\nassert.notTypeOf = function(value, type3, message) {\n new Assertion(value, message, assert.notTypeOf, true).to.not.be.a(type3);\n};\nassert.instanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type3);\n};\nassert.notInstanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.notInstanceOf, true).to.not.be.instanceOf(\n type3\n );\n};\nassert.include = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.include, true).include(inc);\n};\nassert.notInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n};\nassert.deepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n};\nassert.notDeepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n};\nassert.nestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n};\nassert.notNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notNestedInclude, true).not.nested.include(\n inc\n );\n};\nassert.deepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepNestedInclude, true).deep.nested.include(\n inc\n );\n};\nassert.notDeepNestedInclude = function(exp, inc, msg) {\n new Assertion(\n exp,\n msg,\n assert.notDeepNestedInclude,\n true\n ).not.deep.nested.include(inc);\n};\nassert.ownInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n};\nassert.notOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n};\nassert.deepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepOwnInclude, true).deep.own.include(inc);\n};\nassert.notDeepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepOwnInclude, true).not.deep.own.include(\n inc\n );\n};\nassert.match = function(exp, re, msg) {\n new Assertion(exp, msg, assert.match, true).to.match(re);\n};\nassert.notMatch = function(exp, re, msg) {\n new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n};\nassert.property = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n};\nassert.notProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notProperty, true).to.not.have.property(prop);\n};\nassert.propertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.propertyVal, true).to.have.property(prop, val);\n};\nassert.notPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notPropertyVal, true).to.not.have.property(\n prop,\n val\n );\n};\nassert.deepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepPropertyVal, true).to.have.deep.property(\n prop,\n val\n );\n};\nassert.notDeepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepPropertyVal,\n true\n ).to.not.have.deep.property(prop, val);\n};\nassert.ownProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.ownProperty, true).to.have.own.property(prop);\n};\nassert.notOwnProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notOwnProperty, true).to.not.have.own.property(\n prop\n );\n};\nassert.ownPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.ownPropertyVal, true).to.have.own.property(\n prop,\n value\n );\n};\nassert.notOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.notOwnPropertyVal,\n true\n ).to.not.have.own.property(prop, value);\n};\nassert.deepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.deepOwnPropertyVal,\n true\n ).to.have.deep.own.property(prop, value);\n};\nassert.notDeepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepOwnPropertyVal,\n true\n ).to.not.have.deep.own.property(prop, value);\n};\nassert.nestedProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.nestedProperty, true).to.have.nested.property(\n prop\n );\n};\nassert.notNestedProperty = function(obj, prop, msg) {\n new Assertion(\n obj,\n msg,\n assert.notNestedProperty,\n true\n ).to.not.have.nested.property(prop);\n};\nassert.nestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.nestedPropertyVal,\n true\n ).to.have.nested.property(prop, val);\n};\nassert.notNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notNestedPropertyVal,\n true\n ).to.not.have.nested.property(prop, val);\n};\nassert.deepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.deepNestedPropertyVal,\n true\n ).to.have.deep.nested.property(prop, val);\n};\nassert.notDeepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepNestedPropertyVal,\n true\n ).to.not.have.deep.nested.property(prop, val);\n};\nassert.lengthOf = function(exp, len, msg) {\n new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n};\nassert.hasAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n};\nassert.hasAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n};\nassert.containsAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllKeys, true).to.contain.all.keys(\n keys\n );\n};\nassert.doesNotHaveAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true).to.not.have.any.keys(\n keys\n );\n};\nassert.doesNotHaveAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllKeys, true).to.not.have.all.keys(\n keys\n );\n};\nassert.hasAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyDeepKeys, true).to.have.any.deep.keys(\n keys\n );\n};\nassert.hasAllDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllDeepKeys, true).to.have.all.deep.keys(\n keys\n );\n};\nassert.containsAllDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.containsAllDeepKeys,\n true\n ).to.contain.all.deep.keys(keys);\n};\nassert.doesNotHaveAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.doesNotHaveAnyDeepKeys,\n true\n ).to.not.have.any.deep.keys(keys);\n};\nassert.doesNotHaveAllDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.doesNotHaveAllDeepKeys,\n true\n ).to.not.have.all.deep.keys(keys);\n};\nassert.throws = function(fn, errorLike, errMsgMatcher, msg) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n let assertErr = new Assertion(fn, msg, assert.throws, true).to.throw(\n errorLike,\n errMsgMatcher\n );\n return flag(assertErr, \"object\");\n};\nassert.doesNotThrow = function(fn, errorLike, errMsgMatcher, message) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n new Assertion(fn, message, assert.doesNotThrow, true).to.not.throw(\n errorLike,\n errMsgMatcher\n );\n};\nassert.operator = function(val, operator, val2, msg) {\n let ok;\n switch (operator) {\n case \"==\":\n ok = val == val2;\n break;\n case \"===\":\n ok = val === val2;\n break;\n case \">\":\n ok = val > val2;\n break;\n case \">=\":\n ok = val >= val2;\n break;\n case \"<\":\n ok = val < val2;\n break;\n case \"<=\":\n ok = val <= val2;\n break;\n case \"!=\":\n ok = val != val2;\n break;\n case \"!==\":\n ok = val !== val2;\n break;\n default:\n msg = msg ? msg + \": \" : msg;\n throw new AssertionError(\n msg + 'Invalid operator \"' + operator + '\"',\n void 0,\n assert.operator\n );\n }\n let test2 = new Assertion(ok, msg, assert.operator, true);\n test2.assert(\n true === flag(test2, \"object\"),\n \"expected \" + inspect2(val) + \" to be \" + operator + \" \" + inspect2(val2),\n \"expected \" + inspect2(val) + \" to not be \" + operator + \" \" + inspect2(val2)\n );\n};\nassert.closeTo = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n};\nassert.approximately = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.approximately, true).to.be.approximately(\n exp,\n delta\n );\n};\nassert.sameMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameMembers, true).to.have.same.members(set2);\n};\nassert.notSameMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameMembers,\n true\n ).to.not.have.same.members(set2);\n};\nassert.sameDeepMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameDeepMembers,\n true\n ).to.have.same.deep.members(set2);\n};\nassert.notSameDeepMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameDeepMembers,\n true\n ).to.not.have.same.deep.members(set2);\n};\nassert.sameOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameOrderedMembers,\n true\n ).to.have.same.ordered.members(set2);\n};\nassert.notSameOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameOrderedMembers,\n true\n ).to.not.have.same.ordered.members(set2);\n};\nassert.sameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameDeepOrderedMembers,\n true\n ).to.have.same.deep.ordered.members(set2);\n};\nassert.notSameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameDeepOrderedMembers,\n true\n ).to.not.have.same.deep.ordered.members(set2);\n};\nassert.includeMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeMembers, true).to.include.members(\n subset\n );\n};\nassert.notIncludeMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeMembers,\n true\n ).to.not.include.members(subset);\n};\nassert.includeDeepMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeDeepMembers,\n true\n ).to.include.deep.members(subset);\n};\nassert.notIncludeDeepMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeDeepMembers,\n true\n ).to.not.include.deep.members(subset);\n};\nassert.includeOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeOrderedMembers,\n true\n ).to.include.ordered.members(subset);\n};\nassert.notIncludeOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeOrderedMembers,\n true\n ).to.not.include.ordered.members(subset);\n};\nassert.includeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeDeepOrderedMembers,\n true\n ).to.include.deep.ordered.members(subset);\n};\nassert.notIncludeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeDeepOrderedMembers,\n true\n ).to.not.include.deep.ordered.members(subset);\n};\nassert.oneOf = function(inList, list, msg) {\n new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n};\nassert.isIterable = function(obj, msg) {\n if (obj == void 0 || !obj[Symbol.iterator]) {\n msg = msg ? `${msg} expected ${inspect2(obj)} to be an iterable` : `expected ${inspect2(obj)} to be an iterable`;\n throw new AssertionError(msg, void 0, assert.isIterable);\n }\n};\nassert.changes = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n};\nassert.changesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesBy, true).to.change(obj, prop).by(delta);\n};\nassert.doesNotChange = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotChange, true).to.not.change(\n obj,\n prop\n );\n};\nassert.changesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesButNotBy, true).to.change(obj, prop).but.not.by(delta);\n};\nassert.increases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.increases, true).to.increase(obj, prop);\n};\nassert.increasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesBy, true).to.increase(obj, prop).by(delta);\n};\nassert.doesNotIncrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotIncrease, true).to.not.increase(\n obj,\n prop\n );\n};\nassert.increasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta);\n};\nassert.decreases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.decreases, true).to.decrease(obj, prop);\n};\nassert.decreasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesBy, true).to.decrease(obj, prop).by(delta);\n};\nassert.doesNotDecrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecrease, true).to.not.decrease(\n obj,\n prop\n );\n};\nassert.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta);\n};\nassert.decreasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta);\n};\nassert.ifError = function(val) {\n if (val) {\n throw val;\n }\n};\nassert.isExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n};\nassert.isNotExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n};\nassert.isSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n};\nassert.isNotSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n};\nassert.isFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n};\nassert.isNotFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n};\nassert.isEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n};\nassert.isNotEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n};\nassert.containsSubset = function(val, exp, msg) {\n new Assertion(val, msg).to.containSubset(exp);\n};\nassert.doesNotContainSubset = function(val, exp, msg) {\n new Assertion(val, msg).to.not.containSubset(exp);\n};\nvar aliases = [\n [\"isOk\", \"ok\"],\n [\"isNotOk\", \"notOk\"],\n [\"throws\", \"throw\"],\n [\"throws\", \"Throw\"],\n [\"isExtensible\", \"extensible\"],\n [\"isNotExtensible\", \"notExtensible\"],\n [\"isSealed\", \"sealed\"],\n [\"isNotSealed\", \"notSealed\"],\n [\"isFrozen\", \"frozen\"],\n [\"isNotFrozen\", \"notFrozen\"],\n [\"isEmpty\", \"empty\"],\n [\"isNotEmpty\", \"notEmpty\"],\n [\"isCallable\", \"isFunction\"],\n [\"isNotCallable\", \"isNotFunction\"],\n [\"containsSubset\", \"containSubset\"]\n];\nfor (const [name, as] of aliases) {\n assert[as] = assert[name];\n}\n\n// lib/chai.js\nvar used = [];\nfunction use(fn) {\n const exports = {\n use,\n AssertionError,\n util: utils_exports,\n config,\n expect,\n assert,\n Assertion,\n ...should_exports\n };\n if (!~used.indexOf(fn)) {\n fn(exports, utils_exports);\n used.push(fn);\n }\n return exports;\n}\n__name(use, \"use\");\nexport {\n Assertion,\n AssertionError,\n Should,\n assert,\n config,\n expect,\n should,\n use,\n utils_exports as util\n};\n"], - "mappings": "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", - "names": ["_AssertionError", "_Assertion", "_PluginEvent", "_PluginAddChainableMethodEvent"] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js deleted file mode 100644 index 3782c0c..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js +++ /dev/null @@ -1,1309 +0,0 @@ -import "./chunk-5WRI5ZAA.js"; - -// node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs -var comma = ",".charCodeAt(0); -var semicolon = ";".charCodeAt(0); -var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -var intToChar = new Uint8Array(64); -var charToInt = new Uint8Array(128); -for (let i = 0; i < chars.length; i++) { - const c = chars.charCodeAt(i); - intToChar[i] = c; - charToInt[c] = i; -} -function encodeInteger(builder, num, relative) { - let delta = num - relative; - delta = delta < 0 ? -delta << 1 | 1 : delta << 1; - do { - let clamped = delta & 31; - delta >>>= 5; - if (delta > 0) clamped |= 32; - builder.write(intToChar[clamped]); - } while (delta > 0); - return num; -} -var bufLength = 1024 * 16; -var td = typeof TextDecoder !== "undefined" ? new TextDecoder() : typeof Buffer !== "undefined" ? { - decode(buf) { - const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); - return out.toString(); - } -} : { - decode(buf) { - let out = ""; - for (let i = 0; i < buf.length; i++) { - out += String.fromCharCode(buf[i]); - } - return out; - } -}; -var StringWriter = class { - constructor() { - this.pos = 0; - this.out = ""; - this.buffer = new Uint8Array(bufLength); - } - write(v) { - const { buffer } = this; - buffer[this.pos++] = v; - if (this.pos === bufLength) { - this.out += td.decode(buffer); - this.pos = 0; - } - } - flush() { - const { buffer, out, pos } = this; - return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; - } -}; -function encode(decoded) { - const writer = new StringWriter(); - let sourcesIndex = 0; - let sourceLine = 0; - let sourceColumn = 0; - let namesIndex = 0; - for (let i = 0; i < decoded.length; i++) { - const line = decoded[i]; - if (i > 0) writer.write(semicolon); - if (line.length === 0) continue; - let genColumn = 0; - for (let j = 0; j < line.length; j++) { - const segment = line[j]; - if (j > 0) writer.write(comma); - genColumn = encodeInteger(writer, segment[0], genColumn); - if (segment.length === 1) continue; - sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); - sourceLine = encodeInteger(writer, segment[2], sourceLine); - sourceColumn = encodeInteger(writer, segment[3], sourceColumn); - if (segment.length === 4) continue; - namesIndex = encodeInteger(writer, segment[4], namesIndex); - } - } - return writer.flush(); -} - -// node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs -var BitSet = class _BitSet { - constructor(arg) { - this.bits = arg instanceof _BitSet ? arg.bits.slice() : []; - } - add(n2) { - this.bits[n2 >> 5] |= 1 << (n2 & 31); - } - has(n2) { - return !!(this.bits[n2 >> 5] & 1 << (n2 & 31)); - } -}; -var Chunk = class _Chunk { - constructor(start, end, content) { - this.start = start; - this.end = end; - this.original = content; - this.intro = ""; - this.outro = ""; - this.content = content; - this.storeName = false; - this.edited = false; - { - this.previous = null; - this.next = null; - } - } - appendLeft(content) { - this.outro += content; - } - appendRight(content) { - this.intro = this.intro + content; - } - clone() { - const chunk = new _Chunk(this.start, this.end, this.original); - chunk.intro = this.intro; - chunk.outro = this.outro; - chunk.content = this.content; - chunk.storeName = this.storeName; - chunk.edited = this.edited; - return chunk; - } - contains(index) { - return this.start < index && index < this.end; - } - eachNext(fn) { - let chunk = this; - while (chunk) { - fn(chunk); - chunk = chunk.next; - } - } - eachPrevious(fn) { - let chunk = this; - while (chunk) { - fn(chunk); - chunk = chunk.previous; - } - } - edit(content, storeName, contentOnly) { - this.content = content; - if (!contentOnly) { - this.intro = ""; - this.outro = ""; - } - this.storeName = storeName; - this.edited = true; - return this; - } - prependLeft(content) { - this.outro = content + this.outro; - } - prependRight(content) { - this.intro = content + this.intro; - } - reset() { - this.intro = ""; - this.outro = ""; - if (this.edited) { - this.content = this.original; - this.storeName = false; - this.edited = false; - } - } - split(index) { - const sliceIndex = index - this.start; - const originalBefore = this.original.slice(0, sliceIndex); - const originalAfter = this.original.slice(sliceIndex); - this.original = originalBefore; - const newChunk = new _Chunk(index, this.end, originalAfter); - newChunk.outro = this.outro; - this.outro = ""; - this.end = index; - if (this.edited) { - newChunk.edit("", false); - this.content = ""; - } else { - this.content = originalBefore; - } - newChunk.next = this.next; - if (newChunk.next) newChunk.next.previous = newChunk; - newChunk.previous = this; - this.next = newChunk; - return newChunk; - } - toString() { - return this.intro + this.content + this.outro; - } - trimEnd(rx) { - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - const trimmed = this.content.replace(rx, ""); - if (trimmed.length) { - if (trimmed !== this.content) { - this.split(this.start + trimmed.length).edit("", void 0, true); - if (this.edited) { - this.edit(trimmed, this.storeName, true); - } - } - return true; - } else { - this.edit("", void 0, true); - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - } - } - trimStart(rx) { - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - const trimmed = this.content.replace(rx, ""); - if (trimmed.length) { - if (trimmed !== this.content) { - const newChunk = this.split(this.end - trimmed.length); - if (this.edited) { - newChunk.edit(trimmed, this.storeName, true); - } - this.edit("", void 0, true); - } - return true; - } else { - this.edit("", void 0, true); - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - } - } -}; -function getBtoa() { - if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") { - return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); - } else if (typeof Buffer === "function") { - return (str) => Buffer.from(str, "utf-8").toString("base64"); - } else { - return () => { - throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported."); - }; - } -} -var btoa = getBtoa(); -var SourceMap = class { - constructor(properties) { - this.version = 3; - this.file = properties.file; - this.sources = properties.sources; - this.sourcesContent = properties.sourcesContent; - this.names = properties.names; - this.mappings = encode(properties.mappings); - if (typeof properties.x_google_ignoreList !== "undefined") { - this.x_google_ignoreList = properties.x_google_ignoreList; - } - if (typeof properties.debugId !== "undefined") { - this.debugId = properties.debugId; - } - } - toString() { - return JSON.stringify(this); - } - toUrl() { - return "data:application/json;charset=utf-8;base64," + btoa(this.toString()); - } -}; -function guessIndent(code) { - const lines = code.split("\n"); - const tabbed = lines.filter((line) => /^\t+/.test(line)); - const spaced = lines.filter((line) => /^ {2,}/.test(line)); - if (tabbed.length === 0 && spaced.length === 0) { - return null; - } - if (tabbed.length >= spaced.length) { - return " "; - } - const min = spaced.reduce((previous, current) => { - const numSpaces = /^ +/.exec(current)[0].length; - return Math.min(numSpaces, previous); - }, Infinity); - return new Array(min + 1).join(" "); -} -function getRelativePath(from, to) { - const fromParts = from.split(/[/\\]/); - const toParts = to.split(/[/\\]/); - fromParts.pop(); - while (fromParts[0] === toParts[0]) { - fromParts.shift(); - toParts.shift(); - } - if (fromParts.length) { - let i = fromParts.length; - while (i--) fromParts[i] = ".."; - } - return fromParts.concat(toParts).join("/"); -} -var toString = Object.prototype.toString; -function isObject(thing) { - return toString.call(thing) === "[object Object]"; -} -function getLocator(source) { - const originalLines = source.split("\n"); - const lineOffsets = []; - for (let i = 0, pos = 0; i < originalLines.length; i++) { - lineOffsets.push(pos); - pos += originalLines[i].length + 1; - } - return function locate(index) { - let i = 0; - let j = lineOffsets.length; - while (i < j) { - const m = i + j >> 1; - if (index < lineOffsets[m]) { - j = m; - } else { - i = m + 1; - } - } - const line = i - 1; - const column = index - lineOffsets[line]; - return { line, column }; - }; -} -var wordRegex = /\w/; -var Mappings = class { - constructor(hires) { - this.hires = hires; - this.generatedCodeLine = 0; - this.generatedCodeColumn = 0; - this.raw = []; - this.rawSegments = this.raw[this.generatedCodeLine] = []; - this.pending = null; - } - addEdit(sourceIndex, content, loc, nameIndex) { - if (content.length) { - const contentLengthMinusOne = content.length - 1; - let contentLineEnd = content.indexOf("\n", 0); - let previousContentLineEnd = -1; - while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { - const segment2 = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (nameIndex >= 0) { - segment2.push(nameIndex); - } - this.rawSegments.push(segment2); - this.generatedCodeLine += 1; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - this.generatedCodeColumn = 0; - previousContentLineEnd = contentLineEnd; - contentLineEnd = content.indexOf("\n", contentLineEnd + 1); - } - const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (nameIndex >= 0) { - segment.push(nameIndex); - } - this.rawSegments.push(segment); - this.advance(content.slice(previousContentLineEnd + 1)); - } else if (this.pending) { - this.rawSegments.push(this.pending); - this.advance(content); - } - this.pending = null; - } - addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { - let originalCharIndex = chunk.start; - let first = true; - let charInHiresBoundary = false; - while (originalCharIndex < chunk.end) { - if (original[originalCharIndex] === "\n") { - loc.line += 1; - loc.column = 0; - this.generatedCodeLine += 1; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - this.generatedCodeColumn = 0; - first = true; - charInHiresBoundary = false; - } else { - if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { - const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; - if (this.hires === "boundary") { - if (wordRegex.test(original[originalCharIndex])) { - if (!charInHiresBoundary) { - this.rawSegments.push(segment); - charInHiresBoundary = true; - } - } else { - this.rawSegments.push(segment); - charInHiresBoundary = false; - } - } else { - this.rawSegments.push(segment); - } - } - loc.column += 1; - this.generatedCodeColumn += 1; - first = false; - } - originalCharIndex += 1; - } - this.pending = null; - } - advance(str) { - if (!str) return; - const lines = str.split("\n"); - if (lines.length > 1) { - for (let i = 0; i < lines.length - 1; i++) { - this.generatedCodeLine++; - this.raw[this.generatedCodeLine] = this.rawSegments = []; - } - this.generatedCodeColumn = 0; - } - this.generatedCodeColumn += lines[lines.length - 1].length; - } -}; -var n = "\n"; -var warned = { - insertLeft: false, - insertRight: false, - storeName: false -}; -var MagicString = class _MagicString { - constructor(string, options = {}) { - const chunk = new Chunk(0, string.length, string); - Object.defineProperties(this, { - original: { writable: true, value: string }, - outro: { writable: true, value: "" }, - intro: { writable: true, value: "" }, - firstChunk: { writable: true, value: chunk }, - lastChunk: { writable: true, value: chunk }, - lastSearchedChunk: { writable: true, value: chunk }, - byStart: { writable: true, value: {} }, - byEnd: { writable: true, value: {} }, - filename: { writable: true, value: options.filename }, - indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, - sourcemapLocations: { writable: true, value: new BitSet() }, - storedNames: { writable: true, value: {} }, - indentStr: { writable: true, value: void 0 }, - ignoreList: { writable: true, value: options.ignoreList }, - offset: { writable: true, value: options.offset || 0 } - }); - this.byStart[0] = chunk; - this.byEnd[string.length] = chunk; - } - addSourcemapLocation(char) { - this.sourcemapLocations.add(char); - } - append(content) { - if (typeof content !== "string") throw new TypeError("outro content must be a string"); - this.outro += content; - return this; - } - appendLeft(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byEnd[index]; - if (chunk) { - chunk.appendLeft(content); - } else { - this.intro += content; - } - return this; - } - appendRight(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byStart[index]; - if (chunk) { - chunk.appendRight(content); - } else { - this.outro += content; - } - return this; - } - clone() { - const cloned = new _MagicString(this.original, { filename: this.filename, offset: this.offset }); - let originalChunk = this.firstChunk; - let clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone(); - while (originalChunk) { - cloned.byStart[clonedChunk.start] = clonedChunk; - cloned.byEnd[clonedChunk.end] = clonedChunk; - const nextOriginalChunk = originalChunk.next; - const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); - if (nextClonedChunk) { - clonedChunk.next = nextClonedChunk; - nextClonedChunk.previous = clonedChunk; - clonedChunk = nextClonedChunk; - } - originalChunk = nextOriginalChunk; - } - cloned.lastChunk = clonedChunk; - if (this.indentExclusionRanges) { - cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); - } - cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); - cloned.intro = this.intro; - cloned.outro = this.outro; - return cloned; - } - generateDecodedMap(options) { - options = options || {}; - const sourceIndex = 0; - const names = Object.keys(this.storedNames); - const mappings = new Mappings(options.hires); - const locate = getLocator(this.original); - if (this.intro) { - mappings.advance(this.intro); - } - this.firstChunk.eachNext((chunk) => { - const loc = locate(chunk.start); - if (chunk.intro.length) mappings.advance(chunk.intro); - if (chunk.edited) { - mappings.addEdit( - sourceIndex, - chunk.content, - loc, - chunk.storeName ? names.indexOf(chunk.original) : -1 - ); - } else { - mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); - } - if (chunk.outro.length) mappings.advance(chunk.outro); - }); - if (this.outro) { - mappings.advance(this.outro); - } - return { - file: options.file ? options.file.split(/[/\\]/).pop() : void 0, - sources: [ - options.source ? getRelativePath(options.file || "", options.source) : options.file || "" - ], - sourcesContent: options.includeContent ? [this.original] : void 0, - names, - mappings: mappings.raw, - x_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0 - }; - } - generateMap(options) { - return new SourceMap(this.generateDecodedMap(options)); - } - _ensureindentStr() { - if (this.indentStr === void 0) { - this.indentStr = guessIndent(this.original); - } - } - _getRawIndentString() { - this._ensureindentStr(); - return this.indentStr; - } - getIndentString() { - this._ensureindentStr(); - return this.indentStr === null ? " " : this.indentStr; - } - indent(indentStr, options) { - const pattern = /^[^\r\n]/gm; - if (isObject(indentStr)) { - options = indentStr; - indentStr = void 0; - } - if (indentStr === void 0) { - this._ensureindentStr(); - indentStr = this.indentStr || " "; - } - if (indentStr === "") return this; - options = options || {}; - const isExcluded = {}; - if (options.exclude) { - const exclusions = typeof options.exclude[0] === "number" ? [options.exclude] : options.exclude; - exclusions.forEach((exclusion) => { - for (let i = exclusion[0]; i < exclusion[1]; i += 1) { - isExcluded[i] = true; - } - }); - } - let shouldIndentNextCharacter = options.indentStart !== false; - const replacer = (match) => { - if (shouldIndentNextCharacter) return `${indentStr}${match}`; - shouldIndentNextCharacter = true; - return match; - }; - this.intro = this.intro.replace(pattern, replacer); - let charIndex = 0; - let chunk = this.firstChunk; - while (chunk) { - const end = chunk.end; - if (chunk.edited) { - if (!isExcluded[charIndex]) { - chunk.content = chunk.content.replace(pattern, replacer); - if (chunk.content.length) { - shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === "\n"; - } - } - } else { - charIndex = chunk.start; - while (charIndex < end) { - if (!isExcluded[charIndex]) { - const char = this.original[charIndex]; - if (char === "\n") { - shouldIndentNextCharacter = true; - } else if (char !== "\r" && shouldIndentNextCharacter) { - shouldIndentNextCharacter = false; - if (charIndex === chunk.start) { - chunk.prependRight(indentStr); - } else { - this._splitChunk(chunk, charIndex); - chunk = chunk.next; - chunk.prependRight(indentStr); - } - } - } - charIndex += 1; - } - } - charIndex = chunk.end; - chunk = chunk.next; - } - this.outro = this.outro.replace(pattern, replacer); - return this; - } - insert() { - throw new Error( - "magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)" - ); - } - insertLeft(index, content) { - if (!warned.insertLeft) { - console.warn( - "magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead" - ); - warned.insertLeft = true; - } - return this.appendLeft(index, content); - } - insertRight(index, content) { - if (!warned.insertRight) { - console.warn( - "magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead" - ); - warned.insertRight = true; - } - return this.prependRight(index, content); - } - move(start, end, index) { - start = start + this.offset; - end = end + this.offset; - index = index + this.offset; - if (index >= start && index <= end) throw new Error("Cannot move a selection inside itself"); - this._split(start); - this._split(end); - this._split(index); - const first = this.byStart[start]; - const last = this.byEnd[end]; - const oldLeft = first.previous; - const oldRight = last.next; - const newRight = this.byStart[index]; - if (!newRight && last === this.lastChunk) return this; - const newLeft = newRight ? newRight.previous : this.lastChunk; - if (oldLeft) oldLeft.next = oldRight; - if (oldRight) oldRight.previous = oldLeft; - if (newLeft) newLeft.next = first; - if (newRight) newRight.previous = last; - if (!first.previous) this.firstChunk = last.next; - if (!last.next) { - this.lastChunk = first.previous; - this.lastChunk.next = null; - } - first.previous = newLeft; - last.next = newRight || null; - if (!newLeft) this.firstChunk = first; - if (!newRight) this.lastChunk = last; - return this; - } - overwrite(start, end, content, options) { - options = options || {}; - return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); - } - update(start, end, content, options) { - start = start + this.offset; - end = end + this.offset; - if (typeof content !== "string") throw new TypeError("replacement content must be a string"); - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (end > this.original.length) throw new Error("end is out of bounds"); - if (start === end) - throw new Error( - "Cannot overwrite a zero-length range – use appendLeft or prependRight instead" - ); - this._split(start); - this._split(end); - if (options === true) { - if (!warned.storeName) { - console.warn( - "The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string" - ); - warned.storeName = true; - } - options = { storeName: true }; - } - const storeName = options !== void 0 ? options.storeName : false; - const overwrite = options !== void 0 ? options.overwrite : false; - if (storeName) { - const original = this.original.slice(start, end); - Object.defineProperty(this.storedNames, original, { - writable: true, - value: true, - enumerable: true - }); - } - const first = this.byStart[start]; - const last = this.byEnd[end]; - if (first) { - let chunk = first; - while (chunk !== last) { - if (chunk.next !== this.byStart[chunk.end]) { - throw new Error("Cannot overwrite across a split point"); - } - chunk = chunk.next; - chunk.edit("", false); - } - first.edit(content, storeName, !overwrite); - } else { - const newChunk = new Chunk(start, end, "").edit(content, storeName); - last.next = newChunk; - newChunk.previous = last; - } - return this; - } - prepend(content) { - if (typeof content !== "string") throw new TypeError("outro content must be a string"); - this.intro = content + this.intro; - return this; - } - prependLeft(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byEnd[index]; - if (chunk) { - chunk.prependLeft(content); - } else { - this.intro = content + this.intro; - } - return this; - } - prependRight(index, content) { - index = index + this.offset; - if (typeof content !== "string") throw new TypeError("inserted content must be a string"); - this._split(index); - const chunk = this.byStart[index]; - if (chunk) { - chunk.prependRight(content); - } else { - this.outro = content + this.outro; - } - return this; - } - remove(start, end) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (start === end) return this; - if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); - if (start > end) throw new Error("end must be greater than start"); - this._split(start); - this._split(end); - let chunk = this.byStart[start]; - while (chunk) { - chunk.intro = ""; - chunk.outro = ""; - chunk.edit(""); - chunk = end > chunk.end ? this.byStart[chunk.end] : null; - } - return this; - } - reset(start, end) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - if (start === end) return this; - if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); - if (start > end) throw new Error("end must be greater than start"); - this._split(start); - this._split(end); - let chunk = this.byStart[start]; - while (chunk) { - chunk.reset(); - chunk = end > chunk.end ? this.byStart[chunk.end] : null; - } - return this; - } - lastChar() { - if (this.outro.length) return this.outro[this.outro.length - 1]; - let chunk = this.lastChunk; - do { - if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; - if (chunk.content.length) return chunk.content[chunk.content.length - 1]; - if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; - } while (chunk = chunk.previous); - if (this.intro.length) return this.intro[this.intro.length - 1]; - return ""; - } - lastLine() { - let lineIndex = this.outro.lastIndexOf(n); - if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); - let lineStr = this.outro; - let chunk = this.lastChunk; - do { - if (chunk.outro.length > 0) { - lineIndex = chunk.outro.lastIndexOf(n); - if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; - lineStr = chunk.outro + lineStr; - } - if (chunk.content.length > 0) { - lineIndex = chunk.content.lastIndexOf(n); - if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; - lineStr = chunk.content + lineStr; - } - if (chunk.intro.length > 0) { - lineIndex = chunk.intro.lastIndexOf(n); - if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; - lineStr = chunk.intro + lineStr; - } - } while (chunk = chunk.previous); - lineIndex = this.intro.lastIndexOf(n); - if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; - return this.intro + lineStr; - } - slice(start = 0, end = this.original.length - this.offset) { - start = start + this.offset; - end = end + this.offset; - if (this.original.length !== 0) { - while (start < 0) start += this.original.length; - while (end < 0) end += this.original.length; - } - let result = ""; - let chunk = this.firstChunk; - while (chunk && (chunk.start > start || chunk.end <= start)) { - if (chunk.start < end && chunk.end >= end) { - return result; - } - chunk = chunk.next; - } - if (chunk && chunk.edited && chunk.start !== start) - throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); - const startChunk = chunk; - while (chunk) { - if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { - result += chunk.intro; - } - const containsEnd = chunk.start < end && chunk.end >= end; - if (containsEnd && chunk.edited && chunk.end !== end) - throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); - const sliceStart = startChunk === chunk ? start - chunk.start : 0; - const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; - result += chunk.content.slice(sliceStart, sliceEnd); - if (chunk.outro && (!containsEnd || chunk.end === end)) { - result += chunk.outro; - } - if (containsEnd) { - break; - } - chunk = chunk.next; - } - return result; - } - // TODO deprecate this? not really very useful - snip(start, end) { - const clone = this.clone(); - clone.remove(0, start); - clone.remove(end, clone.original.length); - return clone; - } - _split(index) { - if (this.byStart[index] || this.byEnd[index]) return; - let chunk = this.lastSearchedChunk; - let previousChunk = chunk; - const searchForward = index > chunk.end; - while (chunk) { - if (chunk.contains(index)) return this._splitChunk(chunk, index); - chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; - if (chunk === previousChunk) return; - previousChunk = chunk; - } - } - _splitChunk(chunk, index) { - if (chunk.edited && chunk.content.length) { - const loc = getLocator(this.original)(index); - throw new Error( - `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")` - ); - } - const newChunk = chunk.split(index); - this.byEnd[index] = chunk; - this.byStart[index] = newChunk; - this.byEnd[newChunk.end] = newChunk; - if (chunk === this.lastChunk) this.lastChunk = newChunk; - this.lastSearchedChunk = chunk; - return true; - } - toString() { - let str = this.intro; - let chunk = this.firstChunk; - while (chunk) { - str += chunk.toString(); - chunk = chunk.next; - } - return str + this.outro; - } - isEmpty() { - let chunk = this.firstChunk; - do { - if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) - return false; - } while (chunk = chunk.next); - return true; - } - length() { - let chunk = this.firstChunk; - let length = 0; - do { - length += chunk.intro.length + chunk.content.length + chunk.outro.length; - } while (chunk = chunk.next); - return length; - } - trimLines() { - return this.trim("[\\r\\n]"); - } - trim(charType) { - return this.trimStart(charType).trimEnd(charType); - } - trimEndAborted(charType) { - const rx = new RegExp((charType || "\\s") + "+$"); - this.outro = this.outro.replace(rx, ""); - if (this.outro.length) return true; - let chunk = this.lastChunk; - do { - const end = chunk.end; - const aborted = chunk.trimEnd(rx); - if (chunk.end !== end) { - if (this.lastChunk === chunk) { - this.lastChunk = chunk.next; - } - this.byEnd[chunk.end] = chunk; - this.byStart[chunk.next.start] = chunk.next; - this.byEnd[chunk.next.end] = chunk.next; - } - if (aborted) return true; - chunk = chunk.previous; - } while (chunk); - return false; - } - trimEnd(charType) { - this.trimEndAborted(charType); - return this; - } - trimStartAborted(charType) { - const rx = new RegExp("^" + (charType || "\\s") + "+"); - this.intro = this.intro.replace(rx, ""); - if (this.intro.length) return true; - let chunk = this.firstChunk; - do { - const end = chunk.end; - const aborted = chunk.trimStart(rx); - if (chunk.end !== end) { - if (chunk === this.lastChunk) this.lastChunk = chunk.next; - this.byEnd[chunk.end] = chunk; - this.byStart[chunk.next.start] = chunk.next; - this.byEnd[chunk.next.end] = chunk.next; - } - if (aborted) return true; - chunk = chunk.next; - } while (chunk); - return false; - } - trimStart(charType) { - this.trimStartAborted(charType); - return this; - } - hasChanged() { - return this.original !== this.toString(); - } - _replaceRegexp(searchValue, replacement) { - function getReplacement(match, str) { - if (typeof replacement === "string") { - return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { - if (i === "$") return "$"; - if (i === "&") return match[0]; - const num = +i; - if (num < match.length) return match[+i]; - return `$${i}`; - }); - } else { - return replacement(...match, match.index, str, match.groups); - } - } - function matchAll(re, str) { - let match; - const matches = []; - while (match = re.exec(str)) { - matches.push(match); - } - return matches; - } - if (searchValue.global) { - const matches = matchAll(searchValue, this.original); - matches.forEach((match) => { - if (match.index != null) { - const replacement2 = getReplacement(match, this.original); - if (replacement2 !== match[0]) { - this.overwrite(match.index, match.index + match[0].length, replacement2); - } - } - }); - } else { - const match = this.original.match(searchValue); - if (match && match.index != null) { - const replacement2 = getReplacement(match, this.original); - if (replacement2 !== match[0]) { - this.overwrite(match.index, match.index + match[0].length, replacement2); - } - } - } - return this; - } - _replaceString(string, replacement) { - const { original } = this; - const index = original.indexOf(string); - if (index !== -1) { - if (typeof replacement === "function") { - replacement = replacement(string, index, original); - } - if (string !== replacement) { - this.overwrite(index, index + string.length, replacement); - } - } - return this; - } - replace(searchValue, replacement) { - if (typeof searchValue === "string") { - return this._replaceString(searchValue, replacement); - } - return this._replaceRegexp(searchValue, replacement); - } - _replaceAllString(string, replacement) { - const { original } = this; - const stringLength = string.length; - for (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) { - const previous = original.slice(index, index + stringLength); - let _replacement = replacement; - if (typeof replacement === "function") { - _replacement = replacement(previous, index, original); - } - if (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement); - } - return this; - } - replaceAll(searchValue, replacement) { - if (typeof searchValue === "string") { - return this._replaceAllString(searchValue, replacement); - } - if (!searchValue.global) { - throw new TypeError( - "MagicString.prototype.replaceAll called with a non-global RegExp argument" - ); - } - return this._replaceRegexp(searchValue, replacement); - } -}; -var hasOwnProp = Object.prototype.hasOwnProperty; -var Bundle = class _Bundle { - constructor(options = {}) { - this.intro = options.intro || ""; - this.separator = options.separator !== void 0 ? options.separator : "\n"; - this.sources = []; - this.uniqueSources = []; - this.uniqueSourceIndexByFilename = {}; - } - addSource(source) { - if (source instanceof MagicString) { - return this.addSource({ - content: source, - filename: source.filename, - separator: this.separator - }); - } - if (!isObject(source) || !source.content) { - throw new Error( - "bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`" - ); - } - ["filename", "ignoreList", "indentExclusionRanges", "separator"].forEach((option) => { - if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; - }); - if (source.separator === void 0) { - source.separator = this.separator; - } - if (source.filename) { - if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { - this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; - this.uniqueSources.push({ filename: source.filename, content: source.content.original }); - } else { - const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; - if (source.content.original !== uniqueSource.content) { - throw new Error(`Illegal source: same filename (${source.filename}), different contents`); - } - } - } - this.sources.push(source); - return this; - } - append(str, options) { - this.addSource({ - content: new MagicString(str), - separator: options && options.separator || "" - }); - return this; - } - clone() { - const bundle = new _Bundle({ - intro: this.intro, - separator: this.separator - }); - this.sources.forEach((source) => { - bundle.addSource({ - filename: source.filename, - content: source.content.clone(), - separator: source.separator - }); - }); - return bundle; - } - generateDecodedMap(options = {}) { - const names = []; - let x_google_ignoreList = void 0; - this.sources.forEach((source) => { - Object.keys(source.content.storedNames).forEach((name) => { - if (!~names.indexOf(name)) names.push(name); - }); - }); - const mappings = new Mappings(options.hires); - if (this.intro) { - mappings.advance(this.intro); - } - this.sources.forEach((source, i) => { - if (i > 0) { - mappings.advance(this.separator); - } - const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; - const magicString = source.content; - const locate = getLocator(magicString.original); - if (magicString.intro) { - mappings.advance(magicString.intro); - } - magicString.firstChunk.eachNext((chunk) => { - const loc = locate(chunk.start); - if (chunk.intro.length) mappings.advance(chunk.intro); - if (source.filename) { - if (chunk.edited) { - mappings.addEdit( - sourceIndex, - chunk.content, - loc, - chunk.storeName ? names.indexOf(chunk.original) : -1 - ); - } else { - mappings.addUneditedChunk( - sourceIndex, - chunk, - magicString.original, - loc, - magicString.sourcemapLocations - ); - } - } else { - mappings.advance(chunk.content); - } - if (chunk.outro.length) mappings.advance(chunk.outro); - }); - if (magicString.outro) { - mappings.advance(magicString.outro); - } - if (source.ignoreList && sourceIndex !== -1) { - if (x_google_ignoreList === void 0) { - x_google_ignoreList = []; - } - x_google_ignoreList.push(sourceIndex); - } - }); - return { - file: options.file ? options.file.split(/[/\\]/).pop() : void 0, - sources: this.uniqueSources.map((source) => { - return options.file ? getRelativePath(options.file, source.filename) : source.filename; - }), - sourcesContent: this.uniqueSources.map((source) => { - return options.includeContent ? source.content : null; - }), - names, - mappings: mappings.raw, - x_google_ignoreList - }; - } - generateMap(options) { - return new SourceMap(this.generateDecodedMap(options)); - } - getIndentString() { - const indentStringCounts = {}; - this.sources.forEach((source) => { - const indentStr = source.content._getRawIndentString(); - if (indentStr === null) return; - if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; - indentStringCounts[indentStr] += 1; - }); - return Object.keys(indentStringCounts).sort((a, b) => { - return indentStringCounts[a] - indentStringCounts[b]; - })[0] || " "; - } - indent(indentStr) { - if (!arguments.length) { - indentStr = this.getIndentString(); - } - if (indentStr === "") return this; - let trailingNewline = !this.intro || this.intro.slice(-1) === "\n"; - this.sources.forEach((source, i) => { - const separator = source.separator !== void 0 ? source.separator : this.separator; - const indentStart = trailingNewline || i > 0 && /\r?\n$/.test(separator); - source.content.indent(indentStr, { - exclude: source.indentExclusionRanges, - indentStart - //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) - }); - trailingNewline = source.content.lastChar() === "\n"; - }); - if (this.intro) { - this.intro = indentStr + this.intro.replace(/^[^\n]/gm, (match, index) => { - return index > 0 ? indentStr + match : match; - }); - } - return this; - } - prepend(str) { - this.intro = str + this.intro; - return this; - } - toString() { - const body = this.sources.map((source, i) => { - const separator = source.separator !== void 0 ? source.separator : this.separator; - const str = (i > 0 ? separator : "") + source.content.toString(); - return str; - }).join(""); - return this.intro + body; - } - isEmpty() { - if (this.intro.length && this.intro.trim()) return false; - if (this.sources.some((source) => !source.content.isEmpty())) return false; - return true; - } - length() { - return this.sources.reduce( - (length, source) => length + source.content.length(), - this.intro.length - ); - } - trimLines() { - return this.trim("[\\r\\n]"); - } - trim(charType) { - return this.trimStart(charType).trimEnd(charType); - } - trimStart(charType) { - const rx = new RegExp("^" + (charType || "\\s") + "+"); - this.intro = this.intro.replace(rx, ""); - if (!this.intro) { - let source; - let i = 0; - do { - source = this.sources[i++]; - if (!source) { - break; - } - } while (!source.content.trimStartAborted(charType)); - } - return this; - } - trimEnd(charType) { - const rx = new RegExp((charType || "\\s") + "+$"); - let source; - let i = this.sources.length - 1; - do { - source = this.sources[i--]; - if (!source) { - this.intro = this.intro.replace(rx, ""); - break; - } - } while (!source.content.trimEndAborted(charType)); - return this; - } -}; -export { - Bundle, - SourceMap, - MagicString as default -}; -//# sourceMappingURL=vitest___@vitest_snapshot___magic-string.js.map diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js.map deleted file mode 100644 index 07a3f5d..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___@vitest_snapshot___magic-string.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../../../../.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../../../../.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../../../../.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/BitSet.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/Chunk.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/SourceMap.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/utils/guessIndent.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/utils/getRelativePath.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/utils/isObject.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/utils/getLocator.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/utils/Mappings.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/MagicString.js", "../../../../.pnpm/magic-string@0.30.21/node_modules/magic-string/src/Bundle.js"], - "sourcesContent": ["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n", "const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n declare private buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n", "import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n", "import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n", "export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n", "export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n", "import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n", "export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n", "export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n", "const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n", "export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n", "const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n", "import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\tif (this.outro) {\n\t\t\tmappings.advance(this.outro);\n\t\t}\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tlet previousChunk = chunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\n\t\t\t// Prevent infinite loop (e.g. via empty chunks, where start === end)\n\t\t\tif (chunk === previousChunk) return;\n\n\t\t\tpreviousChunk = chunk;\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\treplacement = replacement(string, index, original);\n\t\t\t}\n\t\t\tif (string !== replacement) {\n\t\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tlet _replacement = replacement;\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\t_replacement = replacement(previous, index, original);\n\t\t\t}\n\t\t\tif (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n", "import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n"], - "mappings": "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", - "names": ["n", "segment", "replacement"] -} diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js deleted file mode 100644 index 964fcf4..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js +++ /dev/null @@ -1,5 +0,0 @@ -import { - require_dist -} from "./chunk-SGEW2ZTH.js"; -import "./chunk-5WRI5ZAA.js"; -export default require_dist(); diff --git a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js.map b/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js.map deleted file mode 100644 index 9865211..0000000 --- a/node_modules/.vite/vitest/ef98362b8a6b0c8cd804b0d227aa1ffeaba89786/deps/vitest___expect-type.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/node_modules/@types/node b/node_modules/@types/node deleted file mode 120000 index 4de3959..0000000 --- a/node_modules/@types/node +++ /dev/null @@ -1 +0,0 @@ -../.pnpm/@types+node@20.19.33/node_modules/@types/node \ No newline at end of file diff --git a/node_modules/@vitest/browser b/node_modules/@vitest/browser deleted file mode 120000 index b22d31e..0000000 --- a/node_modules/@vitest/browser +++ /dev/null @@ -1 +0,0 @@ -../.pnpm/@vitest+browser@4.0.18_vite@7.3.1_@types+node@20.19.33_tsx@4.21.0__vitest@4.0.18/node_modules/@vitest/browser \ No newline at end of file diff --git a/node_modules/@vitest/browser-playwright b/node_modules/@vitest/browser-playwright deleted file mode 120000 index 76b8646..0000000 --- a/node_modules/@vitest/browser-playwright +++ /dev/null @@ -1 +0,0 @@ -../.pnpm/@vitest+browser-playwright@4.0.18_playwright@1.58.2_vite@7.3.1_@types+node@20.19.33_tsx@4.21.0__vitest@4.0.18/node_modules/@vitest/browser-playwright \ No newline at end of file diff --git a/node_modules/commander b/node_modules/commander deleted file mode 120000 index 7fabe2b..0000000 --- a/node_modules/commander +++ /dev/null @@ -1 +0,0 @@ -.pnpm/commander@12.1.0/node_modules/commander \ No newline at end of file diff --git a/node_modules/esbuild b/node_modules/esbuild deleted file mode 120000 index 6f25927..0000000 --- a/node_modules/esbuild +++ /dev/null @@ -1 +0,0 @@ -.pnpm/esbuild@0.24.2/node_modules/esbuild \ No newline at end of file diff --git a/node_modules/highlight.js b/node_modules/highlight.js deleted file mode 120000 index 678402e..0000000 --- a/node_modules/highlight.js +++ /dev/null @@ -1 +0,0 @@ -.pnpm/highlight.js@11.11.1/node_modules/highlight.js \ No newline at end of file diff --git a/node_modules/tsx b/node_modules/tsx deleted file mode 120000 index c9e2562..0000000 --- a/node_modules/tsx +++ /dev/null @@ -1 +0,0 @@ -.pnpm/tsx@4.21.0/node_modules/tsx \ No newline at end of file diff --git a/node_modules/typescript b/node_modules/typescript deleted file mode 120000 index e5bbb7f..0000000 --- a/node_modules/typescript +++ /dev/null @@ -1 +0,0 @@ -.pnpm/typescript@5.9.3/node_modules/typescript \ No newline at end of file diff --git a/node_modules/vitest b/node_modules/vitest deleted file mode 120000 index c83bc9d..0000000 --- a/node_modules/vitest +++ /dev/null @@ -1 +0,0 @@ -.pnpm/vitest@4.0.18_@types+node@20.19.33_@vitest+browser-playwright@4.0.18_tsx@4.21.0/node_modules/vitest \ No newline at end of file