",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/es-shims/dunder-proto/issues"
+ },
+ "homepage": "https://github.com/es-shims/dunder-proto#readme",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.1",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.2",
+ "@types/tape": "^5.7.0",
+ "auto-changelog": "^2.5.0",
+ "encoding": "^0.1.13",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "testling": {
+ "files": "test/index.js"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/node_modules/dunder-proto/set.d.ts b/node_modules/dunder-proto/set.d.ts
new file mode 100644
index 0000000..16bfdfe
--- /dev/null
+++ b/node_modules/dunder-proto/set.d.ts
@@ -0,0 +1,5 @@
+declare function setDunderProto(target: {}, proto: P): P;
+
+declare const x: false | typeof setDunderProto;
+
+export = x;
\ No newline at end of file
diff --git a/node_modules/dunder-proto/set.js b/node_modules/dunder-proto/set.js
new file mode 100644
index 0000000..6085b6e
--- /dev/null
+++ b/node_modules/dunder-proto/set.js
@@ -0,0 +1,35 @@
+'use strict';
+
+var callBind = require('call-bind-apply-helpers');
+var gOPD = require('gopd');
+var $TypeError = require('es-errors/type');
+
+/** @type {{ __proto__?: object | null }} */
+var obj = {};
+try {
+ obj.__proto__ = null; // eslint-disable-line no-proto
+} catch (e) {
+ if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {
+ throw e;
+ }
+}
+
+var hasProtoMutator = !('toString' in obj);
+
+// eslint-disable-next-line no-extra-parens
+var desc = gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));
+
+/** @type {import('./set')} */
+module.exports = hasProtoMutator && (
+// eslint-disable-next-line no-extra-parens
+ (!!desc && typeof desc.set === 'function' && /** @type {import('./set')} */ (callBind([desc.set])))
+ || /** @type {import('./set')} */ function setDunder(object, proto) {
+ // this is node v0.10 or older, which doesn't have Object.setPrototypeOf and has undeniable __proto__
+ if (object == null) { // eslint-disable-line eqeqeq
+ throw new $TypeError('set Object.prototype.__proto__ called on null or undefined');
+ }
+ // eslint-disable-next-line no-proto, no-param-reassign, no-extra-parens
+ /** @type {{ __proto__?: object | null }} */ (object).__proto__ = proto;
+ return proto;
+ }
+);
diff --git a/node_modules/dunder-proto/test/get.js b/node_modules/dunder-proto/test/get.js
new file mode 100644
index 0000000..253f183
--- /dev/null
+++ b/node_modules/dunder-proto/test/get.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var test = require('tape');
+
+var getDunderProto = require('../get');
+
+test('getDunderProto', { skip: !getDunderProto }, function (t) {
+ if (!getDunderProto) {
+ throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal
+ }
+
+ // @ts-expect-error
+ t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument');
+ // @ts-expect-error
+ t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined');
+ // @ts-expect-error
+ t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null');
+
+ t.equal(getDunderProto({}), Object.prototype);
+ t.equal(getDunderProto([]), Array.prototype);
+ t.equal(getDunderProto(function () {}), Function.prototype);
+ t.equal(getDunderProto(/./g), RegExp.prototype);
+ t.equal(getDunderProto(42), Number.prototype);
+ t.equal(getDunderProto(true), Boolean.prototype);
+ t.equal(getDunderProto('foo'), String.prototype);
+
+ t.end();
+});
+
+test('no dunder proto', { skip: !!getDunderProto }, function (t) {
+ t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype');
+
+ t.end();
+});
diff --git a/node_modules/dunder-proto/test/index.js b/node_modules/dunder-proto/test/index.js
new file mode 100644
index 0000000..08ff36f
--- /dev/null
+++ b/node_modules/dunder-proto/test/index.js
@@ -0,0 +1,4 @@
+'use strict';
+
+require('./get');
+require('./set');
diff --git a/node_modules/dunder-proto/test/set.js b/node_modules/dunder-proto/test/set.js
new file mode 100644
index 0000000..c3bfe4d
--- /dev/null
+++ b/node_modules/dunder-proto/test/set.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var test = require('tape');
+
+var setDunderProto = require('../set');
+
+test('setDunderProto', { skip: !setDunderProto }, function (t) {
+ if (!setDunderProto) {
+ throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal
+ }
+
+ // @ts-expect-error
+ t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments');
+ // @ts-expect-error
+ t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing');
+ // @ts-expect-error
+ t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined');
+ // @ts-expect-error
+ t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined');
+ // @ts-expect-error
+ t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined');
+
+ /** @type {{ inherited?: boolean }} */
+ var obj = {};
+ t.ok('toString' in obj, 'object initially has toString');
+
+ setDunderProto(obj, null);
+ t.notOk('toString' in obj, 'object no longer has toString');
+
+ t.notOk('inherited' in obj, 'object lacks inherited property');
+ setDunderProto(obj, { inherited: true });
+ t.equal(obj.inherited, true, 'object has inherited property');
+
+ t.end();
+});
+
+test('no dunder proto', { skip: !!setDunderProto }, function (t) {
+ if ('__proto__' in Object.prototype) {
+ t['throws'](
+ // @ts-expect-error
+ function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto
+ Error,
+ 'throws when setting Object.prototype.__proto__'
+ );
+ } else {
+ t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype');
+ }
+
+ t.end();
+});
diff --git a/node_modules/dunder-proto/tsconfig.json b/node_modules/dunder-proto/tsconfig.json
new file mode 100644
index 0000000..dabbe23
--- /dev/null
+++ b/node_modules/dunder-proto/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "ES2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/es-object-atoms/isObject.d.ts b/node_modules/es-object-atoms/isObject.d.ts
new file mode 100644
index 0000000..43bee3b
--- /dev/null
+++ b/node_modules/es-object-atoms/isObject.d.ts
@@ -0,0 +1,3 @@
+declare function isObject(x: unknown): x is object;
+
+export = isObject;
diff --git a/node_modules/es-object-atoms/isObject.js b/node_modules/es-object-atoms/isObject.js
new file mode 100644
index 0000000..ec49bf1
--- /dev/null
+++ b/node_modules/es-object-atoms/isObject.js
@@ -0,0 +1,6 @@
+'use strict';
+
+/** @type {import('./isObject')} */
+module.exports = function isObject(x) {
+ return !!x && (typeof x === 'function' || typeof x === 'object');
+};
diff --git a/node_modules/eslint-config-airbnb-base/node_modules/.bin/eslint b/node_modules/eslint-config-airbnb-base/node_modules/.bin/eslint
new file mode 120000
index 0000000..fad93f5
--- /dev/null
+++ b/node_modules/eslint-config-airbnb-base/node_modules/.bin/eslint
@@ -0,0 +1 @@
+../../../eslint/bin/eslint.js
\ No newline at end of file
diff --git a/node_modules/eslint-config-airbnb-base/node_modules/.bin/semver b/node_modules/eslint-config-airbnb-base/node_modules/.bin/semver
index 62e2968..c3277a7 120000
--- a/node_modules/eslint-config-airbnb-base/node_modules/.bin/semver
+++ b/node_modules/eslint-config-airbnb-base/node_modules/.bin/semver
@@ -1,15 +1 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../../../semver/bin/semver.js" "$@"
- ret=$?
-else
- node "$basedir/../../../semver/bin/semver.js" "$@"
- ret=$?
-fi
-exit $ret
+../../../semver/bin/semver.js
\ No newline at end of file
diff --git a/node_modules/eslint-config-airbnb/node_modules/.bin/eslint b/node_modules/eslint-config-airbnb/node_modules/.bin/eslint
new file mode 120000
index 0000000..fad93f5
--- /dev/null
+++ b/node_modules/eslint-config-airbnb/node_modules/.bin/eslint
@@ -0,0 +1 @@
+../../../eslint/bin/eslint.js
\ No newline at end of file
diff --git a/node_modules/eslint/node_modules/.bin/js-yaml b/node_modules/eslint/node_modules/.bin/js-yaml
new file mode 120000
index 0000000..daf9f11
--- /dev/null
+++ b/node_modules/eslint/node_modules/.bin/js-yaml
@@ -0,0 +1 @@
+../../../js-yaml/bin/js-yaml.js
\ No newline at end of file
diff --git a/node_modules/espree/node_modules/.bin/acorn b/node_modules/espree/node_modules/.bin/acorn
new file mode 120000
index 0000000..fa65fee
--- /dev/null
+++ b/node_modules/espree/node_modules/.bin/acorn
@@ -0,0 +1 @@
+../../../acorn/bin/acorn
\ No newline at end of file
diff --git a/node_modules/fastq/SECURITY.md b/node_modules/fastq/SECURITY.md
new file mode 100644
index 0000000..dd9f1d5
--- /dev/null
+++ b/node_modules/fastq/SECURITY.md
@@ -0,0 +1,15 @@
+# Security Policy
+
+## Supported Versions
+
+Use this section to tell people about which versions of your project are
+currently being supported with security updates.
+
+| Version | Supported |
+| ------- | ------------------ |
+| 1.x | :white_check_mark: |
+| < 1.0 | :x: |
+
+## Reporting a Vulnerability
+
+Please report all vulnerabilities at [https://github.com/mcollina/fastq/security](https://github.com/mcollina/fastq/security).
diff --git a/node_modules/fastq/package.json b/node_modules/fastq/package.json
index f16473b..0673897 100644
--- a/node_modules/fastq/package.json
+++ b/node_modules/fastq/package.json
@@ -1,6 +1,10 @@
{
"name": "fastq",
+<<<<<<< HEAD
+ "version": "1.18.0",
+=======
"version": "1.19.0",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Fast, in memory work queue",
"main": "queue.js",
"scripts": {
diff --git a/node_modules/flat-cache/node_modules/.bin/rimraf b/node_modules/flat-cache/node_modules/.bin/rimraf
new file mode 120000
index 0000000..632d6da
--- /dev/null
+++ b/node_modules/flat-cache/node_modules/.bin/rimraf
@@ -0,0 +1 @@
+../../../rimraf/bin.js
\ No newline at end of file
diff --git a/node_modules/flatted/package.json b/node_modules/flatted/package.json
index 6c0f3f8..cf8537b 100644
--- a/node_modules/flatted/package.json
+++ b/node_modules/flatted/package.json
@@ -1,6 +1,10 @@
{
"name": "flatted",
+<<<<<<< HEAD
+ "version": "3.3.2",
+=======
"version": "3.3.3",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "A super light and fast circular JSON parser.",
"unpkg": "min.js",
"main": "./cjs/index.js",
@@ -22,6 +26,15 @@
"type": "git",
"url": "git+https://github.com/WebReflection/flatted.git"
},
+<<<<<<< HEAD
+ "keywords": [
+ "circular",
+ "JSON",
+ "fast",
+ "parser",
+ "minimal"
+ ],
+=======
"files": [
"LICENSE",
"README.md",
@@ -42,6 +55,7 @@
"parser",
"minimal"
],
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"author": "Andrea Giammarchi",
"license": "ISC",
"bugs": {
diff --git a/node_modules/formstream/node_modules/.bin/mime b/node_modules/formstream/node_modules/.bin/mime
new file mode 120000
index 0000000..210a0bd
--- /dev/null
+++ b/node_modules/formstream/node_modules/.bin/mime
@@ -0,0 +1 @@
+../../../mime/cli.js
\ No newline at end of file
diff --git a/node_modules/get-intrinsic/CHANGELOG.md b/node_modules/get-intrinsic/CHANGELOG.md
index ce1dd98..bd6c1c7 100644
--- a/node_modules/get-intrinsic/CHANGELOG.md
+++ b/node_modules/get-intrinsic/CHANGELOG.md
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+<<<<<<< HEAD
+=======
## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22
### Commits
@@ -13,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043)
- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc)
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02
### Commits
diff --git a/node_modules/get-intrinsic/package.json b/node_modules/get-intrinsic/package.json
index 2828e73..ceacc73 100644
--- a/node_modules/get-intrinsic/package.json
+++ b/node_modules/get-intrinsic/package.json
@@ -1,6 +1,10 @@
{
"name": "get-intrinsic",
+<<<<<<< HEAD
+ "version": "1.2.7",
+=======
"version": "1.3.0",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Get and robustly cache all JS language-level intrinsics at first require time",
"main": "index.js",
"exports": {
@@ -44,12 +48,21 @@
},
"homepage": "https://github.com/ljharb/get-intrinsic#readme",
"dependencies": {
+<<<<<<< HEAD
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.0",
+=======
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
@@ -60,18 +73,30 @@
"auto-changelog": "^2.5.0",
"call-bound": "^1.0.3",
"encoding": "^0.1.13",
+<<<<<<< HEAD
+ "es-abstract": "^1.23.8",
+ "es-value-fixtures": "^1.5.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+=======
"es-abstract": "^1.23.9",
"es-value-fixtures": "^1.7.1",
"eslint": "=8.8.0",
"evalmd": "^0.0.19",
"for-each": "^0.3.5",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"make-async-function": "^1.0.0",
"make-async-generator-function": "^1.0.0",
"make-generator-function": "^2.0.0",
"mock-property": "^1.1.0",
"npmignore": "^0.3.1",
"nyc": "^10.3.2",
+<<<<<<< HEAD
+ "object-inspect": "^1.13.3",
+=======
"object-inspect": "^1.13.4",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"safe-publish-latest": "^2.0.0",
"tape": "^5.9.0"
},
diff --git a/node_modules/get-proto/.eslintrc b/node_modules/get-proto/.eslintrc
new file mode 100644
index 0000000..1d21a8a
--- /dev/null
+++ b/node_modules/get-proto/.eslintrc
@@ -0,0 +1,10 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "id-length": "off",
+ "sort-keys": "off",
+ },
+}
diff --git a/node_modules/get-proto/.github/FUNDING.yml b/node_modules/get-proto/.github/FUNDING.yml
new file mode 100644
index 0000000..93183ef
--- /dev/null
+++ b/node_modules/get-proto/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/get-proto
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/get-proto/.nycrc b/node_modules/get-proto/.nycrc
new file mode 100644
index 0000000..bdd626c
--- /dev/null
+++ b/node_modules/get-proto/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/get-proto/CHANGELOG.md b/node_modules/get-proto/CHANGELOG.md
new file mode 100644
index 0000000..5860229
--- /dev/null
+++ b/node_modules/get-proto/CHANGELOG.md
@@ -0,0 +1,21 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.1](https://github.com/ljharb/get-proto/compare/v1.0.0...v1.0.1) - 2025-01-02
+
+### Commits
+
+- [Fix] for the `Object.getPrototypeOf` window, throw for non-objects [`7fe6508`](https://github.com/ljharb/get-proto/commit/7fe6508b71419ebe1976bedb86001d1feaeaa49a)
+
+## v1.0.0 - 2025-01-01
+
+### Commits
+
+- Initial implementation, tests, readme, types [`5c70775`](https://github.com/ljharb/get-proto/commit/5c707751e81c3deeb2cf980d185fc7fd43611415)
+- Initial commit [`7c65c2a`](https://github.com/ljharb/get-proto/commit/7c65c2ad4e33d5dae2f219ebe1a046ae2256972c)
+- npm init [`0b8cf82`](https://github.com/ljharb/get-proto/commit/0b8cf824c9634e4a34ef7dd2a2cdc5be6ac79518)
+- Only apps should have lockfiles [`a6d1bff`](https://github.com/ljharb/get-proto/commit/a6d1bffc364f5828377cea7194558b2dbef7aea2)
diff --git a/node_modules/get-proto/LICENSE b/node_modules/get-proto/LICENSE
new file mode 100644
index 0000000..eeabd1c
--- /dev/null
+++ b/node_modules/get-proto/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Jordan Harband
+
+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/node_modules/get-proto/Object.getPrototypeOf.d.ts b/node_modules/get-proto/Object.getPrototypeOf.d.ts
new file mode 100644
index 0000000..028b3ff
--- /dev/null
+++ b/node_modules/get-proto/Object.getPrototypeOf.d.ts
@@ -0,0 +1,5 @@
+declare function getProto(object: O): object | null;
+
+declare const x: typeof getProto | null;
+
+export = x;
\ No newline at end of file
diff --git a/node_modules/get-proto/Object.getPrototypeOf.js b/node_modules/get-proto/Object.getPrototypeOf.js
new file mode 100644
index 0000000..c2cbbdf
--- /dev/null
+++ b/node_modules/get-proto/Object.getPrototypeOf.js
@@ -0,0 +1,6 @@
+'use strict';
+
+var $Object = require('es-object-atoms');
+
+/** @type {import('./Object.getPrototypeOf')} */
+module.exports = $Object.getPrototypeOf || null;
diff --git a/node_modules/get-proto/README.md b/node_modules/get-proto/README.md
new file mode 100644
index 0000000..f8b4cce
--- /dev/null
+++ b/node_modules/get-proto/README.md
@@ -0,0 +1,50 @@
+# get-proto [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Robustly get the [[Prototype]] of an object. Uses the best available method.
+
+## Getting started
+
+```sh
+npm install --save get-proto
+```
+
+## Usage/Examples
+
+```js
+const assert = require('assert');
+const getProto = require('get-proto');
+
+const a = { a: 1, b: 2, [Symbol.toStringTag]: 'foo' };
+const b = { c: 3, __proto__: a };
+
+assert.equal(getProto(b), a);
+assert.equal(getProto(a), Object.prototype);
+assert.equal(getProto({ __proto__: null }), null);
+```
+
+## Tests
+
+Clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/get-proto
+[npm-version-svg]: https://versionbadg.es/ljharb/get-proto.svg
+[deps-svg]: https://david-dm.org/ljharb/get-proto.svg
+[deps-url]: https://david-dm.org/ljharb/get-proto
+[dev-deps-svg]: https://david-dm.org/ljharb/get-proto/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/get-proto#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/get-proto.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/get-proto.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/get-proto.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=get-proto
+[codecov-image]: https://codecov.io/gh/ljharb/get-proto/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/get-proto/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-proto
+[actions-url]: https://github.com/ljharb/get-proto/actions
diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.d.ts b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts
new file mode 100644
index 0000000..2388fe0
--- /dev/null
+++ b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts
@@ -0,0 +1,3 @@
+declare const x: typeof Reflect.getPrototypeOf | null;
+
+export = x;
\ No newline at end of file
diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.js b/node_modules/get-proto/Reflect.getPrototypeOf.js
new file mode 100644
index 0000000..e6c51be
--- /dev/null
+++ b/node_modules/get-proto/Reflect.getPrototypeOf.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./Reflect.getPrototypeOf')} */
+module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;
diff --git a/node_modules/get-proto/index.d.ts b/node_modules/get-proto/index.d.ts
new file mode 100644
index 0000000..2c021f3
--- /dev/null
+++ b/node_modules/get-proto/index.d.ts
@@ -0,0 +1,5 @@
+declare function getProto(object: O): object | null;
+
+declare const x: typeof getProto | null;
+
+export = x;
diff --git a/node_modules/get-proto/index.js b/node_modules/get-proto/index.js
new file mode 100644
index 0000000..7e5747b
--- /dev/null
+++ b/node_modules/get-proto/index.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var reflectGetProto = require('./Reflect.getPrototypeOf');
+var originalGetProto = require('./Object.getPrototypeOf');
+
+var getDunderProto = require('dunder-proto/get');
+
+/** @type {import('.')} */
+module.exports = reflectGetProto
+ ? function getProto(O) {
+ // @ts-expect-error TS can't narrow inside a closure, for some reason
+ return reflectGetProto(O);
+ }
+ : originalGetProto
+ ? function getProto(O) {
+ if (!O || (typeof O !== 'object' && typeof O !== 'function')) {
+ throw new TypeError('getProto: not an object');
+ }
+ // @ts-expect-error TS can't narrow inside a closure, for some reason
+ return originalGetProto(O);
+ }
+ : getDunderProto
+ ? function getProto(O) {
+ // @ts-expect-error TS can't narrow inside a closure, for some reason
+ return getDunderProto(O);
+ }
+ : null;
diff --git a/node_modules/get-proto/package.json b/node_modules/get-proto/package.json
new file mode 100644
index 0000000..9c35cec
--- /dev/null
+++ b/node_modules/get-proto/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "get-proto",
+ "version": "1.0.1",
+ "description": "Robustly get the [[Prototype]] of an object",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js",
+ "./Object.getPrototypeOf": "./Object.getPrototypeOf.js",
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "pretest": "npm run --silent lint",
+ "test": "npm run tests-only",
+ "posttest": "npx npm@\">=10.2\" audit --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "tsc && attw -P",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/get-proto.git"
+ },
+ "keywords": [
+ "get",
+ "proto",
+ "prototype",
+ "getPrototypeOf",
+ "[[Prototype]]"
+ ],
+ "author": "Jordan Harband ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/get-proto/issues"
+ },
+ "homepage": "https://github.com/ljharb/get-proto#readme",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.2",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.3",
+ "@types/tape": "^5.8.0",
+ "auto-changelog": "^2.5.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "testling": {
+ "files": "test/index.js"
+ }
+}
diff --git a/node_modules/get-proto/test/index.js b/node_modules/get-proto/test/index.js
new file mode 100644
index 0000000..5a2ece2
--- /dev/null
+++ b/node_modules/get-proto/test/index.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var test = require('tape');
+
+var getProto = require('../');
+
+test('getProto', function (t) {
+ t.equal(typeof getProto, 'function', 'is a function');
+
+ t.test('can get', { skip: !getProto }, function (st) {
+ if (getProto) { // TS doesn't understand tape's skip
+ var proto = { b: 2 };
+ st.equal(getProto(proto), Object.prototype, 'proto: returns the [[Prototype]]');
+
+ st.test('nullish value', function (s2t) {
+ // @ts-expect-error
+ s2t['throws'](function () { return getProto(undefined); }, TypeError, 'undefined is not an object');
+ // @ts-expect-error
+ s2t['throws'](function () { return getProto(null); }, TypeError, 'null is not an object');
+ s2t.end();
+ });
+
+ // @ts-expect-error
+ st['throws'](function () { getProto(true); }, 'throws for true');
+ // @ts-expect-error
+ st['throws'](function () { getProto(false); }, 'throws for false');
+ // @ts-expect-error
+ st['throws'](function () { getProto(42); }, 'throws for 42');
+ // @ts-expect-error
+ st['throws'](function () { getProto(NaN); }, 'throws for NaN');
+ // @ts-expect-error
+ st['throws'](function () { getProto(0); }, 'throws for +0');
+ // @ts-expect-error
+ st['throws'](function () { getProto(-0); }, 'throws for -0');
+ // @ts-expect-error
+ st['throws'](function () { getProto(Infinity); }, 'throws for ∞');
+ // @ts-expect-error
+ st['throws'](function () { getProto(-Infinity); }, 'throws for -∞');
+ // @ts-expect-error
+ st['throws'](function () { getProto(''); }, 'throws for empty string');
+ // @ts-expect-error
+ st['throws'](function () { getProto('foo'); }, 'throws for non-empty string');
+ st.equal(getProto(/a/g), RegExp.prototype);
+ st.equal(getProto(new Date()), Date.prototype);
+ st.equal(getProto(function () {}), Function.prototype);
+ st.equal(getProto([]), Array.prototype);
+ st.equal(getProto({}), Object.prototype);
+
+ var nullObject = { __proto__: null };
+ if ('toString' in nullObject) {
+ st.comment('no null objects in this engine');
+ st.equal(getProto(nullObject), Object.prototype, '"null" object has Object.prototype as [[Prototype]]');
+ } else {
+ st.equal(getProto(nullObject), null, 'null object has null [[Prototype]]');
+ }
+ }
+
+ st.end();
+ });
+
+ t.test('can not get', { skip: !!getProto }, function (st) {
+ st.equal(getProto, null);
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/node_modules/get-proto/tsconfig.json b/node_modules/get-proto/tsconfig.json
new file mode 100644
index 0000000..60fb90e
--- /dev/null
+++ b/node_modules/get-proto/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ //"target": "es2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/gopd/gOPD.d.ts b/node_modules/gopd/gOPD.d.ts
new file mode 100644
index 0000000..def48a3
--- /dev/null
+++ b/node_modules/gopd/gOPD.d.ts
@@ -0,0 +1 @@
+export = Object.getOwnPropertyDescriptor;
diff --git a/node_modules/gopd/gOPD.js b/node_modules/gopd/gOPD.js
new file mode 100644
index 0000000..cf9616c
--- /dev/null
+++ b/node_modules/gopd/gOPD.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./gOPD')} */
+module.exports = Object.getOwnPropertyDescriptor;
diff --git a/node_modules/gopd/index.d.ts b/node_modules/gopd/index.d.ts
new file mode 100644
index 0000000..e228065
--- /dev/null
+++ b/node_modules/gopd/index.d.ts
@@ -0,0 +1,5 @@
+declare function gOPD(obj: O, prop: K): PropertyDescriptor | undefined;
+
+declare const fn: typeof gOPD | undefined | null;
+
+export = fn;
\ No newline at end of file
diff --git a/node_modules/gopd/tsconfig.json b/node_modules/gopd/tsconfig.json
new file mode 100644
index 0000000..d9a6668
--- /dev/null
+++ b/node_modules/gopd/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "es2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/has-symbols/index.d.ts b/node_modules/has-symbols/index.d.ts
new file mode 100644
index 0000000..9b98595
--- /dev/null
+++ b/node_modules/has-symbols/index.d.ts
@@ -0,0 +1,3 @@
+declare function hasNativeSymbols(): boolean;
+
+export = hasNativeSymbols;
\ No newline at end of file
diff --git a/node_modules/has-symbols/shams.d.ts b/node_modules/has-symbols/shams.d.ts
new file mode 100644
index 0000000..8d0bf24
--- /dev/null
+++ b/node_modules/has-symbols/shams.d.ts
@@ -0,0 +1,3 @@
+declare function hasSymbolShams(): boolean;
+
+export = hasSymbolShams;
\ No newline at end of file
diff --git a/node_modules/has-symbols/tsconfig.json b/node_modules/has-symbols/tsconfig.json
new file mode 100644
index 0000000..ba99af4
--- /dev/null
+++ b/node_modules/has-symbols/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "ES2021",
+ "maxNodeModuleJsDepth": 0,
+ },
+ "exclude": [
+ "coverage"
+ ]
+}
diff --git a/node_modules/import-fresh/package.json b/node_modules/import-fresh/package.json
index 4e8b841..49e3b82 100644
--- a/node_modules/import-fresh/package.json
+++ b/node_modules/import-fresh/package.json
@@ -1,6 +1,10 @@
{
"name": "import-fresh",
+<<<<<<< HEAD
+ "version": "3.3.0",
+=======
"version": "3.3.1",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Import a module while bypassing the cache",
"license": "MIT",
"repository": "sindresorhus/import-fresh",
@@ -10,11 +14,14 @@
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
},
+<<<<<<< HEAD
+=======
"exports": {
"types": "./index.d.ts",
"default": "./index.js"
},
"sideEffects": false,
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"engines": {
"node": ">=6"
},
diff --git a/node_modules/math-intrinsics/.eslintrc b/node_modules/math-intrinsics/.eslintrc
new file mode 100644
index 0000000..d90a1bc
--- /dev/null
+++ b/node_modules/math-intrinsics/.eslintrc
@@ -0,0 +1,16 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "eqeqeq": ["error", "allow-null"],
+ "id-length": "off",
+ "new-cap": ["error", {
+ "capIsNewExceptions": [
+ "RequireObjectCoercible",
+ "ToObject",
+ ],
+ }],
+ },
+}
diff --git a/node_modules/math-intrinsics/.github/FUNDING.yml b/node_modules/math-intrinsics/.github/FUNDING.yml
new file mode 100644
index 0000000..868f4ff
--- /dev/null
+++ b/node_modules/math-intrinsics/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/math-intrinsics
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with a single custom sponsorship URL
diff --git a/node_modules/math-intrinsics/CHANGELOG.md b/node_modules/math-intrinsics/CHANGELOG.md
new file mode 100644
index 0000000..9cf48f5
--- /dev/null
+++ b/node_modules/math-intrinsics/CHANGELOG.md
@@ -0,0 +1,24 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18
+
+### Commits
+
+- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130)
+- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d)
+- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec)
+
+## v1.0.0 - 2024-12-11
+
+### Commits
+
+- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe)
+- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c)
+- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5)
+- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2)
+- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd)
diff --git a/node_modules/math-intrinsics/LICENSE b/node_modules/math-intrinsics/LICENSE
new file mode 100644
index 0000000..34995e7
--- /dev/null
+++ b/node_modules/math-intrinsics/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 ECMAScript Shims
+
+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/node_modules/math-intrinsics/README.md b/node_modules/math-intrinsics/README.md
new file mode 100644
index 0000000..4a66dcf
--- /dev/null
+++ b/node_modules/math-intrinsics/README.md
@@ -0,0 +1,50 @@
+# math-intrinsics [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+ES Math-related intrinsics and helpers, robustly cached.
+
+ - `abs`
+ - `floor`
+ - `isFinite`
+ - `isInteger`
+ - `isNaN`
+ - `isNegativeZero`
+ - `max`
+ - `min`
+ - `mod`
+ - `pow`
+ - `round`
+ - `sign`
+ - `constants/maxArrayLength`
+ - `constants/maxSafeInteger`
+ - `constants/maxValue`
+
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+## Security
+
+Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
+
+[package-url]: https://npmjs.org/package/math-intrinsics
+[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg
+[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg
+[deps-url]: https://david-dm.org/es-shims/math-intrinsics
+[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg
+[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/es-object.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics
+[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics
+[actions-url]: https://github.com/es-shims/math-intrinsics/actions
diff --git a/node_modules/math-intrinsics/abs.d.ts b/node_modules/math-intrinsics/abs.d.ts
new file mode 100644
index 0000000..14ad9c6
--- /dev/null
+++ b/node_modules/math-intrinsics/abs.d.ts
@@ -0,0 +1 @@
+export = Math.abs;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/abs.js b/node_modules/math-intrinsics/abs.js
new file mode 100644
index 0000000..a751424
--- /dev/null
+++ b/node_modules/math-intrinsics/abs.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./abs')} */
+module.exports = Math.abs;
diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts
new file mode 100644
index 0000000..b92d46b
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts
@@ -0,0 +1,3 @@
+declare const MAX_ARRAY_LENGTH: 4294967295;
+
+export = MAX_ARRAY_LENGTH;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.js b/node_modules/math-intrinsics/constants/maxArrayLength.js
new file mode 100644
index 0000000..cfc6aff
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxArrayLength.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./maxArrayLength')} */
+module.exports = 4294967295; // Math.pow(2, 32) - 1;
diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts
new file mode 100644
index 0000000..fee3f62
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts
@@ -0,0 +1,3 @@
+declare const MAX_SAFE_INTEGER: 9007199254740991;
+
+export = MAX_SAFE_INTEGER;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.js b/node_modules/math-intrinsics/constants/maxSafeInteger.js
new file mode 100644
index 0000000..b568ad3
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxSafeInteger.js
@@ -0,0 +1,5 @@
+'use strict';
+
+/** @type {import('./maxSafeInteger')} */
+// eslint-disable-next-line no-extra-parens
+module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1;
diff --git a/node_modules/math-intrinsics/constants/maxValue.d.ts b/node_modules/math-intrinsics/constants/maxValue.d.ts
new file mode 100644
index 0000000..292cb82
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxValue.d.ts
@@ -0,0 +1,3 @@
+declare const MAX_VALUE: 1.7976931348623157e+308;
+
+export = MAX_VALUE;
diff --git a/node_modules/math-intrinsics/constants/maxValue.js b/node_modules/math-intrinsics/constants/maxValue.js
new file mode 100644
index 0000000..a2202dc
--- /dev/null
+++ b/node_modules/math-intrinsics/constants/maxValue.js
@@ -0,0 +1,5 @@
+'use strict';
+
+/** @type {import('./maxValue')} */
+// eslint-disable-next-line no-extra-parens
+module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308;
diff --git a/node_modules/math-intrinsics/floor.d.ts b/node_modules/math-intrinsics/floor.d.ts
new file mode 100644
index 0000000..9265236
--- /dev/null
+++ b/node_modules/math-intrinsics/floor.d.ts
@@ -0,0 +1 @@
+export = Math.floor;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/floor.js b/node_modules/math-intrinsics/floor.js
new file mode 100644
index 0000000..ab0e5d7
--- /dev/null
+++ b/node_modules/math-intrinsics/floor.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./floor')} */
+module.exports = Math.floor;
diff --git a/node_modules/math-intrinsics/isFinite.d.ts b/node_modules/math-intrinsics/isFinite.d.ts
new file mode 100644
index 0000000..6daae33
--- /dev/null
+++ b/node_modules/math-intrinsics/isFinite.d.ts
@@ -0,0 +1,3 @@
+declare function isFinite(x: unknown): x is number | bigint;
+
+export = isFinite;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/isFinite.js b/node_modules/math-intrinsics/isFinite.js
new file mode 100644
index 0000000..b201a5a
--- /dev/null
+++ b/node_modules/math-intrinsics/isFinite.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var $isNaN = require('./isNaN');
+
+/** @type {import('./isFinite')} */
+module.exports = function isFinite(x) {
+ return (typeof x === 'number' || typeof x === 'bigint')
+ && !$isNaN(x)
+ && x !== Infinity
+ && x !== -Infinity;
+};
+
diff --git a/node_modules/math-intrinsics/isInteger.d.ts b/node_modules/math-intrinsics/isInteger.d.ts
new file mode 100644
index 0000000..13935a8
--- /dev/null
+++ b/node_modules/math-intrinsics/isInteger.d.ts
@@ -0,0 +1,3 @@
+declare function isInteger(argument: unknown): argument is number;
+
+export = isInteger;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/isInteger.js b/node_modules/math-intrinsics/isInteger.js
new file mode 100644
index 0000000..4b1b9a5
--- /dev/null
+++ b/node_modules/math-intrinsics/isInteger.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var $abs = require('./abs');
+var $floor = require('./floor');
+
+var $isNaN = require('./isNaN');
+var $isFinite = require('./isFinite');
+
+/** @type {import('./isInteger')} */
+module.exports = function isInteger(argument) {
+ if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {
+ return false;
+ }
+ var absValue = $abs(argument);
+ return $floor(absValue) === absValue;
+};
diff --git a/node_modules/math-intrinsics/isNaN.d.ts b/node_modules/math-intrinsics/isNaN.d.ts
new file mode 100644
index 0000000..c1d4c55
--- /dev/null
+++ b/node_modules/math-intrinsics/isNaN.d.ts
@@ -0,0 +1 @@
+export = Number.isNaN;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/isNaN.js b/node_modules/math-intrinsics/isNaN.js
new file mode 100644
index 0000000..e36475c
--- /dev/null
+++ b/node_modules/math-intrinsics/isNaN.js
@@ -0,0 +1,6 @@
+'use strict';
+
+/** @type {import('./isNaN')} */
+module.exports = Number.isNaN || function isNaN(a) {
+ return a !== a;
+};
diff --git a/node_modules/math-intrinsics/isNegativeZero.d.ts b/node_modules/math-intrinsics/isNegativeZero.d.ts
new file mode 100644
index 0000000..7ad8819
--- /dev/null
+++ b/node_modules/math-intrinsics/isNegativeZero.d.ts
@@ -0,0 +1,3 @@
+declare function isNegativeZero(x: unknown): boolean;
+
+export = isNegativeZero;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/isNegativeZero.js b/node_modules/math-intrinsics/isNegativeZero.js
new file mode 100644
index 0000000..b69adcc
--- /dev/null
+++ b/node_modules/math-intrinsics/isNegativeZero.js
@@ -0,0 +1,6 @@
+'use strict';
+
+/** @type {import('./isNegativeZero')} */
+module.exports = function isNegativeZero(x) {
+ return x === 0 && 1 / x === 1 / -0;
+};
diff --git a/node_modules/math-intrinsics/max.d.ts b/node_modules/math-intrinsics/max.d.ts
new file mode 100644
index 0000000..ad6f43e
--- /dev/null
+++ b/node_modules/math-intrinsics/max.d.ts
@@ -0,0 +1 @@
+export = Math.max;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/max.js b/node_modules/math-intrinsics/max.js
new file mode 100644
index 0000000..edb55df
--- /dev/null
+++ b/node_modules/math-intrinsics/max.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./max')} */
+module.exports = Math.max;
diff --git a/node_modules/math-intrinsics/min.d.ts b/node_modules/math-intrinsics/min.d.ts
new file mode 100644
index 0000000..fd90f2d
--- /dev/null
+++ b/node_modules/math-intrinsics/min.d.ts
@@ -0,0 +1 @@
+export = Math.min;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/min.js b/node_modules/math-intrinsics/min.js
new file mode 100644
index 0000000..5a4a7c7
--- /dev/null
+++ b/node_modules/math-intrinsics/min.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./min')} */
+module.exports = Math.min;
diff --git a/node_modules/math-intrinsics/mod.d.ts b/node_modules/math-intrinsics/mod.d.ts
new file mode 100644
index 0000000..549dbd4
--- /dev/null
+++ b/node_modules/math-intrinsics/mod.d.ts
@@ -0,0 +1,3 @@
+declare function mod(number: number, modulo: number): number;
+
+export = mod;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/mod.js b/node_modules/math-intrinsics/mod.js
new file mode 100644
index 0000000..4a98362
--- /dev/null
+++ b/node_modules/math-intrinsics/mod.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var $floor = require('./floor');
+
+/** @type {import('./mod')} */
+module.exports = function mod(number, modulo) {
+ var remain = number % modulo;
+ return $floor(remain >= 0 ? remain : remain + modulo);
+};
diff --git a/node_modules/math-intrinsics/package.json b/node_modules/math-intrinsics/package.json
new file mode 100644
index 0000000..0676273
--- /dev/null
+++ b/node_modules/math-intrinsics/package.json
@@ -0,0 +1,86 @@
+{
+ "name": "math-intrinsics",
+ "version": "1.1.0",
+ "description": "ES Math-related intrinsics and helpers, robustly cached.",
+ "main": false,
+ "exports": {
+ "./abs": "./abs.js",
+ "./floor": "./floor.js",
+ "./isFinite": "./isFinite.js",
+ "./isInteger": "./isInteger.js",
+ "./isNaN": "./isNaN.js",
+ "./isNegativeZero": "./isNegativeZero.js",
+ "./max": "./max.js",
+ "./min": "./min.js",
+ "./mod": "./mod.js",
+ "./pow": "./pow.js",
+ "./sign": "./sign.js",
+ "./round": "./round.js",
+ "./constants/maxArrayLength": "./constants/maxArrayLength.js",
+ "./constants/maxSafeInteger": "./constants/maxSafeInteger.js",
+ "./constants/maxValue": "./constants/maxValue.js",
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "posttest": "npx npm@'>= 10.2' audit --production",
+ "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "tsc && attw -P",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/es-shims/math-intrinsics.git"
+ },
+ "author": "Jordan Harband ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/es-shims/math-intrinsics/issues"
+ },
+ "homepage": "https://github.com/es-shims/math-intrinsics#readme",
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.1",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.2",
+ "@types/for-each": "^0.3.3",
+ "@types/object-inspect": "^1.13.0",
+ "@types/tape": "^5.8.0",
+ "auto-changelog": "^2.5.0",
+ "eclint": "^2.8.1",
+ "es-value-fixtures": "^1.5.0",
+ "eslint": "^8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "object-inspect": "^1.13.3",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/node_modules/math-intrinsics/pow.d.ts b/node_modules/math-intrinsics/pow.d.ts
new file mode 100644
index 0000000..5873c44
--- /dev/null
+++ b/node_modules/math-intrinsics/pow.d.ts
@@ -0,0 +1 @@
+export = Math.pow;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/pow.js b/node_modules/math-intrinsics/pow.js
new file mode 100644
index 0000000..c0a4103
--- /dev/null
+++ b/node_modules/math-intrinsics/pow.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./pow')} */
+module.exports = Math.pow;
diff --git a/node_modules/math-intrinsics/round.d.ts b/node_modules/math-intrinsics/round.d.ts
new file mode 100644
index 0000000..da1fde3
--- /dev/null
+++ b/node_modules/math-intrinsics/round.d.ts
@@ -0,0 +1 @@
+export = Math.round;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/round.js b/node_modules/math-intrinsics/round.js
new file mode 100644
index 0000000..b792156
--- /dev/null
+++ b/node_modules/math-intrinsics/round.js
@@ -0,0 +1,4 @@
+'use strict';
+
+/** @type {import('./round')} */
+module.exports = Math.round;
diff --git a/node_modules/math-intrinsics/sign.d.ts b/node_modules/math-intrinsics/sign.d.ts
new file mode 100644
index 0000000..c49ceca
--- /dev/null
+++ b/node_modules/math-intrinsics/sign.d.ts
@@ -0,0 +1,3 @@
+declare function sign(x: number): number;
+
+export = sign;
\ No newline at end of file
diff --git a/node_modules/math-intrinsics/sign.js b/node_modules/math-intrinsics/sign.js
new file mode 100644
index 0000000..9e5173c
--- /dev/null
+++ b/node_modules/math-intrinsics/sign.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var $isNaN = require('./isNaN');
+
+/** @type {import('./sign')} */
+module.exports = function sign(number) {
+ if ($isNaN(number) || number === 0) {
+ return number;
+ }
+ return number < 0 ? -1 : +1;
+};
diff --git a/node_modules/math-intrinsics/test/index.js b/node_modules/math-intrinsics/test/index.js
new file mode 100644
index 0000000..0f90a5d
--- /dev/null
+++ b/node_modules/math-intrinsics/test/index.js
@@ -0,0 +1,192 @@
+'use strict';
+
+var test = require('tape');
+var v = require('es-value-fixtures');
+var forEach = require('for-each');
+var inspect = require('object-inspect');
+
+var abs = require('../abs');
+var floor = require('../floor');
+var isFinite = require('../isFinite');
+var isInteger = require('../isInteger');
+var isNaN = require('../isNaN');
+var isNegativeZero = require('../isNegativeZero');
+var max = require('../max');
+var min = require('../min');
+var mod = require('../mod');
+var pow = require('../pow');
+var round = require('../round');
+var sign = require('../sign');
+
+var maxArrayLength = require('../constants/maxArrayLength');
+var maxSafeInteger = require('../constants/maxSafeInteger');
+var maxValue = require('../constants/maxValue');
+
+test('abs', function (t) {
+ t.equal(abs(-1), 1, 'abs(-1) === 1');
+ t.equal(abs(+1), 1, 'abs(+1) === 1');
+ t.equal(abs(+0), +0, 'abs(+0) === +0');
+ t.equal(abs(-0), +0, 'abs(-0) === +0');
+
+ t.end();
+});
+
+test('floor', function (t) {
+ t.equal(floor(-1.1), -2, 'floor(-1.1) === -2');
+ t.equal(floor(+1.1), 1, 'floor(+1.1) === 1');
+ t.equal(floor(+0), +0, 'floor(+0) === +0');
+ t.equal(floor(-0), -0, 'floor(-0) === -0');
+ t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity');
+ t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity');
+ t.equal(floor(NaN), NaN, 'floor(NaN) === NaN');
+ t.equal(floor(0), +0, 'floor(0) === +0');
+ t.equal(floor(-0), -0, 'floor(-0) === -0');
+ t.equal(floor(1), 1, 'floor(1) === 1');
+ t.equal(floor(-1), -1, 'floor(-1) === -1');
+ t.equal(floor(1.1), 1, 'floor(1.1) === 1');
+ t.equal(floor(-1.1), -2, 'floor(-1.1) === -2');
+ t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue');
+ t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger');
+
+ t.end();
+});
+
+test('isFinite', function (t) {
+ t.equal(isFinite(0), true, 'isFinite(+0) === true');
+ t.equal(isFinite(-0), true, 'isFinite(-0) === true');
+ t.equal(isFinite(1), true, 'isFinite(1) === true');
+ t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false');
+ t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false');
+ t.equal(isFinite(NaN), false, 'isFinite(NaN) === false');
+
+ forEach(v.nonNumbers, function (nonNumber) {
+ t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false');
+ });
+
+ t.end();
+});
+
+test('isInteger', function (t) {
+ forEach([].concat(
+ // @ts-expect-error TS sucks with concat
+ v.nonNumbers,
+ v.nonIntegerNumbers
+ ), function (nonInteger) {
+ t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false');
+ });
+
+ t.end();
+});
+
+test('isNaN', function (t) {
+ forEach([].concat(
+ // @ts-expect-error TS sucks with concat
+ v.nonNumbers,
+ v.infinities,
+ v.zeroes,
+ v.integerNumbers
+ ), function (nonNaN) {
+ t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false');
+ });
+
+ t.equal(isNaN(NaN), true, 'isNaN(NaN) === true');
+
+ t.end();
+});
+
+test('isNegativeZero', function (t) {
+ t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true');
+ t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false');
+ t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false');
+ t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false');
+ t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false');
+ t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false');
+ t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false');
+
+ forEach(v.nonNumbers, function (nonNumber) {
+ t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false');
+ });
+
+ t.end();
+});
+
+test('max', function (t) {
+ t.equal(max(1, 2), 2, 'max(1, 2) === 2');
+ t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3');
+ t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4');
+ t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5');
+ t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6');
+ t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7');
+
+ t.end();
+});
+
+test('min', function (t) {
+ t.equal(min(1, 2), 1, 'min(1, 2) === 1');
+ t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1');
+ t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1');
+ t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1');
+ t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1');
+
+ t.end();
+});
+
+test('mod', function (t) {
+ t.equal(mod(1, 2), 1, 'mod(1, 2) === 1');
+ t.equal(mod(2, 2), 0, 'mod(2, 2) === 0');
+ t.equal(mod(3, 2), 1, 'mod(3, 2) === 1');
+ t.equal(mod(4, 2), 0, 'mod(4, 2) === 0');
+ t.equal(mod(5, 2), 1, 'mod(5, 2) === 1');
+ t.equal(mod(6, 2), 0, 'mod(6, 2) === 0');
+ t.equal(mod(7, 2), 1, 'mod(7, 2) === 1');
+ t.equal(mod(8, 2), 0, 'mod(8, 2) === 0');
+ t.equal(mod(9, 2), 1, 'mod(9, 2) === 1');
+ t.equal(mod(10, 2), 0, 'mod(10, 2) === 0');
+ t.equal(mod(11, 2), 1, 'mod(11, 2) === 1');
+
+ t.end();
+});
+
+test('pow', function (t) {
+ t.equal(pow(2, 2), 4, 'pow(2, 2) === 4');
+ t.equal(pow(2, 3), 8, 'pow(2, 3) === 8');
+ t.equal(pow(2, 4), 16, 'pow(2, 4) === 16');
+ t.equal(pow(2, 5), 32, 'pow(2, 5) === 32');
+ t.equal(pow(2, 6), 64, 'pow(2, 6) === 64');
+ t.equal(pow(2, 7), 128, 'pow(2, 7) === 128');
+ t.equal(pow(2, 8), 256, 'pow(2, 8) === 256');
+ t.equal(pow(2, 9), 512, 'pow(2, 9) === 512');
+ t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024');
+
+ t.end();
+});
+
+test('round', function (t) {
+ t.equal(round(1.1), 1, 'round(1.1) === 1');
+ t.equal(round(1.5), 2, 'round(1.5) === 2');
+ t.equal(round(1.9), 2, 'round(1.9) === 2');
+
+ t.end();
+});
+
+test('sign', function (t) {
+ t.equal(sign(-1), -1, 'sign(-1) === -1');
+ t.equal(sign(+1), +1, 'sign(+1) === +1');
+ t.equal(sign(+0), +0, 'sign(+0) === +0');
+ t.equal(sign(-0), -0, 'sign(-0) === -0');
+ t.equal(sign(NaN), NaN, 'sign(NaN) === NaN');
+ t.equal(sign(Infinity), +1, 'sign(Infinity) === +1');
+ t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1');
+ t.equal(sign(maxValue), +1, 'sign(maxValue) === +1');
+ t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1');
+
+ t.end();
+});
+
+test('constants', function (t) {
+ t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"');
+ t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"');
+ t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"');
+
+ t.end();
+});
diff --git a/node_modules/math-intrinsics/tsconfig.json b/node_modules/math-intrinsics/tsconfig.json
new file mode 100644
index 0000000..b131000
--- /dev/null
+++ b/node_modules/math-intrinsics/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "@ljharb/tsconfig",
+}
diff --git a/node_modules/object-inspect/CHANGELOG.md b/node_modules/object-inspect/CHANGELOG.md
index bdf9002..34f845e 100644
--- a/node_modules/object-inspect/CHANGELOG.md
+++ b/node_modules/object-inspect/CHANGELOG.md
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+<<<<<<< HEAD
+=======
## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04
### Commits
@@ -13,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84)
- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd)
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09
### Commits
diff --git a/node_modules/object-inspect/package.json b/node_modules/object-inspect/package.json
index 9fd97ff..36bbc23 100644
--- a/node_modules/object-inspect/package.json
+++ b/node_modules/object-inspect/package.json
@@ -1,6 +1,10 @@
{
"name": "object-inspect",
+<<<<<<< HEAD
+ "version": "1.13.3",
+=======
"version": "1.13.4",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "string representations of objects in node and the browser",
"main": "index.js",
"sideEffects": false,
@@ -10,7 +14,11 @@
"auto-changelog": "^2.5.0",
"core-js": "^2.6.12",
"error-cause": "^1.0.8",
+<<<<<<< HEAD
+ "es-value-fixtures": "^1.5.0",
+=======
"es-value-fixtures": "^1.7.1",
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"eslint": "=8.8.0",
"for-each": "^0.3.4",
"functions-have-names": "^1.2.3",
diff --git a/node_modules/os-name/node_modules/.bin/osx-release b/node_modules/os-name/node_modules/.bin/osx-release
new file mode 120000
index 0000000..94d27b2
--- /dev/null
+++ b/node_modules/os-name/node_modules/.bin/osx-release
@@ -0,0 +1 @@
+../../../osx-release/cli.js
\ No newline at end of file
diff --git a/node_modules/semver/bin/semver.js b/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000..666034a
--- /dev/null
+++ b/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] [ [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range ',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment []',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid ',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ '--rtl',
+ ' Coerce version strings right to left',
+ '',
+ '--ltr',
+ ' Coerce version strings left to right (default)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/node_modules/side-channel-list/.editorconfig b/node_modules/side-channel-list/.editorconfig
new file mode 100644
index 0000000..72e0eba
--- /dev/null
+++ b/node_modules/side-channel-list/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+indent_size = 2
+trim_trailing_whitespace = true
diff --git a/node_modules/side-channel-list/.eslintrc b/node_modules/side-channel-list/.eslintrc
new file mode 100644
index 0000000..93978e7
--- /dev/null
+++ b/node_modules/side-channel-list/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "max-lines-per-function": 0,
+ "multiline-comment-style": 1,
+ "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }],
+ },
+}
diff --git a/node_modules/side-channel-list/.github/FUNDING.yml b/node_modules/side-channel-list/.github/FUNDING.yml
new file mode 100644
index 0000000..eaff735
--- /dev/null
+++ b/node_modules/side-channel-list/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/side-channel-list
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/side-channel-list/.nycrc b/node_modules/side-channel-list/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/node_modules/side-channel-list/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/side-channel-list/CHANGELOG.md b/node_modules/side-channel-list/CHANGELOG.md
new file mode 100644
index 0000000..2ec51b7
--- /dev/null
+++ b/node_modules/side-channel-list/CHANGELOG.md
@@ -0,0 +1,15 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## v1.0.0 - 2024-12-10
+
+### Commits
+
+- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251)
+- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100)
+- npm init [`07055a4`](https://github.com/ljharb/side-channel-list/commit/07055a4d139895565b199dba5fe2479c1a1b9e28)
+- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1)
diff --git a/node_modules/side-channel-list/LICENSE b/node_modules/side-channel-list/LICENSE
new file mode 100644
index 0000000..f82f389
--- /dev/null
+++ b/node_modules/side-channel-list/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Jordan Harband
+
+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/node_modules/side-channel-list/README.md b/node_modules/side-channel-list/README.md
new file mode 100644
index 0000000..d9c7a13
--- /dev/null
+++ b/node_modules/side-channel-list/README.md
@@ -0,0 +1,62 @@
+# side-channel-list [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Store information about any JS value in a side channel, using a linked list.
+
+Warning: this implementation will leak memory until you `delete` the `key`.
+Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy.
+
+## Getting started
+
+```sh
+npm install --save side-channel-list
+```
+
+## Usage/Examples
+
+```js
+const assert = require('assert');
+const getSideChannelList = require('side-channel-list');
+
+const channel = getSideChannelList();
+
+const key = {};
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+
+channel.set(key, 42);
+
+channel.assert(key); // does not throw
+assert.equal(channel.has(key), true);
+assert.equal(channel.get(key), 42);
+
+channel.delete(key);
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+```
+
+## Tests
+
+Clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/side-channel-list
+[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-list.svg
+[deps-svg]: https://david-dm.org/ljharb/side-channel-list.svg
+[deps-url]: https://david-dm.org/ljharb/side-channel-list
+[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-list/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/side-channel-list#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/side-channel-list.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/side-channel-list.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/side-channel-list.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-list
+[codecov-image]: https://codecov.io/gh/ljharb/side-channel-list/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-list/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-list
+[actions-url]: https://github.com/ljharb/side-channel-list/actions
diff --git a/node_modules/side-channel-list/index.d.ts b/node_modules/side-channel-list/index.d.ts
new file mode 100644
index 0000000..c9cabc8
--- /dev/null
+++ b/node_modules/side-channel-list/index.d.ts
@@ -0,0 +1,13 @@
+declare namespace getSideChannelList {
+ type Channel = {
+ assert: (key: K) => void;
+ has: (key: K) => boolean;
+ get: (key: K) => V | undefined;
+ set: (key: K, value: V) => void;
+ delete: (key: K) => boolean;
+ };
+}
+
+declare function getSideChannelList(): getSideChannelList.Channel;
+
+export = getSideChannelList;
diff --git a/node_modules/side-channel-list/index.js b/node_modules/side-channel-list/index.js
new file mode 100644
index 0000000..8d6f98c
--- /dev/null
+++ b/node_modules/side-channel-list/index.js
@@ -0,0 +1,113 @@
+'use strict';
+
+var inspect = require('object-inspect');
+
+var $TypeError = require('es-errors/type');
+
+/*
+* This function traverses the list returning the node corresponding to the given key.
+*
+* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.
+* By doing so, all the recently used nodes can be accessed relatively quickly.
+*/
+/** @type {import('./list.d.ts').listGetNode} */
+// eslint-disable-next-line consistent-return
+var listGetNode = function (list, key, isDelete) {
+ /** @type {typeof list | NonNullable<(typeof list)['next']>} */
+ var prev = list;
+ /** @type {(typeof list)['next']} */
+ var curr;
+ // eslint-disable-next-line eqeqeq
+ for (; (curr = prev.next) != null; prev = curr) {
+ if (curr.key === key) {
+ prev.next = curr.next;
+ if (!isDelete) {
+ // eslint-disable-next-line no-extra-parens
+ curr.next = /** @type {NonNullable} */ (list.next);
+ list.next = curr; // eslint-disable-line no-param-reassign
+ }
+ return curr;
+ }
+ }
+};
+
+/** @type {import('./list.d.ts').listGet} */
+var listGet = function (objects, key) {
+ if (!objects) {
+ return void undefined;
+ }
+ var node = listGetNode(objects, key);
+ return node && node.value;
+};
+/** @type {import('./list.d.ts').listSet} */
+var listSet = function (objects, key, value) {
+ var node = listGetNode(objects, key);
+ if (node) {
+ node.value = value;
+ } else {
+ // Prepend the new node to the beginning of the list
+ objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens
+ key: key,
+ next: objects.next,
+ value: value
+ });
+ }
+};
+/** @type {import('./list.d.ts').listHas} */
+var listHas = function (objects, key) {
+ if (!objects) {
+ return false;
+ }
+ return !!listGetNode(objects, key);
+};
+/** @type {import('./list.d.ts').listDelete} */
+// eslint-disable-next-line consistent-return
+var listDelete = function (objects, key) {
+ if (objects) {
+ return listGetNode(objects, key, true);
+ }
+};
+
+/** @type {import('.')} */
+module.exports = function getSideChannelList() {
+ /** @typedef {ReturnType} Channel */
+ /** @typedef {Parameters[0]} K */
+ /** @typedef {Parameters[1]} V */
+
+ /** @type {import('./list.d.ts').RootNode | undefined} */ var $o;
+
+ /** @type {Channel} */
+ var channel = {
+ assert: function (key) {
+ if (!channel.has(key)) {
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
+ }
+ },
+ 'delete': function (key) {
+ var root = $o && $o.next;
+ var deletedNode = listDelete($o, key);
+ if (deletedNode && root && root === deletedNode) {
+ $o = void undefined;
+ }
+ return !!deletedNode;
+ },
+ get: function (key) {
+ return listGet($o, key);
+ },
+ has: function (key) {
+ return listHas($o, key);
+ },
+ set: function (key, value) {
+ if (!$o) {
+ // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
+ $o = {
+ next: void undefined
+ };
+ }
+ // eslint-disable-next-line no-extra-parens
+ listSet(/** @type {NonNullable} */ ($o), key, value);
+ }
+ };
+ // @ts-expect-error TODO: figure out why this is erroring
+ return channel;
+};
diff --git a/node_modules/side-channel-list/list.d.ts b/node_modules/side-channel-list/list.d.ts
new file mode 100644
index 0000000..2c759e2
--- /dev/null
+++ b/node_modules/side-channel-list/list.d.ts
@@ -0,0 +1,14 @@
+type ListNode = {
+ key: K;
+ next: undefined | ListNode;
+ value: T;
+};
+type RootNode = {
+ next: undefined | ListNode;
+};
+
+export function listGetNode(list: RootNode, key: ListNode['key'], isDelete?: boolean): ListNode | undefined;
+export function listGet(objects: undefined | RootNode, key: ListNode['key']): T | undefined;
+export function listSet(objects: RootNode, key: ListNode['key'], value: T): void;
+export function listHas(objects: undefined | RootNode, key: ListNode['key']): boolean;
+export function listDelete(objects: undefined | RootNode, key: ListNode['key']): ListNode | undefined;
diff --git a/node_modules/side-channel-list/package.json b/node_modules/side-channel-list/package.json
new file mode 100644
index 0000000..ba0f5c5
--- /dev/null
+++ b/node_modules/side-channel-list/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "side-channel-list",
+ "version": "1.0.0",
+ "description": "Store information about any JS value in a side channel, using a linked list",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "types": "./index.d.ts",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "tsc -p . && attw -P",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "npx npm@'>= 10.2' audit --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/side-channel-list.git"
+ },
+ "keywords": [],
+ "author": "Jordan Harband ",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/side-channel-list/issues"
+ },
+ "homepage": "https://github.com/ljharb/side-channel-list#readme",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.1",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.2",
+ "@types/object-inspect": "^1.13.0",
+ "@types/tape": "^5.6.5",
+ "auto-changelog": "^2.5.0",
+ "eclint": "^2.8.1",
+ "encoding": "^0.1.13",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/node_modules/side-channel-list/test/index.js b/node_modules/side-channel-list/test/index.js
new file mode 100644
index 0000000..3ad4368
--- /dev/null
+++ b/node_modules/side-channel-list/test/index.js
@@ -0,0 +1,104 @@
+'use strict';
+
+var test = require('tape');
+
+var getSideChannelList = require('../');
+
+test('getSideChannelList', function (t) {
+ t.test('export', function (st) {
+ st.equal(typeof getSideChannelList, 'function', 'is a function');
+
+ st.equal(getSideChannelList.length, 0, 'takes no arguments');
+
+ var channel = getSideChannelList();
+ st.ok(channel, 'is truthy');
+ st.equal(typeof channel, 'object', 'is an object');
+ st.end();
+ });
+
+ t.test('assert', function (st) {
+ var channel = getSideChannelList();
+ st['throws'](
+ function () { channel.assert({}); },
+ TypeError,
+ 'nonexistent value throws'
+ );
+
+ var o = {};
+ channel.set(o, 'data');
+ st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
+
+ st.end();
+ });
+
+ t.test('has', function (st) {
+ var channel = getSideChannelList();
+ /** @type {unknown[]} */ var o = [];
+
+ st.equal(channel.has(o), false, 'nonexistent value yields false');
+
+ channel.set(o, 'foo');
+ st.equal(channel.has(o), true, 'existent value yields true');
+
+ st.equal(channel.has('abc'), false, 'non object value non existent yields false');
+
+ channel.set('abc', 'foo');
+ st.equal(channel.has('abc'), true, 'non object value that exists yields true');
+
+ st.end();
+ });
+
+ t.test('get', function (st) {
+ var channel = getSideChannelList();
+ var o = {};
+ st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
+
+ var data = {};
+ channel.set(o, data);
+ st.equal(channel.get(o), data, '"get" yields data set by "set"');
+
+ st.end();
+ });
+
+ t.test('set', function (st) {
+ var channel = getSideChannelList();
+ var o = function () {};
+ st.equal(channel.get(o), undefined, 'value not set');
+
+ channel.set(o, 42);
+ st.equal(channel.get(o), 42, 'value was set');
+
+ channel.set(o, Infinity);
+ st.equal(channel.get(o), Infinity, 'value was set again');
+
+ var o2 = {};
+ channel.set(o2, 17);
+ st.equal(channel.get(o), Infinity, 'o is not modified');
+ st.equal(channel.get(o2), 17, 'o2 is set');
+
+ channel.set(o, 14);
+ st.equal(channel.get(o), 14, 'o is modified');
+ st.equal(channel.get(o2), 17, 'o2 is not modified');
+
+ st.end();
+ });
+
+ t.test('delete', function (st) {
+ var channel = getSideChannelList();
+ var o = {};
+ st.equal(channel['delete']({}), false, 'nonexistent value yields false');
+
+ channel.set(o, 42);
+ st.equal(channel.has(o), true, 'value is set');
+
+ st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
+
+ st.equal(channel['delete'](o), true, 'deleted value yields true');
+
+ st.equal(channel.has(o), false, 'value is no longer set');
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/node_modules/side-channel-list/tsconfig.json b/node_modules/side-channel-list/tsconfig.json
new file mode 100644
index 0000000..d9a6668
--- /dev/null
+++ b/node_modules/side-channel-list/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "es2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/side-channel-map/.editorconfig b/node_modules/side-channel-map/.editorconfig
new file mode 100644
index 0000000..72e0eba
--- /dev/null
+++ b/node_modules/side-channel-map/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+indent_size = 2
+trim_trailing_whitespace = true
diff --git a/node_modules/side-channel-map/.eslintrc b/node_modules/side-channel-map/.eslintrc
new file mode 100644
index 0000000..93978e7
--- /dev/null
+++ b/node_modules/side-channel-map/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "max-lines-per-function": 0,
+ "multiline-comment-style": 1,
+ "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }],
+ },
+}
diff --git a/node_modules/side-channel-map/.github/FUNDING.yml b/node_modules/side-channel-map/.github/FUNDING.yml
new file mode 100644
index 0000000..f2891bd
--- /dev/null
+++ b/node_modules/side-channel-map/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/side-channel-map
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/side-channel-map/.nycrc b/node_modules/side-channel-map/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/node_modules/side-channel-map/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/side-channel-map/CHANGELOG.md b/node_modules/side-channel-map/CHANGELOG.md
new file mode 100644
index 0000000..b6ccea9
--- /dev/null
+++ b/node_modules/side-channel-map/CHANGELOG.md
@@ -0,0 +1,22 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.1](https://github.com/ljharb/side-channel-map/compare/v1.0.0...v1.0.1) - 2024-12-10
+
+### Commits
+
+- [Deps] update `call-bound` [`6d05aaa`](https://github.com/ljharb/side-channel-map/commit/6d05aaa4ce5f2be4e7825df433d650696f0ba40f)
+- [types] fix generics ordering [`11c0184`](https://github.com/ljharb/side-channel-map/commit/11c0184132ac11fdc16857e12682e148e5e9ee74)
+
+## v1.0.0 - 2024-12-10
+
+### Commits
+
+- Initial implementation, tests, readme, types [`ad877b4`](https://github.com/ljharb/side-channel-map/commit/ad877b42926d46d63fff76a2bd01d2b4a01959a9)
+- Initial commit [`28f8879`](https://github.com/ljharb/side-channel-map/commit/28f8879c512abe8fcf9b6a4dc7754a0287e5eba4)
+- npm init [`2c9604e`](https://github.com/ljharb/side-channel-map/commit/2c9604e5aa40223e425ea7cea78f8a07697504bd)
+- Only apps should have lockfiles [`5e7ba9c`](https://github.com/ljharb/side-channel-map/commit/5e7ba9cffe3ef42095815adc8ac1255b49bbadf5)
diff --git a/node_modules/side-channel-map/LICENSE b/node_modules/side-channel-map/LICENSE
new file mode 100644
index 0000000..f82f389
--- /dev/null
+++ b/node_modules/side-channel-map/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Jordan Harband
+
+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/node_modules/side-channel-map/README.md b/node_modules/side-channel-map/README.md
new file mode 100644
index 0000000..8fa6f77
--- /dev/null
+++ b/node_modules/side-channel-map/README.md
@@ -0,0 +1,62 @@
+# side-channel-map [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Store information about any JS value in a side channel, using a Map.
+
+Warning: if the `key` is an object, this implementation will leak memory until you `delete` it.
+Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy.
+
+## Getting started
+
+```sh
+npm install --save side-channel-map
+```
+
+## Usage/Examples
+
+```js
+const assert = require('assert');
+const getSideChannelMap = require('side-channel-map');
+
+const channel = getSideChannelMap();
+
+const key = {};
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+
+channel.set(key, 42);
+
+channel.assert(key); // does not throw
+assert.equal(channel.has(key), true);
+assert.equal(channel.get(key), 42);
+
+channel.delete(key);
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+```
+
+## Tests
+
+Clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/side-channel-map
+[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-map.svg
+[deps-svg]: https://david-dm.org/ljharb/side-channel-map.svg
+[deps-url]: https://david-dm.org/ljharb/side-channel-map
+[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-map/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/side-channel-map#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/side-channel-map.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/side-channel-map.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/side-channel-map.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-map
+[codecov-image]: https://codecov.io/gh/ljharb/side-channel-map/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-map/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-map
+[actions-url]: https://github.com/ljharb/side-channel-map/actions
diff --git a/node_modules/side-channel-map/index.d.ts b/node_modules/side-channel-map/index.d.ts
new file mode 100644
index 0000000..de33e89
--- /dev/null
+++ b/node_modules/side-channel-map/index.d.ts
@@ -0,0 +1,15 @@
+declare namespace getSideChannelMap {
+ type Channel = {
+ assert: (key: K) => void;
+ has: (key: K) => boolean;
+ get: (key: K) => V | undefined;
+ set: (key: K, value: V) => void;
+ delete: (key: K) => boolean;
+ };
+}
+
+declare function getSideChannelMap(): getSideChannelMap.Channel;
+
+declare const x: false | typeof getSideChannelMap;
+
+export = x;
diff --git a/node_modules/side-channel-map/index.js b/node_modules/side-channel-map/index.js
new file mode 100644
index 0000000..e111100
--- /dev/null
+++ b/node_modules/side-channel-map/index.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bound');
+var inspect = require('object-inspect');
+
+var $TypeError = require('es-errors/type');
+var $Map = GetIntrinsic('%Map%', true);
+
+/** @type {(thisArg: Map, key: K) => V} */
+var $mapGet = callBound('Map.prototype.get', true);
+/** @type {(thisArg: Map, key: K, value: V) => void} */
+var $mapSet = callBound('Map.prototype.set', true);
+/** @type {(thisArg: Map, key: K) => boolean} */
+var $mapHas = callBound('Map.prototype.has', true);
+/** @type {(thisArg: Map, key: K) => boolean} */
+var $mapDelete = callBound('Map.prototype.delete', true);
+/** @type {(thisArg: Map) => number} */
+var $mapSize = callBound('Map.prototype.size', true);
+
+/** @type {import('.')} */
+module.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {
+ /** @typedef {ReturnType} Channel */
+ /** @typedef {Parameters[0]} K */
+ /** @typedef {Parameters[1]} V */
+
+ /** @type {Map | undefined} */ var $m;
+
+ /** @type {Channel} */
+ var channel = {
+ assert: function (key) {
+ if (!channel.has(key)) {
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
+ }
+ },
+ 'delete': function (key) {
+ if ($m) {
+ var result = $mapDelete($m, key);
+ if ($mapSize($m) === 0) {
+ $m = void undefined;
+ }
+ return result;
+ }
+ return false;
+ },
+ get: function (key) { // eslint-disable-line consistent-return
+ if ($m) {
+ return $mapGet($m, key);
+ }
+ },
+ has: function (key) {
+ if ($m) {
+ return $mapHas($m, key);
+ }
+ return false;
+ },
+ set: function (key, value) {
+ if (!$m) {
+ // @ts-expect-error TS can't handle narrowing a variable inside a closure
+ $m = new $Map();
+ }
+ $mapSet($m, key, value);
+ }
+ };
+
+ // @ts-expect-error TODO: figure out why TS is erroring here
+ return channel;
+};
diff --git a/node_modules/side-channel-map/package.json b/node_modules/side-channel-map/package.json
new file mode 100644
index 0000000..18e8080
--- /dev/null
+++ b/node_modules/side-channel-map/package.json
@@ -0,0 +1,80 @@
+{
+ "name": "side-channel-map",
+ "version": "1.0.1",
+ "description": "Store information about any JS value in a side channel, using a Map",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "types": "./index.d.ts",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "tsc -p . && attw -P",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "npx npm@'>= 10.2' audit --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/side-channel-map.git"
+ },
+ "keywords": [],
+ "author": "Jordan Harband ",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/side-channel-map/issues"
+ },
+ "homepage": "https://github.com/ljharb/side-channel-map#readme",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.1",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.2",
+ "@types/get-intrinsic": "^1.2.3",
+ "@types/object-inspect": "^1.13.0",
+ "@types/tape": "^5.6.5",
+ "auto-changelog": "^2.5.0",
+ "eclint": "^2.8.1",
+ "encoding": "^0.1.13",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/node_modules/side-channel-map/test/index.js b/node_modules/side-channel-map/test/index.js
new file mode 100644
index 0000000..1743323
--- /dev/null
+++ b/node_modules/side-channel-map/test/index.js
@@ -0,0 +1,114 @@
+'use strict';
+
+var test = require('tape');
+
+var getSideChannelMap = require('../');
+
+test('getSideChannelMap', { skip: typeof Map !== 'function' }, function (t) {
+ var getSideChannel = getSideChannelMap || function () {
+ throw new EvalError('should never happen');
+ };
+
+ t.test('export', function (st) {
+ st.equal(typeof getSideChannel, 'function', 'is a function');
+
+ st.equal(getSideChannel.length, 0, 'takes no arguments');
+
+ var channel = getSideChannel();
+ st.ok(channel, 'is truthy');
+ st.equal(typeof channel, 'object', 'is an object');
+ st.end();
+ });
+
+ t.test('assert', function (st) {
+ var channel = getSideChannel();
+ st['throws'](
+ function () { channel.assert({}); },
+ TypeError,
+ 'nonexistent value throws'
+ );
+
+ var o = {};
+ channel.set(o, 'data');
+ st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
+
+ st.end();
+ });
+
+ t.test('has', function (st) {
+ var channel = getSideChannel();
+ /** @type {unknown[]} */ var o = [];
+
+ st.equal(channel.has(o), false, 'nonexistent value yields false');
+
+ channel.set(o, 'foo');
+ st.equal(channel.has(o), true, 'existent value yields true');
+
+ st.equal(channel.has('abc'), false, 'non object value non existent yields false');
+
+ channel.set('abc', 'foo');
+ st.equal(channel.has('abc'), true, 'non object value that exists yields true');
+
+ st.end();
+ });
+
+ t.test('get', function (st) {
+ var channel = getSideChannel();
+ var o = {};
+ st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
+
+ var data = {};
+ channel.set(o, data);
+ st.equal(channel.get(o), data, '"get" yields data set by "set"');
+
+ st.end();
+ });
+
+ t.test('set', function (st) {
+ var channel = getSideChannel();
+ var o = function () {};
+ st.equal(channel.get(o), undefined, 'value not set');
+
+ channel.set(o, 42);
+ st.equal(channel.get(o), 42, 'value was set');
+
+ channel.set(o, Infinity);
+ st.equal(channel.get(o), Infinity, 'value was set again');
+
+ var o2 = {};
+ channel.set(o2, 17);
+ st.equal(channel.get(o), Infinity, 'o is not modified');
+ st.equal(channel.get(o2), 17, 'o2 is set');
+
+ channel.set(o, 14);
+ st.equal(channel.get(o), 14, 'o is modified');
+ st.equal(channel.get(o2), 17, 'o2 is not modified');
+
+ st.end();
+ });
+
+ t.test('delete', function (st) {
+ var channel = getSideChannel();
+ var o = {};
+ st.equal(channel['delete']({}), false, 'nonexistent value yields false');
+
+ channel.set(o, 42);
+ st.equal(channel.has(o), true, 'value is set');
+
+ st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
+
+ st.equal(channel['delete'](o), true, 'deleted value yields true');
+
+ st.equal(channel.has(o), false, 'value is no longer set');
+
+ st.end();
+ });
+
+ t.end();
+});
+
+test('getSideChannelMap, no Maps', { skip: typeof Map === 'function' }, function (t) {
+ t.equal(getSideChannelMap, false, 'is false');
+
+ t.end();
+});
diff --git a/node_modules/side-channel-map/tsconfig.json b/node_modules/side-channel-map/tsconfig.json
new file mode 100644
index 0000000..d9a6668
--- /dev/null
+++ b/node_modules/side-channel-map/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "es2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/side-channel-weakmap/.editorconfig b/node_modules/side-channel-weakmap/.editorconfig
new file mode 100644
index 0000000..72e0eba
--- /dev/null
+++ b/node_modules/side-channel-weakmap/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+indent_size = 2
+trim_trailing_whitespace = true
diff --git a/node_modules/side-channel-weakmap/.eslintrc b/node_modules/side-channel-weakmap/.eslintrc
new file mode 100644
index 0000000..9b13ad8
--- /dev/null
+++ b/node_modules/side-channel-weakmap/.eslintrc
@@ -0,0 +1,12 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "id-length": 0,
+ "max-lines-per-function": 0,
+ "multiline-comment-style": 1,
+ "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }],
+ },
+}
diff --git a/node_modules/side-channel-weakmap/.github/FUNDING.yml b/node_modules/side-channel-weakmap/.github/FUNDING.yml
new file mode 100644
index 0000000..2ae71cd
--- /dev/null
+++ b/node_modules/side-channel-weakmap/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/side-channel-weakmap
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/side-channel-weakmap/.nycrc b/node_modules/side-channel-weakmap/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/node_modules/side-channel-weakmap/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/side-channel-weakmap/CHANGELOG.md b/node_modules/side-channel-weakmap/CHANGELOG.md
new file mode 100644
index 0000000..aba7ab0
--- /dev/null
+++ b/node_modules/side-channel-weakmap/CHANGELOG.md
@@ -0,0 +1,28 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.2](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.1...v1.0.2) - 2024-12-10
+
+### Commits
+
+- [types] fix generics ordering [`1b62e94`](https://github.com/ljharb/side-channel-weakmap/commit/1b62e94a2ad6ed30b640ba73c4a2535836c67289)
+
+## [v1.0.1](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.0...v1.0.1) - 2024-12-10
+
+### Commits
+
+- [types] fix generics ordering [`08a4a5d`](https://github.com/ljharb/side-channel-weakmap/commit/08a4a5dbffedc3ebc79f1aaaf5a3dd6d2196dc1b)
+- [Deps] update `side-channel-map` [`b53fe44`](https://github.com/ljharb/side-channel-weakmap/commit/b53fe447dfdd3a9aebedfd015b384eac17fce916)
+
+## v1.0.0 - 2024-12-10
+
+### Commits
+
+- Initial implementation, tests, readme, types [`53c0fa4`](https://github.com/ljharb/side-channel-weakmap/commit/53c0fa4788435a006f58b9d7b43cb65989ecee49)
+- Initial commit [`a157947`](https://github.com/ljharb/side-channel-weakmap/commit/a157947f26fcaf2c4a941d3a044e76bf67343532)
+- npm init [`54dfc55`](https://github.com/ljharb/side-channel-weakmap/commit/54dfc55bafb16265910d5aad4e743c43aee5bbbb)
+- Only apps should have lockfiles [`0ddd6c7`](https://github.com/ljharb/side-channel-weakmap/commit/0ddd6c7b07fe8ee04d67b2e9f7255af7ce62c07d)
diff --git a/node_modules/side-channel-weakmap/LICENSE b/node_modules/side-channel-weakmap/LICENSE
new file mode 100644
index 0000000..3900dd7
--- /dev/null
+++ b/node_modules/side-channel-weakmap/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Jordan Harband
+
+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/node_modules/side-channel-weakmap/README.md b/node_modules/side-channel-weakmap/README.md
new file mode 100644
index 0000000..856ee36
--- /dev/null
+++ b/node_modules/side-channel-weakmap/README.md
@@ -0,0 +1,62 @@
+# side-channel-weakmap [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Store information about any JS value in a side channel. Uses WeakMap if available.
+
+Warning: this implementation will leak memory until you `delete` the `key`.
+Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy.
+
+## Getting started
+
+```sh
+npm install --save side-channel-weakmap
+```
+
+## Usage/Examples
+
+```js
+const assert = require('assert');
+const getSideChannelList = require('side-channel-weakmap');
+
+const channel = getSideChannelList();
+
+const key = {};
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+
+channel.set(key, 42);
+
+channel.assert(key); // does not throw
+assert.equal(channel.has(key), true);
+assert.equal(channel.get(key), 42);
+
+channel.delete(key);
+assert.equal(channel.has(key), false);
+assert.throws(() => channel.assert(key), TypeError);
+```
+
+## Tests
+
+Clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/side-channel-weakmap
+[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-weakmap.svg
+[deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap.svg
+[deps-url]: https://david-dm.org/ljharb/side-channel-weakmap
+[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/side-channel-weakmap#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/side-channel-weakmap.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/side-channel-weakmap.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/side-channel-weakmap.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-weakmap
+[codecov-image]: https://codecov.io/gh/ljharb/side-channel-weakmap/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-weakmap/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-weakmap
+[actions-url]: https://github.com/ljharb/side-channel-weakmap/actions
diff --git a/node_modules/side-channel-weakmap/index.d.ts b/node_modules/side-channel-weakmap/index.d.ts
new file mode 100644
index 0000000..ce1bc2a
--- /dev/null
+++ b/node_modules/side-channel-weakmap/index.d.ts
@@ -0,0 +1,15 @@
+declare namespace getSideChannelWeakMap {
+ type Channel = {
+ assert: (key: K) => void;
+ has: (key: K) => boolean;
+ get: (key: K) => V | undefined;
+ set: (key: K, value: V) => void;
+ delete: (key: K) => boolean;
+ }
+}
+
+declare function getSideChannelWeakMap(): getSideChannelWeakMap.Channel;
+
+declare const x: false | typeof getSideChannelWeakMap;
+
+export = x;
diff --git a/node_modules/side-channel-weakmap/index.js b/node_modules/side-channel-weakmap/index.js
new file mode 100644
index 0000000..e5b8183
--- /dev/null
+++ b/node_modules/side-channel-weakmap/index.js
@@ -0,0 +1,84 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bound');
+var inspect = require('object-inspect');
+var getSideChannelMap = require('side-channel-map');
+
+var $TypeError = require('es-errors/type');
+var $WeakMap = GetIntrinsic('%WeakMap%', true);
+
+/** @type {(thisArg: WeakMap, key: K) => V} */
+var $weakMapGet = callBound('WeakMap.prototype.get', true);
+/** @type {(thisArg: WeakMap, key: K, value: V) => void} */
+var $weakMapSet = callBound('WeakMap.prototype.set', true);
+/** @type {(thisArg: WeakMap, key: K) => boolean} */
+var $weakMapHas = callBound('WeakMap.prototype.has', true);
+/** @type {(thisArg: WeakMap, key: K) => boolean} */
+var $weakMapDelete = callBound('WeakMap.prototype.delete', true);
+
+/** @type {import('.')} */
+module.exports = $WeakMap
+ ? /** @type {Exclude} */ function getSideChannelWeakMap() {
+ /** @typedef {ReturnType} Channel */
+ /** @typedef {Parameters[0]} K */
+ /** @typedef {Parameters[1]} V */
+
+ /** @type {WeakMap | undefined} */ var $wm;
+ /** @type {Channel | undefined} */ var $m;
+
+ /** @type {Channel} */
+ var channel = {
+ assert: function (key) {
+ if (!channel.has(key)) {
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
+ }
+ },
+ 'delete': function (key) {
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+ if ($wm) {
+ return $weakMapDelete($wm, key);
+ }
+ } else if (getSideChannelMap) {
+ if ($m) {
+ return $m['delete'](key);
+ }
+ }
+ return false;
+ },
+ get: function (key) {
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+ if ($wm) {
+ return $weakMapGet($wm, key);
+ }
+ }
+ return $m && $m.get(key);
+ },
+ has: function (key) {
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+ if ($wm) {
+ return $weakMapHas($wm, key);
+ }
+ }
+ return !!$m && $m.has(key);
+ },
+ set: function (key, value) {
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
+ if (!$wm) {
+ $wm = new $WeakMap();
+ }
+ $weakMapSet($wm, key, value);
+ } else if (getSideChannelMap) {
+ if (!$m) {
+ $m = getSideChannelMap();
+ }
+ // eslint-disable-next-line no-extra-parens
+ /** @type {NonNullable} */ ($m).set(key, value);
+ }
+ }
+ };
+
+ // @ts-expect-error TODO: figure out why this is erroring
+ return channel;
+ }
+ : getSideChannelMap;
diff --git a/node_modules/side-channel-weakmap/package.json b/node_modules/side-channel-weakmap/package.json
new file mode 100644
index 0000000..9ef6583
--- /dev/null
+++ b/node_modules/side-channel-weakmap/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "side-channel-weakmap",
+ "version": "1.0.2",
+ "description": "Store information about any JS value in a side channel. Uses WeakMap if available.",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "types": "./index.d.ts",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "tsc -p . && attw -P",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "npx npm@'>=10.2' audit --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/side-channel-weakmap.git"
+ },
+ "keywords": [
+ "weakmap",
+ "map",
+ "side",
+ "channel",
+ "metadata"
+ ],
+ "author": "Jordan Harband ",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/side-channel-weakmap/issues"
+ },
+ "homepage": "https://github.com/ljharb/side-channel-weakmap#readme",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.1",
+ "@ljharb/eslint-config": "^21.1.1",
+ "@ljharb/tsconfig": "^0.2.2",
+ "@types/call-bind": "^1.0.5",
+ "@types/get-intrinsic": "^1.2.3",
+ "@types/object-inspect": "^1.13.0",
+ "@types/tape": "^5.6.5",
+ "auto-changelog": "^2.5.0",
+ "eclint": "^2.8.1",
+ "encoding": "^0.1.13",
+ "eslint": "=8.8.0",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.1",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.9.0",
+ "typescript": "next"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/node_modules/side-channel-weakmap/test/index.js b/node_modules/side-channel-weakmap/test/index.js
new file mode 100644
index 0000000..a01248b
--- /dev/null
+++ b/node_modules/side-channel-weakmap/test/index.js
@@ -0,0 +1,114 @@
+'use strict';
+
+var test = require('tape');
+
+var getSideChannelWeakMap = require('../');
+
+test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) {
+ var getSideChannel = getSideChannelWeakMap || function () {
+ throw new EvalError('should never happen');
+ };
+
+ t.test('export', function (st) {
+ st.equal(typeof getSideChannel, 'function', 'is a function');
+
+ st.equal(getSideChannel.length, 0, 'takes no arguments');
+
+ var channel = getSideChannel();
+ st.ok(channel, 'is truthy');
+ st.equal(typeof channel, 'object', 'is an object');
+ st.end();
+ });
+
+ t.test('assert', function (st) {
+ var channel = getSideChannel();
+ st['throws'](
+ function () { channel.assert({}); },
+ TypeError,
+ 'nonexistent value throws'
+ );
+
+ var o = {};
+ channel.set(o, 'data');
+ st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
+
+ st.end();
+ });
+
+ t.test('has', function (st) {
+ var channel = getSideChannel();
+ /** @type {unknown[]} */ var o = [];
+
+ st.equal(channel.has(o), false, 'nonexistent value yields false');
+
+ channel.set(o, 'foo');
+ st.equal(channel.has(o), true, 'existent value yields true');
+
+ st.equal(channel.has('abc'), false, 'non object value non existent yields false');
+
+ channel.set('abc', 'foo');
+ st.equal(channel.has('abc'), true, 'non object value that exists yields true');
+
+ st.end();
+ });
+
+ t.test('get', function (st) {
+ var channel = getSideChannel();
+ var o = {};
+ st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
+
+ var data = {};
+ channel.set(o, data);
+ st.equal(channel.get(o), data, '"get" yields data set by "set"');
+
+ st.end();
+ });
+
+ t.test('set', function (st) {
+ var channel = getSideChannel();
+ var o = function () {};
+ st.equal(channel.get(o), undefined, 'value not set');
+
+ channel.set(o, 42);
+ st.equal(channel.get(o), 42, 'value was set');
+
+ channel.set(o, Infinity);
+ st.equal(channel.get(o), Infinity, 'value was set again');
+
+ var o2 = {};
+ channel.set(o2, 17);
+ st.equal(channel.get(o), Infinity, 'o is not modified');
+ st.equal(channel.get(o2), 17, 'o2 is set');
+
+ channel.set(o, 14);
+ st.equal(channel.get(o), 14, 'o is modified');
+ st.equal(channel.get(o2), 17, 'o2 is not modified');
+
+ st.end();
+ });
+
+ t.test('delete', function (st) {
+ var channel = getSideChannel();
+ var o = {};
+ st.equal(channel['delete']({}), false, 'nonexistent value yields false');
+
+ channel.set(o, 42);
+ st.equal(channel.has(o), true, 'value is set');
+
+ st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
+
+ st.equal(channel['delete'](o), true, 'deleted value yields true');
+
+ st.equal(channel.has(o), false, 'value is no longer set');
+
+ st.end();
+ });
+
+ t.end();
+});
+
+test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) {
+ t.equal(getSideChannelWeakMap, false, 'is false');
+
+ t.end();
+});
diff --git a/node_modules/side-channel-weakmap/tsconfig.json b/node_modules/side-channel-weakmap/tsconfig.json
new file mode 100644
index 0000000..d9a6668
--- /dev/null
+++ b/node_modules/side-channel-weakmap/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@ljharb/tsconfig",
+ "compilerOptions": {
+ "target": "es2021",
+ },
+ "exclude": [
+ "coverage",
+ ],
+}
diff --git a/node_modules/utility/node_modules/.bin/mkdirp b/node_modules/utility/node_modules/.bin/mkdirp
new file mode 120000
index 0000000..91a5f62
--- /dev/null
+++ b/node_modules/utility/node_modules/.bin/mkdirp
@@ -0,0 +1 @@
+../../../mkdirp/bin/cmd.js
\ No newline at end of file
diff --git a/node_modules/win-release/node_modules/.bin/semver b/node_modules/win-release/node_modules/.bin/semver
new file mode 120000
index 0000000..317eb29
--- /dev/null
+++ b/node_modules/win-release/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver
\ No newline at end of file
diff --git a/node_modules/win-release/node_modules/semver/LICENSE b/node_modules/win-release/node_modules/semver/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/win-release/node_modules/semver/README.md b/node_modules/win-release/node_modules/semver/README.md
new file mode 100644
index 0000000..f8dfa5a
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/README.md
@@ -0,0 +1,412 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install --save semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] [ [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range
+ Print versions that match the specified range.
+
+-i --increment []
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero digit in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
diff --git a/node_modules/win-release/node_modules/semver/bin/semver b/node_modules/win-release/node_modules/semver/bin/semver
new file mode 100755
index 0000000..801e77f
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/bin/semver
@@ -0,0 +1,160 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] [ [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range ',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment []',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid ',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/node_modules/win-release/node_modules/semver/package.json b/node_modules/win-release/node_modules/semver/package.json
new file mode 100644
index 0000000..db035e9
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "semver",
+ "version": "5.7.2",
+ "description": "The semantic version parser used by npm.",
+ "main": "semver.js",
+ "scripts": {
+ "test": "tap test/ --100 --timeout=30",
+ "lint": "echo linting disabled",
+ "postlint": "template-oss-check",
+ "template-oss-apply": "template-oss-apply --force",
+ "lintfix": "npm run lint -- --fix",
+ "snap": "tap test/ --100 --timeout=30",
+ "posttest": "npm run lint"
+ },
+ "devDependencies": {
+ "@npmcli/template-oss": "4.17.0",
+ "tap": "^12.7.0"
+ },
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/node-semver.git"
+ },
+ "bin": {
+ "semver": "./bin/semver"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "author": "GitHub Inc.",
+ "templateOSS": {
+ "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
+ "content": "./scripts/template-oss",
+ "version": "4.17.0"
+ }
+}
diff --git a/node_modules/win-release/node_modules/semver/range.bnf b/node_modules/win-release/node_modules/semver/range.bnf
new file mode 100644
index 0000000..d4c6ae0
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/node_modules/win-release/node_modules/semver/semver.js b/node_modules/win-release/node_modules/semver/semver.js
new file mode 100644
index 0000000..dcb6833
--- /dev/null
+++ b/node_modules/win-release/node_modules/semver/semver.js
@@ -0,0 +1,1525 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var safeRe = exports.safeRe = []
+var src = exports.src = []
+var R = 0
+
+var LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+var safeRegexReplacements = [
+ ['\\s', 1],
+ ['\\d', MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
+
+function makeSafeRe (value) {
+ for (var i = 0; i < safeRegexReplacements.length; i++) {
+ var token = safeRegexReplacements[i][0]
+ var max = safeRegexReplacements[i][1]
+ value = value
+ .split(token + '*').join(token + '{0,' + max + '}')
+ .split(token + '+').join(token + '{1,' + max + '}')
+ }
+ return value
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+var NUMERICIDENTIFIER = R++
+src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+var NUMERICIDENTIFIERLOOSE = R++
+src[NUMERICIDENTIFIERLOOSE] = '\\d+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+var NONNUMERICIDENTIFIER = R++
+src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+var MAINVERSION = R++
+src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')'
+
+var MAINVERSIONLOOSE = R++
+src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+var PRERELEASEIDENTIFIER = R++
+src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
+
+var PRERELEASEIDENTIFIERLOOSE = R++
+src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+var PRERELEASE = R++
+src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
+
+var PRERELEASELOOSE = R++
+src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+var BUILDIDENTIFIER = R++
+src[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+var BUILD = R++
+src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
+ '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+var FULL = R++
+var FULLPLAIN = 'v?' + src[MAINVERSION] +
+ src[PRERELEASE] + '?' +
+ src[BUILD] + '?'
+
+src[FULL] = '^' + FULLPLAIN + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
+ src[PRERELEASELOOSE] + '?' +
+ src[BUILD] + '?'
+
+var LOOSE = R++
+src[LOOSE] = '^' + LOOSEPLAIN + '$'
+
+var GTLT = R++
+src[GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+var XRANGEIDENTIFIERLOOSE = R++
+src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+var XRANGEIDENTIFIER = R++
+src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
+
+var XRANGEPLAIN = R++
+src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[PRERELEASE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
+
+var XRANGEPLAINLOOSE = R++
+src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[PRERELEASELOOSE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?'
+
+var XRANGE = R++
+src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
+var XRANGELOOSE = R++
+src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+var COERCE = R++
+src[COERCE] = '(?:^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+var LONETILDE = R++
+src[LONETILDE] = '(?:~>?)'
+
+var TILDETRIM = R++
+src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
+re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
+safeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g')
+var tildeTrimReplace = '$1~'
+
+var TILDE = R++
+src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
+var TILDELOOSE = R++
+src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+var LONECARET = R++
+src[LONECARET] = '(?:\\^)'
+
+var CARETTRIM = R++
+src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
+re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
+safeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g')
+var caretTrimReplace = '$1^'
+
+var CARET = R++
+src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
+var CARETLOOSE = R++
+src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+var COMPARATORLOOSE = R++
+src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
+var COMPARATOR = R++
+src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+var COMPARATORTRIM = R++
+src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
+ '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
+safeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+var HYPHENRANGE = R++
+src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAIN] + ')' +
+ '\\s*$'
+
+var HYPHENRANGELOOSE = R++
+src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+
+// Star ranges basically just allow anything at all.
+var STAR = R++
+src[STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+
+ // Replace all greedy whitespace to prevent regex dos issues. These regex are
+ // used internally via the safeRe object since all inputs in this library get
+ // normalized first to trim and collapse all extra whitespace. The original
+ // regexes are exported for userland consumption and lower level usage. A
+ // future breaking change could export the safer regex only with a note that
+ // all input should have extra whitespace removed.
+ safeRe[i] = new RegExp(makeSafeRe(src[i]))
+ }
+}
+
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ var r = options.loose ? safeRe[LOOSE] : safeRe[FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+
+ var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
+
+SemVer.prototype.toString = function () {
+ return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version
+ } catch (er) {
+ return null
+ }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compare(a, b, loose)
+ })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.rcompare(a, b, loose)
+ })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
+
+ comp = comp.trim().split(/\s+/).join(' ')
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]
+ var m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+
+ this.operator = m[1]
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+}
+
+Comparator.prototype.toString = function () {
+ return this.value
+}
+
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ var rangeTmp
+
+ if (this.operator === '') {
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
+ }
+
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
+
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First reduce all whitespace as much as possible so we do not have to rely
+ // on potentially slow regexes like \s*. This is then stored and used for
+ // future error messages as well.
+ this.raw = range
+ .trim()
+ .split(/\s+/)
+ .join(' ')
+
+ // First, split based on boolean or ||
+ this.set = this.raw.split('||').map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + this.raw)
+ }
+
+ this.format()
+}
+
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
+
+Range.prototype.toString = function () {
+ return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, safeRe[COMPARATORTRIM])
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(safeRe[TILDETRIM], tildeTrimReplace)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(safeRe[CARETTRIM], caretTrimReplace)
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+ var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
+
+ return set
+}
+
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some(function (thisComparators) {
+ return thisComparators.every(function (thisComparator) {
+ return range.set.some(function (rangeComparators) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ })
+ })
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+ var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p
+ } else if (xm) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(safeRe[STAR], '')
+}
+
+// This function is passed to string.replace(safeRe[HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
+
+ return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ version = new SemVer(version, this.options)
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
+
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
+
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator)
+ }
+ })
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version) {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ var match = version.match(safeRe[COERCE])
+
+ if (match == null) {
+ return null
+ }
+
+ return parse(match[1] +
+ '.' + (match[2] || '0') +
+ '.' + (match[3] || '0'))
+}
diff --git a/yarn.lock b/yarn.lock
index d01e08c..7245bd2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -187,10 +187,17 @@ builtin-status-codes@^3.0.0:
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+<<<<<<< HEAD
+call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
+ integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
+=======
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
es-errors "^1.3.0"
function-bind "^1.1.2"
@@ -372,7 +379,11 @@ es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+<<<<<<< HEAD
+es-object-atoms@^1.0.0:
+=======
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
@@ -521,9 +532,15 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
+<<<<<<< HEAD
+ version "1.18.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0"
+ integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==
+=======
version "1.19.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89"
integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
reusify "^1.0.4"
@@ -552,9 +569,15 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.2.9:
+<<<<<<< HEAD
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27"
+ integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
+=======
version "3.3.3"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
formstream@^1.1.0:
version "1.5.1"
@@ -577,6 +600,18 @@ function-bind@^1.1.2:
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
+<<<<<<< HEAD
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044"
+ integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ function-bind "^1.1.2"
+ get-proto "^1.0.0"
+=======
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
@@ -587,12 +622,17 @@ get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
es-object-atoms "^1.1.1"
function-bind "^1.1.2"
get-proto "^1.0.1"
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
gopd "^1.2.0"
has-symbols "^1.1.0"
hasown "^2.0.2"
math-intrinsics "^1.1.0"
+<<<<<<< HEAD
+get-proto@^1.0.0:
+=======
get-proto@^1.0.1:
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
@@ -685,9 +725,15 @@ ignore@^5.2.0:
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
import-fresh@^3.2.1:
+<<<<<<< HEAD
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+=======
version "3.3.1"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf"
integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
@@ -889,9 +935,15 @@ object-assign@^4.0.1:
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-inspect@^1.13.3:
+<<<<<<< HEAD
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
+ integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
+=======
version "1.13.4"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
+>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
object-keys@^1.1.1:
version "1.1.1"