aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/chai
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/chai
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/chai')
-rw-r--r--vanilla/node_modules/chai/LICENSE21
-rw-r--r--vanilla/node_modules/chai/README.md162
-rw-r--r--vanilla/node_modules/chai/index.js4172
-rw-r--r--vanilla/node_modules/chai/package.json71
-rw-r--r--vanilla/node_modules/chai/register-assert.js3
-rw-r--r--vanilla/node_modules/chai/register-expect.js3
-rw-r--r--vanilla/node_modules/chai/register-should.js3
7 files changed, 0 insertions, 4435 deletions
diff --git a/vanilla/node_modules/chai/LICENSE b/vanilla/node_modules/chai/LICENSE
deleted file mode 100644
index eedbe23..0000000
--- a/vanilla/node_modules/chai/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Chai.js Assertion Library
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vanilla/node_modules/chai/README.md b/vanilla/node_modules/chai/README.md
deleted file mode 100644
index 9382e24..0000000
--- a/vanilla/node_modules/chai/README.md
+++ /dev/null
@@ -1,162 +0,0 @@
-<h1 align=center>
- <a href="http://chaijs.com" title="Chai Documentation">
- <img alt="ChaiJS" src="http://chaijs.com/img/chai-logo.png">
- </a>
- <br>
- chai
-</h1>
-
-<p align=center>
- Chai is a BDD / TDD assertion library for <a href="http://nodejs.org">node</a> and the browser that can be delightfully paired with any javascript testing framework.
-</p>
-
-<p align=center>
- <a href="https://www.npmjs.com/package/chai">
- <img
- alt="downloads:?"
- src="https://img.shields.io/npm/dm/chai.svg?style=flat-square"
- />
- </a>
- <a href="https://www.npmjs.com/package/chai">
- <img
- alt="node:?"
- src="https://img.shields.io/badge/node-%3E=18.0-blue.svg?style=flat-square"
- />
- </a>
- <br/>
- <a href="https://chai-slack.herokuapp.com/">
- <img
- alt="Join the Slack chat"
- src="https://img.shields.io/badge/slack-join%20chat-E2206F.svg?style=flat-square"
- />
- </a>
- <a href="https://gitter.im/chaijs/chai">
- <img
- alt="Join the Gitter chat"
- src="https://img.shields.io/badge/gitter-join%20chat-D0104D.svg?style=flat-square"
- />
- </a>
- <a href="https://opencollective.com/chaijs">
- <img
- alt="OpenCollective Backers"
- src="https://opencollective.com/chaijs/backers/badge.svg?style=flat-square"
- />
- </a>
-</p>
-
-For more information or to download plugins, view the [documentation](http://chaijs.com).
-
-## What is Chai?
-
-Chai is an _assertion library_, similar to Node's built-in `assert`. It makes testing much easier by giving you lots of assertions you can run against your code.
-
-## Installation
-
-### Node.js
-
-`chai` is available on [npm](http://npmjs.org). To install it, type:
-
- $ npm install --save-dev chai
-
-### Browsers
-
-You can also use it within the browser; install via npm and use the `index.js` file found within the download. For example:
-
-```html
-<script src="./node_modules/chai/index.js" type="module"></script>
-```
-
-## Usage
-
-Import the library in your code, and then pick one of the styles you'd like to use - either `assert`, `expect` or `should`:
-
-```js
-import { assert } from 'chai'; // Using Assert style
-import { expect } from 'chai'; // Using Expect style
-import { should } from 'chai'; // Using Should style
-```
-
-### Register the chai testing style globally
-
-```js
-import 'chai/register-assert'; // Using Assert style
-import 'chai/register-expect'; // Using Expect style
-import 'chai/register-should'; // Using Should style
-```
-
-### Import assertion styles as local variables
-
-```js
-import { assert } from 'chai'; // Using Assert style
-import { expect } from 'chai'; // Using Expect style
-import { should } from 'chai'; // Using Should style
-should(); // Modifies `Object.prototype`
-
-import { expect, use } from 'chai'; // Creates local variables `expect` and `use`; useful for plugin use
-```
-
-### Usage with Mocha
-
-```bash
-mocha spec.js --require chai/register-assert.js # Using Assert style
-mocha spec.js --require chai/register-expect.js # Using Expect style
-mocha spec.js --require chai/register-should.js # Using Should style
-```
-
-[Read more about these styles in our docs](http://chaijs.com/guide/styles/).
-
-## Plugins
-
-Chai offers a robust Plugin architecture for extending Chai's assertions and interfaces.
-
-- Need a plugin? View the [official plugin list](http://chaijs.com/plugins).
-- Want to build a plugin? Read the [plugin api documentation](http://chaijs.com/guide/plugins/).
-- Have a plugin and want it listed? Simply add the following keywords to your package.json:
- - `chai-plugin`
- - `browser` if your plugin works in the browser as well as Node.js
- - `browser-only` if your plugin does not work with Node.js
-
-### Related Projects
-
-- [chaijs / chai-docs](https://github.com/chaijs/chai-docs): The chaijs.com website source code.
-- [chaijs / assertion-error](https://github.com/chaijs/assertion-error): Custom `Error` constructor thrown upon an assertion failing.
-- [chaijs / deep-eql](https://github.com/chaijs/deep-eql): Improved deep equality testing for Node.js and the browser.
-- [chaijs / check-error](https://github.com/chaijs/check-error): Error comparison and information related utility for Node.js and the browser.
-- [chaijs / loupe](https://github.com/chaijs/loupe): Inspect utility for Node.js and browsers.
-- [chaijs / pathval](https://github.com/chaijs/pathval): Object value retrieval given a string path.
-
-### Contributing
-
-Thank you very much for considering to contribute!
-
-Please make sure you follow our [Code Of Conduct](https://github.com/chaijs/chai/blob/master/CODE_OF_CONDUCT.md) and we also strongly recommend reading our [Contributing Guide](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md).
-
-Here are a few issues other contributors frequently ran into when opening pull requests:
-
-- Please do not commit changes to the `chai.js` build. We do it once per release.
-- Before pushing your commits, please make sure you [rebase](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md#pull-requests) them.
-
-### Contributors
-
-Please see the full
-[Contributors Graph](https://github.com/chaijs/chai/graphs/contributors) for our
-list of contributors.
-
-### Core Contributors
-
-Feel free to reach out to any of the core contributors with your questions or
-concerns. We will do our best to respond in a timely manner.
-
-[![Keith Cirkel](https://avatars3.githubusercontent.com/u/118266?v=3&s=50)](https://github.com/keithamus)
-[![James Garbutt](https://avatars3.githubusercontent.com/u/5677153?v=3&s=50)](https://github.com/43081j)
-[![Kristján Oddsson](https://avatars3.githubusercontent.com/u/318208?v=3&s=50)](https://github.com/koddsson)
-
-### Core Contributor Alumni
-
-This project would not be what it is without the contributions from our prior
-core contributors, for whom we are forever grateful:
-
-[![Jake Luer](https://avatars3.githubusercontent.com/u/58988?v=3&s=50)](https://github.com/logicalparadox)
-[![Veselin Todorov](https://avatars3.githubusercontent.com/u/330048?v=3&s=50)](https://github.com/vesln)
-[![Lucas Fernandes da Costa](https://avatars3.githubusercontent.com/u/6868147?v=3&s=50)](https://github.com/lucasfcosta)
-[![Grant Snodgrass](https://avatars3.githubusercontent.com/u/17260989?v=3&s=50)](https://github.com/meeber)
diff --git a/vanilla/node_modules/chai/index.js b/vanilla/node_modules/chai/index.js
deleted file mode 100644
index 601eb53..0000000
--- a/vanilla/node_modules/chai/index.js
+++ /dev/null
@@ -1,4172 +0,0 @@
-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);
-
-// lib/chai/utils/index.js
-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
-});
-
-// node_modules/check-error/index.js
-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");
-
-// lib/chai/utils/flag.js
-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");
-
-// lib/chai/utils/test.js
-function test(obj, args) {
- let negate = flag(obj, "negate"), expr = args[0];
- return negate ? !expr : expr;
-}
-__name(test, "test");
-
-// lib/chai/utils/type-detect.js
-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");
-
-// node_modules/assertion-error/index.js
-var canElideFrames = "captureStackTrace" in Error;
-var _AssertionError = class _AssertionError extends Error {
- constructor(message = "Unspecified AssertionError", props, ssf) {
- super(message);
- __publicField(this, "message");
- this.message = message;
- if (canElideFrames) {
- Error.captureStackTrace(this, ssf || _AssertionError);
- }
- 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;
-
-// lib/chai/utils/expectTypes.js
-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");
-
-// lib/chai/utils/getActual.js
-function getActual(obj, args) {
- return args.length > 4 ? args[4] : obj._obj;
-}
-__name(getActual, "getActual");
-
-// node_modules/loupe/lib/helpers.js
-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 = "\u2026";
-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");
-
-// node_modules/loupe/lib/array.js
-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");
-
-// node_modules/loupe/lib/typedarray.js
-var getArrayName = /* @__PURE__ */ __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");
-
-// node_modules/loupe/lib/date.js
-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");
-
-// node_modules/loupe/lib/function.js
-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");
-
-// node_modules/loupe/lib/map.js
-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");
-
-// node_modules/loupe/lib/number.js
-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");
-
-// node_modules/loupe/lib/bigint.js
-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");
-
-// node_modules/loupe/lib/regexp.js
-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");
-
-// node_modules/loupe/lib/set.js
-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");
-
-// node_modules/loupe/lib/string.js
-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");
-
-// node_modules/loupe/lib/symbol.js
-function inspectSymbol(value) {
- if ("description" in Symbol.prototype) {
- return value.description ? `Symbol(${value.description})` : "Symbol()";
- }
- return value.toString();
-}
-__name(inspectSymbol, "inspectSymbol");
-
-// node_modules/loupe/lib/promise.js
-var getPromiseValue = /* @__PURE__ */ __name(() => "Promise{\u2026}", "getPromiseValue");
-var promise_default = getPromiseValue;
-
-// node_modules/loupe/lib/object.js
-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");
-
-// node_modules/loupe/lib/class.js
-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 = "<Anonymous Class>";
- }
- options.truncate -= name.length;
- return `${name}${inspectObject(value, options)}`;
-}
-__name(inspectClass, "inspectClass");
-
-// node_modules/loupe/lib/arguments.js
-function inspectArguments(args, options) {
- if (args.length === 0)
- return "Arguments[]";
- options.truncate -= 13;
- return `Arguments[ ${inspectList(args, options)} ]`;
-}
-__name(inspectArguments, "inspectArguments");
-
-// node_modules/loupe/lib/error.js
-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");
-
-// node_modules/loupe/lib/html.js
-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(`</${name}>`, "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");
-
-// node_modules/loupe/lib/index.js
-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: /* @__PURE__ */ __name((value, options) => options.stylize("undefined", "undefined"), "undefined"),
- null: /* @__PURE__ */ __name((value, options) => options.stylize("null", "null"), "null"),
- boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), "boolean"), "boolean"),
- Boolean: /* @__PURE__ */ __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: /* @__PURE__ */ __name((value, options) => options.stylize("WeakSet{\u2026}", "special"), "WeakSet"),
- WeakMap: /* @__PURE__ */ __name((value, options) => options.stylize("WeakMap{\u2026}", "special"), "WeakMap"),
- Arguments: inspectArguments,
- Int8Array: inspectTypedArray,
- Uint8Array: inspectTypedArray,
- Uint8ClampedArray: inspectTypedArray,
- Int16Array: inspectTypedArray,
- Uint16Array: inspectTypedArray,
- Int32Array: inspectTypedArray,
- Uint32Array: inspectTypedArray,
- Float32Array: inspectTypedArray,
- Float64Array: inspectTypedArray,
- Generator: /* @__PURE__ */ __name(() => "", "Generator"),
- DataView: /* @__PURE__ */ __name(() => "", "DataView"),
- ArrayBuffer: /* @__PURE__ */ __name(() => "", "ArrayBuffer"),
- Error: inspectObject2,
- HTMLCollection: inspectNodeCollection,
- NodeList: inspectNodeCollection
-};
-var inspectCustom = /* @__PURE__ */ __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");
-
-// lib/chai/config.js
-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
-};
-
-// lib/chai/utils/inspect.js
-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");
-
-// lib/chai/utils/objDisplay.js
-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");
-
-// lib/chai/utils/getMessage.js
-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");
-
-// lib/chai/utils/transferFlags.js
-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");
-
-// node_modules/deep-eql/index.js
-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: /* @__PURE__ */ __name(function get(key) {
- return key[this._key];
- }, "get"),
- set: /* @__PURE__ */ __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(/* @__PURE__ */ __name(function gatherEntries(key, value) {
- leftHandItems.push([key, value]);
- }, "gatherEntries"));
- rightHandOperand.forEach(/* @__PURE__ */ __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(/* @__PURE__ */ __name(function mapSymbol(entry) {
- if (typeof entry === "symbol") {
- return entry.toString();
- }
- return entry;
- }, "mapSymbol"));
-}
-__name(mapSymbols, "mapSymbols");
-
-// node_modules/pathval/index.js
-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");
-
-// lib/chai/assertion.js
-var _Assertion = class _Assertion {
- /**
- * 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) {
- /** @type {{}} */
- __publicField(this, "__flags", {});
- flag(this, "ssfi", ssfi || _Assertion);
- 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;
-
-// lib/chai/utils/events.js
-var events = new EventTarget();
-var _PluginEvent = class _PluginEvent extends Event {
- constructor(type3, name, fn) {
- super(type3);
- this.name = String(name);
- this.fn = fn;
- }
-};
-__name(_PluginEvent, "PluginEvent");
-var PluginEvent = _PluginEvent;
-
-// lib/chai/utils/isProxyEnabled.js
-function isProxyEnabled() {
- return config.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined";
-}
-__name(isProxyEnabled, "isProxyEnabled");
-
-// lib/chai/utils/addProperty.js
-function addProperty(ctx, name, getter) {
- getter = getter === void 0 ? function() {
- } : getter;
- Object.defineProperty(ctx, name, {
- get: /* @__PURE__ */ __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");
-
-// lib/chai/utils/addLengthGuard.js
-var fnLengthDesc = Object.getOwnPropertyDescriptor(function() {
-}, "length");
-function addLengthGuard(fn, assertionName, isChainable) {
- if (!fnLengthDesc.configurable) return fn;
- Object.defineProperty(fn, "length", {
- get: /* @__PURE__ */ __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");
-
-// lib/chai/utils/getProperties.js
-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");
-
-// lib/chai/utils/proxify.js
-var builtins = ["__flags", "__methods", "_obj", "assert"];
-function proxify(obj, nonChainableMethodName) {
- if (!isProxyEnabled()) return obj;
- return new Proxy(obj, {
- get: /* @__PURE__ */ __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");
-
-// lib/chai/utils/addMethod.js
-function addMethod(ctx, name, method) {
- let methodWrapper = /* @__PURE__ */ __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");
-
-// lib/chai/utils/overwriteProperty.js
-function overwriteProperty(ctx, name, getter) {
- let _get = Object.getOwnPropertyDescriptor(ctx, name), _super = /* @__PURE__ */ __name(function() {
- }, "_super");
- if (_get && "function" === typeof _get.get) _super = _get.get;
- Object.defineProperty(ctx, name, {
- get: /* @__PURE__ */ __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");
-
-// lib/chai/utils/overwriteMethod.js
-function overwriteMethod(ctx, name, method) {
- let _method = ctx[name], _super = /* @__PURE__ */ __name(function() {
- throw new Error(name + " is not a function");
- }, "_super");
- if (_method && "function" === typeof _method) _super = _method;
- let overwritingMethodWrapper = /* @__PURE__ */ __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");
-
-// lib/chai/utils/addChainableMethod.js
-var canSetPrototype = typeof Object.setPrototypeOf === "function";
-var testFn = /* @__PURE__ */ __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 _PluginAddChainableMethodEvent 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 = /* @__PURE__ */ __name(function() {
- }, "chainingBehavior");
- }
- let chainableBehavior = {
- method,
- chainingBehavior
- };
- if (!ctx.__methods) {
- ctx.__methods = {};
- }
- ctx.__methods[name] = chainableBehavior;
- Object.defineProperty(ctx, name, {
- get: /* @__PURE__ */ __name(function chainableMethodGetter() {
- chainableBehavior.chainingBehavior.call(this);
- let chainableMethodWrapper = /* @__PURE__ */ __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");
-
-// lib/chai/utils/overwriteChainableMethod.js
-function overwriteChainableMethod(ctx, name, method, chainingBehavior) {
- let chainableBehavior = ctx.__methods[name];
- let _chainingBehavior = chainableBehavior.chainingBehavior;
- chainableBehavior.chainingBehavior = /* @__PURE__ */ __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 = /* @__PURE__ */ __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");
-
-// lib/chai/utils/compareByInspect.js
-function compareByInspect(a, b) {
- return inspect2(a) < inspect2(b) ? -1 : 1;
-}
-__name(compareByInspect, "compareByInspect");
-
-// lib/chai/utils/getOwnEnumerablePropertySymbols.js
-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");
-
-// lib/chai/utils/getOwnEnumerableProperties.js
-function getOwnEnumerableProperties(obj) {
- return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));
-}
-__name(getOwnEnumerableProperties, "getOwnEnumerableProperties");
-
-// lib/chai/utils/isNaN.js
-var isNaN2 = Number.isNaN;
-
-// lib/chai/utils/getOperator.js
-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");
-
-// lib/chai/utils/index.js
-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");
-
-// lib/chai/core/assertions.js
-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 = /* @__PURE__ */ __name((x) => x < 0 ? -x : x, "abs");
- const strip = /* @__PURE__ */ __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
- );
-});
-
-// lib/chai/interface/expect.js
-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
- );
-};
-
-// lib/chai/interface/should.js
-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;
-
-// lib/chai/interface/assert.js
-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];
-}
-
-// lib/chai.js
-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
-};
diff --git a/vanilla/node_modules/chai/package.json b/vanilla/node_modules/chai/package.json
deleted file mode 100644
index f2ad34b..0000000
--- a/vanilla/node_modules/chai/package.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "author": "Jake Luer <jake@alogicalparadox.com>",
- "name": "chai",
- "type": "module",
- "description": "BDD/TDD assertion library for node.js and the browser. Test framework agnostic.",
- "keywords": [
- "test",
- "assertion",
- "assert",
- "testing",
- "chai"
- ],
- "files": [
- "index.js",
- "register-*.js"
- ],
- "homepage": "http://chaijs.com",
- "license": "MIT",
- "contributors": [
- "Jake Luer <jake@alogicalparadox.com>",
- "Domenic Denicola <domenic@domenicdenicola.com> (http://domenicdenicola.com)",
- "Veselin Todorov <hi@vesln.com>",
- "John Firebaugh <john.firebaugh@gmail.com>"
- ],
- "version": "6.2.2",
- "repository": {
- "type": "git",
- "url": "https://github.com/chaijs/chai"
- },
- "bugs": {
- "url": "https://github.com/chaijs/chai/issues"
- },
- "main": "./index.js",
- "scripts": {
- "build": "esbuild --bundle --format=esm --target=es2021 --keep-names --legal-comments=none --outfile=index.js lib/chai.js",
- "prebuild": "npm run clean",
- "format": "prettier --write lib",
- "pretest": "npm run lint",
- "test": "npm run test-node && npm run test-chrome",
- "test-node": "c8 --99 --check-coverage mocha --require ./test/bootstrap/index.js test/*.js",
- "test-chrome": "web-test-runner --playwright",
- "lint": "npm run lint:js && npm run lint:format",
- "lint:js": "eslint lib/",
- "lint:format": "prettier --check lib",
- "lint:types": "tsc",
- "clean": "rm -rf index.js coverage/"
- },
- "engines": {
- "node": ">=18"
- },
- "devDependencies": {
- "@eslint/js": "^9.17.0",
- "@rollup/plugin-commonjs": "^29.0.0",
- "@web/dev-server-rollup": "^0.6.1",
- "@web/test-runner": "^0.20.0",
- "@web/test-runner-playwright": "^0.11.0",
- "assertion-error": "^2.0.1",
- "c8": "^10.1.3",
- "check-error": "^2.1.1",
- "deep-eql": "^5.0.1",
- "esbuild": "^0.27.0",
- "eslint": "^9.0.0",
- "eslint-plugin-jsdoc": "^61.0.0",
- "globals": "^16.3.0",
- "loupe": "^3.1.0",
- "mocha": "^11.0.0",
- "pathval": "^2.0.0",
- "prettier": "^3.4.2",
- "typescript": "~5.9.0"
- }
-}
diff --git a/vanilla/node_modules/chai/register-assert.js b/vanilla/node_modules/chai/register-assert.js
deleted file mode 100644
index f593717..0000000
--- a/vanilla/node_modules/chai/register-assert.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import {assert} from './index.js';
-
-globalThis.assert = assert;
diff --git a/vanilla/node_modules/chai/register-expect.js b/vanilla/node_modules/chai/register-expect.js
deleted file mode 100644
index 2807b89..0000000
--- a/vanilla/node_modules/chai/register-expect.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import {expect} from './index.js';
-
-globalThis.expect = expect;
diff --git a/vanilla/node_modules/chai/register-should.js b/vanilla/node_modules/chai/register-should.js
deleted file mode 100644
index 1339ee4..0000000
--- a/vanilla/node_modules/chai/register-should.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import {should} from './index.js';
-
-globalThis.should = should();