extends {
- thisArg: infer OrigThis;
- params: infer P extends readonly unknown[];
- returnType: infer R;
-}
- ? ReceiverBound extends true
- ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest]
- ? [TThis, ...Rest] // Replace `this` with `thisArg`
- : R
- : >>(
- thisArg: U,
- ...args: RemainingArgs
- ) => R extends [OrigThis, ...infer Rest]
- ? [U, ...ConcatTuples] // Preserve bound args in return type
- : R
- : never;
-
-declare function callBind<
- const T extends (this: any, ...args: any[]) => any,
- Extracted extends ExtractFunctionParams,
- const TBoundArgs extends Partial & readonly unknown[],
- const TThis extends Extracted["thisArg"]
->(
- args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs]
-): BindFunction;
-
-declare function callBind<
- const T extends (this: any, ...args: any[]) => any,
- Extracted extends ExtractFunctionParams,
- const TBoundArgs extends Partial & readonly unknown[]
->(
- args: [fn: T, ...boundArgs: TBoundArgs]
-): BindFunction;
-
-declare function callBind(
- args: [fn: Exclude, ...rest: TArgs]
-): never;
-
-// export as namespace callBind;
-export = callBind;
diff --git a/node_modules/call-bind-apply-helpers/index.js b/node_modules/call-bind-apply-helpers/index.js
deleted file mode 100644
index 2f6dab4..0000000
--- a/node_modules/call-bind-apply-helpers/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict';
-
-var bind = require('function-bind');
-var $TypeError = require('es-errors/type');
-
-var $call = require('./functionCall');
-var $actualApply = require('./actualApply');
-
-/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */
-module.exports = function callBindBasic(args) {
- if (args.length < 1 || typeof args[0] !== 'function') {
- throw new $TypeError('a function is required');
- }
- return $actualApply(bind, $call, args);
-};
diff --git a/node_modules/call-bind-apply-helpers/package.json b/node_modules/call-bind-apply-helpers/package.json
deleted file mode 100644
index 923b8be..0000000
--- a/node_modules/call-bind-apply-helpers/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "name": "call-bind-apply-helpers",
- "version": "1.0.2",
- "description": "Helper functions around Function call/apply/bind, for use in `call-bind`",
- "main": "index.js",
- "exports": {
- ".": "./index.js",
- "./actualApply": "./actualApply.js",
- "./applyBind": "./applyBind.js",
- "./functionApply": "./functionApply.js",
- "./functionCall": "./functionCall.js",
- "./reflectApply": "./reflectApply.js",
- "./package.json": "./package.json"
- },
- "scripts": {
- "prepack": "npmignore --auto --commentLines=auto",
- "prepublish": "not-in-publish || npm run prepublishOnly",
- "prepublishOnly": "safe-publish-latest",
- "prelint": "evalmd README.md",
- "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/call-bind-apply-helpers.git"
- },
- "author": "Jordan Harband ",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/ljharb/call-bind-apply-helpers/issues"
- },
- "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "devDependencies": {
- "@arethetypeswrong/cli": "^0.17.3",
- "@ljharb/eslint-config": "^21.1.1",
- "@ljharb/tsconfig": "^0.2.3",
- "@types/for-each": "^0.3.3",
- "@types/function-bind": "^1.1.10",
- "@types/object-inspect": "^1.13.0",
- "@types/tape": "^5.8.1",
- "auto-changelog": "^2.5.0",
- "encoding": "^0.1.13",
- "es-value-fixtures": "^1.7.1",
- "eslint": "=8.8.0",
- "evalmd": "^0.0.19",
- "for-each": "^0.3.5",
- "has-strict-mode": "^1.1.0",
- "in-publish": "^2.0.1",
- "npmignore": "^0.3.1",
- "nyc": "^10.3.2",
- "object-inspect": "^1.13.4",
- "safe-publish-latest": "^2.0.0",
- "tape": "^5.9.0",
- "typescript": "next"
- },
- "testling": {
- "files": "test/index.js"
- },
- "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/call-bind-apply-helpers/reflectApply.d.ts b/node_modules/call-bind-apply-helpers/reflectApply.d.ts
deleted file mode 100644
index 6b2ae76..0000000
--- a/node_modules/call-bind-apply-helpers/reflectApply.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare const reflectApply: false | typeof Reflect.apply;
-
-export = reflectApply;
diff --git a/node_modules/call-bind-apply-helpers/reflectApply.js b/node_modules/call-bind-apply-helpers/reflectApply.js
deleted file mode 100644
index 3d03caa..0000000
--- a/node_modules/call-bind-apply-helpers/reflectApply.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-
-/** @type {import('./reflectApply')} */
-module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;
diff --git a/node_modules/call-bind-apply-helpers/test/index.js b/node_modules/call-bind-apply-helpers/test/index.js
deleted file mode 100644
index 1cdc89e..0000000
--- a/node_modules/call-bind-apply-helpers/test/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-'use strict';
-
-var callBind = require('../');
-var hasStrictMode = require('has-strict-mode')();
-var forEach = require('for-each');
-var inspect = require('object-inspect');
-var v = require('es-value-fixtures');
-
-var test = require('tape');
-
-test('callBindBasic', function (t) {
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- // @ts-expect-error
- function () { callBind([nonFunction]); },
- TypeError,
- inspect(nonFunction) + ' is not a function'
- );
- });
-
- var sentinel = { sentinel: true };
- /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */
- var func = function (a, b) {
- // eslint-disable-next-line no-invalid-this
- return [!hasStrictMode && this === global ? undefined : this, a, b];
- };
- t.equal(func.length, 2, 'original function length is 2');
-
- /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */
- var bound = callBind([func]);
- /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */
- var boundR = callBind([func, sentinel]);
- /** type {((b: number) => [typeof sentinel, number, typeof b])} */
- var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]);
-
- // @ts-expect-error
- t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args');
-
- // @ts-expect-error
- t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args');
- // @ts-expect-error
- t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args');
- // @ts-expect-error
- t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args');
- // @ts-expect-error
- t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args');
-
- t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args');
- t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args');
- t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args');
- t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg');
-
- // @ts-expect-error
- t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args');
- // @ts-expect-error
- t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args');
- // @ts-expect-error
- t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args');
- // @ts-expect-error
- t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args');
-
- t.end();
-});
diff --git a/node_modules/call-bind-apply-helpers/tsconfig.json b/node_modules/call-bind-apply-helpers/tsconfig.json
deleted file mode 100644
index aef9993..0000000
--- a/node_modules/call-bind-apply-helpers/tsconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "extends": "@ljharb/tsconfig",
- "compilerOptions": {
- "target": "es2021",
- },
- "exclude": [
- "coverage",
- ],
-}
\ No newline at end of file
diff --git a/node_modules/call-bound/.eslintrc b/node_modules/call-bound/.eslintrc
deleted file mode 100644
index 2612ed8..0000000
--- a/node_modules/call-bound/.eslintrc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "root": true,
-
- "extends": "@ljharb",
-
- "rules": {
- "new-cap": [2, {
- "capIsNewExceptions": [
- "GetIntrinsic",
- ],
- }],
- },
-}
diff --git a/node_modules/call-bound/.github/FUNDING.yml b/node_modules/call-bound/.github/FUNDING.yml
deleted file mode 100644
index 2a2a135..0000000
--- a/node_modules/call-bound/.github/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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/call-bound
-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/call-bound/.nycrc b/node_modules/call-bound/.nycrc
deleted file mode 100644
index bdd626c..0000000
--- a/node_modules/call-bound/.nycrc
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "all": true,
- "check-coverage": false,
- "reporter": ["text-summary", "text", "html", "json"],
- "exclude": [
- "coverage",
- "test"
- ]
-}
diff --git a/node_modules/call-bound/CHANGELOG.md b/node_modules/call-bound/CHANGELOG.md
deleted file mode 100644
index 8bde4e9..0000000
--- a/node_modules/call-bound/CHANGELOG.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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.4](https://github.com/ljharb/call-bound/compare/v1.0.3...v1.0.4) - 2025-03-03
-
-### Commits
-
-- [types] improve types [`e648922`](https://github.com/ljharb/call-bound/commit/e6489222a9e54f350fbf952ceabe51fd8b6027ff)
-- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`a42a5eb`](https://github.com/ljharb/call-bound/commit/a42a5ebe6c1b54fcdc7997c7dc64fdca9e936719)
-- [Deps] update `call-bind-apply-helpers`, `get-intrinsic` [`f529eac`](https://github.com/ljharb/call-bound/commit/f529eac132404c17156bbc23ab2297a25d0f20b8)
-
-## [v1.0.3](https://github.com/ljharb/call-bound/compare/v1.0.2...v1.0.3) - 2024-12-15
-
-### Commits
-
-- [Refactor] use `call-bind-apply-helpers` instead of `call-bind` [`5e0b134`](https://github.com/ljharb/call-bound/commit/5e0b13496df14fb7d05dae9412f088da8d3f75be)
-- [Deps] update `get-intrinsic` [`41fc967`](https://github.com/ljharb/call-bound/commit/41fc96732a22c7b7e8f381f93ccc54bb6293be2e)
-- [readme] fix example [`79a0137`](https://github.com/ljharb/call-bound/commit/79a0137723f7c6d09c9c05452bbf8d5efb5d6e49)
-- [meta] add `sideEffects` flag [`08b07be`](https://github.com/ljharb/call-bound/commit/08b07be7f1c03f67dc6f3cdaf0906259771859f7)
-
-## [v1.0.2](https://github.com/ljharb/call-bound/compare/v1.0.1...v1.0.2) - 2024-12-10
-
-### Commits
-
-- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `gopd` [`e6a5ffe`](https://github.com/ljharb/call-bound/commit/e6a5ffe849368fe4f74dfd6cdeca1b9baa39e8d5)
-- [Deps] update `call-bind`, `get-intrinsic` [`2aeb5b5`](https://github.com/ljharb/call-bound/commit/2aeb5b521dc2b2683d1345c753ea1161de2d1c14)
-- [types] improve return type [`1a0c9fe`](https://github.com/ljharb/call-bound/commit/1a0c9fe3114471e7ca1f57d104e2efe713bb4871)
-
-## v1.0.1 - 2024-12-05
-
-### Commits
-
-- Initial implementation, tests, readme, types [`6d94121`](https://github.com/ljharb/call-bound/commit/6d94121a9243602e506334069f7a03189fe3363d)
-- Initial commit [`0eae867`](https://github.com/ljharb/call-bound/commit/0eae867334ea025c33e6e91cdecfc9df96680cf9)
-- npm init [`71b2479`](https://github.com/ljharb/call-bound/commit/71b2479c6723e0b7d91a6b663613067e98b7b275)
-- Only apps should have lockfiles [`c3754a9`](https://github.com/ljharb/call-bound/commit/c3754a949b7f9132b47e2d18c1729889736741eb)
-- [actions] skip `npm ls` in node < 10 [`74275a5`](https://github.com/ljharb/call-bound/commit/74275a5186b8caf6309b6b97472bdcb0df4683a8)
-- [Dev Deps] add missing peer dep [`1354de8`](https://github.com/ljharb/call-bound/commit/1354de8679413e4ae9c523d85f76fa7a5e032d97)
diff --git a/node_modules/call-bound/README.md b/node_modules/call-bound/README.md
deleted file mode 100644
index a44e43e..0000000
--- a/node_modules/call-bound/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# call-bound [![Version Badge][npm-version-svg]][package-url]
-
-[![github actions][actions-image]][actions-url]
-[![coverage][codecov-image]][codecov-url]
-[![dependency status][deps-svg]][deps-url]
-[![dev dependency status][dev-deps-svg]][dev-deps-url]
-[![License][license-image]][license-url]
-[![Downloads][downloads-image]][downloads-url]
-
-[![npm badge][npm-badge-png]][package-url]
-
-Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.
-
-## Getting started
-
-```sh
-npm install --save call-bound
-```
-
-## Usage/Examples
-
-```js
-const assert = require('assert');
-const callBound = require('call-bound');
-
-const slice = callBound('Array.prototype.slice');
-
-delete Function.prototype.call;
-delete Function.prototype.bind;
-delete Array.prototype.slice;
-
-assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]);
-```
-
-## Tests
-
-Clone the repo, `npm install`, and run `npm test`
-
-[package-url]: https://npmjs.org/package/call-bound
-[npm-version-svg]: https://versionbadg.es/ljharb/call-bound.svg
-[deps-svg]: https://david-dm.org/ljharb/call-bound.svg
-[deps-url]: https://david-dm.org/ljharb/call-bound
-[dev-deps-svg]: https://david-dm.org/ljharb/call-bound/dev-status.svg
-[dev-deps-url]: https://david-dm.org/ljharb/call-bound#info=devDependencies
-[npm-badge-png]: https://nodei.co/npm/call-bound.png?downloads=true&stars=true
-[license-image]: https://img.shields.io/npm/l/call-bound.svg
-[license-url]: LICENSE
-[downloads-image]: https://img.shields.io/npm/dm/call-bound.svg
-[downloads-url]: https://npm-stat.com/charts.html?package=call-bound
-[codecov-image]: https://codecov.io/gh/ljharb/call-bound/branch/main/graphs/badge.svg
-[codecov-url]: https://app.codecov.io/gh/ljharb/call-bound/
-[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bound
-[actions-url]: https://github.com/ljharb/call-bound/actions
diff --git a/node_modules/call-bound/index.d.ts b/node_modules/call-bound/index.d.ts
deleted file mode 100644
index 5562f00..0000000
--- a/node_modules/call-bound/index.d.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-type Intrinsic = typeof globalThis;
-
-type IntrinsicName = keyof Intrinsic | `%${keyof Intrinsic}%`;
-
-type IntrinsicPath = IntrinsicName | `${StripPercents}.${string}` | `%${StripPercents}.${string}%`;
-
-type AllowMissing = boolean;
-
-type StripPercents = T extends `%${infer U}%` ? U : T;
-
-type BindMethodPrecise =
- F extends (this: infer This, ...args: infer Args) => infer R
- ? (obj: This, ...args: Args) => R
- : F extends {
- (this: infer This1, ...args: infer Args1): infer R1;
- (this: infer This2, ...args: infer Args2): infer R2
- }
- ? {
- (obj: This1, ...args: Args1): R1;
- (obj: This2, ...args: Args2): R2
- }
- : never
-
-// Extract method type from a prototype
-type GetPrototypeMethod =
- (typeof globalThis)[T] extends { prototype: any }
- ? M extends keyof (typeof globalThis)[T]['prototype']
- ? (typeof globalThis)[T]['prototype'][M]
- : never
- : never
-
-// Get static property/method
-type GetStaticMember =
- P extends keyof (typeof globalThis)[T] ? (typeof globalThis)[T][P] : never
-
-// Type that maps string path to actual bound function or value with better precision
-type BoundIntrinsic =
- S extends `${infer Obj}.prototype.${infer Method}`
- ? Obj extends keyof typeof globalThis
- ? BindMethodPrecise>
- : unknown
- : S extends `${infer Obj}.${infer Prop}`
- ? Obj extends keyof typeof globalThis
- ? GetStaticMember
- : unknown
- : unknown
-
-declare function arraySlice(array: readonly T[], start?: number, end?: number): T[];
-declare function arraySlice(array: ArrayLike, start?: number, end?: number): T[];
-declare function arraySlice(array: IArguments, start?: number, end?: number): T[];
-
-// Special cases for methods that need explicit typing
-interface SpecialCases {
- '%Object.prototype.isPrototypeOf%': (thisArg: {}, obj: unknown) => boolean;
- '%String.prototype.replace%': {
- (str: string, searchValue: string | RegExp, replaceValue: string): string;
- (str: string, searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string
- };
- '%Object.prototype.toString%': (obj: {}) => string;
- '%Object.prototype.hasOwnProperty%': (obj: {}, v: PropertyKey) => boolean;
- '%Array.prototype.slice%': typeof arraySlice;
- '%Array.prototype.map%': (array: readonly T[], callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any) => U[];
- '%Array.prototype.filter%': (array: readonly T[], predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any) => T[];
- '%Array.prototype.indexOf%': (array: readonly T[], searchElement: T, fromIndex?: number) => number;
- '%Function.prototype.apply%': (fn: (...args: A) => R, thisArg: any, args: A) => R;
- '%Function.prototype.call%': (fn: (...args: A) => R, thisArg: any, ...args: A) => R;
- '%Function.prototype.bind%': (fn: (...args: A) => R, thisArg: any, ...args: A) => (...remainingArgs: A) => R;
- '%Promise.prototype.then%': {
- (promise: Promise, onfulfilled: (value: T) => R | PromiseLike): Promise;
- (promise: Promise, onfulfilled: ((value: T) => R | PromiseLike) | undefined | null, onrejected: (reason: any) => R | PromiseLike): Promise;
- };
- '%RegExp.prototype.test%': (regexp: RegExp, str: string) => boolean;
- '%RegExp.prototype.exec%': (regexp: RegExp, str: string) => RegExpExecArray | null;
- '%Error.prototype.toString%': (error: Error) => string;
- '%TypeError.prototype.toString%': (error: TypeError) => string;
- '%String.prototype.split%': (
- obj: unknown,
- splitter: string | RegExp | {
- [Symbol.split](string: string, limit?: number): string[];
- },
- limit?: number | undefined
- ) => string[];
-}
-
-/**
- * Returns a bound function for a prototype method, or a value for a static property.
- *
- * @param name - The name of the intrinsic (e.g. 'Array.prototype.slice')
- * @param {AllowMissing} [allowMissing] - Whether to allow missing intrinsics (default: false)
- */
-declare function callBound, S extends IntrinsicPath>(name: K, allowMissing?: AllowMissing): SpecialCases[`%${StripPercents}%`];
-declare function callBound, S extends IntrinsicPath>(name: S, allowMissing?: AllowMissing): BoundIntrinsic;
-
-export = callBound;
diff --git a/node_modules/call-bound/index.js b/node_modules/call-bound/index.js
deleted file mode 100644
index e9ade74..0000000
--- a/node_modules/call-bound/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-var GetIntrinsic = require('get-intrinsic');
-
-var callBindBasic = require('call-bind-apply-helpers');
-
-/** @type {(thisArg: string, searchString: string, position?: number) => number} */
-var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);
-
-/** @type {import('.')} */
-module.exports = function callBoundIntrinsic(name, allowMissing) {
- /* eslint no-extra-parens: 0 */
-
- var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));
- if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {
- return callBindBasic(/** @type {const} */ ([intrinsic]));
- }
- return intrinsic;
-};
diff --git a/node_modules/call-bound/package.json b/node_modules/call-bound/package.json
deleted file mode 100644
index d542db4..0000000
--- a/node_modules/call-bound/package.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- "name": "call-bound",
- "version": "1.0.4",
- "description": "Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.",
- "main": "index.js",
- "exports": {
- ".": "./index.js",
- "./package.json": "./package.json"
- },
- "sideEffects": false,
- "scripts": {
- "prepack": "npmignore --auto --commentLines=auto",
- "prepublish": "not-in-publish || npm run prepublishOnly",
- "prepublishOnly": "safe-publish-latest",
- "prelint": "evalmd README.md",
- "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/call-bound.git"
- },
- "keywords": [
- "javascript",
- "ecmascript",
- "es",
- "js",
- "callbind",
- "callbound",
- "call",
- "bind",
- "bound",
- "call-bind",
- "call-bound",
- "function",
- "es-abstract"
- ],
- "author": "Jordan Harband ",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/ljharb/call-bound/issues"
- },
- "homepage": "https://github.com/ljharb/call-bound#readme",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "devDependencies": {
- "@arethetypeswrong/cli": "^0.17.4",
- "@ljharb/eslint-config": "^21.1.1",
- "@ljharb/tsconfig": "^0.3.0",
- "@types/call-bind": "^1.0.5",
- "@types/get-intrinsic": "^1.2.3",
- "@types/tape": "^5.8.1",
- "auto-changelog": "^2.5.0",
- "encoding": "^0.1.13",
- "es-value-fixtures": "^1.7.1",
- "eslint": "=8.8.0",
- "evalmd": "^0.0.19",
- "for-each": "^0.3.5",
- "gopd": "^1.2.0",
- "has-strict-mode": "^1.1.0",
- "in-publish": "^2.0.1",
- "npmignore": "^0.3.1",
- "nyc": "^10.3.2",
- "object-inspect": "^1.13.4",
- "safe-publish-latest": "^2.0.0",
- "tape": "^5.9.0",
- "typescript": "next"
- },
- "testling": {
- "files": "test/index.js"
- },
- "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/call-bound/test/index.js b/node_modules/call-bound/test/index.js
deleted file mode 100644
index a2fc9f0..0000000
--- a/node_modules/call-bound/test/index.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'use strict';
-
-var test = require('tape');
-
-var callBound = require('../');
-
-/** @template {true} T @template U @typedef {T extends U ? T : never} AssertType */
-
-test('callBound', function (t) {
- // static primitive
- t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself');
- t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself');
-
- // static non-function object
- t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself');
- t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself');
- t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself');
- t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself');
-
- // static function
- t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself');
- t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself');
-
- // prototype primitive
- t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself');
- t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself');
-
- var x = callBound('Object.prototype.toString');
- var y = callBound('%Object.prototype.toString%');
-
- // prototype function
- t.notEqual(x, Object.prototype.toString, 'Object.prototype.toString does not yield itself');
- t.notEqual(y, Object.prototype.toString, '%Object.prototype.toString% does not yield itself');
- t.equal(x(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original');
- t.equal(y(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original');
-
- t['throws'](
- // @ts-expect-error
- function () { callBound('does not exist'); },
- SyntaxError,
- 'nonexistent intrinsic throws'
- );
- t['throws'](
- // @ts-expect-error
- function () { callBound('does not exist', true); },
- SyntaxError,
- 'allowMissing arg still throws for unknown intrinsic'
- );
-
- t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) {
- st['throws'](
- function () { callBound('WeakRef'); },
- TypeError,
- 'real but absent intrinsic throws'
- );
- st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception');
- st.end();
- });
-
- t.end();
-});
diff --git a/node_modules/call-bound/tsconfig.json b/node_modules/call-bound/tsconfig.json
deleted file mode 100644
index 8976d98..0000000
--- a/node_modules/call-bound/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "@ljharb/tsconfig",
- "compilerOptions": {
- "target": "ESNext",
- "lib": ["es2024"],
- },
- "exclude": [
- "coverage",
- ],
-}
diff --git a/node_modules/content-disposition/HISTORY.md b/node_modules/content-disposition/HISTORY.md
deleted file mode 100644
index ff0b68b..0000000
--- a/node_modules/content-disposition/HISTORY.md
+++ /dev/null
@@ -1,66 +0,0 @@
-1.0.0 / 2024-08-31
-==================
-
- * drop node <18
- * allow utf8 as alias for utf-8
-
-0.5.4 / 2021-12-10
-==================
-
- * deps: safe-buffer@5.2.1
-
-0.5.3 / 2018-12-17
-==================
-
- * Use `safe-buffer` for improved Buffer API
-
-0.5.2 / 2016-12-08
-==================
-
- * Fix `parse` to accept any linear whitespace character
-
-0.5.1 / 2016-01-17
-==================
-
- * perf: enable strict mode
-
-0.5.0 / 2014-10-11
-==================
-
- * Add `parse` function
-
-0.4.0 / 2014-09-21
-==================
-
- * Expand non-Unicode `filename` to the full ISO-8859-1 charset
-
-0.3.0 / 2014-09-20
-==================
-
- * Add `fallback` option
- * Add `type` option
-
-0.2.0 / 2014-09-19
-==================
-
- * Reduce ambiguity of file names with hex escape in buggy browsers
-
-0.1.2 / 2014-09-19
-==================
-
- * Fix periodic invalid Unicode filename header
-
-0.1.1 / 2014-09-19
-==================
-
- * Fix invalid characters appearing in `filename*` parameter
-
-0.1.0 / 2014-09-18
-==================
-
- * Make the `filename` argument optional
-
-0.0.0 / 2014-09-18
-==================
-
- * Initial release
diff --git a/node_modules/content-disposition/LICENSE b/node_modules/content-disposition/LICENSE
deleted file mode 100644
index 84441fb..0000000
--- a/node_modules/content-disposition/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014-2017 Douglas Christopher Wilson
-
-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/content-disposition/README.md b/node_modules/content-disposition/README.md
deleted file mode 100644
index 3a0bb05..0000000
--- a/node_modules/content-disposition/README.md
+++ /dev/null
@@ -1,142 +0,0 @@
-# content-disposition
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][github-actions-ci-image]][github-actions-ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Create and parse HTTP `Content-Disposition` header
-
-## Installation
-
-```sh
-$ npm install content-disposition
-```
-
-## API
-
-```js
-var contentDisposition = require('content-disposition')
-```
-
-### contentDisposition(filename, options)
-
-Create an attachment `Content-Disposition` header value using the given file name,
-if supplied. The `filename` is optional and if no file name is desired, but you
-want to specify `options`, set `filename` to `undefined`.
-
-```js
-res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
-```
-
-**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this
-header through a means different from `setHeader` in Node.js, you'll want to specify
-the `'binary'` encoding in Node.js.
-
-#### Options
-
-`contentDisposition` accepts these properties in the options object.
-
-##### fallback
-
-If the `filename` option is outside ISO-8859-1, then the file name is actually
-stored in a supplemental field for clients that support Unicode file names and
-a ISO-8859-1 version of the file name is automatically generated.
-
-This specifies the ISO-8859-1 file name to override the automatic generation or
-disables the generation all together, defaults to `true`.
-
- - A string will specify the ISO-8859-1 file name to use in place of automatic
- generation.
- - `false` will disable including a ISO-8859-1 file name and only include the
- Unicode version (unless the file name is already ISO-8859-1).
- - `true` will enable automatic generation if the file name is outside ISO-8859-1.
-
-If the `filename` option is ISO-8859-1 and this option is specified and has a
-different value, then the `filename` option is encoded in the extended field
-and this set as the fallback field, even though they are both ISO-8859-1.
-
-##### type
-
-Specifies the disposition type, defaults to `"attachment"`. This can also be
-`"inline"`, or any other value (all values except inline are treated like
-`attachment`, but can convey additional information if both parties agree to
-it). The type is normalized to lower-case.
-
-### contentDisposition.parse(string)
-
-```js
-var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt')
-```
-
-Parse a `Content-Disposition` header string. This automatically handles extended
-("Unicode") parameters by decoding them and providing them under the standard
-parameter name. This will return an object with the following properties (examples
-are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`):
-
- - `type`: The disposition type (always lower case). Example: `'attachment'`
-
- - `parameters`: An object of the parameters in the disposition (name of parameter
- always lower case and extended versions replace non-extended versions). Example:
- `{filename: "€ rates.txt"}`
-
-## Examples
-
-### Send a file for download
-
-```js
-var contentDisposition = require('content-disposition')
-var destroy = require('destroy')
-var fs = require('fs')
-var http = require('http')
-var onFinished = require('on-finished')
-
-var filePath = '/path/to/public/plans.pdf'
-
-http.createServer(function onRequest (req, res) {
- // set headers
- res.setHeader('Content-Type', 'application/pdf')
- res.setHeader('Content-Disposition', contentDisposition(filePath))
-
- // send file
- var stream = fs.createReadStream(filePath)
- stream.pipe(res)
- onFinished(res, function () {
- destroy(stream)
- })
-})
-```
-
-## Testing
-
-```sh
-$ npm test
-```
-
-## References
-
-- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616]
-- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987]
-- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266]
-- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231]
-
-[rfc-2616]: https://tools.ietf.org/html/rfc2616
-[rfc-5987]: https://tools.ietf.org/html/rfc5987
-[rfc-6266]: https://tools.ietf.org/html/rfc6266
-[tc-2231]: http://greenbytes.de/tech/tc2231/
-
-## License
-
-[MIT](LICENSE)
-
-[npm-image]: https://img.shields.io/npm/v/content-disposition.svg
-[npm-url]: https://npmjs.org/package/content-disposition
-[node-version-image]: https://img.shields.io/node/v/content-disposition.svg
-[node-version-url]: https://nodejs.org/en/download
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg
-[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
-[downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg
-[downloads-url]: https://npmjs.org/package/content-disposition
-[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/content-disposition/ci/master?label=ci
-[github-actions-ci-url]: https://github.com/jshttp/content-disposition?query=workflow%3Aci
diff --git a/node_modules/content-disposition/index.js b/node_modules/content-disposition/index.js
deleted file mode 100644
index 44f1d51..0000000
--- a/node_modules/content-disposition/index.js
+++ /dev/null
@@ -1,459 +0,0 @@
-/*!
- * content-disposition
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = contentDisposition
-module.exports.parse = parse
-
-/**
- * Module dependencies.
- * @private
- */
-
-var basename = require('path').basename
-var Buffer = require('safe-buffer').Buffer
-
-/**
- * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%")
- * @private
- */
-
-var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g // eslint-disable-line no-control-regex
-
-/**
- * RegExp to match percent encoding escape.
- * @private
- */
-
-var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/
-var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g
-
-/**
- * RegExp to match non-latin1 characters.
- * @private
- */
-
-var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g
-
-/**
- * RegExp to match quoted-pair in RFC 2616
- *
- * quoted-pair = "\" CHAR
- * CHAR =
- * @private
- */
-
-var QESC_REGEXP = /\\([\u0000-\u007f])/g // eslint-disable-line no-control-regex
-
-/**
- * RegExp to match chars that must be quoted-pair in RFC 2616
- * @private
- */
-
-var QUOTE_REGEXP = /([\\"])/g
-
-/**
- * RegExp for various RFC 2616 grammar
- *
- * parameter = token "=" ( token | quoted-string )
- * token = 1*
- * separators = "(" | ")" | "<" | ">" | "@"
- * | "," | ";" | ":" | "\" | <">
- * | "/" | "[" | "]" | "?" | "="
- * | "{" | "}" | SP | HT
- * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
- * qdtext = >
- * quoted-pair = "\" CHAR
- * CHAR =
- * TEXT =
- * LWS = [CRLF] 1*( SP | HT )
- * CRLF = CR LF
- * CR =
- * LF =
- * SP =
- * HT =
- * CTL =
- * OCTET =
- * @private
- */
-
-var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g // eslint-disable-line no-control-regex
-var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/
-var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/
-
-/**
- * RegExp for various RFC 5987 grammar
- *
- * ext-value = charset "'" [ language ] "'" value-chars
- * charset = "UTF-8" / "ISO-8859-1" / mime-charset
- * mime-charset = 1*mime-charsetc
- * mime-charsetc = ALPHA / DIGIT
- * / "!" / "#" / "$" / "%" / "&"
- * / "+" / "-" / "^" / "_" / "`"
- * / "{" / "}" / "~"
- * language = ( 2*3ALPHA [ extlang ] )
- * / 4ALPHA
- * / 5*8ALPHA
- * extlang = *3( "-" 3ALPHA )
- * value-chars = *( pct-encoded / attr-char )
- * pct-encoded = "%" HEXDIG HEXDIG
- * attr-char = ALPHA / DIGIT
- * / "!" / "#" / "$" / "&" / "+" / "-" / "."
- * / "^" / "_" / "`" / "|" / "~"
- * @private
- */
-
-var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/
-
-/**
- * RegExp for various RFC 6266 grammar
- *
- * disposition-type = "inline" | "attachment" | disp-ext-type
- * disp-ext-type = token
- * disposition-parm = filename-parm | disp-ext-parm
- * filename-parm = "filename" "=" value
- * | "filename*" "=" ext-value
- * disp-ext-parm = token "=" value
- * | ext-token "=" ext-value
- * ext-token =
- * @private
- */
-
-var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/ // eslint-disable-line no-control-regex
-
-/**
- * Create an attachment Content-Disposition header.
- *
- * @param {string} [filename]
- * @param {object} [options]
- * @param {string} [options.type=attachment]
- * @param {string|boolean} [options.fallback=true]
- * @return {string}
- * @public
- */
-
-function contentDisposition (filename, options) {
- var opts = options || {}
-
- // get type
- var type = opts.type || 'attachment'
-
- // get parameters
- var params = createparams(filename, opts.fallback)
-
- // format into string
- return format(new ContentDisposition(type, params))
-}
-
-/**
- * Create parameters object from filename and fallback.
- *
- * @param {string} [filename]
- * @param {string|boolean} [fallback=true]
- * @return {object}
- * @private
- */
-
-function createparams (filename, fallback) {
- if (filename === undefined) {
- return
- }
-
- var params = {}
-
- if (typeof filename !== 'string') {
- throw new TypeError('filename must be a string')
- }
-
- // fallback defaults to true
- if (fallback === undefined) {
- fallback = true
- }
-
- if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {
- throw new TypeError('fallback must be a string or boolean')
- }
-
- if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) {
- throw new TypeError('fallback must be ISO-8859-1 string')
- }
-
- // restrict to file base name
- var name = basename(filename)
-
- // determine if name is suitable for quoted string
- var isQuotedString = TEXT_REGEXP.test(name)
-
- // generate fallback name
- var fallbackName = typeof fallback !== 'string'
- ? fallback && getlatin1(name)
- : basename(fallback)
- var hasFallback = typeof fallbackName === 'string' && fallbackName !== name
-
- // set extended filename parameter
- if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {
- params['filename*'] = name
- }
-
- // set filename parameter
- if (isQuotedString || hasFallback) {
- params.filename = hasFallback
- ? fallbackName
- : name
- }
-
- return params
-}
-
-/**
- * Format object to Content-Disposition header.
- *
- * @param {object} obj
- * @param {string} obj.type
- * @param {object} [obj.parameters]
- * @return {string}
- * @private
- */
-
-function format (obj) {
- var parameters = obj.parameters
- var type = obj.type
-
- if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) {
- throw new TypeError('invalid type')
- }
-
- // start with normalized type
- var string = String(type).toLowerCase()
-
- // append parameters
- if (parameters && typeof parameters === 'object') {
- var param
- var params = Object.keys(parameters).sort()
-
- for (var i = 0; i < params.length; i++) {
- param = params[i]
-
- var val = param.slice(-1) === '*'
- ? ustring(parameters[param])
- : qstring(parameters[param])
-
- string += '; ' + param + '=' + val
- }
- }
-
- return string
-}
-
-/**
- * Decode a RFC 5987 field value (gracefully).
- *
- * @param {string} str
- * @return {string}
- * @private
- */
-
-function decodefield (str) {
- var match = EXT_VALUE_REGEXP.exec(str)
-
- if (!match) {
- throw new TypeError('invalid extended field value')
- }
-
- var charset = match[1].toLowerCase()
- var encoded = match[2]
- var value
-
- // to binary string
- var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)
-
- switch (charset) {
- case 'iso-8859-1':
- value = getlatin1(binary)
- break
- case 'utf-8':
- case 'utf8':
- value = Buffer.from(binary, 'binary').toString('utf8')
- break
- default:
- throw new TypeError('unsupported charset in extended field')
- }
-
- return value
-}
-
-/**
- * Get ISO-8859-1 version of string.
- *
- * @param {string} val
- * @return {string}
- * @private
- */
-
-function getlatin1 (val) {
- // simple Unicode -> ISO-8859-1 transformation
- return String(val).replace(NON_LATIN1_REGEXP, '?')
-}
-
-/**
- * Parse Content-Disposition header string.
- *
- * @param {string} string
- * @return {object}
- * @public
- */
-
-function parse (string) {
- if (!string || typeof string !== 'string') {
- throw new TypeError('argument string is required')
- }
-
- var match = DISPOSITION_TYPE_REGEXP.exec(string)
-
- if (!match) {
- throw new TypeError('invalid type format')
- }
-
- // normalize type
- var index = match[0].length
- var type = match[1].toLowerCase()
-
- var key
- var names = []
- var params = {}
- var value
-
- // calculate index to start at
- index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ';'
- ? index - 1
- : index
-
- // match parameters
- while ((match = PARAM_REGEXP.exec(string))) {
- if (match.index !== index) {
- throw new TypeError('invalid parameter format')
- }
-
- index += match[0].length
- key = match[1].toLowerCase()
- value = match[2]
-
- if (names.indexOf(key) !== -1) {
- throw new TypeError('invalid duplicate parameter')
- }
-
- names.push(key)
-
- if (key.indexOf('*') + 1 === key.length) {
- // decode extended value
- key = key.slice(0, -1)
- value = decodefield(value)
-
- // overwrite existing value
- params[key] = value
- continue
- }
-
- if (typeof params[key] === 'string') {
- continue
- }
-
- if (value[0] === '"') {
- // remove quotes and escapes
- value = value
- .slice(1, -1)
- .replace(QESC_REGEXP, '$1')
- }
-
- params[key] = value
- }
-
- if (index !== -1 && index !== string.length) {
- throw new TypeError('invalid parameter format')
- }
-
- return new ContentDisposition(type, params)
-}
-
-/**
- * Percent decode a single character.
- *
- * @param {string} str
- * @param {string} hex
- * @return {string}
- * @private
- */
-
-function pdecode (str, hex) {
- return String.fromCharCode(parseInt(hex, 16))
-}
-
-/**
- * Percent encode a single character.
- *
- * @param {string} char
- * @return {string}
- * @private
- */
-
-function pencode (char) {
- return '%' + String(char)
- .charCodeAt(0)
- .toString(16)
- .toUpperCase()
-}
-
-/**
- * Quote a string for HTTP.
- *
- * @param {string} val
- * @return {string}
- * @private
- */
-
-function qstring (val) {
- var str = String(val)
-
- return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"'
-}
-
-/**
- * Encode a Unicode string for HTTP (RFC 5987).
- *
- * @param {string} val
- * @return {string}
- * @private
- */
-
-function ustring (val) {
- var str = String(val)
-
- // percent encode as UTF-8
- var encoded = encodeURIComponent(str)
- .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)
-
- return 'UTF-8\'\'' + encoded
-}
-
-/**
- * Class for parsed Content-Disposition header for v8 optimization
- *
- * @public
- * @param {string} type
- * @param {object} parameters
- * @constructor
- */
-
-function ContentDisposition (type, parameters) {
- this.type = type
- this.parameters = parameters
-}
diff --git a/node_modules/content-disposition/package.json b/node_modules/content-disposition/package.json
deleted file mode 100644
index 5cea50b..0000000
--- a/node_modules/content-disposition/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "content-disposition",
- "description": "Create and parse Content-Disposition header",
- "version": "1.0.0",
- "author": "Douglas Christopher Wilson ",
- "license": "MIT",
- "keywords": [
- "content-disposition",
- "http",
- "rfc6266",
- "res"
- ],
- "repository": "jshttp/content-disposition",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "devDependencies": {
- "deep-equal": "1.0.1",
- "eslint": "7.32.0",
- "eslint-config-standard": "13.0.1",
- "eslint-plugin-import": "2.25.3",
- "eslint-plugin-markdown": "2.2.1",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "5.2.0",
- "eslint-plugin-standard": "4.1.0",
- "mocha": "^9.2.2",
- "nyc": "15.1.0"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "README.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- }
-}
diff --git a/node_modules/content-type/HISTORY.md b/node_modules/content-type/HISTORY.md
deleted file mode 100644
index 4583671..0000000
--- a/node_modules/content-type/HISTORY.md
+++ /dev/null
@@ -1,29 +0,0 @@
-1.0.5 / 2023-01-29
-==================
-
- * perf: skip value escaping when unnecessary
-
-1.0.4 / 2017-09-11
-==================
-
- * perf: skip parameter parsing when no parameters
-
-1.0.3 / 2017-09-10
-==================
-
- * perf: remove argument reassignment
-
-1.0.2 / 2016-05-09
-==================
-
- * perf: enable strict mode
-
-1.0.1 / 2015-02-13
-==================
-
- * Improve missing `Content-Type` header error message
-
-1.0.0 / 2015-02-01
-==================
-
- * Initial implementation, derived from `media-typer@0.3.0`
diff --git a/node_modules/content-type/LICENSE b/node_modules/content-type/LICENSE
deleted file mode 100644
index 34b1a2d..0000000
--- a/node_modules/content-type/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2015 Douglas Christopher Wilson
-
-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/content-type/README.md b/node_modules/content-type/README.md
deleted file mode 100644
index c1a922a..0000000
--- a/node_modules/content-type/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# content-type
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][ci-image]][ci-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-Create and parse HTTP Content-Type header according to RFC 7231
-
-## Installation
-
-```sh
-$ npm install content-type
-```
-
-## API
-
-```js
-var contentType = require('content-type')
-```
-
-### contentType.parse(string)
-
-```js
-var obj = contentType.parse('image/svg+xml; charset=utf-8')
-```
-
-Parse a `Content-Type` header. This will return an object with the following
-properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`):
-
- - `type`: The media type (the type and subtype, always lower case).
- Example: `'image/svg+xml'`
-
- - `parameters`: An object of the parameters in the media type (name of parameter
- always lower case). Example: `{charset: 'utf-8'}`
-
-Throws a `TypeError` if the string is missing or invalid.
-
-### contentType.parse(req)
-
-```js
-var obj = contentType.parse(req)
-```
-
-Parse the `Content-Type` header from the given `req`. Short-cut for
-`contentType.parse(req.headers['content-type'])`.
-
-Throws a `TypeError` if the `Content-Type` header is missing or invalid.
-
-### contentType.parse(res)
-
-```js
-var obj = contentType.parse(res)
-```
-
-Parse the `Content-Type` header set on the given `res`. Short-cut for
-`contentType.parse(res.getHeader('content-type'))`.
-
-Throws a `TypeError` if the `Content-Type` header is missing or invalid.
-
-### contentType.format(obj)
-
-```js
-var str = contentType.format({
- type: 'image/svg+xml',
- parameters: { charset: 'utf-8' }
-})
-```
-
-Format an object into a `Content-Type` header. This will return a string of the
-content type for the given object with the following properties (examples are
-shown that produce the string `'image/svg+xml; charset=utf-8'`):
-
- - `type`: The media type (will be lower-cased). Example: `'image/svg+xml'`
-
- - `parameters`: An object of the parameters in the media type (name of the
- parameter will be lower-cased). Example: `{charset: 'utf-8'}`
-
-Throws a `TypeError` if the object contains an invalid type or parameter names.
-
-## License
-
-[MIT](LICENSE)
-
-[ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci
-[ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master
-[coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master
-[node-image]: https://badgen.net/npm/node/content-type
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/content-type
-[npm-url]: https://npmjs.org/package/content-type
-[npm-version-image]: https://badgen.net/npm/v/content-type
diff --git a/node_modules/content-type/index.js b/node_modules/content-type/index.js
deleted file mode 100644
index 41840e7..0000000
--- a/node_modules/content-type/index.js
+++ /dev/null
@@ -1,225 +0,0 @@
-/*!
- * content-type
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1
- *
- * parameter = token "=" ( token / quoted-string )
- * token = 1*tchar
- * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
- * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
- * / DIGIT / ALPHA
- * ; any VCHAR, except delimiters
- * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
- * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text
- * obs-text = %x80-FF
- * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
- */
-var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex
-var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex
-var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/
-
-/**
- * RegExp to match quoted-pair in RFC 7230 sec 3.2.6
- *
- * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
- * obs-text = %x80-FF
- */
-var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex
-
-/**
- * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6
- */
-var QUOTE_REGEXP = /([\\"])/g
-
-/**
- * RegExp to match type in RFC 7231 sec 3.1.1.1
- *
- * media-type = type "/" subtype
- * type = token
- * subtype = token
- */
-var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/
-
-/**
- * Module exports.
- * @public
- */
-
-exports.format = format
-exports.parse = parse
-
-/**
- * Format object to media type.
- *
- * @param {object} obj
- * @return {string}
- * @public
- */
-
-function format (obj) {
- if (!obj || typeof obj !== 'object') {
- throw new TypeError('argument obj is required')
- }
-
- var parameters = obj.parameters
- var type = obj.type
-
- if (!type || !TYPE_REGEXP.test(type)) {
- throw new TypeError('invalid type')
- }
-
- var string = type
-
- // append parameters
- if (parameters && typeof parameters === 'object') {
- var param
- var params = Object.keys(parameters).sort()
-
- for (var i = 0; i < params.length; i++) {
- param = params[i]
-
- if (!TOKEN_REGEXP.test(param)) {
- throw new TypeError('invalid parameter name')
- }
-
- string += '; ' + param + '=' + qstring(parameters[param])
- }
- }
-
- return string
-}
-
-/**
- * Parse media type to object.
- *
- * @param {string|object} string
- * @return {Object}
- * @public
- */
-
-function parse (string) {
- if (!string) {
- throw new TypeError('argument string is required')
- }
-
- // support req/res-like objects as argument
- var header = typeof string === 'object'
- ? getcontenttype(string)
- : string
-
- if (typeof header !== 'string') {
- throw new TypeError('argument string is required to be a string')
- }
-
- var index = header.indexOf(';')
- var type = index !== -1
- ? header.slice(0, index).trim()
- : header.trim()
-
- if (!TYPE_REGEXP.test(type)) {
- throw new TypeError('invalid media type')
- }
-
- var obj = new ContentType(type.toLowerCase())
-
- // parse parameters
- if (index !== -1) {
- var key
- var match
- var value
-
- PARAM_REGEXP.lastIndex = index
-
- while ((match = PARAM_REGEXP.exec(header))) {
- if (match.index !== index) {
- throw new TypeError('invalid parameter format')
- }
-
- index += match[0].length
- key = match[1].toLowerCase()
- value = match[2]
-
- if (value.charCodeAt(0) === 0x22 /* " */) {
- // remove quotes
- value = value.slice(1, -1)
-
- // remove escapes
- if (value.indexOf('\\') !== -1) {
- value = value.replace(QESC_REGEXP, '$1')
- }
- }
-
- obj.parameters[key] = value
- }
-
- if (index !== header.length) {
- throw new TypeError('invalid parameter format')
- }
- }
-
- return obj
-}
-
-/**
- * Get content-type from req/res objects.
- *
- * @param {object}
- * @return {Object}
- * @private
- */
-
-function getcontenttype (obj) {
- var header
-
- if (typeof obj.getHeader === 'function') {
- // res-like
- header = obj.getHeader('content-type')
- } else if (typeof obj.headers === 'object') {
- // req-like
- header = obj.headers && obj.headers['content-type']
- }
-
- if (typeof header !== 'string') {
- throw new TypeError('content-type header is missing from object')
- }
-
- return header
-}
-
-/**
- * Quote a string if necessary.
- *
- * @param {string} val
- * @return {string}
- * @private
- */
-
-function qstring (val) {
- var str = String(val)
-
- // no need to quote tokens
- if (TOKEN_REGEXP.test(str)) {
- return str
- }
-
- if (str.length > 0 && !TEXT_REGEXP.test(str)) {
- throw new TypeError('invalid parameter value')
- }
-
- return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"'
-}
-
-/**
- * Class to represent a content type.
- * @private
- */
-function ContentType (type) {
- this.parameters = Object.create(null)
- this.type = type
-}
diff --git a/node_modules/content-type/package.json b/node_modules/content-type/package.json
deleted file mode 100644
index 9db19f6..0000000
--- a/node_modules/content-type/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "content-type",
- "description": "Create and parse HTTP Content-Type header",
- "version": "1.0.5",
- "author": "Douglas Christopher Wilson ",
- "license": "MIT",
- "keywords": [
- "content-type",
- "http",
- "req",
- "res",
- "rfc7231"
- ],
- "repository": "jshttp/content-type",
- "devDependencies": {
- "deep-equal": "1.0.1",
- "eslint": "8.32.0",
- "eslint-config-standard": "15.0.1",
- "eslint-plugin-import": "2.27.5",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "6.1.1",
- "eslint-plugin-standard": "4.1.0",
- "mocha": "10.2.0",
- "nyc": "15.1.0"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "README.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec --check-leaks --bail test/",
- "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test",
- "version": "node scripts/version-history.js && git add HISTORY.md"
- }
-}
diff --git a/node_modules/cookie-parser/HISTORY.md b/node_modules/cookie-parser/HISTORY.md
deleted file mode 100644
index 00ea683..0000000
--- a/node_modules/cookie-parser/HISTORY.md
+++ /dev/null
@@ -1,124 +0,0 @@
-1.4.7 / 2024-10-08
-==========
-
- * deps: cookie@0.7.2
- - Fix object assignment of `hasOwnProperty`
- * deps: cookie@0.7.1
- - Allow leading dot for domain
- - Although not permitted in the spec, some users expect this to work and user agents ignore the leading dot according to spec
- - Add fast path for `serialize` without options, use `obj.hasOwnProperty` when parsing
- * deps: cookie@0.7.0
- - perf: parse cookies ~10% faster
- - fix: narrow the validation of cookies to match RFC6265
- - fix: add `main` to `package.json` for rspack
- * deps: cookie@0.6.0
- - Add `partitioned` option
- * deps: cookie@0.5.0
- - Add `priority` option
- - Fix `expires` option to reject invalid dates
- - pref: improve default decode speed
- - pref: remove slow string split in parse
- * deps: cookie@0.4.2
- - pref: read value only when assigning in parse
- - pref: remove unnecessary regexp in parse
-
-1.4.6 / 2021-11-16
-==================
-
- * deps: cookie@0.4.1
-
-1.4.5 / 2020-03-14
-==================
-
- * deps: cookie@0.4.0
-
-1.4.4 / 2019-02-12
-==================
-
- * perf: normalize `secret` argument only once
-
-1.4.3 / 2016-05-26
-==================
-
- * deps: cookie@0.3.1
- - perf: use for loop in parse
-
-1.4.2 / 2016-05-20
-==================
-
- * deps: cookie@0.2.4
- - perf: enable strict mode
- - perf: use for loop in parse
- - perf: use string concatenation for serialization
-
-1.4.1 / 2016-01-11
-==================
-
- * deps: cookie@0.2.3
- * perf: enable strict mode
-
-1.4.0 / 2015-09-18
-==================
-
- * Accept array of secrets in addition to a single secret
- * Fix `JSONCookie` to return `undefined` for non-string arguments
- * Fix `signedCookie` to return `undefined` for non-string arguments
- * deps: cookie@0.2.2
-
-1.3.5 / 2015-05-19
-==================
-
- * deps: cookie@0.1.3
- - Slight optimizations
-
-1.3.4 / 2015-02-15
-==================
-
- * deps: cookie-signature@1.0.6
-
-1.3.3 / 2014-09-05
-==================
-
- * deps: cookie-signature@1.0.5
-
-1.3.2 / 2014-06-26
-==================
-
- * deps: cookie-signature@1.0.4
- - fix for timing attacks
-
-1.3.1 / 2014-06-17
-==================
-
- * actually export `signedCookie`
-
-1.3.0 / 2014-06-17
-==================
-
- * add `signedCookie` export for single cookie unsigning
-
-1.2.0 / 2014-06-17
-==================
-
- * export parsing functions
- * `req.cookies` and `req.signedCookies` are now plain objects
- * slightly faster parsing of many cookies
-
-1.1.0 / 2014-05-12
-==================
-
- * Support for NodeJS version 0.8
- * deps: cookie@0.1.2
- - Fix for maxAge == 0
- - made compat with expires field
- - tweak maxAge NaN error message
-
-1.0.1 / 2014-02-20
-==================
-
- * add missing dependencies
-
-1.0.0 / 2014-02-15
-==================
-
- * Genesis from `connect`
diff --git a/node_modules/cookie-parser/LICENSE b/node_modules/cookie-parser/LICENSE
deleted file mode 100644
index 343f2ad..0000000
--- a/node_modules/cookie-parser/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 TJ Holowaychuk
-Copyright (c) 2015 Douglas Christopher Wilson
-
-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/cookie-parser/README.md b/node_modules/cookie-parser/README.md
deleted file mode 100644
index b8ecd7b..0000000
--- a/node_modules/cookie-parser/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# cookie-parser
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Build Status][ci-image]][ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-Parse `Cookie` header and populate `req.cookies` with an object keyed by the
-cookie names. Optionally you may enable signed cookie support by passing a
-`secret` string, which assigns `req.secret` so it may be used by other
-middleware.
-
-## Installation
-
-```sh
-$ npm install cookie-parser
-```
-
-## API
-
-```js
-var cookieParser = require('cookie-parser')
-```
-
-### cookieParser(secret, options)
-
-Create a new cookie parser middleware function using the given `secret` and
-`options`.
-
-- `secret` a string or array used for signing cookies. This is optional and if
- not specified, will not parse signed cookies. If a string is provided, this
- is used as the secret. If an array is provided, an attempt will be made to
- unsign the cookie with each secret in order.
-- `options` an object that is passed to `cookie.parse` as the second option. See
- [cookie](https://www.npmjs.org/package/cookie) for more information.
- - `decode` a function to decode the value of the cookie
-
-The middleware will parse the `Cookie` header on the request and expose the
-cookie data as the property `req.cookies` and, if a `secret` was provided, as
-the property `req.signedCookies`. These properties are name value pairs of the
-cookie name to cookie value.
-
-When `secret` is provided, this module will unsign and validate any signed cookie
-values and move those name value pairs from `req.cookies` into `req.signedCookies`.
-A signed cookie is a cookie that has a value prefixed with `s:`. Signed cookies
-that fail signature validation will have the value `false` instead of the tampered
-value.
-
-In addition, this module supports special "JSON cookies". These are cookie where
-the value is prefixed with `j:`. When these values are encountered, the value will
-be exposed as the result of `JSON.parse`. If parsing fails, the original value will
-remain.
-
-### cookieParser.JSONCookie(str)
-
-Parse a cookie value as a JSON cookie. This will return the parsed JSON value
-if it was a JSON cookie, otherwise, it will return the passed value.
-
-### cookieParser.JSONCookies(cookies)
-
-Given an object, this will iterate over the keys and call `JSONCookie` on each
-value, replacing the original value with the parsed value. This returns the
-same object that was passed in.
-
-### cookieParser.signedCookie(str, secret)
-
-Parse a cookie value as a signed cookie. This will return the parsed unsigned
-value if it was a signed cookie and the signature was valid. If the value was
-not signed, the original value is returned. If the value was signed but the
-signature could not be validated, `false` is returned.
-
-The `secret` argument can be an array or string. If a string is provided, this
-is used as the secret. If an array is provided, an attempt will be made to
-unsign the cookie with each secret in order.
-
-### cookieParser.signedCookies(cookies, secret)
-
-Given an object, this will iterate over the keys and check if any value is a
-signed cookie. If it is a signed cookie and the signature is valid, the key
-will be deleted from the object and added to the new object that is returned.
-
-The `secret` argument can be an array or string. If a string is provided, this
-is used as the secret. If an array is provided, an attempt will be made to
-unsign the cookie with each secret in order.
-
-## Example
-
-```js
-var express = require('express')
-var cookieParser = require('cookie-parser')
-
-var app = express()
-app.use(cookieParser())
-
-app.get('/', function (req, res) {
- // Cookies that have not been signed
- console.log('Cookies: ', req.cookies)
-
- // Cookies that have been signed
- console.log('Signed Cookies: ', req.signedCookies)
-})
-
-app.listen(8080)
-
-// curl command that sends an HTTP request with two cookies
-// curl http://127.0.0.1:8080 --cookie "Cho=Kim;Greet=Hello"
-```
-
-## License
-
-[MIT](LICENSE)
-
-[ci-image]: https://badgen.net/github/checks/expressjs/cookie-parser/master?label=ci
-[ci-url]: https://github.com/expressjs/cookie-parser/actions?query=workflow%3Aci
-[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/cookie-parser/master
-[coveralls-url]: https://coveralls.io/r/expressjs/cookie-parser?branch=master
-[npm-downloads-image]: https://badgen.net/npm/dm/cookie-parser
-[npm-url]: https://npmjs.org/package/cookie-parser
-[npm-version-image]: https://badgen.net/npm/v/cookie-parser
diff --git a/node_modules/cookie-parser/index.js b/node_modules/cookie-parser/index.js
deleted file mode 100644
index dd6d479..0000000
--- a/node_modules/cookie-parser/index.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/*!
- * cookie-parser
- * Copyright(c) 2014 TJ Holowaychuk
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var cookie = require('cookie')
-var signature = require('cookie-signature')
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = cookieParser
-module.exports.JSONCookie = JSONCookie
-module.exports.JSONCookies = JSONCookies
-module.exports.signedCookie = signedCookie
-module.exports.signedCookies = signedCookies
-
-/**
- * Parse Cookie header and populate `req.cookies`
- * with an object keyed by the cookie names.
- *
- * @param {string|array} [secret] A string (or array of strings) representing cookie signing secret(s).
- * @param {Object} [options]
- * @return {Function}
- * @public
- */
-
-function cookieParser (secret, options) {
- var secrets = !secret || Array.isArray(secret)
- ? (secret || [])
- : [secret]
-
- return function cookieParser (req, res, next) {
- if (req.cookies) {
- return next()
- }
-
- var cookies = req.headers.cookie
-
- req.secret = secrets[0]
- req.cookies = Object.create(null)
- req.signedCookies = Object.create(null)
-
- // no cookies
- if (!cookies) {
- return next()
- }
-
- req.cookies = cookie.parse(cookies, options)
-
- // parse signed cookies
- if (secrets.length !== 0) {
- req.signedCookies = signedCookies(req.cookies, secrets)
- req.signedCookies = JSONCookies(req.signedCookies)
- }
-
- // parse JSON cookies
- req.cookies = JSONCookies(req.cookies)
-
- next()
- }
-}
-
-/**
- * Parse JSON cookie string.
- *
- * @param {String} str
- * @return {Object} Parsed object or undefined if not json cookie
- * @public
- */
-
-function JSONCookie (str) {
- if (typeof str !== 'string' || str.substr(0, 2) !== 'j:') {
- return undefined
- }
-
- try {
- return JSON.parse(str.slice(2))
- } catch (err) {
- return undefined
- }
-}
-
-/**
- * Parse JSON cookies.
- *
- * @param {Object} obj
- * @return {Object}
- * @public
- */
-
-function JSONCookies (obj) {
- var cookies = Object.keys(obj)
- var key
- var val
-
- for (var i = 0; i < cookies.length; i++) {
- key = cookies[i]
- val = JSONCookie(obj[key])
-
- if (val) {
- obj[key] = val
- }
- }
-
- return obj
-}
-
-/**
- * Parse a signed cookie string, return the decoded value.
- *
- * @param {String} str signed cookie string
- * @param {string|array} secret
- * @return {String} decoded value
- * @public
- */
-
-function signedCookie (str, secret) {
- if (typeof str !== 'string') {
- return undefined
- }
-
- if (str.substr(0, 2) !== 's:') {
- return str
- }
-
- var secrets = !secret || Array.isArray(secret)
- ? (secret || [])
- : [secret]
-
- for (var i = 0; i < secrets.length; i++) {
- var val = signature.unsign(str.slice(2), secrets[i])
-
- if (val !== false) {
- return val
- }
- }
-
- return false
-}
-
-/**
- * Parse signed cookies, returning an object containing the decoded key/value
- * pairs, while removing the signed key from obj.
- *
- * @param {Object} obj
- * @param {string|array} secret
- * @return {Object}
- * @public
- */
-
-function signedCookies (obj, secret) {
- var cookies = Object.keys(obj)
- var dec
- var key
- var ret = Object.create(null)
- var val
-
- for (var i = 0; i < cookies.length; i++) {
- key = cookies[i]
- val = obj[key]
- dec = signedCookie(val, secret)
-
- if (val !== dec) {
- ret[key] = dec
- delete obj[key]
- }
- }
-
- return ret
-}
diff --git a/node_modules/cookie-parser/package.json b/node_modules/cookie-parser/package.json
deleted file mode 100644
index b1e86f0..0000000
--- a/node_modules/cookie-parser/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "cookie-parser",
- "description": "Parse HTTP request cookies",
- "version": "1.4.7",
- "author": "TJ Holowaychuk (http://tjholowaychuk.com)",
- "contributors": [
- "Douglas Christopher Wilson "
- ],
- "license": "MIT",
- "repository": "expressjs/cookie-parser",
- "keywords": [
- "cookie",
- "middleware"
- ],
- "dependencies": {
- "cookie": "0.7.2",
- "cookie-signature": "1.0.6"
- },
- "devDependencies": {
- "eslint": "7.32.0",
- "eslint-config-standard": "14.1.1",
- "eslint-plugin-import": "2.25.2",
- "eslint-plugin-markdown": "2.2.1",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "4.3.1",
- "eslint-plugin-standard": "4.1.0",
- "mocha": "9.2.1",
- "nyc": "15.1.0",
- "supertest": "6.1.6"
- },
- "files": [
- "LICENSE",
- "HISTORY.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.8.0"
- },
- "scripts": {
- "lint": "eslint .",
- "test": "mocha --reporter spec --bail --check-leaks test/",
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
- "test-cov": "nyc --reporter=html --reporter=text npm test"
- }
-}
diff --git a/node_modules/cookie-signature/.npmignore b/node_modules/cookie-signature/.npmignore
deleted file mode 100644
index f1250e5..0000000
--- a/node_modules/cookie-signature/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-support
-test
-examples
-*.sock
diff --git a/node_modules/cookie-signature/History.md b/node_modules/cookie-signature/History.md
deleted file mode 100644
index 78513cc..0000000
--- a/node_modules/cookie-signature/History.md
+++ /dev/null
@@ -1,38 +0,0 @@
-1.0.6 / 2015-02-03
-==================
-
-* use `npm test` instead of `make test` to run tests
-* clearer assertion messages when checking input
-
-
-1.0.5 / 2014-09-05
-==================
-
-* add license to package.json
-
-1.0.4 / 2014-06-25
-==================
-
- * corrected avoidance of timing attacks (thanks @tenbits!)
-
-1.0.3 / 2014-01-28
-==================
-
- * [incorrect] fix for timing attacks
-
-1.0.2 / 2014-01-28
-==================
-
- * fix missing repository warning
- * fix typo in test
-
-1.0.1 / 2013-04-15
-==================
-
- * Revert "Changed underlying HMAC algo. to sha512."
- * Revert "Fix for timing attacks on MAC verification."
-
-0.0.1 / 2010-01-03
-==================
-
- * Initial release
diff --git a/node_modules/cookie-signature/Readme.md b/node_modules/cookie-signature/Readme.md
deleted file mode 100644
index 2559e84..0000000
--- a/node_modules/cookie-signature/Readme.md
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# cookie-signature
-
- Sign and unsign cookies.
-
-## Example
-
-```js
-var cookie = require('cookie-signature');
-
-var val = cookie.sign('hello', 'tobiiscool');
-val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');
-
-var val = cookie.sign('hello', 'tobiiscool');
-cookie.unsign(val, 'tobiiscool').should.equal('hello');
-cookie.unsign(val, 'luna').should.be.false;
-```
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2012 LearnBoost <tj@learnboost.com>
-
-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.
\ No newline at end of file
diff --git a/node_modules/cookie-signature/index.js b/node_modules/cookie-signature/index.js
deleted file mode 100644
index b8c9463..0000000
--- a/node_modules/cookie-signature/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto');
-
-/**
- * Sign the given `val` with `secret`.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String}
- * @api private
- */
-
-exports.sign = function(val, secret){
- if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
- if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
- return val + '.' + crypto
- .createHmac('sha256', secret)
- .update(val)
- .digest('base64')
- .replace(/\=+$/, '');
-};
-
-/**
- * Unsign and decode the given `val` with `secret`,
- * returning `false` if the signature is invalid.
- *
- * @param {String} val
- * @param {String} secret
- * @return {String|Boolean}
- * @api private
- */
-
-exports.unsign = function(val, secret){
- if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
- if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
- var str = val.slice(0, val.lastIndexOf('.'))
- , mac = exports.sign(str, secret);
-
- return sha1(mac) == sha1(val) ? str : false;
-};
-
-/**
- * Private
- */
-
-function sha1(str){
- return crypto.createHash('sha1').update(str).digest('hex');
-}
diff --git a/node_modules/cookie-signature/package.json b/node_modules/cookie-signature/package.json
deleted file mode 100644
index 29c4498..0000000
--- a/node_modules/cookie-signature/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "cookie-signature",
- "version": "1.0.6",
- "description": "Sign and unsign cookies",
- "keywords": ["cookie", "sign", "unsign"],
- "author": "TJ Holowaychuk ",
- "license": "MIT",
- "repository": { "type": "git", "url": "https://github.com/visionmedia/node-cookie-signature.git"},
- "dependencies": {},
- "devDependencies": {
- "mocha": "*",
- "should": "*"
- },
- "scripts": {
- "test": "mocha --require should --reporter spec"
- },
- "main": "index"
-}
diff --git a/node_modules/cookie/LICENSE b/node_modules/cookie/LICENSE
deleted file mode 100644
index 058b6b4..0000000
--- a/node_modules/cookie/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2012-2014 Roman Shtylman
-Copyright (c) 2015 Douglas Christopher Wilson
-
-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/cookie/README.md b/node_modules/cookie/README.md
deleted file mode 100644
index 71fdac1..0000000
--- a/node_modules/cookie/README.md
+++ /dev/null
@@ -1,317 +0,0 @@
-# cookie
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][ci-image]][ci-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-Basic HTTP cookie parser and serializer for HTTP servers.
-
-## Installation
-
-This is a [Node.js](https://nodejs.org/en/) module available through the
-[npm registry](https://www.npmjs.com/). Installation is done using the
-[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
-
-```sh
-$ npm install cookie
-```
-
-## API
-
-```js
-var cookie = require('cookie');
-```
-
-### cookie.parse(str, options)
-
-Parse an HTTP `Cookie` header string and returning an object of all cookie name-value pairs.
-The `str` argument is the string representing a `Cookie` header value and `options` is an
-optional object containing additional parsing options.
-
-```js
-var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
-// { foo: 'bar', equation: 'E=mc^2' }
-```
-
-#### Options
-
-`cookie.parse` accepts these properties in the options object.
-
-##### decode
-
-Specifies a function that will be used to decode a cookie's value. Since the value of a cookie
-has a limited character set (and must be a simple string), this function can be used to decode
-a previously-encoded cookie value into a JavaScript string or other object.
-
-The default function is the global `decodeURIComponent`, which will decode any URL-encoded
-sequences into their byte representations.
-
-**note** if an error is thrown from this function, the original, non-decoded cookie value will
-be returned as the cookie's value.
-
-### cookie.serialize(name, value, options)
-
-Serialize a cookie name-value pair into a `Set-Cookie` header string. The `name` argument is the
-name for the cookie, the `value` argument is the value to set the cookie to, and the `options`
-argument is an optional object containing additional serialization options.
-
-```js
-var setCookie = cookie.serialize('foo', 'bar');
-// foo=bar
-```
-
-#### Options
-
-`cookie.serialize` accepts these properties in the options object.
-
-##### domain
-
-Specifies the value for the [`Domain` `Set-Cookie` attribute][rfc-6265-5.2.3]. By default, no
-domain is set, and most clients will consider the cookie to apply to only the current domain.
-
-##### encode
-
-Specifies a function that will be used to encode a cookie's value. Since value of a cookie
-has a limited character set (and must be a simple string), this function can be used to encode
-a value into a string suited for a cookie's value.
-
-The default function is the global `encodeURIComponent`, which will encode a JavaScript string
-into UTF-8 byte sequences and then URL-encode any that fall outside of the cookie range.
-
-##### expires
-
-Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute][rfc-6265-5.2.1].
-By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and
-will delete it on a condition like exiting a web browser application.
-
-**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and
-`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
-so if both are set, they should point to the same date and time.
-
-##### httpOnly
-
-Specifies the `boolean` value for the [`HttpOnly` `Set-Cookie` attribute][rfc-6265-5.2.6]. When truthy,
-the `HttpOnly` attribute is set, otherwise it is not. By default, the `HttpOnly` attribute is not set.
-
-**note** be careful when setting this to `true`, as compliant clients will not allow client-side
-JavaScript to see the cookie in `document.cookie`.
-
-##### maxAge
-
-Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute][rfc-6265-5.2.2].
-The given number will be converted to an integer by rounding down. By default, no maximum age is set.
-
-**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and
-`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
-so if both are set, they should point to the same date and time.
-
-##### partitioned
-
-Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies)
-attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the
-`Partitioned` attribute is not set.
-
-**note** This is an attribute that has not yet been fully standardized, and may change in the future.
-This also means many clients may ignore this attribute until they understand it.
-
-More information about can be found in [the proposal](https://github.com/privacycg/CHIPS).
-
-##### path
-
-Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path
-is considered the ["default path"][rfc-6265-5.1.4].
-
-##### priority
-
-Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1].
-
- - `'low'` will set the `Priority` attribute to `Low`.
- - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.
- - `'high'` will set the `Priority` attribute to `High`.
-
-More information about the different priority levels can be found in
-[the specification][rfc-west-cookie-priority-00-4.1].
-
-**note** This is an attribute that has not yet been fully standardized, and may change in the future.
-This also means many clients may ignore this attribute until they understand it.
-
-##### sameSite
-
-Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][rfc-6265bis-09-5.4.7].
-
- - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
- - `false` will not set the `SameSite` attribute.
- - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.
- - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.
- - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
-
-More information about the different enforcement levels can be found in
-[the specification][rfc-6265bis-09-5.4.7].
-
-**note** This is an attribute that has not yet been fully standardized, and may change in the future.
-This also means many clients may ignore this attribute until they understand it.
-
-##### secure
-
-Specifies the `boolean` value for the [`Secure` `Set-Cookie` attribute][rfc-6265-5.2.5]. When truthy,
-the `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set.
-
-**note** be careful when setting this to `true`, as compliant clients will not send the cookie back to
-the server in the future if the browser does not have an HTTPS connection.
-
-## Example
-
-The following example uses this module in conjunction with the Node.js core HTTP server
-to prompt a user for their name and display it back on future visits.
-
-```js
-var cookie = require('cookie');
-var escapeHtml = require('escape-html');
-var http = require('http');
-var url = require('url');
-
-function onRequest(req, res) {
- // Parse the query string
- var query = url.parse(req.url, true, true).query;
-
- if (query && query.name) {
- // Set a new cookie with the name
- res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
- httpOnly: true,
- maxAge: 60 * 60 * 24 * 7 // 1 week
- }));
-
- // Redirect back after setting cookie
- res.statusCode = 302;
- res.setHeader('Location', req.headers.referer || '/');
- res.end();
- return;
- }
-
- // Parse the cookies on the request
- var cookies = cookie.parse(req.headers.cookie || '');
-
- // Get the visitor name set in the cookie
- var name = cookies.name;
-
- res.setHeader('Content-Type', 'text/html; charset=UTF-8');
-
- if (name) {
- res.write('Welcome back, ' + escapeHtml(name) + '!
');
- } else {
- res.write('Hello, new visitor!
');
- }
-
- res.write('');
-}
-
-http.createServer(onRequest).listen(3000);
-```
-
-## Testing
-
-```sh
-$ npm test
-```
-
-## Benchmark
-
-```
-$ npm run bench
-
-> cookie@0.5.0 bench
-> node benchmark/index.js
-
- node@18.18.2
- acorn@8.10.0
- ada@2.6.0
- ares@1.19.1
- brotli@1.0.9
- cldr@43.1
- icu@73.2
- llhttp@6.0.11
- modules@108
- napi@9
- nghttp2@1.57.0
- nghttp3@0.7.0
- ngtcp2@0.8.1
- openssl@3.0.10+quic
- simdutf@3.2.14
- tz@2023c
- undici@5.26.3
- unicode@15.0
- uv@1.44.2
- uvwasi@0.0.18
- v8@10.2.154.26-node.26
- zlib@1.2.13.1-motley
-
-> node benchmark/parse-top.js
-
- cookie.parse - top sites
-
- 14 tests completed.
-
- parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled)
- parse apple.com x 2,370,002 ops/sec ±0.69% (186 runs sampled)
- parse cloudflare.com x 2,213,102 ops/sec ±0.88% (188 runs sampled)
- parse docs.google.com x 2,194,157 ops/sec ±1.03% (184 runs sampled)
- parse drive.google.com x 2,265,084 ops/sec ±0.79% (187 runs sampled)
- parse en.wikipedia.org x 457,099 ops/sec ±0.81% (186 runs sampled)
- parse linkedin.com x 504,407 ops/sec ±0.89% (186 runs sampled)
- parse maps.google.com x 1,230,959 ops/sec ±0.98% (186 runs sampled)
- parse microsoft.com x 926,294 ops/sec ±0.88% (184 runs sampled)
- parse play.google.com x 2,311,338 ops/sec ±0.83% (185 runs sampled)
- parse support.google.com x 1,508,850 ops/sec ±0.86% (186 runs sampled)
- parse www.google.com x 1,022,582 ops/sec ±1.32% (182 runs sampled)
- parse youtu.be x 332,136 ops/sec ±1.02% (185 runs sampled)
- parse youtube.com x 323,833 ops/sec ±0.77% (183 runs sampled)
-
-> node benchmark/parse.js
-
- cookie.parse - generic
-
- 6 tests completed.
-
- simple x 3,214,032 ops/sec ±1.61% (183 runs sampled)
- decode x 587,237 ops/sec ±1.16% (187 runs sampled)
- unquote x 2,954,618 ops/sec ±1.35% (183 runs sampled)
- duplicates x 857,008 ops/sec ±0.89% (187 runs sampled)
- 10 cookies x 292,133 ops/sec ±0.89% (187 runs sampled)
- 100 cookies x 22,610 ops/sec ±0.68% (187 runs sampled)
-```
-
-## References
-
-- [RFC 6265: HTTP State Management Mechanism][rfc-6265]
-- [Same-site Cookies][rfc-6265bis-09-5.4.7]
-
-[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/
-[rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1
-[rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7
-[rfc-6265]: https://tools.ietf.org/html/rfc6265
-[rfc-6265-5.1.4]: https://tools.ietf.org/html/rfc6265#section-5.1.4
-[rfc-6265-5.2.1]: https://tools.ietf.org/html/rfc6265#section-5.2.1
-[rfc-6265-5.2.2]: https://tools.ietf.org/html/rfc6265#section-5.2.2
-[rfc-6265-5.2.3]: https://tools.ietf.org/html/rfc6265#section-5.2.3
-[rfc-6265-5.2.4]: https://tools.ietf.org/html/rfc6265#section-5.2.4
-[rfc-6265-5.2.5]: https://tools.ietf.org/html/rfc6265#section-5.2.5
-[rfc-6265-5.2.6]: https://tools.ietf.org/html/rfc6265#section-5.2.6
-[rfc-6265-5.3]: https://tools.ietf.org/html/rfc6265#section-5.3
-
-## License
-
-[MIT](LICENSE)
-
-[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci
-[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master
-[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
-[node-image]: https://badgen.net/npm/node/cookie
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/cookie
-[npm-url]: https://npmjs.org/package/cookie
-[npm-version-image]: https://badgen.net/npm/v/cookie
diff --git a/node_modules/cookie/SECURITY.md b/node_modules/cookie/SECURITY.md
deleted file mode 100644
index fd4a6c5..0000000
--- a/node_modules/cookie/SECURITY.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Security Policies and Procedures
-
-## Reporting a Bug
-
-The `cookie` team and community take all security bugs seriously. Thank
-you for improving the security of the project. We appreciate your efforts and
-responsible disclosure and will make every effort to acknowledge your
-contributions.
-
-Report security bugs by emailing the current owner(s) of `cookie`. This
-information can be found in the npm registry using the command
-`npm owner ls cookie`.
-If unsure or unable to get the information from the above, open an issue
-in the [project issue tracker](https://github.com/jshttp/cookie/issues)
-asking for the current contact information.
-
-To ensure the timely response to your report, please ensure that the entirety
-of the report is contained within the email body and not solely behind a web
-link or an attachment.
-
-At least one owner will acknowledge your email within 48 hours, and will send a
-more detailed response within 48 hours indicating the next steps in handling
-your report. After the initial reply to your report, the owners will
-endeavor to keep you informed of the progress towards a fix and full
-announcement, and may ask for additional information or guidance.
diff --git a/node_modules/cookie/index.js b/node_modules/cookie/index.js
deleted file mode 100644
index acd5acd..0000000
--- a/node_modules/cookie/index.js
+++ /dev/null
@@ -1,335 +0,0 @@
-/*!
- * cookie
- * Copyright(c) 2012-2014 Roman Shtylman
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-exports.parse = parse;
-exports.serialize = serialize;
-
-/**
- * Module variables.
- * @private
- */
-
-var __toString = Object.prototype.toString
-var __hasOwnProperty = Object.prototype.hasOwnProperty
-
-/**
- * RegExp to match cookie-name in RFC 6265 sec 4.1.1
- * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2
- * which has been replaced by the token definition in RFC 7230 appendix B.
- *
- * cookie-name = token
- * token = 1*tchar
- * tchar = "!" / "#" / "$" / "%" / "&" / "'" /
- * "*" / "+" / "-" / "." / "^" / "_" /
- * "`" / "|" / "~" / DIGIT / ALPHA
- */
-
-var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
-
-/**
- * RegExp to match cookie-value in RFC 6265 sec 4.1.1
- *
- * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
- * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
- * ; US-ASCII characters excluding CTLs,
- * ; whitespace DQUOTE, comma, semicolon,
- * ; and backslash
- */
-
-var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/;
-
-/**
- * RegExp to match domain-value in RFC 6265 sec 4.1.1
- *
- * domain-value =
- * ; defined in [RFC1034], Section 3.5, as
- * ; enhanced by [RFC1123], Section 2.1
- * =