diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1bcaa3c --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +DISCORD_BOT_TOKEN= diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index ef4ce39..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: 'snazzah' -}; diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 85657bc..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,12 +0,0 @@ - -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" diff --git a/.github/labels.yml b/.github/labels.yml deleted file mode 100644 index f66e557..0000000 --- a/.github/labels.yml +++ /dev/null @@ -1,74 +0,0 @@ -- name: 'good first issue' - color: '5319e7' - description: 'Good for newcomers' - aliases: [] - -- name: 'help wanted' - color: '008672' - description: 'Extra attention is needed' - aliases: [] - -- name: 'status: pending' - color: c5def5 - description: 'More info is needed before deciding what to do' - aliases: [] - -- name: 'status: pinned' - color: 0052cc - description: 'Should not be labeled as stale' - aliases: [] - -- name: 'status: stale' - color: fbca04 - description: 'Inactive issues and PRs' - aliases: ['stale'] - -- name: 'status: wontfix' - color: ffffff - description: 'This will not be worked on' - aliases: ['wontfix'] - -- name: 'type: automation' - color: 2fc904 - description: 'About actions workflows and automation' - aliases: ['automation'] - -- name: 'type: bug' - color: d73a4a - description: 'Verified problems that need to be worked on' - aliases: ['bug'] - -- name: 'type: dependencies' - color: 0366d6 - description: 'Pull requests that update a dependency file' - aliases: ['dependencies'] - -- name: 'type: duplicate' - color: cfd3d7 - description: 'This issue or pull request already exists' - aliases: ['duplicate'] - -- name: 'type: enhancement' - color: a2eeef - description: 'New feature or request' - aliases: ['enhancement'] - -- name: 'type: invalid' - color: e4e669 - description: "This doesn't seem right" - aliases: ['invalid'] - -- name: 'type: maintenance' - color: 0075ca - description: "Docs & refactoring, doesn't affect functionality" - aliases: ['documentation'] - -- name: 'type: not a bug' - color: 0e8a16 - description: 'Reports that happen not be our fault' - aliases: ['not a bug'] - -- name: 'type: question' - color: d876e3 - description: 'Further information is requested' - aliases: ['question'] \ No newline at end of file diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 7c4e866..0000000 --- a/.github/stale.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 60 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: true diff --git a/.github/workflows/ci-dep.yml b/.github/workflows/ci-dep.yml deleted file mode 100644 index 6a42a1a..0000000 --- a/.github/workflows/ci-dep.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: CI Dependencies -on: pull_request - -jobs: - automerge: - name: Automerge Dependabot PRs - if: github.event.pull_request.user.login == 'dependabot[bot]' - runs-on: ubuntu-latest - permissions: - pull-requests: write - contents: write - checks: read - steps: - - name: Wait for checks to succeed - uses: lewagon/wait-on-check-action@v1.1.2 - with: - ref: ${{ github.ref }} - running-workflow-name: 'Automerge Dependabot PRs' - repo-token: ${{ secrets.GITHUB_TOKEN }} - wait-interval: 10 - - uses: fastify/github-action-merge-dependabot@v3 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - target: minor diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index fb4ae54..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: ESLint -on: - push: - paths: - - "src/**" - - ".eslintrc.*" - - ".prettierrc" - - ".eslintignore" - - "package.json" - - "pnpm-lock.yaml" - - ".github/workflows/lint.yml" - pull_request_target: - workflow_dispatch: - -jobs: - lint: - name: Lint source code - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Set up Node.js for NPM - uses: actions/setup-node@v3 - with: - node-version: 18.x - - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 7 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Run ESLint - run: pnpm run lint:fix - - - name: Commit changes - uses: EndBug/add-and-commit@v4 - with: - add: src - message: "chore(lint): auto-lint source code" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 857fd62..548567d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ dist/ *.log *.db config/default.js +_src/ +*.env diff --git a/.prettierrc b/.prettierrc index a3d9a52..562b1c2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,7 @@ { - "arrowParens": "always", "semi": true, "singleQuote": true, "tabWidth": 2, - "useTabs": false, - "trailingComma": "none", - "printWidth": 120 + "printWidth": 100, + "trailingComma": "es5" } diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index ca7cb7c..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "editorconfig.editorconfig", - "gruntfuggly.todo-tree" - ] -} diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..6267c09 --- /dev/null +++ b/bun.lock @@ -0,0 +1,61 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "craig-helperbot", + "dependencies": { + "@projectdysnomia/dysnomia": "^0.2.3", + "common-tags": "^1.8.2", + }, + "devDependencies": { + "@types/bun": "latest", + "@types/common-tags": "^1.8.4", + "prettier": "^3.5.3", + "typescript": "^5", + }, + }, + }, + "packages": { + "@projectdysnomia/dysnomia": ["@projectdysnomia/dysnomia@0.2.3", "", { "dependencies": { "ws": "^8.18.0" }, "optionalDependencies": { "@stablelib/xchacha20poly1305": "~1.0.1", "opusscript": "^0.1.1" }, "peerDependencies": { "@discordjs/opus": "^0.9.0", "erlpack": "github:discord/erlpack", "eventemitter3": "^5.0.1", "pako": "^2.1.0", "sodium-native": "^4.1.1", "zlib-sync": "^0.1.9" }, "optionalPeers": ["@discordjs/opus", "erlpack", "eventemitter3", "pako", "sodium-native", "zlib-sync"] }, "sha512-BBF9JV0wEJJXUdO+Kxj+LlKoFfgwj02LCXZOgt0jD+vuh1q9Yw57XNjaFwWXQHurD7PfmwqERC+UINDBlOo9Xw=="], + + "@stablelib/aead": ["@stablelib/aead@1.0.1", "", {}, "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg=="], + + "@stablelib/binary": ["@stablelib/binary@1.0.1", "", { "dependencies": { "@stablelib/int": "^1.0.1" } }, "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q=="], + + "@stablelib/chacha": ["@stablelib/chacha@1.0.1", "", { "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/wipe": "^1.0.1" } }, "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg=="], + + "@stablelib/chacha20poly1305": ["@stablelib/chacha20poly1305@1.0.1", "", { "dependencies": { "@stablelib/aead": "^1.0.1", "@stablelib/binary": "^1.0.1", "@stablelib/chacha": "^1.0.1", "@stablelib/constant-time": "^1.0.1", "@stablelib/poly1305": "^1.0.1", "@stablelib/wipe": "^1.0.1" } }, "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA=="], + + "@stablelib/constant-time": ["@stablelib/constant-time@1.0.1", "", {}, "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg=="], + + "@stablelib/int": ["@stablelib/int@1.0.1", "", {}, "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w=="], + + "@stablelib/poly1305": ["@stablelib/poly1305@1.0.1", "", { "dependencies": { "@stablelib/constant-time": "^1.0.1", "@stablelib/wipe": "^1.0.1" } }, "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA=="], + + "@stablelib/wipe": ["@stablelib/wipe@1.0.1", "", {}, "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg=="], + + "@stablelib/xchacha20": ["@stablelib/xchacha20@1.0.1", "", { "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/chacha": "^1.0.1", "@stablelib/wipe": "^1.0.1" } }, "sha512-1YkiZnFF4veUwBVhDnDYwo6EHeKzQK4FnLiO7ezCl/zu64uG0bCCAUROJaBkaLH+5BEsO3W7BTXTguMbSLlWSw=="], + + "@stablelib/xchacha20poly1305": ["@stablelib/xchacha20poly1305@1.0.1", "", { "dependencies": { "@stablelib/aead": "^1.0.1", "@stablelib/chacha20poly1305": "^1.0.1", "@stablelib/constant-time": "^1.0.1", "@stablelib/wipe": "^1.0.1", "@stablelib/xchacha20": "^1.0.1" } }, "sha512-B1Abj0sMJ8h3HNmGnJ7vHBrAvxuNka6cJJoZ1ILN7iuacXp7sUYcgOVEOTLWj+rtQMpspY9tXSCRLPmN1mQNWg=="], + + "@types/bun": ["@types/bun@1.2.15", "", { "dependencies": { "bun-types": "1.2.15" } }, "sha512-U1ljPdBEphF0nw1MIk0hI7kPg7dFdPyM7EenHsp6W5loNHl7zqy6JQf/RKCgnUn2KDzUpkBwHPnEJEjII594bA=="], + + "@types/common-tags": ["@types/common-tags@1.8.4", "", {}, "sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg=="], + + "@types/node": ["@types/node@22.15.29", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ=="], + + "bun-types": ["bun-types@1.2.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-NarRIaS+iOaQU1JPfyKhZm4AsUOrwUOqRNHY0XxI8GI8jYxiLXLcdjYMG9UKS+fwWasc1uw1htV9AX24dD+p4w=="], + + "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], + + "opusscript": ["opusscript@0.1.1", "", {}, "sha512-mL0fZZOUnXdZ78woRXp18lApwpp0lF5tozJOD1Wut0dgrA9WuQTgSels/CSmFleaAZrJi/nci5KOVtbuxeWoQA=="], + + "prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="], + + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "ws": ["ws@8.18.2", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ=="], + } +} diff --git a/config/_default.js b/config/_default.js deleted file mode 100644 index 61b42cd..0000000 --- a/config/_default.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - dexare: { - token: '', - - erisOptions: { - autoreconnect: true, - allowedMentions: { - everyone: false, - roles: false, - users: true - }, - defaultImageFormat: 'png', - defaultImageSize: 256, - messageLimit: 0, - gateway: { - maxShards: 1, - intents: ['guilds', 'guildMessages', 'messageContent'], - requestTimeout: 15000 - } - }, - - elevated: ['158049329150427136'], - - prefix: ['?'], - mentionPrefix: true, - - logger: { - level: 'debug' - } - }, - commandsPath: './commands' -}; diff --git a/ecosystem.config.js b/ecosystem.config.js index 1f7061d..96ee486 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -2,8 +2,8 @@ module.exports = { apps: [ { name: 'Craig Helper Bot', - script: 'node', - args: 'dist/index.js' + script: 'bun', + args: 'src/index.ts' } ] }; diff --git a/package.json b/package.json index db4e04e..07eb8a3 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,12 @@ { "name": "craig-helperbot", - "version": "1.0.0", + "version": "2.0.0", "description": "Helper bot for Craig", - "main": "dist/index.js", "private": true, "scripts": { - "start": "cd dist && node index.js", - "build": "npx rimraf dist && tsc", - "dev": "devScript", - "lint": "eslint ./src", - "lint:fix": "eslint ./src --fix" + "start": "bun run src/index.ts", + "dev": "bun run --watch src/index.ts", + "format": "prettier --write \"src/**/*.{ts,js,json}\"" }, "repository": "https://github.com/CraigChat/helper", "author": { @@ -26,23 +23,13 @@ }, "homepage": "https://github.com/CraigChat/helper#readme", "dependencies": { - "@dexare/logger": "^1.0.2", - "common-tags": "^1.8.2", - "config": "^3.3.9", - "dexare": "^3.0.2", - "eris": "github:CraigChat/dysnomia#craig-master", - "lodash": "^4.17.21" + "@projectdysnomia/dysnomia": "^0.2.3", + "common-tags": "^1.8.2" }, "devDependencies": { + "@types/bun": "latest", "@types/common-tags": "^1.8.4", - "@types/config": "^3.3.3", - "@types/lodash": "^4.14.202", - "@types/node": "^18.15.11", - "@types/ws": "^8.5.10", - "eslint": "^8.55.0", - "eslint-config-snazzah": "^1.2.1", - "ts-devscript": "^3.0.7", - "ts-node": "^10.9.2", - "typescript": "^5.3.3" + "prettier": "^3.5.3", + "typescript": "^5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 4740191..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,2842 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@dexare/logger': - specifier: ^1.0.2 - version: 1.0.2 - common-tags: - specifier: ^1.8.2 - version: 1.8.2 - config: - specifier: ^3.3.9 - version: 3.3.9 - dexare: - specifier: ^3.0.2 - version: 3.0.2(@projectdysnomia/dysnomia@0.2.0-dev) - eris: - specifier: github:CraigChat/dysnomia#craig-master - version: git/github.com+CraigChat/dysnomia/e09830de73930094bacc3480f6306cef4c97c533 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - -devDependencies: - '@types/common-tags': - specifier: ^1.8.4 - version: 1.8.4 - '@types/config': - specifier: ^3.3.3 - version: 3.3.3 - '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 - '@types/node': - specifier: ^18.15.11 - version: 18.15.11 - '@types/ws': - specifier: ^8.5.10 - version: 8.5.10 - eslint: - specifier: ^8.55.0 - version: 8.55.0 - eslint-config-snazzah: - specifier: ^1.2.1 - version: 1.2.1(typescript@5.3.3) - ts-devscript: - specifier: ^3.0.7 - version: 3.0.7 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@18.15.11)(typescript@5.3.3) - typescript: - specifier: ^5.3.3 - version: 5.3.3 - -packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - dev: false - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@dabh/diagnostics@2.0.3: - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - dev: false - - /@dexare/logger@1.0.2: - resolution: {integrity: sha512-TH+qo0APuMsellWPyJ0OQ2pHDZOUAgIGAj2vsqzQGzxF/xifeKWvcRbzYh341b8sguI+fEQMlD9KsMecnKjAwg==} - dependencies: - chalk: 4.1.2 - dayjs: 1.11.7 - dexare: 2.2.4 - winston: 3.8.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@discordjs/collection@0.1.6: - resolution: {integrity: sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==} - deprecated: no longer supported - dev: false - - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@sindresorhus/is@0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: true - - /@szmarczak/http-timer@1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: true - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - - /@types/common-tags@1.8.4: - resolution: {integrity: sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==} - dev: true - - /@types/config@3.3.3: - resolution: {integrity: sha512-BB8DBAud88EgiAKlz8WQStzI771Kb6F3j4dioRJ4GD+tP4tzcZyMlz86aXuZT4s9hyesFORehMQE6eqtA5O+Vg==} - dev: true - - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 18.15.11 - dev: true - - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - dev: true - - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - dev: true - - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 18.15.11 - dev: true - - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: true - - /@types/triple-beam@1.3.2: - resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} - dev: false - - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 18.15.11 - dev: true - - /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/type-utils': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.55.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.59.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.55.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.59.0: - resolution: {integrity: sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/visitor-keys': 5.59.0 - dev: true - - /@typescript-eslint/type-utils@5.59.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.55.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@5.59.0: - resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/typescript-estree@5.59.0(typescript@5.3.3): - resolution: {integrity: sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/visitor-keys': 5.59.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@5.59.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.3.3) - eslint: 8.55.0 - eslint-scope: 5.1.1 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@5.59.0: - resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - - /@yarnpkg/parsers@3.0.0-rc.42: - resolution: {integrity: sha512-eW9Mbegmb5bJjwawJM9ghjUjUqciNMhC6L7XrQPF/clXS5bbP66MstsgCT5hy9VlfUh/CfBT+0Wucf531dMjHA==} - engines: {node: '>=14.15.0'} - dependencies: - js-yaml: 3.14.1 - tslib: 2.5.0 - dev: true - - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.10.0 - dev: true - - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-back@3.1.0: - resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} - engines: {node: '>=6'} - dev: true - - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: true - - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - get-intrinsic: 1.2.0 - is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: true - - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: true - - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - - /autopm@1.3.1: - resolution: {integrity: sha512-gaFNW4oTaeQarZUIP7VnBAHmSrACUrc5ra8P6jids6Sj+3cWUqTc08RgfVT1YEFPD0MBWM8Mie5DMRUB7h25IQ==} - dependencies: - builtin-modules: 3.3.0 - compare-versions: 3.6.0 - fast-glob: 3.2.12 - package-json: 6.5.0 - require-package-name: 2.0.1 - source-map-support: 0.5.21 - dev: true - - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - - /cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: true - - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-spinners@2.8.0: - resolution: {integrity: sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==} - engines: {node: '>=6'} - dev: true - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: true - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: false - - /colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - dev: false - - /command-line-args@5.2.1: - resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} - engines: {node: '>=4.0.0'} - dependencies: - array-back: 3.1.0 - find-replace: 3.0.0 - lodash.camelcase: 4.3.0 - typical: 4.0.0 - dev: true - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} - dev: false - - /compare-versions@3.6.0: - resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} - dev: true - - /compare-versions@5.0.3: - resolution: {integrity: sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /config@3.3.9: - resolution: {integrity: sha512-G17nfe+cY7kR0wVpc49NCYvNtelm/pPy8czHoFkAgtV1lkmcp7DHtWCdDu+C9Z7gb2WVqa9Tm3uF9aKaPbCfhg==} - engines: {node: '>= 10.0.0'} - dependencies: - json5: 2.2.3 - dev: false - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /dayjs@1.11.7: - resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} - dev: false - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: true - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - - /defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: true - - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /dexare@2.2.4: - resolution: {integrity: sha512-JlD2mEOGasuTWbZPzbmWiZ37oU2RE0HkL64XmAP+d/X6W8leG6fe/SegFAdl3R/2VKn49+QKqw4o8Lgn4Cywqg==} - dependencies: - '@discordjs/collection': 0.1.6 - common-tags: 1.8.2 - eris: git/github.com+abalabahaha/eris/072db2e78ce83fc50d70a21f26f51781f725fa20 - eventemitter3: 4.0.7 - lodash: 4.17.21 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /dexare@3.0.2(@projectdysnomia/dysnomia@0.2.0-dev): - resolution: {integrity: sha512-dpriqEX/rUGCrVAUbTGmHb5iNDSQjphnrX95DTyQwy20dAZZ30WfCRDZSbp3mApSLhhLk0S86amNIjD5cLUaQw==} - peerDependencies: - eris: '*' - dependencies: - '@discordjs/collection': 0.1.6 - common-tags: 1.8.2 - eris: git/github.com+CraigChat/dysnomia/e09830de73930094bacc3480f6306cef4c97c533 - eventemitter3: 4.0.7 - lodash: 4.17.21 - dev: false - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /displayastree@2.0.0: - resolution: {integrity: sha512-v3mQ/DTdrOiVxk1Jmut/ywN5uCTYNThcW71+Kn+w8fw2xkFYRyC0kbrXNuduXVLfkXVTpa2HYdz6bImiGyhkEg==} - dev: true - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - dev: false - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /eol@0.9.1: - resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - dev: true - - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} - 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 - dev: true - - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-prettier@8.8.0(eslint@8.55.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.55.0 - dev: true - - /eslint-config-snazzah@1.2.1(typescript@5.3.3): - resolution: {integrity: sha512-7xmc13vwToMuACbNbrYDZ/DQCS2B77TvY/PEw2ktU+PqlAS3VOJXx44LVsJ83MuobrKfB4gt3gjKZZNlnfDCLg==} - dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/parser': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 - eslint-config-prettier: 8.8.0(eslint@8.55.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint@8.55.0) - eslint-plugin-json: 3.1.0 - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.55.0)(prettier@2.8.7) - eslint-plugin-simple-import-sort: 8.0.0(eslint@8.55.0) - eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.55.0) - prettier: 2.8.7 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - typescript - dev: true - - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} - dependencies: - debug: 3.2.7 - is-core-module: 2.12.0 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint@8.55.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - debug: 3.2.7 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.0)(eslint@8.55.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.55.0)(typescript@5.3.3) - 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: 8.55.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint@8.55.0) - has: 1.0.3 - is-core-module: 2.12.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-json@3.1.0: - resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} - engines: {node: '>=12.0'} - dependencies: - lodash: 4.17.21 - vscode-json-languageservice: 4.2.1 - dev: true - - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.55.0)(prettier@2.8.7): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.55.0 - eslint-config-prettier: 8.8.0(eslint@8.55.0) - prettier: 2.8.7 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-plugin-simple-import-sort@8.0.0(eslint@8.55.0): - resolution: {integrity: sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==} - peerDependencies: - eslint: '>=5.0.0' - dependencies: - eslint: 8.55.0 - dev: true - - /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.55.0): - resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 - eslint-rule-composer: 0.3.0 - dev: true - - /eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - dev: true - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - 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.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: false - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true - - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - dev: false - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-replace@3.0.0: - resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} - engines: {node: '>=4.0.0'} - dependencies: - array-back: 3.1.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - - /fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - dev: false - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - - /get-stdin@8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} - dev: true - - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.0 - dev: true - - /got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.0 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.0 - dev: true - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true - - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - dev: true - - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - dev: true - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - 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 - dev: true - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json2xml@0.1.3: - resolution: {integrity: sha512-yfTe9HnbrE3oRUEQL9mn7BueLd7RCTb7ig/mAFI6xY4RNYOEXF26x0qHFR7mb8ZrKgfE57wxkq0N3TboyFm6UA==} - engines: {node: '>= 0.6.0'} - dev: true - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: true - - /kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - dev: false - - /leasot@12.5.0: - resolution: {integrity: sha512-bx2hqCDZ6EVzdaM+aIBNO12Ff0BscGVWPf23Wzj5FLCEXZuJR729Wn5Naom8dJcqpEbsk2XXzvdHus/3WZqW5w==} - engines: {node: '>=12'} - hasBin: true - dependencies: - async: 3.2.4 - chalk: 4.1.2 - commander: 7.2.0 - eol: 0.9.1 - get-stdin: 8.0.0 - globby: 11.1.0 - json2xml: 0.1.3 - lodash: 4.17.21 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - text-table: 0.2.0 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /logform@2.5.1: - resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} - dependencies: - '@colors/colors': 1.5.0 - '@types/triple-beam': 1.3.2 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.4.3 - triple-beam: 1.3.0 - dev: false - - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true - - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-url@4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: true - - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - dependencies: - fn.name: 1.1.0 - dev: false - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /opusscript@0.0.8: - resolution: {integrity: sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==} - requiresBuild: true - dev: false - optional: true - - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.8.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - - /p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /package-json@6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.0 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: true - - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.2.0 - dev: true - - /prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: true - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true - - /registry-auth-token@4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} - dependencies: - rc: 1.2.8 - dev: true - - /registry-url@5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - dependencies: - rc: 1.2.8 - dev: true - - /require-package-name@2.0.1: - resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: true - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /rxjs@7.8.0: - resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} - dependencies: - tslib: 2.5.0 - dev: true - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - dev: true - - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: false - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: false - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - dev: false - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - - /to-readable-stream@1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: true - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /triple-beam@1.3.0: - resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} - dev: false - - /ts-devscript@3.0.7: - resolution: {integrity: sha512-jmoL19o9CDJuIIMkdeXPWcNKplxfQhpYzZ6tUOJgljbs+QreYeKiIfl6iaa2/xBQTqkOc8L3DU4jG4FPvYifIg==} - hasBin: true - dependencies: - '@yarnpkg/parsers': 3.0.0-rc.42 - autopm: 1.3.1 - chalk: 4.1.2 - chokidar: 3.5.3 - command-line-args: 5.2.1 - compare-versions: 5.0.3 - debug: 4.3.4 - displayastree: 2.0.0 - fast-glob: 3.2.12 - fs-extra: 10.1.0 - inquirer: 8.2.5 - leasot: 12.5.0 - ora: 5.4.1 - source-map-support: 0.5.21 - tree-kill: 1.2.2 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /ts-node@10.9.2(@types/node@18.15.11)(typescript@5.3.3): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.11 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: true - - /tsutils@3.21.0(typescript@5.3.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - 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' - dependencies: - tslib: 1.14.1 - typescript: 5.3.3 - dev: true - - /tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - requiresBuild: true - dev: false - optional: true - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - dev: true - - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /typical@4.0.0: - resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} - engines: {node: '>=8'} - dev: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true - - /url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - - /vscode-json-languageservice@4.2.1: - resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} - dependencies: - jsonc-parser: 3.2.0 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-nls: 5.2.0 - vscode-uri: 3.0.7 - dev: true - - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} - dev: true - - /vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} - dev: true - - /vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - dev: true - - /vscode-uri@3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} - dev: true - - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - 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 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /winston-transport@4.5.0: - resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} - engines: {node: '>= 6.4.0'} - dependencies: - logform: 2.5.1 - readable-stream: 3.6.2 - triple-beam: 1.3.0 - dev: false - - /winston@3.8.2: - resolution: {integrity: sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==} - engines: {node: '>= 12.0.0'} - dependencies: - '@colors/colors': 1.5.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.4 - is-stream: 2.0.1 - logform: 2.5.1 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 - stack-trace: 0.0.10 - triple-beam: 1.3.0 - winston-transport: 4.5.0 - dev: false - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /ws@8.13.0: - resolution: {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 - dev: false - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - git/github.com+CraigChat/dysnomia/e09830de73930094bacc3480f6306cef4c97c533: - resolution: {commit: e09830de73930094bacc3480f6306cef4c97c533, repo: git@github.com:CraigChat/dysnomia.git, type: git} - name: '@projectdysnomia/dysnomia' - version: 0.2.0-dev - engines: {node: '>=16.0.0'} - peerDependencies: - '@discordjs/opus': ^0.9.0 - erlpack: github:discord/erlpack || github:abalabahaha/erlpack - eventemitter3: ^5.0.0 - pako: ^2.1.0 - sodium-native: ^4.0.1 - zlib-sync: ^0.1.8 - peerDependenciesMeta: - '@discordjs/opus': - optional: true - erlpack: - optional: true - eventemitter3: - optional: true - pako: - optional: true - sodium-native: - optional: true - zlib-sync: - optional: true - dependencies: - ws: 8.13.0 - optionalDependencies: - opusscript: 0.0.8 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - git/github.com+abalabahaha/eris/072db2e78ce83fc50d70a21f26f51781f725fa20: - resolution: {commit: 072db2e78ce83fc50d70a21f26f51781f725fa20, repo: git@github.com:abalabahaha/eris.git, type: git} - name: eris - version: 0.16.2-dev - engines: {node: '>=10.4.0'} - dependencies: - ws: 8.13.0 - optionalDependencies: - opusscript: 0.0.8 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false diff --git a/src/assets/access_roles.png b/src/assets/access_roles.png new file mode 100644 index 0000000..c56c877 Binary files /dev/null and b/src/assets/access_roles.png differ diff --git a/src/assets/empty_msg.png b/src/assets/empty_msg.png new file mode 100644 index 0000000..1a82221 Binary files /dev/null and b/src/assets/empty_msg.png differ diff --git a/src/bot.ts b/src/bot.ts deleted file mode 100644 index b479b1e..0000000 --- a/src/bot.ts +++ /dev/null @@ -1,47 +0,0 @@ -import LoggerModule from '@dexare/logger'; -import config from 'config'; -import { BaseConfig, DexareClient } from 'dexare'; -import path from 'path'; - -export const PRODUCTION = process.env.NODE_ENV === 'production'; - -export interface HelperBotConfig extends BaseConfig { - prefix: string | string[]; - mentionPrefix: boolean; - - logger: { - level: string; - inspectOptions?: any; - }; -} - -export const client = new DexareClient(config.get('dexare') as HelperBotConfig); - -client.loadModules(LoggerModule); -client.commands.registerDefaults(['eval', 'help', 'ping', 'kill', 'exec', 'load', 'unload', 'reload']); -client.commands.registerFromFolder(path.join(config.get('commandsPath' as string))); - -process.once('SIGINT', async () => { - client.emit('logger', 'warn', 'sys', ['Caught SIGINT']); - await client.disconnect(); - process.exit(0); -}); - -process.once('beforeExit', async () => { - client.emit('logger', 'warn', 'sys', ['Exiting....']); - await client.disconnect(); - process.exit(0); -}); - -client.events.register('main', 'interactionCreate', async (event, interaction) => { - if (interaction.type === 1) return interaction.pong(); -}); - -export async function connect() { - await client.connect(); - client.bot.shards.forEach((shard) => shard.editStatus('online', { name: 'this server', type: 3 })); -} - -export async function disconnect() { - await client.disconnect(); -} diff --git a/src/canned/align.ts b/src/canned/align.ts new file mode 100644 index 0000000..7f9dc54 --- /dev/null +++ b/src/canned/align.ts @@ -0,0 +1,19 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'align', + description: 'Explains track alignment.', + aliases: ['track-alignment', 'track-align', 'trackalignment', 'trackalign'], + content: { + embeds: [ + { + title: 'Align', + description: stripIndents` + Quoth the web site: + > No matter how long your recording is, no matter how many speakers are recorded, and even if speakers join late, every audio file delivered will be in perfect sync with each other. + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/alistair.ts b/src/canned/alistair.ts similarity index 53% rename from src/commands/canned/alistair.ts rename to src/canned/alistair.ts index 83978ee..2fa72b3 100644 --- a/src/commands/canned/alistair.ts +++ b/src/canned/alistair.ts @@ -1,10 +1,10 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Alistair extends CannedMessage { - content = { +export default { + name: 'alistair', + description: 'Explains Alistair.', + content: { embeds: [ { title: 'What is Alistair?', @@ -13,17 +13,8 @@ export default class Alistair extends CannedMessage { Alistair is a clone of Craig exclusively for patrons. Make sure to link your Discord account to your Patreon account to get access. This is included in any tier in the Patreon: https://www.patreon.com/CraigRec - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'alistair', - description: 'Explains Alistair.' - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/ask.ts b/src/canned/ask.ts new file mode 100644 index 0000000..da2680f --- /dev/null +++ b/src/canned/ask.ts @@ -0,0 +1,7 @@ +import { CannedMessage } from '../util'; + +export default { + name: 'ask', + description: "Don't ask to ask, just ask.", + content: 'https://dontasktoask.com/', +} as CannedMessage; diff --git a/src/canned/autorec.ts b/src/canned/autorec.ts new file mode 100644 index 0000000..76604a8 --- /dev/null +++ b/src/canned/autorec.ts @@ -0,0 +1,21 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'autorec', + description: 'Explains auto-recording.', + aliases: ['auto-recording', 'auto-rec', 'auto-record', 'autorecording', 'autorecord'], + content: { + embeds: [ + { + title: 'Auto-Recording', + url: 'https://www.patreon.com/CraigRec', + description: stripIndents` + Auto-recording is a feature that allows Craig to automatically start a recording when you join a voice channel. + + This is included in the $4 tier in the Patreon: https://www.patreon.com/CraigRec + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/beginning.ts b/src/canned/beginning.ts new file mode 100644 index 0000000..2335f4d --- /dev/null +++ b/src/canned/beginning.ts @@ -0,0 +1,20 @@ +import { oneLine } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'beginning', + description: 'Explains that the DM is at the beginning.', + aliases: ['begin'], + content: { + embeds: [ + { + title: 'Download link is sent at the beginning of the recording', + description: oneLine` + Craig tells you where to download your audio at the beginning of recording, not the end. + You received a DM when you started the recording, not when you stopped it. + If someone else started the recording, ask them for the link. + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/blank.ts b/src/canned/blank.ts new file mode 100644 index 0000000..767aacc --- /dev/null +++ b/src/canned/blank.ts @@ -0,0 +1,19 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'blank', + description: 'Explains blank messages from outdated clients.', + content: { + embeds: [ + { + title: 'Blank Messages', + description: stripIndents` + If you are seeing blank messages from Craig similar to the image below, **update your Discord mobile client**. + This is because we use the new components system. We do not support old mobile clients. + `, + image: { url: 'attachment://empty_msg.png' }, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/craigdied.ts b/src/canned/craigdied.ts similarity index 69% rename from src/commands/canned/craigdied.ts rename to src/canned/craigdied.ts index 9034f54..ea8b01a 100644 --- a/src/commands/canned/craigdied.ts +++ b/src/canned/craigdied.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Craigdied extends CannedMessage { - content = { +export default { + name: 'craigdied', + description: 'Describes why Craig might stop recording for some reason.', + aliases: ['craig-died', 'craigstopped', 'craig-stopped'], + content: { embeds: [ { title: "“Why did Craig stop recording?” or “Why aren't slash commands working?”", @@ -18,18 +19,8 @@ export default class Craigdied extends CannedMessage { - [Invite Giarc](https://discordapp.com/oauth2/authorize?client_id=486698344429781028&scope=bot+applications.commands), it seems to be more stable. - Use Alistair if you have access. - Use the public beta of Craig here: <#958603499539685377> - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'craigdied', - description: 'Describes why Craig might stop recording for some reason.', - aliases: ['craig-died', 'craigstopped', 'craig-stopped'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/craigrole.ts b/src/canned/craigrole.ts similarity index 51% rename from src/commands/canned/craigrole.ts rename to src/canned/craigrole.ts index c3e5a8a..c94793e 100644 --- a/src/commands/canned/craigrole.ts +++ b/src/canned/craigrole.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Craigrole extends CannedMessage { - content = { +export default { + name: 'craigrole', + description: 'Explains access roles.', + aliases: ['craig-role', 'accessrole', 'access-role', 'accessroles', 'access-roles'], + content: { embeds: [ { title: 'Access Roles', @@ -12,18 +13,8 @@ export default class Craigrole extends CannedMessage { Quoth the [website](https://craig.chat/docs/#setting-up-access-roles): > Previously, access roles were any roles with the name “Craig”. Now, you can set your access roles with the \`/server-settings access-role\` command. You must be able to manage the server or be the server owner to manage access roles. You can view your current server settings with \`/server-settings view\`. `, - image: { url: 'https://get.snaz.in/7phpGrs.png' } - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'craigrole', - description: 'Explains access roles.', - aliases: ['craig-role', 'accessrole', 'access-role', 'accessroles', 'access-roles'] - }); - - this.filePath = __filename; - } -} + image: { url: 'attachment://access_roles.png' }, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/deleted.ts b/src/canned/deleted.ts similarity index 53% rename from src/commands/canned/deleted.ts rename to src/canned/deleted.ts index 2c9b3d9..7568fd6 100644 --- a/src/commands/canned/deleted.ts +++ b/src/canned/deleted.ts @@ -1,27 +1,18 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Deleted extends CannedMessage { - content = { +export default { + name: 'deleted', + description: 'Explains deletion.', + content: { embeds: [ { title: 'Deleted means deleted.', description: stripIndents` Deleted means deleted. We do not hoard old audio data; We need that disk space! If you have trouble getting to your downloads in time, you can join our [Pateron](https://patreon.com/CraigRec) to enable cloud backup to Google Drive, OneDrive or Dropbox. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'deleted', - description: 'Explains deletion.' - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/dm.ts b/src/canned/dm.ts similarity index 52% rename from src/commands/canned/dm.ts rename to src/canned/dm.ts index b94ce27..01b739b 100644 --- a/src/commands/canned/dm.ts +++ b/src/canned/dm.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Dm extends CannedMessage { - content = { +export default { + name: 'dm', + description: 'Craig sends you info in a DM.', + aliases: ['pm', 'private-message', 'direct-message', 'directmessage'], + content: { embeds: [ { title: 'The link is sent via DM', @@ -13,18 +14,8 @@ export default class Dm extends CannedMessage { > Craig tells you by private message where you can download your audio. Since you can download while still recording, he tells you at the beginning of recording, not the end! If you are looking for the link from an auto-recording, the person who set the auto-recording rule will get the DM. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'dm', - description: 'Craig sends you info in a DM.', - aliases: ['pm', 'private-message', 'direct-message', 'directmessage'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/dmaccess.ts b/src/canned/dmaccess.ts similarity index 71% rename from src/commands/canned/dmaccess.ts rename to src/canned/dmaccess.ts index 31e78cc..5bf886b 100644 --- a/src/commands/canned/dmaccess.ts +++ b/src/canned/dmaccess.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class DmAccess extends CannedMessage { - content = { +export default { + name: 'dmaccess', + description: 'Information about DM access.', + aliases: ['dma'], + content: { embeds: [ { title: 'In order to have Craig be able to DM you, you can:', @@ -12,18 +13,8 @@ export default class DmAccess extends CannedMessage { 1. **DM Craig first**, that way a DM channel between you and Craig has been created and should allow Craig to DM you for future purposes. In order to do this, open @Craig#1289's profile and send anything to their DMs. 2. **Allow Direct Messages in THIS SERVER only**, that way Craig (and other instances of Craig in this server) can easily DM you without being blocked from doing so. To do this, right click the Craig server and go to Privacy Settings and enable Direct Messages. 3. **Check your [Message Requests](https://discord.com/message-requests)**, chances are that Craig might be in there if he tried to DM you before. Click the link provided to be taken to your message requests. [Click here](https://support.discord.com/hc/en-us/articles/7924992471191-Message-Requests) to learn more about Message Requests. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'dmaccess', - description: 'Information about DM access.', - aliases: ['dma'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/emoji.ts b/src/canned/emoji.ts similarity index 52% rename from src/commands/canned/emoji.ts rename to src/canned/emoji.ts index 891c7f5..e629025 100644 --- a/src/commands/canned/emoji.ts +++ b/src/canned/emoji.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Emoji extends CannedMessage { - content = { +export default { + name: 'emoji', + description: 'Describes the Craig emoji.', + aliases: ['craig-emoji', 'craigemoji'], + content: { embeds: [ { title: 'The Craig Emoji', @@ -14,19 +15,9 @@ export default class Emoji extends CannedMessage { The legacy Craig emoji can be shown in the thumbnail of this message or from [this link](https://get.snaz.in/6kMiJLn.png) and is a slight modification of [this clipart](https://openclipart.org/detail/190755/cartoon-weasel). `, thumbnail: { - url: 'https://get.snaz.in/6kMiJLn.png' - } - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'emoji', - description: 'Describes the Craig emoji.', - aliases: ['craig-emoji', 'craigemoji'] - }); - - this.filePath = __filename; - } -} + url: 'https://get.snaz.in/6kMiJLn.png', + }, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/ez.ts b/src/canned/ez.ts similarity index 59% rename from src/commands/canned/ez.ts rename to src/canned/ez.ts index c032a0b..3380822 100644 --- a/src/commands/canned/ez.ts +++ b/src/canned/ez.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Ez extends CannedMessage { - content = { +export default { + name: 'ez', + description: 'Explains common Ennuizel errors.', + aliases: ['ennuizel', 'quotaexceedederror'], + content: { embeds: [ { title: 'Ennuizel Errors', @@ -15,18 +16,8 @@ export default class Ez extends CannedMessage { 1. Read the big popup when pressing red buttons. 2. Download as a FLAC multi-track ZIP file and export to a single file using Audacity or any audio editing program. 3. Try again on a PC, we do not support mobile devices. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'ez', - description: 'Explains common Ennuizel errors.', - aliases: ['ennuizel', 'quotaexceedederror'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/guide.ts b/src/canned/guide.ts new file mode 100644 index 0000000..fa35b23 --- /dev/null +++ b/src/canned/guide.ts @@ -0,0 +1,8 @@ +import { CannedMessage } from '../util'; + +export default { + name: 'guide', + description: 'Links the guide for Craig. (hint: )', + aliases: ['docs'], + content: 'Craig Guide: https://craig.chat/docs/#getting-started', +} as CannedMessage; diff --git a/src/canned/mobile.ts b/src/canned/mobile.ts new file mode 100644 index 0000000..2a9d3da --- /dev/null +++ b/src/canned/mobile.ts @@ -0,0 +1,19 @@ +import { oneLine } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'mobile', + description: 'Information for mobile users.', + aliases: ['iphone', 'ipad', 'android'], + content: { + embeds: [ + { + title: 'Mobile Support', + description: oneLine` + It's unlikely that you're going to have a good time on a mobile device. + If it's an i-Something, AAC is the format you likely want; otherwise, FLAC. + You can figure out on your own how to open up ZIP files.`, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/moredetail.ts b/src/canned/moredetail.ts similarity index 67% rename from src/commands/canned/moredetail.ts rename to src/canned/moredetail.ts index a9eb03c..28e783d 100644 --- a/src/commands/canned/moredetail.ts +++ b/src/canned/moredetail.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class MoreDetail extends CannedMessage { - content = { +export default { + name: 'moredetail', + description: 'We need more detail!', + aliases: ['detail'], + content: { embeds: [ { title: 'More Detail', @@ -21,18 +22,8 @@ export default class MoreDetail extends CannedMessage { - Has the "Change Nickname" permission - Can connect to your voice channel - Can view the channel you are using \`/join\` in - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'moredetail', - description: 'We need more detail!', - aliases: ['detail'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/mp3.ts b/src/canned/mp3.ts new file mode 100644 index 0000000..d6197ce --- /dev/null +++ b/src/canned/mp3.ts @@ -0,0 +1,7 @@ +import { CannedMessage } from '../util'; + +export default { + name: 'mp3', + description: 'As Yahweasel puts it, "chastises idiots".', + content: 'Join the 21st century. https://craig.chat/primer/', +} as CannedMessage; diff --git a/src/commands/canned/multichannel.ts b/src/canned/multichannel.ts similarity index 56% rename from src/commands/canned/multichannel.ts rename to src/canned/multichannel.ts index f7f5ae7..e8d6548 100644 --- a/src/commands/canned/multichannel.ts +++ b/src/canned/multichannel.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Multichannel extends CannedMessage { - content = { +export default { + name: 'multichannel', + description: 'Explains the woes of multi-channel recording.', + aliases: ['multi-channel'], + content: { embeds: [ { title: 'Multi-channel Recording', @@ -14,18 +15,8 @@ export default class Multichannel extends CannedMessage { But if you're a patron, you can record with Giarc, Craig and Alistair all at once to achieve 3 simultaneous channel recordings. You can get access to Alistair by becoming a patron at https://www.patreon.com/CraigRec - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'multichannel', - description: 'Explains the woes of multi-channel recording.', - aliases: ['multi-channel'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/multitrack.ts b/src/canned/multitrack.ts similarity index 60% rename from src/commands/canned/multitrack.ts rename to src/canned/multitrack.ts index 035a605..61cb8b4 100644 --- a/src/commands/canned/multitrack.ts +++ b/src/canned/multitrack.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Multitrack extends CannedMessage { - content = { +export default { + name: 'multitrack', + description: 'Explains multi-track audio.', + aliases: ['multi-track'], + content: { embeds: [ { title: 'Multi-track', @@ -13,18 +14,8 @@ export default class Multitrack extends CannedMessage { If you wanted a single-track recording bot, use a single-track recording bot. I suggest [pawa](https://top.gg/bot/pawa). If you want to mix Craig's tracks, any standard audio editor can mix them. They are perfectly in sync with each other. To mix yourself, Audacity is a common, portable option, and Craig offers audio directly as an Audacity project. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'multitrack', - description: 'Explains multi-track audio.', - aliases: ['multi-track'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/noworky.ts b/src/canned/noworky.ts similarity index 71% rename from src/commands/canned/noworky.ts rename to src/canned/noworky.ts index 299b8b3..0555018 100644 --- a/src/commands/canned/noworky.ts +++ b/src/canned/noworky.ts @@ -1,10 +1,10 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Noworky extends CannedMessage { - content = { +export default { + name: 'noworky', + description: 'Explains basic permissions.', + content: { embeds: [ { title: 'No worky.', @@ -20,17 +20,8 @@ export default class Noworky extends CannedMessage { (4) Make sure Craig can actually join the voice channel you want him to join. (5) Make sure Craig can change his own nickname, send embeds, and can see the channel you are running commands in (with the View Channel permission). - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'noworky', - description: 'Explains basic permissions.' - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/patreonaccess.ts b/src/canned/patreonaccess.ts similarity index 72% rename from src/commands/canned/patreonaccess.ts rename to src/canned/patreonaccess.ts index 939a15f..f2fbb51 100644 --- a/src/commands/canned/patreonaccess.ts +++ b/src/canned/patreonaccess.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class PatreonAccess extends CannedMessage { - content = { +export default { + name: 'patreonaccess', + description: 'Explains access for patrons.', + aliases: ['patronaccess', 'pa'], + content: { embeds: [ { title: 'Patreon Troubleshooting', @@ -17,18 +18,8 @@ export default class PatreonAccess extends CannedMessage { 3. Make sure the account you use and the one you log in with are the same one! (No alt accounts) 4. Wait till the start of the next hour for benefits to apply. You can tell if you have benefits when running \`/features\`. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'patreonaccess', - description: 'Explains access for patrons.', - aliases: ['patronaccess', 'pa'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/recnick.ts b/src/canned/recnick.ts new file mode 100644 index 0000000..8b72826 --- /dev/null +++ b/src/canned/recnick.ts @@ -0,0 +1,19 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'recnick', + description: "Explains Craig's nicknaming.", + aliases: ['rec-nick'], + content: { + embeds: [ + { + title: 'The `![RECORDING]` nickname', + description: stripIndents` + Craig nicknames itself whenever the bot starts recording. + This nickname cannot be changed during the recording and changes to it mid-recording will stop the recording. + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/site.ts b/src/canned/site.ts new file mode 100644 index 0000000..c131290 --- /dev/null +++ b/src/canned/site.ts @@ -0,0 +1,8 @@ +import { CannedMessage } from '../util'; + +export default { + name: 'site', + description: 'Links the website for Craig. (hint: )', + aliases: ['website'], + content: "Craig's website: https://craig.chat", +} as CannedMessage; diff --git a/src/commands/canned/soundboard.ts b/src/canned/soundboard.ts similarity index 50% rename from src/commands/canned/soundboard.ts rename to src/canned/soundboard.ts index b1d6273..35f8c69 100644 --- a/src/commands/canned/soundboard.ts +++ b/src/canned/soundboard.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Site extends CannedMessage { - content = { +export default { + name: 'soundboard', + description: 'Explain our support for the new Soundboard feature.', + aliases: ['sb'], + content: { embeds: [ { title: 'Soundboard Support', @@ -13,18 +14,8 @@ export default class Site extends CannedMessage { There are multiple factors to this, but a large piece is how new it is, and the lack of proper documentation of Discord's Voice API. IF we decide to implement support, it will likely be a while. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'soundboard', - description: 'Explain our support for the new Soundboard feature.', - aliases: ['sb'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/stuckpanel.ts b/src/canned/stuckpanel.ts similarity index 51% rename from src/commands/canned/stuckpanel.ts rename to src/canned/stuckpanel.ts index 35c59f5..cba4850 100644 --- a/src/commands/canned/stuckpanel.ts +++ b/src/canned/stuckpanel.ts @@ -1,28 +1,19 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Stuckpanel extends CannedMessage { - content = { +export default { + name: 'stuckpanel', + description: 'My panel is stuck!', + aliases: ['stuck-panel'], + content: { embeds: [ { title: '“My recording panel is stuck?”', description: stripIndents` A stuck recording panel **does not mean** that the recording is broken. It just means that the bot is not able to update the message. If the bot is in the voice/stage channel, run \`/join\` again and it should give you an up-to-date recording panel. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'stuckpanel', - description: 'My panel is stuck!', - aliases: ['stuck-panel'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/video.ts b/src/canned/video.ts new file mode 100644 index 0000000..eefb2dd --- /dev/null +++ b/src/canned/video.ts @@ -0,0 +1,18 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'video', + description: 'Video?', + aliases: ['screenshare', 'camera', 'cam'], + content: { + embeds: [ + { + title: 'Video?', + description: stripIndents` + Craig does not record cameras, screenshares, or anything other than audio from your microphone. + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/canned/whatformat.ts b/src/canned/whatformat.ts new file mode 100644 index 0000000..f114161 --- /dev/null +++ b/src/canned/whatformat.ts @@ -0,0 +1,20 @@ +import { stripIndents } from 'common-tags'; +import { CannedMessage } from '../util'; + +export default { + name: 'whatformat', + description: 'A handy "what format" flowchart.', + aliases: ['what-format'], + content: { + embeds: [ + { + title: '“What format should I use?”', + description: stripIndents` + (1) Are you planning on using Audacity? If yes, Audacity project. If no, + (2) Do you suckle from the teat of Apple? If yes, AAC. If no, + (3) FLAC. + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/wherelink.ts b/src/canned/wherelink.ts similarity index 56% rename from src/commands/canned/wherelink.ts rename to src/canned/wherelink.ts index 38c11e9..1d20c6f 100644 --- a/src/commands/canned/wherelink.ts +++ b/src/canned/wherelink.ts @@ -1,10 +1,17 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class WhereLink extends CannedMessage { - content = { +export default { + name: 'wherelink', + description: 'Where is my link?', + aliases: [ + 'wml', + 'where-my-link', + 'where-my-links', + 'where-my-recording-link', + 'where-my-recording-links', + ], + content: { embeds: [ { title: 'Where is my link?', @@ -15,18 +22,8 @@ export default class WhereLink extends CannedMessage { If you are looking for the link from an auto-recording, the person who set the auto-recording rule will get the DM. Make sure the recording was started by **you**, if your name and avatar is not in the recording panel, that person will need to run the \`/recordings\` command. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'wherelink', - description: 'Where is my link?', - aliases: ['wml', 'where-my-link', 'where-my-links', 'where-my-recording-link', 'where-my-recording-links'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned/whydm.ts b/src/canned/whydm.ts similarity index 71% rename from src/commands/canned/whydm.ts rename to src/canned/whydm.ts index cb5c7a4..543680f 100644 --- a/src/commands/canned/whydm.ts +++ b/src/canned/whydm.ts @@ -1,10 +1,11 @@ import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; +import { CannedMessage } from '../util'; -import { CannedMessage } from '../../util/abstracts'; - -export default class Whydm extends CannedMessage { - content = { +export default { + name: 'whydm', + description: 'Explains why Craig will never send the link in the public channel.', + aliases: ['whypm', 'whyprivatemessage', 'whydirectmessage', 'whydirectmessage'], + content: { embeds: [ { title: '“Why do I need to get a DM?”', @@ -16,18 +17,8 @@ export default class Whydm extends CannedMessage { If you want to make sure that a group of people have access to the recording, please either (a) download it once and share the downloaded file with everyone else, or (b) equivalently, link to Google Drive and share the Craig directory in Drive. Unfortunately, as a large, popular bot, Craig must be calibrated to the average user, not the exceptional user, and the average user, like the average person more generally, is an idiot. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'whydm', - description: 'Explains why Craig will never send the link in the public channel.', - aliases: ['whypm', 'whyprivatemessage', 'whydirectmessage', 'whydirectmessage'] - }); - - this.filePath = __filename; - } -} + `, + }, + ], + }, +} as CannedMessage; diff --git a/src/commands/canned.ts b/src/commands/canned.ts deleted file mode 100644 index 414edc5..0000000 --- a/src/commands/canned.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { CommandContext, DexareClient } from 'dexare'; - -import { GeneralCommand } from '../util/abstracts'; - -export default class CannedCommand extends GeneralCommand { - constructor(client: DexareClient) { - super(client, { - name: 'canned', - description: 'Show canned messages.', - category: 'General', - metadata: { - examples: ['canned'] - } - }); - - this.filePath = __filename; - } - - async run(ctx: CommandContext) { - const prefix = ctx.prefix + (ctx.event.get('commands/spacedPrefix') ? ' ' : ''); - - const commands = this.client.commands.commands.filter((command) => { - if (typeof command.hasPermission(ctx, ctx.event) === 'string') return false; - return command.category === 'Canned Messages'; - }); - - return stripIndents` - **Canned messages:** - ${commands.map((command) => `${prefix}${command.name} - *${command.description}*`).join('\n')} - `; - } -} diff --git a/src/commands/canned/align.ts b/src/commands/canned/align.ts deleted file mode 100644 index d074619..0000000 --- a/src/commands/canned/align.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Align extends CannedMessage { - content = { - embeds: [ - { - title: 'Align', - description: stripIndents` - Quoth the web site: - > No matter how long your recording is, no matter how many speakers are recorded, and even if speakers join late, every audio file delivered will be in perfect sync with each other. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'align', - description: 'Explains track alignment.', - aliases: ['track-alignment', 'track-align', 'trackalignment', 'trackalign'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/ask.ts b/src/commands/canned/ask.ts deleted file mode 100644 index b4e0d49..0000000 --- a/src/commands/canned/ask.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Ask extends CannedMessage { - content = { - content: 'https://dontasktoask.com/' - }; - - constructor(client: DexareClient) { - super(client, { - name: 'ask', - description: "Don't ask to ask, just ask." - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/autorec.ts b/src/commands/canned/autorec.ts deleted file mode 100644 index 5dcf014..0000000 --- a/src/commands/canned/autorec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Autorec extends CannedMessage { - content = { - embeds: [ - { - title: 'Auto-Recording', - url: 'https://www.patreon.com/CraigRec', - description: stripIndents` - Auto-recording is a feature that allows Craig to automatically start a recording when you join a voice channel. - - This is included in the $4 tier in the Patreon: https://www.patreon.com/CraigRec - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'autorec', - description: 'Explains auto-recording.', - aliases: ['auto-recording', 'auto-rec', 'auto-record', 'autorecording', 'autorecord'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/beginning.ts b/src/commands/canned/beginning.ts deleted file mode 100644 index ecfcd29..0000000 --- a/src/commands/canned/beginning.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { oneLine } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Beginning extends CannedMessage { - content = { - embeds: [ - { - title: 'Download link is sent at the beginning of the recording', - description: oneLine` - Craig tells you where to download your audio at the beginning of recording, not the end. - You received a DM when you started the recording, not when you stopped it. - If someone else started the recording, ask them for the link.` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'beginning', - description: 'Explains that the DM is at the beginning.', - aliases: ['begin'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/guide.ts b/src/commands/canned/guide.ts deleted file mode 100644 index 04a1bf1..0000000 --- a/src/commands/canned/guide.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Guide extends CannedMessage { - content = { - embeds: [ - { - title: 'Guide', - url: 'https://craig.chat/docs/#getting-started', - description: 'Guide: https://craig.chat/docs/#getting-started' - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'guide', - description: 'Links the guide for Craig. (hint: )', - aliases: ['docs'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/mobile.ts b/src/commands/canned/mobile.ts deleted file mode 100644 index 32f2028..0000000 --- a/src/commands/canned/mobile.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { oneLine } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Mobile extends CannedMessage { - content = { - embeds: [ - { - title: 'Mobile Support', - description: oneLine` - It's unlikely that you're going to have a good time on a mobile device. - If it's an i-Something, AAC is the format you likely want; otherwise, FLAC. - You can figure out on your own how to open up ZIP files.` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'mobile', - description: 'Information for mobile users.', - aliases: ['iphone', 'ipad', 'android'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/mp3.ts b/src/commands/canned/mp3.ts deleted file mode 100644 index d4f2f3c..0000000 --- a/src/commands/canned/mp3.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { oneLine } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Mp3 extends CannedMessage { - content = { - embeds: [ - { - title: 'MP3', - description: oneLine` Join the 21st century. https://craig.chat/primer/` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'mp3', - description: 'As Yahweasel puts it, "chastises idiots".' - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/recnick.ts b/src/commands/canned/recnick.ts deleted file mode 100644 index d602e79..0000000 --- a/src/commands/canned/recnick.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class RecNick extends CannedMessage { - content = { - embeds: [ - { - title: 'The `![RECORDING]` nickname', - description: stripIndents` - Craig nicknames itself whenever the bot starts recording. - This nickname cannot be changed during the recording and changes to it mid-recording will stop the recording. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'recnick', - description: "Explains Craig's nicknaming.", - aliases: ['rec-nick'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/site.ts b/src/commands/canned/site.ts deleted file mode 100644 index 7847a14..0000000 --- a/src/commands/canned/site.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Site extends CannedMessage { - content = { - embeds: [ - { - title: 'Main Site', - url: 'https://craig.chat', - description: "Craig's website: https://craig.chat" - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'site', - description: 'Links the website for Craig. (hint: )', - aliases: ['website'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/video.ts b/src/commands/canned/video.ts deleted file mode 100644 index 4bcfba7..0000000 --- a/src/commands/canned/video.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Video extends CannedMessage { - content = { - embeds: [ - { - title: 'Video?', - description: stripIndents` - Craig does not record cameras, screenshares, or anything other than audio from your microphone. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'video', - description: 'Video?', - aliases: ['screenshare', 'camera', 'cam'] - }); - - this.filePath = __filename; - } -} diff --git a/src/commands/canned/whatformat.ts b/src/commands/canned/whatformat.ts deleted file mode 100644 index bca7d76..0000000 --- a/src/commands/canned/whatformat.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { stripIndents } from 'common-tags'; -import { DexareClient } from 'dexare'; - -import { CannedMessage } from '../../util/abstracts'; - -export default class Whatformat extends CannedMessage { - content = { - embeds: [ - { - title: '“What format should I use?”', - description: stripIndents` - (1) Are you planning on using Audacity? If yes, Audacity project. If no, - (2) Do you suckle from the teat of Apple? If yes, AAC. If no, - (3) FLAC. - ` - } - ] - }; - - constructor(client: DexareClient) { - super(client, { - name: 'whatformat', - description: 'A handy "what format" flowchart.', - aliases: ['what-format'] - }); - - this.filePath = __filename; - } -} diff --git a/src/index.ts b/src/index.ts index 0c2267b..4cd4e53 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,109 @@ -import path from 'path'; +import Dysnomia, { Client } from '@projectdysnomia/dysnomia'; -// Config fix for running in devscript -if (path.parse(process.cwd()).name === 'dist') process.env.NODE_CONFIG_DIR = path.join(process.cwd(), '..', 'config'); +import { Glob } from 'bun'; +import { basename, join } from 'node:path'; +import { CannedMessage } from './util'; -// eslint-disable-next-line import/first -import { connect } from './bot'; +export const client = new Client(process.env.DISCORD_BOT_TOKEN!, { + gateway: { + intents: ['guilds', 'guildMessages', 'messageContent'], + }, +}); -connect(); +client.presence = { + activities: [ + { + type: 4, // [custom status] + name: 'stoat', + state: 'Watching discord.gg/craig', + created_at: 0, + }, + ], + afk: false, + since: null, + status: 'online', +}; + +client.on('debug', (m) => console.log('[dysnomia:debug]', m)); +client.on('error', (e) => console.log('[dysnomia:error]', e)); +client.on('ready', () => + console.info( + `Logged in as ${client.user.username}#${client.user.discriminator} (${client.user.id})` + ) +); + +const glob = new Glob('canned/**/*.ts'); + +const canned = new Map(); +const cannedAliases = new Map(); + +for await (const file of glob.scan(__dirname)) { + const filePath = join(__dirname, file); + const message: CannedMessage = (await import(filePath)).default; + if (message) { + canned.set(message.name, message); + if (message.aliases) + for (const alias of message.aliases) cannedAliases.set(alias, message.name); + } +} + +client.on('messageCreate', async (message) => { + if (!message.content || message.author.bot || message.author.system) return; + if (message.channel.id !== '245020622277705728') return; + const prefixRegex = new RegExp(`^(\\?|<@!?${client.user.id}>) ?`); + const match = prefixRegex.exec(message.content); + if (!match) return; + const parts = message.content.slice(match[0].length).split(' '); + const commandName = parts[0].toLowerCase(); + if (canned.has(commandName) || cannedAliases.has(commandName)) { + const name = canned.get(commandName)?.name || cannedAliases.get(commandName); + const msg = name ? canned.get(name) : null; + if (msg) { + const mentions = message.mentions.filter((m) => !m.bot && m.id !== message.author.id); + const content = typeof msg.content === 'string' ? { content: msg.content } : msg.content; + const attachmentUrls = [ + ...(content.embeds + ? content.embeds + .map( + (e) => + [e.image?.url, e.footer?.icon_url, e.author?.icon_url].filter( + (u) => !!u + ) as string[] + ) + .flat() + : []), + ].filter((u) => u.startsWith('attachment://')); + const attachments: Dysnomia.AdvancedMessageContentAttachmentNew[] = []; + + for (const attachment of attachmentUrls) { + const filePath = join(__dirname, 'assets', basename(attachment)); + const file = Bun.file(filePath); + if (!(await file.exists())) continue; + attachments.push({ + filename: basename(attachment), + file: Buffer.from(await file.arrayBuffer()) + }); + } + + return client.createMessage(message.channel.id, { + messageReference: { + messageID: message.id, + failIfNotExists: false, + }, + attachments, + ...content, + ...(mentions.length + ? { + content: `${mentions.map((m) => m.mention).join(', ')}${mentions.length ? ': ' : ''}${content.content || ''}`, + } + : {}), + }); + } + } +}); + +await client.connect(); + +process.on('SIGINT', () => { + client.disconnect({ reconnect: false }); +}); diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 0000000..02f2ab6 --- /dev/null +++ b/src/util.ts @@ -0,0 +1,8 @@ +import type Dysnomia from '@projectdysnomia/dysnomia'; + +export interface CannedMessage { + name: string; + description: string; + aliases?: string[]; + content: Dysnomia.MessageContent; +} diff --git a/src/util/abstracts.ts b/src/util/abstracts.ts deleted file mode 100644 index 0e44b26..0000000 --- a/src/util/abstracts.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { oneLine } from 'common-tags'; -import { ClientEvent, CommandContext, CommandOptions, DexareClient, DexareCommand, PermissionNames } from 'dexare'; -import Eris from 'eris'; -import { defaultsDeep } from 'lodash'; - -export const USER_REGEX = /<@!?(\d+)>/; -export const CUSTOM_EMOJI_REGEX = /<(a?):([0-9a-zA-Z-_]+):(\d+)>/; - -export abstract class GeneralCommand extends DexareCommand { - cleanContent(content: string, message: Eris.Message) { - return content - .replace(CUSTOM_EMOJI_REGEX, ':$2:') - .replace(USER_REGEX, (matched, id) => { - const user = message.mentions.find((m) => m.id === id); - return user ? `@${user.username}` : matched; - }) - .replace(/<@&(\d+)>/, (matched, id) => { - if (!message.roleMentions.includes(id)) return matched; - if (!('guild' in message.channel)) return matched; - const role = message.channel.guild.roles.find((r) => r.id === id); - return role ? `@${role.name}` : matched; - }) - .replace(/<#(\d+)>/, (matched, id) => { - if (!message.channelMentions.includes(id)) return matched; - if (!('guild' in message.channel)) return matched; - const channel = message.channel.guild.channels.find((r) => r.id === id); - return channel ? `@${channel.name}` : matched; - }); - } - - hasPermission(ctx: CommandContext, event?: ClientEvent): boolean | string { - if (this.userPermissions) { - const permObject = this.client.permissions.toObject(ctx.message); - let permissionMap = event && event.has('dexare/permissionMap') ? event.get('dexare/permissionMap') : {}; - permissionMap = this.client.permissions.map(permObject, this.userPermissions, permissionMap, event); - if (event) event.set('dexare/permissionMap', permissionMap); - const missing = this.userPermissions.filter((perm: string) => !permissionMap[perm]); - - if (missing.length > 0) { - if (missing.includes('dexare.elevated')) return `The \`${this.name}\` command can only be used by the bot developers or elevated users.`; - else if (missing.includes('dexare.nsfwchannel')) return `The \`${this.name}\` command can only be ran in NSFW channels.`; - else if (missing.includes('dexare.inguild')) return `The \`${this.name}\` command can only be ran in guilds.`; - else if (missing.length === 1) { - return `The \`${this.name}\` command requires you to have the "${PermissionNames[missing[0]] || missing[0]}" permission.`; - } - return oneLine` - The \`${this.name}\` command requires you to have the following permissions: - ${missing.map((perm) => PermissionNames[perm] || perm).join(', ')} - `; - } - } - - return true; - } - - finalize(response: any, ctx: CommandContext) { - if (typeof response === 'string' || (response && response.constructor && response.constructor.name === 'Object')) return ctx.reply(response); - } -} - -export abstract class CannedMessage extends GeneralCommand { - content: Eris.AdvancedMessageContent = {}; - - constructor(client: DexareClient, opts: CommandOptions) { - super( - client, - defaultsDeep(opts, { - category: 'Canned Messages', - throttling: { - usages: 1, - duration: 5, - bypass: ['dexare.elevated'] - }, - metadata: { - examples: [opts.name], - usage: '[@mention]' - } - }) - ); - } - - async run(ctx: CommandContext) { - const prepend = ctx.message.mentions[1]?.mention || ctx.message.mentions[0]?.mention || ''; - await ctx.reply( - defaultsDeep({}, this.content, { - content: `${prepend ? `${prepend}: ` : ''}${this.content.content ?? ''}`, - embeds: [ - { - footer: { - text: `Requested by ${ctx.author.discriminator === '0' ? ctx.author.username : `${ctx.author.username}#${ctx.author.discriminator}`} (${ - ctx.author.id - })`, - icon_url: ctx.author.dynamicAvatarURL('png', 256) - } - } - ] - } as Eris.AdvancedMessageContent) - ); - } -} diff --git a/src/util/index.ts b/src/util/index.ts deleted file mode 100644 index 20b0839..0000000 --- a/src/util/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { CommandContext } from 'dexare'; - -interface FlagOption { - shortFlag?: string; - name: string; - aliases?: string[]; - getsString?: boolean; -} - -export function readFlags(flags: FlagOption[], ctx: CommandContext) { - const result: { [flag: string]: boolean | string } = {}; - const args: string[] = []; - - let assignTo: string | null = null; - for (const arg of ctx.args) { - const targ = arg.trim(); - - // Match full names - if (targ.startsWith('--') && !/\s/.test(targ)) { - const flagName = targ.slice(2); - const flag = flags.find( - (f) => - f.name.toLowerCase() === flagName.toLowerCase() || - (f.aliases && f.aliases.find((al) => al.toLowerCase() === flagName.toLowerCase())) || - f.shortFlag === flagName - ); - - if (flag) result[flag.name] = true; - if (flag?.getsString) assignTo = flag.name; - continue; - } - - // Match short names - if (targ.startsWith('-') && !/\s/.test(targ)) { - for (const shortFlag of targ.slice(1)) { - const flag = flags.find((f) => f.shortFlag === shortFlag); - if (flag) result[flag.name] = true; - if (flag?.getsString) assignTo = flag.name; - } - continue; - } - - // If the previous arg had an assign - if (assignTo) { - result[assignTo] = arg; - assignTo = null; - continue; - } - - args.push(arg); - } - - return { result, args }; -} - -export function truncate(text: string, limit = 2000) { - return text.length > limit ? text.slice(0, limit - 1) + '…' : text; -} - -export function randint(min: number, max: number) { - return Math.floor(Math.random() * (max - min + 1)) + min; -} - -export function shuffle(array: T[]): T[] { - return array.sort(() => Math.random() - 0.5); -} diff --git a/tsconfig.json b/tsconfig.json index f7428c7..bfa0fea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,29 @@ - { +{ "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "outDir": "dist", + // Environment setup & latest features + "lib": ["ESNext"], + "target": "ESNext", + "module": "Preserve", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices "strict": true, - "esModuleInterop": true, - "removeComments": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true - }, - "include": [ - "./src/**/*" - ], - "exclude": [ - "node_modules", - "dist" - ] + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } }