From b81fc5a00915592072fc93563bb3ec0c4591bfe7 Mon Sep 17 00:00:00 2001 From: Vinayak Sarawagi Date: Sat, 25 Jan 2025 16:37:30 +0530 Subject: [PATCH 01/18] fix(cli): cokidar bug fix(core): handle kill signals in queue workers --- integrations/sample-app/package.json | 2 +- package-lock.json | 168 +- package.json | 2 +- packages/cli/lib/swc/swc-file-transformer.ts | 33 +- packages/cli/package-lock.json | 7141 ------------------ packages/core/lib/queue/workers/pollQueue.ts | 64 +- 6 files changed, 201 insertions(+), 7209 deletions(-) delete mode 100644 packages/cli/package-lock.json diff --git a/integrations/sample-app/package.json b/integrations/sample-app/package.json index 6a37cd3..360c8b7 100644 --- a/integrations/sample-app/package.json +++ b/integrations/sample-app/package.json @@ -32,7 +32,7 @@ "@aws-sdk/client-s3": "^3.689.0", "@aws-sdk/credential-providers": "^3.687.0", "@aws-sdk/s3-request-presigner": "^3.689.0", - "@intentjs/core": "^0.1.45", + "@intentjs/core": "*", "bcrypt": "^5.1.1", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", diff --git a/package-lock.json b/package-lock.json index ccbed4b..226b0ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "winston": "^3.14.2" }, "devDependencies": { - "@intentjs/cli": "^0.0.7", + "@intentjs/cli": "^0.0.15", "@nestjs/testing": "^10.0.0", "@swc/cli": "^0.4.1-nightly.20240914", "@swc/core": "^1.7.26", @@ -69,35 +69,10 @@ "typescript": "^5.1.3" } }, - "integrations/sample-app/node_modules/@intentjs/cli": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@intentjs/cli/-/cli-0.0.7.tgz", - "integrity": "sha512-mWH2P/OObjvF9rPx9QSBngR6J5tMIDd2nZuN4Gapbrh+iF+Vd0Q+ehBBjRKpuXEx3+dNLdENGa4TSHGSlsV++g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/cli": "^0.5.2", - "@swc/core": "^1.10.0", - "chokidar": "^3.5.1", - "commander": "^12.1.0", - "enquirer": "^2.4.1", - "fs-extra": "^11.2.0", - "picocolors": "^1.1.0", - "radash": "^12.1.0", - "tree-kill": "^1.2.2", - "typescript": "^5.6.2" - }, - "bin": { - "intent": "bin/intent.js" - }, - "engines": { - "node": ">= 16.14" - } - }, "integrations/sample-app/node_modules/@intentjs/cli/node_modules/@swc/cli": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.5.2.tgz", - "integrity": "sha512-ul2qIqjM5bfe9zWLqFDmHZCf9HXXSZZAlZLe4czn+lH4PewO+OWZnQcYCscnJKlbx6MuWjzXVR7gkspjNEJwJA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.6.0.tgz", + "integrity": "sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==", "dev": true, "license": "MIT", "dependencies": { @@ -121,7 +96,7 @@ }, "peerDependencies": { "@swc/core": "^1.2.66", - "chokidar": "^3.5.1" + "chokidar": "^4.0.1" }, "peerDependenciesMeta": { "chokidar": { @@ -129,18 +104,103 @@ } } }, - "integrations/sample-app/node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "integrations/sample-app/node_modules/@intentjs/cli/node_modules/@swc/cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "integrations/sample-app/node_modules/@ts-morph/common": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.0.tgz", + "integrity": "sha512-/RmKAtctStXqM5nECMQ46duT74Hoig/DBzhWXGHcodlDNrgRbsbwwHqSKFNbca6z9Xt/CUWMeXOsC9QEN1+rqw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "path-browserify": "^1.0.1" + } + }, + "integrations/sample-app/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "integrations/sample-app/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" }, "engines": { - "node": ">=8.6" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "integrations/sample-app/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "integrations/sample-app/node_modules/readdirp": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "integrations/sample-app/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "integrations/sample-app/node_modules/ts-morph": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.0.tgz", + "integrity": "sha512-ERPTUVO5qF8cEGJgAejGOsCVlbk8d0SDyiJsucKQT5XgqoZslv0Qml+gnui6Yy6o+uQqw5SestyW2HvlVtT/Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.26.0", + "code-block-writer": "^13.0.3" } }, "node_modules/@ampproject/remapping": { @@ -3091,9 +3151,9 @@ "license": "0BSD" }, "node_modules/@nestjs/core": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.8.tgz", - "integrity": "sha512-Kdi9rDZdlCkGL2AK9XuJ24bZp2YFV6dWBdogGsAHSP5u95wfnSkhduxHZy6q/i1nFFiLASUHabL8Jwr+bmD22Q==", + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.15.tgz", + "integrity": "sha512-UBejmdiYwaH6fTsz2QFBlC1cJHM+3UDeLZN+CiP9I1fRv2KlBZsmozGLbV5eS1JAVWJB4T5N5yQ0gjN8ZvcS2w==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -3101,7 +3161,7 @@ "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", "path-to-regexp": "3.3.0", - "tslib": "2.7.0", + "tslib": "2.8.1", "uid": "2.0.2" }, "funding": { @@ -3128,10 +3188,6 @@ } } }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.7.0", - "license": "0BSD" - }, "node_modules/@nestjs/platform-express": { "version": "10.4.15", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.15.tgz", @@ -8549,8 +8605,9 @@ } }, "node_modules/commander": { - "version": "12.1.0", - "dev": true, + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz", + "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==", "license": "MIT", "engines": { "node": ">=18" @@ -18810,7 +18867,7 @@ }, "packages/cli": { "name": "@intentjs/cli", - "version": "0.0.9-next", + "version": "0.0.15", "license": "MIT", "dependencies": { "@clack/prompts": "^0.9.1", @@ -18928,15 +18985,6 @@ "url": "https://paulmillr.com/funding/" } }, - "packages/cli/node_modules/commander": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz", - "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "packages/cli/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -18986,10 +19034,10 @@ }, "packages/core": { "name": "@intentjs/core", - "version": "0.1.43", + "version": "0.1.45", "license": "MIT", "dependencies": { - "@intentjs/hyper-express": "^0.0.6", + "@intentjs/hyper-express": "^0.0.7", "@nestjs/common": "^10.4.8", "@nestjs/core": "^10.4.8", "@react-email/components": "^0.0.32", @@ -19356,7 +19404,7 @@ }, "packages/hyper-express": { "name": "@intentjs/hyper-express", - "version": "0.0.6", + "version": "0.0.7", "license": "MIT", "dependencies": { "busboy": "^1.6.0", diff --git a/package.json b/package.json index 02449b0..029aa3e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "format:check": "npx lerna run format:check", "lint:check": "npx lerna run lint:check", "packages:clean": "tsc -b --clean packages", - "dev": "concurrently \"npm run dev:core\" \"npm run dev:sample-app\" --names \"@intentjs/core,sample-app\" --prefix-colors \"blue,green\"", + "dev": "NODE_ENV=coredev concurrently \"npm run dev:core\" \"npm run dev:sample-app\" --names \"@intentjs/core,sample-app\" --prefix-colors \"blue,green\"", "dev:core": "npm run dev -w packages/core", "dev:sample-app": "npm run dev -w integrations/sample-app", "prepare": "husky" diff --git a/packages/cli/lib/swc/swc-file-transformer.ts b/packages/cli/lib/swc/swc-file-transformer.ts index 35a8bb6..46032f3 100644 --- a/packages/cli/lib/swc/swc-file-transformer.ts +++ b/packages/cli/lib/swc/swc-file-transformer.ts @@ -173,9 +173,8 @@ export class SwcFileTransformer { const { includeDirs } = tsConfig; const cwd = process.cwd(); - const watchPatterns = [...includeDirs, "../../node_modules/@intentjs"].map( - (dir: string) => join(cwd, dir) - ); + const watchPatterns = [...includeDirs].map((dir: string) => join(cwd, dir)); + const watcher = chokidar.watch(".", { persistent: true, ignoreInitial: true, @@ -198,5 +197,33 @@ export class SwcFileTransformer { .on("add", () => onChange()) .on("change", (filepath: string) => onChange()) .on("error", (error) => onChange()); + + if (process.env.NODE_ENV == "coredev") { + const libDir = join(process.cwd(), "../../node_modules/@intentjs"); + const libWatcher = chokidar.watch(".", { + persistent: true, + ignoreInitial: true, + cwd: libDir, + awaitWriteFinish: { stabilityThreshold: 50, pollInterval: 10 }, + ignored: (filepath) => { + if (filepath.includes(libDir)) return false; + + if (filepath === libDir) { + return false; + } + + for (const watchPattern of watchPatterns) { + if (filepath.includes(watchPattern)) return false; + } + + return true; + }, + }); + + libWatcher + .on("add", () => onChange()) + .on("change", (filepath: string) => onChange()) + .on("error", (error) => onChange()); + } } } diff --git a/packages/cli/package-lock.json b/packages/cli/package-lock.json deleted file mode 100644 index 2ff2800..0000000 --- a/packages/cli/package-lock.json +++ /dev/null @@ -1,7141 +0,0 @@ -{ - "name": "@intentjs/cli", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@intentjs/cli", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "commander": "^12.1.0", - "enquirer": "^2.4.1", - "fs-extra": "^11.2.0", - "picocolors": "^1.1.0", - "radash": "^12.1.0", - "tree-kill": "^1.2.2", - "typescript": "^5.6.2" - }, - "bin": { - "intent": "dist/bin/intent.js" - }, - "devDependencies": { - "@swc/cli": "^0.4.1-nightly.20240914", - "@swc/core": "^1.7.26", - "@types/fs-extra": "^11.0.4", - "@types/jest": "^29.5.13", - "@types/node": "^22.7.4", - "chokidar": "^3.5.1", - "ts-jest": "^29.2.5", - "ts-loader": "^9.5.1", - "ts-node": "^10.9.2" - }, - "engines": { - "node": ">= 16.14" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.25.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.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, - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "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, - "license": "ISC", - "peer": true - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.25.6" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT", - "peer": 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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@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.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "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.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mole-inc/bin-wrapper": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", - "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^5.0.0", - "content-disposition": "^0.5.4", - "ext-name": "^5.0.0", - "file-type": "^17.1.6", - "filenamify": "^5.0.2", - "got": "^11.8.5", - "os-filter-obj": "^2.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/@napi-rs/nice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", - "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.0.1", - "@napi-rs/nice-android-arm64": "1.0.1", - "@napi-rs/nice-darwin-arm64": "1.0.1", - "@napi-rs/nice-darwin-x64": "1.0.1", - "@napi-rs/nice-freebsd-x64": "1.0.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", - "@napi-rs/nice-linux-arm64-gnu": "1.0.1", - "@napi-rs/nice-linux-arm64-musl": "1.0.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", - "@napi-rs/nice-linux-s390x-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-musl": "1.0.1", - "@napi-rs/nice-win32-arm64-msvc": "1.0.1", - "@napi-rs/nice-win32-ia32-msvc": "1.0.1", - "@napi-rs/nice-win32-x64-msvc": "1.0.1" - } - }, - "node_modules/@napi-rs/nice-android-arm-eabi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", - "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-android-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz", - "integrity": "sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz", - "integrity": "sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-freebsd-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz", - "integrity": "sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz", - "integrity": "sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-arm64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz", - "integrity": "sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-arm64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz", - "integrity": "sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-ppc64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz", - "integrity": "sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-riscv64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz", - "integrity": "sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-s390x-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz", - "integrity": "sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-x64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz", - "integrity": "sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-linux-x64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz", - "integrity": "sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-win32-arm64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz", - "integrity": "sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-win32-ia32-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz", - "integrity": "sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/nice-win32-x64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz", - "integrity": "sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@swc/cli": { - "version": "0.4.1-nightly.20240914", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.4.1-nightly.20240914.tgz", - "integrity": "sha512-mpsF0+pq40uu9nZnhkzaA0gdivORTZnJNUFfuUGEzC1DgEEgmKDgisRWpBgA3p7xQPCpYlhkH5cTbsOkqar2Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mole-inc/bin-wrapper": "^8.0.1", - "@swc/counter": "^0.1.3", - "commander": "^8.3.0", - "fast-glob": "^3.2.5", - "minimatch": "^9.0.3", - "piscina": "^4.3.0", - "semver": "^7.3.8", - "slash": "3.0.0", - "source-map": "^0.7.3" - }, - "bin": { - "spack": "bin/spack.js", - "swc": "bin/swc.js", - "swcx": "bin/swcx.js" - }, - "engines": { - "node": ">= 16.14.0" - }, - "peerDependencies": { - "@swc/core": "^1.2.66", - "chokidar": "^3.5.1" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@swc/cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/@swc/core": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", - "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.12" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.26", - "@swc/core-darwin-x64": "1.7.26", - "@swc/core-linux-arm-gnueabihf": "1.7.26", - "@swc/core-linux-arm64-gnu": "1.7.26", - "@swc/core-linux-arm64-musl": "1.7.26", - "@swc/core-linux-x64-gnu": "1.7.26", - "@swc/core-linux-x64-musl": "1.7.26", - "@swc/core-win32-arm64-msvc": "1.7.26", - "@swc/core-win32-ia32-msvc": "1.7.26", - "@swc/core-win32-x64-msvc": "1.7.26" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", - "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", - "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", - "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", - "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", - "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", - "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", - "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", - "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", - "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", - "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", - "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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" - } - ], - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version-check": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", - "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bin-version": "^6.0.0", - "semver": "^7.5.3", - "semver-truncate": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/bin-version/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/bin-version/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bin-version/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bin-version/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bin-version/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bin-version/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001664", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", - "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0", - "peer": true - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", - "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/filenamify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", - "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "filename-reserved-regex": "^3.0.0", - "strip-outer": "^2.0.0", - "trim-repeated": "^2.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-regex": "^4.0.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.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.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@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.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@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.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arch": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/peek-readable": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.2.0.tgz", - "integrity": "sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/piscina": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.7.0.tgz", - "integrity": "sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@napi-rs/nice": "^1.0.1" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/radash": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/radash/-/radash-12.1.0.tgz", - "integrity": "sha512-b0Zcf09AhqKS83btmUeYBS8tFK7XL2e3RvLmZcm0sTdF1/UUlHSsjXdCcWNxe7yfmAlPve5ym0DmKGtTzP6kVQ==", - "license": "MIT", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ], - "license": "MIT" - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-truncate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz", - "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-outer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", - "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.1.1.tgz", - "integrity": "sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.1.3" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-repeated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", - "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "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/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/packages/core/lib/queue/workers/pollQueue.ts b/packages/core/lib/queue/workers/pollQueue.ts index 5aa131e..10f4572 100644 --- a/packages/core/lib/queue/workers/pollQueue.ts +++ b/packages/core/lib/queue/workers/pollQueue.ts @@ -15,6 +15,8 @@ import { BaseQueueWorker } from './baseWorker'; export class PollQueueWorker extends BaseQueueWorker { protected options: ListenerOptions; + protected jobInProgress: boolean; + protected killSigReceived: boolean; constructor(options?: ListenerOptions) { super(); @@ -27,13 +29,16 @@ export class PollQueueWorker extends BaseQueueWorker { logger: true, ...this.options, }; - + this.jobInProgress = false; + this.killSigReceived = false; if (!this.options.queue) { const data = QueueMetadata.getData(); this.options['queue'] = data.connections[ this.options.connection || defaultOptions.connection ].queue as string; } + + this.attachDeamonListeners(); } static init(options?: ListenerOptions): PollQueueWorker { @@ -60,16 +65,18 @@ export class PollQueueWorker extends BaseQueueWorker { const runner = new JobRunner(this.options, client); // eslint-disable-next-line no-constant-condition - while (1) { + while (1 && !this.killSigReceived) { const jobs = await this.poll(client); if (!jobs.length) { await new Promise(resolve => setTimeout(resolve, this.options.sleep)); continue; } + this.jobInProgress = true; for (const job of jobs) { await this.handleJob(runner, job); } + this.jobInProgress = false; } } @@ -188,6 +195,57 @@ export class PollQueueWorker extends BaseQueueWorker { */ fetchMessage(job: DriverJob): InternalMessage { const message = job.getMessage(); - return Obj.isObj(message) ? message : JSON.parse(job.getMessage()); + return Obj.isObj(message) + ? (message as unknown as InternalMessage) + : JSON.parse(job.getMessage()); + } + + attachDeamonListeners() { + process.on('SIGINT', async () => { + await this.closeConnections(); + }); + + process.on('SIGQUIT', async () => { + await this.closeConnections(); + }); + + process.on('SIGTERM', async () => { + await this.closeConnections(); + }); + + process.on('message', async (msg: any) => { + if (msg === 'shutdown' || msg.type === 'shutdown') { + await this.closeConnections(); + } + }); + } + + async closeConnections() { + this.killSigReceived = true; + // Wait for job completion with timeout + const maxWaitTime = 30000; // 30 seconds timeout + const startTime = Date.now(); + + while (this.jobInProgress) { + this.logInfo('Waiting for current batch to be completed first...'); + if (Date.now() - startTime > maxWaitTime) { + break; + } + + await new Promise(resolve => setImmediate(resolve)); // Check every second + } + + try { + console.log( + `Successfully disconnected broker: ${this.options.connection}`, + ); + } catch (error) { + console.error( + `Error disconnecting broker ${this.options.connection}:`, + error, + ); + } + + process.exit(this.jobInProgress ? 1 : 0); } } From db96eb0b941f0d5f3cebf56ea1cc021d4999926c Mon Sep 17 00:00:00 2001 From: Vinayak Sarawagi Date: Sat, 22 Mar 2025 15:31:07 +0530 Subject: [PATCH 02/18] chore(core): update package dependencies and improve module exports --- packages/core/lib/cache/cache.ts | 8 +-- packages/core/lib/cache/drivers/dice-db.ts | 11 ++-- packages/core/lib/cache/drivers/inMemory.ts | 21 +++++--- packages/core/lib/cache/drivers/redis.ts | 39 +++++++++------ packages/core/lib/cache/index.ts | 6 +-- packages/core/lib/cache/interfaces/driver.ts | 2 +- packages/core/lib/cache/interfaces/index.ts | 4 +- packages/core/lib/cache/service.ts | 8 +-- packages/core/lib/cache/utils/genKey.ts | 2 +- packages/core/lib/codegen/command.ts | 10 ++-- packages/core/lib/codegen/service.ts | 2 +- packages/core/lib/codegen/utils.ts | 2 +- packages/core/lib/config/builder.ts | 2 +- packages/core/lib/config/command.ts | 12 ++--- packages/core/lib/config/index.ts | 12 ++--- packages/core/lib/config/options.ts | 1 + .../core/lib/config/register-namespace.ts | 8 +-- packages/core/lib/config/service.ts | 10 ++-- packages/core/lib/console/argumentParser.ts | 6 +-- packages/core/lib/console/commands/index.ts | 2 +- .../core/lib/console/commands/listCommands.ts | 12 ++--- .../core/lib/console/commands/route-list.ts | 6 +-- packages/core/lib/console/consoleIO.ts | 10 ++-- packages/core/lib/console/decorators.ts | 4 +- packages/core/lib/console/index.ts | 16 +++--- packages/core/lib/console/inquirer.ts | 3 +- packages/core/lib/console/interfaces.ts | 2 +- packages/core/lib/console/logger.ts | 2 +- packages/core/lib/console/metadata.ts | 6 +-- packages/core/lib/console/runner.ts | 14 +++--- packages/core/lib/database/baseModel.ts | 10 ++-- .../core/lib/database/commands/migrations.ts | 6 +-- packages/core/lib/database/decorators.ts | 4 +- .../core/lib/database/exceptions/index.ts | 4 +- packages/core/lib/database/index.ts | 20 ++++---- .../core/lib/database/queryBuilders/custom.ts | 12 ++--- .../lib/database/queryBuilders/softDelete.ts | 2 +- .../lib/database/repositories/contract.ts | 4 +- .../lib/database/repositories/database.ts | 14 +++--- packages/core/lib/database/service.ts | 8 +-- packages/core/lib/dev-server/build.ts | 6 +-- packages/core/lib/dev-server/serve.ts | 6 +-- packages/core/lib/events/decorator.ts | 4 +- packages/core/lib/events/event.ts | 12 ++--- packages/core/lib/events/helpers.ts | 2 +- packages/core/lib/events/index.ts | 14 +++--- packages/core/lib/events/interfaces.ts | 2 +- packages/core/lib/events/jobListener.ts | 6 +-- packages/core/lib/events/metadata.ts | 2 +- packages/core/lib/events/runner.ts | 4 +- .../lib/exceptions/base-exception-handler.ts | 24 ++++----- .../exceptions/file-not-found-exception.ts | 4 +- .../lib/exceptions/forbidden-exception.ts | 4 +- .../core/lib/exceptions/genericException.ts | 4 +- .../core/lib/exceptions/http-exception.ts | 6 +-- packages/core/lib/exceptions/index.ts | 22 ++++---- .../lib/exceptions/invalid-credentials.ts | 4 +- .../exceptions/route-not-found-exception.ts | 4 +- packages/core/lib/exceptions/unauthorized.ts | 4 +- .../core/lib/exceptions/validation-failed.ts | 4 +- packages/core/lib/explorer.ts | 16 +++--- packages/core/lib/foundation/app-container.ts | 4 +- .../core/lib/foundation/container-factory.ts | 10 ++-- packages/core/lib/foundation/index.ts | 10 ++-- .../core/lib/foundation/module-builder.ts | 4 +- .../core/lib/foundation/service-provider.ts | 2 +- packages/core/lib/index.ts | 42 ++++++++-------- packages/core/lib/interfaces/config.ts | 8 +-- packages/core/lib/interfaces/index.ts | 6 +-- .../core/lib/localization/helpers/index.ts | 2 +- packages/core/lib/localization/index.ts | 6 +-- packages/core/lib/localization/service.ts | 14 +++--- packages/core/lib/localization/utils/get.ts | 2 +- .../core/lib/localization/utils/memoize.ts | 2 +- .../lib/localization/utils/memoizeCapped.ts | 2 +- .../lib/localization/utils/stringToPath.ts | 2 +- packages/core/lib/logger/index.ts | 6 +-- packages/core/lib/logger/logger.ts | 2 +- packages/core/lib/logger/service.ts | 8 +-- .../lib/mailer/exceptions/errorSendingMail.ts | 2 +- packages/core/lib/mailer/index.ts | 8 +-- packages/core/lib/mailer/interfaces/index.ts | 2 +- .../core/lib/mailer/interfaces/provider.ts | 2 +- packages/core/lib/mailer/mail.ts | 4 +- packages/core/lib/mailer/message.ts | 16 +++--- packages/core/lib/mailer/providers/index.ts | 11 ++-- packages/core/lib/mailer/providers/logger.ts | 9 ++-- packages/core/lib/mailer/providers/mailgun.ts | 35 ++++++++----- .../core/lib/mailer/providers/nodemailer.ts | 39 +++++++++------ packages/core/lib/mailer/providers/resend.ts | 21 +++++--- .../core/lib/mailer/providers/sendgrid.ts | 21 +++++--- packages/core/lib/mailer/service.ts | 15 +++--- packages/core/lib/queue/console/commands.ts | 4 +- packages/core/lib/queue/console/index.ts | 2 +- packages/core/lib/queue/core/index.ts | 2 +- .../core/lib/queue/core/payloadBuilder.ts | 4 +- packages/core/lib/queue/decorators.ts | 6 +-- packages/core/lib/queue/drivers/database.ts | 10 ++-- packages/core/lib/queue/drivers/index.ts | 8 +-- packages/core/lib/queue/drivers/redis.ts | 33 +++++++----- packages/core/lib/queue/drivers/sqs.ts | 34 +++++++------ packages/core/lib/queue/drivers/sync.ts | 6 +-- packages/core/lib/queue/events/JobFailed.ts | 4 +- .../core/lib/queue/events/JobProcessed.ts | 4 +- .../core/lib/queue/events/JobProcessing.ts | 4 +- packages/core/lib/queue/events/index.ts | 8 +-- .../core/lib/queue/events/jobMaxRetries.ts | 4 +- packages/core/lib/queue/index.ts | 14 +++--- packages/core/lib/queue/interfaces/index.ts | 2 +- packages/core/lib/queue/interfaces/job.ts | 2 +- packages/core/lib/queue/interfaces/options.ts | 2 +- packages/core/lib/queue/jobRunners/base.ts | 10 ++-- packages/core/lib/queue/metadata.ts | 8 +-- packages/core/lib/queue/queue.ts | 12 ++--- packages/core/lib/queue/service.ts | 10 ++-- packages/core/lib/queue/strategy/index.ts | 8 +-- .../lib/queue/strategy/pollQueueDriver.ts | 5 +- .../queue/strategy/subscribeQueueDriver.ts | 4 +- packages/core/lib/queue/worker.ts | 10 ++-- packages/core/lib/queue/workers/baseWorker.ts | 6 +-- packages/core/lib/queue/workers/pollQueue.ts | 30 +++++------ .../core/lib/queue/workers/subscribeQueue.ts | 10 ++-- packages/core/lib/reflections/index.ts | 4 +- packages/core/lib/reflections/reflector.ts | 2 +- .../lib/rest/foundation/controller-scanner.ts | 8 +-- .../lib/rest/foundation/guards/base-guard.ts | 4 +- packages/core/lib/rest/foundation/index.ts | 11 ++-- packages/core/lib/rest/foundation/kernel.ts | 8 +-- .../foundation/middlewares/configurator.ts | 6 +-- .../middlewares/middleware-composer.ts | 8 +-- packages/core/lib/rest/foundation/server.ts | 43 +++++++++------- .../http-server/contexts/execution-context.ts | 6 +-- .../contexts/http-execution-context.ts | 2 +- .../core/lib/rest/http-server/decorators.ts | 10 ++-- .../core/lib/rest/http-server/http-handler.ts | 11 ++-- packages/core/lib/rest/http-server/index.ts | 25 ++++++---- .../lib/rest/http-server/param-decorators.ts | 4 +- packages/core/lib/rest/http-server/reply.ts | 10 ++-- .../core/lib/rest/http-server/response.ts | 8 +-- .../lib/rest/http-server/route-explorer.ts | 25 +++++----- packages/core/lib/rest/http-server/server.ts | 18 +++---- packages/core/lib/rest/index.ts | 9 ++-- packages/core/lib/rest/middlewares/cors.ts | 4 +- packages/core/lib/rest/middlewares/helmet.ts | 8 +-- .../serializers/validationErrorSerializer.ts | 4 +- packages/core/lib/serviceProvider.ts | 42 +++++++++------- packages/core/lib/storage/driver-mapper.ts | 8 +-- packages/core/lib/storage/drivers/index.ts | 4 +- packages/core/lib/storage/drivers/local.ts | 10 ++-- .../core/lib/storage/drivers/s3Storage.ts | 44 +++++++++------- .../storage/file-handlers/uploaded-file.ts | 2 +- .../core/lib/storage/helpers/extensions.ts | 2 +- packages/core/lib/storage/helpers/index.ts | 2 +- packages/core/lib/storage/index.ts | 6 +-- packages/core/lib/storage/interfaces/index.ts | 6 +-- .../lib/storage/interfaces/storageDriver.ts | 2 +- packages/core/lib/storage/service.ts | 12 ++--- packages/core/lib/storage/storage.ts | 8 ++- packages/core/lib/transformers/index.ts | 6 +-- .../core/lib/transformers/transformable.ts | 9 ++-- packages/core/lib/transformers/transformer.ts | 6 +-- packages/core/lib/utils/array.ts | 4 +- packages/core/lib/utils/columnify.ts | 2 +- packages/core/lib/utils/helpers.ts | 15 +++--- packages/core/lib/utils/index.ts | 16 +++--- packages/core/lib/utils/logger.ts | 2 +- packages/core/lib/utils/number.ts | 2 +- packages/core/lib/utils/object.ts | 4 +- packages/core/lib/utils/packageLoader.ts | 6 +-- packages/core/lib/utils/path.ts | 3 +- packages/core/lib/utils/pluralise.ts | 2 +- packages/core/lib/utils/string.ts | 4 +- .../core/lib/validator/decorators/exists.ts | 4 +- .../core/lib/validator/decorators/index.ts | 7 +-- .../core/lib/validator/decorators/isUnique.ts | 4 +- .../validator/decorators/isValueFromConfig.ts | 8 +-- packages/core/lib/validator/index.ts | 12 ++--- .../core/lib/validator/validation-guard.ts | 6 +-- packages/core/lib/validator/validator.ts | 7 ++- packages/core/package.json | 11 ++++ .../core/resources/mail/components/CLink.tsx | 8 +-- .../core/resources/mail/components/CText.tsx | 8 +-- .../core/resources/mail/components/Footer.tsx | 6 +-- .../resources/mail/components/Greetings.tsx | 6 +-- .../core/resources/mail/components/Header.tsx | 2 +- .../mail/components/InjectMarkdown.tsx | 22 ++++---- .../core/resources/mail/components/Table.tsx | 10 ++-- .../resources/mail/components/brandFooter.tsx | 8 +-- .../core/resources/mail/components/button.tsx | 8 +-- .../resources/mail/components/codeBlock.tsx | 12 ++--- .../resources/mail/components/codeInline.tsx | 4 +- .../core/resources/mail/emails/components.tsx | 50 +++++++++---------- packages/core/resources/mail/emails/index.tsx | 34 ++++++------- packages/core/tsconfig.json | 5 +- 194 files changed, 943 insertions(+), 830 deletions(-) diff --git a/packages/core/lib/cache/cache.ts b/packages/core/lib/cache/cache.ts index 17b5417..30f9205 100644 --- a/packages/core/lib/cache/cache.ts +++ b/packages/core/lib/cache/cache.ts @@ -1,7 +1,7 @@ -import { ConfigService } from '../config'; -import { CacheDriver } from './interfaces'; -import { CacheService } from './service'; -import { genKeyFromObj } from './utils/genKey'; +import { ConfigService } from '../config/service.js'; +import { CacheDriver } from './interfaces/index.js'; +import { CacheService } from './service.js'; +import { genKeyFromObj } from './utils/genKey.js'; export class Cache { static store = CacheStore; diff --git a/packages/core/lib/cache/drivers/dice-db.ts b/packages/core/lib/cache/drivers/dice-db.ts index da21dfd..41cea4c 100644 --- a/packages/core/lib/cache/drivers/dice-db.ts +++ b/packages/core/lib/cache/drivers/dice-db.ts @@ -1,7 +1,6 @@ -import { GenericFunction } from '../../interfaces'; -import { Package } from '../../utils'; -import { CacheDriver, RedisDriverOption } from '../interfaces'; -import IORedis from 'ioredis'; +import { GenericFunction } from '../../interfaces/index.js'; +import { CacheDriver, RedisDriverOption } from '../interfaces/index.js'; +import { Redis } from 'ioredis'; export class DiceDbDriver implements CacheDriver { private client: any; @@ -9,12 +8,12 @@ export class DiceDbDriver implements CacheDriver { constructor(private options: RedisDriverOption) { // const IORedis = Package.load('ioredis'); if (options.url) { - this.client = new IORedis(options.url, { + this.client = new Redis(options.url, { db: options.database || 0, enableReadyCheck: false, }); } else { - this.client = new IORedis({ + this.client = new Redis({ host: options.host, port: options.port, username: options.username, diff --git a/packages/core/lib/cache/drivers/inMemory.ts b/packages/core/lib/cache/drivers/inMemory.ts index f4fd4a1..3e9991d 100644 --- a/packages/core/lib/cache/drivers/inMemory.ts +++ b/packages/core/lib/cache/drivers/inMemory.ts @@ -1,17 +1,16 @@ -import { GenericFunction } from '../../interfaces'; -import { Package } from '../../utils/packageLoader'; -import { CacheDriver, InMemoryDriverOption } from '../interfaces'; +import { GenericFunction } from '../../interfaces/index.js'; +import { Package } from '../../utils/packageLoader.js'; +import { CacheDriver, InMemoryDriverOption } from '../interfaces/index.js'; export class InMemoryDriver implements CacheDriver { private client: any; constructor(private options: InMemoryDriverOption) { - const NodeCache = Package.load('node-cache'); - - this.client = new NodeCache({ stdTTL: 100, checkperiod: 120 }); + this.initialiseModules(); } async get(key: string): Promise { + await this.initialiseModules(); const cacheKey = `${this.options.prefix}:::${key}`; return this.client.get(cacheKey); } @@ -21,6 +20,7 @@ export class InMemoryDriver implements CacheDriver { value: string | Record, ttlInSec?: number | undefined, ): Promise { + await this.initialiseModules(); const cacheKey = `${this.options.prefix}:::${key}`; if (ttlInSec) { @@ -31,6 +31,7 @@ export class InMemoryDriver implements CacheDriver { } async has(key: string): Promise { + await this.initialiseModules(); const cacheKey = `${this.options.prefix}:::${key}`; return this.client.has(cacheKey); } @@ -40,6 +41,7 @@ export class InMemoryDriver implements CacheDriver { cb: GenericFunction, ttlInSec: number, ): Promise { + await this.initialiseModules(); const exists = await this.has(key); if (exists) return this.get(key); @@ -66,6 +68,7 @@ export class InMemoryDriver implements CacheDriver { } async forget(key: string): Promise { + await this.initialiseModules(); try { const cacheKey = `${this.options.prefix}:::${key}`; await this.client.del(cacheKey); @@ -78,4 +81,10 @@ export class InMemoryDriver implements CacheDriver { getClient(): T { return this.client as unknown as T; } + + async initialiseModules(): Promise { + if (this.client) return; + const NodeCache = await Package.load('node-cache'); + this.client = new NodeCache({ stdTTL: 100, checkperiod: 120 }); + } } diff --git a/packages/core/lib/cache/drivers/redis.ts b/packages/core/lib/cache/drivers/redis.ts index 87ab0a5..1ef54ed 100644 --- a/packages/core/lib/cache/drivers/redis.ts +++ b/packages/core/lib/cache/drivers/redis.ts @@ -1,23 +1,27 @@ -import { GenericFunction } from '../../interfaces'; -import { Package } from '../../utils'; -import { CacheDriver, RedisDriverOption } from '../interfaces'; +import { GenericFunction } from '../../interfaces/index.js'; +import { Package } from '../../utils/packageLoader.js'; +import { CacheDriver, RedisDriverOption } from '../interfaces/index.js'; export class RedisDriver implements CacheDriver { private client: any; + private IORedis: any; constructor(private options: RedisDriverOption) { - const IORedis = Package.load('ioredis'); - if (options.url) { - this.client = new IORedis(options.url, { db: options.database || 0 }); - } else { - this.client = new IORedis({ - host: options.host, - port: options.port, - username: options.username, - password: options.password, - db: options.database, - }); - } + this.initializeModules().then(() => { + if (options.url) { + this.client = new this.IORedis(options.url, { + db: options.database || 0, + }); + } else { + this.client = new this.IORedis({ + host: options.host, + port: options.port, + username: options.username, + password: options.password, + db: options.database, + }); + } + }); } async get(key: string): Promise { @@ -88,4 +92,9 @@ export class RedisDriver implements CacheDriver { getClient(): T { return this.client as unknown as T; } + + async initializeModules(): Promise { + const { Redis } = await Package.load('ioredis'); + this.IORedis = Redis; + } } diff --git a/packages/core/lib/cache/index.ts b/packages/core/lib/cache/index.ts index 5f2cba4..6586641 100644 --- a/packages/core/lib/cache/index.ts +++ b/packages/core/lib/cache/index.ts @@ -1,3 +1,3 @@ -export * from './service'; -export * from './interfaces'; -export * from './cache'; +export * from './service.js'; +export * from './interfaces/index.js'; +export * from './cache.js'; diff --git a/packages/core/lib/cache/interfaces/driver.ts b/packages/core/lib/cache/interfaces/driver.ts index cb371b9..6515f94 100644 --- a/packages/core/lib/cache/interfaces/driver.ts +++ b/packages/core/lib/cache/interfaces/driver.ts @@ -1,4 +1,4 @@ -import { GenericFunction } from '../../interfaces'; +import { GenericFunction } from '../../interfaces/index.js'; export interface CacheDriver { /** diff --git a/packages/core/lib/cache/interfaces/index.ts b/packages/core/lib/cache/interfaces/index.ts index 90f7d5c..029c33c 100644 --- a/packages/core/lib/cache/interfaces/index.ts +++ b/packages/core/lib/cache/interfaces/index.ts @@ -1,2 +1,2 @@ -export * from './options'; -export * from './driver'; +export * from './options.js'; +export * from './driver.js'; diff --git a/packages/core/lib/cache/service.ts b/packages/core/lib/cache/service.ts index 2802264..187d329 100644 --- a/packages/core/lib/cache/service.ts +++ b/packages/core/lib/cache/service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@nestjs/common'; -import { InMemoryDriver } from './drivers/inMemory'; -import { RedisDriver } from './drivers/redis'; +import { InMemoryDriver } from './drivers/inMemory.js'; +import { RedisDriver } from './drivers/redis.js'; import { CacheDriver, InMemoryDriverOption, RedisDriverOption, -} from './interfaces'; -import { DiceDbDriver } from './drivers/dice-db'; +} from './interfaces/index.js'; +import { DiceDbDriver } from './drivers/dice-db.js'; @Injectable() export class CacheService { diff --git a/packages/core/lib/cache/utils/genKey.ts b/packages/core/lib/cache/utils/genKey.ts index b434c48..df24ef8 100644 --- a/packages/core/lib/cache/utils/genKey.ts +++ b/packages/core/lib/cache/utils/genKey.ts @@ -1,5 +1,5 @@ import { createHash } from 'node:crypto'; -import { Arr } from '../../utils/array'; +import { Arr } from '../../utils/array.js'; export const genKeyFromObj = ( obj: Record, diff --git a/packages/core/lib/codegen/command.ts b/packages/core/lib/codegen/command.ts index 83d46d5..afc4865 100644 --- a/packages/core/lib/codegen/command.ts +++ b/packages/core/lib/codegen/command.ts @@ -1,9 +1,9 @@ import { join } from 'path'; -import { Command, CommandRunner, ConsoleIO } from '../console'; -import { Str } from '../utils/string'; -import { CodegenService } from './service'; -import { getClassNamesFromFilePath } from './utils'; -import { Injectable } from '../foundation/decorators'; +import { Command, CommandRunner, ConsoleIO } from '../console/index.js'; +import { Str } from '../utils/string.js'; +import { CodegenService } from './service.js'; +import { getClassNamesFromFilePath } from './utils.js'; +import { Injectable } from '../foundation/decorators.js'; @Injectable() export class CodegenCommand { diff --git a/packages/core/lib/codegen/service.ts b/packages/core/lib/codegen/service.ts index 8cd89a4..e7985ed 100644 --- a/packages/core/lib/codegen/service.ts +++ b/packages/core/lib/codegen/service.ts @@ -3,7 +3,7 @@ import { join } from 'path'; import { Injectable } from '@nestjs/common'; import { Eta } from 'eta'; import { Node, Project, SyntaxKind } from 'ts-morph'; -import { findProjectRoot } from '../utils'; +import { findProjectRoot } from '../utils/index.js'; @Injectable() export class CodegenService { diff --git a/packages/core/lib/codegen/utils.ts b/packages/core/lib/codegen/utils.ts index 65ee270..ad60ed7 100644 --- a/packages/core/lib/codegen/utils.ts +++ b/packages/core/lib/codegen/utils.ts @@ -1,6 +1,6 @@ import { join } from 'path'; import { Project } from 'ts-morph'; -import { findProjectRoot } from '../utils'; +import { findProjectRoot } from '../utils/index.js'; export const getClassNamesFromFilePath = (filePath: string): string[] => { const project = new Project(); diff --git a/packages/core/lib/config/builder.ts b/packages/core/lib/config/builder.ts index 49e6367..fd055a2 100644 --- a/packages/core/lib/config/builder.ts +++ b/packages/core/lib/config/builder.ts @@ -2,7 +2,7 @@ import { NamespacedConfigMapKeys, NamespacedConfigMapValues, RegisterNamespaceReturnType, -} from './options'; +} from './options.js'; export class ConfigBuilder { static async build( diff --git a/packages/core/lib/config/command.ts b/packages/core/lib/config/command.ts index 38bd74f..9e8c833 100644 --- a/packages/core/lib/config/command.ts +++ b/packages/core/lib/config/command.ts @@ -1,11 +1,11 @@ -import { ConfigMap } from './options'; -import { CONFIG_FACTORY } from './constant'; +import { CONFIG_FACTORY } from './constant.js'; +import type { ConfigMap } from './options.js'; import pc from 'picocolors'; import archy from 'archy'; -import { jsonToArchy } from '../utils/console-helpers'; -import { Command } from '../console/decorators'; -import { ConsoleIO } from '../console/consoleIO'; -import { Inject } from '../foundation/decorators'; +import { jsonToArchy } from '../utils/console-helpers.js'; +import { Command } from '../console/decorators.js'; +import { ConsoleIO } from '../console/consoleIO.js'; +import { Inject } from '../foundation/decorators.js'; @Command('config:view {--ns : Namespace of a particular config}', { desc: 'Command to view config for a given namespace', diff --git a/packages/core/lib/config/index.ts b/packages/core/lib/config/index.ts index e20cfe1..373466a 100644 --- a/packages/core/lib/config/index.ts +++ b/packages/core/lib/config/index.ts @@ -1,6 +1,6 @@ -export * from './builder'; -export * from './register-namespace'; -export * from './options'; -export * from './service'; -export * from './command'; -export * from './constant'; +export * from './builder.js'; +export * from './register-namespace.js'; +export * from './options.js'; +export * from './service.js'; +export * from './command.js'; +export * from './constant.js'; diff --git a/packages/core/lib/config/options.ts b/packages/core/lib/config/options.ts index 9cec9f0..ff2c6e3 100644 --- a/packages/core/lib/config/options.ts +++ b/packages/core/lib/config/options.ts @@ -33,4 +33,5 @@ export type NamespacedConfigMap = Map< NamespacedConfigMapKeys, NamespacedConfigMapValues >; + export type ConfigMap = Map; diff --git a/packages/core/lib/config/register-namespace.ts b/packages/core/lib/config/register-namespace.ts index 9b66ec3..925d300 100644 --- a/packages/core/lib/config/register-namespace.ts +++ b/packages/core/lib/config/register-namespace.ts @@ -1,11 +1,11 @@ -import { LiteralString } from '../type-helpers'; +import { LiteralString } from '../type-helpers/index.js'; import { RegisterNamespaceOptions, RegisterNamespaceReturnType, -} from './options'; +} from './options.js'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -require('dotenv').config(); +import dotenv from 'dotenv'; +dotenv.config(); export const configNamespace = ( namespace: LiteralString, diff --git a/packages/core/lib/config/service.ts b/packages/core/lib/config/service.ts index d17028e..e1cafe0 100644 --- a/packages/core/lib/config/service.ts +++ b/packages/core/lib/config/service.ts @@ -1,8 +1,8 @@ -import { Inject, Injectable } from '../foundation/decorators'; -import { DotNotation, GetNestedPropertyType } from '../type-helpers'; -import { Obj } from '../utils/object'; -import { CONFIG_FACTORY } from './constant'; -import { ConfigMap, NamespacedConfigMapValues } from './options'; +import { Inject, Injectable } from '../foundation/decorators.js'; +import { DotNotation, GetNestedPropertyType } from '../type-helpers/index.js'; +import { Obj } from '../utils/object.js'; +import { CONFIG_FACTORY } from './constant.js'; +import type { ConfigMap, NamespacedConfigMapValues } from './options.js'; type ConfigPaths = DotNotation; diff --git a/packages/core/lib/console/argumentParser.ts b/packages/core/lib/console/argumentParser.ts index 0262306..a5aded4 100644 --- a/packages/core/lib/console/argumentParser.ts +++ b/packages/core/lib/console/argumentParser.ts @@ -1,6 +1,6 @@ -import { InternalLogger } from '../utils/logger'; -import { Str } from '../utils/string'; -import { ArgumentOptionObject, ArgumentParserOutput } from './interfaces'; +import { InternalLogger } from '../utils/logger.js'; +import { Str } from '../utils/string.js'; +import { ArgumentOptionObject, ArgumentParserOutput } from './interfaces.js'; export class ArgumentParser { constructor(private exp: string) {} diff --git a/packages/core/lib/console/commands/index.ts b/packages/core/lib/console/commands/index.ts index 557a13c..b303c5b 100644 --- a/packages/core/lib/console/commands/index.ts +++ b/packages/core/lib/console/commands/index.ts @@ -1 +1 @@ -export * from './listCommands'; +export * from './listCommands.js'; diff --git a/packages/core/lib/console/commands/listCommands.ts b/packages/core/lib/console/commands/listCommands.ts index 1d5a1c3..d9df2ba 100644 --- a/packages/core/lib/console/commands/listCommands.ts +++ b/packages/core/lib/console/commands/listCommands.ts @@ -1,12 +1,12 @@ import { readFileSync } from 'fs'; import { join } from 'path'; import { Injectable } from '@nestjs/common'; -import * as pc from 'picocolors'; -import { columnify } from '../../utils/columnify'; -import { Str } from '../../utils/string'; -import { Command } from '../decorators'; -import { CommandMeta } from '../metadata'; -import { findProjectRoot } from '../../utils'; +import pc from 'picocolors'; +import { columnify } from '../../utils/columnify.js'; +import { Str } from '../../utils/string.js'; +import { Command } from '../decorators.js'; +import { CommandMeta } from '../metadata.js'; +import { findProjectRoot } from '../../utils/index.js'; @Injectable() @Command('list', { desc: 'Command to list all the commands' }) diff --git a/packages/core/lib/console/commands/route-list.ts b/packages/core/lib/console/commands/route-list.ts index d0d767f..c342e7a 100644 --- a/packages/core/lib/console/commands/route-list.ts +++ b/packages/core/lib/console/commands/route-list.ts @@ -1,7 +1,7 @@ import { DiscoveryService, MetadataScanner, ModuleRef } from '@nestjs/core'; -import { Command } from '../decorators'; -import { columnify } from '../../utils/columnify'; -import { RouteExplorer } from '../../rest'; +import { Command } from '../decorators.js'; +import { columnify } from '../../utils/columnify.js'; +import { RouteExplorer } from '../../rest/index.js'; @Command('routes:list') export class ListRouteCommand { diff --git a/packages/core/lib/console/consoleIO.ts b/packages/core/lib/console/consoleIO.ts index efa47f5..3727a1a 100644 --- a/packages/core/lib/console/consoleIO.ts +++ b/packages/core/lib/console/consoleIO.ts @@ -1,8 +1,8 @@ -import { Obj } from '../utils'; -import { ArgumentParser } from './argumentParser'; -import { Inquirer } from './inquirer'; -import { ArgumentParserOutput } from './interfaces'; -import { ConsoleLogger } from './logger'; +import { Obj } from '../utils/object.js'; +import { ArgumentParser } from './argumentParser.js'; +import { Inquirer } from './inquirer.js'; +import { ArgumentParserOutput } from './interfaces.js'; +import { ConsoleLogger } from './logger.js'; export class ConsoleIO { schema: ArgumentParserOutput; diff --git a/packages/core/lib/console/decorators.ts b/packages/core/lib/console/decorators.ts index df2f60a..668482f 100644 --- a/packages/core/lib/console/decorators.ts +++ b/packages/core/lib/console/decorators.ts @@ -1,6 +1,6 @@ import 'reflect-metadata'; -import { ConsoleConstants } from './constants'; -import { CommandMetaOptions } from './interfaces'; +import { ConsoleConstants } from './constants.js'; +import { CommandMetaOptions } from './interfaces.js'; /** * Command decorator function to add a new command to CommandMeta class diff --git a/packages/core/lib/console/index.ts b/packages/core/lib/console/index.ts index ea2c365..ea3593a 100644 --- a/packages/core/lib/console/index.ts +++ b/packages/core/lib/console/index.ts @@ -1,8 +1,8 @@ -export * from './metadata'; -export * from './decorators'; -export * from './logger'; -export * from './inquirer'; -export * from './commands'; -export * from './runner'; -export * from './interfaces'; -export * from './consoleIO'; +export * from './metadata.js'; +export * from './decorators.js'; +export * from './logger.js'; +export * from './inquirer.js'; +export * from './commands/index.js'; +export * from './runner.js'; +export * from './interfaces.js'; +export * from './consoleIO.js'; diff --git a/packages/core/lib/console/inquirer.ts b/packages/core/lib/console/inquirer.ts index 4f57a93..9807d4b 100644 --- a/packages/core/lib/console/inquirer.ts +++ b/packages/core/lib/console/inquirer.ts @@ -1,5 +1,6 @@ -import { prompt } from 'enquirer'; +import eqnuirer from 'enquirer'; +const { prompt } = eqnuirer; export class Inquirer { /** * Use this method to ask the client about any input. diff --git a/packages/core/lib/console/interfaces.ts b/packages/core/lib/console/interfaces.ts index 2a575b4..41db3e5 100644 --- a/packages/core/lib/console/interfaces.ts +++ b/packages/core/lib/console/interfaces.ts @@ -1,4 +1,4 @@ -import { ConsoleIO } from './consoleIO'; +import { ConsoleIO } from './consoleIO.js'; export interface CommandMetaOptions { desc?: string; diff --git a/packages/core/lib/console/logger.ts b/packages/core/lib/console/logger.ts index b9e61e5..0cba129 100644 --- a/packages/core/lib/console/logger.ts +++ b/packages/core/lib/console/logger.ts @@ -1,6 +1,6 @@ import Table from 'cli-table3'; import pc from 'picocolors'; -import { Str } from '../utils/string'; +import { Str } from '../utils/string.js'; export class ConsoleLogger { /** diff --git a/packages/core/lib/console/metadata.ts b/packages/core/lib/console/metadata.ts index 7a9c5e1..faacfd3 100644 --- a/packages/core/lib/console/metadata.ts +++ b/packages/core/lib/console/metadata.ts @@ -1,6 +1,6 @@ -import { GenericFunction } from '../interfaces'; -import { ArgumentParser } from './argumentParser'; -import { CommandObject, CommandMetaOptions } from './interfaces'; +import { GenericFunction } from '../interfaces/index.js'; +import { ArgumentParser } from './argumentParser.js'; +import { CommandObject, CommandMetaOptions } from './interfaces.js'; export class CommandMeta { private static commands: Record = {}; diff --git a/packages/core/lib/console/runner.ts b/packages/core/lib/console/runner.ts index b286556..15cb19a 100644 --- a/packages/core/lib/console/runner.ts +++ b/packages/core/lib/console/runner.ts @@ -1,11 +1,11 @@ import * as pc from 'picocolors'; import yargsParser from 'yargs-parser'; -import { columnify } from '../utils/columnify'; -import { isEmpty } from '../utils/helpers'; -import { ConsoleIO } from './consoleIO'; -import { CommandObject } from './interfaces'; -import { ConsoleLogger } from './logger'; -import { CommandMeta } from './metadata'; +import { columnify } from '../utils/columnify.js'; +import { isEmpty } from '../utils/helpers.js'; +import { ConsoleIO } from './consoleIO.js'; +import { CommandObject } from './interfaces.js'; +import { ConsoleLogger } from './logger.js'; +import { CommandMeta } from './metadata.js'; export class CommandRunner { static async run(cmd: string, options?: { silent: boolean }): Promise { @@ -45,7 +45,7 @@ export class CommandRunner { const returnFromCommand = await command.target(_cli); process.nextTick(() => { - returnFromCommand && process.exit(1); + returnFromCommand && process.exit(0); }); return; diff --git a/packages/core/lib/database/baseModel.ts b/packages/core/lib/database/baseModel.ts index b8a30ff..3d793aa 100644 --- a/packages/core/lib/database/baseModel.ts +++ b/packages/core/lib/database/baseModel.ts @@ -1,7 +1,7 @@ import { Model } from 'objection'; -import { LoadRelOptions, LoadRelSchema } from './interfaces'; -import { CustomQueryBuilder } from './queryBuilders/custom'; -import { SoftDeleteQueryBuilder } from './queryBuilders/softDelete'; +import { LoadRelOptions, LoadRelSchema } from './interfaces.js'; +import { CustomQueryBuilder } from './queryBuilders/custom.js'; +import { SoftDeleteQueryBuilder } from './queryBuilders/softDelete.js'; export class BaseModel extends Model { readonly id?: number | string; @@ -17,7 +17,9 @@ export class BaseModel extends Model { */ static softDelete = false; - QueryBuilderType!: CustomQueryBuilder | SoftDeleteQueryBuilder; + declare QueryBuilderType: + | CustomQueryBuilder + | SoftDeleteQueryBuilder; static get QueryBuilder() { if (this.softDelete) return SoftDeleteQueryBuilder; diff --git a/packages/core/lib/database/commands/migrations.ts b/packages/core/lib/database/commands/migrations.ts index 2faa646..10001e8 100644 --- a/packages/core/lib/database/commands/migrations.ts +++ b/packages/core/lib/database/commands/migrations.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; import * as pc from 'picocolors'; -import { Command, ConsoleIO } from '../../console'; -import { Str } from '../../utils/string'; -import { ObjectionService } from '../service'; +import { Command, ConsoleIO } from '../../console/index.js'; +import { Str } from '../../utils/string.js'; +import { ObjectionService } from '../service.js'; @Injectable() export class DbOperationsCommand { diff --git a/packages/core/lib/database/decorators.ts b/packages/core/lib/database/decorators.ts index 441af65..404359a 100644 --- a/packages/core/lib/database/decorators.ts +++ b/packages/core/lib/database/decorators.ts @@ -1,5 +1,5 @@ -import { GenericFunction } from '../index'; -import { BaseModel } from './baseModel'; +import { GenericFunction } from '../interfaces/index.js'; +import { BaseModel } from './baseModel.js'; export function InjectModel(model: any): GenericFunction { if (!(model.prototype instanceof BaseModel)) { diff --git a/packages/core/lib/database/exceptions/index.ts b/packages/core/lib/database/exceptions/index.ts index 7d0291c..ce45e96 100644 --- a/packages/core/lib/database/exceptions/index.ts +++ b/packages/core/lib/database/exceptions/index.ts @@ -1,2 +1,2 @@ -export * from './connectionNotFound'; -export * from './modelNotFound'; +export * from './connectionNotFound.js'; +export * from './modelNotFound.js'; diff --git a/packages/core/lib/database/index.ts b/packages/core/lib/database/index.ts index ef1995f..53126c7 100644 --- a/packages/core/lib/database/index.ts +++ b/packages/core/lib/database/index.ts @@ -1,10 +1,10 @@ -export * from './baseModel'; -export * from './decorators'; -export * from './queryBuilders/custom'; -export * from './queryBuilders/softDelete'; -export * from './repositories/contract'; -export * from './repositories/database'; -export * from './interfaces'; -export * from './options'; -export * from './service'; -export * from './exceptions'; +export * from './baseModel.js'; +export * from './decorators.js'; +export * from './queryBuilders/custom.js'; +export * from './queryBuilders/softDelete.js'; +export * from './repositories/contract.js'; +export * from './repositories/database.js'; +export * from './interfaces.js'; +export * from './options.js'; +export * from './service.js'; +export * from './exceptions/index.js'; diff --git a/packages/core/lib/database/queryBuilders/custom.ts b/packages/core/lib/database/queryBuilders/custom.ts index 23fa47a..1598a43 100644 --- a/packages/core/lib/database/queryBuilders/custom.ts +++ b/packages/core/lib/database/queryBuilders/custom.ts @@ -6,17 +6,17 @@ import { PrimitiveValue, Expression, } from 'objection'; -import { GenericFunction } from '../../interfaces'; -import { Pagination } from '../interfaces'; +import { GenericFunction } from '../../interfaces/index.js'; +import { Pagination } from '../interfaces.js'; export class CustomQueryBuilder extends QueryBuilder< M, R > { - ArrayQueryBuilderType!: CustomQueryBuilder; - SingleQueryBuilderType!: CustomQueryBuilder; - NumberQueryBuilderType!: CustomQueryBuilder; - PageQueryBuilderType!: CustomQueryBuilder>; + declare ArrayQueryBuilderType: CustomQueryBuilder; + declare SingleQueryBuilderType: CustomQueryBuilder; + declare NumberQueryBuilderType: CustomQueryBuilder; + declare PageQueryBuilderType: CustomQueryBuilder>; async paginate(page: number, perPage: number): Promise> { page = +page ? +page : 1; diff --git a/packages/core/lib/database/queryBuilders/softDelete.ts b/packages/core/lib/database/queryBuilders/softDelete.ts index 61111dc..350d79c 100644 --- a/packages/core/lib/database/queryBuilders/softDelete.ts +++ b/packages/core/lib/database/queryBuilders/softDelete.ts @@ -4,7 +4,7 @@ import { PartialModelObject, QueryBuilder, } from 'objection'; -import { CustomQueryBuilder } from './custom'; +import { CustomQueryBuilder } from './custom.js'; export class SoftDeleteQueryBuilder< M extends Model, diff --git a/packages/core/lib/database/repositories/contract.ts b/packages/core/lib/database/repositories/contract.ts index 619c4ad..32a2ff5 100644 --- a/packages/core/lib/database/repositories/contract.ts +++ b/packages/core/lib/database/repositories/contract.ts @@ -1,6 +1,6 @@ import { Knex as KnexType } from 'knex'; -import { BaseModel } from '../baseModel'; -import { ModelKeys } from '../interfaces'; +import { BaseModel } from '../baseModel.js'; +import { ModelKeys } from '../interfaces.js'; export interface RepositoryContract { model: any; diff --git a/packages/core/lib/database/repositories/database.ts b/packages/core/lib/database/repositories/database.ts index 6776d50..4230159 100644 --- a/packages/core/lib/database/repositories/database.ts +++ b/packages/core/lib/database/repositories/database.ts @@ -1,12 +1,12 @@ import { Knex, Knex as KnexType } from 'knex'; import { PrimitiveValue, Expression } from 'objection'; -import { BaseModel } from '../baseModel'; -import { ModelNotFound } from '../exceptions'; -import { RepositoryError } from '../exceptions/repoError'; -import { ModelKeys } from '../interfaces'; -import { CustomQueryBuilder } from '../queryBuilders/custom'; -import { ObjectionService } from '../service'; -import { RepositoryContract } from './contract'; +import { BaseModel } from '../baseModel.js'; +import { ModelNotFound } from '../exceptions/modelNotFound.js'; +import { RepositoryError } from '../exceptions/repoError.js'; +import { ModelKeys } from '../interfaces.js'; +import { CustomQueryBuilder } from '../queryBuilders/custom.js'; +import { ObjectionService } from '../service.js'; +import { RepositoryContract } from './contract.js'; export class DatabaseRepository implements RepositoryContract diff --git a/packages/core/lib/database/service.ts b/packages/core/lib/database/service.ts index 2123275..9072af8 100644 --- a/packages/core/lib/database/service.ts +++ b/packages/core/lib/database/service.ts @@ -1,9 +1,9 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import Knex, { Knex as KnexType } from 'knex'; -import { BaseModel } from './baseModel'; -import { ConnectionNotFound } from './exceptions'; -import { DatabaseOptions, DbConnectionOptions } from './options'; -import { ConfigService } from '../config'; +import { BaseModel } from './baseModel.js'; +import { ConnectionNotFound } from './exceptions/connectionNotFound.js'; +import { DatabaseOptions, DbConnectionOptions } from './options.js'; +import { ConfigService } from '../config/index.js'; @Injectable() export class ObjectionService implements OnModuleInit { diff --git a/packages/core/lib/dev-server/build.ts b/packages/core/lib/dev-server/build.ts index c16d563..1b31fe1 100644 --- a/packages/core/lib/dev-server/build.ts +++ b/packages/core/lib/dev-server/build.ts @@ -1,5 +1,5 @@ -import { Command, ConsoleIO } from '../console'; -import { getTime, Package } from '../utils'; +import { Command, ConsoleIO } from '../console/index.js'; +import { getTime, Package } from '../utils/index.js'; import pc from 'picocolors'; @Command( @@ -18,7 +18,7 @@ export class BuildProjectCommand { const config = _cli.option('config'); const now = Date.now(); - const { BuildCommand } = Package.load('@intentjs/cli'); + const { BuildCommand } = await Package.load('@intentjs/cli'); const command = new BuildCommand(); await command.handle({ debug, diff --git a/packages/core/lib/dev-server/serve.ts b/packages/core/lib/dev-server/serve.ts index d94be2b..42d595d 100644 --- a/packages/core/lib/dev-server/serve.ts +++ b/packages/core/lib/dev-server/serve.ts @@ -1,5 +1,5 @@ -import { Command, ConsoleIO } from '../console'; -import { Package } from '../utils'; +import { Command, ConsoleIO } from '../console/index.js'; +import { Package } from '../utils/index.js'; @Command( `dev @@ -16,7 +16,7 @@ export class DevServerCommand { const config = _cli.option('config'); const port = +_cli.option('port'); - const { StartServerCommand } = Package.load('@intentjs/cli'); + const { StartServerCommand } = await Package.load('@intentjs/cli'); const command = new StartServerCommand(); await command.handle({ watch: true, diff --git a/packages/core/lib/events/decorator.ts b/packages/core/lib/events/decorator.ts index 5a292c2..957912f 100644 --- a/packages/core/lib/events/decorator.ts +++ b/packages/core/lib/events/decorator.ts @@ -1,6 +1,6 @@ import 'reflect-metadata'; -import { GenericClass } from '../interfaces'; -import { IntentEventConstants } from './constants'; +import { GenericClass } from '../interfaces/index.js'; +import { IntentEventConstants } from './constants.js'; export function Event(name?: string) { return function (target: GenericClass) { diff --git a/packages/core/lib/events/event.ts b/packages/core/lib/events/event.ts index 849207c..a35b1d0 100644 --- a/packages/core/lib/events/event.ts +++ b/packages/core/lib/events/event.ts @@ -1,10 +1,10 @@ import 'reflect-metadata'; -import { Dispatch } from '../queue/queue'; -import { JobOptions } from '../queue/strategy'; -import { isBoolean } from '../utils/helpers'; -import { IntentEventConstants } from './constants'; -import { difference } from './helpers'; -import { EventListenerRunner } from './runner'; +import { Dispatch } from '../queue/queue.js'; +import { JobOptions } from '../queue/strategy/index.js'; +import { isBoolean } from '../utils/helpers.js'; +import { IntentEventConstants } from './constants.js'; +import { difference } from './helpers.js'; +import { EventListenerRunner } from './runner.js'; export class EmitsEvent { private reservedKeyNames = [ diff --git a/packages/core/lib/events/helpers.ts b/packages/core/lib/events/helpers.ts index 605d794..b6307db 100644 --- a/packages/core/lib/events/helpers.ts +++ b/packages/core/lib/events/helpers.ts @@ -1,4 +1,4 @@ -import { EmitsEvent } from './event'; +import { EmitsEvent } from './event.js'; export async function Emit(...events: EmitsEvent[]): Promise { const promises = []; diff --git a/packages/core/lib/events/index.ts b/packages/core/lib/events/index.ts index 392c920..969ac35 100644 --- a/packages/core/lib/events/index.ts +++ b/packages/core/lib/events/index.ts @@ -1,7 +1,7 @@ -export * from './event'; -export * from './decorator'; -export * from './metadata'; -export * from './interfaces'; -export * from './helpers'; -export * from './jobListener'; -export * from './runner'; +export * from './event.js'; +export * from './decorator.js'; +export * from './metadata.js'; +export * from './interfaces.js'; +export * from './helpers.js'; +export * from './jobListener.js'; +export * from './runner.js'; diff --git a/packages/core/lib/events/interfaces.ts b/packages/core/lib/events/interfaces.ts index c5b5fbe..4055830 100644 --- a/packages/core/lib/events/interfaces.ts +++ b/packages/core/lib/events/interfaces.ts @@ -1,4 +1,4 @@ -import { JobOptions } from '../queue/strategy'; +import { JobOptions } from '../queue/strategy/index.js'; export interface QueueableEvent { /** diff --git a/packages/core/lib/events/jobListener.ts b/packages/core/lib/events/jobListener.ts index cbf7d80..e92cba9 100644 --- a/packages/core/lib/events/jobListener.ts +++ b/packages/core/lib/events/jobListener.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; -import { Job } from '../queue/decorators'; -import { IntentEventConstants } from './constants'; -import { EventListenerRunner } from './runner'; +import { Job } from '../queue/decorators.js'; +import { IntentEventConstants } from './constants.js'; +import { EventListenerRunner } from './runner.js'; @Injectable() export class EventQueueWorker { diff --git a/packages/core/lib/events/metadata.ts b/packages/core/lib/events/metadata.ts index 83003ae..d91e704 100644 --- a/packages/core/lib/events/metadata.ts +++ b/packages/core/lib/events/metadata.ts @@ -1,4 +1,4 @@ -import { GenericFunction } from '../interfaces'; +import { GenericFunction } from '../interfaces/index.js'; export class EventMetadata { private static store: Record = { events: {}, listeners: {} }; diff --git a/packages/core/lib/events/runner.ts b/packages/core/lib/events/runner.ts index 301b723..c0eb1e9 100644 --- a/packages/core/lib/events/runner.ts +++ b/packages/core/lib/events/runner.ts @@ -1,5 +1,5 @@ -import { isEmpty } from '../utils/helpers'; -import { EventMetadata } from './metadata'; +import { isEmpty } from '../utils/helpers.js'; +import { EventMetadata } from './metadata.js'; export class EventListenerRunner { async handle(eventName: string, eventData: any): Promise { diff --git a/packages/core/lib/exceptions/base-exception-handler.ts b/packages/core/lib/exceptions/base-exception-handler.ts index bd67c71..ccb2c70 100644 --- a/packages/core/lib/exceptions/base-exception-handler.ts +++ b/packages/core/lib/exceptions/base-exception-handler.ts @@ -1,12 +1,12 @@ -import { ConfigService } from '../config/service'; -import { Log } from '../logger'; -import { Package } from '../utils'; -import { Type } from '../interfaces'; -import { HttpException } from './http-exception'; -import { ValidationFailed } from './validation-failed'; -import { HttpStatus } from '../rest/http-server/status-codes'; -import { ExecutionContext } from '../rest/http-server/contexts/execution-context'; -import { RouteNotFoundException } from './route-not-found-exception'; +import { ConfigService } from '../config/service.js'; +import { Log } from '../logger/index.js'; +import { Package } from '../utils/index.js'; +import { Type } from '../interfaces/index.js'; +import { HttpException } from './http-exception.js'; +import { ValidationFailed } from './validation-failed.js'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { ExecutionContext } from '../rest/http-server/contexts/execution-context.js'; +import { RouteNotFoundException } from './route-not-found-exception.js'; export abstract class IntentExceptionFilter { doNotReport(): Array> { @@ -20,7 +20,7 @@ export abstract class IntentExceptionFilter { async catch(context: ExecutionContext, exception: any): Promise { const ctx = context.switchToHttp(); - this.reportToSentry(exception); + await this.reportToSentry(exception); Log().error('', exception); @@ -61,12 +61,12 @@ export abstract class IntentExceptionFilter { return res.status(this.getStatus(exception)).json(exception); } - reportToSentry(exception: any): void { + async reportToSentry(exception: any): Promise { const sentryConfig = ConfigService.get('app.sentry'); if (!sentryConfig?.dsn) return; const exceptionConstructor = exception?.constructor; - const sentry = Package.load('@sentry/node'); + const sentry = await Package.load('@sentry/node'); if ( exceptionConstructor && !this.doNotReport().includes(exceptionConstructor) diff --git a/packages/core/lib/exceptions/file-not-found-exception.ts b/packages/core/lib/exceptions/file-not-found-exception.ts index 68afc8c..b3cfcf4 100644 --- a/packages/core/lib/exceptions/file-not-found-exception.ts +++ b/packages/core/lib/exceptions/file-not-found-exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class FileNotFoundException extends HttpException { constructor( diff --git a/packages/core/lib/exceptions/forbidden-exception.ts b/packages/core/lib/exceptions/forbidden-exception.ts index cc21133..d53035f 100644 --- a/packages/core/lib/exceptions/forbidden-exception.ts +++ b/packages/core/lib/exceptions/forbidden-exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class ForbiddenException extends HttpException { constructor( diff --git a/packages/core/lib/exceptions/genericException.ts b/packages/core/lib/exceptions/genericException.ts index f32d580..018f3af 100644 --- a/packages/core/lib/exceptions/genericException.ts +++ b/packages/core/lib/exceptions/genericException.ts @@ -1,5 +1,5 @@ -import { HttpException } from './http-exception'; -import { HttpStatus } from '../rest/http-server/status-codes'; +import { HttpException } from './http-exception.js'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; export class GenericException extends HttpException { constructor(message?: string, status: HttpStatus = HttpStatus.FORBIDDEN) { diff --git a/packages/core/lib/exceptions/http-exception.ts b/packages/core/lib/exceptions/http-exception.ts index 9a1919a..79e09b2 100644 --- a/packages/core/lib/exceptions/http-exception.ts +++ b/packages/core/lib/exceptions/http-exception.ts @@ -1,6 +1,6 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { Obj } from '../utils/object'; -import { Str } from '../utils/string'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { Obj } from '../utils/object.js'; +import { Str } from '../utils/string.js'; export interface HttpExceptionOptions { cause?: string; diff --git a/packages/core/lib/exceptions/index.ts b/packages/core/lib/exceptions/index.ts index 5c14bef..004529f 100644 --- a/packages/core/lib/exceptions/index.ts +++ b/packages/core/lib/exceptions/index.ts @@ -1,11 +1,11 @@ -export * from './unauthorized'; -export * from './invalid-credentials'; -export * from './validation-failed'; -export * from './genericException'; -export * from './base-exception-handler'; -export * from './invalid-value'; -export * from './invalid-value-type'; -export * from './http-exception'; -export * from './forbidden-exception'; -export * from './file-not-found-exception'; -export * from './route-not-found-exception'; +export * from './unauthorized.js'; +export * from './invalid-credentials.js'; +export * from './validation-failed.js'; +export * from './genericException.js'; +export * from './base-exception-handler.js'; +export * from './invalid-value.js'; +export * from './invalid-value-type.js'; +export * from './http-exception.js'; +export * from './forbidden-exception.js'; +export * from './file-not-found-exception.js'; +export * from './route-not-found-exception.js'; diff --git a/packages/core/lib/exceptions/invalid-credentials.ts b/packages/core/lib/exceptions/invalid-credentials.ts index 6e4348f..9308292 100644 --- a/packages/core/lib/exceptions/invalid-credentials.ts +++ b/packages/core/lib/exceptions/invalid-credentials.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class InvalidCredentials extends HttpException { constructor() { diff --git a/packages/core/lib/exceptions/route-not-found-exception.ts b/packages/core/lib/exceptions/route-not-found-exception.ts index 39bb533..59453a7 100644 --- a/packages/core/lib/exceptions/route-not-found-exception.ts +++ b/packages/core/lib/exceptions/route-not-found-exception.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class RouteNotFoundException extends HttpException { constructor(response: string | Record) { diff --git a/packages/core/lib/exceptions/unauthorized.ts b/packages/core/lib/exceptions/unauthorized.ts index 4c581a3..22ca041 100644 --- a/packages/core/lib/exceptions/unauthorized.ts +++ b/packages/core/lib/exceptions/unauthorized.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class Unauthorized extends HttpException { constructor() { diff --git a/packages/core/lib/exceptions/validation-failed.ts b/packages/core/lib/exceptions/validation-failed.ts index c5809e6..e2fbd83 100644 --- a/packages/core/lib/exceptions/validation-failed.ts +++ b/packages/core/lib/exceptions/validation-failed.ts @@ -1,5 +1,5 @@ -import { HttpStatus } from '../rest/http-server/status-codes'; -import { HttpException } from './http-exception'; +import { HttpStatus } from '../rest/http-server/status-codes.js'; +import { HttpException } from './http-exception.js'; export class ValidationFailed extends HttpException { private errors: Record; diff --git a/packages/core/lib/explorer.ts b/packages/core/lib/explorer.ts index 416a219..c1ff809 100644 --- a/packages/core/lib/explorer.ts +++ b/packages/core/lib/explorer.ts @@ -1,12 +1,12 @@ import { DiscoveryService, MetadataScanner } from '@nestjs/core'; -import { CommandMeta, CommandMetaOptions } from './console'; -import { ConsoleConstants } from './console/constants'; -import { EventMetadata } from './events'; -import { IntentEventConstants } from './events/constants'; -import { GenericFunction } from './interfaces'; -import { JOB_NAME, JOB_OPTIONS } from './queue/constants'; -import { QueueMetadata } from './queue/metadata'; -import { Injectable } from './foundation'; +import { CommandMeta, CommandMetaOptions } from './console/index.js'; +import { ConsoleConstants } from './console/constants.js'; +import { EventMetadata } from './events/index.js'; +import { IntentEventConstants } from './events/constants.js'; +import { GenericFunction } from './interfaces/index.js'; +import { JOB_NAME, JOB_OPTIONS } from './queue/constants.js'; +import { QueueMetadata } from './queue/metadata.js'; +import { Injectable } from './foundation/decorators.js'; @Injectable() export class IntentExplorer { diff --git a/packages/core/lib/foundation/app-container.ts b/packages/core/lib/foundation/app-container.ts index 02774ef..07669d5 100644 --- a/packages/core/lib/foundation/app-container.ts +++ b/packages/core/lib/foundation/app-container.ts @@ -1,6 +1,6 @@ import { Provider } from '@nestjs/common'; -import { IntentApplicationContext, Type } from '../interfaces'; -import { ImportType, ServiceProvider } from './service-provider'; +import { IntentApplicationContext, Type } from '../interfaces/index.js'; +import { ImportType, ServiceProvider } from './service-provider.js'; export abstract class IntentAppContainer { static serviceProviders: ServiceProvider[] = []; diff --git a/packages/core/lib/foundation/container-factory.ts b/packages/core/lib/foundation/container-factory.ts index 4e0948e..9b3bb0a 100644 --- a/packages/core/lib/foundation/container-factory.ts +++ b/packages/core/lib/foundation/container-factory.ts @@ -1,7 +1,7 @@ import { NestFactory } from '@nestjs/core'; -import { IntentApplicationContext, Type } from '../interfaces'; -import { ModuleBuilder } from './module-builder'; -import { IntentAppContainer } from './app-container'; +import type { IntentApplicationContext, Type } from '../interfaces/index.js'; +import { ModuleBuilder } from './module-builder.js'; +import { IntentAppContainer } from './app-container.js'; export class ContainerFactory { static async createStandalone( @@ -19,7 +19,9 @@ export class ContainerFactory { /** * Build NestJS DI Container */ - const app = await NestFactory.createApplicationContext(module); + const app = await NestFactory.createApplicationContext(module, { + logger: ['error'], + }); /** * Run the `boot` method of the main application container diff --git a/packages/core/lib/foundation/index.ts b/packages/core/lib/foundation/index.ts index 3a7d772..4c2906f 100644 --- a/packages/core/lib/foundation/index.ts +++ b/packages/core/lib/foundation/index.ts @@ -1,5 +1,5 @@ -export * from './module-builder'; -export * from './service-provider'; -export * from './app-container'; -export * from './container-factory'; -export * from './decorators'; +export * from './module-builder.js'; +export * from './service-provider.js'; +export * from './app-container.js'; +export * from './container-factory.js'; +export * from './decorators.js'; diff --git a/packages/core/lib/foundation/module-builder.ts b/packages/core/lib/foundation/module-builder.ts index 0597aca..e8f4b55 100644 --- a/packages/core/lib/foundation/module-builder.ts +++ b/packages/core/lib/foundation/module-builder.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { Kernel } from '../rest/foundation/kernel'; -import { IntentAppContainer } from './app-container'; +import { Kernel } from '../rest/foundation/kernel.js'; +import { IntentAppContainer } from './app-container.js'; export class ModuleBuilder { static build(container: IntentAppContainer, kernel?: Kernel) { diff --git a/packages/core/lib/foundation/service-provider.ts b/packages/core/lib/foundation/service-provider.ts index b4e96d5..bff3bc7 100644 --- a/packages/core/lib/foundation/service-provider.ts +++ b/packages/core/lib/foundation/service-provider.ts @@ -5,7 +5,7 @@ import { OptionalFactoryDependency, Provider, } from '@nestjs/common'; -import { IntentApplicationContext, Type } from '../interfaces'; +import type { IntentApplicationContext, Type } from '../interfaces/index.js'; export type ImportType = | Type diff --git a/packages/core/lib/index.ts b/packages/core/lib/index.ts index f557c44..9f19d37 100644 --- a/packages/core/lib/index.ts +++ b/packages/core/lib/index.ts @@ -1,21 +1,21 @@ -export * from './serviceProvider'; -export * from './utils'; -export * from './constants'; -export * from './interfaces'; -export * from './rest'; -export * from './cache'; -export * from './storage'; -export * from './transformers'; -export * from './exceptions'; -export * from './localization'; -export * from './logger'; -export * from './queue'; -export * from './console'; -export * from './database'; -export * from './serializers/validationErrorSerializer'; -export * from './mailer'; -export * from './events'; -export * from './validator'; -export * from './foundation'; -export * from './reflections'; -export * from './config'; +export * from './serviceProvider.js'; +export * from './utils/index.js'; +export * from './constants.js'; +export * from './interfaces/index.js'; +export * from './rest/index.js'; +export * from './cache/index.js'; +export * from './storage/index.js'; +export * from './transformers/index.js'; +export * from './exceptions/index.js'; +export * from './localization/index.js'; +export * from './logger/index.js'; +export * from './queue/index.js'; +export * from './console/index.js'; +export * from './database/index.js'; +export * from './serializers/validationErrorSerializer.js'; +export * from './mailer/index.js'; +export * from './events/index.js'; +export * from './validator/index.js'; +export * from './foundation/index.js'; +export * from './reflections/index.js'; +export * from './config/index.js'; diff --git a/packages/core/lib/interfaces/config.ts b/packages/core/lib/interfaces/config.ts index 04fd059..515707e 100644 --- a/packages/core/lib/interfaces/config.ts +++ b/packages/core/lib/interfaces/config.ts @@ -1,10 +1,6 @@ -import { - CorsOptions, - CorsOptionsDelegate, -} from '@nestjs/common/interfaces/external/cors-options.interface'; +import { CorsOptions, CorsOptionsDelegate } from 'cors'; import { ServerConstructorOptions } from '@intentjs/hyper-express'; -import { GenericClass } from './utils'; -import { WatchOptions } from 'fs-extra'; +import { GenericClass } from './utils.js'; export interface SentryConfig { dsn: string; diff --git a/packages/core/lib/interfaces/index.ts b/packages/core/lib/interfaces/index.ts index 747e0e8..4438b2a 100644 --- a/packages/core/lib/interfaces/index.ts +++ b/packages/core/lib/interfaces/index.ts @@ -1,3 +1,3 @@ -export * from './config'; -export * from './utils'; -export * from './transformer'; +export * from './config.js'; +export * from './utils.js'; +export * from './transformer.js'; diff --git a/packages/core/lib/localization/helpers/index.ts b/packages/core/lib/localization/helpers/index.ts index 9ff8cee..9e956f2 100644 --- a/packages/core/lib/localization/helpers/index.ts +++ b/packages/core/lib/localization/helpers/index.ts @@ -1,4 +1,4 @@ -import { LocalizationService } from '../service'; +import { LocalizationService } from '../service.js'; export const __ = ( key: string, diff --git a/packages/core/lib/localization/index.ts b/packages/core/lib/localization/index.ts index 34b3117..80ce37c 100644 --- a/packages/core/lib/localization/index.ts +++ b/packages/core/lib/localization/index.ts @@ -1,3 +1,3 @@ -export * from './service'; -export * from './helpers'; -export * from './interfaces/index'; +export * from './service.js'; +export * from './helpers/index.js'; +export * from './interfaces/index.js'; diff --git a/packages/core/lib/localization/service.ts b/packages/core/lib/localization/service.ts index 23b9c45..5d29761 100644 --- a/packages/core/lib/localization/service.ts +++ b/packages/core/lib/localization/service.ts @@ -1,11 +1,13 @@ import { join } from 'path'; import { Injectable } from '@nestjs/common'; -import { readdirSync, readFileSync } from 'fs-extra'; -import { ConfigService } from '../config/service'; -import { Obj } from '../utils'; -import { Num } from '../utils/number'; -import { Str } from '../utils/string'; -import { LocalizationOptions } from './interfaces'; +import fsExtra from 'fs-extra'; +import { ConfigService } from '../config/service.js'; +import { Obj } from '../utils/object.js'; +import { Num } from '../utils/number.js'; +import { Str } from '../utils/string.js'; +import { LocalizationOptions } from './interfaces/index.js'; + +const { readdirSync, readFileSync } = fsExtra; @Injectable() export class LocalizationService { diff --git a/packages/core/lib/localization/utils/get.ts b/packages/core/lib/localization/utils/get.ts index f2ad6bb..574d662 100644 --- a/packages/core/lib/localization/utils/get.ts +++ b/packages/core/lib/localization/utils/get.ts @@ -1,4 +1,4 @@ -import stringToPath from './stringToPath'; +import stringToPath from './stringToPath.js'; // function baseGet(object: Record, path: any): any { // path = castPath(path, object); diff --git a/packages/core/lib/localization/utils/memoize.ts b/packages/core/lib/localization/utils/memoize.ts index cfbf504..f29f6a7 100644 --- a/packages/core/lib/localization/utils/memoize.ts +++ b/packages/core/lib/localization/utils/memoize.ts @@ -1,4 +1,4 @@ -import { GenericFunction } from '../../interfaces'; +import { GenericFunction } from '../../interfaces/utils.js'; /** * Creates a function that memoizes the result of `func`. If `resolver` is diff --git a/packages/core/lib/localization/utils/memoizeCapped.ts b/packages/core/lib/localization/utils/memoizeCapped.ts index 06a4c26..7fd87e0 100644 --- a/packages/core/lib/localization/utils/memoizeCapped.ts +++ b/packages/core/lib/localization/utils/memoizeCapped.ts @@ -1,4 +1,4 @@ -import memoize from './memoize'; +import memoize from './memoize.js'; /** Used as the maximum memoize cache size. */ const MAX_MEMOIZE_SIZE = 500; diff --git a/packages/core/lib/localization/utils/stringToPath.ts b/packages/core/lib/localization/utils/stringToPath.ts index cc60b06..b15b65f 100644 --- a/packages/core/lib/localization/utils/stringToPath.ts +++ b/packages/core/lib/localization/utils/stringToPath.ts @@ -1,4 +1,4 @@ -import memoizeCapped from './memoizeCapped'; +import memoizeCapped from './memoizeCapped.js'; const charCodeOfDot = '.'.charCodeAt(0); const reEscapeChar = /\\(\\)?/g; diff --git a/packages/core/lib/logger/index.ts b/packages/core/lib/logger/index.ts index 8928839..8bdc8dd 100644 --- a/packages/core/lib/logger/index.ts +++ b/packages/core/lib/logger/index.ts @@ -1,3 +1,3 @@ -export * from './logger'; -export * from './options'; -export * from './service'; +export * from './logger.js'; +export * from './options.js'; +export * from './service.js'; diff --git a/packages/core/lib/logger/logger.ts b/packages/core/lib/logger/logger.ts index d82539f..15df112 100644 --- a/packages/core/lib/logger/logger.ts +++ b/packages/core/lib/logger/logger.ts @@ -1,4 +1,4 @@ -import { LoggerService } from './service'; +import { LoggerService } from './service.js'; export const Log = (name?: string) => { return LoggerService.logger(name); diff --git a/packages/core/lib/logger/service.ts b/packages/core/lib/logger/service.ts index bb1ecc8..db5869f 100644 --- a/packages/core/lib/logger/service.ts +++ b/packages/core/lib/logger/service.ts @@ -1,9 +1,9 @@ import { join } from 'path'; import { Injectable } from '@nestjs/common'; import * as winston from 'winston'; -import { ConfigService } from '../config/service'; -import { findProjectRoot, Obj } from '../utils'; -import { Num } from '../utils/number'; +import { ConfigService } from '../config/service.js'; +import { findProjectRoot, Obj } from '../utils/index.js'; +import { Num } from '../utils/number.js'; import { Formats, FormatsMap, @@ -13,7 +13,7 @@ import { TransportsMap, TransportOptions, defaultLoggerOptions, -} from './options'; +} from './options.js'; @Injectable() export class LoggerService { diff --git a/packages/core/lib/mailer/exceptions/errorSendingMail.ts b/packages/core/lib/mailer/exceptions/errorSendingMail.ts index c481f90..00b2399 100644 --- a/packages/core/lib/mailer/exceptions/errorSendingMail.ts +++ b/packages/core/lib/mailer/exceptions/errorSendingMail.ts @@ -1,4 +1,4 @@ -import { Str } from '../../utils/string'; +import { Str } from '../../utils/string.js'; export class ErrorSendingMail extends Error { constructor(message: string | Record) { diff --git a/packages/core/lib/mailer/index.ts b/packages/core/lib/mailer/index.ts index cdda658..caacf5f 100644 --- a/packages/core/lib/mailer/index.ts +++ b/packages/core/lib/mailer/index.ts @@ -1,4 +1,4 @@ -export * from './service'; -export * from './mail'; -export * from './interfaces'; -export * from './message'; +export * from './service.js'; +export * from './mail.js'; +export * from './interfaces/index.js'; +export * from './message.js'; diff --git a/packages/core/lib/mailer/interfaces/index.ts b/packages/core/lib/mailer/interfaces/index.ts index 5f30ef3..01893e4 100644 --- a/packages/core/lib/mailer/interfaces/index.ts +++ b/packages/core/lib/mailer/interfaces/index.ts @@ -1 +1 @@ -export * from './options'; +export * from './options.js'; diff --git a/packages/core/lib/mailer/interfaces/provider.ts b/packages/core/lib/mailer/interfaces/provider.ts index f82f548..a36bdaa 100644 --- a/packages/core/lib/mailer/interfaces/provider.ts +++ b/packages/core/lib/mailer/interfaces/provider.ts @@ -1,4 +1,4 @@ -import { MailMessage } from '../message'; +import { MailMessage } from '../message.js'; export interface AttachmentOptions { filename: string; diff --git a/packages/core/lib/mailer/mail.ts b/packages/core/lib/mailer/mail.ts index 69bf81e..d5ecb40 100644 --- a/packages/core/lib/mailer/mail.ts +++ b/packages/core/lib/mailer/mail.ts @@ -1,5 +1,5 @@ -import { MailMessage } from './message'; -import { MailerService } from './service'; +import { MailMessage } from './message.js'; +import { MailerService } from './service.js'; export class Mail { private receipents: string | string[]; diff --git a/packages/core/lib/mailer/message.ts b/packages/core/lib/mailer/message.ts index 7e4e736..4d88186 100644 --- a/packages/core/lib/mailer/message.ts +++ b/packages/core/lib/mailer/message.ts @@ -1,15 +1,15 @@ // eslint-disable-next-line import/no-named-as-default -import IntentMailComponent from '../../resources/mail/emails'; -import { ConfigService } from '../config/service'; -import { GENERIC_MAIL, RAW_MAIL, VIEW_BASED_MAIL } from './constants'; +import { ConfigService } from '../config/service.js'; +import { GENERIC_MAIL, RAW_MAIL, VIEW_BASED_MAIL } from './constants.js'; import { MailData, MailMessageMetaPayload, MailType, MailMessagePayload, -} from './interfaces'; -import { AttachmentOptions } from './interfaces/provider'; -import { Package } from '../utils'; +} from './interfaces/index.js'; +import { AttachmentOptions } from './interfaces/provider.js'; +import { Package } from '../utils/index.js'; +import IntentMailComponent from '../../resources/mail/emails/index.js'; export class MailMessage { private mailSubject?: string; @@ -204,7 +204,7 @@ export class MailMessage { if (this.mailType === GENERIC_MAIL) { const templateConfig = ConfigService.get('mailers.template'); - const { render } = Package.load('@react-email/render'); + const { render } = await Package.load('@react-email/render'); const html = await render( IntentMailComponent({ header: { value: { title: templateConfig.appName } }, @@ -225,7 +225,7 @@ export class MailMessage { if (this.mailType === VIEW_BASED_MAIL && this.viewFile) { const component = this.viewFile; - const { render } = Package.load('@react-email/render'); + const { render } = await Package.load('@react-email/render'); const html = await render(component(this.payload)); this.compiledHtml = html; diff --git a/packages/core/lib/mailer/providers/index.ts b/packages/core/lib/mailer/providers/index.ts index c6bf5c8..06999db 100644 --- a/packages/core/lib/mailer/providers/index.ts +++ b/packages/core/lib/mailer/providers/index.ts @@ -1,12 +1,13 @@ -import { LoggerProvider } from './logger'; -import { MailgunProvider } from './mailgun'; -import { NodemailerProvider } from './nodemailer'; -import { ResendMailProvider } from './resend'; -// import { SendgridProvider } from './sendgrid'; +import { LoggerProvider } from './logger.js'; +import { MailgunProvider } from './mailgun.js'; +import { NodemailerProvider } from './nodemailer.js'; +import { ResendMailProvider } from './resend.js'; +// import { SendgridProvider } from '#mailer/providers/sendgrid'; export const MAIL_PROVIDER_MAP = { smtp: NodemailerProvider, mailgun: MailgunProvider, resend: ResendMailProvider, logger: LoggerProvider, + // sendgrid: SendgridProvider, }; diff --git a/packages/core/lib/mailer/providers/logger.ts b/packages/core/lib/mailer/providers/logger.ts index 73a5e8a..e924f81 100644 --- a/packages/core/lib/mailer/providers/logger.ts +++ b/packages/core/lib/mailer/providers/logger.ts @@ -1,6 +1,9 @@ -import { Log } from '../../logger'; -import { NodemailerOptions } from '../interfaces'; -import { BaseProvider, BaseProviderSendOptions } from '../interfaces/provider'; +import { Log } from '../../logger/index.js'; +import { NodemailerOptions } from '../interfaces/options.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from '../interfaces/provider.js'; export class LoggerProvider implements BaseProvider { private client: any; diff --git a/packages/core/lib/mailer/providers/mailgun.ts b/packages/core/lib/mailer/providers/mailgun.ts index f4efea8..8cf254b 100644 --- a/packages/core/lib/mailer/providers/mailgun.ts +++ b/packages/core/lib/mailer/providers/mailgun.ts @@ -1,24 +1,23 @@ -import { Storage } from '../../storage'; -import { Package } from '../../utils'; -import { isEmpty } from '../../utils/helpers'; -import { Str } from '../../utils/string'; -import { MailgunOptions } from '../interfaces'; -import { BaseProvider, BaseProviderSendOptions } from '../interfaces/provider'; +import { Storage } from '../../storage/index.js'; +import { Package } from '../../utils/index.js'; +import { isEmpty } from '../../utils/helpers.js'; +import { Str } from '../../utils/string.js'; +import { MailgunOptions } from '../interfaces/options.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from '../interfaces/provider.js'; export class MailgunProvider implements BaseProvider { protected client: any; constructor(private options: MailgunOptions) { - const formData = Package.load('form-data'); - const Mailgun = Package.load('mailgun.js'); - const mailgun = new Mailgun(formData); - this.client = mailgun.client({ - username: this.options.username, - key: this.options.key, - }); + this.initialiseModules(); } async send(payload: BaseProviderSendOptions): Promise { + await this.initialiseModules(); + const { attachments } = payload; if (!isEmpty(attachments)) { for (const attachment of attachments) { @@ -50,4 +49,14 @@ export class MailgunProvider implements BaseProvider { getClient(): T { return this.client as unknown as T; } + + async initialiseModules(): Promise { + if (this.client) return; + const formData = await Package.load('form-data'); + const Mailgun = await Package.load('mailgun.js'); + this.client = new Mailgun(formData).client({ + username: this.options.username, + key: this.options.key, + }); + } } diff --git a/packages/core/lib/mailer/providers/nodemailer.ts b/packages/core/lib/mailer/providers/nodemailer.ts index 3486bf8..e9a4259 100644 --- a/packages/core/lib/mailer/providers/nodemailer.ts +++ b/packages/core/lib/mailer/providers/nodemailer.ts @@ -1,26 +1,19 @@ -import { Package } from '../../utils'; -import { NodemailerOptions } from '../interfaces'; -import { BaseProvider, BaseProviderSendOptions } from '../interfaces/provider'; +import { Package } from '../../utils/index.js'; +import { NodemailerOptions } from '../interfaces/options.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from '../interfaces/provider.js'; export class NodemailerProvider implements BaseProvider { private client: any; constructor(private options: NodemailerOptions) { - const nodemailer = Package.load('nodemailer'); - this.client = nodemailer.createTransport({ - host: options.host, - port: options.port, - secure: options.port === '465', - ignoreTLS: options.ignoreTLS, - requireTLS: options.requireTLS, - auth: { - user: options.username, - pass: options.password, - }, - }); + this.initialiseModules(); } async send(payload: BaseProviderSendOptions): Promise { + await this.initialiseModules(); return this.client.sendMail({ from: payload.from, to: payload.to, @@ -41,4 +34,20 @@ export class NodemailerProvider implements BaseProvider { getClient(): T { return this.client as unknown as T; } + + async initialiseModules(): Promise { + if (this.client) return; + const nodemailer = await Package.load('nodemailer'); + this.client = nodemailer.createTransport({ + host: this.options.host, + port: this.options.port, + secure: this.options.port === '465', + ignoreTLS: this.options.ignoreTLS, + requireTLS: this.options.requireTLS, + auth: { + user: this.options.username, + pass: this.options.password, + }, + }); + } } diff --git a/packages/core/lib/mailer/providers/resend.ts b/packages/core/lib/mailer/providers/resend.ts index a380869..88afc55 100644 --- a/packages/core/lib/mailer/providers/resend.ts +++ b/packages/core/lib/mailer/providers/resend.ts @@ -1,17 +1,20 @@ -import { Package } from '../../utils'; -import { ErrorSendingMail } from '../exceptions/errorSendingMail'; -import { ResendOptions } from '../interfaces'; -import { BaseProvider, BaseProviderSendOptions } from '../interfaces/provider'; +import { Package } from '../../utils/index.js'; +import { ErrorSendingMail } from '../exceptions/errorSendingMail.js'; +import { ResendOptions } from '../interfaces/options.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from '../interfaces/provider.js'; export class ResendMailProvider implements BaseProvider { private client: any; constructor(private options: ResendOptions) { - const { Resend } = Package.load('resend'); - this.client = new Resend(this.options.apiKey); + this.initialiseModules(); } async send(payload: BaseProviderSendOptions): Promise { + await this.initialiseModules(); const report = await this.client.emails.send({ from: payload.from, to: payload.to, @@ -35,4 +38,10 @@ export class ResendMailProvider implements BaseProvider { getClient(): T { return this.client as unknown as T; } + + async initialiseModules(): Promise { + if (this.client) return; + const { Resend } = await Package.load('resend'); + this.client = new Resend(this.options.apiKey); + } } diff --git a/packages/core/lib/mailer/providers/sendgrid.ts b/packages/core/lib/mailer/providers/sendgrid.ts index 74b3c13..6c1a0f2 100644 --- a/packages/core/lib/mailer/providers/sendgrid.ts +++ b/packages/core/lib/mailer/providers/sendgrid.ts @@ -1,15 +1,18 @@ -import { Package } from '../../utils'; -import { SendgridApiOptions } from '../interfaces'; -import { BaseProvider, BaseProviderSendOptions } from '../interfaces/provider'; +import { Package } from '../../utils/index.js'; +import { SendgridApiOptions } from '../interfaces/options.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from '../interfaces/provider.js'; export class SendgridProvider implements BaseProvider { protected client: any; constructor(private options: SendgridApiOptions) { - const sendgrid = Package.load('@sendgrid/mail'); - this.client = sendgrid.setApiKey(options.apiKey); + this.initialiseModules(); } - send(payload: BaseProviderSendOptions): Promise { + async send(payload: BaseProviderSendOptions): Promise { + await this.initialiseModules(); console.log(payload); throw new Error('Method not implemented.'); } @@ -17,4 +20,10 @@ export class SendgridProvider implements BaseProvider { getClient(): T { throw new Error('Method not implemented.'); } + + async initialiseModules(): Promise { + if (this.client) return; + const sendgrid = await Package.load('@sendgrid/mail'); + this.client = sendgrid.setApiKey(this.options.apiKey); + } } diff --git a/packages/core/lib/mailer/service.ts b/packages/core/lib/mailer/service.ts index cc2fad7..fae49d9 100644 --- a/packages/core/lib/mailer/service.ts +++ b/packages/core/lib/mailer/service.ts @@ -1,10 +1,13 @@ import { Injectable } from '@nestjs/common'; -import { ConfigService } from '../config/service'; -import { ChannelProviderOptions, MailData } from './interfaces'; -import { BaseProvider, BaseProviderSendOptions } from './interfaces/provider'; -import { MAIL_PROVIDER_MAP } from './providers'; -import { InvalidMailProviderException } from './exceptions/invalid-mail-provider'; -import { isEmpty } from '../utils'; +import { ConfigService } from '../config/service.js'; +import { ChannelProviderOptions, MailData } from './interfaces/index.js'; +import { + BaseProvider, + BaseProviderSendOptions, +} from './interfaces/provider.js'; +import { MAIL_PROVIDER_MAP } from './providers/index.js'; +import { InvalidMailProviderException } from './exceptions/invalid-mail-provider.js'; +import { isEmpty } from '../utils/helpers.js'; @Injectable() export class MailerService { diff --git a/packages/core/lib/queue/console/commands.ts b/packages/core/lib/queue/console/commands.ts index fdb9647..d70de96 100644 --- a/packages/core/lib/queue/console/commands.ts +++ b/packages/core/lib/queue/console/commands.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { Command, ConsoleIO } from '../../console'; -import { QueueWorker } from '../worker'; +import { Command, ConsoleIO } from '../../console/index.js'; +import { QueueWorker } from '../worker.js'; @Injectable() export class QueueConsoleCommands { diff --git a/packages/core/lib/queue/console/index.ts b/packages/core/lib/queue/console/index.ts index 30272ff..d0d3bbd 100644 --- a/packages/core/lib/queue/console/index.ts +++ b/packages/core/lib/queue/console/index.ts @@ -1 +1 @@ -export * from './commands'; +export * from './commands.js'; diff --git a/packages/core/lib/queue/core/index.ts b/packages/core/lib/queue/core/index.ts index b366d2d..7f2e3d6 100644 --- a/packages/core/lib/queue/core/index.ts +++ b/packages/core/lib/queue/core/index.ts @@ -1 +1 @@ -export * from './payloadBuilder'; +export * from './payloadBuilder.js'; diff --git a/packages/core/lib/queue/core/payloadBuilder.ts b/packages/core/lib/queue/core/payloadBuilder.ts index 591e568..d9a2a71 100644 --- a/packages/core/lib/queue/core/payloadBuilder.ts +++ b/packages/core/lib/queue/core/payloadBuilder.ts @@ -1,7 +1,7 @@ import ms from 'ms'; import { ulid } from 'ulid'; -import { QueueMetadata } from '../metadata'; -import { Message, JobOptions, InternalMessage } from '../strategy'; +import { QueueMetadata } from '../metadata.js'; +import { Message, JobOptions, InternalMessage } from '../strategy/index.js'; type Complete = { [P in keyof Required]: Pick extends Required> diff --git a/packages/core/lib/queue/decorators.ts b/packages/core/lib/queue/decorators.ts index bf04ceb..eef447a 100644 --- a/packages/core/lib/queue/decorators.ts +++ b/packages/core/lib/queue/decorators.ts @@ -1,7 +1,7 @@ import 'reflect-metadata'; -import { ListensTo } from '../events'; -import { events, JOB_NAME, JOB_OPTIONS } from './constants'; -import { JobOptions } from './strategy'; +import { ListensTo } from '../events/index.js'; +import { events, JOB_NAME, JOB_OPTIONS } from './constants.js'; +import { JobOptions } from './strategy/index.js'; export function Job(job: string, options?: JobOptions) { options = options || {}; diff --git a/packages/core/lib/queue/drivers/database.ts b/packages/core/lib/queue/drivers/database.ts index 1a27d73..0d2ee15 100644 --- a/packages/core/lib/queue/drivers/database.ts +++ b/packages/core/lib/queue/drivers/database.ts @@ -1,8 +1,8 @@ -import { ObjectionService } from '../../database'; -import { DbQueueDriverOptions } from '../interfaces'; -import { DbJob } from '../interfaces/job'; -import { InternalMessage } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; +import { ObjectionService } from '../../database/index.js'; +import { DbQueueDriverOptions } from '../interfaces/index.js'; +import { DbJob } from '../interfaces/job.js'; +import { InternalMessage } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; export class DatabaseQueueDriver implements PollQueueDriver { private client: any; diff --git a/packages/core/lib/queue/drivers/index.ts b/packages/core/lib/queue/drivers/index.ts index add8456..be33b8a 100644 --- a/packages/core/lib/queue/drivers/index.ts +++ b/packages/core/lib/queue/drivers/index.ts @@ -1,4 +1,4 @@ -export * from './sync'; -export * from './sqs'; -export * from './redis'; -export * from './database'; +export * from './sync.js'; +export * from './sqs.js'; +export * from './redis.js'; +export * from './database.js'; diff --git a/packages/core/lib/queue/drivers/redis.ts b/packages/core/lib/queue/drivers/redis.ts index 1dc5327..49d0db2 100644 --- a/packages/core/lib/queue/drivers/redis.ts +++ b/packages/core/lib/queue/drivers/redis.ts @@ -1,10 +1,10 @@ import { ulid } from 'ulid'; -import { Package } from '../../utils'; -import { validateOptions } from '../../utils/helpers'; -import { RedisJob } from '../interfaces/job'; -import { RedisQueueOptionsDto } from '../schema'; -import { InternalMessage } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; +import { Package } from '../../utils/index.js'; +import { validateOptions } from '../../utils/helpers.js'; +import { RedisJob } from '../interfaces/job.js'; +import { RedisQueueOptionsDto } from '../schema/index.js'; +import { InternalMessage } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; const FIND_DELAYED_JOB = ` local source_key = KEYS[1] @@ -35,18 +35,13 @@ return processed export class RedisQueueDriver implements PollQueueDriver { private client: any; private queuePrefix: string; - + private IORedis: any; constructor(private options: Record) { validateOptions(this.options, RedisQueueOptionsDto, { cls: 'RedisQueueDriver', }); this.queuePrefix = this.options.prefix || 'intent_queue'; - const Redis = Package.load('ioredis'); - this.client = new Redis(options); - this.client.defineCommand('findDelayedJob', { - numberOfKeys: 2, - lua: FIND_DELAYED_JOB, - }); + this.initializeModules(); } async init(): Promise {} @@ -85,6 +80,7 @@ export class RedisQueueDriver implements PollQueueDriver { message: string, rawPayload: InternalMessage, ): Promise { + await this.initializeModules(); await this.client.zadd( this.getDelayedQueue(`${rawPayload.queue}`), rawPayload.delay, @@ -113,4 +109,15 @@ export class RedisQueueDriver implements PollQueueDriver { getQueue(queue: string): string { return `${this.queuePrefix}::${queue}`; } + + async initializeModules(): Promise { + if (this.IORedis && this.client) return Promise.resolve(); + const { Redis } = await Package.load('ioredis'); + this.IORedis = Redis; + this.client = new this.IORedis(this.options); + this.client.defineCommand('findDelayedJob', { + numberOfKeys: 2, + lua: FIND_DELAYED_JOB, + }); + } } diff --git a/packages/core/lib/queue/drivers/sqs.ts b/packages/core/lib/queue/drivers/sqs.ts index 1531f89..c380db0 100644 --- a/packages/core/lib/queue/drivers/sqs.ts +++ b/packages/core/lib/queue/drivers/sqs.ts @@ -1,23 +1,25 @@ -import { Package } from '../../utils'; -import { joinUrl, validateOptions } from '../../utils/helpers'; -import { SqsJob } from '../interfaces/job'; -import { SqsQueueOptionsDto } from '../schema'; -import { InternalMessage } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; +import { Package } from '../../utils/index.js'; +import { joinUrl, validateOptions } from '../../utils/helpers.js'; +import { SqsJob } from '../interfaces/job.js'; +import { SqsQueueOptionsDto } from '../schema/index.js'; +import { InternalMessage } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; export class SqsQueueDriver implements PollQueueDriver { private client: any; + private AWS: any; constructor(private options: Record) { validateOptions(options, SqsQueueOptionsDto, { cls: SqsQueueDriver.name }); - const AWS = Package.load('@aws-sdk/client-sqs'); - this.client = new AWS.SQS({ - region: options.region, - apiVersion: options.apiVersion, - credentials: options.credentials || { - accessKeyId: options.accessKey, - secretAccessKey: options.secretKey, - }, + this.initializeModules().then(() => { + this.client = new this.AWS.SQS({ + region: options.region, + apiVersion: options.apiVersion, + credentials: options.credentials || { + accessKeyId: options.accessKey, + secretAccessKey: options.secretKey, + }, + }); }); } @@ -80,4 +82,8 @@ export class SqsQueueDriver implements PollQueueDriver { await this.client.getQueueAttributes(params); return +response.Attributes.ApproximateNumberOfMessages; } + + async initializeModules(): Promise { + this.AWS = await Package.load('@aws-sdk/client-sqs'); + } } diff --git a/packages/core/lib/queue/drivers/sync.ts b/packages/core/lib/queue/drivers/sync.ts index 3a19afa..40dbf60 100644 --- a/packages/core/lib/queue/drivers/sync.ts +++ b/packages/core/lib/queue/drivers/sync.ts @@ -1,6 +1,6 @@ -import { QueueMetadata } from '../metadata'; -import { InternalMessage, DriverJob } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; +import { QueueMetadata } from '../metadata.js'; +import { InternalMessage, DriverJob } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; export class SyncQueueDriver implements PollQueueDriver { constructor() {} diff --git a/packages/core/lib/queue/events/JobFailed.ts b/packages/core/lib/queue/events/JobFailed.ts index 693e787..e0efbd0 100644 --- a/packages/core/lib/queue/events/JobFailed.ts +++ b/packages/core/lib/queue/events/JobFailed.ts @@ -1,5 +1,5 @@ -import { EmitsEvent, Event } from '../../events'; -import { events } from '../constants'; +import { EmitsEvent, Event } from '../../events/index.js'; +import { events } from '../constants.js'; @Event(events.jobFailed) export class JobFailed extends EmitsEvent { diff --git a/packages/core/lib/queue/events/JobProcessed.ts b/packages/core/lib/queue/events/JobProcessed.ts index 19144ee..e7719cb 100644 --- a/packages/core/lib/queue/events/JobProcessed.ts +++ b/packages/core/lib/queue/events/JobProcessed.ts @@ -1,5 +1,5 @@ -import { EmitsEvent, Event } from '../../events'; -import { events } from '../constants'; +import { EmitsEvent, Event } from '../../events/index.js'; +import { events } from '../constants.js'; @Event(events.jobProcessed) export class JobProcessed extends EmitsEvent { diff --git a/packages/core/lib/queue/events/JobProcessing.ts b/packages/core/lib/queue/events/JobProcessing.ts index e22b5c6..f8ed1b2 100644 --- a/packages/core/lib/queue/events/JobProcessing.ts +++ b/packages/core/lib/queue/events/JobProcessing.ts @@ -1,5 +1,5 @@ -import { EmitsEvent, Event } from '../../events'; -import { events } from '../constants'; +import { EmitsEvent, Event } from '../../events/index.js'; +import { events } from '../constants.js'; @Event(events.jobProcessing) export class JobProcessing extends EmitsEvent { diff --git a/packages/core/lib/queue/events/index.ts b/packages/core/lib/queue/events/index.ts index b2df0f2..30f0a01 100644 --- a/packages/core/lib/queue/events/index.ts +++ b/packages/core/lib/queue/events/index.ts @@ -1,4 +1,4 @@ -export * from './JobFailed'; -export * from './JobProcessed'; -export * from './JobProcessing'; -export * from './jobMaxRetries'; +export * from './JobFailed.js'; +export * from './JobProcessed.js'; +export * from './JobProcessing.js'; +export * from './jobMaxRetries.js'; diff --git a/packages/core/lib/queue/events/jobMaxRetries.ts b/packages/core/lib/queue/events/jobMaxRetries.ts index 9836ca4..ccf3bb8 100644 --- a/packages/core/lib/queue/events/jobMaxRetries.ts +++ b/packages/core/lib/queue/events/jobMaxRetries.ts @@ -1,5 +1,5 @@ -import { EmitsEvent, Event } from '../../events'; -import { events } from '../constants'; +import { EmitsEvent, Event } from '../../events/index.js'; +import { events } from '../constants.js'; @Event(events.jobMaxRetriesExceeed) export class JobMaxRetriesExceeed extends EmitsEvent { diff --git a/packages/core/lib/queue/index.ts b/packages/core/lib/queue/index.ts index e78ee7d..5568c64 100644 --- a/packages/core/lib/queue/index.ts +++ b/packages/core/lib/queue/index.ts @@ -1,7 +1,7 @@ -export * from './interfaces'; -export * from './service'; -export * from './queue'; -export * from './decorators'; -export * from './worker'; -export * from './strategy'; -export * from './drivers'; +export * from './decorators.js'; +export * from './drivers/index.js'; +export * from './interfaces/index.js'; +export * from './queue.js'; +export * from './service.js'; +export * from './strategy/index.js'; +export * from './worker.js'; diff --git a/packages/core/lib/queue/interfaces/index.ts b/packages/core/lib/queue/interfaces/index.ts index 5f30ef3..01893e4 100644 --- a/packages/core/lib/queue/interfaces/index.ts +++ b/packages/core/lib/queue/interfaces/index.ts @@ -1 +1 @@ -export * from './options'; +export * from './options.js'; diff --git a/packages/core/lib/queue/interfaces/job.ts b/packages/core/lib/queue/interfaces/job.ts index d480611..946f1b4 100644 --- a/packages/core/lib/queue/interfaces/job.ts +++ b/packages/core/lib/queue/interfaces/job.ts @@ -1,4 +1,4 @@ -import { DriverJob } from '../strategy'; +import { DriverJob } from '../strategy/index.js'; export class RedisJob extends DriverJob { public getId(): string { diff --git a/packages/core/lib/queue/interfaces/options.ts b/packages/core/lib/queue/interfaces/options.ts index df8d0e3..39eced9 100644 --- a/packages/core/lib/queue/interfaces/options.ts +++ b/packages/core/lib/queue/interfaces/options.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { QueueDrivers } from '../strategy'; +import { QueueDrivers } from '../strategy/index.js'; export interface QueueDriverOptions { listenerType: 'poll' | 'subscribe'; diff --git a/packages/core/lib/queue/jobRunners/base.ts b/packages/core/lib/queue/jobRunners/base.ts index 4940f92..932b430 100644 --- a/packages/core/lib/queue/jobRunners/base.ts +++ b/packages/core/lib/queue/jobRunners/base.ts @@ -1,8 +1,8 @@ -import { JobStatusEnum } from '../constants'; -import { ListenerOptions } from '../interfaces'; -import { QueueMetadata } from '../metadata'; -import { InternalMessage } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; +import { JobStatusEnum } from '../constants.js'; +import { ListenerOptions } from '../interfaces/index.js'; +import { QueueMetadata } from '../metadata.js'; +import { InternalMessage } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; export class JobRunner { constructor( diff --git a/packages/core/lib/queue/metadata.ts b/packages/core/lib/queue/metadata.ts index 4eda1d6..5919450 100644 --- a/packages/core/lib/queue/metadata.ts +++ b/packages/core/lib/queue/metadata.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; -import { ConfigService } from '../config/service'; -import { GenericFunction } from '../interfaces'; -import { QueueOptions } from './interfaces'; -import { JobOptions } from './strategy'; +import { ConfigService } from '../config/service.js'; +import { GenericFunction } from '../interfaces/index.js'; +import { QueueOptions } from './interfaces/index.js'; +import { JobOptions } from './strategy/index.js'; interface JobTarget { options: JobOptions; diff --git a/packages/core/lib/queue/queue.ts b/packages/core/lib/queue/queue.ts index 3bb0ad6..786b572 100644 --- a/packages/core/lib/queue/queue.ts +++ b/packages/core/lib/queue/queue.ts @@ -1,9 +1,9 @@ -import { PayloadBuilder } from './core'; -import { QueueMetadata } from './metadata'; -import { QueueService } from './service'; -import { Message } from './strategy'; -import { PollQueueDriver } from './strategy/pollQueueDriver'; -import { SubscribeQueueDriver } from './strategy/subscribeQueueDriver'; +import { PayloadBuilder } from './core/index.js'; +import { QueueMetadata } from './metadata.js'; +import { QueueService } from './service.js'; +import { Message } from './strategy/index.js'; +import { PollQueueDriver } from './strategy/pollQueueDriver.js'; +import { SubscribeQueueDriver } from './strategy/subscribeQueueDriver.js'; export class Queue { static async dispatch(message: Message): Promise { diff --git a/packages/core/lib/queue/service.ts b/packages/core/lib/queue/service.ts index 528e71f..8154dd7 100644 --- a/packages/core/lib/queue/service.ts +++ b/packages/core/lib/queue/service.ts @@ -6,16 +6,16 @@ import { RedisQueueDriverOptions, SqsQueueDriverOptions, SyncQueueDriverOptions, -} from './interfaces'; +} from './interfaces/index.js'; import { DatabaseQueueDriver, RedisQueueDriver, SqsQueueDriver, SyncQueueDriver, -} from './drivers'; -import { QueueDrivers } from './strategy'; -import { ConfigService } from '../config'; -import { isEmpty, Str } from '../utils'; +} from './drivers/index.js'; +import { QueueDrivers } from './strategy/index.js'; +import { ConfigService } from '../config/service.js'; +import { isEmpty, Str } from '../utils/index.js'; @Injectable() export class QueueService { diff --git a/packages/core/lib/queue/strategy/index.ts b/packages/core/lib/queue/strategy/index.ts index 813bbbc..2a370d4 100644 --- a/packages/core/lib/queue/strategy/index.ts +++ b/packages/core/lib/queue/strategy/index.ts @@ -1,7 +1,7 @@ -import { PollQueueDriver } from './pollQueueDriver'; -import { SubscribeQueueDriver } from './subscribeQueueDriver'; +import { PollQueueDriver } from './pollQueueDriver.js'; +import { SubscribeQueueDriver } from './subscribeQueueDriver.js'; -export * from './message'; -export * from './driverJob'; +export * from './message.js'; +export * from './driverJob.js'; export type QueueDrivers = PollQueueDriver | SubscribeQueueDriver; diff --git a/packages/core/lib/queue/strategy/pollQueueDriver.ts b/packages/core/lib/queue/strategy/pollQueueDriver.ts index ecd0f2c..30789a3 100644 --- a/packages/core/lib/queue/strategy/pollQueueDriver.ts +++ b/packages/core/lib/queue/strategy/pollQueueDriver.ts @@ -1,5 +1,6 @@ -import { BaseQueueDriver } from './subscribeQueueDriver'; -import { DriverJob, Message } from '.'; +import { DriverJob } from './driverJob.js'; +import { Message } from './message.js'; +import { BaseQueueDriver } from './subscribeQueueDriver.js'; export interface PollQueueDriver extends BaseQueueDriver { push(message: string, rawMessage: Message): Promise; diff --git a/packages/core/lib/queue/strategy/subscribeQueueDriver.ts b/packages/core/lib/queue/strategy/subscribeQueueDriver.ts index 783ceb6..c30b869 100644 --- a/packages/core/lib/queue/strategy/subscribeQueueDriver.ts +++ b/packages/core/lib/queue/strategy/subscribeQueueDriver.ts @@ -1,5 +1,5 @@ -import { GenericFunction } from '../../interfaces'; -import { DriverJob } from './driverJob'; +import { GenericFunction } from '../../interfaces/index.js'; +import { DriverJob } from './driverJob.js'; export interface BaseQueueDriver { init(): Promise; diff --git a/packages/core/lib/queue/worker.ts b/packages/core/lib/queue/worker.ts index 09376a8..3c7638b 100644 --- a/packages/core/lib/queue/worker.ts +++ b/packages/core/lib/queue/worker.ts @@ -1,8 +1,8 @@ -import { ListenerOptions } from './interfaces'; -import { QueueMetadata } from './metadata'; -import { QueueService } from './service'; -import { PollQueueWorker } from './workers/pollQueue'; -import { SubscribeQueueWorker } from './workers/subscribeQueue'; +import { ListenerOptions } from './interfaces/index.js'; +import { QueueMetadata } from './metadata.js'; +import { QueueService } from './service.js'; +import { PollQueueWorker } from './workers/pollQueue.js'; +import { SubscribeQueueWorker } from './workers/subscribeQueue.js'; interface QueueWorkerOptions extends ListenerOptions { listenerType: 'poll' | 'subscribe'; diff --git a/packages/core/lib/queue/workers/baseWorker.ts b/packages/core/lib/queue/workers/baseWorker.ts index f4625ff..aaba2db 100644 --- a/packages/core/lib/queue/workers/baseWorker.ts +++ b/packages/core/lib/queue/workers/baseWorker.ts @@ -1,7 +1,7 @@ import * as pc from 'picocolors'; -import { getTimestampForLog } from '../../utils/helpers'; -import { ListenerOptions } from '../interfaces'; -import { QueueDrivers } from '../strategy'; +import { getTimestampForLog } from '../../utils/helpers.js'; +import { ListenerOptions } from '../interfaces/index.js'; +import { QueueDrivers } from '../strategy/index.js'; export class BaseQueueWorker { protected silent: boolean; diff --git a/packages/core/lib/queue/workers/pollQueue.ts b/packages/core/lib/queue/workers/pollQueue.ts index 10f4572..cf2d4e7 100644 --- a/packages/core/lib/queue/workers/pollQueue.ts +++ b/packages/core/lib/queue/workers/pollQueue.ts @@ -1,20 +1,20 @@ -import { EmitsEvent } from '../../events'; -import { Obj } from '../../utils'; -import { logTime } from '../../utils/helpers'; -import { JobStatusEnum } from '../constants'; -import { JobFailed, JobProcessed, JobProcessing } from '../events'; -import { JobMaxRetriesExceeed } from '../events/jobMaxRetries'; -import { ListenerOptions } from '../interfaces'; -import { JobRunner } from '../jobRunners/base'; -import { QueueMetadata } from '../metadata'; -import { Dispatch } from '../queue'; -import { QueueService } from '../service'; -import { DriverJob, InternalMessage } from '../strategy'; -import { PollQueueDriver } from '../strategy/pollQueueDriver'; -import { BaseQueueWorker } from './baseWorker'; +import { EmitsEvent } from '../../events/index.js'; +import { Obj } from '../../utils/index.js'; +import { logTime } from '../../utils/helpers.js'; +import { JobStatusEnum } from '../constants.js'; +import { JobFailed, JobProcessed, JobProcessing } from '../events/index.js'; +import { JobMaxRetriesExceeed } from '../events/jobMaxRetries.js'; +import { ListenerOptions } from '../interfaces/index.js'; +import { JobRunner } from '../jobRunners/base.js'; +import { QueueMetadata } from '../metadata.js'; +import { Dispatch } from '../queue.js'; +import { QueueService } from '../service.js'; +import { DriverJob, InternalMessage } from '../strategy/index.js'; +import { PollQueueDriver } from '../strategy/pollQueueDriver.js'; +import { BaseQueueWorker } from './baseWorker.js'; export class PollQueueWorker extends BaseQueueWorker { - protected options: ListenerOptions; + declare protected options: ListenerOptions; protected jobInProgress: boolean; protected killSigReceived: boolean; diff --git a/packages/core/lib/queue/workers/subscribeQueue.ts b/packages/core/lib/queue/workers/subscribeQueue.ts index 93a89af..13f12e5 100644 --- a/packages/core/lib/queue/workers/subscribeQueue.ts +++ b/packages/core/lib/queue/workers/subscribeQueue.ts @@ -1,8 +1,8 @@ -import { Obj } from '../../utils'; -import { ListenerOptions } from '../interfaces'; -import { QueueMetadata } from '../metadata'; -import { QueueService } from '../service'; -import { SubscribeQueueDriver } from '../strategy/subscribeQueueDriver'; +import { Obj } from '../../utils/index.js'; +import { ListenerOptions } from '../interfaces/index.js'; +import { QueueMetadata } from '../metadata.js'; +import { QueueService } from '../service.js'; +import { SubscribeQueueDriver } from '../strategy/subscribeQueueDriver.js'; export interface PubSubWorkerOptions extends ListenerOptions { listenerId?: string; diff --git a/packages/core/lib/reflections/index.ts b/packages/core/lib/reflections/index.ts index edaebea..3213b02 100644 --- a/packages/core/lib/reflections/index.ts +++ b/packages/core/lib/reflections/index.ts @@ -1,2 +1,2 @@ -export * from './reflector'; -export * from './set-metadata'; +export * from './reflector.js'; +export * from './set-metadata.js'; diff --git a/packages/core/lib/reflections/reflector.ts b/packages/core/lib/reflections/reflector.ts index 1019928..4825b6c 100644 --- a/packages/core/lib/reflections/reflector.ts +++ b/packages/core/lib/reflections/reflector.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/ban-types */ import 'reflect-metadata'; import { ulid } from 'ulid'; -import { Obj } from '../utils/object'; +import { Obj } from '../utils/object.js'; /** * Reflector is a class to easily fetch metadata from a class and request handler method diff --git a/packages/core/lib/rest/foundation/controller-scanner.ts b/packages/core/lib/rest/foundation/controller-scanner.ts index af5265e..3c504e1 100644 --- a/packages/core/lib/rest/foundation/controller-scanner.ts +++ b/packages/core/lib/rest/foundation/controller-scanner.ts @@ -1,11 +1,11 @@ -import { Type } from '../../interfaces'; +import { Type } from '../../interfaces/index.js'; import { CONTROLLER_KEY, METHOD_KEY, METHOD_PATH, -} from '../http-server/constants'; -import { HttpRoute } from '../http-server/interfaces'; -import { joinRoute } from '../helpers'; +} from '../http-server/constants.js'; +import { HttpRoute } from '../http-server/interfaces.js'; +import { joinRoute } from '../helpers.js'; export class ControllerScanner { handle(cls: Type): HttpRoute[] { diff --git a/packages/core/lib/rest/foundation/guards/base-guard.ts b/packages/core/lib/rest/foundation/guards/base-guard.ts index ed365da..2f0825f 100644 --- a/packages/core/lib/rest/foundation/guards/base-guard.ts +++ b/packages/core/lib/rest/foundation/guards/base-guard.ts @@ -1,5 +1,5 @@ -import { ForbiddenException } from '../../../exceptions/forbidden-exception'; -import { ExecutionContext } from '../../http-server/contexts/execution-context'; +import { ForbiddenException } from '../../../exceptions/forbidden-exception.js'; +import { ExecutionContext } from '../../http-server/contexts/execution-context.js'; export abstract class IntentGuard { async handle(context: ExecutionContext): Promise { diff --git a/packages/core/lib/rest/foundation/index.ts b/packages/core/lib/rest/foundation/index.ts index 4c61bc1..23501b1 100644 --- a/packages/core/lib/rest/foundation/index.ts +++ b/packages/core/lib/rest/foundation/index.ts @@ -1,6 +1,5 @@ -export * from './guards/base-guard'; -export * from './kernel'; -export * from './middlewares/middleware'; -export * from './middlewares/configurator'; -export * from './server'; -export { MiddlewareNext } from '@intentjs/hyper-express'; +export * from './guards/base-guard.js'; +export * from './kernel.js'; +export * from './middlewares/middleware.js'; +export * from './middlewares/configurator.js'; +export * from './server.js'; diff --git a/packages/core/lib/rest/foundation/kernel.ts b/packages/core/lib/rest/foundation/kernel.ts index 63127ab..582521c 100644 --- a/packages/core/lib/rest/foundation/kernel.ts +++ b/packages/core/lib/rest/foundation/kernel.ts @@ -1,8 +1,8 @@ import { Server } from '@intentjs/hyper-express'; -import { Type } from '../../interfaces'; -import { IntentGuard } from './guards/base-guard'; -import { MiddlewareConfigurator } from './middlewares/configurator'; -import { IntentMiddleware } from './middlewares/middleware'; +import { Type } from '../../interfaces/index.js'; +import { IntentGuard } from './guards/base-guard.js'; +import { MiddlewareConfigurator } from './middlewares/configurator.js'; +import { IntentMiddleware } from './middlewares/middleware.js'; export abstract class Kernel { public controllers(): Type[] { diff --git a/packages/core/lib/rest/foundation/middlewares/configurator.ts b/packages/core/lib/rest/foundation/middlewares/configurator.ts index bba6eb8..218bd8f 100644 --- a/packages/core/lib/rest/foundation/middlewares/configurator.ts +++ b/packages/core/lib/rest/foundation/middlewares/configurator.ts @@ -1,6 +1,6 @@ -import { Type } from '../../../interfaces'; -import { HttpMethods } from '../../http-server/interfaces'; -import { IntentMiddleware } from './middleware'; +import { Type } from '../../../interfaces/index.js'; +import { HttpMethods } from '../../http-server/interfaces.js'; +import { IntentMiddleware } from './middleware.js'; type MiddlewareRuleApplicationInfo = | string diff --git a/packages/core/lib/rest/foundation/middlewares/middleware-composer.ts b/packages/core/lib/rest/foundation/middlewares/middleware-composer.ts index ab9ef75..85c3e70 100644 --- a/packages/core/lib/rest/foundation/middlewares/middleware-composer.ts +++ b/packages/core/lib/rest/foundation/middlewares/middleware-composer.ts @@ -1,8 +1,8 @@ import { ModuleRef } from '@nestjs/core'; -import { MiddlewareConfigurator } from './configurator'; -import { IntentMiddleware } from './middleware'; -import { ControllerScanner } from '../controller-scanner'; -import { Type } from '../../../interfaces/utils'; +import { MiddlewareConfigurator } from './configurator.js'; +import { IntentMiddleware } from './middleware.js'; +import { ControllerScanner } from '../controller-scanner.js'; +import { Type } from '../../../interfaces/utils.js'; export class MiddlewareComposer { private middlewareRoute = new Map(); diff --git a/packages/core/lib/rest/foundation/server.ts b/packages/core/lib/rest/foundation/server.ts index 7393a46..371e587 100644 --- a/packages/core/lib/rest/foundation/server.ts +++ b/packages/core/lib/rest/foundation/server.ts @@ -5,24 +5,29 @@ import { NestFactory, } from '@nestjs/core'; import { useContainer } from 'class-validator'; -import { ConfigService } from '../../config/service'; -import { IntentExceptionFilter } from '../../exceptions'; -import { IntentAppContainer, ModuleBuilder } from '../../foundation'; -import { Type } from '../../interfaces'; -import { findProjectRoot, getPackageJson, Obj, Package } from '../../utils'; -import { Kernel } from '../foundation/kernel'; +import { ConfigService } from '../../config/service.js'; +import { IntentExceptionFilter } from '../../exceptions/index.js'; +import { IntentAppContainer, ModuleBuilder } from '../../foundation/index.js'; +import { Type } from '../../interfaces/index.js'; +import { + findProjectRoot, + getPackageJson, + Obj, + Package, +} from '../../utils/index.js'; +import { Kernel } from '../foundation/kernel.js'; import pc from 'picocolors'; -import { printBulletPoints } from '../../utils/console-helpers'; +import { printBulletPoints } from '../../utils/console-helpers.js'; import 'console.mute'; import { Response as HyperResponse, Server } from '@intentjs/hyper-express'; -import { MiddlewareConfigurator } from './middlewares/configurator'; -import { MiddlewareComposer } from './middlewares/middleware-composer'; -import { HyperServer } from '../http-server/server'; -import { HttpExecutionContext } from '../http-server/contexts/http-execution-context'; -import { ExecutionContext } from '../http-server/contexts/execution-context'; -import { Response } from '../http-server/response'; -import { RouteExplorer } from '../http-server/route-explorer'; -import { RouteNotFoundException } from '../../exceptions/route-not-found-exception'; +import { MiddlewareConfigurator } from './middlewares/configurator.js'; +import { MiddlewareComposer } from './middlewares/middleware-composer.js'; +import { HyperServer } from '../http-server/server.js'; +import { HttpExecutionContext } from '../http-server/contexts/http-execution-context.js'; +import { ExecutionContext } from '../http-server/contexts/execution-context.js'; +import { Response } from '../http-server/response.js'; +import { RouteExplorer } from '../http-server/route-explorer.js'; +import { RouteNotFoundException } from '../../exceptions/route-not-found-exception.js'; const signals = ['SIGTERM', 'SIGINT', 'SIGUSR2']; @@ -133,7 +138,7 @@ export class IntentHttpServer { config: ConfigService, extraInfo: [string, string, string][] = [], ) { - console.clear(); + // console.clear(); console.log(); const port = config.get('app.port'); const hostname = config.get('app.hostname'); @@ -179,7 +184,7 @@ export class IntentHttpServer { } } - configureErrorReporter(config: Record) { + async configureErrorReporter(config: Record): Promise { if (!config) return; if (Obj.isObj(config) && config?.dsn) { @@ -191,13 +196,13 @@ export class IntentHttpServer { } = config; if (dsn) { - const Sentry = Package.load('@sentry/node'); + const Sentry = await Package.load('@sentry/node'); const integrations = []; /** * Load integrations */ if (integrateNodeProfile) { - const { nodeProfilingIntegration } = Package.load( + const { nodeProfilingIntegration } = await Package.load( '@sentry/profiling-node', ); diff --git a/packages/core/lib/rest/http-server/contexts/execution-context.ts b/packages/core/lib/rest/http-server/contexts/execution-context.ts index 59a6ea4..2e83a59 100644 --- a/packages/core/lib/rest/http-server/contexts/execution-context.ts +++ b/packages/core/lib/rest/http-server/contexts/execution-context.ts @@ -1,6 +1,6 @@ -import { GenericClass } from '../../../interfaces'; -import { Reflector } from '../../../reflections'; -import { HttpExecutionContext } from './http-execution-context'; +import { GenericClass } from '../../../interfaces/index.js'; +import { Reflector } from '../../../reflections/reflector.js'; +import { HttpExecutionContext } from './http-execution-context.js'; export class ExecutionContext { private reflectorClass: Reflector; diff --git a/packages/core/lib/rest/http-server/contexts/http-execution-context.ts b/packages/core/lib/rest/http-server/contexts/http-execution-context.ts index 348f3a1..1fb1913 100644 --- a/packages/core/lib/rest/http-server/contexts/http-execution-context.ts +++ b/packages/core/lib/rest/http-server/contexts/http-execution-context.ts @@ -1,4 +1,4 @@ -import { RouteArgType, RouteParamtypes } from '../param-decorators'; +import { RouteArgType, RouteParamtypes } from '../param-decorators.js'; import { MiddlewareNext, Request, Response } from '@intentjs/hyper-express'; export class HttpExecutionContext { diff --git a/packages/core/lib/rest/http-server/decorators.ts b/packages/core/lib/rest/http-server/decorators.ts index 5fb8177..b27f8a6 100644 --- a/packages/core/lib/rest/http-server/decorators.ts +++ b/packages/core/lib/rest/http-server/decorators.ts @@ -1,15 +1,15 @@ import { Injectable } from '@nestjs/common'; -import { applyDecorators } from '../../reflections/apply-decorators'; -import { Type } from '../../interfaces'; +import { applyDecorators } from '../../reflections/apply-decorators.js'; +import { Type } from '../../interfaces/index.js'; import { CONTROLLER_KEY, CONTROLLER_OPTIONS, GUARD_KEY, METHOD_KEY, METHOD_PATH, -} from './constants'; -import { HttpMethods } from './interfaces'; -import { IntentGuard } from '../foundation/guards/base-guard'; +} from './constants.js'; +import { HttpMethods } from './interfaces.js'; +import { IntentGuard } from '../foundation/guards/base-guard.js'; export type ControllerOptions = { host?: string; diff --git a/packages/core/lib/rest/http-server/http-handler.ts b/packages/core/lib/rest/http-server/http-handler.ts index 8272f5f..f125313 100644 --- a/packages/core/lib/rest/http-server/http-handler.ts +++ b/packages/core/lib/rest/http-server/http-handler.ts @@ -1,11 +1,8 @@ import { Response } from '@intentjs/hyper-express'; -import { IntentExceptionFilter } from '../../exceptions/base-exception-handler'; -import { IntentGuard } from '../foundation/guards/base-guard'; -import { ExecutionContext } from './contexts/execution-context'; -import { Reply } from './reply'; -import { HttpStatus } from './status-codes'; -import { StreamableFile } from './streamable-file'; -import { isUndefined } from '../../utils/helpers'; +import { IntentExceptionFilter } from '../../exceptions/base-exception-handler.js'; +import { IntentGuard } from '../foundation/guards/base-guard.js'; +import { ExecutionContext } from './contexts/execution-context.js'; +import { Reply } from './reply.js'; export class HttpRouteHandler { constructor( diff --git a/packages/core/lib/rest/http-server/index.ts b/packages/core/lib/rest/http-server/index.ts index 7460dbe..56633a2 100644 --- a/packages/core/lib/rest/http-server/index.ts +++ b/packages/core/lib/rest/http-server/index.ts @@ -1,11 +1,14 @@ -export * from './contexts/execution-context'; -export * from './contexts/http-execution-context'; -export * from './decorators'; -export * from './http-handler'; -export * from './route-explorer'; -export * from './server'; -export * from './streamable-file'; -export * from './status-codes'; -export * from './param-decorators'; -export * from './interfaces'; -export { Request, Response, MiddlewareNext } from '@intentjs/hyper-express'; +export * from './contexts/execution-context.js'; +export * from './contexts/http-execution-context.js'; +export * from './decorators.js'; +export * from './http-handler.js'; +export * from './route-explorer.js'; +export * from './server.js'; +export * from './streamable-file.js'; +export * from './status-codes.js'; +export * from './param-decorators.js'; +export * from './interfaces.js'; +import HyperExpress from '@intentjs/hyper-express'; +export type { MiddlewareNext } from '@intentjs/hyper-express'; + +export const { Request, Response } = HyperExpress; diff --git a/packages/core/lib/rest/http-server/param-decorators.ts b/packages/core/lib/rest/http-server/param-decorators.ts index 002cc74..86bcc91 100644 --- a/packages/core/lib/rest/http-server/param-decorators.ts +++ b/packages/core/lib/rest/http-server/param-decorators.ts @@ -1,6 +1,6 @@ import { plainToInstance } from 'class-transformer'; -import { ROUTE_ARGS } from './constants'; -import { ExecutionContext } from './contexts/execution-context'; +import { ROUTE_ARGS } from './constants.js'; +import { ExecutionContext } from './contexts/execution-context.js'; export enum RouteParamtypes { REQUEST = 0, diff --git a/packages/core/lib/rest/http-server/reply.ts b/packages/core/lib/rest/http-server/reply.ts index 2f6dbf2..987a03a 100644 --- a/packages/core/lib/rest/http-server/reply.ts +++ b/packages/core/lib/rest/http-server/reply.ts @@ -1,9 +1,9 @@ import { Request, Response } from '@intentjs/hyper-express'; -import { HttpStatus } from './status-codes'; -import { isClass, isUndefined } from '../../utils/helpers'; -import { StreamableFile } from './streamable-file'; -import { Obj } from '../../utils'; -import { instanceToPlain, plainToInstance } from 'class-transformer'; +import { HttpStatus } from './status-codes.js'; +import { isUndefined } from '../../utils/helpers.js'; +import { StreamableFile } from './streamable-file.js'; +import { Obj } from '../../utils/index.js'; +import { instanceToPlain } from 'class-transformer'; export class Reply { async handle(req: Request, res: Response, dataFromHandler: any) { diff --git a/packages/core/lib/rest/http-server/response.ts b/packages/core/lib/rest/http-server/response.ts index f9949d1..d9886cb 100644 --- a/packages/core/lib/rest/http-server/response.ts +++ b/packages/core/lib/rest/http-server/response.ts @@ -2,13 +2,13 @@ import { Response as HResponse, Request as HRequest, } from '@intentjs/hyper-express'; -import { StreamableFile } from './streamable-file'; -import { HttpStatus } from './status-codes'; +import { StreamableFile } from './streamable-file.js'; +import { HttpStatus } from './status-codes.js'; import { EXTENSTION_TO_MIME, SupportedExtentions, -} from '../../utils/extension-to-mime'; -import { isUndefined, Obj } from '../../utils'; +} from '../../utils/extension-to-mime.js'; +import { isUndefined, Obj } from '../../utils/index.js'; export class Response { private statusCode: HttpStatus; diff --git a/packages/core/lib/rest/http-server/route-explorer.ts b/packages/core/lib/rest/http-server/route-explorer.ts index 74e026d..4bb2155 100644 --- a/packages/core/lib/rest/http-server/route-explorer.ts +++ b/packages/core/lib/rest/http-server/route-explorer.ts @@ -1,28 +1,27 @@ import { DiscoveryService, MetadataScanner, ModuleRef } from '@nestjs/core'; -import { HttpRoute } from './interfaces'; +import { HttpRoute } from './interfaces.js'; import { Request, Response as HResponse, MiddlewareNext, } from '@intentjs/hyper-express'; -import { HttpExecutionContext } from './contexts/http-execution-context'; -import { HttpRouteHandler } from './http-handler'; -import { Response } from './response'; -import { ExecutionContext } from './contexts/execution-context'; -import { Type } from '../../interfaces'; +import { HttpExecutionContext } from './contexts/http-execution-context.js'; +import { HttpRouteHandler } from './http-handler.js'; +import { ExecutionContext } from './contexts/execution-context.js'; +import { Type } from '../../interfaces/index.js'; import { CONTROLLER_KEY, GUARD_KEY, METHOD_KEY, METHOD_PATH, ROUTE_ARGS, -} from './constants'; -import { RouteArgType } from './param-decorators'; -import { IntentGuard } from '../foundation/guards/base-guard'; -import { IntentMiddleware } from '../foundation/middlewares/middleware'; -import { IntentExceptionFilter } from '../../exceptions/base-exception-handler'; -import { Reply } from './reply'; -import { joinRoute } from '../helpers'; +} from './constants.js'; +import { RouteArgType } from './param-decorators.js'; +import { IntentGuard } from '../foundation/guards/base-guard.js'; +import { IntentMiddleware } from '../foundation/middlewares/middleware.js'; +import { IntentExceptionFilter } from '../../exceptions/base-exception-handler.js'; +import { Reply } from './reply.js'; +import { joinRoute } from '../helpers.js'; export class RouteExplorer { globalGuards: Type[] = []; diff --git a/packages/core/lib/rest/http-server/server.ts b/packages/core/lib/rest/http-server/server.ts index 8be0a3e..2dd338d 100644 --- a/packages/core/lib/rest/http-server/server.ts +++ b/packages/core/lib/rest/http-server/server.ts @@ -1,15 +1,15 @@ import HyperExpress, { MiddlewareHandler } from '@intentjs/hyper-express'; -import { HttpMethods, HttpRoute } from './interfaces'; -import { IntentMiddleware } from '../foundation/middlewares/middleware'; -import { Validator } from '../../validator'; -import { ConfigService } from '../../config'; +import { HttpMethods, HttpRoute } from './interfaces.js'; +import { IntentMiddleware } from '../foundation/middlewares/middleware.js'; +import { Validator } from '../../validator/index.js'; +import { ConfigService } from '../../config/service.js'; import LiveDirectory from 'live-directory'; -import { FileNotFoundException } from '../../exceptions/file-not-found-exception'; -import { Str } from '../../utils'; -import { joinRoute } from '../helpers'; +import { FileNotFoundException } from '../../exceptions/file-not-found-exception.js'; +import { Str } from '../../utils/index.js'; +import { joinRoute } from '../helpers.js'; import { PassThrough } from 'node:stream'; -import { HttpException } from '../../exceptions'; -import { HttpStatus } from './status-codes'; +import { HttpException } from '../../exceptions/index.js'; +import { HttpStatus } from './status-codes.js'; export class HyperServer { protected hyper: HyperExpress.Server; diff --git a/packages/core/lib/rest/index.ts b/packages/core/lib/rest/index.ts index 4fd9d3a..0b6ba25 100644 --- a/packages/core/lib/rest/index.ts +++ b/packages/core/lib/rest/index.ts @@ -1,5 +1,4 @@ -export * from './foundation'; -export * from './middlewares/cors'; -export * from './middlewares/helmet'; -export * from './foundation'; -export * from './http-server'; +export * from './foundation/index.js'; +export * from './middlewares/cors.js'; +export * from './middlewares/helmet.js'; +export * from './http-server/index.js'; diff --git a/packages/core/lib/rest/middlewares/cors.ts b/packages/core/lib/rest/middlewares/cors.ts index ffe516b..284bed3 100644 --- a/packages/core/lib/rest/middlewares/cors.ts +++ b/packages/core/lib/rest/middlewares/cors.ts @@ -1,8 +1,8 @@ import cors, { CorsOptions } from 'cors'; -import { IntentMiddleware, MiddlewareNext } from '../foundation'; -import { ConfigService } from '../../config'; +import { ConfigService } from '../../config/service.js'; import { Injectable } from '@nestjs/common'; import { Request, Response } from '@intentjs/hyper-express'; +import { IntentMiddleware } from '../foundation/middlewares/middleware.js'; @Injectable() export class CorsMiddleware extends IntentMiddleware { diff --git a/packages/core/lib/rest/middlewares/helmet.ts b/packages/core/lib/rest/middlewares/helmet.ts index 3218437..ab17635 100644 --- a/packages/core/lib/rest/middlewares/helmet.ts +++ b/packages/core/lib/rest/middlewares/helmet.ts @@ -1,8 +1,8 @@ import helmet from 'helmet'; -import { Injectable } from '../../foundation'; -import { IntentMiddleware, MiddlewareNext } from '../foundation'; -import { ConfigService } from '../../config'; -import { Request, Response } from '@intentjs/hyper-express'; +import { Injectable } from '../../foundation/index.js'; +import { ConfigService } from '../../config/service.js'; +import { MiddlewareNext, Request, Response } from '@intentjs/hyper-express'; +import { IntentMiddleware } from '../foundation/index.js'; @Injectable() export class HelmetMiddleware extends IntentMiddleware { diff --git a/packages/core/lib/serializers/validationErrorSerializer.ts b/packages/core/lib/serializers/validationErrorSerializer.ts index 398a93e..abaffa4 100644 --- a/packages/core/lib/serializers/validationErrorSerializer.ts +++ b/packages/core/lib/serializers/validationErrorSerializer.ts @@ -1,6 +1,6 @@ import { ValidationError } from 'class-validator'; -import { isEmpty } from '../utils/helpers'; -import { Str } from '../utils/string'; +import { isEmpty } from '../utils/helpers.js'; +import { Str } from '../utils/string.js'; export class ValidationErrorSerializer { async handle(errors: ValidationError[]): Promise> { diff --git a/packages/core/lib/serviceProvider.ts b/packages/core/lib/serviceProvider.ts index e241c20..4a07c43 100644 --- a/packages/core/lib/serviceProvider.ts +++ b/packages/core/lib/serviceProvider.ts @@ -1,23 +1,27 @@ import { DiscoveryModule } from '@nestjs/core'; -import { CacheService } from './cache'; -import { ViewConfigCommand } from './config/command'; -import { ListCommands } from './console'; -import { ObjectionService } from './database'; -import { DbOperationsCommand } from './database/commands/migrations'; -import { EventQueueWorker } from './events/jobListener'; -import { IntentExplorer } from './explorer'; -import { ServiceProvider } from './foundation'; -import { Type } from './interfaces'; -import { LocalizationService } from './localization'; -import { LoggerService } from './logger'; -import { MailerService } from './mailer'; -import { QueueService } from './queue'; -import { QueueConsoleCommands } from './queue/console'; -import { QueueMetadata } from './queue/metadata'; -import { StorageService } from './storage/service'; -import { BuildProjectCommand } from './dev-server/build'; -import { DevServerCommand } from './dev-server/serve'; -import { CONFIG_FACTORY, ConfigBuilder, ConfigService } from './config'; +import { CacheService } from './cache/service.js'; +import { ViewConfigCommand } from './config/command.js'; +import { ListCommands } from './console/index.js'; +import { ObjectionService } from './database/service.js'; +import { DbOperationsCommand } from './database/commands/migrations.js'; +import { EventQueueWorker } from './events/jobListener.js'; +import { IntentExplorer } from './explorer.js'; +import { ServiceProvider } from './foundation/service-provider.js'; +import { Type } from './interfaces/index.js'; +import { LocalizationService } from './localization/service.js'; +import { LoggerService } from './logger/service.js'; +import { MailerService } from './mailer/service.js'; +import { QueueService } from './queue/service.js'; +import { QueueConsoleCommands } from './queue/console/commands.js'; +import { QueueMetadata } from './queue/metadata.js'; +import { StorageService } from './storage/service.js'; +import { BuildProjectCommand } from './dev-server/build.js'; +import { DevServerCommand } from './dev-server/serve.js'; +import { + CONFIG_FACTORY, + ConfigBuilder, + ConfigService, +} from './config/index.js'; export const IntentProvidersFactory = ( config: any[], diff --git a/packages/core/lib/storage/driver-mapper.ts b/packages/core/lib/storage/driver-mapper.ts index 30213b0..71bcbb4 100644 --- a/packages/core/lib/storage/driver-mapper.ts +++ b/packages/core/lib/storage/driver-mapper.ts @@ -1,7 +1,7 @@ -import { Type } from '../interfaces'; -import { Local } from './drivers/local'; -import { S3Storage } from './drivers/s3Storage'; -import { StorageDriver } from './interfaces'; +import { Type } from '../interfaces/index.js'; +import { Local } from './drivers/local.js'; +import { S3Storage } from './drivers/s3Storage.js'; +import { StorageDriver } from './interfaces/index.js'; export const DriverMap: Record> = { local: Local, diff --git a/packages/core/lib/storage/drivers/index.ts b/packages/core/lib/storage/drivers/index.ts index d2422b3..30899cb 100644 --- a/packages/core/lib/storage/drivers/index.ts +++ b/packages/core/lib/storage/drivers/index.ts @@ -1,4 +1,4 @@ -import { Local } from './local'; -import { S3Storage } from './s3Storage'; +import { Local } from './local.js'; +import { S3Storage } from './s3Storage.js'; export { Local, S3Storage }; diff --git a/packages/core/lib/storage/drivers/local.ts b/packages/core/lib/storage/drivers/local.ts index fe8442e..c8c6d9a 100644 --- a/packages/core/lib/storage/drivers/local.ts +++ b/packages/core/lib/storage/drivers/local.ts @@ -1,17 +1,17 @@ import { ReadStream, createReadStream } from 'fs'; import { extname, join } from 'path'; import * as fs from 'fs-extra'; -import { CannotParseAsJsonException } from '../exceptions/cannotParseAsJson'; -import { CannotPerformFileOpException } from '../exceptions/cannotPerformFileOp'; -import { getMimeTypeFromExtention } from '../helpers'; +import { CannotParseAsJsonException } from '../exceptions/cannotParseAsJson.js'; +import { CannotPerformFileOpException } from '../exceptions/cannotPerformFileOp.js'; +import { getMimeTypeFromExtention } from '../helpers/index.js'; import { LocalDiskOptions, StorageDriver, StorageDriver$FileMetadataResponse, StorageDriver$PutFileResponse, StorageDriver$RenameFileResponse, -} from '../interfaces'; -import { StorageService } from '../service'; +} from '../interfaces/index.js'; +import { StorageService } from '../service.js'; export class Local implements StorageDriver { constructor( diff --git a/packages/core/lib/storage/drivers/s3Storage.ts b/packages/core/lib/storage/drivers/s3Storage.ts index 7b7f50e..58db642 100644 --- a/packages/core/lib/storage/drivers/s3Storage.ts +++ b/packages/core/lib/storage/drivers/s3Storage.ts @@ -1,10 +1,9 @@ import { ReadStream } from 'fs'; -import { GenericFunction } from '../../interfaces'; -import { Package } from '../../utils'; -import { Str } from '../../utils/string'; -import { CannotParseAsJsonException } from '../exceptions/cannotParseAsJson'; -import { CannotPerformFileOpException } from '../exceptions/cannotPerformFileOp'; -import { getMimeFromExtension } from '../helpers'; +import { GenericFunction } from '../../interfaces/index.js'; +import { Str } from '../../utils/string.js'; +import { CannotParseAsJsonException } from '../exceptions/cannotParseAsJson.js'; +import { CannotPerformFileOpException } from '../exceptions/cannotPerformFileOp.js'; +import { getMimeFromExtension } from '../helpers/index.js'; import { StorageDriver, FileOptions, @@ -12,8 +11,9 @@ import { StorageDriver$PutFileResponse, StorageDriver$RenameFileResponse, S3DiskOptions, -} from '../interfaces'; -import { StorageService } from '../service'; +} from '../interfaces/index.js'; +import { StorageService } from '../service.js'; +import { Package } from '../../utils/packageLoader.js'; export class S3Storage implements StorageDriver { private readonly disk: string; @@ -25,16 +25,7 @@ export class S3Storage implements StorageDriver { constructor(disk: string, config: S3DiskOptions) { this.disk = disk; this.config = config; - const { getSignedUrl } = Package.load('@aws-sdk/s3-request-presigner'); - this.getSignedUrlFn = getSignedUrl; - this.AWS = Package.load('@aws-sdk/client-s3'); - this.client = new this.AWS.S3({ - region: this.config.region, - credentials: config.credentials || { - accessKeyId: config.accessKey, - secretAccessKey: config.secretKey, - }, - }); + this.initialiseModules(); } getStream(filePath: string): ReadStream { @@ -338,4 +329,21 @@ export class S3Storage implements StorageDriver { ? true : this.config.throwOnFailure; } + + async initialiseModules(): Promise { + if (this.AWS && this.getSignedUrlFn) return; + + this.AWS = await Package.load('@aws-sdk/client-s3'); + const { getSignedUrl } = await Package.load( + '@aws-sdk/s3-request-presigner', + ); + this.getSignedUrlFn = getSignedUrl; + this.client = new this.AWS.S3({ + region: this.config.region, + credentials: this.config.credentials || { + accessKeyId: this.config.accessKey, + secretAccessKey: this.config.secretKey, + }, + }); + } } diff --git a/packages/core/lib/storage/file-handlers/uploaded-file.ts b/packages/core/lib/storage/file-handlers/uploaded-file.ts index 5514aad..cbb2272 100644 --- a/packages/core/lib/storage/file-handlers/uploaded-file.ts +++ b/packages/core/lib/storage/file-handlers/uploaded-file.ts @@ -1,5 +1,5 @@ import { readFileSync } from 'fs-extra'; -import { Str } from '../../utils'; +import { Str } from '../../utils/index.js'; export class UploadedFile { constructor( diff --git a/packages/core/lib/storage/helpers/extensions.ts b/packages/core/lib/storage/helpers/extensions.ts index 1145828..2e1dad5 100644 --- a/packages/core/lib/storage/helpers/extensions.ts +++ b/packages/core/lib/storage/helpers/extensions.ts @@ -1,4 +1,4 @@ -import { MimeTypes } from '../data/mime-db'; +import { MimeTypes } from '../data/mime-db.js'; export const getMimeFromExtension = (fileName: string): string => { const fileSplit = fileName.split('.'); diff --git a/packages/core/lib/storage/helpers/index.ts b/packages/core/lib/storage/helpers/index.ts index 4509f5c..2c06de3 100644 --- a/packages/core/lib/storage/helpers/index.ts +++ b/packages/core/lib/storage/helpers/index.ts @@ -1 +1 @@ -export * from './extensions'; +export * from './extensions.js'; diff --git a/packages/core/lib/storage/index.ts b/packages/core/lib/storage/index.ts index 86323e0..3845e70 100644 --- a/packages/core/lib/storage/index.ts +++ b/packages/core/lib/storage/index.ts @@ -1,3 +1,3 @@ -export * from './storage'; -export * from './drivers'; -export * from './interfaces'; +export * from './storage.js'; +export * from './drivers/index.js'; +export * from './interfaces/index.js'; diff --git a/packages/core/lib/storage/interfaces/index.ts b/packages/core/lib/storage/interfaces/index.ts index 2b7b4a5..7fe5fc0 100644 --- a/packages/core/lib/storage/interfaces/index.ts +++ b/packages/core/lib/storage/interfaces/index.ts @@ -1,6 +1,6 @@ -export * from './storageDriver'; -export * from './storageOptions'; -export * from './fileOptions'; +export * from './storageDriver.js'; +export * from './storageOptions.js'; +export * from './fileOptions.js'; export interface StorageDriver$FileMetadataResponse { path?: string; diff --git a/packages/core/lib/storage/interfaces/storageDriver.ts b/packages/core/lib/storage/interfaces/storageDriver.ts index a4bbf4c..263132d 100644 --- a/packages/core/lib/storage/interfaces/storageDriver.ts +++ b/packages/core/lib/storage/interfaces/storageDriver.ts @@ -4,7 +4,7 @@ import { StorageDriver$PutFileResponse, StorageDriver$RenameFileResponse, FileOptions, -} from '.'; +} from './index.js'; export interface StorageDriver { /** diff --git a/packages/core/lib/storage/service.ts b/packages/core/lib/storage/service.ts index b4d0ba3..5a29f8e 100644 --- a/packages/core/lib/storage/service.ts +++ b/packages/core/lib/storage/service.ts @@ -1,9 +1,9 @@ -import { LocalDiskOptions, S3DiskOptions } from './interfaces'; -import { StorageDriver } from './interfaces'; -import { DiskNotFoundException } from './exceptions/diskNotFound'; -import { ConfigService } from '../config'; -import { DriverMap } from './driver-mapper'; -import { Injectable } from '../foundation/decorators'; +import { LocalDiskOptions, S3DiskOptions } from './interfaces/index.js'; +import { StorageDriver } from './interfaces/index.js'; +import { DiskNotFoundException } from './exceptions/diskNotFound.js'; +import { ConfigService } from '../config/service.js'; +import { DriverMap } from './driver-mapper.js'; +import { Injectable } from '../foundation/decorators.js'; @Injectable() export class StorageService { diff --git a/packages/core/lib/storage/storage.ts b/packages/core/lib/storage/storage.ts index 09fb136..7267f6a 100644 --- a/packages/core/lib/storage/storage.ts +++ b/packages/core/lib/storage/storage.ts @@ -1,6 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { LocalDiskOptions, S3DiskOptions, StorageDriver } from './interfaces'; -import { StorageService } from './service'; +import { + LocalDiskOptions, + S3DiskOptions, + StorageDriver, +} from './interfaces/index.js'; +import { StorageService } from './service.js'; @Injectable() export class Storage { diff --git a/packages/core/lib/transformers/index.ts b/packages/core/lib/transformers/index.ts index 041f85c..14d480f 100644 --- a/packages/core/lib/transformers/index.ts +++ b/packages/core/lib/transformers/index.ts @@ -1,3 +1,3 @@ -export * from './interfaces'; -export * from './transformable'; -export * from './transformer'; +export * from './interfaces.js'; +export * from './transformable.js'; +export * from './transformer.js'; diff --git a/packages/core/lib/transformers/transformable.ts b/packages/core/lib/transformers/transformable.ts index 3c1d565..d30f3e7 100644 --- a/packages/core/lib/transformers/transformable.ts +++ b/packages/core/lib/transformers/transformable.ts @@ -1,6 +1,9 @@ -import { Obj } from '../utils'; -import { TransformableContextOptions, TransformerContext } from './interfaces'; -import { Transformer } from './transformer'; +import { Obj } from '../utils/index.js'; +import { + TransformableContextOptions, + TransformerContext, +} from './interfaces.js'; +import { Transformer } from './transformer.js'; export class Transformable { /** diff --git a/packages/core/lib/transformers/transformer.ts b/packages/core/lib/transformers/transformer.ts index 54fff78..d3d4254 100644 --- a/packages/core/lib/transformers/transformer.ts +++ b/packages/core/lib/transformers/transformer.ts @@ -1,6 +1,6 @@ -import { Transformer$IncludeMethodOptions } from '../interfaces'; -import { ExpParser } from '../utils/expParser'; -import { TransformerContext } from './interfaces'; +import { Transformer$IncludeMethodOptions } from '../interfaces/index.js'; +import { ExpParser } from '../utils/index.js'; +import { TransformerContext } from './interfaces.js'; export abstract class Transformer { public availableIncludes = []; diff --git a/packages/core/lib/utils/array.ts b/packages/core/lib/utils/array.ts index 77c4fac..8295d74 100644 --- a/packages/core/lib/utils/array.ts +++ b/packages/core/lib/utils/array.ts @@ -1,5 +1,5 @@ -import { InvalidValue } from '../exceptions/invalid-value'; -import { Obj } from './object'; +import { InvalidValue } from '../exceptions/invalid-value.js'; +import { Obj } from './object.js'; export class Arr { static toObj( diff --git a/packages/core/lib/utils/columnify.ts b/packages/core/lib/utils/columnify.ts index bde5e26..2a3d5f8 100644 --- a/packages/core/lib/utils/columnify.ts +++ b/packages/core/lib/utils/columnify.ts @@ -1,4 +1,4 @@ -import { Str } from './string'; +import { Str } from './string.js'; export const columnify = ( rows: Record[], diff --git a/packages/core/lib/utils/helpers.ts b/packages/core/lib/utils/helpers.ts index dc573aa..37dd138 100644 --- a/packages/core/lib/utils/helpers.ts +++ b/packages/core/lib/utils/helpers.ts @@ -2,15 +2,16 @@ import { Type } from '@nestjs/common'; import { plainToInstance } from 'class-transformer'; import { validateSync, ValidationError } from 'class-validator'; import * as pc from 'picocolors'; -import { GenericClass } from '../interfaces'; -import { Arr } from './array'; -import { InternalLogger } from './logger'; -import { Obj } from './object'; -import { Str } from './string'; -import { readFileSync } from 'fs-extra'; +import { GenericClass } from '../interfaces/index.js'; +import { Arr } from './array.js'; +import { InternalLogger } from './logger.js'; +import { Obj } from './object.js'; +import { Str } from './string.js'; import { join } from 'path'; -import { findProjectRoot } from './path'; +import { findProjectRoot } from './path.js'; +import fsExtra from 'fs-extra'; +const { readFileSync } = fsExtra; export const isEmpty = (value: any) => { if (Str.isString(value)) { return value === ''; diff --git a/packages/core/lib/utils/index.ts b/packages/core/lib/utils/index.ts index 68fd8d1..61c6f60 100644 --- a/packages/core/lib/utils/index.ts +++ b/packages/core/lib/utils/index.ts @@ -1,8 +1,8 @@ -export * from './expParser'; -export * from './packageLoader'; -export * from './object'; -export * from './string'; -export * from './array'; -export * from './helpers'; -export * from './number'; -export * from './path'; +export * from './expParser.js'; +export * from './packageLoader.js'; +export * from './object.js'; +export * from './string.js'; +export * from './array.js'; +export * from './helpers.js'; +export * from './number.js'; +export * from './path.js'; diff --git a/packages/core/lib/utils/logger.ts b/packages/core/lib/utils/logger.ts index f396880..cacd0ed 100644 --- a/packages/core/lib/utils/logger.ts +++ b/packages/core/lib/utils/logger.ts @@ -1,5 +1,5 @@ import * as pc from 'picocolors'; -import { Str } from './string'; +import { Str } from './string.js'; export class InternalLogger { static moduleName = 'Intent'; diff --git a/packages/core/lib/utils/number.ts b/packages/core/lib/utils/number.ts index 4df63c9..4fe2664 100644 --- a/packages/core/lib/utils/number.ts +++ b/packages/core/lib/utils/number.ts @@ -1,4 +1,4 @@ -import { ConfigService } from '../config/service'; +import { ConfigService } from '../config/service.js'; interface NumOptions { precision?: number; diff --git a/packages/core/lib/utils/object.ts b/packages/core/lib/utils/object.ts index ace582d..8be476e 100644 --- a/packages/core/lib/utils/object.ts +++ b/packages/core/lib/utils/object.ts @@ -1,5 +1,5 @@ -import { InvalidValue } from '../exceptions/invalid-value'; -import { Arr } from './array'; +import { InvalidValue } from '../exceptions/invalid-value.js'; +import { Arr } from './array.js'; export class Obj { static dot(obj: Record): Record { diff --git a/packages/core/lib/utils/packageLoader.ts b/packages/core/lib/utils/packageLoader.ts index 22212a1..1027909 100644 --- a/packages/core/lib/utils/packageLoader.ts +++ b/packages/core/lib/utils/packageLoader.ts @@ -1,10 +1,10 @@ import * as pc from 'picocolors'; -import { InternalLogger } from './logger'; +import { InternalLogger } from './logger.js'; export class Package { - static load(pkgName: string): any { + static async load(pkgName: string): Promise { try { - return require(pkgName); + return import(pkgName); } catch (e) { InternalLogger.error( 'PackageLoader', diff --git a/packages/core/lib/utils/path.ts b/packages/core/lib/utils/path.ts index 48ef398..18fddea 100644 --- a/packages/core/lib/utils/path.ts +++ b/packages/core/lib/utils/path.ts @@ -1,6 +1,7 @@ -import { existsSync } from 'fs-extra'; +import fsExtra from 'fs-extra'; import path from 'path'; +const { existsSync } = fsExtra; export const findProjectRoot = (startPath = process.cwd()) => { // Markers that indicate project root const rootMarkers = ['.intentrc', 'package.json']; diff --git a/packages/core/lib/utils/pluralise.ts b/packages/core/lib/utils/pluralise.ts index ce7b76e..2a7df40 100644 --- a/packages/core/lib/utils/pluralise.ts +++ b/packages/core/lib/utils/pluralise.ts @@ -1,4 +1,4 @@ -import { Str } from './string'; +import { Str } from './string.js'; function revertCase(word: string, token: string) { if (Str.equals(word, token)) return token; diff --git a/packages/core/lib/utils/string.ts b/packages/core/lib/utils/string.ts index 4144b90..4053054 100644 --- a/packages/core/lib/utils/string.ts +++ b/packages/core/lib/utils/string.ts @@ -1,6 +1,6 @@ import { ConflictException } from '@nestjs/common'; -import { Num } from './number'; -import { pluralize, singularize } from './pluralise'; +import { Num } from './number.js'; +import { pluralize, singularize } from './pluralise.js'; export class Str { static wordsArr = (str: string, stripAllSpecialChars?: boolean): string[] => { diff --git a/packages/core/lib/validator/decorators/exists.ts b/packages/core/lib/validator/decorators/exists.ts index 7b12ae8..4090089 100644 --- a/packages/core/lib/validator/decorators/exists.ts +++ b/packages/core/lib/validator/decorators/exists.ts @@ -6,8 +6,8 @@ import { ValidatorConstraint, ValidatorConstraintInterface, } from 'class-validator'; -import { ObjectionService } from '../../database'; -import { isEmpty } from '../../utils/helpers'; +import { isEmpty } from '../../utils/helpers.js'; +import { ObjectionService } from '../../database/service.js'; @Injectable() @ValidatorConstraint({ async: true }) diff --git a/packages/core/lib/validator/decorators/index.ts b/packages/core/lib/validator/decorators/index.ts index b16c900..018e7cf 100644 --- a/packages/core/lib/validator/decorators/index.ts +++ b/packages/core/lib/validator/decorators/index.ts @@ -1,3 +1,4 @@ -export * from './valueIn'; -export * from './isValueFromConfig'; -export * from './isEqualToProp'; +export * from './isEqualToProp.js'; +export * from './isValueFromConfig.js'; +export * from './valueIn.js'; +export * from './exists.js'; diff --git a/packages/core/lib/validator/decorators/isUnique.ts b/packages/core/lib/validator/decorators/isUnique.ts index 54763e3..39320ca 100644 --- a/packages/core/lib/validator/decorators/isUnique.ts +++ b/packages/core/lib/validator/decorators/isUnique.ts @@ -6,8 +6,8 @@ import { ValidatorConstraint, ValidatorConstraintInterface, } from 'class-validator'; -import { ObjectionService } from '../../database'; -import { isEmpty } from '../../utils/helpers'; +import { ObjectionService } from '../../database/service.js'; +import { isEmpty } from '../../utils/helpers.js'; @Injectable() @ValidatorConstraint({ async: true }) diff --git a/packages/core/lib/validator/decorators/isValueFromConfig.ts b/packages/core/lib/validator/decorators/isValueFromConfig.ts index b8ad30b..20edc14 100644 --- a/packages/core/lib/validator/decorators/isValueFromConfig.ts +++ b/packages/core/lib/validator/decorators/isValueFromConfig.ts @@ -6,10 +6,10 @@ import { ValidatorConstraint, ValidatorConstraintInterface, } from 'class-validator'; -import { ConfigService } from '../../config/service'; -import { Obj } from '../../utils'; -import { Arr } from '../../utils/array'; -import { isEmpty } from '../../utils/helpers'; +import { ConfigService } from '../../config/service.js'; +import { Obj } from '../../utils/index.js'; +import { Arr } from '../../utils/array.js'; +import { isEmpty } from '../../utils/helpers.js'; @Injectable() @ValidatorConstraint({ async: false }) diff --git a/packages/core/lib/validator/index.ts b/packages/core/lib/validator/index.ts index abf3e82..b44797f 100644 --- a/packages/core/lib/validator/index.ts +++ b/packages/core/lib/validator/index.ts @@ -1,10 +1,10 @@ -import { applyDecorators } from '../reflections/apply-decorators'; -import { SetMetadata } from '../reflections/set-metadata'; -import { UseGuards } from '../rest'; -import { IntentValidationGuard } from './validation-guard'; +import { applyDecorators } from '../reflections/apply-decorators.js'; +import { SetMetadata } from '../reflections/set-metadata.js'; +import { UseGuards } from '../rest/index.js'; +import { IntentValidationGuard } from './validation-guard.js'; -export * from './validator'; -export * from './decorators'; +export * from './validator.js'; +export * from './decorators/index.js'; export function Validate(DTO: any) { return applyDecorators( diff --git a/packages/core/lib/validator/validation-guard.ts b/packages/core/lib/validator/validation-guard.ts index bf1a805..b66a492 100644 --- a/packages/core/lib/validator/validation-guard.ts +++ b/packages/core/lib/validator/validation-guard.ts @@ -1,7 +1,7 @@ import { Request } from '@intentjs/hyper-express'; -import { Injectable } from '../foundation/decorators'; -import { IntentGuard } from '../rest/foundation/guards/base-guard'; -import { ExecutionContext } from '../rest/http-server/contexts/execution-context'; +import { Injectable } from '../foundation/decorators.js'; +import { IntentGuard } from '../rest/foundation/guards/base-guard.js'; +import { ExecutionContext } from '../rest/http-server/contexts/execution-context.js'; @Injectable() export class IntentValidationGuard extends IntentGuard { diff --git a/packages/core/lib/validator/validator.ts b/packages/core/lib/validator/validator.ts index fb494be..34f1182 100644 --- a/packages/core/lib/validator/validator.ts +++ b/packages/core/lib/validator/validator.ts @@ -1,9 +1,8 @@ import { plainToInstance } from 'class-transformer'; import { ValidationError, validate } from 'class-validator'; -import { ConfigService } from '../config/service'; -import { ValidationFailed } from '../exceptions/validation-failed'; -import { Obj } from '../utils'; -import { Type } from '../interfaces/utils'; +import { ConfigService } from '../config/service.js'; +import { ValidationFailed } from '../exceptions/validation-failed.js'; +import { Type } from '../interfaces/utils.js'; export class Validator { private meta: Record; diff --git a/packages/core/package.json b/packages/core/package.json index 13a05f9..9c6f220 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,6 +20,13 @@ "publishConfig": { "access": "public" }, + "type": "module", + "exports": { + ".": { + "types": "./dist/lib/index.d.ts", + "default": "./dist/lib/index.js" + } + }, "scripts": { "build": "rimraf dist && tsc -p tsconfig.json && npm run copy:assets", "format": "prettier --write \"**/*.ts\"", @@ -42,11 +49,13 @@ "@nestjs/testing": "^10.3.9", "@stylistic/eslint-plugin-ts": "^2.6.1", "@types/archy": "^0.0.36", + "@types/cors": "^2.8.17", "@types/fs-extra": "^11.0.1", "@types/inquirer": "^9.0.7", "@types/jest": "^29.5.13", "@types/ms": "^0.7.34", "@types/node": "^22.5.5", + "@types/react-dom": "^19.0.4", "@typescript-eslint/eslint-plugin": "^8.5.0", "@typescript-eslint/parser": "^8.5.0", "eslint": "^8.57.0", @@ -85,6 +94,8 @@ "ms": "^2.1.3", "objection": "^3.1.4", "picocolors": "^1.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", "ts-morph": "^22.0.0", "ulid": "^2.3.0", "winston": "^3.13.0", diff --git a/packages/core/resources/mail/components/CLink.tsx b/packages/core/resources/mail/components/CLink.tsx index 083d340..d86cfef 100644 --- a/packages/core/resources/mail/components/CLink.tsx +++ b/packages/core/resources/mail/components/CLink.tsx @@ -1,13 +1,13 @@ -import * as React from "react"; -import { Link } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Link } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const CLink = ({ value }: ComponentProps) => { return ( {value.title} diff --git a/packages/core/resources/mail/components/CText.tsx b/packages/core/resources/mail/components/CText.tsx index 5bb7bc8..aa0399d 100644 --- a/packages/core/resources/mail/components/CText.tsx +++ b/packages/core/resources/mail/components/CText.tsx @@ -1,7 +1,7 @@ -import * as React from "react"; -import { Text } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Text } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const CText = ({ value }: ComponentProps) => { - return {value.text}; + return {value.text}; }; diff --git a/packages/core/resources/mail/components/Footer.tsx b/packages/core/resources/mail/components/Footer.tsx index 5c9338b..6c8d093 100644 --- a/packages/core/resources/mail/components/Footer.tsx +++ b/packages/core/resources/mail/components/Footer.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; -import { Img, Text } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Img, Text } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const Footer = ({ value }: ComponentProps) => { const { logo, title, appName } = value; diff --git a/packages/core/resources/mail/components/Greetings.tsx b/packages/core/resources/mail/components/Greetings.tsx index 6acc202..e50180b 100644 --- a/packages/core/resources/mail/components/Greetings.tsx +++ b/packages/core/resources/mail/components/Greetings.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; -import { Heading } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Heading } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const Greetings = ({ value }: ComponentProps) => { return ( diff --git a/packages/core/resources/mail/components/Header.tsx b/packages/core/resources/mail/components/Header.tsx index 6c90341..18945dd 100644 --- a/packages/core/resources/mail/components/Header.tsx +++ b/packages/core/resources/mail/components/Header.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Heading, Img, Section } from '@react-email/components'; -import { ComponentProps } from './interface'; +import { ComponentProps } from './interface.js'; export const Header = ({ value, className }: ComponentProps) => { const { logo, title } = value; diff --git a/packages/core/resources/mail/components/InjectMarkdown.tsx b/packages/core/resources/mail/components/InjectMarkdown.tsx index c8c50de..22b8bb2 100644 --- a/packages/core/resources/mail/components/InjectMarkdown.tsx +++ b/packages/core/resources/mail/components/InjectMarkdown.tsx @@ -1,19 +1,19 @@ -import * as React from "react"; -import { Markdown } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Markdown } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const InjectMarkdown = ({ value }: ComponentProps) => { return ( {value.content} diff --git a/packages/core/resources/mail/components/Table.tsx b/packages/core/resources/mail/components/Table.tsx index 07382cc..cfbd4f2 100644 --- a/packages/core/resources/mail/components/Table.tsx +++ b/packages/core/resources/mail/components/Table.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { ComponentProps } from './interface.js'; export const Table = ({ value }: ComponentProps) => { const { header, rows } = value; @@ -12,10 +12,10 @@ export const Table = ({ value }: ComponentProps) => { {h} diff --git a/packages/core/resources/mail/components/brandFooter.tsx b/packages/core/resources/mail/components/brandFooter.tsx index 54a5980..031acd1 100644 --- a/packages/core/resources/mail/components/brandFooter.tsx +++ b/packages/core/resources/mail/components/brandFooter.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; -import { Hr, Img, Section, Text } from "@react-email/components"; -import { ComponentProps } from "./interface"; +import * as React from 'react'; +import { Hr, Img, Section, Text } from '@react-email/components'; +import { ComponentProps } from './interface.js'; export const BrandFooter = ({ value }: ComponentProps) => { const { logo, title } = value; @@ -17,7 +17,7 @@ export const BrandFooter = ({ value }: ComponentProps) => {
discord { return (