From 6315948a192f8ee05640bb0b0b3866d635f036c5 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 14 Mar 2023 23:55:09 +0000 Subject: [PATCH 01/11] Remove a few spaces in dist files, shaving off a few bytes --- .prettierrc-dist.cjs | 1 + CHANGELOG.md | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/.prettierrc-dist.cjs b/.prettierrc-dist.cjs index 4551a33..5147b98 100644 --- a/.prettierrc-dist.cjs +++ b/.prettierrc-dist.cjs @@ -6,5 +6,6 @@ module.exports = { trailingComma: "none", useTabs: true, arrowParens: "avoid", + bracketSpacing: false, semi: false, }; diff --git a/CHANGELOG.md b/CHANGELOG.md index e0cff02..b25d21a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Changed + +- Small tweak to reduce package size + ## 6.0.1 - 2022-11-29 ### Fixed From 2dff5032e91b02c54621056b78d1ec81378316d0 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 13 Mar 2023 18:05:59 +0000 Subject: [PATCH 02/11] Test CommonJS setups --- jest.config.js | 8 ++--- package.json | 2 +- test/project-setups.test.ts | 25 +++++++++++++++ .../javascript-commonjs/package.json | 6 ++++ .../javascript-commonjs/test.js | 31 +++++++++++++++++++ 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 test/project-setups.test.ts create mode 100644 test/project-setups/javascript-commonjs/package.json create mode 100644 test/project-setups/javascript-commonjs/test.js diff --git a/jest.config.js b/jest.config.js index f5d432d..de10448 100644 --- a/jest.config.js +++ b/jest.config.js @@ -14,12 +14,10 @@ export default { testEnvironment: "node", testRegex: "/test/.*\\.test\\.[jt]s", extensionsToTreatAsEsm: [".ts"], - globals: { - "ts-jest": { - useESM: true, - }, - }, moduleNameMapper: { "^(\\.{1,2}/.*)\\.js$": "$1", }, + transform: { + "^.+\\.ts$": ["ts-jest", { useESM: true }], + }, }; diff --git a/package.json b/package.json index fd223be..13d612a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "typescript": "^4.9.5" }, "scripts": { - "pretest": "npm run lint", + "pretest": "npm run lint && npm run build-helmet", "prepublishOnly": "npm run build-helmet", "lint": "npm run lint:eslint && npm run lint:prettier", "lint:eslint": "eslint .", diff --git a/test/project-setups.test.ts b/test/project-setups.test.ts new file mode 100644 index 0000000..013f4d1 --- /dev/null +++ b/test/project-setups.test.ts @@ -0,0 +1,25 @@ +import * as fs from "fs"; +import * as path from "path"; +import * as childProcess from "child_process"; +import { promisify } from "util"; + +const exec = promisify(childProcess.exec); + +describe("project setups", () => { + const projectSetupsFolder = path.join(__dirname, "project-setups"); + const projectSetups = fs + .readdirSync(projectSetupsFolder, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + + beforeAll(async () => { + // TODO: Improve the error message + const distPath = path.join(__dirname, "..", 'dist'); + await fs.promises.stat(distPath) + }); + + it.each(projectSetups)("%s style", async (projectSetupName) => { + const projectFolder = path.join(projectSetupsFolder, projectSetupName); + await exec("npm run helmet:test", { cwd: projectFolder }); + }); +}); diff --git a/test/project-setups/javascript-commonjs/package.json b/test/project-setups/javascript-commonjs/package.json new file mode 100644 index 0000000..4d4ce21 --- /dev/null +++ b/test/project-setups/javascript-commonjs/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "scripts": { + "helmet:test": "node test.js" + } +} diff --git a/test/project-setups/javascript-commonjs/test.js b/test/project-setups/javascript-commonjs/test.js new file mode 100644 index 0000000..875b362 --- /dev/null +++ b/test/project-setups/javascript-commonjs/test.js @@ -0,0 +1,31 @@ +const connect = require("connect"); +const supertest = require("supertest"); +const helmet = require("../../.."); + +const handler = (_, res) => res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); From 17c60e2018e4efc47ee5572f54e64a378e04e314 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 13 Mar 2023 18:16:01 +0000 Subject: [PATCH 03/11] Test Node + ESM --- test/project-setups.test.ts | 4 +- .../javascript-esm/package.json | 7 ++++ test/project-setups/javascript-esm/test.js | 40 +++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 test/project-setups/javascript-esm/package.json create mode 100644 test/project-setups/javascript-esm/test.js diff --git a/test/project-setups.test.ts b/test/project-setups.test.ts index 013f4d1..401733e 100644 --- a/test/project-setups.test.ts +++ b/test/project-setups.test.ts @@ -14,8 +14,8 @@ describe("project setups", () => { beforeAll(async () => { // TODO: Improve the error message - const distPath = path.join(__dirname, "..", 'dist'); - await fs.promises.stat(distPath) + const distPath = path.join(__dirname, "..", "dist"); + await fs.promises.stat(distPath); }); it.each(projectSetups)("%s style", async (projectSetupName) => { diff --git a/test/project-setups/javascript-esm/package.json b/test/project-setups/javascript-esm/package.json new file mode 100644 index 0000000..51d68e2 --- /dev/null +++ b/test/project-setups/javascript-esm/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "type": "module", + "scripts": { + "helmet:test": "node test.js" + } +} diff --git a/test/project-setups/javascript-esm/test.js b/test/project-setups/javascript-esm/test.js new file mode 100644 index 0000000..9d085d1 --- /dev/null +++ b/test/project-setups/javascript-esm/test.js @@ -0,0 +1,40 @@ +import connect from "connect"; +import supertest from "supertest"; +import helmet, { frameguard } from "../../../dist/esm/index.js"; + +const handler = (_, res) => res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testImportedMiddleware() { + const app = connect().use(frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function testAttachedMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testImportedMiddleware(); + await testAttachedMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); From ecf412ffc42638a55c5cc0530008902c6e259cbb Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 13 Mar 2023 18:35:39 +0000 Subject: [PATCH 04/11] Test TypeScript + CommonJS --- package-lock.json | 237 ++++++++++++++++++ package.json | 1 + .../javascript-commonjs/package.json | 1 + .../typescript-commonjs/package.json | 7 + .../typescript-commonjs/test.ts | 42 ++++ 5 files changed, 288 insertions(+) create mode 100644 test/project-setups/typescript-commonjs/package.json create mode 100644 test/project-setups/typescript-commonjs/test.ts diff --git a/package-lock.json b/package-lock.json index 1f1a618..dd96847 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "rollup": "^3.14.0", "supertest": "^6.3.3", "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", "typescript": "^4.9.5" }, "engines": { @@ -639,6 +640,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -1235,6 +1258,30 @@ "@sinonjs/commons": "^2.0.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "node_modules/@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -1613,6 +1660,15 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1693,6 +1749,12 @@ "node": ">= 8" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2095,6 +2157,12 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2175,6 +2243,15 @@ "wrappy": "1" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "29.4.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.2.tgz", @@ -4953,6 +5030,49 @@ } } }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -5073,6 +5193,12 @@ "node": ">= 0.4.0" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -5204,6 +5330,15 @@ "node": ">=12" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -5682,6 +5817,27 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -6134,6 +6290,30 @@ "@sinonjs/commons": "^2.0.0" } }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -6415,6 +6595,12 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -6469,6 +6655,12 @@ "picomatch": "^2.0.4" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -6780,6 +6972,12 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6840,6 +7038,12 @@ "wrappy": "1" } }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "diff-sequences": { "version": "29.4.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.2.tgz", @@ -8883,6 +9087,27 @@ "yargs-parser": "^21.0.1" } }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -8956,6 +9181,12 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -9059,6 +9290,12 @@ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 13d612a..55bb52d 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "rollup": "^3.14.0", "supertest": "^6.3.3", "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", "typescript": "^4.9.5" }, "scripts": { diff --git a/test/project-setups/javascript-commonjs/package.json b/test/project-setups/javascript-commonjs/package.json index 4d4ce21..79a48eb 100644 --- a/test/project-setups/javascript-commonjs/package.json +++ b/test/project-setups/javascript-commonjs/package.json @@ -1,5 +1,6 @@ { "private": true, + "type": "commonjs", "scripts": { "helmet:test": "node test.js" } diff --git a/test/project-setups/typescript-commonjs/package.json b/test/project-setups/typescript-commonjs/package.json new file mode 100644 index 0000000..6056034 --- /dev/null +++ b/test/project-setups/typescript-commonjs/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "type": "commonjs", + "scripts": { + "helmet:test": "ts-node --compilerOptions '{\"module\": \"commonjs\", \"moduleResolution\": \"node\"}' test.ts" + } +} diff --git a/test/project-setups/typescript-commonjs/test.ts b/test/project-setups/typescript-commonjs/test.ts new file mode 100644 index 0000000..f9adf6b --- /dev/null +++ b/test/project-setups/typescript-commonjs/test.ts @@ -0,0 +1,42 @@ +import type { IncomingMessage, ServerResponse } from "http"; +import connect from "connect"; +import supertest from "supertest"; +import helmet, { frameguard } from "../../.."; + +const handler = (_: IncomingMessage, res: ServerResponse) => + res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testImportedMiddleware() { + const app = connect().use(frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function testAttachedMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testImportedMiddleware(); + await testAttachedMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); From 3cdafdcf0c22e0ec30be58816b22af7954f997f6 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 14 Mar 2023 03:27:52 +0000 Subject: [PATCH 05/11] Add failing nodenext setup --- .../typescript-esm/package.json | 7 ++++ test/project-setups/typescript-esm/test.ts | 42 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/project-setups/typescript-esm/package.json create mode 100644 test/project-setups/typescript-esm/test.ts diff --git a/test/project-setups/typescript-esm/package.json b/test/project-setups/typescript-esm/package.json new file mode 100644 index 0000000..e91c751 --- /dev/null +++ b/test/project-setups/typescript-esm/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "type": "module", + "scripts": { + "helmet:test": "ts-node-esm --compilerOptions '{\"module\": \"nodenext\", \"moduleResolution\": \"nodenext\"}' test.ts" + } +} diff --git a/test/project-setups/typescript-esm/test.ts b/test/project-setups/typescript-esm/test.ts new file mode 100644 index 0000000..efcaeb1 --- /dev/null +++ b/test/project-setups/typescript-esm/test.ts @@ -0,0 +1,42 @@ +import type { IncomingMessage, ServerResponse } from "http"; +import connect from "connect"; +import supertest from "supertest"; +import helmet, { frameguard } from "../../../dist/esm/index.js"; + +const handler = (_: IncomingMessage, res: ServerResponse) => + res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testImportedMiddleware() { + const app = connect().use(frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function testAttachedMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testImportedMiddleware(); + await testAttachedMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); From 86ba017af1b343c24878f1aad6813206be4ff197 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 14 Mar 2023 03:33:21 +0000 Subject: [PATCH 06/11] Fix builds --- bin/build-helmet.js | 7 +++---- package.json | 4 ++-- tsconfig-commonjs.json | 4 ++++ tsconfig-esm.json | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/build-helmet.js b/bin/build-helmet.js index 3c70962..fbb4187 100755 --- a/bin/build-helmet.js +++ b/bin/build-helmet.js @@ -13,7 +13,6 @@ const esmDistDir = path.join(distPath, "esm"); const esmDistPath = path.join(esmDistDir, "index.js"); const commonJsDistDir = path.join(distPath, "cjs"); const commonJsDistPath = path.join(commonJsDistDir, "index.js"); -const typesDistDir = path.join(distPath, "types"); const compileEsm = () => withEsmFile(esmSourcePath, async (esmTempPath) => { @@ -25,11 +24,11 @@ const compileEsm = () => { file: path.join(distPath, "index.js") } ); - await fs.mkdir(esmDistDir); + await fs.mkdir(esmDistDir, { recursive: true }); await fs.rename(path.join(distPath, "index.js"), esmDistPath); await fs.rename( - path.join(typesDistDir, "tmp-esm-index.d.ts"), - path.join(typesDistDir, "index.d.ts") + path.join(esmDistDir, "tmp-esm-index.d.ts"), + path.join(esmDistDir, "index.d.ts") ); }); diff --git a/package.json b/package.json index 55bb52d..50a02d3 100644 --- a/package.json +++ b/package.json @@ -58,12 +58,12 @@ "type": "module", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", - "types": "./dist/types/index.d.ts", + "types": "./dist/cjs/index.d.ts", "exports": { ".": { "import": "./dist/esm/index.js", "require": "./dist/cjs/index.js", - "types": "./dist/types/index.d.ts" + "types": "./dist/esm/index.d.ts" } } } diff --git a/tsconfig-commonjs.json b/tsconfig-commonjs.json index cac0a68..49128ea 100644 --- a/tsconfig-commonjs.json +++ b/tsconfig-commonjs.json @@ -1,4 +1,8 @@ { "extends": "./tsconfig", + "compilerOptions": { + "declaration": true, + "declarationDir": "cjs" + }, "include": ["tmp-commonjs-index.ts"] } diff --git a/tsconfig-esm.json b/tsconfig-esm.json index debd28f..63572fa 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -2,7 +2,7 @@ "extends": "./tsconfig", "compilerOptions": { "declaration": true, - "declarationDir": "types" + "declarationDir": "esm" }, "include": ["tmp-esm-index.ts"] } From d3e552eea7c14c2e52828a5e501f7aca8565276a Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 14 Mar 2023 23:34:48 +0000 Subject: [PATCH 07/11] Fix all tested project setups --- .npmignore | 2 +- bin/build-helmet.js | 33 +++++++++---------- package.json | 12 +++---- test/project-setups/javascript-esm/test.js | 2 +- .../typescript-commonjs/package.json | 2 +- test/project-setups/typescript-esm/test.ts | 2 +- tsconfig-commonjs.json | 4 --- tsconfig-esm.json | 4 --- tsconfig-types.json | 3 +- tsconfig.json | 1 + 10 files changed, 28 insertions(+), 37 deletions(-) diff --git a/.npmignore b/.npmignore index 0227910..c4d05d7 100644 --- a/.npmignore +++ b/.npmignore @@ -11,4 +11,4 @@ !dist/cjs/index.js !dist/cjs/package.json !dist/esm/index.js -!dist/types/**/*.d.ts +!dist/**/*.d.ts diff --git a/bin/build-helmet.js b/bin/build-helmet.js index fbb4187..3da5f8a 100755 --- a/bin/build-helmet.js +++ b/bin/build-helmet.js @@ -10,26 +10,28 @@ const rootPath = path.join(path.dirname(thisPath), ".."); const distPath = path.join(rootPath, "dist"); const esmSourcePath = path.join(rootPath, "index.ts"); const esmDistDir = path.join(distPath, "esm"); -const esmDistPath = path.join(esmDistDir, "index.js"); +const esmDistPath = path.join(esmDistDir, "esm.js"); +const esmTypesTempPath = path.join(esmDistDir, "tmp-esm-index.d.ts"); +const esmTypesDistPath = path.join(esmDistDir, "esm.d.ts"); const commonJsDistDir = path.join(distPath, "cjs"); -const commonJsDistPath = path.join(commonJsDistDir, "index.js"); +const commonJsDistPath = path.join(commonJsDistDir, "cjs.js"); +const commonJsTypesTempPath = path.join( + commonJsDistDir, + "tmp-commonjs-index.d.ts" +); +const commonJsTypesDistPath = path.join(commonJsDistDir, "cjs.d.ts"); const compileEsm = () => withEsmFile(esmSourcePath, async (esmTempPath) => { + await fs.mkdir(esmDistDir, { recursive: true }); await writeRollup( { input: esmTempPath, plugins: [rollupTypescript({ tsconfig: "./tsconfig-esm.json" })], }, - { file: path.join(distPath, "index.js") } - ); - - await fs.mkdir(esmDistDir, { recursive: true }); - await fs.rename(path.join(distPath, "index.js"), esmDistPath); - await fs.rename( - path.join(esmDistDir, "tmp-esm-index.d.ts"), - path.join(esmDistDir, "index.d.ts") + { file: esmDistPath } ); + await fs.rename(esmTypesTempPath, esmTypesDistPath); }); const compileCommonjs = () => @@ -46,19 +48,16 @@ const compileCommonjs = () => } ); - const cjsPackageJson = JSON.stringify({ - type: "commonjs", - }); - await fs.writeFile( path.join(commonJsDistDir, "package.json"), - cjsPackageJson + JSON.stringify({ type: "commonjs" }) ); + + await fs.rename(commonJsTypesTempPath, commonJsTypesDistPath); }); async function main() { - await compileEsm(); - await compileCommonjs(); + await Promise.all([compileEsm(), compileCommonjs()]); } main(process.argv).catch((err) => { diff --git a/package.json b/package.json index 50a02d3..9dabdf0 100644 --- a/package.json +++ b/package.json @@ -56,14 +56,14 @@ }, "license": "MIT", "type": "module", - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/cjs/index.d.ts", + "main": "./dist/cjs/cjs.js", + "module": "./dist/esm/esm.js", + "types": "./dist/esm/esm.d.ts", "exports": { ".": { - "import": "./dist/esm/index.js", - "require": "./dist/cjs/index.js", - "types": "./dist/esm/index.d.ts" + "import": "./dist/esm/esm.js", + "require": "./dist/cjs/cjs.js", + "types": "./dist/esm/esm.d.ts" } } } diff --git a/test/project-setups/javascript-esm/test.js b/test/project-setups/javascript-esm/test.js index 9d085d1..b9dac39 100644 --- a/test/project-setups/javascript-esm/test.js +++ b/test/project-setups/javascript-esm/test.js @@ -1,6 +1,6 @@ import connect from "connect"; import supertest from "supertest"; -import helmet, { frameguard } from "../../../dist/esm/index.js"; +import helmet, { frameguard } from "../../../dist/esm/esm.js"; const handler = (_, res) => res.end("Hello world"); diff --git a/test/project-setups/typescript-commonjs/package.json b/test/project-setups/typescript-commonjs/package.json index 6056034..892dbaa 100644 --- a/test/project-setups/typescript-commonjs/package.json +++ b/test/project-setups/typescript-commonjs/package.json @@ -2,6 +2,6 @@ "private": true, "type": "commonjs", "scripts": { - "helmet:test": "ts-node --compilerOptions '{\"module\": \"commonjs\", \"moduleResolution\": \"node\"}' test.ts" + "helmet:test": "ts-node --compilerOptions '{\"module\": \"commonjs\", \"moduleResolution\": \"node\", \"esModuleInterop\": true}' test.ts" } } diff --git a/test/project-setups/typescript-esm/test.ts b/test/project-setups/typescript-esm/test.ts index efcaeb1..2e2d3f7 100644 --- a/test/project-setups/typescript-esm/test.ts +++ b/test/project-setups/typescript-esm/test.ts @@ -1,7 +1,7 @@ import type { IncomingMessage, ServerResponse } from "http"; import connect from "connect"; import supertest from "supertest"; -import helmet, { frameguard } from "../../../dist/esm/index.js"; +import helmet, { frameguard } from "../../../dist/esm/esm.js"; const handler = (_: IncomingMessage, res: ServerResponse) => res.end("Hello world"); diff --git a/tsconfig-commonjs.json b/tsconfig-commonjs.json index 49128ea..cac0a68 100644 --- a/tsconfig-commonjs.json +++ b/tsconfig-commonjs.json @@ -1,8 +1,4 @@ { "extends": "./tsconfig", - "compilerOptions": { - "declaration": true, - "declarationDir": "cjs" - }, "include": ["tmp-commonjs-index.ts"] } diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 63572fa..6946c3f 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,8 +1,4 @@ { "extends": "./tsconfig", - "compilerOptions": { - "declaration": true, - "declarationDir": "esm" - }, "include": ["tmp-esm-index.ts"] } diff --git a/tsconfig-types.json b/tsconfig-types.json index 6d7b1e9..7155af5 100644 --- a/tsconfig-types.json +++ b/tsconfig-types.json @@ -1,7 +1,6 @@ { "extends": "./tsconfig", "compilerOptions": { - "outDir": "dist", - "declaration": true + "outDir": "dist" } } diff --git a/tsconfig.json b/tsconfig.json index 2857bf3..c7754bd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "declaration": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "node", From 11db280d7c5bce34904f15a18068ad198a189daf Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 14 Mar 2023 23:40:10 +0000 Subject: [PATCH 08/11] Use new "main" paths in npmignore --- .npmignore | 4 ++-- helmet-6.0.1.tgz | Bin 0 -> 19133 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 helmet-6.0.1.tgz diff --git a/.npmignore b/.npmignore index c4d05d7..9938590 100644 --- a/.npmignore +++ b/.npmignore @@ -8,7 +8,7 @@ !README.md !SECURITY.md -!dist/cjs/index.js +!dist/cjs/cjs.js !dist/cjs/package.json -!dist/esm/index.js +!dist/esm/esm.js !dist/**/*.d.ts diff --git a/helmet-6.0.1.tgz b/helmet-6.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..50e2f9153b4096365512e9fea8e439d4fba76754 GIT binary patch literal 19133 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 Date: Tue, 14 Mar 2023 23:51:34 +0000 Subject: [PATCH 09/11] Remove accidentally-committed tarball --- helmet-6.0.1.tgz | Bin 19133 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 helmet-6.0.1.tgz diff --git a/helmet-6.0.1.tgz b/helmet-6.0.1.tgz deleted file mode 100644 index 50e2f9153b4096365512e9fea8e439d4fba76754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19133 zcmV(_K-9kF+)(iO0wchWQ!haSC;%q@+A3m zye33~5^NIS0-$A$<8$^Q_6he%wyOGqZlD2@zGal5Cz+T)qq@4g?p<9ybBAx-OK~;?5TSd z)Y;z1ow7&nWOVHZmCAE3n)-3gcphH2Yzr_aoG?$#+JzyfQiF#a_vSQG#)WGj>Dnv0z5Vfhx4fyByNKJ zjs1xivyJ4+tK2yiU)-rtCnL|DFh2lj9+R)wwVzyt^MplSoJ9T*Vbr0~a55hu4)XQH zpZcN){G4VZMxgT;Mu2$M*)$yaWBjj2!%2B`tn5C;KUd2}~;C|s%_=G{fFukre zoCv!IZVD0~=6)7N)L(X(4e0-ApPe2*Is0Yrq|Xjc+4Ga*zaQ-P_t~AjQ}}(S&VD&K zdwTrhj6sW&y`!_=*zps#ck~ZRoPaZ#opL>rE4iC{(= z&-YHw4j#Wa+&f{;D~ou+yh|hlkYF z-V4C~gz$TO{QS3*gTFmJV^5C{_xtehQ6Dhddvw_6T^;>ad3?Bc@T|`E_nz(jtxsPa z1C$eLCb0YEX`dcJe|zxH);-yQWi6r5_rx}sJDn&2p2oc2>(_WOH>0P7S#)|anQ`OEsxZT>S8`XA-i z=J0il|2AI7Ur+yco83-M|F_|PYyJN<{!~GyF|G}(mC7-xkH*Lw`+@g73PB4bHyhqN z6y|ZARbRdG;%DJ#KJlt`_MW|UCv$I?CDGhtA8M5fXqh-+BR9D8qHrEhZub4yy_k6W z-q@W_lGA9&?z7XI=|wo%sFpRW)m{*%2Ihi9+$4^B{C{T<}vefGZcO?AZEIx#ff zW#`p9pjpRvsxRyC?!t{dXCC>v7vnIxriMuP?MpMTn8zB!Ta;Ki- z21BqT!YIzY_otVZZZzN_&2!o&2m?=i8xJFYW*=Aj%5jq<%72>NOuW+Z-I)imJN6tu znE2|m`3$VJ5k8E);XLx3$osE3jEu(hvhqPJ#if^s1={x`z}|lgO8-9FsImJGm>?Xm z)cng}&p6kD$Ym@f?9}{`7l&vys4XH_Vq3 z*p*A8gcYl^H{Ojt+F2APVRAF`8qnzYI*<(07=l@peo-0E1EM3aq@pQc@((Ya!HsZ6 zW>O8QTFj4SmTi;2QIlW1N6S>a$JWS@^>ncDE{oi2175z55AamrBEf>03~k_f;9aw4 z?kw$4fj$C8h)+E)5UozV#L_D6zng(2>?exVM`n9qHgGq1ry8aR9j#0Qdzz_l{4v}3 z7N&i}cvsJTUgOOXqr?y99{l}-_&nRRG4X=SfJP%y#= zkSxf#qfw^08oEA2!PX|hoM$KDC44*al8iL4P=x>o^bpJ^6EPjR>7xdQLJ}==GgmE| zxxn*AF-}_wgnW zyi3_5@32v(d8*02kQ0{`)9gI=*-I1p zx48zNmo3TCVJN1Sqv8}Z`+&>le|0)rxJc$#^o_Pk5?wpd7R?yieZGi32+~_LHw7pMvX8QF|tvKMxe5( zPL}N7{;kNU*bwb&wH2rD^Aa4NCHR-?>;?z`vt2zq@Cr7^acianAA_)N0B2ZV&1(3h6&Xg~&`W(+l0-vWAOHGpb&5HOJ z=_YhMNIQWU{MH{qS6@dl!JI^1GLHgbpMry;3~VrypVH*fLT-Q~Q^!{I)bbu>3`w*D zyeP_qbl0gXzR*-GLtaz(G!2GS+ONXG}wFXUoD82F+M z`psdK90$N}4_OfpJ15l2!DdxJxTsxKc4eb{T(J`WRn1KK;GX%T(Zs`z0G&I%cL^tr z3>U7(&(ebDUu)bzR3>N-`w~qoM1i`3_qdTxcb%o}`S+3@_)1&ESV6GF_PDaTAY|nR zqzuIE9UdP4(%*me{P^(T@j?Ie`?ltFpI0%=16Vl2Fq&a-Xc&1Tk2Y^6UL03n){5ln zlPH`X^JV{jd*eNuNxC*cGETg>Bza6oFYynBR1oCDpH=jQ$(vMB7{|_W-=M}pa<0`gI~%-ksUp1JS#F1_zt8*jz9 znrcD$lLr{G1z+fB4$>}a`0*1z07~L-&4qpDCRdH|B!mTgD?Qs+>#x2y;E}atI4fcHExzNGzDh%O2E-W_CIhwFOsD9Anjoi8yFI?BQWuO}w z=L6{0aWB35-@i9!Pa2IJEij8;@;Q{xy#SCN3fo_ESjkMTinp3yY8s(0BH#YyfWOBr zx%<`c-{-#iP#qY4o%TJqsX-pp^vUsPO&%wo$^+dJ9*}*kNb-tYmZfhlqF_0KQ`wc^A20c{++uLPXnsS^*7QjI@6YoAcL(-!JA<$R$%O zNxJzw3c6DwoXnn96a<-hTgr};yZO)detos~w>}`=+G(;MS-T7Wx7DQov+8W6u`>|9 zn*KiJV&g1wgP63C^t1n2^m*IR=Qt%*=mykx6}P_icX?S+IJgW~3KJCBQsgMq*?{*l zXs~@4BgSo~o{Izy%NNJ=8pb+!sOkHvNc}vWUyQ=3>w^r+;fVASPP_(?W3X|j7{RF` zS{7f0^T`Nv7}y}~VW0Ofpg;~x9fn2+IRpUx4a{d9h7lSK41>}bamQiLV5CD_r|N#S zQM;p!1GwQ}ya4y=Qn-Uqo`e{Rk!F5OcK(2R7$7Hr^21CO5Xd~bZ>BI~!tFhtptHGo z=_gn7i^edVZeDp4`0jNq{<3-PzwtL8%Pd}uuRHS?$ks`5d4M7m*AXN3z|)f%!>k&V zgO~zLX}uTTmHXBYqlTe8mN6d}8jrb^BP}-%crw`t6DkUu7Fe9Qb{5-n7I~A<9Th+j zZ>#0@Nc4g(R}}4qB)hCN`c6cK&%neHXxq(EOT!g${ne3C zXoTSiAl#aa1AjcOmY}&G#LrO)Cc`U)5`~lH7DrMIg{d%N9tIQ;51~8DAoJaV%r>%MgqhhYC8(d=iIqQT!=hmuWTf8Hfl14sJ zNVQ6Yl+n@3WM+(fwdi60Th^-X|DGMI~+b`!8 zqEAT2aKL6FGubEI$h)$I6LT2yz+x6gCdQb3U2e+$>O7YpI6Sn*)uN*?%*7n@@x~lR z7J5?MP%pd_+5QvhtBktJx?P#t7EIOBBKSGx7ki^eHwD61yE6Ud*D=NZdDGEF~?f6M`g@gA8MT@csMT=a`E7 zA!R9qrtAlHLMurIy>zM2b&CCo7YsdaY$Ie~y9UqDG6rU*+{rf_`b&|2l=UCeRh8Kt zv5m1(mNb%CN-`2~F*(m_%NjSVZEIZa6~a*jrqV0yIS!3RqZo$nn-uPe7GYh~USeJb z&w_p7J}{1;6js3~^v$@%W6)dYN05b8iodb(Xkwp(Q-Hg<8?+dEvwa@_JiO8oWOl&J zF<4;fqp;ZW1^AD04F%!_Ao3{N+!H{y=zASax$PiuQ#&)_F~-QU_{w(zOC3TUHMMmD z_!upXxzg>tf?1+7P?vKz8p+woeq@;!!%)Q;$$ev>p>%5j4p;ujQ*G+h9SUvm=ZrVi zI$BejGT7ysfCqL7ccUi@;+hqpV_4v|7oi&`vFNbm!+h^W;Ru+(GB_snn?7OzhQ4Dplk8Zb3ac~-tr)+uk1 zcMZRJ>qhLAEA|>UHeR`!P9xyae3)QvraWYYVPb3rKi`J_h&9oRc1giLVf7$k?ri3{QB2YCEB7r1;RBCy@4-+HF4@Ef+kOD88uQrO;G?Mx z>hcVh*r2$`wSjpPr=`-Pc+MZ4%r=1^whxHCKW$@Kc8wwWg zP(^_|IYQSCXjQsHWICijx$B1y_)m@!{r!V-pKODLE-f=~oNDS1p^*9JuYb)x zmS1S|p%0IvZg^U0`mPwqhnh;}1-=rSKzX+Wd9Kjf&%D%)>C7wBM#YzTV{_MLs$x@V zuHoNP>ucAv*6^ia{OoFG6ukr^WVgt0!3I*@@8*mKd@B^}u1!zldyA5Tr)9cgw_N+w zi63;Sicgd@+|9^T6l1lDs8|5B$XTZ{rJ@Cm+;iEoA%Y3%n}5~%AL2pdbsPp?rT$m5 z*=c6$e{|Yg>-ryG1wV4|(#ISce7QHp49C5T5&q|%JEcrL z`qhZNpD)31m=KsMG=E7Lj67a8hu86`Qd$hJbHn=YW?(bMm{t>D?hx4aG1UlU;I{bT zJZ4YN&Yp{XqL>fpE&NS@+G;c#E&lY4cXJ&^BW;Kthb{4rRUQWat;2+$7dUUhD8>2; zT$33(HM_EW&!$QVYKSx;KiuTKU(7GD=l2{IX1{7*mE;upaXj}F4jxV(ewkSkMCt?e zg9+QQ4@-HI_9k@)bRz)?1mH<&_c)9cwikfe=xM_U!Vv*}aKF`siEgG%N8a0g4-C|i z7tl_g`s8OYlqd7q=4>*@6k$Y-uRX%~&sK}T2qb@|x0^%0^wgl!=r%gNOoP{6%-^=} z!t3nk@f>%4R1+kKw%LT2Z1Um>I3}C?KMu!_KIt`jtt?dI6UxAfENxB9x6>E=Lwdf` z=ycK-=1>%#K&MIKi$2;7_(s0r(+!eed zXh>VAF1+id%gx_t%Zvz%Ee3LfCB4looX>$#N#7o-@C!R~hgtN;U zn-_ktNzXu+EBT_2P#YDsqw%EQ>TLl8zRh*+U}gpG^fu(HXy~8|(Et|$-ujn87CGik|df+4Od&7wvQR*a}d3I*_l5pYtP6mv1MESn7 z36caww5v!@RBy!>&koMGu$2ODD$3yDGxS&SStDCUQM~3&(*|BV#eY=;!rbzH)JQ}N z;ijfc&`^JcAN~~I7I(n8nV-!q#xv!`B2=i+2b`X@hwvw}|FIhG-};Bge``!fU)BEa zb=zB=oc-TwcGmX)*ZA`tdwhkZ1Sa8SrSjc(jEq|5uy(WEc3Lf`eHR~p$Da7_yiuj% zut8xMbN~W=#1Bpkhu$oafqv%lv#&`wV-xSKH{rSP=ihbiHeYTmZKrNR^P0l3DRFG> zIPEQtBOeK2`Qwj|BF}x}2ba4){>TPGn^{A<13ib|OJX*-n1sVOc#<7-28>!}5e~G{ zBNsQa9!_CrGF&_0$4Rs_hPc5< z9lPT(j5*f7oP+rq^V;T9_lC$rXd)^EKSVV>q=k#sAhzzVG>EOcI0!lKX=q$u*$^;` zu#8a*tKyISA=YjQBZlV)SrXmQ35k%OL7}8h2g_y;e!}ga*K^$JcW>}$hf5nmu%gd7yhVOc- zEoSd-O${hz@}AS$<^$RTfx`t+S(S^yuA0h$S=VGBjs&K}w#vA+dPr*f;s_5Ovw?-c zyg%gX5GJ#zl+l2uW3WVlo^0UF>Xo5M1PMd9Q^O6gn9q*vpqo{+?-7bqr1ukc4-1hn^*>;&~0hxHm#&w_`Shp z;;+2vJOK6{sVzd1J*vm1-eWsMYq`;@iQ4cRUZc(i{I}dHA4lO-h10~+ix%%$Dxlbh zOv{>@)b?s}yv1X#t? zdj-aAw~=wr!kI%hoa}s~Hc0an@Zy#UUMB+Da7>3WmQZ^Zo!8_#uO)R}+phDvjV;Nx zEmRTBR#rtUpi4TbX`y>n7*bdT14^(N)WLjBcoGRvDyLyASqf%bGzUH()~f zlN%HssWr!w-u3k%e;X~ifxZJXP;1oetguGSPEAZqPn(#oMRzV_BOoNoq0x@I;`-2x zl`38lF0ae7j|DVa#CJ>gYt$n8h+Z>nx^%ypGB)KsXGJoXpMsmw8r8ZZTTG@QsB;F- zBk!$GW!~!IPywYPja`4jzi)6qsQJnQZSo3%p#JvjHPVttya~dH3w`ua)eC>Z_wJ#deI9c(?vuDE3$$@iiP%0 zXBG1Rn%5LwO$%O2OUxLfy>yry=0>XsJ0LnK`?$QatDH#?g%+-{={cond~UjqOy7%} zut69&{OnsS#^2V)-&$Q`TzZ`BC7)_1=ZPB!%a?-$%~>>3RH|ec$&v#6z7XMmj>6zh z!qXTB*_$W^;?6TaLdVk&@Jg`Z71rIBP0_bcybUU74;l^L$Xg$reCT4A$zlKlse#9S z6eo%fx4O%#Cul6Gu$6L0^RCls78v+08v|R?y2kP{x0C+f{wp>_$&qByF+GZmPi3+BY!xDzak zfxFmP;u&UwR2AkE!L+Y5Bc0xN^jGn%v$frAwzhUs0oF8@96dEzSmRvGT$hO(ZP?`; z%(A7rr}7&7d#CHj8*%9S8c7n$8{p4T{*l|JR{tZ&4rUS-!4#o}V}!gv@$m}9RKp|r zMd5XjAzV<838&i&9#r#TsZpBNDcnZkD>sVVn>a^owCGZ=rc{A}tC6=B(XES46GWS}pk(&iwj0t~fzG+Xl-uf{u>h+7r?sn=L?qR#L}Nhy3(6>{h4Mr;0LS^7urlVo-0q8xDu(h|7r;+^c9}7|*`jUckuEM$+sy&?d(eu+(e_UpN92 zFYsY>b>_<380oQj=L_AR$R&_AF)GcK>jR}Ek=!rlmzOu}*V9wH1{1GH(xb{k9Cezj zF`tYgXtKl>nGAsl$TJh!FtK#hnt4Y}Q{SL?=8-hGl`x4D3~Q4}!3yyhfhFrgG;Ef*qJi&`?@EcX(!!a_wtPQm{nefy1 zv9^e{&ov*X+)8&iE>2OWh^eQ3zZu+^mA(}sWrJap6q=o?eUu?&50if@<3`fl2(GNRll@rM&{TOVVm zaE$rWZ(jtPmWEBMc*f<)w=aT2Q^!HBQ7J=uEAau*~fBYl2^-A zJ-5x#=R++g-Zhf3+7_iqOX~WsK2|Nn*6cX#Zm!1{vk{I(4%h)Rl;VeP0atMENhpIe zomchza*2^Rl?cip27z%AzDvb|VFe@L?^?|zJUNO_wVE;-V_z5PAQY~Matty{A;o*E zw~}~o^=fiTTbj^luQ;W58$Fs))#QTQ3Ya|5s?x{5;Sr5CCX(ZK_!(aa5sAaiJwS_Z zq|dx?2IHek{7}5fy#v0*ojNeKj`AyXcWZesWlN@&w3@A@m$jwMBNt393_3dP)@t+E zU11)#fbD1=VL~lK?k$IDh9feZN+xk-S%pVG?xJ=yj%+Y@0qnq-M zbwz}88!i)q+0 zsF04ksg1kY%>>)jxZgQo0XZ|JlKJRcxZ@!u3N{1Y^meJ#z(BWv==puJR|cz5MQa7B z=m8%SRrDI&JXP%MEJ+nRJBlir8ddB#?VZ(dZ>C_gML4xdN8iFeZijx=LySOO; zS42_mbig~>fP3&yHWHlCoafUyZ8iexZn3<+%Y(WL7ZN@Gkgp`!+Ek7_*0(LN6*MWJ(z+$ z^MsC>@TVaKxXI%cTULE&K^TR^ng8%c^bs|m`9mDVLGYaa1)l-=`|gDPb`uP_6@kCz z0eT@*6M**c5LOK{^a@|z=x+!SHEzHR++=qGy@eC%``Ufu9U?dL+|$9ksD!V%t?dkx z0us#HTD(yw(?~O^u|X$GPs%onu=~Kt}++zEZw2dc91M1 zx9v`dymbmvao3|R_uFU=@E**OJHgE{*#~z}$ST3D3*n)(c2?Rig68RH8|iR`5ZR#& zi=qsZjAk?>+89Icx{{QzyBcgv9as)_I-?R!CxwINPP+h3S=kyJ*tT>pIM}R-F5~8) zWJhj%)d1sTJ_L1;wG#(uT%|Bu3T975FVaM!G)$yjqk$61)i2J7y{SJ8Cwv8cK+RETrquSmQk7uS%hfDiQ1}-o*Wkhcyk++r^nz$QlbOTf8!|=!wC}=D1 zXpJM^0p`ukg%KJO1S<}k>!d1>-H{}}O z2_ZT`mR{m6`r5YkRl20wNQxKe%*bQlLl$QoMEWIVAfw^NbE(XuBb=nsm;)ui&uq)t z+0s^`XPccz^XW`mRMTnS(#G4%`|O&~%H&)c`Gx8(y@5HKJq2`rXpA_Qn6HaFi#Dojr3hAbU(nYnErH@ z+=#?1X5J-5BNQerBHCb2kU1#vT%>z#@S2sPS_n-7?pyLqQTkm=b5^(o7>#86(`dNM z&Z~DYVd_rx<)Fb0&^$fLp~zPPeUup#D`R+O^@fUQHZ+xoUlk}hJ{0eri-%F_214Rv zpYtnT9D~*hU1vduHtCS2Pl@XX0Ya_o*(4IRbQXoC!#sOk{uA;ZikgO!@^{h;&vJ*J z@TR*FuF-~OP_^(;&HBB{=b$t`4>M_Eo{2XFa`VNLRKci(npn9+nbQk0mZd=s%y?iJ}cCbrM5|$~#q!xrIcR1h!|M(QxB|^(avOgy>l%nFup-+n- zEFWULwl2899_Tc4mUY(0$;)Yrm!_^*5FX;to%!J2u>D+GJ%PuA4@&b}{7w6faF!U%#Nmb!KQ7`YvC1D+7P1ZiKBe8yspg*G@tG+~Bi{`1agMfZ zr>kM75R5N7Nd0^JoRa&#F>M|&R&+*bmGeEYt2iAW)sBoSeYZ_~8OWX+9qD z#;CA3*3NUve&SbKVlSu-;WMrxGlcZaeWRiyY5WPuz&ySr{TbO56%%`La)>QCrNmkr zgE+~8CEqq}OiSA`gl5NfD24i>Yb~>3J(#hfo?OHa)0+NA%aCR5Jnf`BE&4E1Pt&fH zP6x9IH~sNs2#iL$TngZ-7nqk!N8ZG7 z!=a13lNoAL2WXdXg7cMr*TkH2iRU*dG*GZ_A-w(6B$ws_ULGYfLejSb%WJ8{YuahSt>}4`I#l5|0=vvQjH?fG_u^ah4)iw<;YF3*@2FI}0 zQjZs84Xcbco+l};T=#>CA9%vy6wf?ZS2QK}`J#({XY#H(BgZPjPGaf5HMJ;mkE#&a zlD25P!WYa~_(;g8@o8c#bRc`_8olHNuiCNWWeS9w#|Ec!SjbBtUPlRz6tIb=213P= za6<>Je1bKL{I>wfIQ}D+l&o=E7l?aD!@X&VfM$ZWT(YZdeAGh~nG}Jcc5>3t{-NAo zshrG{X{TqWl9GT}DN4&J%3@<ZEl56OCN z%T`MS9|5gSHX8sePQGQ^l6$fmONg`)Q3{Zx42=yjL@8r#drGf9C%d$<2(hAGYNxc6 z2QKGHld@pVH+L*Mvel<(fTOE}GXk8+4_U=kg=VTMu)P=wy)ECfRdxrRnxOO8ArabSQy8J`RQ+K4lmQ|;CL*oEK>C$82I4rR?VsGX53v^t zP*_KeJh>gKB~z*FLiR*iS8AVpq#PDGV-)QmPYvWcR;@s98ZF>E7~~qxW1EMV{wmgT zEsRbSz@Ld?>8)-%Cly)k)Cv>6ba*P-JigO2p2nlr9M z*Qr@1+mOb}3w7LS7``E~mOh$I{De^eF5m`)A2FP7Ax*S`df7}URbtUNZj1=J2?J>< zru2_VySbF+Sj!7eb?SoT;Ittf@=Sr)q_?DM z;x*G<&90uzTj(5#@O}T?jPJRCYUZaMJ1QkC9` z5O{T(k&x27-w73?#remoN{w~l@h?&To3F_iDE_^${&&08&E5ag>~+`mzrRxb@2BD> zyz_6*@!|!cH&bN;mLnKm<9T$0H_oKjx5RHRYYSV|5bTrV)6+e63fg@hr(fVrnq$ye zE`H$7{7vDO#;D$YXg{KMKXmqfXg`5}Qk4fkq|#G=MPwf0!I1m$6(*$D3cC4(E*^q3 zyicQiCHkmT#1ZSl8D=d_^m=0H)=!LcDGQ2y*faDoU+`%~Ay_kb( zn7mTAkfJ|>U42Vx=>N_A;Ttr!FzodNi*nWJ(hS@?QQ5y7b#5>dQaBs9{}$BA;tO;v zcPo{_VDLJwsGG>?&3zfm*-)1n)qcv}46B-mO198KGy%ZyUVOQM&vRF(!n4gy)@U@a z|4K#rZtf)JiOu=i!}7E>ogl)q)g1AXBD|~NLwGz=W^`Q@<&sv;IFz+~#0v7sLxQRl z1kQJvc8rek=>AU^n3)c(qHHV_qnTF!V3X``=^J{L*Z+6*xQOBJwK2nQT9;!8Wh|ap&9rnp7F#{tU`*#qp(5~nQs}yLB?Yt3_szHztT2<;kl67sg@J+j9L|n&oP`!G143KzCpcwR8<{OX-MqQ zIbtNWZ;jf5MzJx9LXx24Bfug{;4{qeEMT3T$DTO)f_afCN|xL5prwN|u~}=>(EFh3 zwPrbMvzWEZt|PoUJd#EBTU{1UF=7+xaUak>2Z6wot^veSy&i6{T!%ce3mgw%67B+` ztb6NDfDCq*Q(Qth7Ah(O#*Y{UUkQ-CS{Z@QHY_R^y`ZsP;dwz*vn;c%aXxFq)+&v9 z+1?tZn5+#zXW5?15+SyC;%aQ$t9;R6TdT6;Mz;2*NVK(38v`k^kpEAG%!c62-y3;} z>rdhbm3#4gItAW-a1SZ=fuJ#YDgC`odU|hDw$jB>VsKKfin4JkO;)%=>$KJ5OcOUW z5qu!CVMPl)Rjr5tgy^_-sW_XG@}TPKRL|NdW-S;!lZULA0x)WiSug`BfZ;OC0yglg zv-l10Ic1$%@&b!=f_|5~O%YI-Im}k~7SU!gvO2rI^0Clwl-`KJ^T&CuNm^xg;epYb zA2?0X;Jv7xwu?7x1~;Hd`6m9N*~qU`UHLkgZ6`8Ma4+B^Cq>?KXX3}NtjntVzL_?N zJ{4u$arHnI%y15X@;4RfFXDm%0a?Nu;^h3=DJXXexb`Z)oJ+Y}#W(AS+%C=m+!+Ts z>SKNm<0oBWytGp6<0DxnxJ!Wrou`<{AWPQbR)9DP`)vQ{4juN3Ld+Hn(dOZW_-K=m zW5OgRjAN1-A0w26n6loOhX3#<6BjhV<)#-nFHScxe7*ULcd>~9fX&CJ&ua}43e_a1 z*v5?+rHV{IEAaFEV(X9>R1`al5nV#TcLeDy3vPFjWqyv2`j}ql!VpsQhVhKDv*>XH zO|i=`yqtLAq3Mc&7|AT!1|x>Uq!_Z7%%Zj^e}?ei38QS<4ONSLlvaKx z+wzTf;a(Ip;%8YzN0cfkFi-^~H|Fu2a$nKR$Ky0Lt)?V1ic@lpXhMuAci%NQDm6!A;FEr_KUUFt0 z8{(6{TT+Hn<6=RYGOBiNfOF(U7-CvU!Id^d{rpyvIky8Vm*}RZ z7!HFHszgJ^+QWCR@b0x&L~sFSzf5={ss-iPEKr~NW~*IN*D|Zrx0j(H?mURM;GhX--OjL3&Xc%W$1 zVyzXJM%-dchpOFGoc39zBZx%y)jD2rOe3Ky=U=M(h*jrRUbHJ`^{D|@S23}2tje_R zEk;ox>s42r6HRDp*1mnNQZ1>?l$sjzBxm_F@&RQ|eae?&YzJa!Ct_sK^kwmEBZX9# z;Nhyuyyxuu8AxdJM~q^yA2(CvFg$3U11&(=Aou`Ou=|Y4cZH1zm@k|@x&h6&(b}ptlJJy_7u-&HhkGfEfZ=Y%2hGX<_$jp0 zj>4U=9*CLv{=EhF4|fJHKZX@^eD@{!r>ZeNh>wr9r0V6eYXO%GGB!qz?l?R0Z#+^O zyUV%CD=#}i+mndoWkFHwJS`@qVmYcNE}Gr3aYS=f=ejVcxSE5#{05Whb{5|xskxp@ z+;~S;mEO<5@Fg|(k*2ZOf*OtjWkm&Gbd*|AC5RcdnNHIhP(nlGEQadxQ&?RsGQ4aT z=1sjTbfRqrWncg~XQ=s3vVfjHo_@_Zw}ou2#9Fe&SwyMkRiy=VYP}(mNB@v0gdw~t zbuMk+7ot*2%~lZSm|I5{FpnqeRQV##n4%)&tnQV^vO6PrCaZ9I^xee*N-SQ2ED-{! z6?DYy4o+_?cjNHV*0XRnpV@56vTilvFNDZG=yH8!VX*xCly3Wcu4!4&)p8SJA|(86 zREJr7v{xU4g8unel}6dEwAIyUX;MXzY|7q$Tp*na?orLjC$uGFANA|Vn@vKh0iy$A z5>PG(8;KX8GSw#qCl*sK2J!I!`<82KvQ>UF<9u4e;6UYsrCD(D~_$)vKh@`~b47Lr@dS5SrJ z(oC+VDbKX3no4}-%F)?(oTh$EvB42LJw0SYEKEJ7iZ$8!^vW+Bbb9z z67g!QRN{*Y@DSdGOWa@wiBW89&>ZMpcmbUoG-LTj(4LAMtAlIWUYMNMTDng-#%x+~ zb%RLl;%O1MBgRjTd$j#jgszYS4YseNEVdGIyAV_tmJsKAafCPUQyq_*%qFDDQ`BR= zj{MVN4DjZ2ED6ldr2zC7Cx;F8BEW3`{c`i-$avMl{ySUUX44jnQUZp@Q23JXGHP#& zd=f}td6!WI zgW(OoXH#Y$3^5`b1#$Ib6^7{LmFVS_=;amk@=EsdO7(CG6MnBcm zR*6>7sZe7^o#AsAgVGbc30rjY8E50WQ&k4@mHSHe^J*sii<~OaSfX^Ruv*4UHaV1G zTrQ2Q>DV?And^<4f_332&!fr8eV$i^MOs(>HiCKi@j^{@_mOrf<&Ul;&_40Bfg$pE zUC~s~6~fMlJQ)2XPVF&F4diD)d6{e6Ic9PPl%8q#Wte3bIoo~;?HA%)vkHTSwwM}~ zvWBJ}waJXq5DRoF7fZfhqNRv{RRR(vgkvR=@H)t|o?NPdCNE?iSsiUltyA676CaOY zCeVRUwa2wOiA5z-wemt7$dpPL6UmEY9I%h^_CCy^P=%ZFLlO0gHMz@=wp(mcGCELx zrtt~YSi?sgR^X*55`LpH9V?+DYIOElV2HJA#JXvuR(;NaA^=V%Op%Go$*bbZe`#9$ zF2&>(Z}dtvdSxNl+~g|LxmY+aBN*D9Zg0yX7Hoo)M3ZSi^6zc3dg;zr?uq5G&80to zo=Nyg7Gqcv$E{9t8+n&wDZb5S6|B5JiXwSMC87=#ETupeoi{TygaEB83H$fP?xp}W z5M|C~$RlRw&kmmT86Ln@wLm|H-yXTKKa5|6<5%<(fxbeZ@ptrB3A!dNbT<%{DU~Vw zc0R$Xl9Ws6tB6bH)&qGeL5%Fv<%50d3`Lbq@Z|;NgHYYftVBRw0xVeBYS}@QRq51r z+1`p|Ydh?+6a^O^(=EY8;pTEyU6JVYl%<-oXe&j)}Qd>DXAc;|8ebIU=lE0 zel8D<_%V--h}t#OhrCRi4p_(n)9hRXpRnRaN>b=T&LX0tt7JOa+-kSFn;c97AABdG zp>Mn!Z^Vo0Izx_pTw8MYzG(KUOCCo0lDkrtGg~Ve$7N?_4dSqs^wmY24U8`0=*A)8 z`7>zD^3sdcgDcvrlq*S zSK5~1=Jm|@KgxP3Svi|Jwh#(e&V+l3fl$~_@G;$dny$CrZMq`Iqz4U`Wssr+;|71E zSDYJMk@+?&FfrgIDhT1aAJ83GUV_CVCLxBWc8E48^oZU?A`)wVPmTD`|8)TNJEU zwe-m8s-&o{)LfDLwBxfY3hLtO1O_4MRq1q6G(OKsW-8?`H`>mJprhZsc871YGhNz| z_@IGj&u4f=EQwJ%iT+sorY7vzv^ID=2iXgrKR=LjZcpDVIQ^A+xL@E{#AXJI8ZQbH zi)||ribU?go92|uZ1PI^NxM1{%(Vy5;J;raq?1|QnxUJ-4a<5km$s#3(Y9E{LbT*r z82A7F_y2f4DXzhO|L8Y<3sOpT;HzxxF@D#v9)lR{9UdP4;ygJyeg-4=#Wh2!+#sxe zV)A!`ou}p=?oT#8s{FyPKlIx_>@u}iJc#|nuJ^05O9Qtj>5iH%V}bL zz~yo$!=E^3HVvr>0HGOkhi~&LxRCc(>me;=`3bvHnt)kR_LUyPUr`z^SC7SzjOCY( z>aubH@T?Z+(Os$y2$GX_TsNkmG-1N_Mj>eB89(d_!i8UkM&RzKa3PwMGVI24ICu+L z)I<*kYelo+pW|QlPM@dj5?;IUjEm&!Ye&@Na>T(JaZGE|Zo;a`Ne7ve7-Bst^$PWe@jYEvZ7hj4 zipDt2ILa+6V@boOlT1m;R$fL0tTvXKfeFh78Fk_P8qZb|GuFs5fYM>L86bWbGWZV@qQi zTJkUr8aMSH8K(73AW$5i!Uz7zt##C04oTCTMy7ZvLH&<_Qwzh#jb@43igT5o^Nub7 zB{>g;tl7&}S(ho1n5XaCTG?YO5!EbqF*n8^b23%mOhcBc{=%6dQ{T99tZg8i!dD(< z(n@-Xb&XT!zc?< z;;`zG#n7MyKzS^xdgPY@N=fERrw z^MX_q5(q>?x#L~}Zp;nd|yzL)a0T3G5jSvaPChNd39-z-3Yx*Kv|HCaAI<>*Qcx0L!(JHw;dHr=gNdi$Q0 zp*?OJj$hFKNnEe+ZSIk&*u>a(fAPSn%3zzy zq_bNbtQKIfw57C_V%3tRqi%&E<-JD~H(vhxMtP;OzogkZ>CnB&Rq3pPqp7I=!%DZDHF!uT0eeZ=FO!JOt`lA_ex()Y?qjM`b7%C^MA#6w z3DN@NNhHD7p=Chz`e+;^0_C-UE-9cF119kO4zK`P1Y{BTj}S5gzLqh*Ge&8{{DeCZ z_tdf7n= zA$5%|dn5JE)YozI3Qk=Z`EKhTsqZgR*uoJWI%D-^X3DnoR){G{ihQ9REzeGLz z@gOc*cSBZ6^MRdX({cmz;TqNp)}zRXuuVcOYeL@LjtcT0vGP9b6lcFt48foZ-(d$% z6o#Sizj+rZV17Y6+udE<`ySu+;IpxLs0FrAbINiFY}PYu%<_pn5ppy581$R>R(|Ii z>O_Z0r2C#&%@i4}cr~{{EsYFBblA_oH(YlfoNWpn0!hv6j_p#Ld33^~g{&Un<>mFy zT#Osf1&20bu3N|FpU=Wbg}L-M5!Vi;8KNuJjvy?QE=Sc<81Y z(Qo64Fm=E}-b5#gkDbe%1dHs)|ER4t!B4_&=C*y!LfOHWZp;>@hF4I}ueb`Vs++H# z{01E~o!-NL1Ahue+nJzz(d}9%pxy`7wBFZW>T|v{pL2RZ<0aQ++x&UAxI-R@>>0dAFaF~H-eKd?ZH&=G|Tv>)&kyxlw;!xyXnI#)Zs)hFY(;OtByidV%( ziw4J}bEKXS+L|7@D+fMNuj#=hHs!)kzRl4qq?u5z0vsV)+#A?AOm656-Dx22`=P3B zX00q?3L`ejjB9+p&tp3X#Z1x1YK8RE;_>*){!dVkXhn?Uva>@K+vnviPGBBB4N@uQ z2x2ToFlolo1_JuGx_7+5iQRxa(7pyWNPH%;RER#Q^*QqzEHtVQ>nh$Wpw9>fgQfw_ z2T-H+R0f3*;TzOuy02SQQ|eXGVRVmo@QBZ7S7zTN#atKc7lxs)zQo8~@)sht!N`}2 zMZhWm=85i&&v;#0r5FRQNh_eJ^yFHIvBiLeqtLJ-i1v-XSYsM;bDN?fr@_>0!Yg&u zU-NqPV^~IoL=EYXBrfHGaNAArXvoH z5dn&ju3*)y5nUEOy|!)j;EwPMo6_jdy!DTyiX5B4$hO_ue@Rnf0n6*y8(90hPZ3MaFo=rx31>` z!)5J3A#fF!EujCimmwbjt}bg+hPZSuHQ+S_2~_$aJq{py1OHGk?k4sfg6hhbwe8n{ z!4TxZ2caB*7bUVVU{?o#E{GBlV0{0NO9GX30Qrd$@gfqd7EmiBAHOpIT_tW_7mlON z0r_8GAROTUZ4Z#wU Date: Sun, 26 Mar 2023 16:29:21 +0000 Subject: [PATCH 10/11] Use .cjs extension instead of package.json for CJS export --- .npmignore | 3 +-- bin/build-helmet.js | 7 +------ package.json | 4 ++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/.npmignore b/.npmignore index 9938590..5b45936 100644 --- a/.npmignore +++ b/.npmignore @@ -8,7 +8,6 @@ !README.md !SECURITY.md -!dist/cjs/cjs.js -!dist/cjs/package.json +!dist/cjs/cjs.cjs !dist/esm/esm.js !dist/**/*.d.ts diff --git a/bin/build-helmet.js b/bin/build-helmet.js index 3da5f8a..dfdc2d4 100755 --- a/bin/build-helmet.js +++ b/bin/build-helmet.js @@ -14,7 +14,7 @@ const esmDistPath = path.join(esmDistDir, "esm.js"); const esmTypesTempPath = path.join(esmDistDir, "tmp-esm-index.d.ts"); const esmTypesDistPath = path.join(esmDistDir, "esm.d.ts"); const commonJsDistDir = path.join(distPath, "cjs"); -const commonJsDistPath = path.join(commonJsDistDir, "cjs.js"); +const commonJsDistPath = path.join(commonJsDistDir, "cjs.cjs"); const commonJsTypesTempPath = path.join( commonJsDistDir, "tmp-commonjs-index.d.ts" @@ -48,11 +48,6 @@ const compileCommonjs = () => } ); - await fs.writeFile( - path.join(commonJsDistDir, "package.json"), - JSON.stringify({ type: "commonjs" }) - ); - await fs.rename(commonJsTypesTempPath, commonJsTypesDistPath); }); diff --git a/package.json b/package.json index 9dabdf0..8b367dc 100644 --- a/package.json +++ b/package.json @@ -56,13 +56,13 @@ }, "license": "MIT", "type": "module", - "main": "./dist/cjs/cjs.js", + "main": "./dist/cjs/cjs.cjs", "module": "./dist/esm/esm.js", "types": "./dist/esm/esm.d.ts", "exports": { ".": { "import": "./dist/esm/esm.js", - "require": "./dist/cjs/cjs.js", + "require": "./dist/cjs/cjs.cjs", "types": "./dist/esm/esm.d.ts" } } From 70e79d879766ae4e10927c40763b24ec6a838a6e Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Sat, 8 Apr 2023 16:01:22 +0000 Subject: [PATCH 11/11] Rewrite build system --- .eslintignore | 1 - .gitignore | 3 - .npmignore | 13 - .prettierignore | 1 - .prettierrc-dist.cjs | 11 - MAINTAINER_README.md | 44 - bin/.eslintrc.json | 5 - bin/build-helmet.js | 61 - bin/build-middleware-package.js | 105 - bin/clean.js | 10 - bin/helpers.js | 69 - build/build-package.ts | 333 ++ build/helpers.ts | 19 + index.ts | 7 - jest.config.js | 9 +- middlewares/content-security-policy/index.ts | 2 - package-lock.json | 3381 +++++++++++------ package.json | 53 +- test/project-setups.test.ts | 24 +- test/project-setups/.gitignore | 1 + .../javascript-commonjs/test.js | 2 +- test/project-setups/javascript-esm/test.js | 2 +- .../package.json | 7 + .../test.ts | 2 +- .../typescript-commonjs/test.ts | 2 +- .../typescript-esnext/package.json | 7 + test/project-setups/typescript-esnext/test.ts | 42 + .../package.json | 1 - .../typescript-nodenext/test.ts | 42 + tsconfig-commonjs.json | 4 - tsconfig-esm.json | 4 - tsconfig-types.json | 6 - tsconfig.json | 3 +- 33 files changed, 2824 insertions(+), 1452 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .npmignore delete mode 100644 .prettierrc-dist.cjs delete mode 100644 MAINTAINER_README.md delete mode 100644 bin/.eslintrc.json delete mode 100755 bin/build-helmet.js delete mode 100755 bin/build-middleware-package.js delete mode 100755 bin/clean.js delete mode 100644 bin/helpers.js create mode 100644 build/build-package.ts create mode 100644 build/helpers.ts create mode 100644 test/project-setups/.gitignore create mode 100644 test/project-setups/typescript-commonjs-nodenext-moduleResolution/package.json rename test/project-setups/{typescript-esm => typescript-commonjs-nodenext-moduleResolution}/test.ts (94%) create mode 100644 test/project-setups/typescript-esnext/package.json create mode 100644 test/project-setups/typescript-esnext/test.ts rename test/project-setups/{typescript-esm => typescript-nodenext}/package.json (89%) create mode 100644 test/project-setups/typescript-nodenext/test.ts delete mode 100644 tsconfig-commonjs.json delete mode 100644 tsconfig-esm.json delete mode 100644 tsconfig-types.json diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 178135c..0000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -/dist/ diff --git a/.gitignore b/.gitignore index 62d122a..8a36b4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,3 @@ /node_modules/ -/dist/ -/tmp-commonjs-index.ts - /coverage/ diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 5b45936..0000000 --- a/.npmignore +++ /dev/null @@ -1,13 +0,0 @@ -# `package.json` is published to npm, so everything we add is included in the installed tarball. -# Removing the `files` key and replacing it with this `.npmignore` saves some bytes, which should improve installation performance slightly. - -* - -!CHANGELOG.md -!LICENSE -!README.md -!SECURITY.md - -!dist/cjs/cjs.cjs -!dist/esm/esm.js -!dist/**/*.d.ts diff --git a/.prettierignore b/.prettierignore index 81114aa..7053dc1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1 @@ -/dist/ /coverage/ diff --git a/.prettierrc-dist.cjs b/.prettierrc-dist.cjs deleted file mode 100644 index 5147b98..0000000 --- a/.prettierrc-dist.cjs +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - // This shaves a few bytes off the built files while still keeping them readable. - // When testing on 4f550aab7ccf00a6dfe686d57195268b3ef06b1a, it reduces the tarball size by about 100 bytes. - // This should help installation performance slightly. - printWidth: 2000, - trailingComma: "none", - useTabs: true, - arrowParens: "avoid", - bracketSpacing: false, - semi: false, -}; diff --git a/MAINTAINER_README.md b/MAINTAINER_README.md deleted file mode 100644 index 6822b7f..0000000 --- a/MAINTAINER_README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Helmet maintainer readme - -These are notes for any maintainers of Helmet...which is currently just [Evan Hahn](https://evanhahn.com/). These notes may be of interest to future maintainers, contributors, or people making forks. - -## Releasing Helmet - -tl;dr: - -- `npm publish` builds and releases the `helmet` package -- `npm run build-middleware-package -- $MIDDLEWARE_NAME` builds `$MIDDLEWARE_NAME` and puts it in a temporary directory to be published - -Helmet releases have the following goals: - -- Users should be able to import the package with CommonJS. The following code snippet should work as expected: - - ```js - const helmet = require("helmet"); - app.use(helmet()); - app.use(helmet.ieNoOpen()); - ``` - -- Users should be able to import the package with ECMAScript modules. The default export should be a function, and the rest of the functions should be available too. The following snippets should work as expected: - - ```js - import helmet from "helmet"; - app.use(helmet()); - ``` - - ```js - import { ieNoOpen } from "helmet"; - app.use(ieNoOpen()); - ``` - -- TypeScript users should be able to import Helmet and various exported types. - - ```ts - import helmet, { HelmetOptions, ContentSecurityPolicyOptions } from "helmet"; - ``` - -- Some middlewares have their own npm packages, such as `helmet-csp` or `frameguard`. - -- `helmet` should have no production dependencies, including middleware packages, to simplify installation. - -To that end, there are special scripts for building `helmet` and for building middleware packages. diff --git a/bin/.eslintrc.json b/bin/.eslintrc.json deleted file mode 100644 index 22abc7f..0000000 --- a/bin/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "env": { - "es6": true - } -} diff --git a/bin/build-helmet.js b/bin/build-helmet.js deleted file mode 100755 index dfdc2d4..0000000 --- a/bin/build-helmet.js +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env node -import { promises as fs } from "fs"; -import * as path from "path"; -import { fileURLToPath } from "url"; -import rollupTypescript from "@rollup/plugin-typescript"; -import { withCommonJsFile, withEsmFile, writeRollup } from "./helpers.js"; - -const thisPath = fileURLToPath(import.meta.url); -const rootPath = path.join(path.dirname(thisPath), ".."); -const distPath = path.join(rootPath, "dist"); -const esmSourcePath = path.join(rootPath, "index.ts"); -const esmDistDir = path.join(distPath, "esm"); -const esmDistPath = path.join(esmDistDir, "esm.js"); -const esmTypesTempPath = path.join(esmDistDir, "tmp-esm-index.d.ts"); -const esmTypesDistPath = path.join(esmDistDir, "esm.d.ts"); -const commonJsDistDir = path.join(distPath, "cjs"); -const commonJsDistPath = path.join(commonJsDistDir, "cjs.cjs"); -const commonJsTypesTempPath = path.join( - commonJsDistDir, - "tmp-commonjs-index.d.ts" -); -const commonJsTypesDistPath = path.join(commonJsDistDir, "cjs.d.ts"); - -const compileEsm = () => - withEsmFile(esmSourcePath, async (esmTempPath) => { - await fs.mkdir(esmDistDir, { recursive: true }); - await writeRollup( - { - input: esmTempPath, - plugins: [rollupTypescript({ tsconfig: "./tsconfig-esm.json" })], - }, - { file: esmDistPath } - ); - await fs.rename(esmTypesTempPath, esmTypesDistPath); - }); - -const compileCommonjs = () => - withCommonJsFile(esmSourcePath, async (commonJsTempPath) => { - await writeRollup( - { - input: commonJsTempPath, - plugins: [rollupTypescript({ tsconfig: "./tsconfig-commonjs.json" })], - }, - { - exports: "named", - file: commonJsDistPath, - format: "cjs", - } - ); - - await fs.rename(commonJsTypesTempPath, commonJsTypesDistPath); - }); - -async function main() { - await Promise.all([compileEsm(), compileCommonjs()]); -} - -main(process.argv).catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/bin/build-middleware-package.js b/bin/build-middleware-package.js deleted file mode 100755 index 08230f0..0000000 --- a/bin/build-middleware-package.js +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env node -import * as path from "path"; -import { promises as fs } from "fs"; -import * as os from "os"; -import * as crypto from "crypto"; -import { fileURLToPath } from "url"; -import rollupTypescript from "@rollup/plugin-typescript"; -import { writeRollup, withCommonJsFile } from "./helpers.js"; - -const thisPath = fileURLToPath(import.meta.url); -const rootPath = path.join(path.dirname(thisPath), ".."); -const getRootFilePath = (filename) => path.join(rootPath, filename); - -const readJson = async (path) => JSON.parse(await fs.readFile(path)); - -async function main(argv) { - if (argv.length !== 3) { - throw new Error("Incorrect number of arguments"); - } - - const stagingDirectoryPath = path.join( - os.tmpdir(), - `helmet-middleware-release-${argv[2]}-${crypto - .randomBytes(8) - .toString("hex")}` - ); - - const getSourceFilePath = (filename) => - path.join(rootPath, "middlewares", argv[2], filename); - const getDistFilePath = (filename) => - path.join(rootPath, "dist", "middlewares", argv[2], filename); - const getStagingFilePath = (filename) => - path.join(stagingDirectoryPath, filename); - - const packageJson = { - author: "Adam Baldwin (https://evilpacket.net)", - contributors: ["Evan Hahn (https://evanhahn.com)"], - license: "MIT", - homepage: "https://helmetjs.github.io/", - bugs: { - url: "https://github.com/helmetjs/helmet/issues", - email: "me@evanhahn.com", - }, - repository: { - type: "git", - url: "git://github.com/helmetjs/helmet.git", - }, - engines: { - node: ">=14.0.0", - }, - files: ["CHANGELOG.md", "LICENSE", "README.md", "index.js", "index.d.ts"], - main: "index.js", - typings: "index.d.ts", - exports: { - ".": { - require: "./index.js", - types: "./index.d.ts", - }, - }, - ...(await readJson(getSourceFilePath("package-overrides.json"))), - }; - - await fs.mkdir(stagingDirectoryPath, { recursive: true, mode: 0o700 }); - await Promise.all([ - withCommonJsFile(getSourceFilePath("index.ts"), (commonJsSourcePath) => - writeRollup( - { - input: commonJsSourcePath, - plugins: [rollupTypescript()], - }, - { - exports: "default", - file: getStagingFilePath("index.js"), - format: "cjs", - } - ) - ), - fs.writeFile( - getStagingFilePath("package.json"), - JSON.stringify(packageJson) - ), - fs.copyFile( - getSourceFilePath("README.md"), - getStagingFilePath("README.md") - ), - fs.copyFile( - getSourceFilePath("CHANGELOG.md"), - getStagingFilePath("CHANGELOG.md") - ), - fs.copyFile(getRootFilePath("LICENSE"), getStagingFilePath("LICENSE")), - fs.copyFile( - getDistFilePath("index.d.ts"), - getStagingFilePath("index.d.ts") - ), - ]); - - console.log( - `Staged ${packageJson.name}@${packageJson.version} in ${stagingDirectoryPath}` - ); -} - -main(process.argv).catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/bin/clean.js b/bin/clean.js deleted file mode 100755 index f76194f..0000000 --- a/bin/clean.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -// This lets us remove files on all platforms. Notably, `rm` is missing on Windows. -import * as path from "path"; -import * as fs from "fs"; -import { fileURLToPath } from "url"; - -const thisPath = fileURLToPath(import.meta.url); -const distPath = path.join(path.dirname(thisPath), "..", "dist"); - -fs.rmSync(distPath, { recursive: true, force: true }); diff --git a/bin/helpers.js b/bin/helpers.js deleted file mode 100644 index 4650785..0000000 --- a/bin/helpers.js +++ /dev/null @@ -1,69 +0,0 @@ -import * as path from "path"; -import { promises as fs } from "fs"; -import { rollup } from "rollup"; - -export async function writeRollup(inputOptions, outputOptions) { - const bundle = await rollup(inputOptions); - await bundle.write(outputOptions); - await bundle.close(); -} - -export async function withEsmFile(esmSourcePath, fn) { - const esmTempPath = path.join( - path.dirname(esmSourcePath), - "tmp-esm-index.ts" - ); - - const lines = (await fs.readFile(esmSourcePath, "utf8")).split(/\r?\n/); - const startLineCjsFence = lines.findIndex((line) => - line.includes("!helmet-start-of-commonjs-exports") - ); - const endLineCjsFence = lines.findIndex((line) => - line.includes("!helmet-end-of-commonjs-exports") - ); - const lineCount = endLineCjsFence - startLineCjsFence + 2; - lines.splice(startLineCjsFence, lineCount); - - const startLineEsmFence = lines.findIndex((line) => - line.includes("!helmet-start-of-esm-exports") - ); - lines.splice(startLineEsmFence, 1); - - const endLineEsmFence = lines.findIndex((line) => - line.includes("!helmet-end-of-esm-exports") - ); - lines.splice(endLineEsmFence, 1); - - try { - await fs.writeFile(esmTempPath, lines.join("\n")); - - await fn(esmTempPath); - } finally { - await fs.unlink(esmTempPath); - } -} - -export async function withCommonJsFile(esmSourcePath, fn) { - const commonJsTempPath = path.join( - path.dirname(esmSourcePath), - "tmp-commonjs-index.ts" - ); - - const lines = (await fs.readFile(esmSourcePath, "utf8")).split(/\r?\n/); - const startLine = lines.findIndex((line) => - line.includes("!helmet-start-of-commonjs-exports") - ); - const endLine = lines.findIndex((line) => - line.includes("!helmet-end-of-commonjs-exports") - ); - lines.splice(startLine, 1); - const resultLines = lines.slice(0, endLine - 1); - - try { - await fs.writeFile(commonJsTempPath, resultLines.join("\n")); - - await fn(commonJsTempPath); - } finally { - await fs.unlink(commonJsTempPath); - } -} diff --git a/build/build-package.ts b/build/build-package.ts new file mode 100644 index 0000000..77b5be5 --- /dev/null +++ b/build/build-package.ts @@ -0,0 +1,333 @@ +import * as path from "path"; +import * as os from "os"; +import * as fsOriginal from "fs"; +import * as zlib from "zlib"; +import { fileURLToPath } from "url"; +import { pipeline } from "stream"; +import { promisify } from "util"; +import { RollupBuild, rollup } from "rollup"; +import rollupTypescript from "@rollup/plugin-typescript"; +import rollupDts from "rollup-plugin-dts"; +import prettier from "prettier"; +import zopfli from "node-zopfli"; +import { npm } from "./helpers.js"; + +const fs = fsOriginal.promises; +const pipe = promisify(pipeline); + +// This shaves a few bytes off the built files while still keeping them readable. +// When testing on 4f550aab7ccf00a6dfe686d57195268b3ef06b1a, it reduces the tarball size by about 100 bytes. +// This should help installation performance slightly. +const PRETTIER_PREPACK_CRUSH_OPTIONS: prettier.Options = { + printWidth: 2000, + trailingComma: "none", + useTabs: true, + arrowParens: "avoid", + bracketSpacing: false, + semi: false, +}; + +const rootDir = path.join(path.dirname(fileURLToPath(import.meta.url)), ".."); +const testFiles = path.join(rootDir, "test", "**"); + +/** + * Build a Helmet package into a tarball ready to be published with `npm publish`. + */ +export async function buildAndPack( + middlewareToBuild?: string +): Promise { + let entry: string; + let esm: boolean; + let packageOverrides: Record; + let filesToCopy: ReadonlyArray; + + if (middlewareToBuild) { + const middlewareDir = path.join(rootDir, "middlewares", middlewareToBuild); + entry = path.join(middlewareDir, "index.ts"); + esm = false; + packageOverrides = await readJson( + path.join(middlewareDir, "package-overrides.json") + ); + filesToCopy = [ + path.join(rootDir, "LICENSE"), + path.join(middlewareDir, "README.md"), + path.join(middlewareDir, "CHANGELOG.md"), + ]; + } else { + entry = path.join(rootDir, "index.ts"); + esm = true; + packageOverrides = {}; + filesToCopy = [ + path.join(rootDir, "LICENSE"), + path.join(rootDir, "README.md"), + path.join(rootDir, "CHANGELOG.md"), + path.join(rootDir, "SECURITY.md"), + ]; + } + + const distDir = await temporaryDirectory(); + + await Promise.all([ + buildCjs({ entry, distDir }), + ...(esm ? [buildMjs({ entry, distDir })] : []), + buildTypes({ entry, distDir }), + buildPackageJson({ esm, packageOverrides, distDir }), + copyStaticFiles({ filesToCopy, distDir }), + ]); + + await prePackCrush(distDir); + + const npmPackedTarball = await pack(distDir); + + const crushedTarball = await postPackCrush(npmPackedTarball); + + return crushedTarball; +} + +function temporaryDirectory(): Promise { + return fs.mkdtemp(path.join(os.tmpdir(), "helmet")); +} + +async function buildCjs({ + entry, + distDir, +}: Readonly<{ entry: string; distDir: string }>) { + const outputPath = path.join(distDir, "index.cjs"); + + console.log(`Building ${outputPath}...`); + + const bundle = await rollupForJs(entry); + + await bundle.write({ + file: outputPath, + exports: "named", + format: "cjs", + generatedCode: "es2015", + outro: "module.exports = exports.default;", + }); + + await bundle.close(); + + console.log(`Built ${outputPath}.`); +} + +async function buildMjs({ + entry, + distDir, +}: Readonly<{ entry: string; distDir: string }>) { + const outputPath = path.join(distDir, "index.mjs"); + + console.log(`Building ${outputPath}...`); + + const bundle = await rollupForJs(entry); + + await bundle.write({ + file: outputPath, + format: "esm", + generatedCode: "es2015", + }); + + await bundle.close(); + + console.log(`Built ${outputPath}.`); +} + +function rollupForJs(entry: string): Promise { + return rollup({ + input: entry, + plugins: [ + rollupTypescript({ + exclude: [testFiles], + }), + ], + }); +} + +async function buildTypes({ + entry, + distDir, +}: Readonly<{ entry: string; distDir: string }>) { + const outputPath = path.join(distDir, "index.d.ts"); + + console.log(`Building ${outputPath}...`); + + const bundle = await rollup({ + input: entry, + external: ["http"], + plugins: [rollupDts()], + }); + + await bundle.write({ + file: outputPath, + format: "esm", + }); + + await bundle.close(); + + console.log(`Built ${outputPath}.`); +} + +async function buildPackageJson({ + esm, + packageOverrides, + distDir, +}: Readonly<{ + esm: boolean; + packageOverrides: Readonly>; + distDir: string; +}>) { + const outputPath = path.join(distDir, "package.json"); + + console.log(`Building ${outputPath}...`); + + const devPackageJson = await readJson(path.join(rootDir, "package.json")); + + const packageJson = { + name: "helmet", + version: devPackageJson.version, + author: "Adam Baldwin (https://evilpacket.net)", + contributors: ["Evan Hahn (https://evanhahn.com)"], + homepage: "https://helmetjs.github.io/", + bugs: { + url: "https://github.com/helmetjs/helmet/issues", + email: "me@evanhahn.com", + }, + repository: { + type: "git", + url: "git://github.com/helmetjs/helmet.git", + }, + license: "MIT", + exports: { + ".": { + ...(esm + ? { + import: { + types: "./index.d.ts", + default: "./index.mjs", + }, + } + : {}), + require: { + types: "./index.d.ts", + default: "./index.cjs", + }, + }, + }, + ...packageOverrides, + }; + + await fs.writeFile(outputPath, JSON.stringify(packageJson)); + + console.log(`Built ${outputPath}.`); +} + +async function readJson(path: fsOriginal.PathLike): Promise { + return JSON.parse(await fs.readFile(path, "utf8")); +} + +async function copyStaticFiles({ + filesToCopy, + distDir, +}: Readonly<{ filesToCopy: ReadonlyArray; distDir: string }>) { + await Promise.all( + filesToCopy.map(async (source) => { + const basename = path.basename(source); + const dest = path.join(distDir, basename); + console.log(`Copying ${source} to ${dest}...`); + await fs.copyFile(source, dest); + console.log(`Copied ${source} to ${dest}.`); + }) + ); +} + +async function prePackCrush(distDir: string): Promise { + const files = (await fs.readdir(distDir)).map((file) => + path.join(distDir, file) + ); + + await Promise.all( + files.map(async (file) => { + const prettierInfo = await prettier.getFileInfo(file); + if (!prettierInfo.inferredParser) { + return; + } + + console.log(`Crushing ${file}...`); + + const oldContents = await fs.readFile(file, { encoding: "utf8" }); + + const newContents = await prettier.format(oldContents, { + filepath: file, + ...PRETTIER_PREPACK_CRUSH_OPTIONS, + }); + + await fs.writeFile(file, newContents, { encoding: "utf8" }); + + console.log(`Crushed ${file}.`); + }) + ); +} + +async function pack(distDir: string): Promise { + await npm(["pack"], { cwd: distDir }); + + const tempDirFiles = await fs.readdir(distDir); + const tarballName = tempDirFiles.find( + (file) => file.startsWith("helmet-") && file.endsWith(".tgz") + ); + if (!tarballName) { + throw new Error( + "Couldn't find helmet tarball in temp directory. Build is not set up correctly" + ); + } + + return path.join(distDir, tarballName); +} + +async function postPackCrush(originalTarGz: string): Promise { + const originalSize = (await fs.stat(originalTarGz)).size; + console.log(`Crushing ${originalTarGz} (size: ${originalSize})...`); + + const crushedTarGz = originalTarGz.replace(".tgz", ".crushed.tgz"); + const readOriginal = fsOriginal.createReadStream(originalTarGz); + const gunzip = zlib.createGunzip(); + const gzip = zopfli.createGzip({ numiterations: 15 }); + const writeCrushed = fsOriginal.createWriteStream(crushedTarGz); + + await pipe(readOriginal, gunzip, gzip, writeCrushed); + + const crushedSize = (await fs.stat(crushedTarGz)).size; + const savings = originalSize - crushedSize; + + if (savings < 0) { + console.log("Original tarball was smaller"); + return originalTarGz; + } else { + const ratio = crushedSize / originalSize; + console.log( + `Crushed into ${crushedTarGz}. Size: ${crushedSize}. Savings: ${savings} bytes (result is ${Math.round( + ratio * 100 + )}% the size))` + ); + return crushedTarGz; + } +} + +const isMain = + import.meta.url.startsWith("file:") && + process.argv[1] === fileURLToPath(import.meta.url); +if (isMain) { + if (process.argv.length > 3) { + throw new Error("Too many arguments"); + } + + const middlewareToBuild = process.argv[2]; + buildAndPack(middlewareToBuild) + .then((finalTarballPath) => { + console.log(finalTarballPath); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/build/helpers.ts b/build/helpers.ts new file mode 100644 index 0000000..b6454cf --- /dev/null +++ b/build/helpers.ts @@ -0,0 +1,19 @@ +import * as childProcess from "child_process"; + +export const npm = ( + args: ReadonlyArray, + { cwd }: Readonly<{ cwd: string }> +): Promise => + new Promise((resolve, reject) => { + const proc = childProcess.spawn("npm", args, { + cwd, + stdio: ["inherit", "ignore", "inherit"], + }); + proc.on("close", (code) => { + if (code === 0) { + resolve(); + } else { + reject(new Error(`npm ${args.join(" ")} exited with code ${code}`)); + } + }); + }); diff --git a/index.ts b/index.ts index e6e3a0f..9d97253 100644 --- a/index.ts +++ b/index.ts @@ -271,12 +271,6 @@ const helmet: Helmet = Object.assign( export default helmet; -// !helmet-start-of-commonjs-exports -exports = helmet; -module.exports = helmet; -// !helmet-end-of-commonjs-exports - -// !helmet-start-of-esm-exports export { contentSecurityPolicy, crossOriginEmbedderPolicy, @@ -294,4 +288,3 @@ export { xPoweredBy as hidePoweredBy, xXssProtection as xssFilter, }; -// !helmet-end-of-esm-exports diff --git a/jest.config.js b/jest.config.js index de10448..939bb3c 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,7 +9,6 @@ export default { }, }, errorOnDeprecated: true, - preset: "ts-jest", resetMocks: true, testEnvironment: "node", testRegex: "/test/.*\\.test\\.[jt]s", @@ -18,6 +17,12 @@ export default { "^(\\.{1,2}/.*)\\.js$": "$1", }, transform: { - "^.+\\.ts$": ["ts-jest", { useESM: true }], + "^.+\\.ts$": [ + "ts-jest", + { + useESM: true, + tsconfig: { module: "nodenext" }, + }, + ], }, }; diff --git a/middlewares/content-security-policy/index.ts b/middlewares/content-security-policy/index.ts index e9fa8d7..9522513 100644 --- a/middlewares/content-security-policy/index.ts +++ b/middlewares/content-security-policy/index.ts @@ -243,6 +243,4 @@ contentSecurityPolicy.dangerouslyDisableDefaultSrc = export default contentSecurityPolicy; -// !helmet-end-of-commonjs - export { getDefaultDirectives, dangerouslyDisableDefaultSrc }; diff --git a/package-lock.json b/package-lock.json index dd96847..0cad64e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,23 +7,25 @@ "": { "name": "helmet", "version": "6.0.1", - "license": "MIT", "devDependencies": { - "@rollup/plugin-typescript": "^11.0.0", + "@rollup/plugin-typescript": "^11.1.0", "@types/connect": "^3.4.35", - "@types/jest": "^29.4.0", + "@types/jest": "^29.5.0", + "@types/node-zopfli": "^2.0.2", "@types/supertest": "^2.0.12", - "@typescript-eslint/eslint-plugin": "^5.51.0", - "@typescript-eslint/parser": "^5.51.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", "connect": "^3.7.0", - "eslint": "^8.33.0", - "jest": "^29.4.2", - "prettier": "^2.8.3", - "rollup": "^3.14.0", + "eslint": "^8.38.0", + "jest": "^29.5.0", + "node-zopfli": "^2.1.4", + "prettier": "^2.8.7", + "rollup": "^3.20.2", + "rollup-plugin-dts": "^5.3.0", "supertest": "^6.3.3", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "typescript": "^4.9.5" + "typescript": "^5.0.4" }, "engines": { "node": ">=14.0.0" @@ -43,9 +45,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" @@ -55,9 +57,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", "dev": true, "engines": { "node": ">=6.9.0" @@ -109,13 +111,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.21.4", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -137,14 +140,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -154,6 +158,15 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -163,6 +176,12 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", @@ -173,13 +192,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -210,9 +229,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -220,9 +239,9 @@ "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "engines": { "node": ">=6.9.0" @@ -280,9 +299,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -388,9 +407,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -460,12 +479,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -562,12 +581,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -577,33 +596,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", + "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "@babel/parser": "^7.21.4", + "@babel/types": "^7.21.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -621,9 +640,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -662,15 +681,39 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -685,6 +728,15 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -827,16 +879,16 @@ } }, "node_modules/@jest/console": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.2.tgz", - "integrity": "sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0" }, "engines": { @@ -844,37 +896,37 @@ } }, "node_modules/@jest/core": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.2.tgz", - "integrity": "sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", "dev": true, "dependencies": { - "@jest/console": "^29.4.2", - "@jest/reporters": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.4.2", - "jest-config": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-resolve-dependencies": "^29.4.2", - "jest-runner": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", - "jest-watcher": "^29.4.2", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", "micromatch": "^4.0.4", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -891,88 +943,88 @@ } }, "node_modules/@jest/environment": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.2.tgz", - "integrity": "sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.2" + "jest-mock": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.2.tgz", - "integrity": "sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", "dev": true, "dependencies": { - "expect": "^29.4.2", - "jest-snapshot": "^29.4.2" + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.2.tgz", - "integrity": "sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.2" + "jest-get-type": "^29.4.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.2.tgz", - "integrity": "sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.2", - "jest-mock": "^29.4.2", - "jest-util": "^29.4.2" + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.2.tgz", - "integrity": "sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.4.2", - "@jest/expect": "^29.4.2", - "@jest/types": "^29.4.2", - "jest-mock": "^29.4.2" + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.2.tgz", - "integrity": "sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -985,9 +1037,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1006,9 +1058,9 @@ } }, "node_modules/@jest/schemas": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.2.tgz", - "integrity": "sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", "dev": true, "dependencies": { "@sinclair/typebox": "^0.25.16" @@ -1018,9 +1070,9 @@ } }, "node_modules/@jest/source-map": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.2.tgz", - "integrity": "sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.15", @@ -1032,13 +1084,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.2.tgz", - "integrity": "sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", "dev": true, "dependencies": { - "@jest/console": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1047,14 +1099,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.2.tgz", - "integrity": "sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", "dev": true, "dependencies": { - "@jest/test-result": "^29.4.2", + "@jest/test-result": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", + "jest-haste-map": "^29.5.0", "slash": "^3.0.0" }, "engines": { @@ -1062,22 +1114,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.2.tgz", - "integrity": "sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1088,12 +1140,12 @@ } }, "node_modules/@jest/types": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.2.tgz", - "integrity": "sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.2", + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -1187,9 +1239,9 @@ } }, "node_modules/@rollup/plugin-typescript": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz", - "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz", + "integrity": "sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", @@ -1235,9 +1287,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.25.21", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", - "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -1378,9 +1430,9 @@ } }, "node_modules/@types/jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", - "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1399,6 +1451,15 @@ "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==", "dev": true }, + "node_modules/@types/node-zopfli": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/node-zopfli/-/node-zopfli-2.0.2.tgz", + "integrity": "sha512-9/D0UjR+g7+4aWZSewadVr17ilvmWmPU0kD6oJde0fj1mJ5LstW2gDmt2sOSYNn/qzDlWltKd05p6cYT78g/kQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -1452,19 +1513,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", - "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", + "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/type-utils": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/type-utils": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, @@ -1486,14 +1547,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", - "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz", + "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "debug": "^4.3.4" }, "engines": { @@ -1513,13 +1574,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", - "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz", + "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0" + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1530,13 +1591,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", - "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz", + "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/typescript-estree": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1557,9 +1618,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", - "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz", + "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1570,13 +1631,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", - "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz", + "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1597,18 +1658,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", - "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz", + "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "engines": { @@ -1623,12 +1684,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", - "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz", + "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/types": "5.57.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1749,6 +1810,22 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1783,15 +1860,15 @@ "dev": true }, "node_modules/babel-jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.2.tgz", - "integrity": "sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", "dev": true, "dependencies": { - "@jest/transform": "^29.4.2", + "@jest/transform": "^29.5.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.2", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -1820,9 +1897,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.2.tgz", - "integrity": "sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -1858,12 +1935,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.2.tgz", - "integrity": "sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.4.2", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -1879,6 +1956,51 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1902,9 +2024,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "funding": [ { @@ -1917,10 +2039,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "bin": { "browserslist": "cli.js" @@ -1950,6 +2072,30 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -1988,9 +2134,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", + "version": "1.0.30001473", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz", + "integrity": "sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==", "dev": true, "funding": [ { @@ -2000,6 +2146,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -2028,6 +2178,12 @@ "node": ">=10" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "node_modules/ci-info": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", @@ -2057,6 +2213,15 @@ "node": ">=12" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2067,6 +2232,15 @@ "node": ">= 0.12.0" } }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -2103,6 +2277,12 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -2145,6 +2325,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2157,6 +2343,12 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -2194,12 +2386,33 @@ } } }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2207,14 +2420,26 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2224,6 +2449,24 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2253,9 +2496,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.2.tgz", - "integrity": "sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2324,6 +2567,15 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2361,12 +2613,15 @@ } }, "node_modules/eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -2377,10 +2632,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -2401,7 +2655,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -2429,40 +2682,16 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-scope": { @@ -2488,14 +2717,14 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2518,9 +2747,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -2615,17 +2844,26 @@ "node": ">= 0.8.0" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/expect": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.2.tgz", - "integrity": "sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2" + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2822,6 +3060,12 @@ "url": "https://ko-fi.com/tunnckoCore/commissions" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2848,6 +3092,69 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2867,9 +3174,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -2901,6 +3208,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -2934,9 +3247,9 @@ } }, "node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3013,6 +3326,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -3037,17 +3356,37 @@ "node": ">=10.17.0" } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, @@ -3106,6 +3445,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3193,6 +3538,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3275,15 +3626,15 @@ } }, "node_modules/jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.2.tgz", - "integrity": "sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "dependencies": { - "@jest/core": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", "import-local": "^3.0.2", - "jest-cli": "^29.4.2" + "jest-cli": "^29.5.0" }, "bin": { "jest": "bin/jest.js" @@ -3301,9 +3652,9 @@ } }, "node_modules/jest-changed-files": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.2.tgz", - "integrity": "sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "dependencies": { "execa": "^5.0.0", @@ -3314,28 +3665,29 @@ } }, "node_modules/jest-circus": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.2.tgz", - "integrity": "sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", "dev": true, "dependencies": { - "@jest/environment": "^29.4.2", - "@jest/expect": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "p-limit": "^3.1.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -3344,21 +3696,21 @@ } }, "node_modules/jest-cli": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.2.tgz", - "integrity": "sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", "dev": true, "dependencies": { - "@jest/core": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -3378,31 +3730,31 @@ } }, "node_modules/jest-config": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.2.tgz", - "integrity": "sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.2", - "@jest/types": "^29.4.2", - "babel-jest": "^29.4.2", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.4.2", - "jest-environment-node": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-runner": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -3423,24 +3775,24 @@ } }, "node_modules/jest-diff": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.2.tgz", - "integrity": "sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.2", - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.2.tgz", - "integrity": "sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -3450,62 +3802,62 @@ } }, "node_modules/jest-each": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.2.tgz", - "integrity": "sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.2", - "jest-util": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.2.tgz", - "integrity": "sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", "dev": true, "dependencies": { - "@jest/environment": "^29.4.2", - "@jest/fake-timers": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.2", - "jest-util": "^29.4.2" + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.2.tgz", - "integrity": "sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.2.tgz", - "integrity": "sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.2", - "jest-util": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -3517,46 +3869,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.2.tgz", - "integrity": "sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.2.tgz", - "integrity": "sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.4.2", - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.2.tgz", - "integrity": "sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -3565,14 +3917,14 @@ } }, "node_modules/jest-mock": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.2.tgz", - "integrity": "sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-util": "^29.4.2" + "jest-util": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3596,26 +3948,26 @@ } }, "node_modules/jest-regex-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.2.tgz", - "integrity": "sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.2.tgz", - "integrity": "sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", + "jest-haste-map": "^29.5.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -3625,43 +3977,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.2.tgz", - "integrity": "sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", "dev": true, "dependencies": { - "jest-regex-util": "^29.4.2", - "jest-snapshot": "^29.4.2" + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.2.tgz", - "integrity": "sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", "dev": true, "dependencies": { - "@jest/console": "^29.4.2", - "@jest/environment": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.2", - "jest-environment-node": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-leak-detector": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-util": "^29.4.2", - "jest-watcher": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -3670,32 +4022,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.2.tgz", - "integrity": "sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.4.2", - "@jest/fake-timers": "^29.4.2", - "@jest/globals": "^29.4.2", - "@jest/source-map": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-mock": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", - "semver": "^7.3.5", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -3704,9 +4055,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.2.tgz", - "integrity": "sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -3715,23 +4066,22 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.4.2", + "expect": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "semver": "^7.3.5" }, "engines": { @@ -3739,12 +4089,12 @@ } }, "node_modules/jest-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.2.tgz", - "integrity": "sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -3756,17 +4106,17 @@ } }, "node_modules/jest-validate": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.2.tgz", - "integrity": "sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.2", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^29.4.2" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3785,18 +4135,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.2.tgz", - "integrity": "sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", "dev": true, "dependencies": { - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.4.2", + "jest-util": "^29.5.0", "string-length": "^4.0.1" }, "engines": { @@ -3804,13 +4154,13 @@ } }, "node_modules/jest-worker": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.2.tgz", - "integrity": "sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.4.2", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -4097,6 +4447,18 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4109,12 +4471,33 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4127,6 +4510,30 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -4134,9 +4541,35 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/node-zopfli": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/node-zopfli/-/node-zopfli-2.1.4.tgz", + "integrity": "sha512-5kxbPxNQHbORFBNNf083V7h0dTFy6+C1W4ZA4qTXjpCQqEMzxAQFAOfi6BlCmXAkC/+Vr8d6h0XOmdjvp+9FNw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "commander": "^3.0.0", + "defaults": "^1.0.3", + "node-addon-api": "^1.7.2", + "prebuild-install": "^5.3.5" + }, + "bin": { + "zopfli": "bin/zopfli", + "zopflipng": "bin/zopflipng" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", "dev": true }, "node_modules/normalize-path": { @@ -4160,10 +4593,40 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4433,6 +4896,35 @@ "node": ">=8" } }, + "node_modules/prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4443,9 +4935,9 @@ } }, "node_modules/prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -4458,12 +4950,12 @@ } }, "node_modules/pretty-format": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.2.tgz", - "integrity": "sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.2", + "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -4483,6 +4975,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -4496,15 +4994,41 @@ "node": ">= 6" } }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -4540,22 +5064,49 @@ } ] }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "node_modules/require-directory": { @@ -4615,9 +5166,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", - "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "engines": { "node": ">=10" @@ -4649,9 +5200,9 @@ } }, "node_modules/rollup": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.14.0.tgz", - "integrity": "sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", + "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -4664,6 +5215,40 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-dts": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz", + "integrity": "sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.0" + }, + "engines": { + "node": ">=v14" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.18.6" + }, + "peerDependencies": { + "rollup": "^3.0.0", + "typescript": "^4.1 || ^5.0" + } + }, + "node_modules/rollup-plugin-dts/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4687,6 +5272,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -4702,6 +5293,12 @@ "node": ">=10" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4743,6 +5340,37 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -4813,6 +5441,15 @@ "node": ">= 0.6" } }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -4940,6 +5577,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4988,9 +5667,9 @@ } }, "node_modules/ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -5013,7 +5692,7 @@ "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", - "typescript": ">=4.3" + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { @@ -5094,6 +5773,18 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5128,16 +5819,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/unpipe": { @@ -5184,6 +5875,12 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -5200,9 +5897,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -5243,6 +5940,24 @@ "node": ">= 8" } }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -5304,9 +6019,9 @@ "dev": true }, "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "dependencies": { "cliui": "^8.0.1", @@ -5364,18 +6079,18 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "requires": { "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", "dev": true }, "@babel/core": { @@ -5416,13 +6131,14 @@ } }, "@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", "dev": true, "requires": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.21.4", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { @@ -5440,22 +6156,38 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -5466,13 +6198,13 @@ "dev": true }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" } }, "@babel/helper-hoist-variables": { @@ -5494,9 +6226,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -5504,9 +6236,9 @@ "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" } }, "@babel/helper-plugin-utils": { @@ -5546,9 +6278,9 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true }, "@babel/helpers": { @@ -5632,9 +6364,9 @@ } }, "@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -5683,12 +6415,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -5755,39 +6487,39 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", + "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "@babel/parser": "^7.21.4", + "@babel/types": "^7.21.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -5801,9 +6533,9 @@ } }, "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -5838,15 +6570,30 @@ } } }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -5855,6 +6602,12 @@ "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "dev": true + }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -5962,123 +6715,123 @@ "dev": true }, "@jest/console": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.2.tgz", - "integrity": "sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0" } }, "@jest/core": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.2.tgz", - "integrity": "sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", "dev": true, "requires": { - "@jest/console": "^29.4.2", - "@jest/reporters": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.4.2", - "jest-config": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-resolve-dependencies": "^29.4.2", - "jest-runner": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", - "jest-watcher": "^29.4.2", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", "micromatch": "^4.0.4", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" } }, "@jest/environment": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.2.tgz", - "integrity": "sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", "dev": true, "requires": { - "@jest/fake-timers": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.2" + "jest-mock": "^29.5.0" } }, "@jest/expect": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.2.tgz", - "integrity": "sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", "dev": true, "requires": { - "expect": "^29.4.2", - "jest-snapshot": "^29.4.2" + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" } }, "@jest/expect-utils": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.2.tgz", - "integrity": "sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", "dev": true, "requires": { - "jest-get-type": "^29.4.2" + "jest-get-type": "^29.4.3" } }, "@jest/fake-timers": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.2.tgz", - "integrity": "sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.2", - "jest-mock": "^29.4.2", - "jest-util": "^29.4.2" + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" } }, "@jest/globals": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.2.tgz", - "integrity": "sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", "dev": true, "requires": { - "@jest/environment": "^29.4.2", - "@jest/expect": "^29.4.2", - "@jest/types": "^29.4.2", - "jest-mock": "^29.4.2" + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" } }, "@jest/reporters": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.2.tgz", - "integrity": "sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -6091,9 +6844,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -6101,18 +6854,18 @@ } }, "@jest/schemas": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.2.tgz", - "integrity": "sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", "dev": true, "requires": { "@sinclair/typebox": "^0.25.16" } }, "@jest/source-map": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.2.tgz", - "integrity": "sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.15", @@ -6121,46 +6874,46 @@ } }, "@jest/test-result": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.2.tgz", - "integrity": "sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", "dev": true, "requires": { - "@jest/console": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.2.tgz", - "integrity": "sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", "dev": true, "requires": { - "@jest/test-result": "^29.4.2", + "@jest/test-result": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", + "jest-haste-map": "^29.5.0", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.2.tgz", - "integrity": "sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -6168,12 +6921,12 @@ } }, "@jest/types": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.2.tgz", - "integrity": "sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "requires": { - "@jest/schemas": "^29.4.2", + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -6246,9 +6999,9 @@ } }, "@rollup/plugin-typescript": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz", - "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz", + "integrity": "sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1", @@ -6267,9 +7020,9 @@ } }, "@sinclair/typebox": { - "version": "0.25.21", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", - "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, "@sinonjs/commons": { @@ -6410,9 +7163,9 @@ } }, "@types/jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", - "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "requires": { "expect": "^29.0.0", @@ -6431,6 +7184,15 @@ "integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==", "dev": true }, + "@types/node-zopfli": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/node-zopfli/-/node-zopfli-2.0.2.tgz", + "integrity": "sha512-9/D0UjR+g7+4aWZSewadVr17ilvmWmPU0kD6oJde0fj1mJ5LstW2gDmt2sOSYNn/qzDlWltKd05p6cYT78g/kQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -6484,71 +7246,71 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", - "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", + "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/type-utils": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/type-utils": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", - "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz", + "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", - "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz", + "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0" + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1" } }, "@typescript-eslint/type-utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", - "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz", + "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/typescript-estree": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", - "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz", + "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", - "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz", + "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6557,28 +7319,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", - "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz", + "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", - "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz", + "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/types": "5.57.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -6655,6 +7417,22 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -6686,15 +7464,15 @@ "dev": true }, "babel-jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.2.tgz", - "integrity": "sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", "dev": true, "requires": { - "@jest/transform": "^29.4.2", + "@jest/transform": "^29.5.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.2", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -6714,9 +7492,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.2.tgz", - "integrity": "sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -6746,12 +7524,12 @@ } }, "babel-preset-jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.2.tgz", - "integrity": "sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.4.2", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -6761,6 +7539,36 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6781,15 +7589,15 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" } }, "bs-logger": { @@ -6810,6 +7618,16 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -6839,9 +7657,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", + "version": "1.0.30001473", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz", + "integrity": "sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==", "dev": true }, "chalk": { @@ -6860,6 +7678,12 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "ci-info": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", @@ -6883,12 +7707,24 @@ "wrap-ansi": "^7.0.0" } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -6919,6 +7755,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -6960,6 +7802,12 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -6972,6 +7820,12 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -6998,12 +7852,27 @@ "ms": "2.1.2" } }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7011,17 +7880,38 @@ "dev": true }, "deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -7045,9 +7935,9 @@ "dev": true }, "diff-sequences": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.2.tgz", - "integrity": "sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, "dir-glob": { @@ -7098,6 +7988,15 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7126,12 +8025,15 @@ "dev": true }, "eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7142,10 +8044,9 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -7166,7 +8067,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -7200,38 +8100,21 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { @@ -7241,9 +8124,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -7315,17 +8198,23 @@ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, "expect": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.2.tgz", - "integrity": "sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", "dev": true, "requires": { - "@jest/expect-utils": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2" + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" } }, "fast-deep-equal": { @@ -7493,6 +8382,12 @@ "qs": "^6.11.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -7512,6 +8407,59 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -7525,9 +8473,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -7547,6 +8495,12 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -7571,9 +8525,9 @@ } }, "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7626,6 +8580,12 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -7644,6 +8604,12 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -7692,6 +8658,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7752,6 +8724,12 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7818,21 +8796,21 @@ } }, "jest": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.2.tgz", - "integrity": "sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "requires": { - "@jest/core": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", "import-local": "^3.0.2", - "jest-cli": "^29.4.2" + "jest-cli": "^29.5.0" } }, "jest-changed-files": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.2.tgz", - "integrity": "sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "requires": { "execa": "^5.0.0", @@ -7840,204 +8818,205 @@ } }, "jest-circus": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.2.tgz", - "integrity": "sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", "dev": true, "requires": { - "@jest/environment": "^29.4.2", - "@jest/expect": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "p-limit": "^3.1.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-cli": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.2.tgz", - "integrity": "sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", "dev": true, "requires": { - "@jest/core": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "prompts": "^2.0.1", "yargs": "^17.3.1" } }, "jest-config": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.2.tgz", - "integrity": "sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.2", - "@jest/types": "^29.4.2", - "babel-jest": "^29.4.2", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.4.2", - "jest-environment-node": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-runner": "^29.4.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" } }, "jest-diff": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.2.tgz", - "integrity": "sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.2", - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" } }, "jest-docblock": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.2.tgz", - "integrity": "sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.2.tgz", - "integrity": "sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.2", - "jest-util": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" } }, "jest-environment-node": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.2.tgz", - "integrity": "sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", "dev": true, "requires": { - "@jest/environment": "^29.4.2", - "@jest/fake-timers": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-mock": "^29.4.2", - "jest-util": "^29.4.2" + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" } }, "jest-get-type": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.2.tgz", - "integrity": "sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true }, "jest-haste-map": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.2.tgz", - "integrity": "sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.2", - "jest-util": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.2.tgz", - "integrity": "sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", "dev": true, "requires": { - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" } }, "jest-matcher-utils": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.2.tgz", - "integrity": "sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.4.2", - "jest-get-type": "^29.4.2", - "pretty-format": "^29.4.2" + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" } }, "jest-message-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.2.tgz", - "integrity": "sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.2.tgz", - "integrity": "sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", - "jest-util": "^29.4.2" + "jest-util": "^29.5.0" } }, "jest-pnp-resolver": { @@ -8048,102 +9027,101 @@ "requires": {} }, "jest-regex-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.2.tgz", - "integrity": "sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true }, "jest-resolve": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.2.tgz", - "integrity": "sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", + "jest-haste-map": "^29.5.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.2", - "jest-validate": "^29.4.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.2.tgz", - "integrity": "sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", "dev": true, "requires": { - "jest-regex-util": "^29.4.2", - "jest-snapshot": "^29.4.2" + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" } }, "jest-runner": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.2.tgz", - "integrity": "sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", "dev": true, "requires": { - "@jest/console": "^29.4.2", - "@jest/environment": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.2", - "jest-environment-node": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-leak-detector": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-runtime": "^29.4.2", - "jest-util": "^29.4.2", - "jest-watcher": "^29.4.2", - "jest-worker": "^29.4.2", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" } }, "jest-runtime": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.2.tgz", - "integrity": "sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==", - "dev": true, - "requires": { - "@jest/environment": "^29.4.2", - "@jest/fake-timers": "^29.4.2", - "@jest/globals": "^29.4.2", - "@jest/source-map": "^29.4.2", - "@jest/test-result": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-mock": "^29.4.2", - "jest-regex-util": "^29.4.2", - "jest-resolve": "^29.4.2", - "jest-snapshot": "^29.4.2", - "jest-util": "^29.4.2", - "semver": "^7.3.5", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" } }, "jest-snapshot": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.2.tgz", - "integrity": "sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -8152,33 +9130,32 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.4.2", - "@jest/transform": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.4.2", + "expect": "^29.5.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.4.2", - "jest-get-type": "^29.4.2", - "jest-haste-map": "^29.4.2", - "jest-matcher-utils": "^29.4.2", - "jest-message-util": "^29.4.2", - "jest-util": "^29.4.2", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.4.2", + "pretty-format": "^29.5.0", "semver": "^7.3.5" } }, "jest-util": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.2.tgz", - "integrity": "sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -8187,17 +9164,17 @@ } }, "jest-validate": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.2.tgz", - "integrity": "sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", "dev": true, "requires": { - "@jest/types": "^29.4.2", + "@jest/types": "^29.5.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.2", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^29.4.2" + "pretty-format": "^29.5.0" }, "dependencies": { "camelcase": { @@ -8209,29 +9186,29 @@ } }, "jest-watcher": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.2.tgz", - "integrity": "sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", "dev": true, "requires": { - "@jest/test-result": "^29.4.2", - "@jest/types": "^29.4.2", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.4.2", + "jest-util": "^29.5.0", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.2.tgz", - "integrity": "sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.4.2", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -8443,6 +9420,12 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -8452,12 +9435,30 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8470,6 +9471,29 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "requires": { + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8477,9 +9501,27 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node-zopfli": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/node-zopfli/-/node-zopfli-2.1.4.tgz", + "integrity": "sha512-5kxbPxNQHbORFBNNf083V7h0dTFy6+C1W4ZA4qTXjpCQqEMzxAQFAOfi6BlCmXAkC/+Vr8d6h0XOmdjvp+9FNw==", + "dev": true, + "requires": { + "commander": "^3.0.0", + "defaults": "^1.0.3", + "node-addon-api": "^1.7.2", + "prebuild-install": "^5.3.5" + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", "dev": true }, "normalize-path": { @@ -8497,10 +9539,34 @@ "path-key": "^3.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "on-finished": { @@ -8691,6 +9757,29 @@ } } }, + "prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -8698,18 +9787,18 @@ "dev": true }, "prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true }, "pretty-format": { - "version": "29.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.2.tgz", - "integrity": "sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "requires": { - "@jest/schemas": "^29.4.2", + "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -8722,6 +9811,12 @@ } } }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -8732,10 +9827,26 @@ "sisteransi": "^1.0.5" } }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", "dev": true }, "qs": { @@ -8753,17 +9864,46 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, "require-directory": { "version": "2.1.1", @@ -8806,9 +9946,9 @@ "dev": true }, "resolve.exports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", - "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "reusify": { @@ -8827,14 +9967,35 @@ } }, "rollup": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.14.0.tgz", - "integrity": "sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", + "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, + "rollup-plugin-dts": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz", + "integrity": "sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "magic-string": "^0.30.0" + }, + "dependencies": { + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -8844,6 +10005,12 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -8853,6 +10020,12 @@ "lru-cache": "^6.0.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8885,6 +10058,23 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -8942,6 +10132,15 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -9033,6 +10232,44 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -9072,9 +10309,9 @@ } }, "ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -9123,6 +10360,15 @@ "tslib": "^1.8.1" } }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9145,9 +10391,9 @@ "dev": true }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true }, "unpipe": { @@ -9175,6 +10421,12 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -9188,9 +10440,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", @@ -9224,6 +10476,21 @@ "isexe": "^2.0.0" } }, + "which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "dev": true + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -9270,9 +10537,9 @@ "dev": true }, "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "requires": { "cliui": "^8.0.1", diff --git a/package.json b/package.json index 8b367dc..697be67 100644 --- a/package.json +++ b/package.json @@ -13,57 +13,38 @@ "headers", "backend" ], - "homepage": "https://helmetjs.github.io/", - "bugs": { - "url": "https://github.com/helmetjs/helmet/issues", - "email": "me@evanhahn.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/helmetjs/helmet.git" - }, "engines": { "node": ">=14.0.0" }, "devDependencies": { - "@rollup/plugin-typescript": "^11.0.0", + "@rollup/plugin-typescript": "^11.1.0", "@types/connect": "^3.4.35", - "@types/jest": "^29.4.0", + "@types/jest": "^29.5.0", + "@types/node-zopfli": "^2.0.2", "@types/supertest": "^2.0.12", - "@typescript-eslint/eslint-plugin": "^5.51.0", - "@typescript-eslint/parser": "^5.51.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", "connect": "^3.7.0", - "eslint": "^8.33.0", - "jest": "^29.4.2", - "prettier": "^2.8.3", - "rollup": "^3.14.0", + "eslint": "^8.38.0", + "jest": "^29.5.0", + "node-zopfli": "^2.1.4", + "prettier": "^2.8.7", + "rollup": "^3.20.2", + "rollup-plugin-dts": "^5.3.0", "supertest": "^6.3.3", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "typescript": "^4.9.5" + "typescript": "^5.0.4" }, "scripts": { - "pretest": "npm run lint && npm run build-helmet", - "prepublishOnly": "npm run build-helmet", + "pretest": "npm run lint", "lint": "npm run lint:eslint && npm run lint:prettier", "lint:eslint": "eslint .", "lint:prettier": "prettier --check .", "format": "prettier --write .", - "clean": "node ./bin/clean.js", - "build-helmet": "npm run clean && node ./bin/build-helmet.js && prettier --write --config .prettierrc-dist.cjs --ignore-path /dev/null dist", - "build-middleware-package": "npm run clean && tsc --emitDeclarationOnly -p tsconfig-types.json && node ./bin/build-middleware-package.js", + "clean": "node ./bin/clean.mjs", + "build": "ts-node-esm ./build/build-package.ts", "test": "jest" }, - "license": "MIT", - "type": "module", - "main": "./dist/cjs/cjs.cjs", - "module": "./dist/esm/esm.js", - "types": "./dist/esm/esm.d.ts", - "exports": { - ".": { - "import": "./dist/esm/esm.js", - "require": "./dist/cjs/cjs.cjs", - "types": "./dist/esm/esm.d.ts" - } - } + "type": "module" } diff --git a/test/project-setups.test.ts b/test/project-setups.test.ts index 401733e..6d74483 100644 --- a/test/project-setups.test.ts +++ b/test/project-setups.test.ts @@ -1,7 +1,9 @@ import * as fs from "fs"; import * as path from "path"; +// import { buildAndPack } from "../build/build-package.js"; import * as childProcess from "child_process"; import { promisify } from "util"; +import { npm } from "../build/helpers.js"; const exec = promisify(childProcess.exec); @@ -12,14 +14,28 @@ describe("project setups", () => { .filter((dirent) => dirent.isDirectory()) .map((dirent) => dirent.name); + let helmetTarball: string; + + jest.setTimeout(60_000); beforeAll(async () => { - // TODO: Improve the error message - const distPath = path.join(__dirname, "..", "dist"); - await fs.promises.stat(distPath); + // Unfortunately, we can't import `buildAndPack` directly. + // Run it and get the last line: the tarball path. + const { stdout } = await exec("npm run build"); + const lines = stdout.trim().split(/\r?\n/g); + const lastLine = lines[lines.length - 1]?.trim(); + if (!lastLine) { + throw new Error("Couldn't parse tarball path from build output"); + } + helmetTarball = lastLine; }); it.each(projectSetups)("%s style", async (projectSetupName) => { const projectFolder = path.join(projectSetupsFolder, projectSetupName); - await exec("npm run helmet:test", { cwd: projectFolder }); + const nodeModulesFolder = path.join(projectFolder, "node_modules"); + await fs.promises.rm(nodeModulesFolder, { recursive: true, force: true }); + await npm(["install", "--no-save", "--no-audit", helmetTarball], { + cwd: projectFolder, + }); + await npm(["run", "helmet:test"], { cwd: projectFolder }); }); }); diff --git a/test/project-setups/.gitignore b/test/project-setups/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/test/project-setups/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/test/project-setups/javascript-commonjs/test.js b/test/project-setups/javascript-commonjs/test.js index 875b362..b47cb02 100644 --- a/test/project-setups/javascript-commonjs/test.js +++ b/test/project-setups/javascript-commonjs/test.js @@ -1,6 +1,6 @@ const connect = require("connect"); const supertest = require("supertest"); -const helmet = require("../../.."); +const helmet = require("helmet"); const handler = (_, res) => res.end("Hello world"); diff --git a/test/project-setups/javascript-esm/test.js b/test/project-setups/javascript-esm/test.js index b9dac39..b697c52 100644 --- a/test/project-setups/javascript-esm/test.js +++ b/test/project-setups/javascript-esm/test.js @@ -1,6 +1,6 @@ import connect from "connect"; import supertest from "supertest"; -import helmet, { frameguard } from "../../../dist/esm/esm.js"; +import helmet, { frameguard } from "helmet"; const handler = (_, res) => res.end("Hello world"); diff --git a/test/project-setups/typescript-commonjs-nodenext-moduleResolution/package.json b/test/project-setups/typescript-commonjs-nodenext-moduleResolution/package.json new file mode 100644 index 0000000..dcb891c --- /dev/null +++ b/test/project-setups/typescript-commonjs-nodenext-moduleResolution/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "type": "commonjs", + "scripts": { + "helmet:test": "ts-node --compilerOptions '{\"module\": \"commonjs\", \"moduleResolution\": \"nodenext\", \"esModuleInterop\": true}' test.ts" + } +} diff --git a/test/project-setups/typescript-esm/test.ts b/test/project-setups/typescript-commonjs-nodenext-moduleResolution/test.ts similarity index 94% rename from test/project-setups/typescript-esm/test.ts rename to test/project-setups/typescript-commonjs-nodenext-moduleResolution/test.ts index 2e2d3f7..491bcf7 100644 --- a/test/project-setups/typescript-esm/test.ts +++ b/test/project-setups/typescript-commonjs-nodenext-moduleResolution/test.ts @@ -1,7 +1,7 @@ import type { IncomingMessage, ServerResponse } from "http"; import connect from "connect"; import supertest from "supertest"; -import helmet, { frameguard } from "../../../dist/esm/esm.js"; +import helmet, { frameguard } from "helmet"; const handler = (_: IncomingMessage, res: ServerResponse) => res.end("Hello world"); diff --git a/test/project-setups/typescript-commonjs/test.ts b/test/project-setups/typescript-commonjs/test.ts index f9adf6b..491bcf7 100644 --- a/test/project-setups/typescript-commonjs/test.ts +++ b/test/project-setups/typescript-commonjs/test.ts @@ -1,7 +1,7 @@ import type { IncomingMessage, ServerResponse } from "http"; import connect from "connect"; import supertest from "supertest"; -import helmet, { frameguard } from "../../.."; +import helmet, { frameguard } from "helmet"; const handler = (_: IncomingMessage, res: ServerResponse) => res.end("Hello world"); diff --git a/test/project-setups/typescript-esnext/package.json b/test/project-setups/typescript-esnext/package.json new file mode 100644 index 0000000..e8a4c87 --- /dev/null +++ b/test/project-setups/typescript-esnext/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "type": "module", + "scripts": { + "helmet:test": "ts-node-esm --compilerOptions '{\"module\": \"esnext\", \"moduleResolution\": \"node\"}' test.ts" + } +} diff --git a/test/project-setups/typescript-esnext/test.ts b/test/project-setups/typescript-esnext/test.ts new file mode 100644 index 0000000..491bcf7 --- /dev/null +++ b/test/project-setups/typescript-esnext/test.ts @@ -0,0 +1,42 @@ +import type { IncomingMessage, ServerResponse } from "http"; +import connect from "connect"; +import supertest from "supertest"; +import helmet, { frameguard } from "helmet"; + +const handler = (_: IncomingMessage, res: ServerResponse) => + res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testImportedMiddleware() { + const app = connect().use(frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function testAttachedMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testImportedMiddleware(); + await testAttachedMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/test/project-setups/typescript-esm/package.json b/test/project-setups/typescript-nodenext/package.json similarity index 89% rename from test/project-setups/typescript-esm/package.json rename to test/project-setups/typescript-nodenext/package.json index e91c751..8665d6a 100644 --- a/test/project-setups/typescript-esm/package.json +++ b/test/project-setups/typescript-nodenext/package.json @@ -1,6 +1,5 @@ { "private": true, - "type": "module", "scripts": { "helmet:test": "ts-node-esm --compilerOptions '{\"module\": \"nodenext\", \"moduleResolution\": \"nodenext\"}' test.ts" } diff --git a/test/project-setups/typescript-nodenext/test.ts b/test/project-setups/typescript-nodenext/test.ts new file mode 100644 index 0000000..491bcf7 --- /dev/null +++ b/test/project-setups/typescript-nodenext/test.ts @@ -0,0 +1,42 @@ +import type { IncomingMessage, ServerResponse } from "http"; +import connect from "connect"; +import supertest from "supertest"; +import helmet, { frameguard } from "helmet"; + +const handler = (_: IncomingMessage, res: ServerResponse) => + res.end("Hello world"); + +async function testTopLevel() { + const app = connect().use(helmet()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-download-options", "noopen"); +} + +async function testImportedMiddleware() { + const app = connect().use(frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function testAttachedMiddleware() { + const app = connect().use(helmet.frameguard()).use(handler); + await supertest(app) + .get("/") + .expect(200, "Hello world") + .expect("x-frame-options", "SAMEORIGIN"); +} + +async function main() { + await testTopLevel(); + await testImportedMiddleware(); + await testAttachedMiddleware(); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/tsconfig-commonjs.json b/tsconfig-commonjs.json deleted file mode 100644 index cac0a68..0000000 --- a/tsconfig-commonjs.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig", - "include": ["tmp-commonjs-index.ts"] -} diff --git a/tsconfig-esm.json b/tsconfig-esm.json deleted file mode 100644 index 6946c3f..0000000 --- a/tsconfig-esm.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig", - "include": ["tmp-esm-index.ts"] -} diff --git a/tsconfig-types.json b/tsconfig-types.json deleted file mode 100644 index 7155af5..0000000 --- a/tsconfig-types.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "outDir": "dist" - } -} diff --git a/tsconfig.json b/tsconfig.json index c7754bd..7ef3ad8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "declaration": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "node", @@ -13,5 +12,5 @@ "target": "es6", "outDir": "." }, - "exclude": ["node_modules", "bin", "dist"] + "exclude": ["node_modules"] }