aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@types
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/@types')
-rw-r--r--vanilla/node_modules/@types/chai/LICENSE21
-rw-r--r--vanilla/node_modules/@types/chai/README.md15
-rw-r--r--vanilla/node_modules/@types/chai/index.d.ts2145
-rw-r--r--vanilla/node_modules/@types/chai/package.json75
-rw-r--r--vanilla/node_modules/@types/chai/register-should.d.ts7
-rw-r--r--vanilla/node_modules/@types/deep-eql/LICENSE21
-rw-r--r--vanilla/node_modules/@types/deep-eql/README.md57
-rw-r--r--vanilla/node_modules/@types/deep-eql/index.d.ts38
-rw-r--r--vanilla/node_modules/@types/deep-eql/package.json25
-rw-r--r--vanilla/node_modules/@types/estree/LICENSE21
-rw-r--r--vanilla/node_modules/@types/estree/README.md15
-rw-r--r--vanilla/node_modules/@types/estree/flow.d.ts167
-rw-r--r--vanilla/node_modules/@types/estree/index.d.ts694
-rw-r--r--vanilla/node_modules/@types/estree/package.json27
14 files changed, 3328 insertions, 0 deletions
diff --git a/vanilla/node_modules/@types/chai/LICENSE b/vanilla/node_modules/@types/chai/LICENSE
new file mode 100644
index 0000000..9e841e7
--- /dev/null
+++ b/vanilla/node_modules/@types/chai/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ 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/@types/chai/README.md b/vanilla/node_modules/@types/chai/README.md
new file mode 100644
index 0000000..27c1356
--- /dev/null
+++ b/vanilla/node_modules/@types/chai/README.md
@@ -0,0 +1,15 @@
+# Installation
+> `npm install --save @types/chai`
+
+# Summary
+This package contains type definitions for chai (http://chaijs.com/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chai.
+
+### Additional Details
+ * Last updated: Mon, 20 Oct 2025 23:32:35 GMT
+ * Dependencies: [@types/deep-eql](https://npmjs.com/package/@types/deep-eql), [assertion-error](https://npmjs.com/package/assertion-error)
+
+# Credits
+These definitions were written by [Bart van der Schoor](https://github.com/Bartvds), [Andrew Brown](https://github.com/AGBrown), [Olivier Chevet](https://github.com/olivr70), [Matt Wistrand](https://github.com/mwistrand), [Shaun Luttin](https://github.com/shaunluttin), [Satana Charuwichitratana](https://github.com/micksatana), [Erik Schierboom](https://github.com/ErikSchierboom), [Bogdan Paranytsia](https://github.com/bparan), [CXuesong](https://github.com/CXuesong), and [Joey Kilpatrick](https://github.com/joeykilpatrick).
diff --git a/vanilla/node_modules/@types/chai/index.d.ts b/vanilla/node_modules/@types/chai/index.d.ts
new file mode 100644
index 0000000..4fed6b9
--- /dev/null
+++ b/vanilla/node_modules/@types/chai/index.d.ts
@@ -0,0 +1,2145 @@
+import deepEqual = require("deep-eql");
+import { AssertionError as ImportedAssertionError } from "assertion-error";
+
+declare global {
+ namespace Chai {
+ export type Message = string | (() => string);
+ export type ObjectProperty = string | symbol | number;
+
+ export interface PathInfo {
+ parent: object;
+ name: string;
+ value?: any;
+ exists: boolean;
+ }
+
+ export interface Constructor<T> {
+ new(...args: any[]): T;
+ }
+
+ export interface ErrorConstructor {
+ new(...args: any[]): Error;
+ }
+
+ export interface ChaiUtils {
+ addChainableMethod(
+ // object to define the method on, e.g. chai.Assertion.prototype
+ ctx: object,
+ // method name
+ name: string,
+ // method itself; any arguments
+ method: (...args: any[]) => void,
+ // called when property is accessed
+ chainingBehavior?: () => void,
+ ): void;
+ overwriteChainableMethod(
+ ctx: object,
+ name: string,
+ method: (...args: any[]) => void,
+ chainingBehavior?: () => void,
+ ): void;
+ addLengthGuard(
+ fn: Function,
+ assertionName: string,
+ isChainable: boolean,
+ ): void;
+ addMethod(ctx: object, name: string, method: Function): void;
+ addProperty(ctx: object, name: string, getter: () => any): void;
+ overwriteMethod(ctx: object, name: string, method: Function): void;
+ overwriteProperty(ctx: object, name: string, getter: (this: AssertionStatic, _super: any) => any): void;
+ compareByInspect(a: object, b: object): -1 | 1;
+ expectTypes(obj: object, types: string[]): void;
+ flag(obj: object, key: string, value?: any): any;
+ getActual(obj: object, args: AssertionArgs): any;
+ getProperties(obj: object): string[];
+ getEnumerableProperties(obj: object): string[];
+ getOwnEnumerablePropertySymbols(obj: object): symbol[];
+ getOwnEnumerableProperties(obj: object): Array<string | symbol>;
+ getMessage(errorLike: Error | string): string;
+ getMessage(obj: any, args: AssertionArgs): string;
+ inspect(obj: any, showHidden?: boolean, depth?: number, colors?: boolean): string;
+ isProxyEnabled(): boolean;
+ objDisplay(obj: object): void;
+ proxify(obj: object, nonChainableMethodName: string): object;
+ test(obj: object, args: AssertionArgs): boolean;
+ transferFlags(assertion: Assertion, obj: object, includeAll?: boolean): void;
+ compatibleInstance(thrown: Error, errorLike: Error | ErrorConstructor): boolean;
+ compatibleConstructor(thrown: Error, errorLike: Error | ErrorConstructor): boolean;
+ compatibleMessage(thrown: Error, errMatcher: string | RegExp): boolean;
+ getConstructorName(constructorFn: Function): string;
+ getFuncName(constructorFn: Function): string | null;
+
+ // Reexports from pathval:
+ hasProperty(obj: object | undefined | null, name: ObjectProperty): boolean;
+ getPathInfo(obj: object, path: string): PathInfo;
+ getPathValue(obj: object, path: string): object | undefined;
+
+ eql: typeof deepEqual;
+ }
+
+ export type ChaiPlugin = (chai: ChaiStatic, utils: ChaiUtils) => void;
+
+ export interface ChaiStatic {
+ expect: ExpectStatic;
+ should(): Should;
+ /**
+ * Provides a way to extend the internals of Chai
+ */
+ use(fn: ChaiPlugin): ChaiStatic;
+ util: ChaiUtils;
+ assert: AssertStatic;
+ config: Config;
+ Assertion: AssertionStatic;
+ AssertionError: typeof AssertionError;
+ version: string;
+ }
+
+ export interface ExpectStatic {
+ (val: any, message?: string): Assertion;
+ fail(message?: string): never;
+ fail(actual: any, expected: any, message?: string, operator?: Operator): never;
+ }
+
+ export interface AssertStatic extends Assert {
+ }
+
+ // chai.Assertion.prototype.assert arguments
+ export type AssertionArgs = [
+ any, // expression to be tested
+ Message, // message or function that returns message to display if expression fails
+ Message, // negatedMessage or function that returns negatedMessage to display if expression fails
+ any?, // expected value
+ any?, // actual value
+ boolean?, // showDiff, when set to `true`, assert will display a diff in addition to the message if expression fails
+ ];
+
+ export interface AssertionPrototype {
+ assert(...args: AssertionArgs): void;
+ _obj: any;
+ }
+
+ export interface AssertionStatic extends AssertionPrototype {
+ prototype: AssertionPrototype;
+
+ new(target: any, message?: string, ssfi?: Function, lockSsfi?: boolean): Assertion;
+
+ // Deprecated properties:
+ includeStack: boolean;
+ showDiff: boolean;
+
+ // Partials of functions on ChaiUtils:
+ addProperty(name: string, getter: (this: AssertionStatic) => any): void;
+ addMethod(name: string, method: (this: AssertionStatic, ...args: any[]) => any): void;
+ addChainableMethod(
+ name: string,
+ method: (this: AssertionStatic, ...args: any[]) => void,
+ chainingBehavior?: () => void,
+ ): void;
+ overwriteProperty(name: string, getter: (this: AssertionStatic, _super: any) => any): void;
+ overwriteMethod(name: string, method: (this: AssertionStatic, ...args: any[]) => any): void;
+ overwriteChainableMethod(
+ name: string,
+ method: (this: AssertionStatic, ...args: any[]) => void,
+ chainingBehavior?: () => void,
+ ): void;
+ }
+
+ export type Operator = string; // "==" | "===" | ">" | ">=" | "<" | "<=" | "!=" | "!==";
+
+ export type OperatorComparable = boolean | null | number | string | undefined | Date;
+
+ export interface ShouldAssertion {
+ equal(value1: any, value2: any, message?: string): void;
+ Throw: ShouldThrow;
+ throw: ShouldThrow;
+ exist(value: any, message?: string): void;
+ }
+
+ export interface Should extends ShouldAssertion {
+ not: ShouldAssertion;
+ fail(message?: string): never;
+ fail(actual: any, expected: any, message?: string, operator?: Operator): never;
+ }
+
+ export interface ShouldThrow {
+ (actual: Function, expected?: string | RegExp, message?: string): void;
+ (actual: Function, constructor: Error | Function, expected?: string | RegExp, message?: string): void;
+ }
+
+ export interface Assertion extends LanguageChains, NumericComparison, TypeComparison {
+ not: Assertion;
+ deep: Deep;
+ ordered: Ordered;
+ nested: Nested;
+ own: Own;
+ any: KeyFilter;
+ all: KeyFilter;
+ a: Assertion;
+ an: Assertion;
+ include: Include;
+ includes: Include;
+ contain: Include;
+ contains: Include;
+ ok: Assertion;
+ true: Assertion;
+ false: Assertion;
+ null: Assertion;
+ undefined: Assertion;
+ NaN: Assertion;
+ exist: Assertion;
+ empty: Assertion;
+ arguments: Assertion;
+ Arguments: Assertion;
+ finite: Assertion;
+ equal: Equal;
+ equals: Equal;
+ eq: Equal;
+ eql: Equal;
+ eqls: Equal;
+ containSubset: ContainSubset;
+ property: Property;
+ ownProperty: Property;
+ haveOwnProperty: Property;
+ ownPropertyDescriptor: OwnPropertyDescriptor;
+ haveOwnPropertyDescriptor: OwnPropertyDescriptor;
+ length: Length;
+ lengthOf: Length;
+ match: Match;
+ matches: Match;
+ string(string: string, message?: string): Assertion;
+ keys: Keys;
+ key(string: string): Assertion;
+ throw: Throw;
+ throws: Throw;
+ Throw: Throw;
+ respondTo: RespondTo;
+ respondsTo: RespondTo;
+ itself: Assertion;
+ satisfy: Satisfy;
+ satisfies: Satisfy;
+ closeTo: CloseTo;
+ approximately: CloseTo;
+ members: Members;
+ increase: PropertyChange;
+ increases: PropertyChange;
+ decrease: PropertyChange;
+ decreases: PropertyChange;
+ change: PropertyChange;
+ changes: PropertyChange;
+ extensible: Assertion;
+ sealed: Assertion;
+ frozen: Assertion;
+ oneOf: OneOf;
+ }
+
+ export interface LanguageChains {
+ to: Assertion;
+ be: Assertion;
+ been: Assertion;
+ is: Assertion;
+ that: Assertion;
+ which: Assertion;
+ and: Assertion;
+ has: Assertion;
+ have: Assertion;
+ with: Assertion;
+ at: Assertion;
+ of: Assertion;
+ same: Assertion;
+ but: Assertion;
+ does: Assertion;
+ }
+
+ export interface NumericComparison {
+ above: NumberComparer;
+ gt: NumberComparer;
+ greaterThan: NumberComparer;
+ least: NumberComparer;
+ gte: NumberComparer;
+ greaterThanOrEqual: NumberComparer;
+ below: NumberComparer;
+ lt: NumberComparer;
+ lessThan: NumberComparer;
+ most: NumberComparer;
+ lte: NumberComparer;
+ lessThanOrEqual: NumberComparer;
+ within(start: number, finish: number, message?: string): Assertion;
+ within(start: Date, finish: Date, message?: string): Assertion;
+ }
+
+ export interface NumberComparer {
+ (value: number | Date, message?: string): Assertion;
+ }
+
+ export interface TypeComparison {
+ (type: string, message?: string): Assertion;
+ instanceof: InstanceOf;
+ instanceOf: InstanceOf;
+ }
+
+ export interface InstanceOf {
+ (constructor: any, message?: string): Assertion;
+ }
+
+ export interface CloseTo {
+ (expected: number, delta: number, message?: string): Assertion;
+ }
+
+ export interface Nested {
+ include: Include;
+ includes: Include;
+ contain: Include;
+ contains: Include;
+ property: Property;
+ members: Members;
+ }
+
+ export interface Own {
+ include: Include;
+ includes: Include;
+ contain: Include;
+ contains: Include;
+ property: Property;
+ }
+
+ export interface Deep extends KeyFilter {
+ be: Assertion;
+ equal: Equal;
+ equals: Equal;
+ eq: Equal;
+ include: Include;
+ includes: Include;
+ contain: Include;
+ contains: Include;
+ property: Property;
+ ordered: Ordered;
+ nested: Nested;
+ oneOf: OneOf;
+ own: Own;
+ }
+
+ export interface Ordered {
+ members: Members;
+ }
+
+ export interface KeyFilter {
+ keys: Keys;
+ members: Members;
+ }
+
+ export interface Equal {
+ (value: any, message?: string): Assertion;
+ }
+
+ export interface ContainSubset {
+ (expected: any): Assertion;
+ }
+
+ export interface Property {
+ (name: string | symbol, value: any, message?: string): Assertion;
+ (name: string | symbol, message?: string): Assertion;
+ }
+
+ export interface OwnPropertyDescriptor {
+ (name: string | symbol, descriptor: PropertyDescriptor, message?: string): Assertion;
+ (name: string | symbol, message?: string): Assertion;
+ }
+
+ export interface Length extends LanguageChains, NumericComparison {
+ (length: number, message?: string): Assertion;
+ }
+
+ export interface Include {
+ (value: any, message?: string): Assertion;
+ keys: Keys;
+ deep: Deep;
+ ordered: Ordered;
+ members: Members;
+ any: KeyFilter;
+ all: KeyFilter;
+ oneOf: OneOf;
+ }
+
+ export interface OneOf {
+ (list: readonly unknown[], message?: string): Assertion;
+ }
+
+ export interface Match {
+ (regexp: RegExp, message?: string): Assertion;
+ }
+
+ export interface Keys {
+ (...keys: string[]): Assertion;
+ (keys: readonly any[] | Object): Assertion;
+ }
+
+ export interface Throw {
+ (expected?: string | RegExp, message?: string): Assertion;
+ (constructor: Error | Function, expected?: string | RegExp, message?: string): Assertion;
+ }
+
+ export interface RespondTo {
+ (method: string, message?: string): Assertion;
+ }
+
+ export interface Satisfy {
+ (matcher: Function, message?: string): Assertion;
+ }
+
+ export interface Members {
+ (set: readonly any[], message?: string): Assertion;
+ }
+
+ export interface PropertyChange {
+ (object: Object, property?: string, message?: string): DeltaAssertion;
+ }
+
+ export interface DeltaAssertion extends Assertion {
+ by(delta: number, msg?: string): Assertion;
+ }
+
+ export interface Assert {
+ /**
+ * @param expression Expression to test for truthiness.
+ * @param message Message to display on error.
+ */
+ (expression: any, message?: string): asserts expression;
+
+ /**
+ * Throws a failure.
+ *
+ * @param message Message to display on error.
+ * @remarks Node.js assert module-compatible.
+ */
+ fail(message?: string): never;
+
+ /**
+ * Throws a failure.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ * @param operator Comparison operator, if not strict equality.
+ * @remarks Node.js assert module-compatible.
+ */
+ fail<T>(actual: T, expected: T, message?: string, operator?: Operator): never;
+
+ /**
+ * Asserts that object is truthy.
+ *
+ * @param object Object to test.
+ * @param message Message to display on error.
+ */
+ isOk(value: unknown, message?: string): asserts value;
+
+ /**
+ * Asserts that object is truthy.
+ *
+ * @param object Object to test.
+ * @param message Message to display on error.
+ */
+ ok(value: unknown, message?: string): asserts value;
+
+ /**
+ * Asserts that object is falsy.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param message Message to display on error.
+ */
+ isNotOk<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that object is falsy.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param message Message to display on error.
+ */
+ notOk<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts non-strict equality (==) of actual and expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ equal<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Asserts non-strict inequality (!=) of actual and expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ notEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Asserts strict equality (===) of actual and expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ strictEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Asserts strict inequality (!==) of actual and expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ notStrictEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Asserts that actual is deeply equal to expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ deepEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Asserts that actual is not deeply equal to expected.
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ notDeepEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Alias to deepEqual
+ *
+ * T Type of the objects.
+ * @param actual Actual value.
+ * @param expected Potential expected value.
+ * @param message Message to display on error.
+ */
+ deepStrictEqual<T>(actual: T, expected: T, message?: string): void;
+
+ /**
+ * Partially matches actual and expected.
+ *
+ * @param actual Actual value.
+ * @param expected Potential subset of the value.
+ * @param message Message to display on error.
+ */
+ containSubset(val: any, exp: any, msg?: string): void;
+
+ /**
+ * Partially matches actual and expected.
+ *
+ * @param actual Actual value.
+ * @param expected Potential subset of the value.
+ * @param message Message to display on error.
+ */
+ containsSubset(val: any, exp: any, msg?: string): void;
+
+ /**
+ * No partial match between actual and expected exists.
+ *
+ * @param actual Actual value.
+ * @param expected Potential subset of the value.
+ * @param message Message to display on error.
+ */
+ doesNotContainSubset(val: any, exp: any, msg?: string): void;
+
+ /**
+ * Asserts valueToCheck is strictly greater than (>) valueToBeAbove.
+ *
+ * @param valueToCheck Actual value.
+ * @param valueToBeAbove Minimum Potential expected value.
+ * @param message Message to display on error.
+ */
+ isAbove(valueToCheck: number, valueToBeAbove: number, message?: string): void;
+
+ /**
+ * Asserts valueToCheck is greater than or equal to (>=) valueToBeAtLeast.
+ *
+ * @param valueToCheck Actual value.
+ * @param valueToBeAtLeast Minimum Potential expected value.
+ * @param message Message to display on error.
+ */
+ isAtLeast(valueToCheck: number, valueToBeAtLeast: number, message?: string): void;
+
+ /**
+ * Asserts valueToCheck is strictly less than (<) valueToBeBelow.
+ *
+ * @param valueToCheck Actual value.
+ * @param valueToBeBelow Minimum Potential expected value.
+ * @param message Message to display on error.
+ */
+ isBelow(valueToCheck: number, valueToBeBelow: number, message?: string): void;
+
+ /**
+ * Asserts valueToCheck is less than or equal to (<=) valueToBeAtMost.
+ *
+ * @param valueToCheck Actual value.
+ * @param valueToBeAtMost Minimum Potential expected value.
+ * @param message Message to display on error.
+ */
+ isAtMost(valueToCheck: number, valueToBeAtMost: number, message?: string): void;
+
+ /**
+ * Asserts that value is true.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isTrue(value: unknown, message?: string): asserts value is true;
+
+ /**
+ * Asserts that value is false.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isFalse(value: unknown, message?: string): asserts value is false;
+
+ /**
+ * Asserts that value is not true.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotTrue<T>(value: T, message?: string): asserts value is Exclude<T, true>;
+
+ /**
+ * Asserts that value is not false.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotFalse<T>(value: T, message?: string): asserts value is Exclude<T, false>;
+
+ /**
+ * Asserts that value is null.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNull(value: unknown, message?: string): asserts value is null;
+
+ /**
+ * Asserts that value is not null.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotNull<T>(value: T, message?: string): asserts value is Exclude<T, null>;
+
+ /**
+ * Asserts that value is NaN.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNaN<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not NaN.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotNaN<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that the target is neither null nor undefined.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ exists<T>(value: T, message?: string): asserts value is NonNullable<T>;
+
+ /**
+ * Asserts that the target is either null or undefined.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ notExists(value: unknown, message?: string): asserts value is
+ | null
+ | undefined;
+
+ /**
+ * Asserts that value is undefined.
+ *
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isUndefined(value: unknown, message?: string): asserts value is undefined;
+
+ /**
+ * Asserts that value is not undefined.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isDefined<T>(value: T, message?: string): asserts value is Exclude<T, undefined>;
+
+ /**
+ * Asserts that value is a function.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isFunction<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not a function.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotFunction<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is an object of type 'Object'
+ * (as revealed by Object.prototype.toString).
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ * @remarks The assertion does not match subclassed objects.
+ */
+ isObject<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not an object of type 'Object'
+ * (as revealed by Object.prototype.toString).
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotObject<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is an array.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isArray<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not an array.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotArray<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is a string.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isString<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not a string.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotString<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is a number.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNumber<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not a number.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotNumber<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is a finite number.
+ * Unlike `.isNumber`, this will fail for `NaN` and `Infinity`.
+ *
+ * T Type of value
+ * @param value Actual value
+ * @param message Message to display on error.
+ */
+ isFinite<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is a boolean.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isBoolean<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value is not a boolean.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param message Message to display on error.
+ */
+ isNotBoolean<T>(value: T, message?: string): void;
+
+ /**
+ * Asserts that value's type is name, as determined by Object.prototype.toString.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param name Potential expected type name of value.
+ * @param message Message to display on error.
+ */
+ typeOf<T>(value: T, name: string, message?: string): void;
+
+ /**
+ * Asserts that value's type is not name, as determined by Object.prototype.toString.
+ *
+ * T Type of value.
+ * @param value Actual value.
+ * @param name Potential expected type name of value.
+ * @param message Message to display on error.
+ */
+ notTypeOf<T>(value: T, name: string, message?: string): void;
+
+ /**
+ * Asserts that value is an instance of constructor.
+ *
+ * T Expected type of value.
+ * @param value Actual value.
+ * @param constructor Potential expected contructor of value.
+ * @param message Message to display on error.
+ */
+ instanceOf<T>(
+ value: unknown,
+ constructor: Constructor<T>,
+ message?: string,
+ ): asserts value is T;
+
+ /**
+ * Asserts that value is not an instance of constructor.
+ *
+ * T Type of value.
+ * U Type that value shouldn't be an instance of.
+ * @param value Actual value.
+ * @param constructor Potential expected contructor of value.
+ * @param message Message to display on error.
+ */
+ notInstanceOf<T, U>(value: T, type: Constructor<U>, message?: string): asserts value is Exclude<T, U>;
+
+ /**
+ * Asserts that haystack includes needle.
+ *
+ * @param haystack Container string.
+ * @param needle Potential substring of haystack.
+ * @param message Message to display on error.
+ */
+ include(haystack: string, needle: string, message?: string): void;
+
+ /**
+ * Asserts that haystack includes needle.
+ *
+ * T Type of values in haystack.
+ * @param haystack Container array, set or map.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ include<T>(
+ haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>,
+ needle: T,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that haystack includes needle.
+ *
+ * T Type of values in haystack.
+ * @param haystack WeakSet container.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ include<T extends object>(haystack: WeakSet<T>, needle: T, message?: string): void;
+
+ /**
+ * Asserts that haystack includes needle.
+ *
+ * T Type of haystack.
+ * @param haystack Object.
+ * @param needle Potential subset of the haystack's properties.
+ * @param message Message to display on error.
+ */
+ include<T>(haystack: T, needle: Partial<T>, message?: string): void;
+
+ /**
+ * Asserts that haystack does not include needle.
+ *
+ * @param haystack Container string.
+ * @param needle Potential substring of haystack.
+ * @param message Message to display on error.
+ */
+ notInclude(haystack: string, needle: string, message?: string): void;
+
+ /**
+ * Asserts that haystack does not include needle.
+ *
+ * T Type of values in haystack.
+ * @param haystack Container array, set or map.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ notInclude<T>(
+ haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>,
+ needle: T,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that haystack does not include needle.
+ *
+ * T Type of values in haystack.
+ * @param haystack WeakSet container.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ notInclude<T extends object>(haystack: WeakSet<T>, needle: T, message?: string): void;
+
+ /**
+ * Asserts that haystack does not include needle.
+ *
+ * T Type of haystack.
+ * @param haystack Object.
+ * @param needle Potential subset of the haystack's properties.
+ * @param message Message to display on error.
+ */
+ notInclude<T>(haystack: T, needle: Partial<T>, message?: string): void;
+
+ /**
+ * Asserts that haystack includes needle. Deep equality is used.
+ *
+ * @param haystack Container string.
+ * @param needle Potential substring of haystack.
+ * @param message Message to display on error.
+ *
+ * @deprecated Does not have any effect on string. Use {@link Assert#include} instead.
+ */
+ deepInclude(haystack: string, needle: string, message?: string): void;
+
+ /**
+ * Asserts that haystack includes needle. Deep equality is used.
+ *
+ * T Type of values in haystack.
+ * @param haystack Container array, set or map.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ deepInclude<T>(
+ haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>,
+ needle: T,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that haystack includes needle. Deep equality is used.
+ *
+ * T Type of haystack.
+ * @param haystack Object.
+ * @param needle Potential subset of the haystack's properties.
+ * @param message Message to display on error.
+ */
+ deepInclude<T>(haystack: T, needle: T extends WeakSet<any> ? never : Partial<T>, message?: string): void;
+
+ /**
+ * Asserts that haystack does not include needle. Deep equality is used.
+ *
+ * @param haystack Container string.
+ * @param needle Potential substring of haystack.
+ * @param message Message to display on error.
+ *
+ * @deprecated Does not have any effect on string. Use {@link Assert#notInclude} instead.
+ */
+ notDeepInclude(haystack: string, needle: string, message?: string): void;
+
+ /**
+ * Asserts that haystack does not include needle. Deep equality is used.
+ *
+ * T Type of values in haystack.
+ * @param haystack Container array, set or map.
+ * @param needle Potential value contained in haystack.
+ * @param message Message to display on error.
+ */
+ notDeepInclude<T>(
+ haystack: readonly T[] | ReadonlySet<T> | ReadonlyMap<any, T>,
+ needle: T,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that haystack does not include needle. Deep equality is used.
+ *
+ * T Type of haystack.
+ * @param haystack Object.
+ * @param needle Potential subset of the haystack's properties.
+ * @param message Message to display on error.
+ */
+ notDeepInclude<T>(haystack: T, needle: T extends WeakSet<any> ? never : Partial<T>, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object.
+ *
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.
+ * Can be used to assert the inclusion of a subset of properties in an object.
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ nestedInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object.
+ *
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.
+ * Can be used to assert the inclusion of a subset of properties in an object.
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ notNestedInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while checking for deep equality
+ *
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.
+ * Can be used to assert the inclusion of a subset of properties in an object.
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ deepNestedInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ does not include ‘needle’. Can be used to assert the absence of a subset of properties in an object while checking for deep equality.
+ *
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.Asserts that ‘haystack’ includes ‘needle’.
+ * Can be used to assert the inclusion of a subset of properties in an object.
+ * Enables the use of dot- and bracket-notation for referencing nested properties.
+ * ‘[]’ and ‘.’ in property names can be escaped using double backslashes.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ notDeepNestedInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ ownInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ notOwnInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the inclusion of a subset of properties in an object while ignoring inherited properties and checking for deep
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ deepOwnInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that ‘haystack’ includes ‘needle’. Can be used to assert the absence of a subset of properties in an object while ignoring inherited properties and checking for deep equality.
+ *
+ * @param haystack
+ * @param needle
+ * @param message Message to display on error.
+ */
+ notDeepOwnInclude(haystack: any, needle: any, message?: string): void;
+
+ /**
+ * Asserts that value matches the regular expression regexp.
+ *
+ * @param value Actual value.
+ * @param regexp Potential match of value.
+ * @param message Message to display on error.
+ */
+ match(value: string, regexp: RegExp, message?: string): void;
+
+ /**
+ * Asserts that value does not match the regular expression regexp.
+ *
+ * @param value Actual value.
+ * @param regexp Potential match of value.
+ * @param message Message to display on error.
+ */
+ notMatch(expected: any, regexp: RegExp, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property.
+ *
+ * T Type of object.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param message Message to display on error.
+ */
+ property<T>(object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property.
+ *
+ * T Type of object.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param message Message to display on error.
+ */
+ notProperty<T>(object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property, which can be a string
+ * using dot- and bracket-notation for deep reference.
+ *
+ * T Type of object.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param message Message to display on error.
+ */
+ deepProperty<T>(object: T, property: string, message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property, which can be a
+ * string using dot- and bracket-notation for deep reference.
+ *
+ * T Type of object.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param message Message to display on error.
+ */
+ notDeepProperty<T>(object: T, property: string, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property with value given by value.
+ *
+ * T Type of object.
+ * V Type of value.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param value Potential expected property value.
+ * @param message Message to display on error.
+ */
+ propertyVal<T, V>(object: T, property: string, /* keyof T */ value: V, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property with value given by value.
+ *
+ * T Type of object.
+ * V Type of value.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param value Potential expected property value.
+ * @param message Message to display on error.
+ */
+ notPropertyVal<T, V>(object: T, property: string, /* keyof T */ value: V, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property, which can be a string
+ * using dot- and bracket-notation for deep reference.
+ *
+ * T Type of object.
+ * V Type of value.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param value Potential expected property value.
+ * @param message Message to display on error.
+ */
+ deepPropertyVal<T, V>(object: T, property: string, value: V, message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property, which can be a
+ * string using dot- and bracket-notation for deep reference.
+ *
+ * T Type of object.
+ * V Type of value.
+ * @param object Container object.
+ * @param property Potential contained property of object.
+ * @param value Potential expected property value.
+ * @param message Message to display on error.
+ */
+ notDeepPropertyVal<T, V>(object: T, property: string, value: V, message?: string): void;
+
+ /**
+ * Asserts that object has a length property with the expected value.
+ *
+ * T Type of object.
+ * @param object Container object.
+ * @param length Potential expected length of object.
+ * @param message Message to display on error.
+ */
+ lengthOf<T extends { readonly length?: number | undefined } | { readonly size?: number | undefined }>(
+ object: T,
+ length: number,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param ignored Ignored parameter.
+ * @param message Message to display on error.
+ */
+ throw(fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errorLike Expected error constructor or error instance.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param message Message to display on error.
+ */
+ throw(
+ fn: () => void,
+ errorLike?: ErrorConstructor | Error | null,
+ errMsgMatcher?: RegExp | string | null,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param ignored Ignored parameter.
+ * @param message Message to display on error.
+ */
+ throws(fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errorLike Expected error constructor or error instance.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param message Message to display on error.
+ */
+ throws(
+ fn: () => void,
+ errorLike?: ErrorConstructor | Error | null,
+ errMsgMatcher?: RegExp | string | null,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param ignored Ignored parameter.
+ * @param message Message to display on error.
+ */
+ Throw(fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string): void;
+
+ /**
+ * Asserts that fn will throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errorLike Expected error constructor or error instance.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param message Message to display on error.
+ */
+ Throw(
+ fn: () => void,
+ errorLike?: ErrorConstructor | Error | null,
+ errMsgMatcher?: RegExp | string | null,
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that fn will not throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param ignored Ignored parameter.
+ * @param message Message to display on error.
+ */
+ doesNotThrow(fn: () => void, errMsgMatcher?: RegExp | string, ignored?: any, message?: string): void;
+
+ /**
+ * Asserts that fn will not throw an error.
+ *
+ * @param fn Function that may throw.
+ * @param errorLike Expected error constructor or error instance.
+ * @param errMsgMatcher Expected error message matcher.
+ * @param message Message to display on error.
+ */
+ doesNotThrow(
+ fn: () => void,
+ errorLike?: ErrorConstructor | Error | null,
+ errMsgMatcher?: RegExp | string | null,
+ message?: string,
+ ): void;
+
+ /**
+ * Compares two values using operator.
+ *
+ * @param val1 Left value during comparison.
+ * @param operator Comparison operator.
+ * @param val2 Right value during comparison.
+ * @param message Message to display on error.
+ */
+ operator(val1: OperatorComparable, operator: Operator, val2: OperatorComparable, message?: string): void;
+
+ /**
+ * Asserts that the target is equal to expected, to within a +/- delta range.
+ *
+ * @param actual Actual value
+ * @param expected Potential expected value.
+ * @param delta Maximum differenced between values.
+ * @param message Message to display on error.
+ */
+ closeTo(actual: number, expected: number, delta: number, message?: string): void;
+
+ /**
+ * Asserts that the target is equal to expected, to within a +/- delta range.
+ *
+ * @param actual Actual value
+ * @param expected Potential expected value.
+ * @param delta Maximum differenced between values.
+ * @param message Message to display on error.
+ */
+ approximately(act: number, exp: number, delta: number, message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 have the same members. Order is not take into account.
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ sameMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 have the same members using deep equality checking.
+ * Order is not take into account.
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ sameDeepMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that `set1` and `set2` don't have the same members in any order.
+ * Uses a deep equality check.
+ *
+ * T Type of set values.
+ * @param set1
+ * @param set2
+ * @param message
+ */
+ notSameDeepMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 have the same members in the same order.
+ * Uses a strict equality check (===).
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ sameOrderedMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 don’t have the same members in the same order.
+ * Uses a strict equality check (===).
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ notSameOrderedMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 have the same members in the same order.
+ * Uses a deep equality check.
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ sameDeepOrderedMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that set1 and set2 don’t have the same members in the same order.
+ * Uses a deep equality check.
+ *
+ * T Type of set values.
+ * @param set1 Actual set of values.
+ * @param set2 Potential expected set of values.
+ * @param message Message to display on error.
+ */
+ notSameDeepOrderedMembers<T>(set1: T[], set2: T[], message?: string): void;
+
+ /**
+ * Asserts that subset is included in superset in the same order beginning with the first element in superset.
+ * Uses a strict equality check (===).
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ includeOrderedMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.
+ * Uses a strict equality check (===).
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ notIncludeOrderedMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset is included in superset in the same order beginning with the first element in superset.
+ * Uses a deep equality check.
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ includeDeepOrderedMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset isn’t included in superset in the same order beginning with the first element in superset.
+ * Uses a deep equality check.
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ notIncludeDeepOrderedMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset is included in superset. Order is not take into account.
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ includeMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset isn’t included in superset in any order.
+ * Uses a strict equality check (===). Duplicates are ignored.
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential not contained set of values.
+ * @param message Message to display on error.
+ */
+ notIncludeMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that subset is included in superset using deep equality checking.
+ * Order is not take into account.
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ includeDeepMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that `subset` isn't included in `superset` in any order. Uses a
+ * deep equality check. Duplicates are ignored.
+ *
+ * assert.notIncludeDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [ { b: 2 }, { f: 5 } ], 'not include deep members');
+ *
+ * T Type of set values.
+ * @param superset Actual set of values.
+ * @param subset Potential contained set of values.
+ * @param message Message to display on error.
+ */
+ notIncludeDeepMembers<T>(superset: T[], subset: T[], message?: string): void;
+
+ /**
+ * Asserts that non-object, non-array value inList appears in the flat array list.
+ *
+ * T Type of list values.
+ * @param inList Value expected to be in the list.
+ * @param list List of values.
+ * @param message Message to display on error.
+ */
+ oneOf<T>(inList: T, list: T[], message?: string): void;
+
+ /**
+ * Asserts that a function changes the value of a property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected to be modified.
+ * @param message Message to display on error.
+ */
+ changes<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function changes the value of a property by an amount (delta).
+ *
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+ changesBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ changesBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts that a function does not change the value of a property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected not to be modified.
+ * @param message Message to display on error.
+ */
+ doesNotChange<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function increases an object property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected to be increased.
+ * @param message Message to display on error.
+ */
+ increases<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function increases a numeric object property or a function's return value by an amount (delta).
+ *
+ * T Type of object or function.
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+ increasesBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ increasesBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts that a function does not increase an object property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected not to be increased.
+ * @param message Message to display on error.
+ */
+ doesNotIncrease<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function does not increase a numeric object property or function's return value by an amount (delta).
+ *
+ * T Type of object or function.
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+
+ increasesButNotBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ increasesButNotBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts that a function decreases an object property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected to be decreased.
+ * @param message Message to display on error.
+ */
+ decreases<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function decreases a numeric object property or a function's return value by an amount (delta)
+ *
+ * T Type of object or function.
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+
+ decreasesBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ decreasesBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts that a function does not decrease an object property.
+ *
+ * T Type of object.
+ * @param modifier Function to run.
+ * @param object Container object.
+ * @param property Property of object expected not to be decreased.
+ * @param message Message to display on error.
+ */
+ doesNotDecrease<T>(modifier: Function, object: T, property: string, /* keyof T */ message?: string): void;
+
+ /**
+ * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)
+ *
+ * T Type of object or function.
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+
+ doesNotDecreaseBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ doesNotDecreaseBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts that a function does not decreases a numeric object property or a function's return value by an amount (delta)
+ *
+ * T Type of object or function.
+ * @param modifier function
+ * @param object or getter function
+ * @param property name _optional_
+ * @param change amount (delta)
+ * @param message _optional_
+ */
+
+ decreasesButNotBy<T>(
+ modifier: Function,
+ object: T,
+ property: string,
+ /* keyof T */ change: number,
+ message?: string,
+ ): void;
+ decreasesButNotBy<T>(modifier: Function, object: T, change: number, message?: string): void;
+
+ /**
+ * Asserts if value is not a false value, and throws if it is a true value.
+ *
+ * T Type of object.
+ * @param object Actual value.
+ * @param message Message to display on error.
+ * @remarks This is added to allow for chai to be a drop-in replacement for
+ * Node’s assert class.
+ */
+ ifError<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is extensible (can have new properties added to it).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isExtensible<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is extensible (can have new properties added to it).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ extensible<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not extensible.
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isNotExtensible<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not extensible.
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ notExtensible<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is sealed (can have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isSealed<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is sealed (can have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ sealed<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not sealed.
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isNotSealed<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not sealed.
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ notSealed<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is frozen (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isFrozen<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is frozen (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ frozen<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not frozen (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isNotFrozen<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that object is not frozen (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ notFrozen<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that the target does not contain any values. For arrays and
+ * strings, it checks the length property. For Map and Set instances, it
+ * checks the size property. For non-function objects, it gets the count
+ * of own enumerable string keys.
+ *
+ * T Type of object
+ * @param object Actual value.
+ * @param message Message to display on error.
+ */
+ isEmpty<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that the target contains values. For arrays and strings, it checks
+ * the length property. For Map and Set instances, it checks the size property.
+ * For non-function objects, it gets the count of own enumerable string keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param message Message to display on error.
+ */
+ isNotEmpty<T>(object: T, message?: string): void;
+
+ /**
+ * Asserts that `object` has at least one of the `keys` provided.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ hasAnyKeys<T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string): void;
+
+ /**
+ * Asserts that `object` has all and only all of the `keys` provided.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ hasAllKeys<T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string): void;
+
+ /**
+ * Asserts that `object` has all of the `keys` provided but may have more keys not listed.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ containsAllKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that `object` has none of the `keys` provided.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ doesNotHaveAnyKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that `object` does not have at least one of the `keys` provided.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ doesNotHaveAllKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that `object` has at least one of the `keys` provided.
+ * Since Sets and Maps can have objects as keys you can use this assertion to perform
+ * a deep comparison.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ hasAnyDeepKeys<T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string): void;
+
+ /**
+ * Asserts that `object` has all and only all of the `keys` provided.
+ * Since Sets and Maps can have objects as keys you can use this assertion to perform
+ * a deep comparison.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ hasAllDeepKeys<T>(object: T, keys: Array<Object | string> | { [key: string]: any }, message?: string): void;
+
+ /**
+ * Asserts that `object` contains all of the `keys` provided.
+ * Since Sets and Maps can have objects as keys you can use this assertion to perform
+ * a deep comparison.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ containsAllDeepKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that `object` contains all of the `keys` provided.
+ * Since Sets and Maps can have objects as keys you can use this assertion to perform
+ * a deep comparison.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ doesNotHaveAnyDeepKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that `object` contains all of the `keys` provided.
+ * Since Sets and Maps can have objects as keys you can use this assertion to perform
+ * a deep comparison.
+ * You can also provide a single object instead of a `keys` array and its keys
+ * will be used as the expected set of keys.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param keys Keys to check
+ * @param message Message to display on error.
+ */
+ doesNotHaveAllDeepKeys<T>(
+ object: T,
+ keys: Array<Object | string> | { [key: string]: any },
+ message?: string,
+ ): void;
+
+ /**
+ * Asserts that object has a direct or inherited property named by property,
+ * which can be a string using dot- and bracket-notation for nested reference.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param message Message to display on error.
+ */
+ nestedProperty<T>(object: T, property: string, message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property,
+ * which can be a string using dot- and bracket-notation for nested reference.
+ * The property cannot exist on the object nor anywhere in its prototype chain.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param message Message to display on error.
+ */
+ notNestedProperty<T>(object: T, property: string, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property with value given by value.
+ * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param value Value to test.
+ * @param message Message to display on error.
+ */
+ nestedPropertyVal<T>(object: T, property: string, value: any, message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property with value given by value.
+ * property can use dot- and bracket-notation for nested reference. Uses a strict equality check (===).
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param value Value to test.
+ * @param message Message to display on error.
+ */
+ notNestedPropertyVal<T>(object: T, property: string, value: any, message?: string): void;
+
+ /**
+ * Asserts that object has a property named by property with a value given by value.
+ * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param value Value to test.
+ * @param message Message to display on error.
+ */
+ deepNestedPropertyVal<T>(object: T, property: string, value: any, message?: string): void;
+
+ /**
+ * Asserts that object does not have a property named by property with value given by value.
+ * property can use dot- and bracket-notation for nested reference. Uses a deep equality check.
+ *
+ * T Type of object.
+ * @param object Object to test.
+ * @param property Property to test.
+ * @param value Value to test.
+ * @param message Message to display on error.
+ */
+ notDeepNestedPropertyVal<T>(object: T, property: string, value: any, message?: string): void;
+ }
+
+ export interface Config {
+ /**
+ * Default: false
+ */
+ includeStack: boolean;
+
+ /**
+ * Default: true
+ */
+ showDiff: boolean;
+
+ /**
+ * Default: 40
+ */
+ truncateThreshold: number;
+
+ /**
+ * Default: true
+ */
+ useProxy: boolean;
+
+ /**
+ * Default: ['then', 'catch', 'inspect', 'toJSON']
+ */
+ proxyExcludedKeys: string[];
+
+ deepEqual: <L, R>(expected: L, actual: R) => void;
+ }
+
+ export type { ImportedAssertionError as AssertionError };
+ }
+}
+
+export function use(fn: Chai.ChaiPlugin): Chai.ChaiStatic;
+
+export const util: Chai.ChaiUtils;
+export const config: Chai.Config;
+export const Assertion: Chai.AssertionStatic;
+export const AssertionError: typeof ImportedAssertionError;
+export function should(): Chai.Should;
+export function Should(): Chai.Should;
+export const assert: Chai.AssertStatic;
+export const expect: Chai.ExpectStatic;
diff --git a/vanilla/node_modules/@types/chai/package.json b/vanilla/node_modules/@types/chai/package.json
new file mode 100644
index 0000000..7aec8d1
--- /dev/null
+++ b/vanilla/node_modules/@types/chai/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "@types/chai",
+ "version": "5.2.3",
+ "description": "TypeScript definitions for chai",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chai",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "Bart van der Schoor",
+ "githubUsername": "Bartvds",
+ "url": "https://github.com/Bartvds"
+ },
+ {
+ "name": "Andrew Brown",
+ "githubUsername": "AGBrown",
+ "url": "https://github.com/AGBrown"
+ },
+ {
+ "name": "Olivier Chevet",
+ "githubUsername": "olivr70",
+ "url": "https://github.com/olivr70"
+ },
+ {
+ "name": "Matt Wistrand",
+ "githubUsername": "mwistrand",
+ "url": "https://github.com/mwistrand"
+ },
+ {
+ "name": "Shaun Luttin",
+ "githubUsername": "shaunluttin",
+ "url": "https://github.com/shaunluttin"
+ },
+ {
+ "name": "Satana Charuwichitratana",
+ "githubUsername": "micksatana",
+ "url": "https://github.com/micksatana"
+ },
+ {
+ "name": "Erik Schierboom",
+ "githubUsername": "ErikSchierboom",
+ "url": "https://github.com/ErikSchierboom"
+ },
+ {
+ "name": "Bogdan Paranytsia",
+ "githubUsername": "bparan",
+ "url": "https://github.com/bparan"
+ },
+ {
+ "name": "CXuesong",
+ "githubUsername": "CXuesong",
+ "url": "https://github.com/CXuesong"
+ },
+ {
+ "name": "Joey Kilpatrick",
+ "githubUsername": "joeykilpatrick",
+ "url": "https://github.com/joeykilpatrick"
+ }
+ ],
+ "type": "module",
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/chai"
+ },
+ "scripts": {},
+ "dependencies": {
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
+ },
+ "peerDependencies": {},
+ "typesPublisherContentHash": "d9d83f1594f42010e624e46e4c8cfeee284bdd04cb05eb0730aec14140f2a833",
+ "typeScriptVersion": "5.2"
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@types/chai/register-should.d.ts b/vanilla/node_modules/@types/chai/register-should.d.ts
new file mode 100644
index 0000000..1e14f93
--- /dev/null
+++ b/vanilla/node_modules/@types/chai/register-should.d.ts
@@ -0,0 +1,7 @@
+declare global {
+ interface Object {
+ should: Chai.Assertion;
+ }
+}
+
+export {};
diff --git a/vanilla/node_modules/@types/deep-eql/LICENSE b/vanilla/node_modules/@types/deep-eql/LICENSE
new file mode 100644
index 0000000..9e841e7
--- /dev/null
+++ b/vanilla/node_modules/@types/deep-eql/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ 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/@types/deep-eql/README.md b/vanilla/node_modules/@types/deep-eql/README.md
new file mode 100644
index 0000000..48d96fc
--- /dev/null
+++ b/vanilla/node_modules/@types/deep-eql/README.md
@@ -0,0 +1,57 @@
+# Installation
+> `npm install --save @types/deep-eql`
+
+# Summary
+This package contains type definitions for deep-eql (https://github.com/chaijs/deep-eql).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql.
+## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql/index.d.ts)
+````ts
+declare namespace deepEqual {
+ /**
+ * Memoization class used to speed up comparison.
+ */
+ class MemoizeMap extends WeakMap<object, MemoizeMap | boolean> {}
+
+ interface DeepEqualOptions<T1 = unknown, T2 = unknown> {
+ /**
+ * Override default algorithm, determining custom equality.
+ */
+ comparator?: (leftHandOperand: T1, rightHandOperand: T2) => boolean | null;
+
+ /**
+ * Provide a custom memoization object which will cache the results of
+ * complex objects for a speed boost.
+ *
+ * By passing `false` you can disable memoization, but this will cause circular
+ * references to blow the stack.
+ */
+ memoize?: MemoizeMap | false;
+ }
+}
+
+/**
+ * Assert deeply nested sameValue equality between two objects of any type.
+ *
+ * @param leftHandOperand
+ * @param rightHandOperand
+ * @param [options] Additional options
+ * @return equal match
+ */
+declare function deepEqual<T1, T2>(
+ leftHandOperand: T1,
+ rightHandOperand: T2,
+ options?: deepEqual.DeepEqualOptions<T1, T2>,
+): boolean;
+
+export = deepEqual;
+
+````
+
+### Additional Details
+ * Last updated: Mon, 06 Nov 2023 22:41:05 GMT
+ * Dependencies: none
+
+# Credits
+These definitions were written by [Rodrigo Pietnechuk](https://github.com/ghnoob).
diff --git a/vanilla/node_modules/@types/deep-eql/index.d.ts b/vanilla/node_modules/@types/deep-eql/index.d.ts
new file mode 100644
index 0000000..0cdbefe
--- /dev/null
+++ b/vanilla/node_modules/@types/deep-eql/index.d.ts
@@ -0,0 +1,38 @@
+declare namespace deepEqual {
+ /**
+ * Memoization class used to speed up comparison.
+ */
+ class MemoizeMap extends WeakMap<object, MemoizeMap | boolean> {}
+
+ interface DeepEqualOptions<T1 = unknown, T2 = unknown> {
+ /**
+ * Override default algorithm, determining custom equality.
+ */
+ comparator?: (leftHandOperand: T1, rightHandOperand: T2) => boolean | null;
+
+ /**
+ * Provide a custom memoization object which will cache the results of
+ * complex objects for a speed boost.
+ *
+ * By passing `false` you can disable memoization, but this will cause circular
+ * references to blow the stack.
+ */
+ memoize?: MemoizeMap | false;
+ }
+}
+
+/**
+ * Assert deeply nested sameValue equality between two objects of any type.
+ *
+ * @param leftHandOperand
+ * @param rightHandOperand
+ * @param [options] Additional options
+ * @return equal match
+ */
+declare function deepEqual<T1, T2>(
+ leftHandOperand: T1,
+ rightHandOperand: T2,
+ options?: deepEqual.DeepEqualOptions<T1, T2>,
+): boolean;
+
+export = deepEqual;
diff --git a/vanilla/node_modules/@types/deep-eql/package.json b/vanilla/node_modules/@types/deep-eql/package.json
new file mode 100644
index 0000000..8761581
--- /dev/null
+++ b/vanilla/node_modules/@types/deep-eql/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "@types/deep-eql",
+ "version": "4.0.2",
+ "description": "TypeScript definitions for deep-eql",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "Rodrigo Pietnechuk",
+ "githubUsername": "ghnoob",
+ "url": "https://github.com/ghnoob"
+ }
+ ],
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/deep-eql"
+ },
+ "scripts": {},
+ "dependencies": {},
+ "typesPublisherContentHash": "3b8981ce557947fc00ca08cbd93b4206bfc0943360956867381a0a3f6b1eabf5",
+ "typeScriptVersion": "4.5"
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@types/estree/LICENSE b/vanilla/node_modules/@types/estree/LICENSE
new file mode 100644
index 0000000..9e841e7
--- /dev/null
+++ b/vanilla/node_modules/@types/estree/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ 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/@types/estree/README.md b/vanilla/node_modules/@types/estree/README.md
new file mode 100644
index 0000000..2af760b
--- /dev/null
+++ b/vanilla/node_modules/@types/estree/README.md
@@ -0,0 +1,15 @@
+# Installation
+> `npm install --save @types/estree`
+
+# Summary
+This package contains type definitions for estree (https://github.com/estree/estree).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree.
+
+### Additional Details
+ * Last updated: Fri, 06 Jun 2025 00:04:33 GMT
+ * Dependencies: none
+
+# Credits
+These definitions were written by [RReverser](https://github.com/RReverser).
diff --git a/vanilla/node_modules/@types/estree/flow.d.ts b/vanilla/node_modules/@types/estree/flow.d.ts
new file mode 100644
index 0000000..9d001a9
--- /dev/null
+++ b/vanilla/node_modules/@types/estree/flow.d.ts
@@ -0,0 +1,167 @@
+declare namespace ESTree {
+ interface FlowTypeAnnotation extends Node {}
+
+ interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {}
+
+ interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {}
+
+ interface FlowDeclaration extends Declaration {}
+
+ interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {}
+
+ interface ArrayTypeAnnotation extends FlowTypeAnnotation {
+ elementType: FlowTypeAnnotation;
+ }
+
+ interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
+
+ interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {}
+
+ interface ClassImplements extends Node {
+ id: Identifier;
+ typeParameters?: TypeParameterInstantiation | null;
+ }
+
+ interface ClassProperty {
+ key: Expression;
+ value?: Expression | null;
+ typeAnnotation?: TypeAnnotation | null;
+ computed: boolean;
+ static: boolean;
+ }
+
+ interface DeclareClass extends FlowDeclaration {
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ body: ObjectTypeAnnotation;
+ extends: InterfaceExtends[];
+ }
+
+ interface DeclareFunction extends FlowDeclaration {
+ id: Identifier;
+ }
+
+ interface DeclareModule extends FlowDeclaration {
+ id: Literal | Identifier;
+ body: BlockStatement;
+ }
+
+ interface DeclareVariable extends FlowDeclaration {
+ id: Identifier;
+ }
+
+ interface FunctionTypeAnnotation extends FlowTypeAnnotation {
+ params: FunctionTypeParam[];
+ returnType: FlowTypeAnnotation;
+ rest?: FunctionTypeParam | null;
+ typeParameters?: TypeParameterDeclaration | null;
+ }
+
+ interface FunctionTypeParam {
+ name: Identifier;
+ typeAnnotation: FlowTypeAnnotation;
+ optional: boolean;
+ }
+
+ interface GenericTypeAnnotation extends FlowTypeAnnotation {
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters?: TypeParameterInstantiation | null;
+ }
+
+ interface InterfaceExtends extends Node {
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters?: TypeParameterInstantiation | null;
+ }
+
+ interface InterfaceDeclaration extends FlowDeclaration {
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ extends: InterfaceExtends[];
+ body: ObjectTypeAnnotation;
+ }
+
+ interface IntersectionTypeAnnotation extends FlowTypeAnnotation {
+ types: FlowTypeAnnotation[];
+ }
+
+ interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {}
+
+ interface NullableTypeAnnotation extends FlowTypeAnnotation {
+ typeAnnotation: TypeAnnotation;
+ }
+
+ interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
+
+ interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {}
+
+ interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
+
+ interface StringTypeAnnotation extends FlowBaseTypeAnnotation {}
+
+ interface TupleTypeAnnotation extends FlowTypeAnnotation {
+ types: FlowTypeAnnotation[];
+ }
+
+ interface TypeofTypeAnnotation extends FlowTypeAnnotation {
+ argument: FlowTypeAnnotation;
+ }
+
+ interface TypeAlias extends FlowDeclaration {
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ right: FlowTypeAnnotation;
+ }
+
+ interface TypeAnnotation extends Node {
+ typeAnnotation: FlowTypeAnnotation;
+ }
+
+ interface TypeCastExpression extends Expression {
+ expression: Expression;
+ typeAnnotation: TypeAnnotation;
+ }
+
+ interface TypeParameterDeclaration extends Node {
+ params: Identifier[];
+ }
+
+ interface TypeParameterInstantiation extends Node {
+ params: FlowTypeAnnotation[];
+ }
+
+ interface ObjectTypeAnnotation extends FlowTypeAnnotation {
+ properties: ObjectTypeProperty[];
+ indexers: ObjectTypeIndexer[];
+ callProperties: ObjectTypeCallProperty[];
+ }
+
+ interface ObjectTypeCallProperty extends Node {
+ value: FunctionTypeAnnotation;
+ static: boolean;
+ }
+
+ interface ObjectTypeIndexer extends Node {
+ id: Identifier;
+ key: FlowTypeAnnotation;
+ value: FlowTypeAnnotation;
+ static: boolean;
+ }
+
+ interface ObjectTypeProperty extends Node {
+ key: Expression;
+ value: FlowTypeAnnotation;
+ optional: boolean;
+ static: boolean;
+ }
+
+ interface QualifiedTypeIdentifier extends Node {
+ qualification: Identifier | QualifiedTypeIdentifier;
+ id: Identifier;
+ }
+
+ interface UnionTypeAnnotation extends FlowTypeAnnotation {
+ types: FlowTypeAnnotation[];
+ }
+
+ interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {}
+}
diff --git a/vanilla/node_modules/@types/estree/index.d.ts b/vanilla/node_modules/@types/estree/index.d.ts
new file mode 100644
index 0000000..2bc66fb
--- /dev/null
+++ b/vanilla/node_modules/@types/estree/index.d.ts
@@ -0,0 +1,694 @@
+// This definition file follows a somewhat unusual format. ESTree allows
+// runtime type checks based on the `type` parameter. In order to explain this
+// to typescript we want to use discriminated union types:
+// https://github.com/Microsoft/TypeScript/pull/9163
+//
+// For ESTree this is a bit tricky because the high level interfaces like
+// Node or Function are pulling double duty. We want to pass common fields down
+// to the interfaces that extend them (like Identifier or
+// ArrowFunctionExpression), but you can't extend a type union or enforce
+// common fields on them. So we've split the high level interfaces into two
+// types, a base type which passes down inherited fields, and a type union of
+// all types which extend the base type. Only the type union is exported, and
+// the union is how other types refer to the collection of inheriting types.
+//
+// This makes the definitions file here somewhat more difficult to maintain,
+// but it has the notable advantage of making ESTree much easier to use as
+// an end user.
+
+export interface BaseNodeWithoutComments {
+ // Every leaf interface that extends BaseNode must specify a type property.
+ // The type property should be a string literal. For example, Identifier
+ // has: `type: "Identifier"`
+ type: string;
+ loc?: SourceLocation | null | undefined;
+ range?: [number, number] | undefined;
+}
+
+export interface BaseNode extends BaseNodeWithoutComments {
+ leadingComments?: Comment[] | undefined;
+ trailingComments?: Comment[] | undefined;
+}
+
+export interface NodeMap {
+ AssignmentProperty: AssignmentProperty;
+ CatchClause: CatchClause;
+ Class: Class;
+ ClassBody: ClassBody;
+ Expression: Expression;
+ Function: Function;
+ Identifier: Identifier;
+ Literal: Literal;
+ MethodDefinition: MethodDefinition;
+ ModuleDeclaration: ModuleDeclaration;
+ ModuleSpecifier: ModuleSpecifier;
+ Pattern: Pattern;
+ PrivateIdentifier: PrivateIdentifier;
+ Program: Program;
+ Property: Property;
+ PropertyDefinition: PropertyDefinition;
+ SpreadElement: SpreadElement;
+ Statement: Statement;
+ Super: Super;
+ SwitchCase: SwitchCase;
+ TemplateElement: TemplateElement;
+ VariableDeclarator: VariableDeclarator;
+}
+
+export type Node = NodeMap[keyof NodeMap];
+
+export interface Comment extends BaseNodeWithoutComments {
+ type: "Line" | "Block";
+ value: string;
+}
+
+export interface SourceLocation {
+ source?: string | null | undefined;
+ start: Position;
+ end: Position;
+}
+
+export interface Position {
+ /** >= 1 */
+ line: number;
+ /** >= 0 */
+ column: number;
+}
+
+export interface Program extends BaseNode {
+ type: "Program";
+ sourceType: "script" | "module";
+ body: Array<Directive | Statement | ModuleDeclaration>;
+ comments?: Comment[] | undefined;
+}
+
+export interface Directive extends BaseNode {
+ type: "ExpressionStatement";
+ expression: Literal;
+ directive: string;
+}
+
+export interface BaseFunction extends BaseNode {
+ params: Pattern[];
+ generator?: boolean | undefined;
+ async?: boolean | undefined;
+ // The body is either BlockStatement or Expression because arrow functions
+ // can have a body that's either. FunctionDeclarations and
+ // FunctionExpressions have only BlockStatement bodies.
+ body: BlockStatement | Expression;
+}
+
+export type Function = FunctionDeclaration | FunctionExpression | ArrowFunctionExpression;
+
+export type Statement =
+ | ExpressionStatement
+ | BlockStatement
+ | StaticBlock
+ | EmptyStatement
+ | DebuggerStatement
+ | WithStatement
+ | ReturnStatement
+ | LabeledStatement
+ | BreakStatement
+ | ContinueStatement
+ | IfStatement
+ | SwitchStatement
+ | ThrowStatement
+ | TryStatement
+ | WhileStatement
+ | DoWhileStatement
+ | ForStatement
+ | ForInStatement
+ | ForOfStatement
+ | Declaration;
+
+export interface BaseStatement extends BaseNode {}
+
+export interface EmptyStatement extends BaseStatement {
+ type: "EmptyStatement";
+}
+
+export interface BlockStatement extends BaseStatement {
+ type: "BlockStatement";
+ body: Statement[];
+ innerComments?: Comment[] | undefined;
+}
+
+export interface StaticBlock extends Omit<BlockStatement, "type"> {
+ type: "StaticBlock";
+}
+
+export interface ExpressionStatement extends BaseStatement {
+ type: "ExpressionStatement";
+ expression: Expression;
+}
+
+export interface IfStatement extends BaseStatement {
+ type: "IfStatement";
+ test: Expression;
+ consequent: Statement;
+ alternate?: Statement | null | undefined;
+}
+
+export interface LabeledStatement extends BaseStatement {
+ type: "LabeledStatement";
+ label: Identifier;
+ body: Statement;
+}
+
+export interface BreakStatement extends BaseStatement {
+ type: "BreakStatement";
+ label?: Identifier | null | undefined;
+}
+
+export interface ContinueStatement extends BaseStatement {
+ type: "ContinueStatement";
+ label?: Identifier | null | undefined;
+}
+
+export interface WithStatement extends BaseStatement {
+ type: "WithStatement";
+ object: Expression;
+ body: Statement;
+}
+
+export interface SwitchStatement extends BaseStatement {
+ type: "SwitchStatement";
+ discriminant: Expression;
+ cases: SwitchCase[];
+}
+
+export interface ReturnStatement extends BaseStatement {
+ type: "ReturnStatement";
+ argument?: Expression | null | undefined;
+}
+
+export interface ThrowStatement extends BaseStatement {
+ type: "ThrowStatement";
+ argument: Expression;
+}
+
+export interface TryStatement extends BaseStatement {
+ type: "TryStatement";
+ block: BlockStatement;
+ handler?: CatchClause | null | undefined;
+ finalizer?: BlockStatement | null | undefined;
+}
+
+export interface WhileStatement extends BaseStatement {
+ type: "WhileStatement";
+ test: Expression;
+ body: Statement;
+}
+
+export interface DoWhileStatement extends BaseStatement {
+ type: "DoWhileStatement";
+ body: Statement;
+ test: Expression;
+}
+
+export interface ForStatement extends BaseStatement {
+ type: "ForStatement";
+ init?: VariableDeclaration | Expression | null | undefined;
+ test?: Expression | null | undefined;
+ update?: Expression | null | undefined;
+ body: Statement;
+}
+
+export interface BaseForXStatement extends BaseStatement {
+ left: VariableDeclaration | Pattern;
+ right: Expression;
+ body: Statement;
+}
+
+export interface ForInStatement extends BaseForXStatement {
+ type: "ForInStatement";
+}
+
+export interface DebuggerStatement extends BaseStatement {
+ type: "DebuggerStatement";
+}
+
+export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration;
+
+export interface BaseDeclaration extends BaseStatement {}
+
+export interface MaybeNamedFunctionDeclaration extends BaseFunction, BaseDeclaration {
+ type: "FunctionDeclaration";
+ /** It is null when a function declaration is a part of the `export default function` statement */
+ id: Identifier | null;
+ body: BlockStatement;
+}
+
+export interface FunctionDeclaration extends MaybeNamedFunctionDeclaration {
+ id: Identifier;
+}
+
+export interface VariableDeclaration extends BaseDeclaration {
+ type: "VariableDeclaration";
+ declarations: VariableDeclarator[];
+ kind: "var" | "let" | "const" | "using" | "await using";
+}
+
+export interface VariableDeclarator extends BaseNode {
+ type: "VariableDeclarator";
+ id: Pattern;
+ init?: Expression | null | undefined;
+}
+
+export interface ExpressionMap {
+ ArrayExpression: ArrayExpression;
+ ArrowFunctionExpression: ArrowFunctionExpression;
+ AssignmentExpression: AssignmentExpression;
+ AwaitExpression: AwaitExpression;
+ BinaryExpression: BinaryExpression;
+ CallExpression: CallExpression;
+ ChainExpression: ChainExpression;
+ ClassExpression: ClassExpression;
+ ConditionalExpression: ConditionalExpression;
+ FunctionExpression: FunctionExpression;
+ Identifier: Identifier;
+ ImportExpression: ImportExpression;
+ Literal: Literal;
+ LogicalExpression: LogicalExpression;
+ MemberExpression: MemberExpression;
+ MetaProperty: MetaProperty;
+ NewExpression: NewExpression;
+ ObjectExpression: ObjectExpression;
+ SequenceExpression: SequenceExpression;
+ TaggedTemplateExpression: TaggedTemplateExpression;
+ TemplateLiteral: TemplateLiteral;
+ ThisExpression: ThisExpression;
+ UnaryExpression: UnaryExpression;
+ UpdateExpression: UpdateExpression;
+ YieldExpression: YieldExpression;
+}
+
+export type Expression = ExpressionMap[keyof ExpressionMap];
+
+export interface BaseExpression extends BaseNode {}
+
+export type ChainElement = SimpleCallExpression | MemberExpression;
+
+export interface ChainExpression extends BaseExpression {
+ type: "ChainExpression";
+ expression: ChainElement;
+}
+
+export interface ThisExpression extends BaseExpression {
+ type: "ThisExpression";
+}
+
+export interface ArrayExpression extends BaseExpression {
+ type: "ArrayExpression";
+ elements: Array<Expression | SpreadElement | null>;
+}
+
+export interface ObjectExpression extends BaseExpression {
+ type: "ObjectExpression";
+ properties: Array<Property | SpreadElement>;
+}
+
+export interface PrivateIdentifier extends BaseNode {
+ type: "PrivateIdentifier";
+ name: string;
+}
+
+export interface Property extends BaseNode {
+ type: "Property";
+ key: Expression | PrivateIdentifier;
+ value: Expression | Pattern; // Could be an AssignmentProperty
+ kind: "init" | "get" | "set";
+ method: boolean;
+ shorthand: boolean;
+ computed: boolean;
+}
+
+export interface PropertyDefinition extends BaseNode {
+ type: "PropertyDefinition";
+ key: Expression | PrivateIdentifier;
+ value?: Expression | null | undefined;
+ computed: boolean;
+ static: boolean;
+}
+
+export interface FunctionExpression extends BaseFunction, BaseExpression {
+ id?: Identifier | null | undefined;
+ type: "FunctionExpression";
+ body: BlockStatement;
+}
+
+export interface SequenceExpression extends BaseExpression {
+ type: "SequenceExpression";
+ expressions: Expression[];
+}
+
+export interface UnaryExpression extends BaseExpression {
+ type: "UnaryExpression";
+ operator: UnaryOperator;
+ prefix: true;
+ argument: Expression;
+}
+
+export interface BinaryExpression extends BaseExpression {
+ type: "BinaryExpression";
+ operator: BinaryOperator;
+ left: Expression | PrivateIdentifier;
+ right: Expression;
+}
+
+export interface AssignmentExpression extends BaseExpression {
+ type: "AssignmentExpression";
+ operator: AssignmentOperator;
+ left: Pattern | MemberExpression;
+ right: Expression;
+}
+
+export interface UpdateExpression extends BaseExpression {
+ type: "UpdateExpression";
+ operator: UpdateOperator;
+ argument: Expression;
+ prefix: boolean;
+}
+
+export interface LogicalExpression extends BaseExpression {
+ type: "LogicalExpression";
+ operator: LogicalOperator;
+ left: Expression;
+ right: Expression;
+}
+
+export interface ConditionalExpression extends BaseExpression {
+ type: "ConditionalExpression";
+ test: Expression;
+ alternate: Expression;
+ consequent: Expression;
+}
+
+export interface BaseCallExpression extends BaseExpression {
+ callee: Expression | Super;
+ arguments: Array<Expression | SpreadElement>;
+}
+export type CallExpression = SimpleCallExpression | NewExpression;
+
+export interface SimpleCallExpression extends BaseCallExpression {
+ type: "CallExpression";
+ optional: boolean;
+}
+
+export interface NewExpression extends BaseCallExpression {
+ type: "NewExpression";
+}
+
+export interface MemberExpression extends BaseExpression, BasePattern {
+ type: "MemberExpression";
+ object: Expression | Super;
+ property: Expression | PrivateIdentifier;
+ computed: boolean;
+ optional: boolean;
+}
+
+export type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | MemberExpression;
+
+export interface BasePattern extends BaseNode {}
+
+export interface SwitchCase extends BaseNode {
+ type: "SwitchCase";
+ test?: Expression | null | undefined;
+ consequent: Statement[];
+}
+
+export interface CatchClause extends BaseNode {
+ type: "CatchClause";
+ param: Pattern | null;
+ body: BlockStatement;
+}
+
+export interface Identifier extends BaseNode, BaseExpression, BasePattern {
+ type: "Identifier";
+ name: string;
+}
+
+export type Literal = SimpleLiteral | RegExpLiteral | BigIntLiteral;
+
+export interface SimpleLiteral extends BaseNode, BaseExpression {
+ type: "Literal";
+ value: string | boolean | number | null;
+ raw?: string | undefined;
+}
+
+export interface RegExpLiteral extends BaseNode, BaseExpression {
+ type: "Literal";
+ value?: RegExp | null | undefined;
+ regex: {
+ pattern: string;
+ flags: string;
+ };
+ raw?: string | undefined;
+}
+
+export interface BigIntLiteral extends BaseNode, BaseExpression {
+ type: "Literal";
+ value?: bigint | null | undefined;
+ bigint: string;
+ raw?: string | undefined;
+}
+
+export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete";
+
+export type BinaryOperator =
+ | "=="
+ | "!="
+ | "==="
+ | "!=="
+ | "<"
+ | "<="
+ | ">"
+ | ">="
+ | "<<"
+ | ">>"
+ | ">>>"
+ | "+"
+ | "-"
+ | "*"
+ | "/"
+ | "%"
+ | "**"
+ | "|"
+ | "^"
+ | "&"
+ | "in"
+ | "instanceof";
+
+export type LogicalOperator = "||" | "&&" | "??";
+
+export type AssignmentOperator =
+ | "="
+ | "+="
+ | "-="
+ | "*="
+ | "/="
+ | "%="
+ | "**="
+ | "<<="
+ | ">>="
+ | ">>>="
+ | "|="
+ | "^="
+ | "&="
+ | "||="
+ | "&&="
+ | "??=";
+
+export type UpdateOperator = "++" | "--";
+
+export interface ForOfStatement extends BaseForXStatement {
+ type: "ForOfStatement";
+ await: boolean;
+}
+
+export interface Super extends BaseNode {
+ type: "Super";
+}
+
+export interface SpreadElement extends BaseNode {
+ type: "SpreadElement";
+ argument: Expression;
+}
+
+export interface ArrowFunctionExpression extends BaseExpression, BaseFunction {
+ type: "ArrowFunctionExpression";
+ expression: boolean;
+ body: BlockStatement | Expression;
+}
+
+export interface YieldExpression extends BaseExpression {
+ type: "YieldExpression";
+ argument?: Expression | null | undefined;
+ delegate: boolean;
+}
+
+export interface TemplateLiteral extends BaseExpression {
+ type: "TemplateLiteral";
+ quasis: TemplateElement[];
+ expressions: Expression[];
+}
+
+export interface TaggedTemplateExpression extends BaseExpression {
+ type: "TaggedTemplateExpression";
+ tag: Expression;
+ quasi: TemplateLiteral;
+}
+
+export interface TemplateElement extends BaseNode {
+ type: "TemplateElement";
+ tail: boolean;
+ value: {
+ /** It is null when the template literal is tagged and the text has an invalid escape (e.g. - tag`\unicode and \u{55}`) */
+ cooked?: string | null | undefined;
+ raw: string;
+ };
+}
+
+export interface AssignmentProperty extends Property {
+ value: Pattern;
+ kind: "init";
+ method: boolean; // false
+}
+
+export interface ObjectPattern extends BasePattern {
+ type: "ObjectPattern";
+ properties: Array<AssignmentProperty | RestElement>;
+}
+
+export interface ArrayPattern extends BasePattern {
+ type: "ArrayPattern";
+ elements: Array<Pattern | null>;
+}
+
+export interface RestElement extends BasePattern {
+ type: "RestElement";
+ argument: Pattern;
+}
+
+export interface AssignmentPattern extends BasePattern {
+ type: "AssignmentPattern";
+ left: Pattern;
+ right: Expression;
+}
+
+export type Class = ClassDeclaration | ClassExpression;
+export interface BaseClass extends BaseNode {
+ superClass?: Expression | null | undefined;
+ body: ClassBody;
+}
+
+export interface ClassBody extends BaseNode {
+ type: "ClassBody";
+ body: Array<MethodDefinition | PropertyDefinition | StaticBlock>;
+}
+
+export interface MethodDefinition extends BaseNode {
+ type: "MethodDefinition";
+ key: Expression | PrivateIdentifier;
+ value: FunctionExpression;
+ kind: "constructor" | "method" | "get" | "set";
+ computed: boolean;
+ static: boolean;
+}
+
+export interface MaybeNamedClassDeclaration extends BaseClass, BaseDeclaration {
+ type: "ClassDeclaration";
+ /** It is null when a class declaration is a part of the `export default class` statement */
+ id: Identifier | null;
+}
+
+export interface ClassDeclaration extends MaybeNamedClassDeclaration {
+ id: Identifier;
+}
+
+export interface ClassExpression extends BaseClass, BaseExpression {
+ type: "ClassExpression";
+ id?: Identifier | null | undefined;
+}
+
+export interface MetaProperty extends BaseExpression {
+ type: "MetaProperty";
+ meta: Identifier;
+ property: Identifier;
+}
+
+export type ModuleDeclaration =
+ | ImportDeclaration
+ | ExportNamedDeclaration
+ | ExportDefaultDeclaration
+ | ExportAllDeclaration;
+export interface BaseModuleDeclaration extends BaseNode {}
+
+export type ModuleSpecifier = ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier;
+export interface BaseModuleSpecifier extends BaseNode {
+ local: Identifier;
+}
+
+export interface ImportDeclaration extends BaseModuleDeclaration {
+ type: "ImportDeclaration";
+ specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>;
+ attributes: ImportAttribute[];
+ source: Literal;
+}
+
+export interface ImportSpecifier extends BaseModuleSpecifier {
+ type: "ImportSpecifier";
+ imported: Identifier | Literal;
+}
+
+export interface ImportAttribute extends BaseNode {
+ type: "ImportAttribute";
+ key: Identifier | Literal;
+ value: Literal;
+}
+
+export interface ImportExpression extends BaseExpression {
+ type: "ImportExpression";
+ source: Expression;
+ options?: Expression | null | undefined;
+}
+
+export interface ImportDefaultSpecifier extends BaseModuleSpecifier {
+ type: "ImportDefaultSpecifier";
+}
+
+export interface ImportNamespaceSpecifier extends BaseModuleSpecifier {
+ type: "ImportNamespaceSpecifier";
+}
+
+export interface ExportNamedDeclaration extends BaseModuleDeclaration {
+ type: "ExportNamedDeclaration";
+ declaration?: Declaration | null | undefined;
+ specifiers: ExportSpecifier[];
+ attributes: ImportAttribute[];
+ source?: Literal | null | undefined;
+}
+
+export interface ExportSpecifier extends Omit<BaseModuleSpecifier, "local"> {
+ type: "ExportSpecifier";
+ local: Identifier | Literal;
+ exported: Identifier | Literal;
+}
+
+export interface ExportDefaultDeclaration extends BaseModuleDeclaration {
+ type: "ExportDefaultDeclaration";
+ declaration: MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration | Expression;
+}
+
+export interface ExportAllDeclaration extends BaseModuleDeclaration {
+ type: "ExportAllDeclaration";
+ exported: Identifier | Literal | null;
+ attributes: ImportAttribute[];
+ source: Literal;
+}
+
+export interface AwaitExpression extends BaseExpression {
+ type: "AwaitExpression";
+ argument: Expression;
+}
diff --git a/vanilla/node_modules/@types/estree/package.json b/vanilla/node_modules/@types/estree/package.json
new file mode 100644
index 0000000..68c0782
--- /dev/null
+++ b/vanilla/node_modules/@types/estree/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@types/estree",
+ "version": "1.0.8",
+ "description": "TypeScript definitions for estree",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "RReverser",
+ "githubUsername": "RReverser",
+ "url": "https://github.com/RReverser"
+ }
+ ],
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/estree"
+ },
+ "scripts": {},
+ "dependencies": {},
+ "peerDependencies": {},
+ "typesPublisherContentHash": "7a167b6e4a4d9f6e9a2cb9fd3fc45c885f89cbdeb44b3e5961bb057a45c082fd",
+ "typeScriptVersion": "5.1",
+ "nonNpm": true
+} \ No newline at end of file