From 0761d7e2bb68a8cdf1f39d6424007b27d2ff2606 Mon Sep 17 00:00:00 2001 From: Cameron Steele Date: Mon, 11 Sep 2023 16:43:24 -0500 Subject: [PATCH 1/3] Rollback pre-bun --- .github/workflows/docker-publish.yml | 7 +- .gitignore | 111 +- Dockerfile | 17 +- README.md | 14 +- bun.lockb | Bin 94688 -> 0 bytes package-lock.json | 4075 ++++++++++++++++++++++++++ package.json | 25 +- src/index.ts | 31 +- src/interactions/commands/status.ts | 2 - src/lib/keycloak/index.ts | 41 +- src/lib/octoprint/index.ts | 65 +- src/scripts/config.ts | 24 - src/utils/config.ts | 4 + tsconfig.json | 5 +- 14 files changed, 4280 insertions(+), 141 deletions(-) delete mode 100755 bun.lockb create mode 100644 package-lock.json delete mode 100644 src/scripts/config.ts diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index b1e99d0..aac06a4 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -14,7 +14,6 @@ env: # github.repository as / IMAGE_NAME: ${{ github.repository }} - jobs: build: runs-on: ubuntu-latest @@ -37,7 +36,6 @@ jobs: with: cosign-release: 'v1.13.1' - # Workaround: https://github.com/docker/build-push-action/issues/461 - name: Setup Docker buildx uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf @@ -73,7 +71,6 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max - # Sign the resulting Docker image digest except on PRs. # This will only write to the public Rekor transparency log when the Docker # repository is public to avoid leaking data. If you would like to publish @@ -82,11 +79,11 @@ jobs: - name: Sign the published Docker image if: ${{ github.event_name != 'pull_request' }} env: - COSIGN_EXPERIMENTAL: "true" + COSIGN_EXPERIMENTAL: 'true' # This step uses the identity token to provision an ephemeral certificate # against the sigstore community Fulcio instance. run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }} - + # Checkout the other repository - name: Checkout TheLab-ms/gitops repository uses: actions/checkout@v3 diff --git a/.gitignore b/.gitignore index a33bc85..89a427a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,107 @@ -# Other Package Mangers -package-lock.json -yarn.lock +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* -# General Node Stuff -node_modules +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json -# OS Specific -.DS_STORE -thubms.db +# Runtime data +pids +*.pid +*.seed +*.pid.lock -# Dangerous files +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file .env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Project specific files config.json diff --git a/Dockerfile b/Dockerfile index c0f6d6a..0451cdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,13 @@ -FROM oven/bun - -# We need curl for a hack -RUN apt update -RUN apt install -y curl +FROM node:lts-alpine WORKDIR /usr - -COPY package.json ./ -COPY bun.lockb ./ +COPY package*.json ./ COPY tsconfig.json ./ COPY src ./src -RUN bun install +RUN npm ci +RUN npm run build + +RUN npm i -g pm2 -CMD ["bun", "run", "start"] +CMD ["pm2-runtime", "start", "dist/index.js"] diff --git a/README.md b/README.md index 7d5fb1d..85f8fc9 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,9 @@ Glider Bot The official Discord Bot for TheLab.ms -Now powered by Bun ## Setup ### Prerequisites -- Bun 1.0.0 [Get it Here](https://bun.sh) +- Node.js 18.0.0 or higher ### Installation 1. Clone the repository @@ -17,18 +16,11 @@ git clone ... 2. Install dependencies ```bash -bun install +npm install ``` 3. Run the config command ```bash -bun run config -``` - -4. Edit the config.json file and .env -5. Run the config command again -6. Run it -```bash -bun run start +npm run config ``` diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index c90739d2ff28301c0b4aad2255bb122d5840fdd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94688 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 Lk1+iY{NMip`^{{U diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e25abad --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4075 @@ +{ + "name": "typescript-discord-bot-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "typescript-discord-bot-template", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@discordjs/builders": "^1.6.3", + "@discordjs/rest": "^1.7.1", + "@types/dotenv": "^8.2.0", + "axios": "^1.3.2", + "cron": "^2.2.0", + "discord-api-types": "^0.37.46", + "discord.js": "14.11.0", + "dotenv": "^16.0.3", + "fastify": "^4.17.0", + "qs": "^6.11.2", + "zod": "^3.20.6", + "zod-to-json-schema": "^3.21.2" + }, + "devDependencies": { + "@types/cron": "^2.0.0", + "@types/node": "^18.16.16", + "@types/qs": "^6.9.7", + "@typescript-eslint/eslint-plugin": "^5.60.0", + "@typescript-eslint/parser": "^5.60.0", + "eslint": "^8.34.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "prettier": "^2.8.4", + "prisma": "^4.14.1", + "ts-node": "^10.9.1", + "tsc-watch": "^6.0.0", + "typescript": "^4.9.5" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@discordjs/builders": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.3.tgz", + "integrity": "sha512-CTCh8NqED3iecTNuiz49mwSsrc2iQb4d0MjMdmS/8pb69Y4IlzJ/DIy/p5GFlgOrFbNO2WzMHkWKQSiJ3VNXaw==", + "dependencies": { + "@discordjs/formatters": "^0.3.1", + "@discordjs/util": "^0.3.1", + "@sapphire/shapeshift": "^3.8.2", + "discord-api-types": "^0.37.41", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/collection": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.1.tgz", + "integrity": "sha512-aWEc9DCf3TMDe9iaJoOnO2+JVAjeRNuRxPZQA6GVvBf+Z3gqUuWYBy2NWh4+5CLYq5uoc3MOvUQ5H5m8CJBqOA==", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/formatters": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.1.tgz", + "integrity": "sha512-M7X4IGiSeh4znwcRGcs+49B5tBkNDn4k5bmhxJDAUhRxRHTiFAOTVUNQ6yAKySu5jZTnCbSvTYHW3w0rAzV1MA==", + "dependencies": { + "discord-api-types": "^0.37.41" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.1.tgz", + "integrity": "sha512-Ofa9UqT0U45G/eX86cURQnX7gzOJLG2oC28VhIk/G6IliYgQF7jFByBJEykPSHE4MxPhqCleYvmsrtfKh1nYmQ==", + "dependencies": { + "@discordjs/collection": "^1.5.1", + "@discordjs/util": "^0.3.0", + "@sapphire/async-queue": "^1.5.0", + "@sapphire/snowflake": "^3.4.2", + "discord-api-types": "^0.37.41", + "file-type": "^18.3.0", + "tslib": "^2.5.0", + "undici": "^5.22.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.3.1.tgz", + "integrity": "sha512-HxXKYKg7vohx2/OupUN/4Sd02Ev3PBJ5q0gtjdcvXb0ErCva8jNHWfe/v5sU3UKjIB/uxOhc+TDOnhqffj9pRA==", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/ws": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-0.8.3.tgz", + "integrity": "sha512-hcYtppanjHecbdNyCKQNH2I4RP9UrphDgmRgLYrATEQF1oo4sYSve7ZmGsBEXSzH72MO2tBPdWSThunbxUVk0g==", + "dependencies": { + "@discordjs/collection": "^1.5.1", + "@discordjs/rest": "^1.7.1", + "@discordjs/util": "^0.3.1", + "@sapphire/async-queue": "^1.5.0", + "@types/ws": "^8.5.4", + "@vladfrangu/async_event_emitter": "^2.2.1", + "discord-api-types": "^0.37.41", + "tslib": "^2.5.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fastify/ajv-compiler": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "dependencies": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" + } + }, + "node_modules/@fastify/ajv-compiler/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/@fastify/deepmerge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==" + }, + "node_modules/@fastify/error": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.2.0.tgz", + "integrity": "sha512-KAfcLa+CnknwVi5fWogrLXgidLic+GXnLjijXdpl8pvkvbXU5BGa37iZO9FGvsh9ZL4y+oFi5cbHBm5UOG+dmQ==" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "dependencies": { + "fast-json-stringify": "^5.7.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@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, + "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, + "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, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@prisma/engines": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.14.1.tgz", + "integrity": "sha512-APqFddPVHYmWNKqc+5J5SqrLFfOghKOLZxobmguDUacxOwdEutLsbXPVhNnpFDmuQWQFbXmrTTPoRrrF6B1MWA==", + "dev": true, + "hasInstallScript": true + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.0.tgz", + "integrity": "sha512-iJpHmjAdwX9aSL6MvFpVyo+tkokDtInmSjoJHbz/k4VJfnim3DjvG0hgGEKWtWZgCu45RaLgcoNgR1fCPdIz3w==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", + "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "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==" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/cron": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/cron/-/cron-2.0.1.tgz", + "integrity": "sha512-WHa/1rtNtD2Q/H0+YTTZoty+/5rcE66iAFX2IY+JuUoOACsevYyFkSYu/2vdw+G5LrmO7Lxowrqm0av4k3qWNQ==", + "dev": true, + "dependencies": { + "@types/luxon": "*", + "@types/node": "*" + } + }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dependencies": { + "dotenv": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "peer": true + }, + "node_modules/@types/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.16.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", + "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz", + "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.60.0", + "@typescript-eslint/type-utils": "5.60.0", + "@typescript-eslint/utils": "5.60.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.0.tgz", + "integrity": "sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.60.0", + "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/typescript-estree": "5.60.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz", + "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/visitor-keys": "5.60.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz", + "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.60.0", + "@typescript-eslint/utils": "5.60.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz", + "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz", + "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/visitor-keys": "5.60.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz", + "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.60.0", + "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/typescript-estree": "5.60.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz", + "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vladfrangu/async_event_emitter": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", + "integrity": "sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": 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-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "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==", + "dev": true, + "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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/avvio": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.1.tgz", + "integrity": "sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==", + "dependencies": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1" + } + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.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 + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "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, + "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/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, + "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 + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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 + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cron": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.3.1.tgz", + "integrity": "sha512-1eRRlIT0UfIqauwbG9pkg3J6CX9A6My2ytJWqAXoK0T9oJnUZTzGBNPxao0zjodIbPgf8UQWjE62BMb9eVllSQ==", + "dependencies": { + "luxon": "^3.2.1" + } + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/discord-api-types": { + "version": "0.37.46", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.46.tgz", + "integrity": "sha512-DeSi5WSWYTeXJJhdwACtpQycY3g4vLRvE2Ol5IlC0o//P2W+8jXPF447PuJn2fRH1nD7JGEJ3YMb0NB9+OQ7BQ==" + }, + "node_modules/discord.js": { + "version": "14.11.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.11.0.tgz", + "integrity": "sha512-CkueWYFQ28U38YPR8HgsBR/QT35oPpMbEsTNM30Fs8loBIhnA4s70AwQEoy6JvLcpWWJO7GY0y2BUzZmuBMepQ==", + "dependencies": { + "@discordjs/builders": "^1.6.3", + "@discordjs/collection": "^1.5.1", + "@discordjs/formatters": "^0.3.1", + "@discordjs/rest": "^1.7.1", + "@discordjs/util": "^0.3.1", + "@discordjs/ws": "^0.8.3", + "@sapphire/snowflake": "^3.4.2", + "@types/ws": "^8.5.4", + "discord-api-types": "^0.37.41", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.5.0", + "undici": "^5.22.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "peer": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", + "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "peer": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "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, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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, + "engines": { + "node": ">=4.0" + } + }, + "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, + "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, + "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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-content-type-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", + "integrity": "sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==" + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" + }, + "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==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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-glob/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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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 + }, + "node_modules/fast-json-stringify": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", + "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", + "dependencies": { + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-querystring": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.1.tgz", + "integrity": "sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q==", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-redact": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", + "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-uri": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.2.0.tgz", + "integrity": "sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==" + }, + "node_modules/fastify": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.17.0.tgz", + "integrity": "sha512-tzuY1tgWJo2Y6qEKwmLhFvACUmr68Io2pqP/sDKU71KRM6A6R3DrCDqLGqANbeLZcKUfdfY58ut35CGqemcTgg==", + "dependencies": { + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.0.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.2.0", + "fast-content-type-parse": "^1.0.0", + "fast-json-stringify": "^5.7.0", + "find-my-way": "^7.6.0", + "light-my-request": "^5.6.1", + "pino": "^8.5.0", + "process-warning": "^2.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.5.0", + "semver": "^7.3.7", + "tiny-lru": "^11.0.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.4.0.tgz", + "integrity": "sha512-o6MQrZKTAK6WpvmQk3jqTVUmqxYBxW5bloUfrdH1ZnRFDvvAPNr+l+rgOxM3nkqWT+3khaj3FRMDydWe0xhu+w==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-my-way": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.6.2.tgz", + "integrity": "sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "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 + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": 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": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "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, + "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==", + "dev": 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==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "peer": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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 + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/light-my-request": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.9.1.tgz", + "integrity": "sha512-UT7pUk8jNCR1wR7w3iWfIjx32DiB2f3hFdQSOwy3/EPQ3n3VocyipUxcyRZR0ahoev+fky69uA+GejPa9KuHKg==", + "dependencies": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "engines": { + "node": ">=12" + } + }, + "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 + }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "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, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "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 + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-cleanup": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", + "integrity": "sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + }, + "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, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "peer": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pino": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.1.tgz", + "integrity": "sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.1.tgz", + "integrity": "sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prisma": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.14.1.tgz", + "integrity": "sha512-z6hxzTMYqT9SIKlzD08dhzsLUpxjFKKsLpp5/kBDnSqiOjtUyyl/dC5tzxLcOa3jkEHQ8+RpB/fE3w8bgNP51g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "4.14.1" + }, + "bin": { + "prisma": "build/index.js", + "prisma2": "build/index.js" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "dev": true, + "dependencies": { + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + } + ] + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "node_modules/readable-stream": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", + "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "peer": true, + "dependencies": { + "is-core-module": "^2.11.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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" + } + ], + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "dependencies": { + "ret": "~0.2.0" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "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==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.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, + "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, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tiny-lru": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.0.1.tgz", + "integrity": "sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==", + "engines": { + "node": ">=12" + } + }, + "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, + "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==", + "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/ts-mixer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", + "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsc-watch": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/tsc-watch/-/tsc-watch-6.0.4.tgz", + "integrity": "sha512-cHvbvhjO86w2aGlaHgSCeQRl+Aqw6X6XN4sQMPZKF88GoP30O+oTuh5lRIJr5pgFWrRpF1AgXnJJ2DoFEIPHyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "node-cleanup": "^2.1.2", + "ps-tree": "^1.2.0", + "string-argv": "^0.3.1" + }, + "bin": { + "tsc-watch": "dist/lib/tsc-watch.js" + }, + "engines": { + "node": ">=12.12.0" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", + "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.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==", + "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==" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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 + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.21.2.tgz", + "integrity": "sha512-02yfKymfmIf2rM/5LYGlyw0daEel/f3MsSGMNJZWWf44ato+Y+diFugOpDtgvEUn3cYM5oDAGWW2NHeSD4mByw==", + "peerDependencies": { + "zod": "^3.21.4" + } + } + } +} diff --git a/package.json b/package.json index e3815d2..7fd6cd9 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,10 @@ "description": "The un-offical Discord Bot for TheLab.ms", "main": "index.js", "scripts": { - "build": "bun build", - "start": "bun src/index.ts", + "build": "tsc", + "start": "ts-node --transpile-only src/index.ts", "lint": "eslint . --ext .ts --config .eslintrc", - "config": "bun ./src/scripts/config.ts" + "config": "node ./scripts/config.js" }, "repository": { "type": "git", @@ -26,25 +26,32 @@ "dependencies": { "@discordjs/builders": "^1.6.3", "@discordjs/rest": "^1.7.1", - "@types/node": "^20.6.0", + "@types/dotenv": "^8.2.0", + "axios": "^1.3.2", "cron": "^2.2.0", - "discord-api-types": "^0.37.56", + "discord-api-types": "^0.37.46", "discord.js": "14.11.0", + "dotenv": "^16.0.3", + "fastify": "^4.17.0", "qs": "^6.11.2", - "zod": "^3.20.6" + "zod": "^3.20.6", + "zod-to-json-schema": "^3.21.2" }, "devDependencies": { "@types/cron": "^2.0.0", + "@types/node": "^18.16.16", "@types/qs": "^6.9.7", "@typescript-eslint/eslint-plugin": "^5.60.0", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/parser": "^5.60.0", "eslint": "^8.34.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-prettier": "^4.2.1", "prettier": "^2.8.4", - "typescript": "^5.2.2", - "bun-types": "latest" + "prisma": "^4.14.1", + "ts-node": "^10.9.1", + "tsc-watch": "^6.0.0", + "typescript": "^4.9.5" } } diff --git a/src/index.ts b/src/index.ts index a4630ac..070717c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +import dotenv from 'dotenv'; import { Client, Interaction, Message, Partials, GuildMember } from 'discord.js'; import onReady from './events/onReady'; @@ -12,7 +13,7 @@ import onJoin from './events/onJoin'; import { Keycloak } from './lib/keycloak'; import config from './utils/config'; - +dotenv.config(); const { DISCORD_TOKEN } = process.env; const keycloakClient = new Keycloak({ @@ -22,16 +23,18 @@ const keycloakClient = new Keycloak({ password: process.env.KEYCLOAK_PASSWORD || '', }); -const bot = new Client({ - intents: ['Guilds', 'GuildMembers', 'GuildMessages', 'GuildMessageReactions', 'MessageContent'], - partials: [Partials.Reaction], -}); -const [commands, jobs, menus] = await Promise.all([loadCommands(), loadJobs(), loadMenus()]); -const data: EventData = { commands, jobs, config, menus, keycloakClient }; -bot.on('ready', () => onReady(bot, data)); -bot.on('interactionCreate', (interaction: Interaction) => { - onInteractionCreate(interaction, data); -}); -bot.on('messageCreate', (message: Message) => onMessage(message, data)); -bot.on('guildMemberAdd', (member: GuildMember) => onJoin(bot, member, data)); -bot.login(DISCORD_TOKEN); +(async () => { + const bot = new Client({ + intents: ['Guilds', 'GuildMembers', 'GuildMessages', 'GuildMessageReactions', 'MessageContent'], + partials: [Partials.Reaction], + }); + const [commands, jobs, menus] = await Promise.all([loadCommands(), loadJobs(), loadMenus()]); + const data: EventData = { commands, jobs, config, menus, keycloakClient }; + bot.on('ready', () => onReady(bot, data)); + bot.on('interactionCreate', (interaction: Interaction) => { + onInteractionCreate(interaction, data); + }); + bot.on('messageCreate', (message: Message) => onMessage(message, data)); + bot.on('guildMemberAdd', (member: GuildMember) => onJoin(bot, member, data)); + bot.login(DISCORD_TOKEN); +})(); diff --git a/src/interactions/commands/status.ts b/src/interactions/commands/status.ts index 1f3b2f5..98bae51 100644 --- a/src/interactions/commands/status.ts +++ b/src/interactions/commands/status.ts @@ -113,11 +113,9 @@ export class Status extends Command { }); } catch (error) { if (error instanceof OctoprintError) { - await interaction.editReply(`Error: ${error.message}`); return; } - console.log(error) await interaction.editReply(`An unknown error occurred`); } } diff --git a/src/lib/keycloak/index.ts b/src/lib/keycloak/index.ts index a977c07..813b027 100644 --- a/src/lib/keycloak/index.ts +++ b/src/lib/keycloak/index.ts @@ -19,21 +19,17 @@ export class Keycloak { } private async makeRequest(config: { - method: 'GET' | 'POST' | 'PUT' | 'DELETE'; + method: 'get' | 'post' | 'put' | 'delete'; path: string; }): Promise { - const response = await fetch(`${this.url}/admin/realms/${this.realm}/${config.path}`, { + const response: AxiosResponse = await axios.request({ method: config.method, + url: `${this.url}/admin/realms/${this.realm}/${config.path}`, headers: { - 'Authorization': `Bearer ${await this.getToken()}`, + Authorization: `Bearer ${await this.getToken()}`, }, }); - - if (!response.ok) { - throw new Error(`Failed to fetch: ${response.statusText}`); - } - - return await response.json(); + return response.data; } public async getToken(): Promise { @@ -44,32 +40,29 @@ export class Keycloak { password: this.password, }); - const response = await fetch(`${this.url}/realms/${this.realm}/protocol/openid-connect/token`, { - method: 'POST', + const config = { + method: 'post', + maxBodyLength: Infinity, + url: `${this.url}/realms/${this.realm}/protocol/openid-connect/token`, headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, - body: credentials, - }); - - if (!response.ok) { - throw new Error(`Failed to fetch token: ${response.statusText}`); - } - - const data: KeyCloakTokenResponse = await response.json(); - return data.access_token; + data: credentials, + }; + const response: AxiosResponse = await axios.request(config); + return response.data.access_token; } getUsers(): Promise { return this.makeRequest({ - method: 'GET', + method: 'get', path: `users`, }); } async getGroupMembers(groupId: string): Promise { const members = await this.makeRequest({ - method: 'GET', + method: 'get', path: `groups/${groupId}/members`, }); const cleanedMembers = members @@ -89,8 +82,8 @@ export class Keycloak { : undefined, activeSubscriber: member.attributes && - member.attributes.activeSubscriber && - member.attributes.activeSubscriber[0] + member.attributes.activeSubscriber && + member.attributes.activeSubscriber[0] ? member.attributes.activeSubscriber[0] : undefined, disableableCredentialTypes: member.disableableCredentialTypes, diff --git a/src/lib/octoprint/index.ts b/src/lib/octoprint/index.ts index 813c57a..60885b7 100644 --- a/src/lib/octoprint/index.ts +++ b/src/lib/octoprint/index.ts @@ -1,3 +1,7 @@ +import fs from 'fs'; +import path from 'path'; + +import axios from 'axios'; import { JobState, OctoprintConfig, PrinterStatus } from './types'; import { OctoprintError } from './errors'; import { debugLog } from '../../utils/debug'; @@ -18,55 +22,58 @@ export class Octoprint { this.name = printerConfig.name; } - public getPrinterState(): Promise { - return this.httpRequest('/api/printer', 'GET'); + public async getPrinterState(): Promise { + const response = await this.httpRequest('/api/printer', 'GET'); + return response.data; } - public getJobState(): Promise { - return this.httpRequest('/api/job', 'GET'); + public async getJobState(): Promise { + const response = await this.httpRequest('/api/job', 'GET'); + return response.data; } public async getSnapshot(): Promise { + if (!this.hasWebcam) { + const fallbackImage = await fs.promises.readFile( + path.join(__dirname, '../../images/fallback.jpg'), + ); + return fallbackImage; + } try { - // Bun hack - For some reason octet streams are broken in Bun - const proc = Bun.spawn(["curl", "-s", `${this.url}/webcam/?action=snapshot`]); - const image = await new Response(proc.stdout); - return Buffer.from(await image.arrayBuffer()); - } catch (e) { - const fallbackImage = Bun.file('src/images/fallback.jpg'); - return Buffer.from(await fallbackImage.arrayBuffer()); + const response = await this.httpRequest('/webcam/?action=snapshot', 'GET', { + responseType: 'arraybuffer', + }); + return Buffer.from(response.data, 'utf-8'); + } catch (error) { + const fallbackImage = await fs.promises.readFile( + path.join(__dirname, '../../images/fallback.jpg'), + ); + return fallbackImage; } } private async httpRequest( path: string, - method: 'GET' | 'POST' + method: 'GET' | 'POST', + options?: { + responseType?: 'json' | 'arraybuffer'; + }, ): Promise { try { - const response = await fetch(`${this.url}${path}`, { + return await axios(`${this.url}${path}`, { method, headers: { 'X-Api-Key': this.apiKey, }, + ...options, }); - - if (!response.ok) { - console.log("Not ok") - const errorData = await response.json(); - throw new OctoprintError( - response.status, - errorData?.error ?? 'Unknown error' - ); - } - - return await response.json(); } catch (error) { - if (error instanceof OctoprintError) { + if (axios.isAxiosError(error)) { debugLog(error); - throw error; - } else { - debugLog(error); - throw new OctoprintError(500, 'Unknown error'); + throw new OctoprintError( + error.status ?? 500, + error.response?.data?.error ?? 'Unknown error', + ); } } } diff --git a/src/scripts/config.ts b/src/scripts/config.ts deleted file mode 100644 index aa38707..0000000 --- a/src/scripts/config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { existsSync } from "node:fs"; -import configSchema from "../schemas/config"; - -if(!existsSync("config.json")){ - const configExample = Bun.file("config.example.json"); - await Bun.write("config.json", configExample); - console.log("Generated a new config.json, edit it and run this command again"); - process.exit(); -} - -let envContents = ""; -if(!existsSync(".env")){ - envContents = await Bun.file(".env.example").text(); -}else { - envContents = await Bun.file('.env').text(); -} - -const configData = configSchema.parse(await Bun.file("config.json").json()); - -const configBase64 = Buffer.from(JSON.stringify(configData)).toString('base64'); -envContents = envContents.replace(new RegExp(`CONFIG=(.*)`), `CONFIG="${configBase64}"`); - -await Bun.write(".env", envContents); -console.log("Updated env file"); diff --git a/src/utils/config.ts b/src/utils/config.ts index ce591a0..d706b49 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -1,5 +1,9 @@ +import dotenv from 'dotenv'; + import configSchema from '../schemas/config'; +dotenv.config(); + export function loadConfig() { const decodedData = atob(process.env.CONFIG); return configSchema.parse(JSON.parse(decodedData || '{}')); diff --git a/tsconfig.json b/tsconfig.json index 91276ef..07acf6f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,10 +11,7 @@ "lib": ["esnext", "dom"], "rootDir": "src", "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "types": [ - "bun-types" - ] + "allowSyntheticDefaultImports": true }, "include": ["src/**/*"] } From 085369b0362a4f8e90c303c1db7781cc32445fde Mon Sep 17 00:00:00 2001 From: Cameron Steele Date: Mon, 11 Sep 2023 16:44:02 -0500 Subject: [PATCH 2/3] Update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 89a427a..3a3854e 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,5 @@ dist # Project specific files config.json + +.DS_STORE From e987c71d3e06833d06a1470d5eb8d69853056631 Mon Sep 17 00:00:00 2001 From: Cameron Steele Date: Mon, 11 Sep 2023 16:44:55 -0500 Subject: [PATCH 3/3] Clean dep --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 7fd6cd9..3baaa9f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "dependencies": { "@discordjs/builders": "^1.6.3", "@discordjs/rest": "^1.7.1", - "@types/dotenv": "^8.2.0", "axios": "^1.3.2", "cron": "^2.2.0", "discord-api-types": "^0.37.46",