diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-14 14:46:37 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-14 14:46:37 -0800 |
| commit | afa87af01c79a9baa539f2992d32154d2a4739bd (patch) | |
| tree | 92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/chai | |
| parent | 3b927e84d200402281f68181cd4253bc77e5528d (diff) | |
| download | neko-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/LICENSE | 21 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/README.md | 162 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/index.js | 4172 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/package.json | 71 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/register-assert.js | 3 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/register-expect.js | 3 | ||||
| -rw-r--r-- | vanilla/node_modules/chai/register-should.js | 3 |
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. - -[](https://github.com/keithamus) -[](https://github.com/43081j) -[](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: - -[](https://github.com/logicalparadox) -[](https://github.com/vesln) -[](https://github.com/lucasfcosta) -[](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(); |
