diff --git a/.env.example b/.env.example index 78524770f..43a030f33 100644 --- a/.env.example +++ b/.env.example @@ -1,25 +1,17 @@ # Standard configuration BOT_TOKEN=MjM4NDk0NzU2NTIxMzc3Nzky.CunGFQ.wUILz7z6HoJzVeq6pyHPmVgQgV4 -BOT_PREFIX=++ -WILDBEAST_MASTERS=107904023901777920,152664793587777537 -LAVALINK_NODES=[{"host": "localhost", "port": "8080", "region": "us", "password": "youshallnotpass"}] +DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres # API keys -TWITCH_ID=a3fsaffj4tbse36 IMGUR_KEY=5i8rythbhtx654235hrs34 # SENTRY_DSN=https://ingress.sentry.io -# WILDBEAST_BOTS_GG_KEY=daw3213vdsvz232 -# WILDBEAST_TOP_GG_KEY=5ee54fgdn4yjcresjvj # Advanced configuration -# WILDBEAST_K8S_AUTOSCALE=false -# LAVALINK_AUTODISCOVERY={} -# ENABLE_METRICS=false -# METRICS_INTERVAL=5000 -# PROM_PORT=8080 -# WILDBEAST_ENV_CHECK_DISABLED=false -# NODE_ENV=debug -# WILDBEAST_SUPPRESS_COMMANDLOG=false +# WILDBEAST_INVITE_OVERRIDE=https://invite.thesharks.xyz +# WILDBEAST_SHARDING_START=0 +# WILDBEAST_SHARDING_END=1 +# WILDBEAST_SHARDING_TOTAL=2 +# WILDBEAST_LANGUAGE=en-US diff --git a/.eslintignore b/.eslintignore index b94707787..6243dcbaf 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ node_modules/ dist/ +src/languages/ \ No newline at end of file diff --git a/.gitbook.yaml b/.gitbook.yaml index fa6785269..8edf68b26 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -1,5 +1,5 @@ root: ./docs structure: - readme: home.md - summary: README.md \ No newline at end of file + readme: README.md + summary: SUMMARY.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index f1dcef677..55a52cdaf 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -114,25 +114,3 @@ export default class GreetCommand extends BaseSlashCommand { // ... } ``` - -### Sending messages - -When sending messages, send them using `.safeReply()`. This will disable all mentions in the message making it safe to directly pass user-input. Calling `.editOrRespond()` or other methods that return text directly is discouraged. - -```ts -// ⚠ avoid -export default class GreetCommand extends BaseSlashCommand { - async run (context: Interaction.InteractionContext): Promise { - await context.awaitOrRespond('Hello world!') - } -} -``` - -```ts -// ✓ prefered -export default class GreetCommand extends BaseSlashCommand { - async run (context: Interaction.InteractionContext): Promise { - await this.safeReply(context, 'Hello world!') - } -} -``` diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml index a254c3abe..11ca051ea 100644 --- a/.github/workflows/crowdin.yml +++ b/.github/workflows/crowdin.yml @@ -3,22 +3,58 @@ name: Crowdin Action on: push: branches: [ master ] + schedule: + - cron: '30 5,17 * * *' + workflow_dispatch: jobs: - synchronize-with-crowdin: + download-from-crowdin: + if: ${{ github.event_name != 'push' }} runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v2 - - - name: crowdin action - uses: crowdin/github-action@1.4.0 - with: - upload_sources: true - download_translations: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} \ No newline at end of file + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Download from Crowdin + uses: crowdin/github-action@1.4.8 + with: + upload_sources: false + download_translations: true + create_pull_request: false + push_translations: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + - name: Commit changes + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + if [ -z "$(git status --porcelain)" ]; then + echo "Files have not changed" + else + echo "Files have changed" + git add . + git commit -m "[chore] Update translations" -a + git push origin master + fi + + upload-to-crowdin: + if: ${{ github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Upload to Crowdin + uses: crowdin/github-action@1.4.8 + if: ${{ github.event_name == 'push' }} + with: + upload_sources: true + download_translations: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.github/workflows/deployments.yml b/.github/workflows/deployments.yml index 019adbc8e..104b76d1e 100644 --- a/.github/workflows/deployments.yml +++ b/.github/workflows/deployments.yml @@ -37,13 +37,13 @@ jobs: - run: echo "deploying to production with tag ${{ needs.determine-image.outputs.tag }}" - name: Authenticate with Kubernetes - uses: azure/k8s-set-context@v1 + uses: azure/k8s-set-context@v12 with: method: kubeconfig kubeconfig: ${{ secrets.KUBECONFIG }} - name: Deploy to Kubernetes - uses: Azure/k8s-deploy@v1 + uses: Azure/k8s-deploy@v3.1 with: manifests: | manifests/deployment.yaml @@ -64,13 +64,13 @@ jobs: - run: echo "deploying to staging with tag ${{ needs.determine-image.outputs.tag }}" - name: Authenticate with Kubernetes - uses: azure/k8s-set-context@v1 + uses: azure/k8s-set-context@v2 with: method: kubeconfig kubeconfig: ${{ secrets.KUBECONFIG }} - name: Deploy to Kubernetes - uses: Azure/k8s-deploy@v1 + uses: Azure/k8s-deploy@v3.1 with: manifests: | bot/deployment.yaml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e93a7ee12..92fcd8184 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -10,9 +10,6 @@ on: tags: - v* - # Run tests for any PRs. - pull_request: - jobs: push: runs-on: ubuntu-latest @@ -69,12 +66,7 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - - name: Layer caching - uses: satackey/action-docker-layer-caching@v0.0.11 - # Ignore the failure of a step and avoid terminating the job. - continue-on-error: true - + - name: Build and push uses: docker/build-push-action@v2 with: @@ -83,3 +75,7 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + COMMIT=${{ github.sha }} \ No newline at end of file diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 9e1f275f0..d7dad5a04 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -16,12 +16,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x, 16.x] + node-version: [14.x, 16.x, 17.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.1.2 + uses: actions/setup-node@v2.5.1 with: node-version: ${{ matrix.node-version }} - uses: actions/cache@v2 @@ -39,8 +39,11 @@ jobs: needs: build if: github.event_name == 'pull_request' runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write steps: - - uses: fastify/github-action-merge-dependabot@v2.2.0 + - uses: fastify/github-action-merge-dependabot@v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} target: minor diff --git a/.github/workflows/sentry.yml b/.github/workflows/sentry.yml index 5ba9fb522..0aea5c6dd 100644 --- a/.github/workflows/sentry.yml +++ b/.github/workflows/sentry.yml @@ -9,12 +9,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2.1.2 + - uses: actions/setup-node@v2.5.1 with: node-version: 16 - run: npm i && npx tsc - name: Create Sentry release - uses: getsentry/action-release@v1.1.5 + uses: getsentry/action-release@v1.1.6 env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} diff --git a/.vscode/launch.json b/.vscode/launch.json index f238b87e0..becdcffa9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,7 @@ "version": "0.2.0", "configurations": [ { - "name": "Launch Program - TSC Compiled", + "name": "Cluster - TSC Compiled", "program": "${workspaceFolder}/dist/index.js", "request": "launch", "skipFiles": [ @@ -19,7 +19,7 @@ "type": "pwa-node" }, { - "name": "Launch Program - ts-node with Debugger", + "name": "Cluster - ts-node with Debugger", "type": "pwa-node", "request": "launch", "runtimeArgs": [ @@ -31,6 +31,34 @@ "args": [ "${workspaceFolder}/src/index.ts" ] - } + }, + { + "name": "Plain - TSC Compiled", + "program": "${workspaceFolder}/dist/entry.js", + "request": "launch", + "skipFiles": [ + "/**" + ], + "runtimeArgs": [ + "-r", + "dotenv/config" + ], + "preLaunchTask": "tsc: build - tsconfig.json", + "type": "pwa-node" + }, + { + "name": "Plain - ts-node with Debugger", + "type": "pwa-node", + "request": "launch", + "runtimeArgs": [ + "-r", + "ts-node/register", + "-r", + "dotenv/config" + ], + "args": [ + "${workspaceFolder}/src/entry.ts" + ] + }, ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5e9f6cb58..607e07618 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,15 @@ FROM node:lts-alpine +ARG COMMIT WORKDIR /usr/wildbeast COPY tsconfig.json ./ COPY package*.json ./ - -RUN npm install - COPY src ./src -RUN npm run compile +ENV GIT_COMMIT ${COMMIT} + +RUN npm install RUN npm prune --production CMD ["npm", "start"] diff --git a/crowdin.yml b/crowdin.yml index 8d67013d2..9bdcd2c4d 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -2,5 +2,5 @@ project_id_env: CROWDIN_PROJECT_ID api_token_env: CROWDIN_PERSONAL_TOKEN files: - - source: /src/languages/en-EN.ts - translation: /src/languages/%locale%.ts \ No newline at end of file + - source: /src/languages/en-US/**/*.strings.ts + translation: /src/languages/%two_letters_code%/**/%original_file_name% \ No newline at end of file diff --git a/docs/.gitbook/assets/afbeelding (1) (1).png b/docs/.gitbook/assets/afbeelding (1) (1).png new file mode 100644 index 000000000..da15f2a2d Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (1) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (1).png b/docs/.gitbook/assets/afbeelding (1).png new file mode 100644 index 000000000..8d14b9248 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (10) (1).png b/docs/.gitbook/assets/afbeelding (10) (1).png new file mode 100644 index 000000000..5ccb37ca5 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (10) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (10).png b/docs/.gitbook/assets/afbeelding (10).png new file mode 100644 index 000000000..c1ae6dcd4 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (10).png differ diff --git a/docs/.gitbook/assets/afbeelding (11) (1).png b/docs/.gitbook/assets/afbeelding (11) (1).png new file mode 100644 index 000000000..f013021ba Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (11) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (11).png b/docs/.gitbook/assets/afbeelding (11).png new file mode 100644 index 000000000..8d14b9248 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (11).png differ diff --git a/docs/.gitbook/assets/afbeelding (12).png b/docs/.gitbook/assets/afbeelding (12).png new file mode 100644 index 000000000..b6362a052 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (12).png differ diff --git a/docs/.gitbook/assets/afbeelding (13).png b/docs/.gitbook/assets/afbeelding (13).png new file mode 100644 index 000000000..e24b14c9e Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (13).png differ diff --git a/docs/.gitbook/assets/afbeelding (14).png b/docs/.gitbook/assets/afbeelding (14).png new file mode 100644 index 000000000..352df633d Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (14).png differ diff --git a/docs/.gitbook/assets/afbeelding (2) (1).png b/docs/.gitbook/assets/afbeelding (2) (1).png new file mode 100644 index 000000000..cfd9689bb Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (2) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (2).png b/docs/.gitbook/assets/afbeelding (2).png new file mode 100644 index 000000000..91373516a Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (2).png differ diff --git a/docs/.gitbook/assets/afbeelding (3) (1).png b/docs/.gitbook/assets/afbeelding (3) (1).png new file mode 100644 index 000000000..ab66432c7 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (3) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (3).png b/docs/.gitbook/assets/afbeelding (3).png new file mode 100644 index 000000000..063f0fcd8 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (3).png differ diff --git a/docs/.gitbook/assets/afbeelding (4) (1).png b/docs/.gitbook/assets/afbeelding (4) (1).png new file mode 100644 index 000000000..9010686f4 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (4) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (4).png b/docs/.gitbook/assets/afbeelding (4).png new file mode 100644 index 000000000..a0ad5b9b4 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (4).png differ diff --git a/docs/.gitbook/assets/afbeelding (5) (1).png b/docs/.gitbook/assets/afbeelding (5) (1).png new file mode 100644 index 000000000..da15f2a2d Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (5) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (5).png b/docs/.gitbook/assets/afbeelding (5).png new file mode 100644 index 000000000..30e3b194a Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (5).png differ diff --git a/docs/.gitbook/assets/afbeelding (6) (1).png b/docs/.gitbook/assets/afbeelding (6) (1).png new file mode 100644 index 000000000..45b7f41fd Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (6) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (6).png b/docs/.gitbook/assets/afbeelding (6).png new file mode 100644 index 000000000..8d14b9248 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (6).png differ diff --git a/docs/.gitbook/assets/afbeelding (7) (1).png b/docs/.gitbook/assets/afbeelding (7) (1).png new file mode 100644 index 000000000..614cb3776 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (7) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (7).png b/docs/.gitbook/assets/afbeelding (7).png new file mode 100644 index 000000000..228c6d78b Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (7).png differ diff --git a/docs/.gitbook/assets/afbeelding (8) (1).png b/docs/.gitbook/assets/afbeelding (8) (1).png new file mode 100644 index 000000000..cfd9689bb Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (8) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (8).png b/docs/.gitbook/assets/afbeelding (8).png new file mode 100644 index 000000000..d45688e58 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (8).png differ diff --git a/docs/.gitbook/assets/afbeelding (9) (1).png b/docs/.gitbook/assets/afbeelding (9) (1).png new file mode 100644 index 000000000..45b7f41fd Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (9) (1).png differ diff --git a/docs/.gitbook/assets/afbeelding (9).png b/docs/.gitbook/assets/afbeelding (9).png new file mode 100644 index 000000000..bf8351e08 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding (9).png differ diff --git a/docs/.gitbook/assets/afbeelding.png b/docs/.gitbook/assets/afbeelding.png new file mode 100644 index 000000000..ac0d68e25 Binary files /dev/null and b/docs/.gitbook/assets/afbeelding.png differ diff --git a/docs/.gitbook/assets/image (1).png b/docs/.gitbook/assets/image (1).png new file mode 100644 index 000000000..3187c03dc Binary files /dev/null and b/docs/.gitbook/assets/image (1).png differ diff --git a/docs/.gitbook/assets/image (2).png b/docs/.gitbook/assets/image (2).png new file mode 100644 index 000000000..3187c03dc Binary files /dev/null and b/docs/.gitbook/assets/image (2).png differ diff --git a/docs/.gitbook/assets/image (3).png b/docs/.gitbook/assets/image (3).png new file mode 100644 index 000000000..7bcb55e4d Binary files /dev/null and b/docs/.gitbook/assets/image (3).png differ diff --git a/docs/.gitbook/assets/image (4).png b/docs/.gitbook/assets/image (4).png new file mode 100644 index 000000000..91fae7142 Binary files /dev/null and b/docs/.gitbook/assets/image (4).png differ diff --git a/docs/.gitbook/assets/image (5).png b/docs/.gitbook/assets/image (5).png new file mode 100644 index 000000000..c9ec0b8f4 Binary files /dev/null and b/docs/.gitbook/assets/image (5).png differ diff --git a/docs/.gitbook/assets/image (6).png b/docs/.gitbook/assets/image (6).png new file mode 100644 index 000000000..91fae7142 Binary files /dev/null and b/docs/.gitbook/assets/image (6).png differ diff --git a/docs/.gitbook/assets/image.png b/docs/.gitbook/assets/image.png new file mode 100644 index 000000000..82d32f859 Binary files /dev/null and b/docs/.gitbook/assets/image.png differ diff --git a/docs/.gitbook/assets/wildebeest1.png b/docs/.gitbook/assets/wildebeest1.png new file mode 100644 index 000000000..85cc6e29a Binary files /dev/null and b/docs/.gitbook/assets/wildebeest1.png differ diff --git a/docs/.gitbook/assets/wildebeest2.png b/docs/.gitbook/assets/wildebeest2.png new file mode 100644 index 000000000..12ea6f9fe Binary files /dev/null and b/docs/.gitbook/assets/wildebeest2.png differ diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..cfe288cf6 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,33 @@ +# What is WildBeast? + +WildBeast is a wheels-attached Discord bot - meaning the heavy lifting is already done for you, making WildBeast easy to modify and extend to perfectly fit your use case. + +This documentation focusses on self-hosting and extending WildBeast. If you don't feel like hosting your own instance, we host a publicly available version of WildBeast known as [WildBot](https://invite.thesharks.xyz) which you can invite to your own server. + +## Getting Started + +Ready to get your hands dirty? Pick one of these guides to get started with WildBeast. + +{% content-ref url="guides/linux-guides/" %} +[linux-guides](guides/linux-guides/) +{% endcontent-ref %} + +### Fundamentals: Dive a little deeper + +Looking to write your own commands, or other custom features? Look below for our advanced guides. + +{% content-ref url="fundamentals/commands/" %} +[commands](fundamentals/commands/) +{% endcontent-ref %} + +{% content-ref url="fundamentals/commands/slash-commands/buttons.md" %} +[buttons.md](fundamentals/commands/slash-commands/buttons.md) +{% endcontent-ref %} + +{% content-ref url="broken-reference" %} +[Broken link](broken-reference) +{% endcontent-ref %} + +{% content-ref url="broken-reference" %} +[Broken link](broken-reference) +{% endcontent-ref %} diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md new file mode 100644 index 000000000..4d426c4bf --- /dev/null +++ b/docs/SUMMARY.md @@ -0,0 +1,25 @@ +# Table of contents + +* [What is WildBeast?](README.md) + +## Guides + +* [Linux guides](guides/linux-guides/README.md) + * [Setup](guides/linux-guides/setup.md) + * [Running as a service](guides/linux-guides/running-as-a-service.md) + +## Fundamentals + +* [Commands](fundamentals/commands/README.md) + * [Slash commands](fundamentals/commands/slash-commands/README.md) + * [Subcommands](fundamentals/commands/slash-commands/subcommands.md) + * [Options](fundamentals/commands/slash-commands/options.md) + * [Buttons](fundamentals/commands/slash-commands/buttons.md) + * [Context menu actions](fundamentals/commands/context-menu-actions.md) +* [Jobs](fundamentals/jobs.md) + +## Extras + +* [VPS recommendations](extras/vps-recommendations.md) +* [Creating a bot account](extras/creating-a-bot-account.md) +* [Adding your bot to your server](extras/adding-your-bot-to-your-server.md) diff --git a/docs/extras/adding-your-bot-to-your-server.md b/docs/extras/adding-your-bot-to-your-server.md new file mode 100644 index 000000000..89faa3098 --- /dev/null +++ b/docs/extras/adding-your-bot-to-your-server.md @@ -0,0 +1,22 @@ +--- +description: This page will show you how to invite your bot to your servers. +--- + +# Adding your bot to your server + +{% hint style="info" %} +Don’t have a bot account yet? Check out [this page](creating-a-bot-account.md) for instructions how to make one. +{% endhint %} + +1. Once you have created a bot account, navigate to the OAuth2 page of your application![](../.gitbook/assets/wildebeest2.png) +2. Scroll down to the OAuth2 URL Generator and check the "applications.commands" and "bot" scopes + + ![](../.gitbook/assets/image.png) +3. Copy the link it generates and open it in a new tab, choosing what server you want to add it to, and hit "Authorize" + + ![](../.gitbook/assets/wildebeest1.png) + +{% hint style="warning" %} +Don’t see the server you want to add the bot to? You need to have the ”Manage Server” permission in the server for it to show up. +{% endhint %} + diff --git a/docs/extras/creating-a-bot-account.md b/docs/extras/creating-a-bot-account.md new file mode 100644 index 000000000..4e8d77938 --- /dev/null +++ b/docs/extras/creating-a-bot-account.md @@ -0,0 +1,31 @@ +--- +description: This page will describe, in detail, how to obtain a token for your bot. +--- + +# Creating a bot account + +1. Navigate to your [Applications Page](https://discord.com/developers/applications) (you might need to login for this) +2. Click "New Application" on the top right of the page + + ![](<../.gitbook/assets/afbeelding (2) (1).png>) +3. Think of a name for your bot, and click "Create" + + ![](<../.gitbook/assets/afbeelding (7) (1).png>) +4. Navigate to the "Bot" tab + + ![](<../.gitbook/assets/afbeelding (3) (1).png>) +5. Click "Add Bot" on the left of the page + + ![](<../.gitbook/assets/afbeelding (3).png>) +6. Click "Yes, do it!" + + ![](<../.gitbook/assets/afbeelding (4) (1).png>) +7. Optionally, set an avatar and change the username, and click "Save". +8. Select the "Copy" button to copy your bot's token. + + ![](<../.gitbook/assets/afbeelding (10) (1).png>) + + + + + diff --git a/docs/extras/vps-recommendations.md b/docs/extras/vps-recommendations.md new file mode 100644 index 000000000..42ae85d8f --- /dev/null +++ b/docs/extras/vps-recommendations.md @@ -0,0 +1,40 @@ +--- +description: Need to run WildBeast 24/7? Get a cheap VPS. +--- + +# VPS recommendations + +Need to run WildBeast 24/7? Get a cheap VPS. We recommend any of the below. + +### [Hetzner](https://hetzner.cloud/?ref=TrwA0pf5HM06) + +Cheap Finland and Germany-based VPSes. + +### [DigitalOcean](https://m.do.co/c/3ead1675d3af) + +The gold standard. Locations available worldwide. + +### [Scaleway](https://scaleway.com) + +Incredibly cheap but powerful VPSes, owned by online.net, based in France and The Netherlands. + +### [Xenyth](https://xenyth.net) + +A hosting solution made by Discord bot developers, aimed at a lower price range, starting from $2.49. + +### [OVH](https://ovh.com) + +Cheap VPSes, used by many people. France and Canadian locations available. + +### [Linode](https://linode.com) + +US-based VPS provider, locations available worldwide. + +### [Vultr](https://www.vultr.com/?ref=8379976) + +US-based VPS provider, locations available worldwide. + + + + + diff --git a/docs/fundamentals/commands/README.md b/docs/fundamentals/commands/README.md new file mode 100644 index 000000000..4efcb92d5 --- /dev/null +++ b/docs/fundamentals/commands/README.md @@ -0,0 +1,30 @@ +--- +description: Write your own custom commands +--- + +# Commands + +{% hint style="danger" %} +Custom commands is an advanced feature and requires knowledge of programming. + +**Support for doing this will not be provided in addition to what is listed on these pages.** +{% endhint %} + +{% hint style="info" %} +Under the hood, WildBeast's command system is an extension of the system from [Detritus](https://github.com/detritusjs). + +We won't go into some of the more advanced ways to control command flow that's included with Detritus' system, such as `onBeforeRun`, built-in ratelimiting, and permission checks. + +For more info on this, please see the [Detritus Documentation](https://detritusjs.com/classes/interaction\_command.interactioncommand), and the [Detritus Examples](https://github.com/detritusjs/client/tree/master/examples/ts/example-bots/commands/interactions/commands) instead. +{% endhint %} + +There are 3 types of commands, slash commands and 2 types of context menu commands. Documentation for each type is provided below. + +{% content-ref url="slash-commands/" %} +[slash-commands](slash-commands/) +{% endcontent-ref %} + +{% content-ref url="context-menu-actions.md" %} +[context-menu-actions.md](context-menu-actions.md) +{% endcontent-ref %} + diff --git a/docs/fundamentals/commands/context-menu-actions.md b/docs/fundamentals/commands/context-menu-actions.md new file mode 100644 index 000000000..422f8f286 --- /dev/null +++ b/docs/fundamentals/commands/context-menu-actions.md @@ -0,0 +1,62 @@ +--- +description: Add commands to context menus shown on right-click for users and messages +--- + +# Context menu actions + +There are 2 types of context menu actions, depending on what the end user is opening the context menu on. + +{% tabs %} +{% tab title="User context" %} +![](<../../.gitbook/assets/afbeelding (1).png>) + +```typescript +import { Interaction } from 'detritus-client' +import { MessageFlags } from 'detritus-client/lib/constants' + +import { BaseContextMenuUserCommand, ContextMenuUserArgs } from '../../base' + +export default class InformationCommand extends BaseContextMenuUserCommand { + name = 'Avatar' + + async run (context: Interaction.InteractionContext, args: ContextMenuUserArgs): Promise { + await context.editOrRespond({ + embed: { + description: `${args.user.mention}'s avatar`, + image: { + url: `${args.user.avatarUrl}?size=512` + } + }, + flags: MessageFlags.EPHEMERAL + }) + } +} + +``` +{% endtab %} + +{% tab title="Message context" %} +![](../../.gitbook/assets/afbeelding.png) + +```typescript +import { Interaction } from 'detritus-client' +import { MessageFlags } from 'detritus-client/lib/constants' + +import { BaseContextMenuMessageCommand, ContextMenuMessageArgs } from '../../base' + +export default class InformationCommand extends BaseContextMenuMessageCommand { + name = 'Message ID' + + async run (context: Interaction.InteractionContext, args: ContextMenuMessageArgs): Promise { + await context.editOrRespond({ + embed: { + description: `Message ID: ${args.message.id}` + }, + flags: MessageFlags.EPHEMERAL + }) + } +} + +``` +{% endtab %} +{% endtabs %} diff --git a/docs/fundamentals/commands/slash-commands/README.md b/docs/fundamentals/commands/slash-commands/README.md new file mode 100644 index 000000000..55aacc1f7 --- /dev/null +++ b/docs/fundamentals/commands/slash-commands/README.md @@ -0,0 +1,73 @@ +--- +description: Slash commands are the primary way to interact with bots +--- + +# Slash commands + +![](<../../../.gitbook/assets/afbeelding (12).png>) + +## Creating commands + +{% hint style="info" %} +**Reminder:** Check the [Detritus Documentation](https://detritusjs.com/classes/interaction\_command.interactioncommand) for more advanced settings. +{% endhint %} + +A finished command looks like this: + +```typescript +import { Interaction } from 'detritus-client' +import { BaseSlashCommand } from '../base' + +export default class PingCommand extends BaseSlashCommand { + constructor () { + super({ + description: 'Ping', + name: 'ping' + }) + } + + async run (context: Interaction.InteractionContext): Promise { + await context.editOrRespond(context, 'Pong!') + } +} + +``` + +There are a few things to note with regard to how commands are constructed: + +* All commands are new classes that extend a base class, in this example the command is a plain slash command. +* The resulting command is exported as the default export. +* The constructor with a super call is used to set properties of the class instead of directly assigning them, this avoids incompatibilities with Detritus. + +## In practice + +When restarting WildBeast, your newly created command will automatically be registered as a global command, and will be available within a few hours. + +Rather want a guild-based command instead of a global one? Add guild IDs to the constructor of your command: + +```typescript +constructor () { + super({ + description: 'Ping', + name: 'ping', + guildIds: ['110462143152803840'] + }) +} +``` + +## What's next? + +There are more things you can do with commands, like adding options, creating subcommands, and adding buttons and select menus. + +{% content-ref url="subcommands.md" %} +[subcommands.md](subcommands.md) +{% endcontent-ref %} + +{% content-ref url="options.md" %} +[options.md](options.md) +{% endcontent-ref %} + +{% content-ref url="buttons.md" %} +[buttons.md](buttons.md) +{% endcontent-ref %} + diff --git a/docs/fundamentals/commands/slash-commands/buttons.md b/docs/fundamentals/commands/slash-commands/buttons.md new file mode 100644 index 000000000..9d82b25b4 --- /dev/null +++ b/docs/fundamentals/commands/slash-commands/buttons.md @@ -0,0 +1,47 @@ +--- +description: Add buttons for easy follow ups +--- + +# Buttons + +![](<../../../.gitbook/assets/afbeelding (14).png>) + +Buttons are a simple way to create follow ups **after** a slash command has finished. + +## In practise + +```typescript +import { Interaction } from 'detritus-client' +import { ComponentContext, Components, Embed } from 'detritus-client/lib/utils' +import fetch from 'node-fetch' + +import { BaseSlashCommand } from '../base' + +export default class RandomCatCommand extends BaseSlashCommand { + name = 'cat' + description = 'Sends a random cat image' + + async run (context: Interaction.InteractionContext | ComponentContext): Promise { + const components = new Components({ + timeout: 5 * (60 * 1000), + onTimeout: async () => await context.editOrRespond({ components: [] }) + }) + components.addButton({ + emoji: '🔃', + run: async (componentContext: ComponentContext) => { + await this.run(componentContext) + } + }) + const { fact } = await (await fetch('https://catfact.ninja/fact')).json() + const embed = new Embed() + .setDescription(fact) + .setImage(`https://cataas.com/cat?${context.interaction.id}`) // cache busting + .setFooter('Powered by cataas.com') + await context.editOrRespond({ + embed, + components + }) + } +} + +``` diff --git a/docs/fundamentals/commands/slash-commands/options.md b/docs/fundamentals/commands/slash-commands/options.md new file mode 100644 index 000000000..2786f52c2 --- /dev/null +++ b/docs/fundamentals/commands/slash-commands/options.md @@ -0,0 +1,61 @@ +--- +description: Add selectable options to your commands +--- + +# Options + +![](<../../../.gitbook/assets/afbeelding (2).png>) + +Options are the primary way to take user input for slash commands, they're type-checked on Discord's side, so type safety is guaranteed! + +## In practise + +```typescript +import { Interaction } from 'detritus-client' +import { ApplicationCommandOptionTypes } from 'detritus-client/lib/constants' + +import { BaseSlashCommand } from '../base' + +export interface CommandArgs { + dice?: number + sides?: number +} + +export default class DiceCommand extends BaseSlashCommand { + description = 'Roll some dice' + name = 'dice' + + constructor () { + super({ + options: [ + { + type: ApplicationCommandOptionTypes.INTEGER, + name: 'dice', + description: 'The number of dice to roll (default: 1)', + required: false + }, + { + type: ApplicationCommandOptionTypes.INTEGER, + name: 'sides', + description: 'The number of sides on the dice (default: 6)', + required: false + } + ] + }) + } + + async run (context: Interaction.InteractionContext, args: CommandArgs): Promise { + const { dice, sides } = args + const diceCount = dice ?? 1 + const diceSides = sides ?? 6 + + let total = 0 + for (let i = 0; i < diceCount; i++) { + total += Math.floor(Math.random() * diceSides) + 1 + } + + await context.editOrRespond(`${context.user.username} rolled ${diceCount}d${diceSides} and got ${total}`) + } +} + +``` diff --git a/docs/fundamentals/commands/slash-commands/subcommands.md b/docs/fundamentals/commands/slash-commands/subcommands.md new file mode 100644 index 000000000..2f331f1f7 --- /dev/null +++ b/docs/fundamentals/commands/slash-commands/subcommands.md @@ -0,0 +1,49 @@ +--- +description: Nest multiple separate commands under one base command +--- + +# Subcommands + +![](<../../../.gitbook/assets/afbeelding (4).png>) + +Subcommands are a great way to nest seperate commands under one base command, each subcommand is their own seperate command and can be called as such. + +## In practise + +{% hint style="info" %} +We're continuing off the example from the [Slash commands](./) page +{% endhint %} + +```typescript +import { Interaction } from 'detritus-client' +import { BaseSlashCommand, BaseCommandOption } from '../base' + +export default class PingCommand extends BaseSlashCommand { + constructor () { + super({ + name: 'ping', + // With subcommands, the description doesn't matter, + // since it doesn't get shown to end users. + description: '', + options: [ + new PongCommand() + ] + }) + } + // The base command should not have a run(), it never gets called +} + +export class PongCommand extends BaseCommandOption { + constructor () { + super({ + name: 'pong' + description: 'Pong!' + }) + } + + async run (context: Interaction.InteractionContext): Promise { + await context.editOrRespond(context, 'Pong!') + } +} +``` + diff --git a/docs/fundamentals/jobs.md b/docs/fundamentals/jobs.md new file mode 100644 index 000000000..f140aa595 --- /dev/null +++ b/docs/fundamentals/jobs.md @@ -0,0 +1,50 @@ +--- +description: >- + Jobs are a simple way to run code asynchronously on a set schedule, or + whenever you need to. +--- + +# Jobs + +## Basic setup + +A job either extends the `Job` class, or the `ScheduledJob` class, a scheduled job will run on a set time schedule and a normal job runs when called + +Jobs are indexed and required based on their name either in context of the client, or in context of the cluster, a cluster job is called only once and a client job is called for each client that the cluster holds. + +Cluster jobs should be named `job-name.cluster.ts`\ +Client jobs should be named `job-name.client.ts` + +## In practise + +Scheduled jobs work like this: + +```typescript +import { ScheduledJob } from './base' + +const job = new ScheduledJob('a_scheduled_job', 1000, async () => { + // do some work every second +}) + +job.start() + +export default job +``` + +While regular jobs work like this: + +```typescript +import { Job } from './base' + +const job = new Job('a_job', async () => { + // do some work +}) + +export default job + +// elsewhere in the code: +import { jobs } from '../cache' +const job = jobs.get('a_job') + +job?.run() +``` diff --git a/docs/guides/linux-guides/README.md b/docs/guides/linux-guides/README.md new file mode 100644 index 000000000..b4a23cf1d --- /dev/null +++ b/docs/guides/linux-guides/README.md @@ -0,0 +1,2 @@ +# Linux guides + diff --git a/docs/guides/linux-guides/running-as-a-service.md b/docs/guides/linux-guides/running-as-a-service.md new file mode 100644 index 000000000..560f054d8 --- /dev/null +++ b/docs/guides/linux-guides/running-as-a-service.md @@ -0,0 +1,83 @@ +--- +description: Using systemd, run WildBeast as a service for automatic (re)starting +--- + +# Running as a service + +{% hint style="info" %} +**Good to know:** This guide uses `systemd`, we're assuming this is present on your system. + +If you're using Ubuntu 20.04, you're already using `systemd`. +{% endhint %} + +## Making a new service + +Start creating a new service: + +``` +sudo nano /etc/systemd/system/wildbeast.service +``` + +Copy and paste the following example: + +```ini +[Unit] +After=network.target network-online.target +Requires=network.target network-online.target +StartLimitBurst=3 +StartLimitIntervalSec=0 + +[Service] +WorkingDirectory=/REPLACE THIS +Type=simple +Restart=on-failure +RestartSec=1 +User=REPLACE THIS +ExecStart=/usr/bin/env npm start + +[Install] +WantedBy=multi-user.target +``` + +{% hint style="warning" %} +Pay attention to the `REPLACE THIS`, as you might've guessed you need to replace these values. + +* `WorkingDirectory` - The folder where you saved WildBeast + + For example: `/home/wildbeast/WildBeast` +* `User` - The user that's going to run WildBeast + + Do **NOT** use `root`, [create a new user](https://www.digitalocean.com/community/tutorials/how-to-create-a-new-sudo-enabled-user-on-ubuntu-20-04-quickstart) for safety. +{% endhint %} + +## Controlling the service + +### Starting + +``` +sudo systemctl start wildbeast.service +``` + +### Stopping + +``` +sudo systemctl stop wildbeast.service +``` + +### Start on boot + +``` +sudo systemctl enable wildbeast.service +``` + +To undo: + +``` +sudo systemctl disable wildbeast.service +``` + +### Restarting + +``` +sudo systemctl restart wildbeast.service +``` diff --git a/docs/guides/linux-guides/setup.md b/docs/guides/linux-guides/setup.md new file mode 100644 index 000000000..1fa4660fe --- /dev/null +++ b/docs/guides/linux-guides/setup.md @@ -0,0 +1,129 @@ +--- +description: Instructions to run WildBeast on Linux +--- + +# Setup + +## The basics + +{% hint style="info" %} +**Good to know:** For the purpose of this guide, we'll use [Ubuntu 20.04](https://ubuntu.com). + +Any modern Linux distribution will work, however the commands described here only work on Debian based distributions. +{% endhint %} + +{% hint style="warning" %} +For safety reasons, please **don't run WildBeast with the `root` account.** + +If you don't know how to create a new user on Linux, please see [DigitalOcean's guide on making new sudo-enabled users](https://www.digitalocean.com/community/tutorials/how-to-create-a-new-sudo-enabled-user-on-ubuntu-20-04-quickstart) +{% endhint %} + +We need a few prerequisites: + +* A computer running any [supported version of Ubuntu](https://github.com/nodesource/distributions#debian-and-ubuntu-based-distributions) + * You need `sudo` or `doas` privileges, or access to the `root` account + * If you want to run WildBeast 24/7, you should get a [VPS](../../extras/vps-recommendations.md) +* [Git](https://git-scm.com/download/linux) +* A text editor. We're going to use `nano`, but you can use anything you'd like. + +## Installation + +### Installing Node.js + +1. Run the following code in your terminal: + + ``` + curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - + ``` + + (Not a fan of `curl | bash -`? You can do this [manually](https://github.com/nodesource/distributions#manual-installation) too.) +2. Install Node.js with the following command: + + ``` + sudo apt-get install -y nodejs + ``` + +### Installing Postgres + +Postgres is available to install by default on Ubuntu, just run the following code in your terminal: + +```bash +sudo apt install postgresql postgresql-contrib +``` + +We need to do some extra steps to prepare Postgres for use: + +1. Create a new user for WildBeast to use: + + ```bash + sudo -u postgres createuser --interactive + ``` + + The new user does **not** need to be a superuser, and can be called whatever you want. +2. Finally, create a new database: + + ```bash + sudo -u postgres createdb wildbeast + ``` + + (We used `wildbeast` here as the database user, change it if you used something else in the previous step) + +## Setting up + +### Getting the code + +Clone the code and install the required modules: + +``` +git clone https://github.com/TheSharks/WildBeast.git +cd ./WildBeast +npm install +``` + +### Setting the options + +Open the example configuration file in `nano` and enter your details: + +``` +nano .env.example +``` + +When you're done, **save the file as `.env`** + +### **Starting the database** + +Before we can start, we need to initialize the database. Run the following code: + +``` +npm run-script migrations:up +``` + +### **Testing it out!** + +Now for the fun part, testing to see if it worked! + +Start WildBeast for the first time with the following command: + +``` +npm start +``` + +You should see something similar to the following if everything went well + +`19:11:41 [info] Gateway: Client ready` + +`19:11:41 [info] Gateway - shard 0: Gateway ready` + +Test if your bot works by running the `/ping` command + +![](<../../.gitbook/assets/afbeelding (6) (1).png>) + +{% hint style="info" %} +Slash commands can take a while to appear. + +Don't have your bot in your server yet? Check [this guide.](../../extras/adding-your-bot-to-your-server.md) +{% endhint %} + +### Next steps + +* [Running as a service for autostart](running-as-a-service.md) diff --git a/manifests/secrets.yml b/manifests/secrets.yml index c6c5eab7d..f3b710332 100644 --- a/manifests/secrets.yml +++ b/manifests/secrets.yml @@ -27,6 +27,4 @@ data: # Depending on the driver you're using, enter your credentials here # Typically, drivers consist of a host, username, and a password # but this can differ between drivers, check your driver's documentation - DB_HOST: - DB_USER: - DB_PASSWORD: + DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres diff --git a/package-lock.json b/package-lock.json index 5ee8f2d54..f73796088 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,238 +1,162 @@ { "name": "@thesharks/wildbeast", - "version": "8.0.0", + "version": "8.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@thesharks/wildbeast", - "version": "8.0.0", + "version": "8.1.0", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@sentry/integrations": "^6.13.2", - "@sentry/node": "^6.13.2", + "@elastic/elasticsearch": "^8.2.1", + "@sentry/integrations": "^7.8.0", + "@sentry/node": "^7.8.0", "@thesharks/jagtag-js": "^2.0.0", - "chalk": "^4.1.2", - "date-fns": "^2.24.0", - "detritus-client": "^0.16.4-beta.4", - "dotenv": "^10.0.0", - "glob": "^7.2.0", - "intl-messageformat": "^9.9.2", - "postgres": "^2.0.0-beta.9", - "tslib": "^2.3.1" + "chalk": "^5.0.1", + "chalk-template": "^0.4.0", + "date-fns": "^2.29.1", + "deepmerge": "^4.2.2", + "detritus-client": "^0.17.0-beta.1", + "dotenv": "^16.0.1", + "fast-glob": "^3.2.11", + "intl-messageformat": "^10.1.1", + "postgres": "^3.2.4", + "tslib": "^2.4.0" }, "devDependencies": { - "@types/glob": "^7.1.4", - "@types/node": "^16.10.2", - "@typescript-eslint/eslint-plugin": "^4.32.0", - "discord-api-types": "^0.23.1", - "eslint": "^7.32.0", - "eslint-config-standard-with-typescript": "^21.0.1", - "eslint-plugin-import": "^2.24.2", + "@types/node": "^18.6.2", + "@typescript-eslint/eslint-plugin": "^5.31.0", + "discord-api-types": "^0.36.3", + "eslint": "^8.20.0", + "eslint-config-standard-with-typescript": "^22.0.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "ts-node": "^10.2.1", - "typescript": "^4.4.3" + "eslint-plugin-promise": "^6.0.0", + "rimraf": "^3.0.2", + "ts-node": "^10.9.1", + "typescript": "^4.7.4" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" + "node": ">=14.17" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "node_modules/@elastic/elasticsearch": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.2.1.tgz", + "integrity": "sha512-Kwerd8DfNZdBGgl7fkn+20kXkw1QePB3goTv5QwW9poo2d4VbPE0EChmh6irpXWAGsVSYiKr8x6bh8dH5YdylA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@elastic/transport": "^8.2.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=14" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "node_modules/@elastic/transport": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.2.0.tgz", + "integrity": "sha512-H/HmefMNQfLiBSVTmNExu2lYs5EzwipUnQB53WLr17RCTDaQX0oOLHcWpDsbKQSRhDAMPPzp5YZsZMJxuxPh7A==", "dependencies": { - "has-flag": "^3.0.0" + "debug": "^4.3.4", + "hpagent": "^1.0.0", + "ms": "^2.1.3", + "secure-json-parse": "^2.4.0", + "tslib": "^2.4.0", + "undici": "^5.1.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" + "node": ">=14" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", - "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, - "engines": { - "node": ">=12" - } + "node_modules/@elastic/transport/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@formatjs/ecma402-abstract": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.9.9.tgz", - "integrity": "sha512-w2HpUW17Ev8UN8G1fSvl0skCLP+HkhGZii0ALaBXYc7rd3osD2s8EF2ihSNkeEeC6aySX1IAkRm0f4lnE8Jeaw==", + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.8.tgz", + "integrity": "sha512-fgLqyWlwmTEuqV/TSLEL/t9JOmHNLFvCdgzXB0jc2w+WOItPCOJ1T0eyN6fQBQKRPfSqqNlu+kWj7ijcOVTVVQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.21", - "tslib": "^2.1.0" + "@formatjs/intl-localematcher": "0.2.28", + "tslib": "2.4.0" } }, "node_modules/@formatjs/fast-memoize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", - "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.4.tgz", + "integrity": "sha512-9ARYoLR8AEzXvj2nYrOVHY/h1dDMDWGTnKDLXSISF1uoPakSmfcZuSqjiqZX2wRkEUimPxdwTu/agyozBtZRHA==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "2.4.0" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.12.tgz", - "integrity": "sha512-X/tdbKLfVBc2yJRX+xC3uqYxXkp9336FhSS1Hb6kU6pSOU+EseylS3a/vjFOKjol1qQ5BSIQd8YPWtOOt3KcWA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.4.tgz", + "integrity": "sha512-3PqMvKWV1oyok0BuiXUAHIaotdhdTJw6OICqCZbfUgKT+ZRwRWO4IlCgvXJeCITaKS5p+PY0XXKjf/vUyIpWjQ==", "dependencies": { - "@formatjs/ecma402-abstract": "1.9.9", - "@formatjs/icu-skeleton-parser": "1.2.13", - "tslib": "^2.1.0" + "@formatjs/ecma402-abstract": "1.11.8", + "@formatjs/icu-skeleton-parser": "1.3.10", + "tslib": "2.4.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.13.tgz", - "integrity": "sha512-PHK4kdIcNTI15ASyn6dCA2cxzUPHE+UK/FsBkPULNpKgPWEZIYAFO9PgG0a9SDcIIr7Ta3SPPbUZGKRXT3d+ng==", + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.10.tgz", + "integrity": "sha512-kXJmtLDqFF5aLTf8IxdJXnhrIX1Qb4Qp3a9jqRecGDYfzOa9hMhi9U0nKyhrJJ4cXxBzptcgb+LWkyeHL6nlBQ==", "dependencies": { - "@formatjs/ecma402-abstract": "1.9.9", - "tslib": "^2.1.0" + "@formatjs/ecma402-abstract": "1.11.8", + "tslib": "2.4.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.2.21", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.21.tgz", - "integrity": "sha512-JTJeLiNwexN4Gy0cMxoUPvJbKhXdnSuo5jPrDafEZpnDWlJ5VDYta8zUVVozO/pwzEmFVHEUpgiEDj+39L4oMg==", + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.28.tgz", + "integrity": "sha512-FLsc6Gifs1np/8HnCn/7Q+lHMmenrD5fuDhRT82yj0gi9O19kfaFwjQUw1gZsyILuRyT93GuzdifHj7TKRhBcw==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "2.4.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, @@ -241,16 +165,40 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -263,16 +211,14 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", - "dev": true, + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -282,18 +228,17 @@ } }, "node_modules/@sentry/core": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.13.2.tgz", - "integrity": "sha512-snXNNFLwlS7yYxKTX4DBXebvJK+6ikBWN6noQ1CHowvM3ReFBlrdrs0Z0SsSFEzXm2S4q7f6HHbm66GSQZ/8FQ==", - "dependencies": { - "@sentry/hub": "6.13.2", - "@sentry/minimal": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.8.0.tgz", + "integrity": "sha512-Xogwy96P6o3qgSLIGHxzKnRxrky8QdHpnS4A6ZWjnnFFAJmMg3MPF9SmqK5dOUpO9K69jTad9vs6ES2qTydfIw==", + "dependencies": { + "@sentry/hub": "7.8.0", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/core/node_modules/tslib": { @@ -302,16 +247,16 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/hub": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.13.2.tgz", - "integrity": "sha512-sppSuJdNMiMC/vFm/dQowCBh11uTrmvks00fc190YWgxHshodJwXMdpc+pN61VSOmy2QA4MbQ5aMAgHzPzel3A==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.8.0.tgz", + "integrity": "sha512-L+aZ7XQJ5cM9NFBy/4caTyBVOc5DB6LK1wxPSFxCy1zsr/XpEYqTAy6ATRUeC0UKxdd/sN/lnQ8liGwVAc0gGQ==", "dependencies": { - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/hub/node_modules/tslib": { @@ -320,17 +265,17 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/integrations": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.13.2.tgz", - "integrity": "sha512-CzxMtNr4nkZbifD0Rb6tXwqfqm+fWKl4IQTaFrJ92VNdgihBMVWYmflRqkMkGh1iFN8bVPpXrGyplY5tFN+2kA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.8.0.tgz", + "integrity": "sha512-EdnkE4eIQsLH46X8HBdfG/4+M9yWMSLWNf5jebcNeYd3UtXfpkNRz10F8g/v9QpqEIHRmcD8o6vh8yVZAGO8cg==", "dependencies": { - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "localforage": "^1.8.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/tslib": { @@ -338,41 +283,22 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/@sentry/minimal": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.13.2.tgz", - "integrity": "sha512-6iJfEvHzzpGBHDfLxSHcGObh73XU1OSQKWjuhDOe7UQDyI4BQmTfcXAC+Fr8sm8C/tIsmpVi/XJhs8cubFdSMw==", - "dependencies": { - "@sentry/hub": "6.13.2", - "@sentry/types": "6.13.2", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/node": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.13.2.tgz", - "integrity": "sha512-0Vw22amG143MTiNaSny66YGU3+uW7HxyGI9TLGE7aJY1nNmC0DE+OgqQYGBRCrrPu+VFXRDxrOg9b15A1gKqjA==", - "dependencies": { - "@sentry/core": "6.13.2", - "@sentry/hub": "6.13.2", - "@sentry/tracing": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.8.0.tgz", + "integrity": "sha512-nnHeKVbOWlNC/ekgKJhSPDOJbw2W/Bk5OTRmJJm2TgrRS/RituogLjf9Ypw/oZOT4MWQHpn2qTI6yXta5WIQuw==", + "dependencies": { + "@sentry/core": "7.8.0", + "@sentry/hub": "7.8.0", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/node/node_modules/tslib": { @@ -380,44 +306,24 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/@sentry/tracing": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.13.2.tgz", - "integrity": "sha512-bHJz+C/nd6biWTNcYAu91JeRilsvVgaye4POkdzWSmD0XoLWHVMrpCQobGpXe7onkp2noU3YQjhqgtBqPHtnpw==", - "dependencies": { - "@sentry/hub": "6.13.2", - "@sentry/minimal": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.13.2.tgz", - "integrity": "sha512-6WjGj/VjjN8LZDtqJH5ikeB1o39rO1gYS6anBxiS3d0sXNBb3Ux0pNNDFoBxQpOhmdDHXYS57MEptX9EV82gmg==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.8.0.tgz", + "integrity": "sha512-X9D2jlcAzbJdCHA+eCMv2t5HI9769Qpx48e+sZiK7Oasy1jwQtqzQRaiI9fy/zZ+p7Fyerj/4WjW/E2c4dJ63w==", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.13.2.tgz", - "integrity": "sha512-foF4PbxqPMWNbuqdXkdoOmKm3quu3PP7Q7j/0pXkri4DtCuvF/lKY92mbY0V9rHS/phCoj+3/Se5JvM2ymh2/w==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-6WvXawUPs60R9MitHXFL533D/Ic9tqQZbvPnBXmAkfp90Y5rcoq2QfJjkqMk/Z+Gnplwi8/wcJCC8EtYKfWg6w==", "dependencies": { - "@sentry/types": "6.13.2", + "@sentry/types": "7.8.0", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/utils/node_modules/tslib": { @@ -429,7 +335,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@thesharks/jagtag-js/-/jagtag-js-2.0.0.tgz", "integrity": "sha512-E5L59eVIpI2CwfQ8bmraTPm6ZNc+ZejfbFQsBixf5I1Fyi9+3J9jgJNzH/GftSzK1l2xdKw6uzofo6eRk86UzA==", - "license": "MIT", "dependencies": { "date-fns": "^2.16.1", "js-levenshtein": "^1.1.6" @@ -459,20 +364,10 @@ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, - "node_modules/@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/json5": { @@ -481,51 +376,46 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, - "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, "node_modules/@types/node": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", - "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.2.tgz", + "integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==" }, "node_modules/@types/node-fetch": { - "version": "2.5.10", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", - "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.32.0.tgz", - "integrity": "sha512-+OWTuWRSbWI1KDK8iEyG/6uK2rTm3kpS38wuVifGUTDB6kjEuNrzBI1MUtxnkneuWG/23QehABe2zHHrj+4yuA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", + "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.32.0", - "@typescript-eslint/scope-manager": "4.32.0", - "debug": "^4.3.1", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/type-utils": "5.31.0", + "@typescript-eslint/utils": "5.31.0", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -534,16 +424,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", - "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0" + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -551,12 +441,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", - "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -564,202 +454,202 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", - "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.32.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.32.0.tgz", - "integrity": "sha512-WLoXcc+cQufxRYjTWr4kFt0DyEv6hDgSaFqYhIzQZ05cF+kXfqXdUh+//kgquPJVUBbL3oQGKQxwPbLxHRqm6A==", + "node_modules/@typescript-eslint/parser": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", + "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.32.0", - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/typescript-estree": "4.32.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", + "debug": "^4.3.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", - "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", + "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0" + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", - "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz", - "integrity": "sha512-tRYCgJ3g1UjMw1cGG8Yn1KzOzNlQ6u1h9AmEtPhb5V5a1TmiHWcRyF/Ic+91M4f43QeChyYlVTcf3DvDTZR9vw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", + "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/utils": "5.31.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "*" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", - "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "node_modules/@typescript-eslint/types": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", + "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.32.0", - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.1.tgz", - "integrity": "sha512-UjrMsgnhQIIK82hXGaD+MCN8IfORS1CbMdu7VlZbYa8LCZtbZjJA26De4IPQB7XYZbL8gJ99KWNj0l6WD0guJg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", + "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.28.1", - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/typescript-estree": "4.28.1", - "debug": "^4.3.1" + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz", - "integrity": "sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA==", + "node_modules/@typescript-eslint/utils": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", + "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/visitor-keys": "4.28.1" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.1.tgz", - "integrity": "sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" + }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz", - "integrity": "sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/visitor-keys": "4.28.1", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -771,17 +661,34 @@ } } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz", - "integrity": "sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", + "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.28.1", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.9.1", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -789,9 +696,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -810,9 +717,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -845,19 +752,10 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -884,25 +782,22 @@ "dev": true }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -921,14 +816,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" }, "engines": { "node": ">= 0.4" @@ -937,15 +832,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -954,12 +840,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -969,7 +857,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -977,6 +864,16 @@ "node": ">=8" } }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.0.0" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1000,6 +897,31 @@ } }, "node_modules/chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/chalk-template/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -1044,7 +966,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/cookie": { "version": "0.4.1", @@ -1075,9 +998,9 @@ } }, "node_modules/date-fns": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.24.0.tgz", - "integrity": "sha512-6ujwvwgPID6zbI0o7UbURi2vlLDR9uP26+tW6Lg+Ji3w7dd0i3DOcjcClLjLPranT60SSEFBwdSyYwn/ZkPIuw==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.1.tgz", + "integrity": "sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==", "engines": { "node": ">=0.11" }, @@ -1087,9 +1010,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -1103,11 +1026,19 @@ } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1129,13 +1060,13 @@ } }, "node_modules/detritus-client": { - "version": "0.16.4-beta.4", - "resolved": "https://registry.npmjs.org/detritus-client/-/detritus-client-0.16.4-beta.4.tgz", - "integrity": "sha512-rEhORrNmwLs2Lk8+DdP5wSggK1FLG1kfguwoU6LUp+ATEzzrX2r1F24l9C1yQar7hMHC6bcOhGqt1fq9lazy/A==", + "version": "0.17.0-beta.1", + "resolved": "https://registry.npmjs.org/detritus-client/-/detritus-client-0.17.0-beta.1.tgz", + "integrity": "sha512-q5OlEGDIRAgIEUNanAi9exrO/Nh3L3gqZF9GrGq55xx48I16r0vJ2YN/5p5ab1Ts+uuZgY6d+OIThrd0Cl4oNw==", "dependencies": { "@types/node": "^14.17.2", "@types/node-fetch": "^2.5.10", - "detritus-client-rest": "^0.10.6-beta.1", + "detritus-client-rest": "^0.10.6-beta.2", "detritus-client-socket": "^0.8.4-beta.1", "detritus-utils": "^0.4.0" }, @@ -1157,9 +1088,9 @@ } }, "node_modules/detritus-client-rest": { - "version": "0.10.6-beta.1", - "resolved": "https://registry.npmjs.org/detritus-client-rest/-/detritus-client-rest-0.10.6-beta.1.tgz", - "integrity": "sha512-/4Pxz5/zU6391qS4XzG2thHVvbpl/P/LycobzfPib4W+Cv+seh9Bxw0QrqZGhFyOVv1Jhp5WBCLBEESePBaDQQ==", + "version": "0.10.6-beta.2", + "resolved": "https://registry.npmjs.org/detritus-client-rest/-/detritus-client-rest-0.10.6-beta.2.tgz", + "integrity": "sha512-zjPl2YBIXM/p29a3E3Hy8JoeDm7m9NuL5SxXnPK6Dqo8LlxeA9onG5zo2mgO0qlKkUzkPnegJASP8o9dMuz/qA==", "dependencies": { "detritus-rest": "^0.7.0", "detritus-utils": "^0.4.0" @@ -1204,14 +1135,14 @@ } }, "node_modules/detritus-client-socket/node_modules/@types/node": { - "version": "14.17.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.19.tgz", - "integrity": "sha512-jjYI6NkyfXykucU6ELEoT64QyKOdvaA6enOqKtP4xUsGY0X0ZUZz29fUmrTRo+7v7c6TgDu82q3GHHaCEkqZwA==" + "version": "14.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz", + "integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==" }, "node_modules/detritus-client/node_modules/@types/node": { - "version": "14.17.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.4.tgz", - "integrity": "sha512-8kQ3+wKGRNN0ghtEn7EGps/B8CzuBz1nXZEIGGLP2GnwbqYn4dbTs7k+VKLTq1HvZLRCIDtN3Snx1Ege8B7L5A==" + "version": "14.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz", + "integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==" }, "node_modules/detritus-rest": { "version": "0.7.0", @@ -1257,13 +1188,10 @@ } }, "node_modules/discord-api-types": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.23.1.tgz", - "integrity": "sha512-igWmn+45mzXRWNEPU25I/pr8MwxHb767wAr51oy3VRLRcTlp5ADBbrBR0lq3SA1Rfw3MtM4TQu1xo3kxscfVdQ==", - "dev": true, - "engines": { - "node": ">=12" - } + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==", + "dev": true }, "node_modules/doctrine": { "version": "3.0.0", @@ -1278,57 +1206,34 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "engines": { - "node": ">=10" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "node": ">=12" } }, "node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -1372,49 +1277,44 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -1422,16 +1322,16 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", "dev": true, "funding": [ { @@ -1448,28 +1348,28 @@ } ], "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" } }, "node_modules/eslint-config-standard-with-typescript": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz", - "integrity": "sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz", + "integrity": "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==", "dev": true, "dependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint-config-standard": "^16.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-standard": "17.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.1", - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0", - "typescript": "^3.9 || ^4.0.0" + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0", + "typescript": "*" } }, "node_modules/eslint-import-resolver-node": { @@ -1492,13 +1392,13 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "dependencies": { "debug": "^3.2.7", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "engines": { "node": ">=4" @@ -1557,32 +1457,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -1612,6 +1510,78 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/eslint-plugin-n": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.4.tgz", + "integrity": "sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==", + "dev": true, + "peer": true, + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.9.0", + "minimatch": "^3.1.2", + "resolve": "^1.10.1", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-node": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", @@ -1656,15 +1626,6 @@ "node": ">=4" } }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1675,15 +1636,15 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", + "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", "dev": true, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^7.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/eslint-scope": { @@ -1717,7 +1678,7 @@ "eslint": ">=5" } }, - "node_modules/eslint-visitor-keys": { + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", @@ -1726,64 +1687,77 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=4.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esquery": { @@ -1799,9 +1773,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -1820,9 +1794,9 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -1853,10 +1827,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", - "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", - "dev": true, + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1865,7 +1838,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { @@ -1881,10 +1854,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dependencies": { "reusify": "^1.0.4" } @@ -1905,7 +1877,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1939,9 +1910,9 @@ } }, "node_modules/flatted": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", - "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "node_modules/form-data": { @@ -1960,7 +1931,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/function-bind": { "version": "1.1.1", @@ -1988,10 +1960,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2011,7 +2000,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -2020,9 +2008,9 @@ } }, "node_modules/globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2035,16 +2023,16 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -2054,21 +2042,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2110,11 +2083,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hpagent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", + "engines": { + "node": ">=14" + } }, "node_modules/https-proxy-agent": { "version": "5.0.0", @@ -2129,9 +2119,9 @@ } }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -2171,48 +2161,63 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/intl-messageformat": { - "version": "9.9.2", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.2.tgz", - "integrity": "sha512-IR/bOP7XUrCxrlgFlZeHXixIT29BNd/1bOS8leElk5sQfvGvsDVoTGI+wLpvWG4INIBQNj8vjxgxlbquB12vog==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.1.1.tgz", + "integrity": "sha512-FeJne2oooYW6shLPbrqyjRX6hTELVrQ90Dn88z7NomLk/xZBCLxLPAkgaYaTQJBRBV78nZ933d8APHHkTQrD9Q==", "dependencies": { - "@formatjs/fast-memoize": "1.2.0", - "@formatjs/icu-messageformat-parser": "2.0.12", - "tslib": "^2.1.0" + "@formatjs/ecma402-abstract": "1.11.8", + "@formatjs/fast-memoize": "1.2.4", + "@formatjs/icu-messageformat-parser": "2.1.4", + "tslib": "2.4.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2222,9 +2227,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -2234,9 +2239,9 @@ } }, "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2246,10 +2251,13 @@ } }, "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2261,25 +2269,14 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2288,9 +2285,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { "node": ">= 0.4" @@ -2303,16 +2300,18 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2321,13 +2320,13 @@ } }, "node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2336,11 +2335,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2363,6 +2374,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2377,31 +2400,18 @@ "node": ">=0.10.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2447,25 +2457,10 @@ "immediate": "~3.0.5" } }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/localforage": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz", - "integrity": "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dependencies": { "lie": "3.1.1" } @@ -2483,24 +2478,12 @@ "node": ">=4" } }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -2528,7 +2511,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -2537,7 +2519,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -2547,28 +2528,29 @@ } }, "node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dependencies": { - "mime-db": "1.48.0" + "mime-db": "1.51.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2577,9 +2559,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "node_modules/ms": { @@ -2594,41 +2576,28 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2662,14 +2631,14 @@ } }, "node_modules/object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2682,6 +2651,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } @@ -2748,19 +2718,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2774,6 +2731,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2803,10 +2761,9 @@ } }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -2814,43 +2771,14 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postgres": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/postgres/-/postgres-2.0.0-beta.9.tgz", - "integrity": "sha512-CnohjNtw5HTfkmZZXREhcVfShbP3dnoYHNVZOXGRdL59xtviktykciEWgRcyMWZRwX03YaaB9PouUNtQM4WyHQ==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.2.4.tgz", + "integrity": "sha512-iscysD+ZlM4A9zj0RS2zo3f4Us4yuov94Yx+p3dE1rEARaBHC8R3/gRq40KEnWp1lxjuFq9EjuAenIUsPaTaDA==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -2861,15 +2789,6 @@ "node": ">= 0.8.0" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2883,7 +2802,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -2899,45 +2817,6 @@ } ] }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2950,23 +2829,18 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2985,7 +2859,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3010,7 +2883,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -3029,10 +2901,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/secure-json-parse": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", + "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" + }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3065,80 +2942,25 @@ "node": ">=8" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "engines": { "node": ">=8" } @@ -3170,12 +2992,12 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -3213,45 +3035,18 @@ "node": ">=8" } }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3262,7 +3057,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -3276,12 +3070,12 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "node_modules/ts-node": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", - "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "0.6.1", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -3292,18 +3086,17 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=12.0.0" - }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", @@ -3319,34 +3112,22 @@ } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -3369,13 +3150,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true, - "peer": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3401,9 +3175,9 @@ } }, "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3428,6 +3202,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "engines": { + "node": ">=12.18" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3443,15 +3225,11 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true }, "node_modules/webidl-conversions": { "version": "3.0.1", @@ -3510,12 +3288,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "engines": { "node": ">=8.3.0" }, @@ -3549,188 +3328,148 @@ } }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@jridgewell/trace-mapping": "0.3.9" } }, - "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true + "@elastic/elasticsearch": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.2.1.tgz", + "integrity": "sha512-Kwerd8DfNZdBGgl7fkn+20kXkw1QePB3goTv5QwW9poo2d4VbPE0EChmh6irpXWAGsVSYiKr8x6bh8dH5YdylA==", + "requires": { + "@elastic/transport": "^8.2.0", + "tslib": "^2.4.0" + } }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "@elastic/transport": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.2.0.tgz", + "integrity": "sha512-H/HmefMNQfLiBSVTmNExu2lYs5EzwipUnQB53WLr17RCTDaQX0oOLHcWpDsbKQSRhDAMPPzp5YZsZMJxuxPh7A==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "debug": "^4.3.4", + "hpagent": "^1.0.0", + "ms": "^2.1.3", + "secure-json-parse": "^2.4.0", + "tslib": "^2.4.0", + "undici": "^5.1.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", - "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", - "dev": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "@formatjs/ecma402-abstract": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.9.9.tgz", - "integrity": "sha512-w2HpUW17Ev8UN8G1fSvl0skCLP+HkhGZii0ALaBXYc7rd3osD2s8EF2ihSNkeEeC6aySX1IAkRm0f4lnE8Jeaw==", + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.8.tgz", + "integrity": "sha512-fgLqyWlwmTEuqV/TSLEL/t9JOmHNLFvCdgzXB0jc2w+WOItPCOJ1T0eyN6fQBQKRPfSqqNlu+kWj7ijcOVTVVQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.21", - "tslib": "^2.1.0" + "@formatjs/intl-localematcher": "0.2.28", + "tslib": "2.4.0" } }, "@formatjs/fast-memoize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", - "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.4.tgz", + "integrity": "sha512-9ARYoLR8AEzXvj2nYrOVHY/h1dDMDWGTnKDLXSISF1uoPakSmfcZuSqjiqZX2wRkEUimPxdwTu/agyozBtZRHA==", "requires": { - "tslib": "^2.1.0" + "tslib": "2.4.0" } }, "@formatjs/icu-messageformat-parser": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.12.tgz", - "integrity": "sha512-X/tdbKLfVBc2yJRX+xC3uqYxXkp9336FhSS1Hb6kU6pSOU+EseylS3a/vjFOKjol1qQ5BSIQd8YPWtOOt3KcWA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.4.tgz", + "integrity": "sha512-3PqMvKWV1oyok0BuiXUAHIaotdhdTJw6OICqCZbfUgKT+ZRwRWO4IlCgvXJeCITaKS5p+PY0XXKjf/vUyIpWjQ==", "requires": { - "@formatjs/ecma402-abstract": "1.9.9", - "@formatjs/icu-skeleton-parser": "1.2.13", - "tslib": "^2.1.0" + "@formatjs/ecma402-abstract": "1.11.8", + "@formatjs/icu-skeleton-parser": "1.3.10", + "tslib": "2.4.0" } }, "@formatjs/icu-skeleton-parser": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.13.tgz", - "integrity": "sha512-PHK4kdIcNTI15ASyn6dCA2cxzUPHE+UK/FsBkPULNpKgPWEZIYAFO9PgG0a9SDcIIr7Ta3SPPbUZGKRXT3d+ng==", + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.10.tgz", + "integrity": "sha512-kXJmtLDqFF5aLTf8IxdJXnhrIX1Qb4Qp3a9jqRecGDYfzOa9hMhi9U0nKyhrJJ4cXxBzptcgb+LWkyeHL6nlBQ==", "requires": { - "@formatjs/ecma402-abstract": "1.9.9", - "tslib": "^2.1.0" + "@formatjs/ecma402-abstract": "1.11.8", + "tslib": "2.4.0" } }, "@formatjs/intl-localematcher": { - "version": "0.2.21", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.21.tgz", - "integrity": "sha512-JTJeLiNwexN4Gy0cMxoUPvJbKhXdnSuo5jPrDafEZpnDWlJ5VDYta8zUVVozO/pwzEmFVHEUpgiEDj+39L4oMg==", + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.28.tgz", + "integrity": "sha512-FLsc6Gifs1np/8HnCn/7Q+lHMmenrD5fuDhRT82yj0gi9O19kfaFwjQUw1gZsyILuRyT93GuzdifHj7TKRhBcw==", "requires": { - "tslib": "^2.1.0" + "tslib": "2.4.0" } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3739,28 +3478,25 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", - "dev": true, + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "@sentry/core": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.13.2.tgz", - "integrity": "sha512-snXNNFLwlS7yYxKTX4DBXebvJK+6ikBWN6noQ1CHowvM3ReFBlrdrs0Z0SsSFEzXm2S4q7f6HHbm66GSQZ/8FQ==", - "requires": { - "@sentry/hub": "6.13.2", - "@sentry/minimal": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.8.0.tgz", + "integrity": "sha512-Xogwy96P6o3qgSLIGHxzKnRxrky8QdHpnS4A6ZWjnnFFAJmMg3MPF9SmqK5dOUpO9K69jTad9vs6ES2qTydfIw==", + "requires": { + "@sentry/hub": "7.8.0", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "tslib": "^1.9.3" }, "dependencies": { @@ -3772,12 +3508,12 @@ } }, "@sentry/hub": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.13.2.tgz", - "integrity": "sha512-sppSuJdNMiMC/vFm/dQowCBh11uTrmvks00fc190YWgxHshodJwXMdpc+pN61VSOmy2QA4MbQ5aMAgHzPzel3A==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.8.0.tgz", + "integrity": "sha512-L+aZ7XQJ5cM9NFBy/4caTyBVOc5DB6LK1wxPSFxCy1zsr/XpEYqTAy6ATRUeC0UKxdd/sN/lnQ8liGwVAc0gGQ==", "requires": { - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "tslib": "^1.9.3" }, "dependencies": { @@ -3789,12 +3525,12 @@ } }, "@sentry/integrations": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.13.2.tgz", - "integrity": "sha512-CzxMtNr4nkZbifD0Rb6tXwqfqm+fWKl4IQTaFrJ92VNdgihBMVWYmflRqkMkGh1iFN8bVPpXrGyplY5tFN+2kA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.8.0.tgz", + "integrity": "sha512-EdnkE4eIQsLH46X8HBdfG/4+M9yWMSLWNf5jebcNeYd3UtXfpkNRz10F8g/v9QpqEIHRmcD8o6vh8yVZAGO8cg==", "requires": { - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -3806,33 +3542,15 @@ } } }, - "@sentry/minimal": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.13.2.tgz", - "integrity": "sha512-6iJfEvHzzpGBHDfLxSHcGObh73XU1OSQKWjuhDOe7UQDyI4BQmTfcXAC+Fr8sm8C/tIsmpVi/XJhs8cubFdSMw==", - "requires": { - "@sentry/hub": "6.13.2", - "@sentry/types": "6.13.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, "@sentry/node": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.13.2.tgz", - "integrity": "sha512-0Vw22amG143MTiNaSny66YGU3+uW7HxyGI9TLGE7aJY1nNmC0DE+OgqQYGBRCrrPu+VFXRDxrOg9b15A1gKqjA==", - "requires": { - "@sentry/core": "6.13.2", - "@sentry/hub": "6.13.2", - "@sentry/tracing": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.8.0.tgz", + "integrity": "sha512-nnHeKVbOWlNC/ekgKJhSPDOJbw2W/Bk5OTRmJJm2TgrRS/RituogLjf9Ypw/oZOT4MWQHpn2qTI6yXta5WIQuw==", + "requires": { + "@sentry/core": "7.8.0", + "@sentry/hub": "7.8.0", + "@sentry/types": "7.8.0", + "@sentry/utils": "7.8.0", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -3846,36 +3564,17 @@ } } }, - "@sentry/tracing": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.13.2.tgz", - "integrity": "sha512-bHJz+C/nd6biWTNcYAu91JeRilsvVgaye4POkdzWSmD0XoLWHVMrpCQobGpXe7onkp2noU3YQjhqgtBqPHtnpw==", - "requires": { - "@sentry/hub": "6.13.2", - "@sentry/minimal": "6.13.2", - "@sentry/types": "6.13.2", - "@sentry/utils": "6.13.2", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, "@sentry/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.13.2.tgz", - "integrity": "sha512-6WjGj/VjjN8LZDtqJH5ikeB1o39rO1gYS6anBxiS3d0sXNBb3Ux0pNNDFoBxQpOhmdDHXYS57MEptX9EV82gmg==" + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.8.0.tgz", + "integrity": "sha512-X9D2jlcAzbJdCHA+eCMv2t5HI9769Qpx48e+sZiK7Oasy1jwQtqzQRaiI9fy/zZ+p7Fyerj/4WjW/E2c4dJ63w==" }, "@sentry/utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.13.2.tgz", - "integrity": "sha512-foF4PbxqPMWNbuqdXkdoOmKm3quu3PP7Q7j/0pXkri4DtCuvF/lKY92mbY0V9rHS/phCoj+3/Se5JvM2ymh2/w==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-6WvXawUPs60R9MitHXFL533D/Ic9tqQZbvPnBXmAkfp90Y5rcoq2QfJjkqMk/Z+Gnplwi8/wcJCC8EtYKfWg6w==", "requires": { - "@sentry/types": "6.13.2", + "@sentry/types": "7.8.0", "tslib": "^1.9.3" }, "dependencies": { @@ -3919,20 +3618,10 @@ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, - "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/json5": { @@ -3941,190 +3630,190 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, "@types/node": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", - "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.2.tgz", + "integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==" }, "@types/node-fetch": { - "version": "2.5.10", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", - "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", "requires": { "@types/node": "*", "form-data": "^3.0.0" } }, "@typescript-eslint/eslint-plugin": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.32.0.tgz", - "integrity": "sha512-+OWTuWRSbWI1KDK8iEyG/6uK2rTm3kpS38wuVifGUTDB6kjEuNrzBI1MUtxnkneuWG/23QehABe2zHHrj+4yuA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", + "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.32.0", - "@typescript-eslint/scope-manager": "4.32.0", - "debug": "^4.3.1", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/type-utils": "5.31.0", + "@typescript-eslint/utils": "5.31.0", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", - "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0" + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" } }, "@typescript-eslint/types": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", - "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", - "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.32.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true } } }, - "@typescript-eslint/experimental-utils": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.32.0.tgz", - "integrity": "sha512-WLoXcc+cQufxRYjTWr4kFt0DyEv6hDgSaFqYhIzQZ05cF+kXfqXdUh+//kgquPJVUBbL3oQGKQxwPbLxHRqm6A==", + "@typescript-eslint/parser": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", + "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", + "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", + "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.31.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", + "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", + "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", + "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.32.0", - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/typescript-estree": "4.32.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", - "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0" + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" } }, "@typescript-eslint/types": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", - "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz", - "integrity": "sha512-tRYCgJ3g1UjMw1cGG8Yn1KzOzNlQ6u1h9AmEtPhb5V5a1TmiHWcRyF/Ic+91M4f43QeChyYlVTcf3DvDTZR9vw==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.32.0", - "@typescript-eslint/visitor-keys": "4.32.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", - "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.32.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" } } } }, - "@typescript-eslint/parser": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.1.tgz", - "integrity": "sha512-UjrMsgnhQIIK82hXGaD+MCN8IfORS1CbMdu7VlZbYa8LCZtbZjJA26De4IPQB7XYZbL8gJ99KWNj0l6WD0guJg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.28.1", - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/typescript-estree": "4.28.1", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz", - "integrity": "sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/visitor-keys": "4.28.1" - } - }, - "@typescript-eslint/types": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.1.tgz", - "integrity": "sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz", - "integrity": "sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.28.1", - "@typescript-eslint/visitor-keys": "4.28.1", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, "@typescript-eslint/visitor-keys": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz", - "integrity": "sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", + "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.28.1", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.9.1", + "eslint-visitor-keys": "^3.0.0" } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-jsx": { @@ -4135,9 +3824,9 @@ "requires": {} }, "acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, "agent-base": { @@ -4160,16 +3849,10 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -4187,25 +3870,22 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-union": { @@ -4215,22 +3895,16 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4239,12 +3913,14 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4254,11 +3930,20 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.0.0" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4276,12 +3961,27 @@ "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==" + }, + "chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "chalk": "^4.1.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } } }, "color-convert": { @@ -4308,7 +4008,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "cookie": { "version": "0.4.1", @@ -4333,24 +4034,29 @@ } }, "date-fns": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.24.0.tgz", - "integrity": "sha512-6ujwvwgPID6zbI0o7UbURi2vlLDR9uP26+tW6Lg+Ji3w7dd0i3DOcjcClLjLPranT60SSEFBwdSyYwn/ZkPIuw==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.1.tgz", + "integrity": "sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==" }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4366,28 +4072,28 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "detritus-client": { - "version": "0.16.4-beta.4", - "resolved": "https://registry.npmjs.org/detritus-client/-/detritus-client-0.16.4-beta.4.tgz", - "integrity": "sha512-rEhORrNmwLs2Lk8+DdP5wSggK1FLG1kfguwoU6LUp+ATEzzrX2r1F24l9C1yQar7hMHC6bcOhGqt1fq9lazy/A==", + "version": "0.17.0-beta.1", + "resolved": "https://registry.npmjs.org/detritus-client/-/detritus-client-0.17.0-beta.1.tgz", + "integrity": "sha512-q5OlEGDIRAgIEUNanAi9exrO/Nh3L3gqZF9GrGq55xx48I16r0vJ2YN/5p5ab1Ts+uuZgY6d+OIThrd0Cl4oNw==", "requires": { "@types/node": "^14.17.2", "@types/node-fetch": "^2.5.10", - "detritus-client-rest": "^0.10.6-beta.1", + "detritus-client-rest": "^0.10.6-beta.2", "detritus-client-socket": "^0.8.4-beta.1", "detritus-utils": "^0.4.0" }, "dependencies": { "@types/node": { - "version": "14.17.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.4.tgz", - "integrity": "sha512-8kQ3+wKGRNN0ghtEn7EGps/B8CzuBz1nXZEIGGLP2GnwbqYn4dbTs7k+VKLTq1HvZLRCIDtN3Snx1Ege8B7L5A==" + "version": "14.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz", + "integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==" } } }, "detritus-client-rest": { - "version": "0.10.6-beta.1", - "resolved": "https://registry.npmjs.org/detritus-client-rest/-/detritus-client-rest-0.10.6-beta.1.tgz", - "integrity": "sha512-/4Pxz5/zU6391qS4XzG2thHVvbpl/P/LycobzfPib4W+Cv+seh9Bxw0QrqZGhFyOVv1Jhp5WBCLBEESePBaDQQ==", + "version": "0.10.6-beta.2", + "resolved": "https://registry.npmjs.org/detritus-client-rest/-/detritus-client-rest-0.10.6-beta.2.tgz", + "integrity": "sha512-zjPl2YBIXM/p29a3E3Hy8JoeDm7m9NuL5SxXnPK6Dqo8LlxeA9onG5zo2mgO0qlKkUzkPnegJASP8o9dMuz/qA==", "requires": { "detritus-rest": "^0.7.0", "detritus-utils": "^0.4.0" @@ -4404,9 +4110,9 @@ }, "dependencies": { "@types/node": { - "version": "14.17.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.19.tgz", - "integrity": "sha512-jjYI6NkyfXykucU6ELEoT64QyKOdvaA6enOqKtP4xUsGY0X0ZUZz29fUmrTRo+7v7c6TgDu82q3GHHaCEkqZwA==" + "version": "14.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.5.tgz", + "integrity": "sha512-LMy+vDDcQR48EZdEx5wRX1q/sEl6NdGuHXPnfeL8ixkwCOSZ2qnIyIZmcCbdX0MeRqHhAcHmX+haCbrS8Run+A==" } } }, @@ -4441,9 +4147,9 @@ } }, "discord-api-types": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.23.1.tgz", - "integrity": "sha512-igWmn+45mzXRWNEPU25I/pr8MwxHb767wAr51oy3VRLRcTlp5ADBbrBR0lq3SA1Rfw3MtM4TQu1xo3kxscfVdQ==", + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==", "dev": true }, "doctrine": { @@ -4456,51 +4162,31 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" }, "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -4526,87 +4212,100 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" } } } }, "eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", "dev": true, "requires": {} }, "eslint-config-standard-with-typescript": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz", - "integrity": "sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz", + "integrity": "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==", "dev": true, "requires": { - "@typescript-eslint/parser": "^4.0.0", - "eslint-config-standard": "^16.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-standard": "17.0.0" } }, "eslint-import-resolver-node": { @@ -4631,13 +4330,13 @@ } }, "eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "requires": { "debug": "^3.2.7", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "dependencies": { "debug": { @@ -4679,26 +4378,24 @@ } }, "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -4727,6 +4424,55 @@ } } }, + "eslint-plugin-n": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.4.tgz", + "integrity": "sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==", + "dev": true, + "peer": true, + "requires": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.9.0", + "minimatch": "^3.1.2", + "resolve": "^1.10.1", + "semver": "^7.3.7" + }, + "dependencies": { + "eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "peer": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true + } + } + }, "eslint-plugin-node": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", @@ -4756,12 +4502,6 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4771,9 +4511,9 @@ } }, "eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", + "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", "dev": true, "requires": {} }, @@ -4790,43 +4530,37 @@ "eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "eslint-visitor-keys": "^2.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -4837,9 +4571,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -4854,9 +4588,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -4880,10 +4614,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", - "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", - "dev": true, + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4905,10 +4638,9 @@ "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "requires": { "reusify": "^1.0.4" } @@ -4926,7 +4658,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -4951,9 +4682,9 @@ } }, "flatted": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", - "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "form-data": { @@ -4969,7 +4700,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "function-bind": { "version": "1.1.1", @@ -4994,10 +4726,21 @@ "has-symbols": "^1.0.1" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5011,48 +4754,33 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } }, "globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } } }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5079,11 +4807,19 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hpagent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==" }, "https-proxy-agent": { "version": "5.0.0", @@ -5095,9 +4831,9 @@ } }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "immediate": { @@ -5125,6 +4861,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5133,115 +4870,132 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "intl-messageformat": { - "version": "9.9.2", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.2.tgz", - "integrity": "sha512-IR/bOP7XUrCxrlgFlZeHXixIT29BNd/1bOS8leElk5sQfvGvsDVoTGI+wLpvWG4INIBQNj8vjxgxlbquB12vog==", + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "requires": { - "@formatjs/fast-memoize": "1.2.0", - "@formatjs/icu-messageformat-parser": "2.0.12", - "tslib": "^2.1.0" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "intl-messageformat": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.1.1.tgz", + "integrity": "sha512-FeJne2oooYW6shLPbrqyjRX6hTELVrQ90Dn88z7NomLk/xZBCLxLPAkgaYaTQJBRBV78nZ933d8APHHkTQrD9Q==", + "requires": { + "@formatjs/ecma402-abstract": "1.11.8", + "@formatjs/fast-memoize": "1.2.4", + "@formatjs/icu-messageformat-parser": "2.1.4", + "tslib": "2.4.0" + } }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" } }, "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", @@ -5251,6 +5005,15 @@ "has-symbols": "^1.0.2" } }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5262,28 +5025,15 @@ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5323,22 +5073,10 @@ "immediate": "~3.0.5" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, "localforage": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz", - "integrity": "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "requires": { "lie": "3.1.1" } @@ -5353,24 +5091,12 @@ "path-exists": "^3.0.0" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -5394,44 +5120,43 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" } }, "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "1.48.0" + "mime-db": "1.51.0" } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "ms": { @@ -5446,37 +5171,17 @@ "dev": true }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true }, "object-keys": { @@ -5498,20 +5203,21 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -5563,16 +5269,6 @@ "callsites": "^3.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -5582,7 +5278,8 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "3.1.1", @@ -5603,39 +5300,14 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "postgres": { - "version": "2.0.0-beta.9", - "resolved": "https://registry.npmjs.org/postgres/-/postgres-2.0.0-beta.9.tgz", - "integrity": "sha512-CnohjNtw5HTfkmZZXREhcVfShbP3dnoYHNVZOXGRdL59xtviktykciEWgRcyMWZRwX03YaaB9PouUNtQM4WyHQ==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.2.4.tgz", + "integrity": "sha512-iscysD+ZlM4A9zj0RS2zo3f4Us4yuov94Yx+p3dE1rEARaBHC8R3/gRq40KEnWp1lxjuFq9EjuAenIUsPaTaDA==" }, "prelude-ls": { "version": "1.2.1", @@ -5643,12 +5315,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5658,40 +5324,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "regexpp": { "version": "3.2.0", @@ -5699,20 +5332,15 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { @@ -5724,8 +5352,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "3.0.2", @@ -5740,15 +5367,19 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } }, + "secure-json-parse": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", + "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5769,72 +5400,23 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, - "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -5856,12 +5438,12 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -5884,39 +5466,11 @@ "has-flag": "^4.0.0" } }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true }, "text-table": { "version": "0.2.0", @@ -5928,7 +5482,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -5939,12 +5492,12 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "ts-node": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", - "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "requires": { - "@cspotcode/source-map-support": "0.6.1", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -5955,33 +5508,26 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true - } } }, "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "tsutils": { "version": "3.21.0", @@ -6000,12 +5546,6 @@ } } }, - "tweetnacl": { - "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true, - "peer": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6022,9 +5562,9 @@ "dev": true }, "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true }, "unbox-primitive": { @@ -6039,6 +5579,11 @@ "which-boxed-primitive": "^1.0.2" } }, + "undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==" + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6054,15 +5599,11 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true }, "webidl-conversions": { "version": "3.0.1", @@ -6109,12 +5650,13 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "requires": {} }, "yallist": { diff --git a/package.json b/package.json index 20a14a70e..7d6ca9439 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,19 @@ { "private": true, "name": "@thesharks/wildbeast", - "version": "8.0.0", + "version": "8.1.0", "description": "Discord bot", "main": "dist/index.js", "scripts": { "start": "node --enable-source-maps -r dotenv/config dist/index.js", + "start:plain": "node --enable-source-maps -r dotenv/config dist/entry.js", "test": "eslint src/**/*.ts", "lint": "eslint src/**/*.ts --fix", - "compile": "tsc", + "compile": "rimraf dist/ && tsc", "prepare": "npm run compile", "migrations:create": "node -r ts-node/register -e 'require(\"./src/database/migrations\").cli(\"create\")'", - "migrations:up": "node -r ts-node/register -r dotenv/config -e 'require(\"./src/database/migrations\").cli(\"up\")'", - "migrations:down": "node -r ts-node/register -r dotenv/config -e 'require(\"./src/database/migrations\").cli(\"down\")'" + "migrations:up": "node -r dotenv/config -e 'require(\"./dist/database/migrations\").cli(\"up\")'", + "migrations:down": "node -r dotenv/config -e 'require(\"./dist/database/migrations\").cli(\"down\")'" }, "repository": { "type": "git", @@ -29,33 +30,35 @@ "url": "https://github.com/TheSharks/WildBeast/issues" }, "engines": { - "node": ">=14" + "node": ">=14.17" }, "homepage": "https://wildbeast.guide/", "devDependencies": { - "@types/glob": "^7.1.4", - "@types/node": "^16.10.2", - "@typescript-eslint/eslint-plugin": "^4.32.0", - "discord-api-types": "^0.23.1", - "eslint": "^7.32.0", - "eslint-config-standard-with-typescript": "^21.0.1", - "eslint-plugin-import": "^2.24.2", + "@types/node": "^18.6.2", + "@typescript-eslint/eslint-plugin": "^5.31.0", + "discord-api-types": "^0.36.3", + "eslint": "^8.20.0", + "eslint-config-standard-with-typescript": "^22.0.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "ts-node": "^10.2.1", - "typescript": "^4.4.3" + "eslint-plugin-promise": "^6.0.0", + "rimraf": "^3.0.2", + "ts-node": "^10.9.1", + "typescript": "^4.7.4" }, "dependencies": { - "@sentry/integrations": "^6.13.2", - "@sentry/node": "^6.13.2", + "@elastic/elasticsearch": "^8.2.1", + "@sentry/integrations": "^7.8.0", + "@sentry/node": "^7.8.0", "@thesharks/jagtag-js": "^2.0.0", "chalk": "^4.1.2", - "date-fns": "^2.24.0", - "detritus-client": "^0.16.4-beta.4", - "dotenv": "^10.0.0", - "glob": "^7.2.0", - "intl-messageformat": "^9.9.2", - "postgres": "^2.0.0-beta.9", - "tslib": "^2.3.1" + "date-fns": "^2.29.1", + "deepmerge": "^4.2.2", + "detritus-client": "^0.17.0-beta.1", + "dotenv": "^16.0.1", + "fast-glob": "^3.2.11", + "intl-messageformat": "^10.1.1", + "postgres": "^3.2.4", + "tslib": "^2.4.0" } } diff --git a/src/cache.ts b/src/cache.ts index f3b7f5edf..ce7f67390 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -1 +1,4 @@ +import { Job } from './jobs/base' + export const languages = new Map>() +export const jobs = new Map() diff --git a/src/database/migrations/exec/1641061885-tag_ranking.ts b/src/database/migrations/exec/1641061885-tag_ranking.ts new file mode 100644 index 000000000..a93a9e37d --- /dev/null +++ b/src/database/migrations/exec/1641061885-tag_ranking.ts @@ -0,0 +1,11 @@ +import driver from '../../driver' + +export async function up (db: typeof driver): Promise { + await db`ALTER TABLE tags ADD COLUMN uses BIGINT NOT NULL DEFAULT 0;` + await db`CREATE INDEX tags_uses_idx ON tags (uses);` +} + +export async function down (db: typeof driver): Promise { + await db`ALTER TABLE tags DROP COLUMN uses;` + await db`DROP INDEX tags_uses_idx;` +} diff --git a/src/database/migrations/exec/1642768551-analytics.ts b/src/database/migrations/exec/1642768551-analytics.ts new file mode 100644 index 000000000..780d507c9 --- /dev/null +++ b/src/database/migrations/exec/1642768551-analytics.ts @@ -0,0 +1,19 @@ +import driver from '../../driver' + +export async function up (db: typeof driver): Promise { + await db` + CREATE TABLE IF NOT EXISTS analytics ( + id UUID NOT NULL PRIMARY KEY, + timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(), + type INTEGER NOT NULL, + guild_id BIGINT, + user_id BIGINT NOT NULL, + data JSONB NOT NULL, + name TEXT NOT NULL + ); + ` +} + +export async function down (db: typeof driver): Promise { + await db`DROP TABLE IF EXISTS analytics;` +} diff --git a/src/database/migrations/exec/1642769775-tags_no_tz.ts b/src/database/migrations/exec/1642769775-tags_no_tz.ts new file mode 100644 index 000000000..49a27c4fd --- /dev/null +++ b/src/database/migrations/exec/1642769775-tags_no_tz.ts @@ -0,0 +1,11 @@ +import driver from '../../driver' + +export async function up (db: typeof driver): Promise { + await db`ALTER TABLE tags ALTER COLUMN created_at SET DATA TYPE TIMESTAMP WITHOUT TIME ZONE` + await db`ALTER TABLE tags ALTER COLUMN updated_at SET DATA TYPE TIMESTAMP WITHOUT TIME ZONE` +} + +export async function down (db: typeof driver): Promise { + await db`ALTER TABLE tags ALTER COLUMN created_at SET DATA TYPE TIMESTAMP` + await db`ALTER TABLE tags ALTER COLUMN updated_at SET DATA TYPE TIMESTAMP` +} diff --git a/src/database/migrations/exec/1644249527-remove_analytics.ts b/src/database/migrations/exec/1644249527-remove_analytics.ts new file mode 100644 index 000000000..29f7ed0c3 --- /dev/null +++ b/src/database/migrations/exec/1644249527-remove_analytics.ts @@ -0,0 +1,19 @@ +import driver from '../../driver' + +export async function up (db: typeof driver): Promise { + await db`DROP TABLE IF EXISTS analytics;` +} + +export async function down (db: typeof driver): Promise { + await db` + CREATE TABLE IF NOT EXISTS analytics ( + id UUID NOT NULL PRIMARY KEY, + timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(), + type INTEGER NOT NULL, + guild_id BIGINT, + user_id BIGINT NOT NULL, + data JSONB NOT NULL, + name TEXT NOT NULL + ); + ` +} diff --git a/src/database/migrations/index.ts b/src/database/migrations/index.ts index a14eb9c40..97610996c 100644 --- a/src/database/migrations/index.ts +++ b/src/database/migrations/index.ts @@ -3,7 +3,7 @@ import { Row, RowList } from 'postgres' import SQL from '../driver' import { basename, extname, join, resolve } from 'path' import { writeFile } from 'fs/promises' -import { glob } from 'glob' +import glob from 'fast-glob' import { debug, error, info, trace } from '../../utils/logger' const IS_TS_NODE = Symbol.for('ts-node.register.instance') in process diff --git a/src/database/models/Tag.ts b/src/database/models/Tag.ts new file mode 100644 index 000000000..9abced4d1 --- /dev/null +++ b/src/database/models/Tag.ts @@ -0,0 +1,9 @@ +export interface Tag { + content: string + created_at: Date + guild: string + name: string + owner: string + updated_at: Date + uses: number +} diff --git a/src/entry.ts b/src/entry.ts new file mode 100644 index 000000000..f33d948ba --- /dev/null +++ b/src/entry.ts @@ -0,0 +1,35 @@ +import { fatal, info } from './utils/logger' +import client from './structures/client' +import * as Sentry from '@sentry/node' +import { RewriteFrames } from '@sentry/integrations' +import { promisify } from 'util' +import { exec } from 'child_process' +import dirImport from './utils/dir-import' +import initLangs from './languages' + +info('Starting up...', 'Preflight'); + +(async () => { + const revision = process.env.GIT_COMMIT ?? + (await promisify(exec)('git rev-parse HEAD').catch(() => ({ stdout: undefined }))).stdout?.toString().trim() ?? + process.env.npm_package_version ?? + 'unknown' + info(`Initialzing Sentry, using revision ${revision}`, 'Preflight') + Sentry.init({ + dsn: process.env.SENTRY_DSN, + integrations: function (integrations) { + return integrations + .concat(new RewriteFrames({ root: __dirname ?? process.cwd() })) + .filter(function (integration) { + return integration.name !== 'Console' + }) + }, + release: revision + }) + await initLangs() + await dirImport('@(dist|src)/events/**/*.[?jt]s') + await client.addMultipleIn('./interactions') + await client.run() + await dirImport('@(dist|src)/jobs/**/*.client.[?jt]s') + await client.checkAndUploadCommands() +})().catch(e => fatal(e, 'Startup')) diff --git a/src/events/gatewayReady.ts b/src/events/gatewayReady.ts index ce4c567e4..d3da8d01d 100644 --- a/src/events/gatewayReady.ts +++ b/src/events/gatewayReady.ts @@ -1,7 +1,15 @@ import { ClientEvents } from 'detritus-client/lib/constants' import client from '../structures/client' +import { add } from '../utils/elastic' import { info } from '../utils/logger' client.client.subscribe(ClientEvents.GATEWAY_READY, async function (payload) { info('Gateway ready', `Gateway - shard ${payload.shard.shardId}`) + add({ + type: 'gateway', + event: 'ready', + shard: payload.shard.shardId, + trace: payload.raw._trace, + session: payload.raw.session_id + }) }) diff --git a/src/events/gatewayResumed.ts b/src/events/gatewayResumed.ts index 12c721405..c3b6d5db7 100644 --- a/src/events/gatewayResumed.ts +++ b/src/events/gatewayResumed.ts @@ -1,7 +1,15 @@ import { ClientEvents } from 'detritus-client/lib/constants' import client from '../structures/client' +import { add } from '../utils/elastic' import { info } from '../utils/logger' client.client.subscribe(ClientEvents.GATEWAY_RESUMED, async function (payload) { info('Gateway resumed', `Gateway - shard ${payload.shard.shardId}`) + add({ + type: 'gateway', + event: 'resumed', + shard: payload.shard.shardId, + trace: payload.raw._trace, + session: payload.shard.gateway.sessionId + }) }) diff --git a/src/index.ts b/src/index.ts index caae16bc1..a18f16a79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,31 +1,18 @@ -import { fatal, info } from './utils/logger' -import client from './structures/client' -import * as Sentry from '@sentry/node' -import { RewriteFrames } from '@sentry/integrations' -import { promisify } from 'util' -import { exec } from 'child_process' +import cluster from './structures/cluster' import dirImport from './utils/dir-import' +import { fatal, info, warn } from './utils/logger' -info('Starting up...', 'Preflight'); +cluster.on('clusterProcess', ({ clusterProcess }) => { + clusterProcess.on('ready', () => { + info('Cluster has reported ready', `Cluster ${clusterProcess.clusterId}`) + }) + clusterProcess.on('warn', ctx => { + warn(ctx.error, `Cluster ${clusterProcess.clusterId}`) + }) +}); (async () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const revision = (await promisify(exec)('git rev-parse HEAD').catch(() => { return { stdout: require('../package.json').version } })).stdout.toString().trim() - info(`Initialzing Sentry, using revision ${revision as string}`, 'Preflight') - Sentry.init({ - dsn: process.env.SENTRY_DSN, - integrations: function (integrations) { - return integrations - .concat(new RewriteFrames({ root: __dirname ?? process.cwd() })) - .filter(function (integration) { - return integration.name !== 'Console' - }) - }, - release: revision - }) - await dirImport('@(dist|src)/languages/**/*.[?jt]s') - await dirImport('@(dist|src)/events/**/*.[?jt]s') - await client.addMultipleIn('./interactions') - await client.run() - await client.checkAndUploadCommands() -})().catch(e => fatal(e, 'Startup')) + await cluster.run() + info(`Now running ${cluster.clusterCount} clusters with ${cluster.shardsPerCluster} shards on each one`, 'Clustering') + await dirImport('@(dist|src)/jobs/**/*.cluster.[?jt]s') +})().catch(e => fatal(e, 'Clustering')) diff --git a/src/interactions/base.ts b/src/interactions/base.ts index 5ead68f04..124ce5b8f 100644 --- a/src/interactions/base.ts +++ b/src/interactions/base.ts @@ -1,17 +1,75 @@ import { Constants, Interaction, Structures } from 'detritus-client' +import { add } from '../utils/elastic' import { translate } from '../utils/i18n' import { error } from '../utils/logger' -const { ApplicationCommandTypes, ApplicationCommandOptionTypes, MessageFlags } = Constants +const { ApplicationCommandTypes, ApplicationCommandOptionTypes, MessageFlags, Permissions } = Constants export class BaseInteractionCommand extends Interaction.InteractionCommand { - async onDmBlocked (context: Interaction.InteractionContext): Promise { + translate: typeof translate = translate + translateThis: typeof translate = (key, args) => { + if (this.type === ApplicationCommandTypes.CHAT_INPUT) { + return this.translate(`slash-commands.${this.name.toLowerCase()}.${key}`, args) + } else { + return this.translate(`context-menu.${this.name.toLowerCase()}.${key}`, args) + } + } + + async onBefore (context: Interaction.InteractionContext): Promise { + if (context.locale !== undefined) { + this.translate = (key, args) => translate(key, args, context.locale) + } + return true + } + + async onSuccess (context: Interaction.InteractionContext, args: ParsedArgsFinished): Promise { + add({ + type: 'command', + guildId: context.guildId, + inDm: context.inDm, + userId: context.user.id, + data: { + args, + interaction_id: context.interactionId + }, + name: context.command.name + }) + } + + async onDmBlocked (context: Interaction.InteractionContext): Promise { return await context.editOrRespond({ - content: translate('commands.common.dmDisabled'), + content: this.translate('common.dmDisabled'), + flags: MessageFlags.EPHEMERAL + }) + } + + async onPermissionsFail (context: Interaction.InteractionContext, falied: bigint[]): Promise { + const values = Object.entries(Permissions).filter(([key, value]) => falied.includes(BigInt(value))) + await context.editOrRespond({ + content: this.translate('common.permsMissingUser', { + perms: values.map(([key]) => key).join(', ') + }), + flags: MessageFlags.EPHEMERAL + }) + } + + async onPermissionsFailClient (context: Interaction.InteractionContext, falied: bigint[]): Promise { + const values = Object.entries(Permissions).filter(([key, value]) => falied.includes(BigInt(value))) + await context.editOrRespond({ + content: this.translate('common.permsMissingOwn', { + perms: values.map(([key]) => key).join(', ') + }), flags: MessageFlags.EPHEMERAL }) } - async onRunError (context: Interaction.InteractionContext, args: ParsedArgsFinished, err: any): Promise { + async onRatelimit (context: Interaction.InteractionContext): Promise { + await context.editOrRespond({ + content: this.translate('common.cooldown'), + flags: MessageFlags.EPHEMERAL + }) + } + + async onRunError (context: Interaction.InteractionContext, args: ParsedArgsFinished, err: any): Promise { const uuid = error(err, context.name, { user: { id: context.user.id, @@ -29,26 +87,102 @@ export class BaseInteractionCommand } }) return await context.editOrRespond({ - content: translate('commands.common.failedToRun', { uuid }), + content: translate('common.failedToRun', { uuid }), flags: MessageFlags.EPHEMERAL }) } +} + +class OptionBase extends Interaction.InteractionCommandOption { + translate: typeof translate = translate + translationPath: string = this.name.toLowerCase() + translateThis: typeof translate = (key, args) => + this.translate(`slash-commands.${this.translationPath}.${key}`, args) + + async onBefore (context: Interaction.InteractionContext): Promise { + if (context.locale !== undefined) { + this.translate = (key, args) => translate(key, args, context.locale) + } + return true + } - async safeReply (context: Interaction.InteractionContext, message: string | Structures.InteractionEditOrRespond): Promise { + async onSuccess (context: Interaction.InteractionContext, args: ParsedArgsFinished): Promise { + add({ + type: 'command', + guildId: context.guildId, + inDm: context.inDm, + userId: context.user.id, + data: { + args, + interaction_id: context.interactionId + }, + name: context.command.name + }) + } + + async onDmBlocked (context: Interaction.InteractionContext): Promise { return await context.editOrRespond({ - ...((typeof message === 'string') ? { content: message } : message), - allowedMentions: { - parse: [] + content: this.translate('common.dmDisabled'), + flags: MessageFlags.EPHEMERAL + }) + } + + async onPermissionsFail (context: Interaction.InteractionContext, falied: bigint[]): Promise { + const values = Object.entries(Permissions).filter(([key, value]) => falied.includes(BigInt(value))) + await context.editOrRespond({ + content: this.translate('common.permsMissingUser', { + perms: values.map(([key]) => key).join(', ') + }), + flags: MessageFlags.EPHEMERAL + }) + } + + async onPermissionsFailClient (context: Interaction.InteractionContext, falied: bigint[]): Promise { + const values = Object.entries(Permissions).filter(([key, value]) => falied.includes(BigInt(value))) + await context.editOrRespond({ + content: this.translate('common.permsMissingOwn', { + perms: values.map(([key]) => key).join(', ') + }), + flags: MessageFlags.EPHEMERAL + }) + } + + async onRatelimit (context: Interaction.InteractionContext): Promise { + await context.editOrRespond({ + content: this.translate('common.cooldown'), + flags: MessageFlags.EPHEMERAL + }) + } + + async onRunError (context: Interaction.InteractionContext, args: ParsedArgsFinished, err: any): Promise { + const uuid = error(err, context.name, { + user: { + id: context.user.id, + username: context.user.username + }, + contexts: { + guild: { + id: context.guildId, + name: context.guild?.name + }, + command: { + name: context.command.name, + args + } } }) + return await context.editOrRespond({ + content: translate('common.failedToRun', { uuid }), + flags: MessageFlags.EPHEMERAL + }) } } -export class BaseCommandOption extends Interaction.InteractionCommandOption { +export class BaseCommandOption extends OptionBase { type = ApplicationCommandOptionTypes.SUB_COMMAND } -export class BaseCommandOptionGroup extends Interaction.InteractionCommandOption { +export class BaseCommandOptionGroup extends OptionBase { type = ApplicationCommandOptionTypes.SUB_COMMAND_GROUP } diff --git a/src/interactions/slash-commands/8ball.ts b/src/interactions/slash-commands/8ball.ts index 19c1f7e77..0e6e0466f 100644 --- a/src/interactions/slash-commands/8ball.ts +++ b/src/interactions/slash-commands/8ball.ts @@ -1,14 +1,14 @@ import { Interaction } from 'detritus-client' -import { translate, traverse } from '../../utils/i18n' +import { traverse } from '../../utils/i18n' import { BaseSlashCommand } from '../base' export default class EightBallCommand extends BaseSlashCommand { - description = 'Ask the magic 8-ball for advice' name = '8ball' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { - const length = traverse('commands.8ball.choices.length') - await this.safeReply(context, translate('commands.8ball.prefix', { response: translate(`commands.8ball.choices.${Math.floor(Math.random() * length)}`) })) + const length = traverse('slash-commands.8ball.choices.length') + await context.editOrRespond(this.translateThis('prefix', { response: this.translateThis(`choices.${Math.floor(Math.random() * length)}`) })) } } diff --git a/src/interactions/slash-commands/advice.ts b/src/interactions/slash-commands/advice.ts index 674fb1234..7bdeaa04d 100644 --- a/src/interactions/slash-commands/advice.ts +++ b/src/interactions/slash-commands/advice.ts @@ -4,11 +4,11 @@ import fetch from 'node-fetch' import { BaseSlashCommand } from '../base' export default class AdviceCommand extends BaseSlashCommand { - description = 'Get some helpful advice' name = 'advice' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { const advice = await (await fetch('https://api.adviceslip.com/advice')).json() - await this.safeReply(context, advice.slip.advice) + await context.editOrRespond(advice.slip.advice) } } diff --git a/src/interactions/slash-commands/booru/booru.derpibooru.ts b/src/interactions/slash-commands/booru/booru.derpibooru.ts new file mode 100644 index 000000000..7ee6ad207 --- /dev/null +++ b/src/interactions/slash-commands/booru/booru.derpibooru.ts @@ -0,0 +1,99 @@ +import { Interaction } from 'detritus-client' +import { translate } from '../../../utils/i18n' +import { BaseCommandOption } from '../../base' +import fetch from 'node-fetch' +import { Components, Embed, ComponentContext, ComponentButton, ComponentActionRow } from 'detritus-client/lib/utils' +import { MessageComponentButtonStyles, MessageFlags } from 'detritus-client/lib/constants' +import { error } from '../../../utils/logger' + +// no import - messes with tsc (package.json is outside the source dir) +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { version } = require('../../../../package.json') + +export interface CommandArgs { + query: string +} + +export class BooruDerpibooruCommand extends BaseCommandOption { + name = 'derpibooru' + description = 'Query derpibooru.org' + triggerLoadingAfter = 2000 + translationPath = 'booru' + + async onBeforeRun (context: Interaction.InteractionContext): Promise { + if (!context.inDm && !context.channel!.nsfw) { + await context.editOrRespond({ + content: translate('common.nsfwDisabled'), + flags: MessageFlags.EPHEMERAL + }) + return false + } else return true + } + + constructor () { + super({ + options: [ + { + name: 'query', + description: translate('slash-commands.booru.metadata.options.query'), + required: true + } + ] + }) + } + + async run (context: Interaction.InteractionContext | ComponentContext, args: CommandArgs, position: number = 0, data?: any): Promise { + const q = new URLSearchParams({ + q: args.query.split(' ').join('+') + }) + const url = `https://derpibooru.org/api/v1/json/search/images?${q.toString()}` + const json = data ?? await (await fetch(url, { + headers: { + Accept: 'application/json', + 'User-Agent': `wildbeast/${version as string} (+https://github.com/TheSharks/WildBeast)` + } + })).json() + if (json.total === 0) { + await context.editOrRespond(translate('common.noResultsFor', { query: args.query })) + } else { + const post = json.images[position] + const artist: string = post.tags.filter((x: string) => x.startsWith('artist:'))[0].slice('artist:'.length) ?? 'Unknown' + const embed = new Embed() + .setAuthor(artist, 'https://i.imgur.com/f556NmB.png', post.source_url) + .setImage(post.representations.full) + .addField(this.translateThis('score'), `${post.upvotes as string} 👍 ${post.downvotes as string} 👎`, true) + .setFooter('derpibooru.org', 'https://i.imgur.com/f556NmB.png') + const components = new Components({ + timeout: 5 * (60 * 1000), + onTimeout: async () => await context.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }), + onError: (context: ComponentContext, err: Error) => error(err, this.constructor.name) + }) + components.addButton({ + emoji: '◀️', + disabled: position === 0, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position - 1, json) + }) + components.addButton({ + emoji: '▶️', + disabled: position === json.length - 1, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position + 1, json) + }) + components.addButton({ + emoji: '🔀', + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, Math.floor(Math.random() * json.length), json) + }) + components.addButton({ + emoji: '✖️', + style: MessageComponentButtonStyles.DANGER, + run: async (componentContext: ComponentContext) => await componentContext.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }) + }) + const urlButton = new ComponentButton({ + style: MessageComponentButtonStyles.LINK, + label: translate('common.open'), + url: `https://derpibooru.org/images/${post.id as string}` + }) + components.addButton(urlButton) + await context.editOrRespond({ embed, components }) + } + } +} diff --git a/src/interactions/slash-commands/booru/booru.e621.ts b/src/interactions/slash-commands/booru/booru.e621.ts index d4ff250bd..28042b5cd 100644 --- a/src/interactions/slash-commands/booru/booru.e621.ts +++ b/src/interactions/slash-commands/booru/booru.e621.ts @@ -18,13 +18,14 @@ export class BooruE621Command extends BaseCommandOption { name = 'e621' description = 'Query e621' triggerLoadingAfter = 2000 + translationPath = 'booru' constructor () { super({ options: [ { name: 'query', - description: 'What to search for', + description: translate('slash-commands.booru.metadata.options.query'), required: true, async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { const chunks = context.value.split(' ') @@ -63,16 +64,17 @@ export class BooruE621Command extends BaseCommandOption { } })).json() if (json.posts.length === 0) { - await context.editOrRespond(translate('commands.common.noResultsFor', { query: args.query })) + await context.editOrRespond(translate('common.noResultsFor', { query: args.query })) } else { const post = json.posts[position] const artist: string = post.tags.artist.filter((x: string) => !['conditional_dnp'].includes(x))[0] ?? 'Unknown' const embed = new Embed() .setAuthor(artist, 'https://en.wikifur.com/w/images/d/dd/E621Logo.png', artist === 'Unknown' ? undefined : `https://e621.net/artists/show_or_new?name=${encodeURIComponent(artist)}`) .setImage(post.file.url) - .addField('Score', `${post.score.up as string} 👍 ${post.score.down as string} 👎`, true) - .addField('Favorites', post.fav_count, true) - if (context.channel !== null && !context.channel.nsfw) embed.setFooter('Explicit posts excluded - Mark the channel NSFW to enable') + .addField(this.translateThis('score'), `${post.score.up as string} 👍 ${post.score.down as string} 👎`, true) + .addField(this.translateThis('favorites'), post.fav_count, true) + if (context.channel !== null && !context.channel.nsfw) embed.setFooter('e926.net - NSFW disabled', 'https://en.wikifur.com/w/images/d/dd/E621Logo.png') + else embed.setFooter('e621.net', 'https://en.wikifur.com/w/images/d/dd/E621Logo.png') const components = new Components({ timeout: 5 * (60 * 1000), onTimeout: async () => await context.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }), @@ -90,7 +92,6 @@ export class BooruE621Command extends BaseCommandOption { }) components.addButton({ emoji: '🔀', - disabled: position === json.posts.length - 1, run: async (componentContext: ComponentContext) => await this.run(componentContext, args, Math.floor(Math.random() * json.posts.length), json) }) components.addButton({ @@ -98,15 +99,12 @@ export class BooruE621Command extends BaseCommandOption { style: MessageComponentButtonStyles.DANGER, run: async (componentContext: ComponentContext) => await componentContext.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }) }) - // workaround: detritus sets customIds even when its not needed const urlButton = new ComponentButton({ style: MessageComponentButtonStyles.LINK, - label: translate('commands.common.open'), + label: translate('common.open'), url: `https://e621.net/posts/${post.id as string}` }) - delete urlButton.customId components.addButton(urlButton) - // end workaround await context.editOrRespond({ embed, components }) } } diff --git a/src/interactions/slash-commands/booru/booru.gelbooru.ts b/src/interactions/slash-commands/booru/booru.gelbooru.ts new file mode 100644 index 000000000..ec6e8e89f --- /dev/null +++ b/src/interactions/slash-commands/booru/booru.gelbooru.ts @@ -0,0 +1,102 @@ +import { Interaction } from 'detritus-client' +import { translate } from '../../../utils/i18n' +import { BaseCommandOption } from '../../base' +import fetch from 'node-fetch' +import { Components, Embed, ComponentContext, ComponentButton, ComponentActionRow } from 'detritus-client/lib/utils' +import { MessageComponentButtonStyles, MessageFlags } from 'detritus-client/lib/constants' +import { error } from '../../../utils/logger' + +// no import - messes with tsc (package.json is outside the source dir) +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { version } = require('../../../../package.json') + +export interface CommandArgs { + query: string +} + +export class BooruGelbooruCommand extends BaseCommandOption { + name = 'gelbooru' + description = 'Query gelbooru.com' + triggerLoadingAfter = 2000 + translationPath = 'booru' + + async onBeforeRun (context: Interaction.InteractionContext): Promise { + if (!context.inDm && !context.channel!.nsfw) { + await context.editOrRespond({ + content: translate('common.nsfwDisabled'), + flags: MessageFlags.EPHEMERAL + }) + return false + } else return true + } + + constructor () { + super({ + options: [ + { + name: 'query', + description: translate('slash-commands.booru.metadata.options.query'), + required: true + } + ] + }) + } + + async run (context: Interaction.InteractionContext | ComponentContext, args: CommandArgs, position: number = 0, data?: any): Promise { + const q = new URLSearchParams({ + limit: '250', + tags: args.query.split(' ').join('+'), + page: 'dapi', + json: '1', + s: 'post', + q: 'index' + }) + const url = `https://gelbooru.com/index.php?${q.toString()}` + const json = data ?? await (await fetch(url, { + headers: { + Accept: 'application/json', + 'User-Agent': `wildbeast/${version as string} (+https://github.com/TheSharks/WildBeast)` + } + })).json() + if (json.length === 0) { + await context.editOrRespond(translate('common.noResultsFor', { query: args.query })) + } else { + const post = json[position] + const embed = new Embed() + .setImage(post.file_url) + .addField(this.translateThis('score'), post.score, true) + .setFooter('gelbooru.com') + const components = new Components({ + timeout: 5 * (60 * 1000), + onTimeout: async () => await context.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }), + onError: (context: ComponentContext, err: Error) => error(err, this.constructor.name) + }) + components.addButton({ + emoji: '◀️', + disabled: position === 0, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position - 1, json) + }) + components.addButton({ + emoji: '▶️', + disabled: position === json.length - 1, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position + 1, json) + }) + components.addButton({ + emoji: '🔀', + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, Math.floor(Math.random() * json.length), json) + }) + components.addButton({ + emoji: '✖️', + style: MessageComponentButtonStyles.DANGER, + run: async (componentContext: ComponentContext) => await componentContext.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }) + }) + const urlButton = new ComponentButton({ + style: MessageComponentButtonStyles.LINK, + label: translate('common.open'), + url: `https://gelbooru.com/index.php?page=post&s=view&id=${post.id as string}` + }) + components.addButton(urlButton) + await context.editOrRespond({ embed, components }) + } + } +} diff --git a/src/interactions/slash-commands/booru/booru.rule34.ts b/src/interactions/slash-commands/booru/booru.rule34.ts new file mode 100644 index 000000000..1207619f2 --- /dev/null +++ b/src/interactions/slash-commands/booru/booru.rule34.ts @@ -0,0 +1,125 @@ +import { Interaction } from 'detritus-client' +import { translate } from '../../../utils/i18n' +import { BaseCommandOption } from '../../base' +import fetch from 'node-fetch' +import { Components, Embed, ComponentContext, ComponentButton, ComponentActionRow } from 'detritus-client/lib/utils' +import { MessageComponentButtonStyles, MessageFlags } from 'detritus-client/lib/constants' +import { error } from '../../../utils/logger' + +// no import - messes with tsc (package.json is outside the source dir) +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { version } = require('../../../../package.json') + +export interface CommandArgs { + query: string +} + +export class BooruRule34Command extends BaseCommandOption { + name = 'r34' + description = 'If it exists...' + triggerLoadingAfter = 2000 + translationPath = 'booru' + + async onBeforeRun (context: Interaction.InteractionContext): Promise { + if (!context.inDm && !context.channel!.nsfw) { + await context.editOrRespond({ + content: translate('common.nsfwDisabled'), + flags: MessageFlags.EPHEMERAL + }) + return false + } else return true + } + + constructor () { + super({ + options: [ + { + name: 'query', + description: translate('slash-commands.booru.metadata.options.query'), + required: true, + async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { + const chunks = context.value.split(' ') + const search = chunks.pop() + if (search === undefined || search.length < 1) await context.respond({ choices: [] }) + const q = new URLSearchParams({ + q: search! + }) + const url = `https://rule34.xxx/autocomplete.php?${q.toString()}` + const json = await (await fetch(url, { + headers: { + Accept: 'application/json', + 'User-Agent': `wildbeast/${version as string} (+https://github.com/TheSharks/WildBeast)` + } + })).json() + const choices = json.map((x: {value: string}) => ({ name: `${chunks.join(' ')} ${x.value}`.trim(), value: `${chunks.join(' ')} ${x.value}`.trim() })) + await context.respond({ choices }) + } + + } + ] + }) + } + + async run (context: Interaction.InteractionContext | ComponentContext, args: CommandArgs, position: number = 0, data?: any): Promise { + const q = new URLSearchParams({ + limit: '250', + tags: args.query.split(' ').join('+'), + page: 'dapi', + json: '1', + s: 'post', + q: 'index' + }) + const url = `https://api.rule34.xxx/index.php?${q.toString()}` + if (data === undefined) { + const http = await fetch(url, { + headers: { + Accept: 'application/json', + 'User-Agent': `wildbeast/${version as string} (+https://github.com/TheSharks/WildBeast)` + } + }) + const text = await http.clone().text() + if (text.length < 1) { + await context.editOrRespond(translate('common.noResultsFor', { query: args.query })) + return + } else { + data = await http.json() + } + } + const post = data[position] + const embed = new Embed() + .setImage(post.file_url) + .addField(this.translateThis('score'), post.score, true) + .setFooter('rule34.xxx') + const components = new Components({ + timeout: 5 * (60 * 1000), + onTimeout: async () => await context.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }), + onError: (context: ComponentContext, err: Error) => error(err, this.constructor.name) + }) + components.addButton({ + emoji: '◀️', + disabled: position === 0, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position - 1, data) + }) + components.addButton({ + emoji: '▶️', + disabled: position === data.length - 1, + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, position + 1, data) + }) + components.addButton({ + emoji: '🔀', + run: async (componentContext: ComponentContext) => await this.run(componentContext, args, Math.floor(Math.random() * data.length), data) + }) + components.addButton({ + emoji: '✖️', + style: MessageComponentButtonStyles.DANGER, + run: async (componentContext: ComponentContext) => await componentContext.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }) + }) + const urlButton = new ComponentButton({ + style: MessageComponentButtonStyles.LINK, + label: translate('common.open'), + url: `https://rule34.xxx/index.php?page=post&s=view&id=${post.id as string}` + }) + components.addButton(urlButton) + await context.editOrRespond({ embed, components }) + } +} diff --git a/src/interactions/slash-commands/booru/index.ts b/src/interactions/slash-commands/booru/index.ts index 43e14c296..9f3f0e7fd 100644 --- a/src/interactions/slash-commands/booru/index.ts +++ b/src/interactions/slash-commands/booru/index.ts @@ -1,14 +1,20 @@ import { BaseSlashCommand } from '../../base' +import { BooruDerpibooruCommand } from './booru.derpibooru' import { BooruE621Command } from './booru.e621' +// import { BooruGelbooruCommand } from './booru.gelbooru' +import { BooruRule34Command } from './booru.rule34' export default class BooruBaseCommand extends BaseSlashCommand { - description = '.' // not shown + description = 'Query various image boards for images' name = 'booru' constructor () { super({ options: [ - new BooruE621Command() + new BooruE621Command(), + new BooruRule34Command(), + // new BooruGelbooruCommand(), + new BooruDerpibooruCommand() ] }) } diff --git a/src/interactions/slash-commands/cat.ts b/src/interactions/slash-commands/cat.ts index 1c3bd257c..fe6910601 100644 --- a/src/interactions/slash-commands/cat.ts +++ b/src/interactions/slash-commands/cat.ts @@ -6,7 +6,7 @@ import { BaseSlashCommand } from '../base' export default class RandomCatCommand extends BaseSlashCommand { name = 'cat' - description = 'Sends a random cat image' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext | ComponentContext): Promise { const components = new Components({ @@ -23,7 +23,7 @@ export default class RandomCatCommand extends BaseSlashCommand { const embed = new Embed() .setDescription(fact) .setImage(`https://cataas.com/cat?${context.interaction.id}`) // cache busting - .setFooter('Powered by cataas.com') + .setFooter('cataas.com') await context.editOrRespond({ embed, components diff --git a/src/interactions/slash-commands/dice.ts b/src/interactions/slash-commands/dice.ts index 7e46e7d48..1965601c1 100644 --- a/src/interactions/slash-commands/dice.ts +++ b/src/interactions/slash-commands/dice.ts @@ -1,5 +1,6 @@ import { Interaction } from 'detritus-client' import { ApplicationCommandOptionTypes } from 'detritus-client/lib/constants' +import { translate } from '../../utils/i18n' import { BaseSlashCommand } from '../base' @@ -9,8 +10,8 @@ export interface CommandArgs { } export default class DiceCommand extends BaseSlashCommand { - description = 'Roll some dice' name = 'dice' + description = this.translateThis('metadata.description') constructor () { super({ @@ -18,13 +19,13 @@ export default class DiceCommand extends BaseSlashCommand { { type: ApplicationCommandOptionTypes.INTEGER, name: 'dice', - description: 'The number of dice to roll (default: 1)', + description: translate('slash-commands.dice.metadata.options.dice'), required: false }, { type: ApplicationCommandOptionTypes.INTEGER, name: 'sides', - description: 'The number of sides on the dice (default: 6)', + description: translate('slash-commands.dice.metadata.options.sides'), required: false } ] @@ -41,6 +42,11 @@ export default class DiceCommand extends BaseSlashCommand { total += Math.floor(Math.random() * diceSides) + 1 } - await this.safeReply(context, `${context.user.username} rolled ${diceCount}d${diceSides} and got ${total}`) + await context.editOrRespond(this.translateThis('response', { + username: context.user.username, + diceCount, + diceSides, + total + })) } } diff --git a/src/interactions/slash-commands/dog.ts b/src/interactions/slash-commands/dog.ts index d3610553d..590602ff4 100644 --- a/src/interactions/slash-commands/dog.ts +++ b/src/interactions/slash-commands/dog.ts @@ -6,7 +6,7 @@ import { BaseSlashCommand } from '../base' export default class RandomDogCommand extends BaseSlashCommand { name = 'dog' - description = 'Sends a random dog image' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext | ComponentContext): Promise { const components = new Components({ diff --git a/src/interactions/slash-commands/info.ts b/src/interactions/slash-commands/info.ts index 405b9cc40..471e16f01 100644 --- a/src/interactions/slash-commands/info.ts +++ b/src/interactions/slash-commands/info.ts @@ -1,6 +1,5 @@ import { Interaction } from 'detritus-client' import { Embed } from 'detritus-client/lib/utils' -import { translate } from '../../utils/i18n' import { BaseSlashCommand } from '../base' @@ -11,8 +10,8 @@ import { MessageFlags } from 'detritus-client/lib/constants' const { version } = require('../../../package.json') export default class InfoCommand extends BaseSlashCommand { - description = 'Get information about the bot' name = 'info' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { let owner @@ -24,19 +23,19 @@ export default class InfoCommand extends BaseSlashCommand { const uptime = sub(new Date(), { seconds: process.uptime() }) const embed = new Embed() .setTitle('Info') - .addField(translate('commands.info.guilds'), `${context.client.guilds.size}`, true) - .addField(translate('commands.info.uptime'), ``, true) - .addField(translate('commands.info.shard'), `${context.client.shardId}/${context.client.shardCount}`, true) - .addField(translate('commands.info.owner'), `${owner.username}#${owner.discriminator}`, true) - .addField(translate('commands.info.version'), `v${version as string}`, true) - .addField(translate('commands.info.node'), `${process.version}`, true) - .addField(translate('commands.info.os'), `${process.platform}`, true) - .addField(translate('commands.info.ram'), `${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB`, true) - .addField(translate('commands.info.cpu'), `${Math.round(process.cpuUsage().user / 1000 / 1000)}%`, true) + .addField(this.translateThis('guilds'), `${context.client.guilds.size}`, true) + .addField(this.translateThis('uptime'), ``, true) + .addField(this.translateThis('shard'), `${context.client.shardId}/${context.client.shardCount}`, true) + .addField(this.translateThis('owner'), `${owner.username}#${owner.discriminator}`, true) + .addField(this.translateThis('version'), `v${version as string}`, true) + .addField(this.translateThis('node'), `${process.version}`, true) + .addField(this.translateThis('os'), `${process.platform}`, true) + .addField(this.translateThis('ram'), `${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB`, true) + .addField(this.translateThis('cpu'), `${Math.round(process.cpuUsage().user / 1000 / 1000)}%`, true) .setColor(0x00AE86) .setThumbnail(context.client.user!.avatarUrl) - .setFooter(`${context.client.user!.username} - ${translate('commands.info.poweredBy')}`) - await this.safeReply(context, { + .setFooter(`${context.client.user!.username} - ${this.translateThis('poweredBy')}`) + await context.editOrRespond({ embed, flags: MessageFlags.EPHEMERAL }) diff --git a/src/interactions/slash-commands/inspire.ts b/src/interactions/slash-commands/inspire.ts index ea9e16dd9..b9a34b254 100644 --- a/src/interactions/slash-commands/inspire.ts +++ b/src/interactions/slash-commands/inspire.ts @@ -8,19 +8,19 @@ import { BaseSlashCommand } from '../base' export default class InspirobotCommand extends BaseSlashCommand { name = 'inspire' - description = 'Get a random quote from inspirobot.com' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { const url = await (await fetch('https://inspirobot.me/api?generate=true')).text() try { const ctx = new URL(url) - await this.safeReply(context, { + await context.editOrRespond({ embed: { image: { url: ctx.href }, footer: { - text: 'Powered by inspirobot.me', + text: 'inspirobot.me', iconUrl: 'https://inspirobot.me/website/images/inspirobot-dark-green.png' }, color: 0x1a6607 @@ -29,7 +29,7 @@ export default class InspirobotCommand extends BaseSlashCommand { } catch (e) { error(e, this.constructor.name) await context.editOrRespond({ - content: translate('commands.common.softFail'), + content: translate('common.softFail'), flags: MessageFlags.EPHEMERAL }) } diff --git a/src/interactions/slash-commands/invite.ts b/src/interactions/slash-commands/invite.ts index fddd0ac6d..ebb5c92cf 100644 --- a/src/interactions/slash-commands/invite.ts +++ b/src/interactions/slash-commands/invite.ts @@ -1,17 +1,16 @@ import { Interaction } from 'detritus-client' import { MessageFlags } from 'detritus-client/lib/constants' -import { translate } from '../../utils/i18n' import { BaseSlashCommand } from '../base' export default class InviteCommand extends BaseSlashCommand { - description = 'Get an invite link for the bot' name = 'invite' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { if (process.env.WILDBEAST_INVITE_OVERRIDE !== undefined) { - await this.safeReply(context, { - content: translate('commands.invite.done', { + await context.editOrRespond({ + content: this.translateThis('done', { invite: process.env.WILDBEAST_INVITE_OVERRIDE }), flags: MessageFlags.EPHEMERAL @@ -21,24 +20,24 @@ export default class InviteCommand extends BaseSlashCommand { if (!context.client.application!.botPublic) { if (context.client.application!.team !== undefined) { const teamowner = context.client.application!.team.owner! - await this.safeReply(context, { - content: translate('commands.invite.private', { + await context.editOrRespond({ + content: this.translateThis('private', { owner: `${teamowner.username}#${teamowner.discriminator}` }), flags: MessageFlags.EPHEMERAL }) } else { const owner = context.client.application!.owner - await this.safeReply(context, { - content: translate('commands.invite.private', { + await context.editOrRespond({ + content: this.translateThis('private', { owner: `${owner.username}#${owner.discriminator}` }), flags: MessageFlags.EPHEMERAL }) } } else { - await this.safeReply(context, { - content: translate('commands.invite.done', { + await context.editOrRespond({ + content: this.translateThis('done', { invite: `https://discordapp.com/oauth2/authorize?&client_id=${context.client.application!.id}&scope=bot%20applications.commands` }), flags: MessageFlags.EPHEMERAL diff --git a/src/interactions/slash-commands/meme.ts b/src/interactions/slash-commands/meme.ts new file mode 100644 index 000000000..3a4420f97 --- /dev/null +++ b/src/interactions/slash-commands/meme.ts @@ -0,0 +1,47 @@ +import { Interaction } from 'detritus-client' +import { MessageComponentButtonStyles } from 'detritus-client/lib/constants' +import { ComponentActionRow, ComponentButton, ComponentContext, Components, Embed } from 'detritus-client/lib/utils' +import fetch from 'node-fetch' +import { translate } from '../../utils/i18n' +import { error } from '../../utils/logger' + +import { BaseSlashCommand } from '../base' + +export default class RandomMemeCommand extends BaseSlashCommand { + name = 'meme' + description = this.translateThis('metadata.description') + triggerLoadingAfter = 2000 + + async run (context: Interaction.InteractionContext | ComponentContext): Promise { + const res = await fetch('https://reddit.com/r/memes/random.json') + const json = await res.json() + const post = json[0].data.children[0].data + + const embed = new Embed() + .setTitle(post.title) + .setImage(post.url) + .addField('👍', post.score, true) + .addField('💬', post.num_comments, true) + .setTimestamp(post.created_utc * 1000) + .setFooter(post.subreddit_name_prefixed, 'https://www.redditinc.com/assets/images/site/reddit-logo.png') + .setColor(0xff4500) + + const components = new Components({ + timeout: 5 * (60 * 1000), + onTimeout: async () => await context.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }), + onError: (context: ComponentContext, err: Error) => error(err, this.constructor.name) + }) + components.addButton({ + emoji: '🔄', + run: async (componentContext: ComponentContext) => await this.run(componentContext) + }) + const urlButton = new ComponentButton({ + style: MessageComponentButtonStyles.LINK, + label: translate('common.open'), + url: `https://reddit.com${post.permalink as string}` + }) + components.addButton(urlButton) + + await context.editOrRespond({ embed, components }) + } +} diff --git a/src/interactions/slash-commands/ping.ts b/src/interactions/slash-commands/ping.ts index d8e081a0d..7adb74ea2 100644 --- a/src/interactions/slash-commands/ping.ts +++ b/src/interactions/slash-commands/ping.ts @@ -3,11 +3,11 @@ import { Interaction } from 'detritus-client' import { BaseSlashCommand } from '../base' export default class PingCommand extends BaseSlashCommand { - description = 'Ping' name = 'ping' + description = this.translateThis('metadata.description') async run (context: Interaction.InteractionContext): Promise { const { gateway, rest } = await context.client.ping() - return await this.safeReply(context, `Pong! (gateway: ${gateway}ms) (rest: ${rest}ms)`) + await context.editOrRespond(`Pong! (gateway: ${gateway}ms) (rest: ${rest}ms)`) } } diff --git a/src/interactions/slash-commands/tag/index.ts b/src/interactions/slash-commands/tag/index.ts index 3de05ced1..109f99d83 100644 --- a/src/interactions/slash-commands/tag/index.ts +++ b/src/interactions/slash-commands/tag/index.ts @@ -2,10 +2,11 @@ import { BaseSlashCommand } from '../../base' import { CreateTagCommand } from './tag.create' import { DeleteTagCommand } from './tag.delete' import { EditTagCommand } from './tag.edit' +import { TagInfoCommand } from './tag.info' import { ShowTagCommand } from './tag.show' export default class TagBaseCommand extends BaseSlashCommand { - description = '.' // not shown + description = 'Create and manage tags' name = 'tag' constructor () { @@ -14,7 +15,8 @@ export default class TagBaseCommand extends BaseSlashCommand { new CreateTagCommand(), new EditTagCommand(), new ShowTagCommand(), - new DeleteTagCommand() + new DeleteTagCommand(), + new TagInfoCommand() ] }) } diff --git a/src/interactions/slash-commands/tag/tag.create.ts b/src/interactions/slash-commands/tag/tag.create.ts index 58aa029b7..02a431654 100644 --- a/src/interactions/slash-commands/tag/tag.create.ts +++ b/src/interactions/slash-commands/tag/tag.create.ts @@ -13,7 +13,8 @@ export interface CommandArgs { export class CreateTagCommand extends BaseCommandOption { name = 'create' - description = 'Create a new tag' + translationPath = 'tag' + description = this.translateThis('metadata.descriptions.create') disableDm = true constructor () { @@ -21,12 +22,12 @@ export class CreateTagCommand extends BaseCommandOption { options: [ { name: 'name', - description: 'The name of the tag', + description: translate('slash-commands.tag.metadata.options.name'), required: true }, { name: 'content', - description: 'The content of the tag', + description: translate('slash-commands.tag.metadata.options.content'), required: true } ] @@ -37,7 +38,7 @@ export class CreateTagCommand extends BaseCommandOption { try { await driver`INSERT INTO tags (name, content, owner, guild) VALUES (${args.name}, ${args.content}, ${context.userId}, ${context.guildId!})` await context.editOrRespond({ - content: translate('commands.tag.created'), + content: this.translateThis('created'), embed: { title: args.name, description: args.content, @@ -49,14 +50,14 @@ export class CreateTagCommand extends BaseCommandOption { if (e instanceof PostgresError) { if (e.code === '23505') { await context.editOrRespond({ - content: translate('commands.tag.errors.conflict'), + content: this.translateThis('errors.conflict'), flags: MessageFlags.EPHEMERAL }) } } else { error(e, this.constructor.name) await context.editOrRespond({ - content: translate('commands.common.softFail'), + content: translate('common.softFail'), flags: MessageFlags.EPHEMERAL }) } diff --git a/src/interactions/slash-commands/tag/tag.delete.ts b/src/interactions/slash-commands/tag/tag.delete.ts index 63046eaa8..9266695a2 100644 --- a/src/interactions/slash-commands/tag/tag.delete.ts +++ b/src/interactions/slash-commands/tag/tag.delete.ts @@ -1,6 +1,7 @@ import { Interaction } from 'detritus-client' import { MessageFlags } from 'detritus-client/lib/constants' import driver from '../../../database/driver' +import { Tag } from '../../../database/models/Tag' import { translate } from '../../../utils/i18n' import { error } from '../../../utils/logger' import { BaseCommandOption } from '../../base' @@ -11,7 +12,8 @@ export interface CommandArgs { export class DeleteTagCommand extends BaseCommandOption { name = 'delete' - description = 'Delete a tag you own' + translationPath = 'tag' + description = this.translateThis('metadata.descriptions.delete') disableDm = true constructor () { @@ -19,11 +21,11 @@ export class DeleteTagCommand extends BaseCommandOption { options: [ { name: 'name', - description: 'The name of the tag', + description: translate('slash-commands.tag.metadata.options.name'), required: true, async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { const search = `${context.value}%` - const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` + const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` as Tag[] const choices = hits.map((value) => ({ name: value.name, value: value.name })) await context.respond({ choices }) } @@ -33,10 +35,10 @@ export class DeleteTagCommand extends BaseCommandOption { } async onBeforeRun (context: Interaction.InteractionContext, args: CommandArgs): Promise { - const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` + const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` as Tag[] if (tag.length === 0) { await context.editOrRespond({ - content: translate('commands.tag.notFound'), + content: this.translateThis('errors.notFound'), flags: MessageFlags.EPHEMERAL }) return false @@ -47,13 +49,13 @@ export class DeleteTagCommand extends BaseCommandOption { try { await driver`DELETE FROM tags WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` await context.editOrRespond({ - content: translate('commands.tag.deleted'), + content: this.translateThis('deleted'), flags: MessageFlags.EPHEMERAL }) } catch (e) { error(e, this.constructor.name) await context.editOrRespond({ - content: translate('commands.common.softFail'), + content: translate('common.softFail'), flags: MessageFlags.EPHEMERAL }) } diff --git a/src/interactions/slash-commands/tag/tag.edit.ts b/src/interactions/slash-commands/tag/tag.edit.ts index 77e3021d9..2e260a996 100644 --- a/src/interactions/slash-commands/tag/tag.edit.ts +++ b/src/interactions/slash-commands/tag/tag.edit.ts @@ -1,6 +1,7 @@ import { Interaction } from 'detritus-client' import { MessageFlags } from 'detritus-client/lib/constants' import driver from '../../../database/driver' +import { Tag } from '../../../database/models/Tag' import { translate } from '../../../utils/i18n' import { error } from '../../../utils/logger' import { BaseCommandOption } from '../../base' @@ -12,7 +13,8 @@ export interface CommandArgs { export class EditTagCommand extends BaseCommandOption { name = 'edit' - description = 'Edit a tag you own' + translationPath = 'tag' + description = this.translateThis('metadata.descriptions.edit') disableDm = true constructor () { @@ -20,18 +22,18 @@ export class EditTagCommand extends BaseCommandOption { options: [ { name: 'name', - description: 'The name of the tag', + description: translate('slash-commands.tag.metadata.options.name'), required: true, async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { const search = `${context.value}%` - const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` + const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` as Tag[] const choices = hits.map((value) => ({ name: value.name, value: value.name })) await context.respond({ choices }) } }, { name: 'content', - description: 'The content of the tag', + description: translate('slash-commands.tag.metadata.options.content'), required: true } ] @@ -39,10 +41,10 @@ export class EditTagCommand extends BaseCommandOption { } async onBeforeRun (context: Interaction.InteractionContext, args: CommandArgs): Promise { - const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` + const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` as Tag[] if (tag.length === 0) { await context.editOrRespond({ - content: translate('commands.tag.notFound'), + content: this.translateThis('errors.notFound'), flags: MessageFlags.EPHEMERAL }) return false @@ -51,9 +53,9 @@ export class EditTagCommand extends BaseCommandOption { async run (context: Interaction.InteractionContext, args: CommandArgs): Promise { try { - await driver`UPDATE tags SET content = ${args.content} WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` + await driver`UPDATE tags SET content = ${args.content}, updated_at = NOW() WHERE name = ${args.name} AND owner = ${context.userId} AND guild = ${context.guildId!}` await context.editOrRespond({ - content: translate('commands.tag.edited'), + content: this.translateThis('edited'), embed: { title: args.name, description: args.content, @@ -64,7 +66,7 @@ export class EditTagCommand extends BaseCommandOption { } catch (e) { error(e, this.constructor.name) await context.editOrRespond({ - content: translate('commands.common.softFail'), + content: translate('common.softFail'), flags: MessageFlags.EPHEMERAL }) } diff --git a/src/interactions/slash-commands/tag/tag.info.ts b/src/interactions/slash-commands/tag/tag.info.ts new file mode 100644 index 000000000..3672c00ab --- /dev/null +++ b/src/interactions/slash-commands/tag/tag.info.ts @@ -0,0 +1,90 @@ +import { Interaction } from 'detritus-client' +import { MessageFlags } from 'detritus-client/lib/constants' +import driver from '../../../database/driver' +import { Tag } from '../../../database/models/Tag' +import { translate } from '../../../utils/i18n' +import { error } from '../../../utils/logger' +import { BaseCommandOption } from '../../base' + +export interface CommandArgs { + name: string + args?: string +} + +export class TagInfoCommand extends BaseCommandOption { + name = 'info' + translationPath = 'tag' + description = this.translateThis('metadata.descriptions.info') + disableDm = true + + constructor () { + super({ + options: [ + { + name: 'name', + description: translate('slash-commands.tag.metadata.options.name'), + required: true, + async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { + const search = `${context.value}%` + const hits = await driver`SELECT name FROM tags WHERE guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` + const choices = hits.map((value) => ({ name: value.name, value: value.name })) + await context.respond({ choices }) + } + } + ] + }) + } + + async onBeforeRun (context: Interaction.InteractionContext, args: CommandArgs): Promise { + const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!}` + if (tag.length === 0) { + await context.editOrRespond({ + content: this.translateThis('errors.notFound'), + flags: MessageFlags.EPHEMERAL + }) + return false + } return true + } + + async run (context: Interaction.InteractionContext, args: CommandArgs): Promise { + try { + const tag = (await driver`SELECT name, content, owner, created_at, updated_at, uses FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!} LIMIT 1`)[0] as Tag + const ranking = (await driver`SELECT name FROM tags WHERE guild = ${context.guildId!} ORDER BY uses DESC`).map((value) => value.name) + const owner = await context.client.rest.fetchUser(tag.owner) + await context.editOrRespond({ + embed: { + title: args.name, + description: tag.content, + color: 0x00ff00, + author: { + name: owner.username, + iconUrl: owner.avatarUrl + }, + fields: [ + { + name: this.translateThis('created'), + value: ``, + inline: true + }, + { + name: this.translateThis('updated'), + value: ``, + inline: true + }, + { + name: this.translateThis('ranking'), + value: `Used ${tag.uses} times, ${ranking.indexOf(args.name) + 1}/${ranking.length}`, + inline: true + } + ] + } + }) + } catch (e) { + error(e, this.constructor.name) + await context.editOrRespond({ + content: translate('common.softFail'), + flags: MessageFlags.EPHEMERAL + }) + } + } +} diff --git a/src/interactions/slash-commands/tag/tag.show.ts b/src/interactions/slash-commands/tag/tag.show.ts index 4c901aa68..e4a4573a1 100644 --- a/src/interactions/slash-commands/tag/tag.show.ts +++ b/src/interactions/slash-commands/tag/tag.show.ts @@ -2,6 +2,7 @@ import Parser from '@thesharks/jagtag-js' import { Interaction } from 'detritus-client' import { MessageFlags } from 'detritus-client/lib/constants' import driver from '../../../database/driver' +import { Tag } from '../../../database/models/Tag' import { translate } from '../../../utils/i18n' import { error } from '../../../utils/logger' import { BaseCommandOption } from '../../base' @@ -13,7 +14,8 @@ export interface CommandArgs { export class ShowTagCommand extends BaseCommandOption { name = 'show' - description = 'Show a tag' + translationPath = 'tag' + description = this.translateThis('metadata.descriptions.show') disableDm = true constructor () { @@ -21,18 +23,18 @@ export class ShowTagCommand extends BaseCommandOption { options: [ { name: 'name', - description: 'The name of the tag', + description: translate('slash-commands.tag.metadata.options.name'), required: true, async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { const search = `${context.value}%` - const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` + const hits = await driver`SELECT name FROM tags WHERE owner = ${context.userId} AND guild = ${context.guildId!} AND name LIKE ${search} ORDER BY name LIMIT 10` as Tag[] const choices = hits.map((value) => ({ name: value.name, value: value.name })) await context.respond({ choices }) } }, { name: 'args', - description: 'Arguments to pass to the tag', + description: translate('slash-commands.tag.metadata.options.args'), required: false } ] @@ -40,10 +42,10 @@ export class ShowTagCommand extends BaseCommandOption { } async onBeforeRun (context: Interaction.InteractionContext, args: CommandArgs): Promise { - const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!}` + const tag = await driver`SELECT name FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!}` as Tag[] if (tag.length === 0) { await context.editOrRespond({ - content: translate('commands.tag.errors.notFound'), + content: this.translateThis('errors.notFound'), flags: MessageFlags.EPHEMERAL }) return false @@ -52,7 +54,7 @@ export class ShowTagCommand extends BaseCommandOption { async run (context: Interaction.InteractionContext, args: CommandArgs): Promise { try { - const tag = await driver`SELECT content FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!} LIMIT 1` + const tag = await driver`SELECT content FROM tags WHERE name = ${args.name} AND guild = ${context.guildId!} LIMIT 1` as Tag[] const content = tag[0].content await context.editOrRespond({ content: Parser(content, { @@ -62,10 +64,11 @@ export class ShowTagCommand extends BaseCommandOption { channel: context.channel }) }) + await driver`UPDATE tags SET uses = uses + 1 WHERE name = ${args.name} AND guild = ${context.guildId!}` } catch (e) { error(e, this.constructor.name) await context.editOrRespond({ - content: translate('commands.common.softFail'), + content: translate('common.softFail'), flags: MessageFlags.EPHEMERAL }) } diff --git a/src/interactions/slash-commands/urbandictionary.ts b/src/interactions/slash-commands/urbandictionary.ts index e9167f22d..202c4de15 100644 --- a/src/interactions/slash-commands/urbandictionary.ts +++ b/src/interactions/slash-commands/urbandictionary.ts @@ -12,15 +12,15 @@ export interface CommandArgs { } export default class UrbanDictionaryCommand extends BaseSlashCommand { - description = 'Search Urban Dictionary' name = 'urbandictionary' + description = this.translateThis('metadata.description') constructor () { super({ options: [ { name: 'query', - description: 'What to search for', + description: translate('slash-commands.urbandictionary.metadata.options.query'), required: true, async onAutoComplete (context: Interaction.InteractionAutoCompleteContext): Promise { const hits = await (await fetch(`https://api.urbandictionary.com/v0/autocomplete?term=${context.value}`, { @@ -44,7 +44,7 @@ export default class UrbanDictionaryCommand extends BaseSlashCommand { } })).json() if (json.list.length === 0) { - await context.editOrRespond(translate('commands.urbandictionary.errors.notFound')) + await context.editOrRespond(this.translateThis('errors.notFound')) } else { const post = json.list[position] const embed = new Embed() @@ -53,7 +53,7 @@ export default class UrbanDictionaryCommand extends BaseSlashCommand { .setTitle(post.word) .setUrl(post.permalink) .setDescription(stylize(post.definition)) - .addField(translate('commands.urbandictionary.example'), post.example?.length > 0 ? stylize(post.example) : translate('commands.urbandictionary.noExample')) + .addField(this.translateThis('example'), post.example?.length > 0 ? stylize(post.example) : this.translateThis('noExample')) .addField('👍', post.thumbs_up, true) .addField('👎', post.thumbs_down, true) const components = new Components({ @@ -73,7 +73,6 @@ export default class UrbanDictionaryCommand extends BaseSlashCommand { }) components.addButton({ emoji: '🔀', - disabled: position === json.list.length - 1, run: async (componentContext: ComponentContext) => await this.run(componentContext, args, Math.floor(Math.random() * json.list.length), json) }) components.addButton({ @@ -81,15 +80,12 @@ export default class UrbanDictionaryCommand extends BaseSlashCommand { style: MessageComponentButtonStyles.DANGER, run: async (componentContext: ComponentContext) => await componentContext.editOrRespond({ components: [new ComponentActionRow({ components: [urlButton] })] }) }) - // workaround: detritus sets customIds even when its not needed const urlButton = new ComponentButton({ style: MessageComponentButtonStyles.LINK, - label: translate('commands.common.open'), + label: translate('common.open'), url: post.permalink }) - delete urlButton.customId components.addButton(urlButton) - // end workaround await context.editOrRespond({ embed, components }) } } diff --git a/src/jobs/base.ts b/src/jobs/base.ts new file mode 100644 index 000000000..bf23f718d --- /dev/null +++ b/src/jobs/base.ts @@ -0,0 +1,69 @@ +import { jobs } from '../cache' +import { debug } from '../utils/logger' + +type JobFunction = () => Promise + +export class Job { + lastRun: number | null = null + jobFn: JobFunction + constructor (public name: string, jobFn?: JobFunction) { + this.name = name + this.jobFn = jobFn ?? (async () => await Promise.resolve()) + if (jobs.has(name)) { + throw new Error(`Job ${name} already exists`) + } + jobs.set(name, this) + } + + async run (): Promise { + debug(`Running job ${this.name}`, 'Jobs') + this.lastRun = Date.now() + await this.jobFn() + debug(`Finished job ${this.name}`, 'Jobs') + } + + setExec (jobFn: JobFunction): this { + this.jobFn = jobFn + return this + } +} + +export class ScheduledJob extends Job { + nextRun: number | null = null + interval: number | undefined = undefined + _interval: NodeJS.Timer | null = null + constructor (name: string, interval?: number, jobFn?: JobFunction) { + super(name, jobFn) + this.interval = interval + } + + get running (): boolean { + return this._interval !== null + } + + setInterval (interval: number): this { + this.interval = interval + return this + } + + start (): this { + if (this.interval === undefined) { + throw new Error('Cannot start job with no interval') + } + debug(`Starting job ${this.name}, scheduled every ${this.interval}`, 'Job scheduler') + this._interval = setInterval(async () => { + await super.run() + this.nextRun = Date.now() + this.interval! + debug(`Next run for ${this.name} is ${this.nextRun}`, 'Job scheduler') + }, this.interval) + return this + } + + stop (): this { + debug(`Stopping job ${this.name}`, 'Job scheduler') + if (this._interval !== null) { + clearInterval(this._interval) + } + return this + } +} diff --git a/src/jobs/elastic-flush.client.ts b/src/jobs/elastic-flush.client.ts new file mode 100644 index 000000000..f1d388fbe --- /dev/null +++ b/src/jobs/elastic-flush.client.ts @@ -0,0 +1,14 @@ +import { ScheduledJob } from './base' +import { flush, drop } from '../utils/elastic' +import { debug } from '../utils/logger' + +export default new ScheduledJob('elastic-flush') + // every 15 minutes + .setInterval(15 * 60 * 1000) + .setExec(async () => { + if (process.env.ELASTIC_URL === undefined) { + debug('No elastic url set, skipping elastic flush and resetting cache', 'Elastic') + drop() + } else await flush() + }) + .start() diff --git a/src/jobs/listing-sites.cluster.ts b/src/jobs/listing-sites.cluster.ts new file mode 100644 index 000000000..3842d2e29 --- /dev/null +++ b/src/jobs/listing-sites.cluster.ts @@ -0,0 +1,131 @@ +import { ScheduledJob } from './base' +import cluster from '../structures/cluster' +import { ClusterClient } from 'detritus-client' +import fetch, { RequestInit } from 'node-fetch' +import { debug, error } from '../utils/logger' + +// no import - messes with tsc (package.json is outside the source dir) +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { version } = require('../../package.json') + +const jobName = 'listing-sites-update' + +interface EvalReturnType { + guilds: number + user: { + username: string + discriminator: string + id: string + // theres more data here, but we don't need it + } +} + +interface ListingAPI { + url: (data: EvalReturnType) => string + init: (data: EvalReturnType) => RequestInit + enabled: (data: EvalReturnType) => boolean +} + +export const sites: ListingAPI[] = [ + { + url: ({ user }) => `https://top.gg/api/bots/${user.id}/stats`, + init: ({ guilds, user }) => ({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: process.env.TOP_GG_TOKEN!, + 'User-Agent': `${user.username}-${user.discriminator}/${version as string} (+https://github.com/TheSharks/WildBeast)` + }, + body: JSON.stringify({ + server_count: guilds, + shard_count: cluster.shardCount + }) + }), + enabled: () => process.env.TOP_GG_TOKEN !== undefined + }, { + url: ({ user }) => `https://discord.bots.gg/api/bots/${user.id}/stats`, + init: ({ user, guilds }) => ({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: process.env.BOTS_GG_TOKEN!, + 'User-Agent': `${user.username}-${user.discriminator}/${version as string} (Detritus; +https://github.com/TheSharks/WildBeast) DBots/${user.id}` + }, + body: JSON.stringify({ + guildCount: guilds + }) + }), + enabled: () => process.env.BOTS_GG_TOKEN !== undefined + }, { + url: ({ user }) => `https://discordbotlist.com/api/v1/bots/${user.id}/stats`, + init: ({ user, guilds }) => ({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: process.env.DBL_COM_TOKEN!, + 'User-Agent': `${user.username}-${user.discriminator}/${version as string} (+https://github.com/TheSharks/WildBeast)` + }, + body: JSON.stringify({ + guilds: guilds + }) + }), + enabled: () => process.env.DBL_COM_TOKEN !== undefined + }, { + url: ({ user }) => `https://bots.ondiscord.xyz/bot-api/bots/${user.id}/guilds`, + init: ({ user, guilds }) => ({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: process.env.ONDISCORD_XYZ_TOKEN!, + 'User-Agent': `${user.username}-${user.discriminator}/${version as string} (+https://github.com/TheSharks/WildBeast)` + }, + body: JSON.stringify({ + guildCount: guilds + }) + }), + enabled: () => process.env.ONDISCORD_XYZ_TOKEN !== undefined + }, { + url: ({ user }) => `https://api.discordextremelist.xyz/v2/bot/${user.id}/stats`, + init: ({ user, guilds }) => ({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: process.env.DEL_XYZ_TOKEN!, + 'User-Agent': `${user.username}-${user.discriminator}/${version as string} (+https://github.com/TheSharks/WildBeast)` + }, + body: JSON.stringify({ + guildCount: guilds, + shardCount: cluster.shardCount + }) + }), + enabled: () => process.env.DEL_XYZ_TOKEN !== undefined + } +] + +export default new ScheduledJob(jobName) + .setInterval(1000 * 60 * 60 * 8) // every 8 hours + .setExec(async () => { + const data: EvalReturnType[] = (await cluster.broadcastEval(() => { + // in the context of broadcastEval, 'this' is the client + const client = this as unknown as ClusterClient + return { + guilds: client.shards.reduce((a: number, b) => a + b.guilds.size, 0), + user: client.shards.get(client.shards.size - 1)!.user! + } + })) + const { user } = data[0] + const guilds = data.reduce((a: number, b) => a + b.guilds, 0) + debug(`${user.username}#${user.discriminator} (${user.id}) has ${guilds} guilds`, jobName) + const result = await Promise.allSettled(sites.filter(site => site.enabled({ user, guilds })).map(async (site) => { + const url = site.url({ user, guilds }) + const init = site.init({ user, guilds }) + try { + await fetch(url, init) + } catch (e) { + error(e, jobName) + } + })) + debug(`Stats sent to ${result.filter(r => r.status === 'fulfilled').length} sites`, jobName) + debug(`Stats failed to send to ${result.filter(r => r.status === 'rejected').length} sites`, jobName) + }) + .start() diff --git a/src/languages/bg/common.strings.ts b/src/languages/bg/common.strings.ts new file mode 100644 index 000000000..bb760272a --- /dev/null +++ b/src/languages/bg/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Ужас! Тази команда не успя, моля, дайте на собственика ми този код за грешка: `{uuid}`", + softFail: "Нещо се е объркало, опитайте отново по-късно", + attachmentNeeded: "Моля, качете изображение, докато използвате тази команда", + nsfwDisabled: "Този канал трябва да бъде маркиран като NSFW, преди да може да се използва тази команда", + cooldown: "Тази команда е на изчерпване, опитайте отново по-късно", + dmDisabled: "Тази команда не може да се използва в DMs", + permsMissingOwn: "Липсват ми следните разрешения: `{perms}`", + permsMissingUser: "Липсват ви следните разрешения: `{perms}`", + working: "Работя върху това...", + noResults: "Не са намерени резултати", + noResultsFor: "Не са намерени резултати за `{query}`", + open: "Отворете" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/8ball.strings.ts b/src/languages/bg/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..5b89e04b9 --- /dev/null +++ b/src/languages/bg/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Попитайте магическата топка за съвет" + }, + prefix: "Вълшебната топка казва: `{response}`", + choices: ["Признаците сочат \"да", "Да", "Отговор мъгливо, опитайте отново", "Без съмнение", "Моите източници казват, че не", "Както виждам, да", "Можете да разчитате на него", "Концентрирайте се и попитайте отново", "Outlook не е толкова добър", "Определено е така", "По-добре да не ви казвам сега", "Много съмнително", "Да - определено", "Сигурно е.", "Не мога да прогнозирам сега", "Най-вероятно", "Попитайте отново по-късно", "Моят отговор е не", "Outlook добре", "Не разчитайте на това", "На кого му пука?", "Никога, никога, никога", "Възможно е", "Има малка вероятност"] +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/advice.strings.ts b/src/languages/bg/slash-commands/advice.strings.ts new file mode 100644 index 000000000..d2a0aa8d9 --- /dev/null +++ b/src/languages/bg/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Получете полезни съвети" + } +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/booru.strings.ts b/src/languages/bg/slash-commands/booru.strings.ts new file mode 100644 index 000000000..3e7bbe636 --- /dev/null +++ b/src/languages/bg/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Какво да търсите" + } + }, + score: "Резултат", + favorites: "Фаворити" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/cat.strings.ts b/src/languages/bg/slash-commands/cat.strings.ts new file mode 100644 index 000000000..c419eed26 --- /dev/null +++ b/src/languages/bg/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Изпраща произволно изображение на котка" + } +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/dice.strings.ts b/src/languages/bg/slash-commands/dice.strings.ts new file mode 100644 index 000000000..df9867187 --- /dev/null +++ b/src/languages/bg/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Хвърляне на зарове", + options: { + dice: "Броят на заровете за хвърляне (по подразбиране: 1)", + sides: "Броят на страните на заровете (по подразбиране: 6)" + } + }, + response: "{username} хвърли {diceCount}d{diceSides} и получи {total}" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/dog.strings.ts b/src/languages/bg/slash-commands/dog.strings.ts new file mode 100644 index 000000000..867537fa8 --- /dev/null +++ b/src/languages/bg/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Изпраща произволно изображение на куче" + } +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/info.strings.ts b/src/languages/bg/slash-commands/info.strings.ts new file mode 100644 index 000000000..cecd6ed51 --- /dev/null +++ b/src/languages/bg/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Получаване на информация за бота" + }, + guilds: "Гилдии на този бряг", + uptime: "Време за работа", + shard: "Текущ дял", + version: "Версия", + owner: "Собственик", + node: "Версия на Node.js", + ram: "Използване на паметта", + os: "Операционна система", + cpu: "Използване на процесора", + poweredBy: "Осъществено от WildBeast" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/inspire.strings.ts b/src/languages/bg/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..24de31a61 --- /dev/null +++ b/src/languages/bg/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Получете произволна оферта от inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/invite.strings.ts b/src/languages/bg/slash-commands/invite.strings.ts new file mode 100644 index 000000000..8755e8fe6 --- /dev/null +++ b/src/languages/bg/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Получаване на връзка за покана за бота" + }, + done: "Използвайте следната връзка, за да ме поканите: {invite}", + private: "Този бот е отбелязан като частен, моля, помолете {owner} да ме покани на вашия сървър" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/meme.strings.ts b/src/languages/bg/slash-commands/meme.strings.ts new file mode 100644 index 000000000..e8df07f7d --- /dev/null +++ b/src/languages/bg/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Вземете произволно меме" + } +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/ping.strings.ts b/src/languages/bg/slash-commands/ping.strings.ts new file mode 100644 index 000000000..3b384f237 --- /dev/null +++ b/src/languages/bg/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Понг! (gateway: {gateway}ms) (rest: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/tag.strings.ts b/src/languages/bg/slash-commands/tag.strings.ts new file mode 100644 index 000000000..cc5267dba --- /dev/null +++ b/src/languages/bg/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Създаване на нов етикет", + delete: "Изтриване на етикет", + edit: "Редактиране на етикет", + info: "Получаване на информация за даден етикет", + show: "Показване на етикет" + }, + options: { + name: "Името на тага", + content: "Съдържанието на тага", + args: "Аргументите, които се подават на командата" + } + }, + errors: { + notFound: "Няма такъв таг", + conflict: "Таг с това име вече съществува", + illegal: "Не можете да наречете етикета си така.", + notYours: "Не притежавате този таг, така че не можете да го редактирате" + }, + owner: "Собственикът на този таг е {user}", + created: "Вашият етикет е създаден", + deleted: "Вашият етикет е изтрит", + updated: false, + createdAt: "Създаден в", + updatedAt: "Актуализирано в", + ranking: "Класиране" +}; \ No newline at end of file diff --git a/src/languages/bg/slash-commands/urbandictionary.strings.ts b/src/languages/bg/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..8aa95664d --- /dev/null +++ b/src/languages/bg/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Търсене в Urban Dictionary", + options: { + query: "Какво да търсите" + } + }, + errors: { + notFound: "Тази дума е толкова сбъркана, че дори Urban Dictionary не я познава" + }, + example: "Пример:", + noExample: "[не е представен пример]" +}; \ No newline at end of file diff --git a/src/languages/cs/common.strings.ts b/src/languages/cs/common.strings.ts new file mode 100644 index 000000000..2ab35d87f --- /dev/null +++ b/src/languages/cs/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Jéje! Tento příkaz se nezdařil, prosím, sdělte mému majiteli tento kód chyby: `{uuid}`", + softFail: "Něco se pokazilo, zkuste to později", + attachmentNeeded: "Při použití tohoto příkazu nahrajte obrázek", + nsfwDisabled: "Před použitím tohoto příkazu musí být tento kanál označen jako NSFW.", + cooldown: "Tento příkaz je v útlumu, zkuste to později.", + dmDisabled: "Tento příkaz nelze použít v DM", + permsMissingOwn: "Chybí mi následující oprávnění: `{perms}`", + permsMissingUser: "Chybí vám následující oprávnění: `{perms}`", + working: "Pracuje se na tom...", + noResults: "Nebyly nalezeny žádné výsledky", + noResultsFor: "Nebyly nalezeny žádné výsledky pro `{query}`", + open: "Otevřít" +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/8ball.strings.ts b/src/languages/cs/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..1688c565a --- /dev/null +++ b/src/languages/cs/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Požádejte o radu kouzelnou kouli 8" + }, + prefix: "Kouzelná osmička říká: `{response}`", + choices: ["Známky ukazují, že ano", "Ano", "Odpovězte mlhavě, zkuste to znovu", "Bezpochyby", "Mé zdroje tvrdí, že ne", "Jak to vidím já, ano", "Můžete se na něj spolehnout", "Soustřeďte se a zeptejte se znovu", "Outlook není tak dobrý", "Rozhodně je to tak", "Raději vám to teď neříkejte", "Velmi pochybné", "Ano - určitě", "Je jisté, že", "Nyní nelze předvídat", "S největší pravděpodobností", "Zeptejte se znovu později", "Moje odpověď je ne", "Outlook dobrý", "Nespoléhejte na to", "Koho to zajímá?", "Nikdy, nikdy, nikdy", "Možná", "Existuje malá šance, že"] +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/advice.strings.ts b/src/languages/cs/slash-commands/advice.strings.ts new file mode 100644 index 000000000..86671e1c5 --- /dev/null +++ b/src/languages/cs/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Získejte užitečné rady" + } +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/booru.strings.ts b/src/languages/cs/slash-commands/booru.strings.ts new file mode 100644 index 000000000..43583d705 --- /dev/null +++ b/src/languages/cs/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Co hledat" + } + }, + score: "Skóre", + favorites: "Oblíbené položky" +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/cat.strings.ts b/src/languages/cs/slash-commands/cat.strings.ts new file mode 100644 index 000000000..c66136045 --- /dev/null +++ b/src/languages/cs/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "odešle náhodný obrázek kočky" + } +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/dice.strings.ts b/src/languages/cs/slash-commands/dice.strings.ts new file mode 100644 index 000000000..62357734e --- /dev/null +++ b/src/languages/cs/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Házení kostkou", + options: { + dice: "Počet kostek, kterými se hází (výchozí: 1)", + sides: "Počet stran kostky (výchozí: 6)" + } + }, + response: "{username} hodil {diceCount}d{diceSides} a dostal {total}" +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/dog.strings.ts b/src/languages/cs/slash-commands/dog.strings.ts new file mode 100644 index 000000000..5cff0ea63 --- /dev/null +++ b/src/languages/cs/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "odešle náhodný obrázek psa" + } +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/info.strings.ts b/src/languages/cs/slash-commands/info.strings.ts new file mode 100644 index 000000000..8e2f135a2 --- /dev/null +++ b/src/languages/cs/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Získat informace o botovi" + }, + guilds: "Cechy na tomto střadu", + uptime: 'Uptime', + shard: "Aktuální střep", + version: "Verze", + owner: "Majitel", + node: "Verze Node.js", + ram: "Využití paměti", + os: "Operační systém", + cpu: "Využití procesoru", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/inspire.strings.ts b/src/languages/cs/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..1a32c3fb6 --- /dev/null +++ b/src/languages/cs/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Získejte náhodnou nabídku z inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/invite.strings.ts b/src/languages/cs/slash-commands/invite.strings.ts new file mode 100644 index 000000000..724f8a920 --- /dev/null +++ b/src/languages/cs/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Získejte odkaz na pozvánku pro bota" + }, + done: "K pozvání použijte následující odkaz: {invite}", + private: "Tento bot je označen jako soukromý, prosím, požádejte {owner} , abyste mě pozvali na svůj server." +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/meme.strings.ts b/src/languages/cs/slash-commands/meme.strings.ts new file mode 100644 index 000000000..2f1a022f1 --- /dev/null +++ b/src/languages/cs/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Získejte náhodný mem" + } +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/ping.strings.ts b/src/languages/cs/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/cs/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/tag.strings.ts b/src/languages/cs/slash-commands/tag.strings.ts new file mode 100644 index 000000000..e33bc9357 --- /dev/null +++ b/src/languages/cs/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Vytvoření nové značky", + delete: "Odstranění značky", + edit: "Upravit značku", + info: "Získání informací o značce", + show: "Zobrazit značku" + }, + options: { + name: "Název značky", + content: "Obsah značky", + args: "Argumenty, které se předávají příkazu" + } + }, + errors: { + notFound: "Žádná taková značka", + conflict: "Značka s tímto názvem již existuje", + illegal: "Nemůžete svou značku pojmenovat takto", + notYours: "Tuto značku nevlastníte, takže ji nemůžete upravovat." + }, + owner: "Vlastníkem této značky je {user}", + created: "Vaše značka byla vytvořena", + deleted: "Vaše značka byla odstraněna", + updated: false, + createdAt: "Vytvořeno v", + updatedAt: "Aktualizováno na", + ranking: "Pořadí" +}; \ No newline at end of file diff --git a/src/languages/cs/slash-commands/urbandictionary.strings.ts b/src/languages/cs/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..146b03cbf --- /dev/null +++ b/src/languages/cs/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Vyhledávání ve slovníku Urban Dictionary", + options: { + query: "Co hledat" + } + }, + errors: { + notFound: "Tohle slovo je tak špatné, že ho nezná ani Urban Dictionary." + }, + example: "Příklad", + noExample: "[není uveden příklad]" +}; \ No newline at end of file diff --git a/src/languages/da/common.strings.ts b/src/languages/da/common.strings.ts new file mode 100644 index 000000000..cbdd1fb61 --- /dev/null +++ b/src/languages/da/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Ups! Denne kommando mislykkedes, giv venligst min ejer denne fejlkode:{uuid}`", + softFail: "Noget gik galt, prøv igen senere", + attachmentNeeded: "Upload venligst et billede, mens du bruger denne kommando", + nsfwDisabled: "Denne kanal skal være markeret som NSFW før denne kommando kan bruges", + cooldown: "Denne kommando er på afkøling, prøv igen senere", + dmDisabled: "Denne kommando kan ikke bruges i DM'er", + permsMissingOwn: "Jeg mangler følgende tilladelser: `{perms}`", + permsMissingUser: "Du mangler følgende tilladelser:{perms}`", + working: "Jeg arbejder på det...", + noResults: "Ingen resultater fundet", + noResultsFor: "Ingen resultater fundet for `{query}`", + open: "Åbn" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/8ball.strings.ts b/src/languages/da/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..035de2e94 --- /dev/null +++ b/src/languages/da/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Spørg den magiske 8-ball til råds" + }, + prefix: "Den magiske 8-kugle siger: `{response}`", + choices: ["Tegnene peger på ja", "Ja", "Svar sløret, prøv igen", "Uden tvivl", "Mine kilder siger nej", "Som jeg ser det, ja", "Du kan stole på det", "Koncentrer dig og spørg igen", "Outlook ikke så godt", "Det er helt klart sådan", "Jeg må hellere ikke fortælle dig det nu", "Meget tvivlsomt", "Ja - helt sikkert", "Det er sikkert", "Kan ikke forudsige nu", "Mest sandsynligt", "Spørg igen senere", "Mit svar er nej", "Outlook god", "Du skal ikke regne med det", "Hvem bekymrer sig om det?", "Aldrig, aldrig, aldrig, aldrig", "Muligvis", "Der er en lille chance for"] +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/advice.strings.ts b/src/languages/da/slash-commands/advice.strings.ts new file mode 100644 index 000000000..d8ab7a63f --- /dev/null +++ b/src/languages/da/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få nogle nyttige råd" + } +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/booru.strings.ts b/src/languages/da/slash-commands/booru.strings.ts new file mode 100644 index 000000000..ddb7c3f52 --- /dev/null +++ b/src/languages/da/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Hvad du skal søge efter" + } + }, + score: 'Score', + favorites: "Favoritter" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/cat.strings.ts b/src/languages/da/slash-commands/cat.strings.ts new file mode 100644 index 000000000..baed3a3ba --- /dev/null +++ b/src/languages/da/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Sender et tilfældigt billede af en kat" + } +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/dice.strings.ts b/src/languages/da/slash-commands/dice.strings.ts new file mode 100644 index 000000000..f17c65b1d --- /dev/null +++ b/src/languages/da/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Kast nogle terninger", + options: { + dice: "Antallet af terninger, der skal kastes (standard: 1)", + sides: "Antallet af sider på terningen (standard: 6)" + } + }, + response: "{username} kastede {diceCount}d{diceSides} og fik {total}" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/dog.strings.ts b/src/languages/da/slash-commands/dog.strings.ts new file mode 100644 index 000000000..60fd346d7 --- /dev/null +++ b/src/languages/da/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Sender et tilfældigt billede af en hund" + } +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/info.strings.ts b/src/languages/da/slash-commands/info.strings.ts new file mode 100644 index 000000000..ef108deff --- /dev/null +++ b/src/languages/da/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Få oplysninger om bot'en" + }, + guilds: "Gilder på denne shard", + uptime: "Driftstid", + shard: "Nuværende skilleje", + version: 'Version', + owner: "Ejer", + node: 'Node.js version', + ram: "Brug af hukommelse", + os: "Operativsystem", + cpu: "CPU-forbrug", + poweredBy: "Drevet af WildBeast" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/inspire.strings.ts b/src/languages/da/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..5b8a10a46 --- /dev/null +++ b/src/languages/da/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få et tilfældigt tilbud fra inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/invite.strings.ts b/src/languages/da/slash-commands/invite.strings.ts new file mode 100644 index 000000000..9695a173c --- /dev/null +++ b/src/languages/da/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Få et invitationslink til bot'en" + }, + done: "Brug følgende link til at invitere mig: {invite}", + private: "Denne bot er markeret som privat, bed {owner} om at invitere mig til din server" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/meme.strings.ts b/src/languages/da/slash-commands/meme.strings.ts new file mode 100644 index 000000000..699e18b85 --- /dev/null +++ b/src/languages/da/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få et tilfældigt meme" + } +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/ping.strings.ts b/src/languages/da/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/da/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/tag.strings.ts b/src/languages/da/slash-commands/tag.strings.ts new file mode 100644 index 000000000..3e13a3560 --- /dev/null +++ b/src/languages/da/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Opret et nyt tag", + delete: "Slet et tag", + edit: "Rediger et tag", + info: "Få oplysninger om et tag", + show: "Vis et tag" + }, + options: { + name: "Navnet på mærket", + content: "Indholdet af mærket", + args: "De argumenter, der skal overføres til kommandoen" + } + }, + errors: { + notFound: "Ingen sådan tag", + conflict: "Der findes allerede et tag med dette navn", + illegal: "Du kan ikke give dit tag det navn", + notYours: "Du ejer ikke dette tag, så du kan ikke redigere det" + }, + owner: "Ejeren af dette tag er {user}", + created: "Dit tag blev oprettet", + deleted: "Dit tag blev slettet", + updated: false, + createdAt: "Oprettet på", + updatedAt: "Opdateret på", + ranking: "Rangordning" +}; \ No newline at end of file diff --git a/src/languages/da/slash-commands/urbandictionary.strings.ts b/src/languages/da/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..9f3de2e68 --- /dev/null +++ b/src/languages/da/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Søg i Urban Dictionary", + options: { + query: "Hvad du skal søge efter" + } + }, + errors: { + notFound: "Dette ord er så forkvaklet, at selv Urban Dictionary ikke kender det" + }, + example: "Eksempel", + noExample: "[der er ikke angivet noget eksempel]" +}; \ No newline at end of file diff --git a/src/languages/de/common.strings.ts b/src/languages/de/common.strings.ts new file mode 100644 index 000000000..e044f8ca5 --- /dev/null +++ b/src/languages/de/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Huch! Dieser Befehl ist fehlgeschlagen, bitte geben Sie meinem Besitzer diesen Fehlercode: `{uuid}`", + softFail: "Etwas ist schief gelaufen, versuchen Sie es später noch einmal", + attachmentNeeded: "Bitte laden Sie ein Bild hoch, während Sie diesen Befehl verwenden", + nsfwDisabled: "Dieser Kanal muss als NSFW markiert sein, bevor dieser Befehl verwendet werden kann", + cooldown: "Dieser Befehl ist abgekühlt, versuche es später noch einmal", + dmDisabled: "Dieser Befehl kann nicht in DMs verwendet werden", + permsMissingOwn: "Mir fehlen die folgenden Berechtigungen: `{perms}`", + permsMissingUser: "Ihnen fehlen die folgenden Berechtigungen: `{perms}`", + working: "Ich arbeite daran...", + noResults: "Keine Ergebnisse gefunden", + noResultsFor: "Keine Ergebnisse gefunden für `{query}`", + open: "Öffnen Sie" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/8ball.strings.ts b/src/languages/de/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..a079da3f5 --- /dev/null +++ b/src/languages/de/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Fragen Sie die magische 8-Kugel um Rat" + }, + prefix: "Die magische 8 sagt: \"{response}\".", + choices: ["Die Anzeichen deuten auf ein Ja hin", "Ja", "Antwort unscharf, versuchen Sie es erneut", "Zweifelsohne", "Meine Quellen sagen nein", "Meiner Meinung nach, ja", "Sie können sich darauf verlassen", "Konzentrieren Sie sich und fragen Sie erneut", "Ausblick nicht so gut", "Es ist eindeutig so", "Ich sage es dir besser nicht jetzt", "Sehr zweifelhaft", "Ja - definitiv", "Es ist sicher", "Kann jetzt nicht vorhersagen", "Höchstwahrscheinlich", "Später wieder fragen", "Meine Antwort lautet nein", "Ausblick gut", "Verlassen Sie sich nicht darauf", "Wen interessiert das?", "Niemals, niemals, niemals", "Möglicherweise", "Es besteht eine kleine Chance"] +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/advice.strings.ts b/src/languages/de/slash-commands/advice.strings.ts new file mode 100644 index 000000000..e27359ee8 --- /dev/null +++ b/src/languages/de/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Holen Sie sich einen hilfreichen Rat" + } +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/booru.strings.ts b/src/languages/de/slash-commands/booru.strings.ts new file mode 100644 index 000000000..ef02a4543 --- /dev/null +++ b/src/languages/de/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Was zu suchen ist" + } + }, + score: "Ergebnis", + favorites: "Favoriten" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/cat.strings.ts b/src/languages/de/slash-commands/cat.strings.ts new file mode 100644 index 000000000..54f293377 --- /dev/null +++ b/src/languages/de/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Sendet ein zufälliges Katzenbild" + } +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/dice.strings.ts b/src/languages/de/slash-commands/dice.strings.ts new file mode 100644 index 000000000..b5ff34a29 --- /dev/null +++ b/src/languages/de/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Würfeln Sie", + options: { + dice: "Die Anzahl der zu würfelnden Würfel (Standard: 1)", + sides: "Die Anzahl der Seiten des Würfels (Standard: 6)" + } + }, + response: "{username} würfelte {diceCount}d{diceSides} und erhielt {total}" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/dog.strings.ts b/src/languages/de/slash-commands/dog.strings.ts new file mode 100644 index 000000000..a8b9f01e7 --- /dev/null +++ b/src/languages/de/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Sendet ein zufälliges Hundebild" + } +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/info.strings.ts b/src/languages/de/slash-commands/info.strings.ts new file mode 100644 index 000000000..6b791c8ac --- /dev/null +++ b/src/languages/de/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Informationen über den Bot abrufen" + }, + guilds: "Gilden auf diesem Shard", + uptime: "Betriebszeit", + shard: "Aktueller Splitter", + version: 'Version', + owner: "Eigentümer", + node: "Node.js-Version", + ram: "Speicherverbrauch", + os: "Das Betriebssystem", + cpu: "CPU-Last", + poweredBy: "Angetrieben von WildBeast" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/inspire.strings.ts b/src/languages/de/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..260f036ad --- /dev/null +++ b/src/languages/de/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Erhalten Sie ein zufälliges Angebot von inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/invite.strings.ts b/src/languages/de/slash-commands/invite.strings.ts new file mode 100644 index 000000000..0cdc752ec --- /dev/null +++ b/src/languages/de/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Einen Einladungslink für den Bot erhalten" + }, + done: "Verwenden Sie den folgenden Link, um mich einzuladen: {invite}", + private: "Dieser Bot ist als privat markiert, bitte fragen Sie {owner} , um mich auf Ihren Server einzuladen" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/meme.strings.ts b/src/languages/de/slash-commands/meme.strings.ts new file mode 100644 index 000000000..fd6d23909 --- /dev/null +++ b/src/languages/de/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Holen Sie sich ein zufälliges Meme" + } +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/ping.strings.ts b/src/languages/de/slash-commands/ping.strings.ts new file mode 100644 index 000000000..908c4c7e7 --- /dev/null +++ b/src/languages/de/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong! (Gateway: {gateway}ms) (Rest: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/tag.strings.ts b/src/languages/de/slash-commands/tag.strings.ts new file mode 100644 index 000000000..17fd3a3eb --- /dev/null +++ b/src/languages/de/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Ein neues Tag erstellen", + delete: "Ein Tag löschen", + edit: "Ein Tag bearbeiten", + info: "Informationen über ein Tag abrufen", + show: "Ein Tag anzeigen" + }, + options: { + name: "Der Name des Tags", + content: "Der Inhalt des Tags", + args: "Die Argumente, die an den Befehl übergeben werden" + } + }, + errors: { + notFound: "Kein solcher Tag", + conflict: "Ein Tag mit diesem Namen existiert bereits", + illegal: "Sie können Ihren Tag nicht so nennen", + notYours: "Sie sind nicht Eigentümer dieses Tags, also können Sie es nicht bearbeiten." + }, + owner: "Der Eigentümer dieses Tags ist {user}", + created: "Ihr Tag wurde erstellt", + deleted: "Ihr Tag wurde gelöscht", + updated: false, + createdAt: "Erstellt am", + updatedAt: "Aktualisiert am", + ranking: "Rangliste" +}; \ No newline at end of file diff --git a/src/languages/de/slash-commands/urbandictionary.strings.ts b/src/languages/de/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..e3458a702 --- /dev/null +++ b/src/languages/de/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Suche im Urban Dictionary", + options: { + query: "Was zu suchen ist" + } + }, + errors: { + notFound: "Dieses Wort ist so verkorkst, dass selbst Urban Dictionary es nicht kennt" + }, + example: "Beispiel", + noExample: "[kein Beispiel angegeben]" +}; \ No newline at end of file diff --git a/src/languages/el/common.strings.ts b/src/languages/el/common.strings.ts new file mode 100644 index 000000000..29ee17951 --- /dev/null +++ b/src/languages/el/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Αμάν! Αυτή η εντολή απέτυχε, παρακαλώ δώστε στον ιδιοκτήτη μου αυτόν τον κωδικό σφάλματος: `{uuid}`", + softFail: "Κάτι πήγε στραβά, προσπαθήστε ξανά αργότερα", + attachmentNeeded: "Παρακαλούμε ανεβάστε μια εικόνα ενώ χρησιμοποιείτε αυτή την εντολή", + nsfwDisabled: "Αυτό το κανάλι πρέπει να επισημανθεί ως NSFW προτού αυτή η εντολή μπορεί να χρησιμοποιηθεί", + cooldown: "Αυτή η εντολή έχει λήξει, προσπαθήστε ξανά αργότερα", + dmDisabled: "Αυτή η εντολή δεν μπορεί να χρησιμοποιηθεί σε DMs", + permsMissingOwn: "Μου λείπουν τα ακόλουθα δικαιώματα: `{perms}`", + permsMissingUser: "Σας λείπουν τα ακόλουθα δικαιώματα: `{perms}`", + working: "Το δουλεύω...", + noResults: "Δεν βρέθηκαν αποτελέσματα", + noResultsFor: "Δεν βρέθηκαν αποτελέσματα για `{query}`", + open: "Ανοίξτε το" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/8ball.strings.ts b/src/languages/el/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..cd5768651 --- /dev/null +++ b/src/languages/el/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Ζητήστε τη συμβουλή της μαγικής μπάλας των 8" + }, + prefix: "Η μαγική μπάλα των 8 λέει: `{response}`", + choices: ["Τα σημάδια δείχνουν ναι", "Ναι", "Απάντηση θολή, προσπαθήστε ξανά", "Χωρίς αμφιβολία", "Οι πηγές μου λένε όχι", "Όπως το βλέπω εγώ, ναι", "Μπορείτε να βασιστείτε σε αυτό", "Συγκεντρωθείτε και ρωτήστε ξανά", "Outlook δεν είναι τόσο καλό", "Είναι αποφασιστικά έτσι", "Καλύτερα να μην σου πω τώρα", "Πολύ αμφίβολο", "Ναι - σίγουρα", "Είναι βέβαιο ότι", "Δεν μπορώ να προβλέψω τώρα", "Πιθανότατα", "Ρωτήστε ξανά αργότερα", "Η απάντησή μου είναι όχι", "Προοπτικές καλές", "Μην βασίζεστε σε αυτό", "Ποιος νοιάζεται;", "Ποτέ, ποτέ, ποτέ, ποτέ", "Πιθανόν", "Υπάρχει μια μικρή πιθανότητα"] +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/advice.strings.ts b/src/languages/el/slash-commands/advice.strings.ts new file mode 100644 index 000000000..0653958ca --- /dev/null +++ b/src/languages/el/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Πάρτε μερικές χρήσιμες συμβουλές" + } +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/booru.strings.ts b/src/languages/el/slash-commands/booru.strings.ts new file mode 100644 index 000000000..b1fd27b6b --- /dev/null +++ b/src/languages/el/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Τι να αναζητήσετε" + } + }, + score: "Βαθμολογία", + favorites: "Αγαπημένα" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/cat.strings.ts b/src/languages/el/slash-commands/cat.strings.ts new file mode 100644 index 000000000..59bbaa707 --- /dev/null +++ b/src/languages/el/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Στέλνει μια τυχαία εικόνα γάτας" + } +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/dice.strings.ts b/src/languages/el/slash-commands/dice.strings.ts new file mode 100644 index 000000000..0f8fa40d9 --- /dev/null +++ b/src/languages/el/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Ρίξτε μερικά ζάρια", + options: { + dice: "Ο αριθμός των ζαριών που θα ριχτούν (προεπιλογή: 1)", + sides: "Ο αριθμός των πλευρών του ζαριού (προεπιλογή: 6)" + } + }, + response: "{username} έριξε {diceCount}d{diceSides} και πήρε {total}" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/dog.strings.ts b/src/languages/el/slash-commands/dog.strings.ts new file mode 100644 index 000000000..17b72505b --- /dev/null +++ b/src/languages/el/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Στέλνει μια τυχαία εικόνα σκύλου" + } +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/info.strings.ts b/src/languages/el/slash-commands/info.strings.ts new file mode 100644 index 000000000..80eb5e8f5 --- /dev/null +++ b/src/languages/el/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Λάβετε πληροφορίες για το bot" + }, + guilds: "Συντεχνίες σε αυτό το σάρδιο", + uptime: "Χρόνος διαθεσιμότητας", + shard: "Τρέχον θραύσμα", + version: "Έκδοση", + owner: "Ιδιοκτήτης", + node: "Έκδοση Node.js", + ram: "Χρήση μνήμης", + os: "Λειτουργικό σύστημα", + cpu: "Χρήση CPU", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/inspire.strings.ts b/src/languages/el/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..d6f84d530 --- /dev/null +++ b/src/languages/el/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Πάρτε ένα τυχαίο απόσπασμα από το inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/invite.strings.ts b/src/languages/el/slash-commands/invite.strings.ts new file mode 100644 index 000000000..17c995177 --- /dev/null +++ b/src/languages/el/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Λάβετε έναν σύνδεσμο πρόσκλησης για το bot" + }, + done: "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να με προσκαλέσετε: {invite}", + private: "Αυτό το bot είναι χαρακτηρισμένο ως ιδιωτικό, παρακαλώ ζητήστε από το {owner} να με προσκαλέσει στο διακομιστή σας" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/meme.strings.ts b/src/languages/el/slash-commands/meme.strings.ts new file mode 100644 index 000000000..2127ea752 --- /dev/null +++ b/src/languages/el/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Πάρτε ένα τυχαίο meme" + } +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/ping.strings.ts b/src/languages/el/slash-commands/ping.strings.ts new file mode 100644 index 000000000..8f5f96e39 --- /dev/null +++ b/src/languages/el/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Πονγκ! (πύλη: {gateway}ms) (υπόλοιπο: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/tag.strings.ts b/src/languages/el/slash-commands/tag.strings.ts new file mode 100644 index 000000000..779ad235a --- /dev/null +++ b/src/languages/el/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Δημιουργία νέας ετικέτας", + delete: "Διαγραφή μιας ετικέτας", + edit: "Επεξεργασία ετικέτας", + info: "Λήψη πληροφοριών για μια ετικέτα", + show: "Εμφάνιση μιας ετικέτας" + }, + options: { + name: "Το όνομα της ετικέτας", + content: "Το περιεχόμενο της ετικέτας", + args: "Τα ορίσματα που πρέπει να μεταβιβαστούν στην εντολή" + } + }, + errors: { + notFound: "Δεν υπάρχει τέτοια ετικέτα", + conflict: "Μια ετικέτα με αυτό το όνομα υπάρχει ήδη", + illegal: "Δεν μπορείτε να ονομάσετε την ετικέτα σας έτσι", + notYours: "Δεν σας ανήκει αυτή η ετικέτα, οπότε δεν μπορείτε να την επεξεργαστείτε." + }, + owner: "Ο ιδιοκτήτης αυτής της ετικέτας είναι {user}", + created: "Η ετικέτα σας δημιουργήθηκε", + deleted: "Η ετικέτα σας διαγράφηκε", + updated: false, + createdAt: "Δημιουργήθηκε στο", + updatedAt: "Ενημερώθηκε στις", + ranking: "Κατάταξη" +}; \ No newline at end of file diff --git a/src/languages/el/slash-commands/urbandictionary.strings.ts b/src/languages/el/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..84de9428a --- /dev/null +++ b/src/languages/el/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Αναζήτηση Urban Dictionary", + options: { + query: "Τι να αναζητήσετε" + } + }, + errors: { + notFound: "Αυτή η λέξη είναι τόσο μπερδεμένη, που ούτε το Urban Dictionary δεν την ξέρει." + }, + example: "Παράδειγμα", + noExample: "[δεν παρέχεται παράδειγμα]" +}; \ No newline at end of file diff --git a/src/languages/en-EN.ts b/src/languages/en-EN.ts deleted file mode 100644 index c00bfb81a..000000000 --- a/src/languages/en-EN.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { languages } from '../cache' - -languages.set('en-EN', - { - i18n: { - disclaimer: 'Please note: translations are provided by the community, and we cannot guarantee their correctness, completeness, or quality', - cta: 'Do you speak fluent English and want to help us translate? Check out {url}' - }, - prereqs: { - errors: { - masterUser: 'This command is only for the bot owner', - serverOwner: 'You must be the server owner to run this command' - } - }, - commands: { - common: { - failedToRun: 'Yikes! This command failed, please give my owner this error code: `{uuid}`', - softFail: 'Something went wrong, try again later', - attachmentNeeded: 'Please upload an image while using this command', - nsfwDisabled: 'This channel needs to be marked as NSFW before this command can be used', - cooldown: 'This command is on cooldown, try again later', - dmDisabled: 'This command cannot be used in DMs', - permsMissingOwn: "I'm missing the following permissions: `{perms}`", - permsMissingUser: "You're missing the following permissions: `{perms}`", - working: 'Working on it...', - noResults: 'No results found', - noResultsFor: 'No results found for `{query}`', - open: 'Open' - }, - dice: { - resultMany: 'You rolled **{result}**\n```{explaination}```', - resultSingle: 'You rolled **{result}**', - resultTooLarge: '[result too large to show explaination]', - badSyntax: 'Please specify how many dice you want to roll like this: `4d6`, `2d12`' - }, - info: { - guilds: 'Guilds on this shard', - uptime: 'Uptime', - shard: 'Current shard', - version: 'Version', - owner: 'Owner', - node: 'Node.js version', - ram: 'Memory usage', - os: 'Operating system', - cpu: 'CPU usage', - poweredBy: 'Powered by WildBeast' - }, - invite: { - done: 'Use the following link to invite me: {invite}', - private: 'This bot is marked as private, please ask {owner} to invite me to your server' - }, - tag: { - errors: { - notFound: 'No such tag', - conflict: 'A tag with that name already exists', - illegal: "You can't name your tag that", - notYours: "You don't own that tag, so you can't edit it" - }, - owner: 'The owner of that tag is {user}', - created: 'Your tag was created', - deleted: 'Your tag was deleted', - edited: 'Your tag was edited' - }, - kick: { - noMentions: "Please provide IDs or mention users you'd like to kick", - noResults: "Couldn't find those users in the server", - done: 'Kicked {num} members', - failed: 'Failed to kick {num} members' - }, - ban: { - noMentions: "Please provide IDs or mention users you'd like to ban", - noResults: "Couldn't find those users in the server", - done: 'Banned {num} members', - failed: 'Failed to ban {num} members' - }, - softban: { - noMentions: "Please provide IDs or mention users you'd like to softban", - noResults: "Couldn't find those users in the server", - done: 'Softbanned {num} members', - failed: 'Failed to softban {num} members' - }, - purge: { - notANumber: 'Your last argument must be a number', - tooManyOrFew: "You're trying to remove too {num, select, few {few} many {many}} messages", - noResults: 'I was not able to find any messages for purging that are under two weeks old' - }, - urbandictionary: { - errors: { - notFound: "This word is so screwed up, even Urban Dictionary doesn't know it" - }, - example: 'Example', - noExample: '[no example provided]' - }, - '8ball': { - prefix: 'The magic 8 ball says: `{response}`', - choices: [ - 'Signs point to yes', - 'Yes', - 'Reply hazy, try again', - 'Without a doubt', - 'My sources say no', - 'As I see it, yes', - 'You may rely on it', - 'Concentrate and ask again', - 'Outlook not so good', - 'It is decidedly so', - 'Better not tell you now', - 'Very doubtful', - 'Yes - definitely', - 'It is certain', - 'Cannot predict now', - 'Most likely', - 'Ask again later', - 'My reply is no', - 'Outlook good', - "Don't count on it", - 'Who cares?', - 'Never, ever, ever', - 'Possibly', - 'There is a small chance' - ] - } - } - } -) diff --git a/src/languages/en-US/common.strings.ts b/src/languages/en-US/common.strings.ts new file mode 100644 index 000000000..d3060ac26 --- /dev/null +++ b/src/languages/en-US/common.strings.ts @@ -0,0 +1,15 @@ +export default +{ + failedToRun: 'Yikes! This command failed, please give my owner this error code: `{uuid}`', + softFail: 'Something went wrong, try again later', + attachmentNeeded: 'Please upload an image while using this command', + nsfwDisabled: 'This channel needs to be marked as NSFW before this command can be used', + cooldown: 'This command is on cooldown, try again later', + dmDisabled: 'This command cannot be used in DMs', + permsMissingOwn: "I'm missing the following permissions: `{perms}`", + permsMissingUser: "You're missing the following permissions: `{perms}`", + working: 'Working on it...', + noResults: 'No results found', + noResultsFor: 'No results found for `{query}`', + open: 'Open' +} diff --git a/src/languages/en-US/slash-commands/8ball.strings.ts b/src/languages/en-US/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..4d9aef7a3 --- /dev/null +++ b/src/languages/en-US/slash-commands/8ball.strings.ts @@ -0,0 +1,33 @@ +export default +{ + metadata: { + description: 'Ask the magic 8-ball for advice' + }, + prefix: 'The magic 8 ball says: `{response}`', + choices: [ + 'Signs point to yes', + 'Yes', + 'Reply hazy, try again', + 'Without a doubt', + 'My sources say no', + 'As I see it, yes', + 'You may rely on it', + 'Concentrate and ask again', + 'Outlook not so good', + 'It is decidedly so', + 'Better not tell you now', + 'Very doubtful', + 'Yes - definitely', + 'It is certain', + 'Cannot predict now', + 'Most likely', + 'Ask again later', + 'My reply is no', + 'Outlook good', + "Don't count on it", + 'Who cares?', + 'Never, ever, ever', + 'Possibly', + 'There is a small chance' + ] +} diff --git a/src/languages/en-US/slash-commands/advice.strings.ts b/src/languages/en-US/slash-commands/advice.strings.ts new file mode 100644 index 000000000..f77a161c1 --- /dev/null +++ b/src/languages/en-US/slash-commands/advice.strings.ts @@ -0,0 +1,6 @@ +export default +{ + metadata: { + description: 'Get some helpful advice' + } +} diff --git a/src/languages/en-US/slash-commands/booru.strings.ts b/src/languages/en-US/slash-commands/booru.strings.ts new file mode 100644 index 000000000..111345059 --- /dev/null +++ b/src/languages/en-US/slash-commands/booru.strings.ts @@ -0,0 +1,10 @@ +export default +{ + metadata: { + options: { + query: 'What to search for' + } + }, + score: 'Score', + favorites: 'Favorites' +} diff --git a/src/languages/en-US/slash-commands/cat.strings.ts b/src/languages/en-US/slash-commands/cat.strings.ts new file mode 100644 index 000000000..ac35c07ac --- /dev/null +++ b/src/languages/en-US/slash-commands/cat.strings.ts @@ -0,0 +1,6 @@ +export default +{ + metadata: { + description: 'Sends a random cat image' + } +} diff --git a/src/languages/en-US/slash-commands/dice.strings.ts b/src/languages/en-US/slash-commands/dice.strings.ts new file mode 100644 index 000000000..40517ab48 --- /dev/null +++ b/src/languages/en-US/slash-commands/dice.strings.ts @@ -0,0 +1,11 @@ +export default +{ + metadata: { + description: 'Roll some dice', + options: { + dice: 'The number of dice to roll (default: 1)', + sides: 'The number of sides on the dice (default: 6)' + } + }, + response: '{username} rolled {diceCount}d{diceSides} and got {total}' +} diff --git a/src/languages/en-US/slash-commands/dog.strings.ts b/src/languages/en-US/slash-commands/dog.strings.ts new file mode 100644 index 000000000..58b302d69 --- /dev/null +++ b/src/languages/en-US/slash-commands/dog.strings.ts @@ -0,0 +1,6 @@ +export default +{ + metadata: { + description: 'Sends a random dog image' + } +} diff --git a/src/languages/en-US/slash-commands/info.strings.ts b/src/languages/en-US/slash-commands/info.strings.ts new file mode 100644 index 000000000..ec504418e --- /dev/null +++ b/src/languages/en-US/slash-commands/info.strings.ts @@ -0,0 +1,16 @@ +export default +{ + metadata: { + description: 'Get information about the bot' + }, + guilds: 'Guilds on this shard', + uptime: 'Uptime', + shard: 'Current shard', + version: 'Version', + owner: 'Owner', + node: 'Node.js version', + ram: 'Memory usage', + os: 'Operating system', + cpu: 'CPU usage', + poweredBy: 'Powered by WildBeast' +} diff --git a/src/languages/en-US/slash-commands/inspire.strings.ts b/src/languages/en-US/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..11f907ea7 --- /dev/null +++ b/src/languages/en-US/slash-commands/inspire.strings.ts @@ -0,0 +1,6 @@ +export default +{ + metadata: { + description: 'Get a random quote from inspirobot.com' + } +} diff --git a/src/languages/en-US/slash-commands/invite.strings.ts b/src/languages/en-US/slash-commands/invite.strings.ts new file mode 100644 index 000000000..810b52279 --- /dev/null +++ b/src/languages/en-US/slash-commands/invite.strings.ts @@ -0,0 +1,8 @@ +export default +{ + metadata: { + description: 'Get an invite link for the bot' + }, + done: 'Use the following link to invite me: {invite}', + private: 'This bot is marked as private, please ask {owner} to invite me to your server' +} diff --git a/src/languages/en-US/slash-commands/meme.strings.ts b/src/languages/en-US/slash-commands/meme.strings.ts new file mode 100644 index 000000000..a823b79ba --- /dev/null +++ b/src/languages/en-US/slash-commands/meme.strings.ts @@ -0,0 +1,6 @@ +export default +{ + metadata: { + description: 'Get a random meme' + } +} diff --git a/src/languages/en-US/slash-commands/ping.strings.ts b/src/languages/en-US/slash-commands/ping.strings.ts new file mode 100644 index 000000000..fce5d56f6 --- /dev/null +++ b/src/languages/en-US/slash-commands/ping.strings.ts @@ -0,0 +1,7 @@ +export default +{ + metadata: { + description: 'Ping the bot', + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +} diff --git a/src/languages/en-US/slash-commands/tag.strings.ts b/src/languages/en-US/slash-commands/tag.strings.ts new file mode 100644 index 000000000..a8a35c6ba --- /dev/null +++ b/src/languages/en-US/slash-commands/tag.strings.ts @@ -0,0 +1,30 @@ +export default +{ + metadata: { + descriptions: { + create: 'Create a new tag', + delete: 'Delete a tag', + edit: 'Edit a tag', + info: 'Get information about a tag', + show: 'Show a tag' + }, + options: { + name: 'The name of the tag', + content: 'The content of the tag', + args: 'The arguments to pass to the command' + } + }, + errors: { + notFound: 'No such tag', + conflict: 'A tag with that name already exists', + illegal: "You can't name your tag that", + notYours: "You don't own that tag, so you can't edit it" + }, + owner: 'The owner of that tag is {user}', + created: 'Your tag was created', + deleted: 'Your tag was deleted', + updated: 'Your tag was edited', + createdAt: 'Created At', + updatedAt: 'Updated At', + ranking: 'Ranking' +} diff --git a/src/languages/en-US/slash-commands/urbandictionary.strings.ts b/src/languages/en-US/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..5523e9e1b --- /dev/null +++ b/src/languages/en-US/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,14 @@ +export default +{ + metadata: { + description: 'Search Urban Dictionary', + options: { + query: 'What to search for' + } + }, + errors: { + notFound: "This word is so screwed up, even Urban Dictionary doesn't know it" + }, + example: 'Example', + noExample: '[no example provided]' +} diff --git a/src/languages/es-ES/common.strings.ts b/src/languages/es-ES/common.strings.ts new file mode 100644 index 000000000..e17e8becd --- /dev/null +++ b/src/languages/es-ES/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "¡Caramba! Este comando ha fallado, por favor dale a mi dueño este código de error: `{uuid}`", + softFail: "Algo ha ido mal, inténtelo de nuevo más tarde", + attachmentNeeded: "Por favor, cargue una imagen mientras utiliza este comando", + nsfwDisabled: "Este canal debe estar marcado como NSFW antes de poder utilizar este comando", + cooldown: "Este comando está en fase de enfriamiento, inténtelo de nuevo más tarde", + dmDisabled: "Este comando no se puede utilizar en los DMs", + permsMissingOwn: "Me faltan los siguientes permisos: `{perms}`", + permsMissingUser: "Te faltan los siguientes permisos: `{perms}`", + working: "Trabajando en ello...", + noResults: "No se han encontrado resultados", + noResultsFor: "No se han encontrado resultados para `{query}`", + open: "Abrir" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/8ball.strings.ts b/src/languages/es-ES/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..0ce16aed3 --- /dev/null +++ b/src/languages/es-ES/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Pide consejo a la bola 8 mágica" + }, + prefix: "La bola 8 mágica dice: `{response}`", + choices: ["Los indicios apuntan a que sí", "Sí", "Respuesta borrosa, inténtalo de nuevo", "Sin duda alguna", "Mis fuentes dicen que no", "Como yo lo veo, sí", "Puede confiar en ello", "Concéntrate y vuelve a preguntar", "Las perspectivas no son tan buenas", "Es decididamente así", "Mejor no te lo digo ahora", "Muy dudoso", "Sí, definitivamente", "Es cierto", "No se puede predecir ahora", "Lo más probable es que", "Vuelve a preguntar más tarde", "Mi respuesta es no", "Perspectivas buenas", "No cuentes con ello", "¿A quién le importa?", "Nunca, nunca, nunca", "Posiblemente", "Hay una pequeña posibilidad"] +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/advice.strings.ts b/src/languages/es-ES/slash-commands/advice.strings.ts new file mode 100644 index 000000000..eab245c05 --- /dev/null +++ b/src/languages/es-ES/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenga algunos consejos útiles" + } +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/booru.strings.ts b/src/languages/es-ES/slash-commands/booru.strings.ts new file mode 100644 index 000000000..89f9146f4 --- /dev/null +++ b/src/languages/es-ES/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Qué buscar" + } + }, + score: "Puntuación", + favorites: "Favoritos" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/cat.strings.ts b/src/languages/es-ES/slash-commands/cat.strings.ts new file mode 100644 index 000000000..f7fa98a72 --- /dev/null +++ b/src/languages/es-ES/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envía una imagen de un gato al azar" + } +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/dice.strings.ts b/src/languages/es-ES/slash-commands/dice.strings.ts new file mode 100644 index 000000000..de8c89bc9 --- /dev/null +++ b/src/languages/es-ES/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Tira unos dados", + options: { + dice: "El número de dados a lanzar (por defecto: 1)", + sides: "El número de caras del dado (por defecto: 6)" + } + }, + response: "{username} rodó {diceCount}d{diceSides} y obtuvo {total}" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/dog.strings.ts b/src/languages/es-ES/slash-commands/dog.strings.ts new file mode 100644 index 000000000..7905dcc18 --- /dev/null +++ b/src/languages/es-ES/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envía una imagen de un perro al azar" + } +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/info.strings.ts b/src/languages/es-ES/slash-commands/info.strings.ts new file mode 100644 index 000000000..feb82163d --- /dev/null +++ b/src/languages/es-ES/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Obtener información sobre el bot" + }, + guilds: "Gremios en este fragmento", + uptime: "Tiempo de funcionamiento", + shard: "Fragmento actual", + version: "Versión", + owner: "Propietario", + node: "Versión de Node.js", + ram: "Uso de la memoria", + os: "Sistema operativo", + cpu: "Uso de la CPU", + poweredBy: "Desarrollado por WildBeast" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/inspire.strings.ts b/src/languages/es-ES/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..30d544c63 --- /dev/null +++ b/src/languages/es-ES/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenga un presupuesto aleatorio de inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/invite.strings.ts b/src/languages/es-ES/slash-commands/invite.strings.ts new file mode 100644 index 000000000..e8ee9d699 --- /dev/null +++ b/src/languages/es-ES/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Obtener un enlace de invitación para el bot" + }, + done: "Utiliza el siguiente enlace para invitarme: {invite}", + private: "Este bot está marcado como privado, por favor pide a {owner} que me invite a tu servidor" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/meme.strings.ts b/src/languages/es-ES/slash-commands/meme.strings.ts new file mode 100644 index 000000000..f31df10f8 --- /dev/null +++ b/src/languages/es-ES/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Consigue un meme al azar" + } +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/ping.strings.ts b/src/languages/es-ES/slash-commands/ping.strings.ts new file mode 100644 index 000000000..1b7b09d7d --- /dev/null +++ b/src/languages/es-ES/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "¡Pong! (pasarela: {gateway}ms) (resto: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/tag.strings.ts b/src/languages/es-ES/slash-commands/tag.strings.ts new file mode 100644 index 000000000..220c4a4af --- /dev/null +++ b/src/languages/es-ES/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Crear una nueva etiqueta", + delete: "Borrar una etiqueta", + edit: "Editar una etiqueta", + info: "Obtener información sobre una etiqueta", + show: "Mostrar una etiqueta" + }, + options: { + name: "El nombre de la etiqueta", + content: "El contenido de la etiqueta", + args: "Los argumentos a pasar al comando" + } + }, + errors: { + notFound: "No hay tal etiqueta", + conflict: "Ya existe una etiqueta con ese nombre", + illegal: "No puedes nombrar tu etiqueta así", + notYours: "Usted no es dueño de esa etiqueta, por lo que no puede editarla" + }, + owner: "El propietario de esa etiqueta es {user}", + created: "Su etiqueta fue creada", + deleted: "Su etiqueta ha sido eliminada", + updated: false, + createdAt: "Creado en", + updatedAt: "Actualizado en", + ranking: "Clasificación" +}; \ No newline at end of file diff --git a/src/languages/es-ES/slash-commands/urbandictionary.strings.ts b/src/languages/es-ES/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..08fae861d --- /dev/null +++ b/src/languages/es-ES/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Buscar en el Diccionario Urbano", + options: { + query: "Qué buscar" + } + }, + errors: { + notFound: "Esta palabra es tan jodida que ni el Urban Dictionary la conoce" + }, + example: "Ejemplo", + noExample: "[no se proporciona ningún ejemplo]" +}; \ No newline at end of file diff --git a/src/languages/fi/common.strings.ts b/src/languages/fi/common.strings.ts new file mode 100644 index 000000000..2bcbe0f6a --- /dev/null +++ b/src/languages/fi/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Yikes! Tämä komento epäonnistui, anna omistajalleni tämä virhekoodi: `{uuid}` `", + softFail: "Jokin meni pieleen, yritä myöhemmin uudelleen", + attachmentNeeded: "Lataa kuva, kun käytät tätä komentoa", + nsfwDisabled: "Tämä kanava on merkittävä NSFW-kanavaksi ennen kuin tätä komentoa voi käyttää.", + cooldown: "Tämä komento on jäähtynyt, yritä myöhemmin uudelleen.", + dmDisabled: "Tätä komentoa ei voi käyttää yksityisviestissä", + permsMissingOwn: "Minulta puuttuvat seuraavat oikeudet: `{perms}` `", + permsMissingUser: "Sinulta puuttuvat seuraavat oikeudet: `{perms}` `", + working: "Se on työn alla...", + noResults: "Tuloksia ei löytynyt", + noResultsFor: "Tuloksia ei löytynyt hakusanalle `{query}`", + open: "Avaa" +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/8ball.strings.ts b/src/languages/fi/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..2a4f2da78 --- /dev/null +++ b/src/languages/fi/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Kysy neuvoa maagiselta 8-pallolta" + }, + prefix: "Taikapallo 8 sanoo: `{response}` `", + choices: ["Merkit viittaavat kyllä", "Kyllä", "Vastaus sumuinen, yritä uudelleen", "Epäilemättä", "Lähteideni mukaan ei.", "Nähdäkseni kyllä.", "Voit luottaa siihen", "Keskity ja kysy uudelleen", "Outlook ei niin hyvä", "Se on ehdottomasti niin", "Parempi olla kertomatta nyt", "Hyvin epävarmaa", "Kyllä - ehdottomasti", "On varmaa, että", "Ei voi ennustaa nyt", "Todennäköisesti", "Kysy myöhemmin uudelleen", "Vastaukseni on ei", "Näkymät hyvä", "Älä luota siihen", "Ketä kiinnostaa?", "Ei koskaan, ei koskaan, ei koskaan", "Mahdollisesti", "On olemassa pieni mahdollisuus"] +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/advice.strings.ts b/src/languages/fi/slash-commands/advice.strings.ts new file mode 100644 index 000000000..a26b15cb6 --- /dev/null +++ b/src/languages/fi/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Hanki hyödyllisiä neuvoja" + } +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/booru.strings.ts b/src/languages/fi/slash-commands/booru.strings.ts new file mode 100644 index 000000000..678cfa1a3 --- /dev/null +++ b/src/languages/fi/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Mitä etsiä" + } + }, + score: "Pisteet", + favorites: "Suosikit" +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/cat.strings.ts b/src/languages/fi/slash-commands/cat.strings.ts new file mode 100644 index 000000000..a3a9ef2a0 --- /dev/null +++ b/src/languages/fi/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Lähettää satunnaisen kissakuvan" + } +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/dice.strings.ts b/src/languages/fi/slash-commands/dice.strings.ts new file mode 100644 index 000000000..48663aa3f --- /dev/null +++ b/src/languages/fi/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Heitä noppaa", + options: { + dice: "Heitettävien noppien määrä (oletus: 1)", + sides: "Nopan sivujen lukumäärä (oletus: 6)." + } + }, + response: "{username} heitti {diceCount}d{diceSides} ja sai {total}" +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/dog.strings.ts b/src/languages/fi/slash-commands/dog.strings.ts new file mode 100644 index 000000000..1b4d8f56a --- /dev/null +++ b/src/languages/fi/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Lähettää satunnaisen koiran kuvan" + } +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/info.strings.ts b/src/languages/fi/slash-commands/info.strings.ts new file mode 100644 index 000000000..fcc651054 --- /dev/null +++ b/src/languages/fi/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Hae tietoja botista" + }, + guilds: "Killat tällä sirpaleella", + uptime: "Käyntiaika", + shard: "Nykyinen sirpale", + version: "Versio", + owner: "Omistaja", + node: "Node.js versio", + ram: "Muistin käyttö", + os: "Käyttöjärjestelmä", + cpu: "CPU-käyttö", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/inspire.strings.ts b/src/languages/fi/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..89adf96e0 --- /dev/null +++ b/src/languages/fi/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Hanki satunnainen lainaus osoitteesta inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/invite.strings.ts b/src/languages/fi/slash-commands/invite.strings.ts new file mode 100644 index 000000000..aee680512 --- /dev/null +++ b/src/languages/fi/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Hanki kutsulinkki botille" + }, + done: "Käytä seuraavaa linkkiä kutsuaksesi minut: {invite}", + private: "Tämä botti on merkitty yksityiseksi, pyydä {owner} kutsumaan minut palvelimellesi." +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/meme.strings.ts b/src/languages/fi/slash-commands/meme.strings.ts new file mode 100644 index 000000000..6def5b5b6 --- /dev/null +++ b/src/languages/fi/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Hanki satunnainen meemi" + } +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/ping.strings.ts b/src/languages/fi/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/fi/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/tag.strings.ts b/src/languages/fi/slash-commands/tag.strings.ts new file mode 100644 index 000000000..fd5465cad --- /dev/null +++ b/src/languages/fi/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Luo uusi tunniste", + delete: "Poista tunniste", + edit: "Muokkaa tagia", + info: "Hae tietoja tunnisteesta", + show: "Näytä tunniste" + }, + options: { + name: "Tunnisteen nimi", + content: "Tagin sisältö", + args: "Komennolle annettavat argumentit" + } + }, + errors: { + notFound: "Tällaista tagia ei ole", + conflict: "Kyseisellä nimellä varustettu tunniste on jo olemassa", + illegal: "Et voi nimetä tagiasi niin", + notYours: "Et omista tätä tagia, joten et voi muokata sitä." + }, + owner: "Tämän tagin omistaja on {user}", + created: "Tagisi luotiin", + deleted: "Tagisi poistettiin", + updated: false, + createdAt: "Created at", + updatedAt: "Päivitetty osoitteessa", + ranking: 'Ranking' +}; \ No newline at end of file diff --git a/src/languages/fi/slash-commands/urbandictionary.strings.ts b/src/languages/fi/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..b449e549d --- /dev/null +++ b/src/languages/fi/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Etsi Urban Dictionary", + options: { + query: "Mitä etsiä" + } + }, + errors: { + notFound: "Tämä sana on niin sekaisin, ettei edes Urban Dictionary tunne sitä." + }, + example: "Esimerkki", + noExample: "[esimerkkiä ei ole annettu]" +}; \ No newline at end of file diff --git a/src/languages/fr/common.strings.ts b/src/languages/fr/common.strings.ts new file mode 100644 index 000000000..6b0038661 --- /dev/null +++ b/src/languages/fr/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Oups ! Cette commande a échoué, veuillez donner à mon propriétaire ce code d'erreur : `{uuid}`", + softFail: "Quelque chose s'est mal passé, réessayez plus tard", + attachmentNeeded: "Veuillez télécharger une image en utilisant cette commande", + nsfwDisabled: "Ce canal doit être marqué comme NSFW avant que cette commande puisse être utilisée.", + cooldown: "Cette commande est en attente, réessayez plus tard.", + dmDisabled: "Cette commande ne peut pas être utilisée dans les DM", + permsMissingOwn: "Il me manque les permissions suivantes : `{perms}`", + permsMissingUser: "Il vous manque les permissions suivantes : `{perms}`", + working: "J'y travaille...", + noResults: "Aucun résultat trouvé", + noResultsFor: "Aucun résultat trouvé pour \"{query}\".", + open: "Ouvrir" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/8ball.strings.ts b/src/languages/fr/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..3eb8c6f2e --- /dev/null +++ b/src/languages/fr/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Demandez conseil à la boule magique" + }, + prefix: "La boule magique 8 dit : `{response}`.", + choices: ["Les signes indiquent que oui", "Oui", "Réponse floue, essayez à nouveau", "Sans aucun doute", "Mes sources disent que non", "Comme je le vois, oui", "Vous pouvez vous y fier", "Concentrez-vous et demandez à nouveau", "Outlook pas très bon", "C'est décidément le cas", "Il vaut mieux ne pas te le dire maintenant.", "Très douteux", "Oui - définitivement", "Il est certain", "Impossible de prédire maintenant", "Très probablement", "Redemandez plus tard", "Ma réponse est non", "Bonne perspective", "N'y comptez pas", "Qui s'en soucie ?", "Jamais, jamais, jamais", "Possiblement", "Il y a une petite chance"] +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/advice.strings.ts b/src/languages/fr/slash-commands/advice.strings.ts new file mode 100644 index 000000000..0e9bd0a3e --- /dev/null +++ b/src/languages/fr/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenez des conseils utiles" + } +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/booru.strings.ts b/src/languages/fr/slash-commands/booru.strings.ts new file mode 100644 index 000000000..b6dfe46bb --- /dev/null +++ b/src/languages/fr/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Ce qu'il faut rechercher" + } + }, + score: 'Score', + favorites: "Favoris" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/cat.strings.ts b/src/languages/fr/slash-commands/cat.strings.ts new file mode 100644 index 000000000..ab551f31a --- /dev/null +++ b/src/languages/fr/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envoie une image aléatoire de chat" + } +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/dice.strings.ts b/src/languages/fr/slash-commands/dice.strings.ts new file mode 100644 index 000000000..e53f9252b --- /dev/null +++ b/src/languages/fr/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Lancez des dés", + options: { + dice: "Le nombre de dés à lancer (par défaut : 1)", + sides: "Le nombre de faces du dé (par défaut : 6)" + } + }, + response: "{username} a lancé {diceCount}d{diceSides} et obtenu {total}" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/dog.strings.ts b/src/languages/fr/slash-commands/dog.strings.ts new file mode 100644 index 000000000..95b915567 --- /dev/null +++ b/src/languages/fr/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envoie une image de chien aléatoire" + } +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/info.strings.ts b/src/languages/fr/slash-commands/info.strings.ts new file mode 100644 index 000000000..f4ee1fa81 --- /dev/null +++ b/src/languages/fr/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Obtenir des informations sur le robot" + }, + guilds: "Guildes sur ce vaisseau", + uptime: "Temps de fonctionnement", + shard: "Shard actuel", + version: 'Version', + owner: "Propriétaire", + node: "Version de Node.js", + ram: "Utilisation de la mémoire", + os: "Système d'exploitation", + cpu: "Utilisation du CPU", + poweredBy: "Propulsé par WildBeast" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/inspire.strings.ts b/src/languages/fr/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..9bfa0cb6d --- /dev/null +++ b/src/languages/fr/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenez un devis aléatoire de inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/invite.strings.ts b/src/languages/fr/slash-commands/invite.strings.ts new file mode 100644 index 000000000..0f90fc5b6 --- /dev/null +++ b/src/languages/fr/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Obtenir un lien d'invitation pour le robot" + }, + done: "Utilisez le lien suivant pour m'inviter : {invite}", + private: "Ce bot est marqué comme privé, veuillez demander à {owner} de m'inviter sur votre serveur." +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/meme.strings.ts b/src/languages/fr/slash-commands/meme.strings.ts new file mode 100644 index 000000000..ce2515ec3 --- /dev/null +++ b/src/languages/fr/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenez un mème aléatoire" + } +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/ping.strings.ts b/src/languages/fr/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cfd78d12d --- /dev/null +++ b/src/languages/fr/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong ! (passerelle : {gateway}ms) (reste : {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/tag.strings.ts b/src/languages/fr/slash-commands/tag.strings.ts new file mode 100644 index 000000000..68d578e8e --- /dev/null +++ b/src/languages/fr/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Créer un nouveau tag", + delete: "Supprimer un tag", + edit: "Modifier un tag", + info: "Obtenir des informations sur une balise", + show: "Afficher une étiquette" + }, + options: { + name: "Le nom de la balise", + content: "Le contenu de la balise", + args: "Les arguments à passer à la commande" + } + }, + errors: { + notFound: "Aucune balise de ce type", + conflict: "Une balise portant ce nom existe déjà", + illegal: "Tu ne peux pas nommer ton tag comme ça", + notYours: "Vous ne possédez pas ce tag, donc vous ne pouvez pas le modifier." + }, + owner: "Le propriétaire de cette balise est {user}", + created: "Votre étiquette a été créée", + deleted: "Votre tag a été supprimé", + updated: false, + createdAt: "Créé à", + updatedAt: "Mis à jour à", + ranking: "Classement" +}; \ No newline at end of file diff --git a/src/languages/fr/slash-commands/urbandictionary.strings.ts b/src/languages/fr/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..93e181a7c --- /dev/null +++ b/src/languages/fr/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Recherche dans le dictionnaire urbain", + options: { + query: "Ce qu'il faut rechercher" + } + }, + errors: { + notFound: "Ce mot est tellement tordu que même l'Urban Dictionary ne le connaît pas." + }, + example: "Exemple", + noExample: "[aucun exemple fourni]" +}; \ No newline at end of file diff --git a/src/languages/hi/common.strings.ts b/src/languages/hi/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/hi/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/8ball.strings.ts b/src/languages/hi/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/hi/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/advice.strings.ts b/src/languages/hi/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hi/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/booru.strings.ts b/src/languages/hi/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/hi/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/cat.strings.ts b/src/languages/hi/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hi/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/dice.strings.ts b/src/languages/hi/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/hi/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/dog.strings.ts b/src/languages/hi/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hi/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/info.strings.ts b/src/languages/hi/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/hi/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/inspire.strings.ts b/src/languages/hi/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hi/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/invite.strings.ts b/src/languages/hi/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/hi/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/meme.strings.ts b/src/languages/hi/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hi/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/ping.strings.ts b/src/languages/hi/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/hi/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/tag.strings.ts b/src/languages/hi/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/hi/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/hi/slash-commands/urbandictionary.strings.ts b/src/languages/hi/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/hi/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/hr/common.strings.ts b/src/languages/hr/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/hr/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/8ball.strings.ts b/src/languages/hr/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/hr/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/advice.strings.ts b/src/languages/hr/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hr/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/booru.strings.ts b/src/languages/hr/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/hr/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/cat.strings.ts b/src/languages/hr/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hr/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/dice.strings.ts b/src/languages/hr/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/hr/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/dog.strings.ts b/src/languages/hr/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hr/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/info.strings.ts b/src/languages/hr/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/hr/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/inspire.strings.ts b/src/languages/hr/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hr/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/invite.strings.ts b/src/languages/hr/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/hr/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/meme.strings.ts b/src/languages/hr/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/hr/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/ping.strings.ts b/src/languages/hr/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/hr/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/tag.strings.ts b/src/languages/hr/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/hr/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/hr/slash-commands/urbandictionary.strings.ts b/src/languages/hr/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/hr/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/hu/common.strings.ts b/src/languages/hu/common.strings.ts new file mode 100644 index 000000000..3debfcb5b --- /dev/null +++ b/src/languages/hu/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Jajj! Ez a parancs nem sikerült, kérjük, adja meg a tulajdonosomnak ezt a hibakódot: `{uuid}`", + softFail: "Valami rosszul ment, próbálja meg később újra", + attachmentNeeded: "Kérjük, töltsön fel egy képet, miközben ezt a parancsot használja", + nsfwDisabled: "Ezt a csatornát NSFW-ként kell megjelölni, mielőtt ezt a parancsot használhatnád", + cooldown: "Ez a parancs leállt, próbáld meg később újra.", + dmDisabled: "Ez a parancs nem használható DM-ekben", + permsMissingOwn: "Hiányoznak a következő engedélyek: `{perms}`", + permsMissingUser: "Hiányoznak a következő engedélyek: `{perms}`", + working: "Dolgozom rajta...", + noResults: "Nincs eredmény", + noResultsFor: "Nem találtunk találatot a `{query}` számára.", + open: "Nyissa meg a címet." +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/8ball.strings.ts b/src/languages/hu/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..46a293ff7 --- /dev/null +++ b/src/languages/hu/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Kérjen tanácsot a mágikus 8-as golyótól" + }, + prefix: "A varázslatos 8-as golyó azt mondja: `{response}`", + choices: ["A jelek arra utalnak, hogy igen", "Igen", "Válasz ködös, próbáld újra", "Kétségtelenül", "A forrásaim szerint nem.", "Ahogy én látom, igen", "Számíthat rá", "Koncentrálj és kérdezz újra", "Outlook nem olyan jó", "Ez határozottan így van", "Jobb, ha most nem mondom el.", "Nagyon kétséges", "Igen - határozottan", "Az biztos, hogy", "Most nem tudok jósolni", "Valószínűleg", "Kérdezd újra később", "A válaszom nem", "Kilátások jó", "Ne számíts rá", "Kit érdekel?", "Soha, soha, soha, soha", "Esetleg", "Van egy kis esély arra."] +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/advice.strings.ts b/src/languages/hu/slash-commands/advice.strings.ts new file mode 100644 index 000000000..7a0358a9f --- /dev/null +++ b/src/languages/hu/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Kapjon néhány hasznos tanácsot" + } +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/booru.strings.ts b/src/languages/hu/slash-commands/booru.strings.ts new file mode 100644 index 000000000..97a97c891 --- /dev/null +++ b/src/languages/hu/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Mit kell keresni" + } + }, + score: 'Score', + favorites: "Kedvencek" +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/cat.strings.ts b/src/languages/hu/slash-commands/cat.strings.ts new file mode 100644 index 000000000..d57e6df81 --- /dev/null +++ b/src/languages/hu/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Véletlenszerű macskaképet küld" + } +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/dice.strings.ts b/src/languages/hu/slash-commands/dice.strings.ts new file mode 100644 index 000000000..feb3aaf67 --- /dev/null +++ b/src/languages/hu/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Dobj néhány kockát", + options: { + dice: "A dobandó kockák száma (alapértelmezett: 1)", + sides: "A kocka oldalainak száma (alapértelmezett: 6)" + } + }, + response: '{username} rolled {diceCount}d{diceSides} and got {total}' +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/dog.strings.ts b/src/languages/hu/slash-commands/dog.strings.ts new file mode 100644 index 000000000..0366cb400 --- /dev/null +++ b/src/languages/hu/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Véletlenszerű kutyaképet küld" + } +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/info.strings.ts b/src/languages/hu/slash-commands/info.strings.ts new file mode 100644 index 000000000..befe32848 --- /dev/null +++ b/src/languages/hu/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Információk lekérése a botról" + }, + guilds: "Céhek ezen a lapon", + uptime: "Üzemidő", + shard: "Jelenlegi szilánk", + version: "Verzió", + owner: "Tulajdonos", + node: "Node.js verzió", + ram: "Memóriahasználat", + os: "Operációs rendszer", + cpu: "CPU használat", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/inspire.strings.ts b/src/languages/hu/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..2c4a938b6 --- /dev/null +++ b/src/languages/hu/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Kérjen egy véletlenszerű idézetet az inspirobot.com-tól" + } +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/invite.strings.ts b/src/languages/hu/slash-commands/invite.strings.ts new file mode 100644 index 000000000..40c270473 --- /dev/null +++ b/src/languages/hu/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Kap egy meghívó linket a bothoz" + }, + done: "A következő linket használd a meghíváshoz: {invite}", + private: "Ez a bot privátnak van jelölve, kérlek kérd meg {owner} , hogy meghívj a szerveredre." +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/meme.strings.ts b/src/languages/hu/slash-commands/meme.strings.ts new file mode 100644 index 000000000..19ea92e74 --- /dev/null +++ b/src/languages/hu/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Szerezz egy véletlenszerű mém" + } +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/ping.strings.ts b/src/languages/hu/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/hu/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/tag.strings.ts b/src/languages/hu/slash-commands/tag.strings.ts new file mode 100644 index 000000000..27ac7e496 --- /dev/null +++ b/src/languages/hu/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Új címke létrehozása", + delete: "Címke törlése", + edit: "Címke szerkesztése", + info: "Információ lekérése egy címkéről", + show: "Címke megjelenítése" + }, + options: { + name: "A címke neve", + content: "A címke tartalma", + args: "A parancsnak átadandó argumentumok" + } + }, + errors: { + notFound: "Nincs ilyen címke", + conflict: "Egy ilyen nevű címke már létezik", + illegal: "Nem nevezheted így a címkét", + notYours: "Ez a címke nem a tiéd, így nem tudod szerkeszteni." + }, + owner: "A címke tulajdonosa {user}", + created: "A címkét létrehozták", + deleted: "A címkét törölték", + updated: false, + createdAt: "Létrehozva", + updatedAt: "Frissítve", + ranking: "Rangsorolás" +}; \ No newline at end of file diff --git a/src/languages/hu/slash-commands/urbandictionary.strings.ts b/src/languages/hu/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..d3e08dd44 --- /dev/null +++ b/src/languages/hu/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Urban Dictionary keresés", + options: { + query: "Mit kell keresni" + } + }, + errors: { + notFound: "Ez a szó annyira elcseszett, hogy még az Urban Dictionary sem ismeri." + }, + example: "Példa", + noExample: "[nincs példa]" +}; \ No newline at end of file diff --git a/src/languages/index.ts b/src/languages/index.ts new file mode 100644 index 000000000..f45f712df --- /dev/null +++ b/src/languages/index.ts @@ -0,0 +1,33 @@ +import deepmerge from 'deepmerge' +import glob from 'fast-glob' +import { basename, extname, relative, sep } from 'path' +import { languages } from '../cache' +import { debug, info } from '../utils/logger' + +export default async function (): Promise { + if (languages.size > 0) { + debug('Languages already loaded, skipping', 'Languages') + return + } + info('Loading languages, this may take a while', 'Languages') + const files = await glob('**/*.strings.[?jt]s', { + absolute: true, + cwd: __dirname + }) + for (const file of files) { + const name = basename(file, `.strings${extname(file)}`) + const relativePath = relative(__dirname, file) + const [language, ...categories] = relativePath.split(sep).slice(0, -1) + const strings = await import(file) + // input: ['a', 'b', 'c'] + // output: { a: { b: { c: 'foo' } } } + const obj = categories.reduce((o, c) => ({ [c]: o }), { [name]: strings.default }) + if (languages.has(language)) { + const original = languages.get(language) + languages.set(language, deepmerge(original!, obj)) + } else { + languages.set(language, obj) + } + debug(`Language ${language} updated for ${categories.join('.')}.${name} with ${Object.keys(strings.default).length} definitions`, 'Languages') + } +} diff --git a/src/languages/it/common.strings.ts b/src/languages/it/common.strings.ts new file mode 100644 index 000000000..4b840e420 --- /dev/null +++ b/src/languages/it/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Accidenti! Questo comando è fallito, per favore dai al mio proprietario questo codice di errore: `{uuid}`", + softFail: "Qualcosa è andato storto, riprova più tardi", + attachmentNeeded: "Carica un'immagine mentre usi questo comando", + nsfwDisabled: "Questo canale deve essere contrassegnato come NSFW prima che questo comando possa essere utilizzato", + cooldown: "Questo comando è in pausa, riprova più tardi", + dmDisabled: "Questo comando non può essere usato nei DM", + permsMissingOwn: "Mi mancano i seguenti permessi: `{perms}`", + permsMissingUser: "Ti mancano i seguenti permessi: `{perms}`", + working: "Ci sto lavorando...", + noResults: "Nessun risultato trovato", + noResultsFor: "Nessun risultato trovato per `{query}`", + open: "Aprire" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/8ball.strings.ts b/src/languages/it/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..9d40a6dbb --- /dev/null +++ b/src/languages/it/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Chiedi consiglio alla magica palla 8" + }, + prefix: "La palla 8 magica dice: `{response}`", + choices: ["I segni puntano al sì", "Sì", "Risposta nebulosa, riprova", "Senza dubbio", "Le mie fonti dicono di no", "Per come la vedo io, sì", "Si può fare affidamento su di esso", "Concentrarsi e chiedere di nuovo", "Outlook non così buono", "È decisamente così", "Meglio non dirtelo ora", "Molto dubbioso", "Sì - sicuramente", "È certo che", "Non può prevedere ora", "Molto probabilmente", "Chiedi di nuovo più tardi", "La mia risposta è no", "Outlook buono", "Non contarci", "Chi se ne frega?", "Mai e poi mai", "Possibilmente", "C'è una piccola possibilità"] +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/advice.strings.ts b/src/languages/it/slash-commands/advice.strings.ts new file mode 100644 index 000000000..c1e4ff9b1 --- /dev/null +++ b/src/languages/it/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Ottieni qualche consiglio utile" + } +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/booru.strings.ts b/src/languages/it/slash-commands/booru.strings.ts new file mode 100644 index 000000000..bc246f0b6 --- /dev/null +++ b/src/languages/it/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Cosa cercare" + } + }, + score: "Punteggio", + favorites: "Preferiti" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/cat.strings.ts b/src/languages/it/slash-commands/cat.strings.ts new file mode 100644 index 000000000..68993c17f --- /dev/null +++ b/src/languages/it/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Invia un'immagine casuale di un gatto" + } +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/dice.strings.ts b/src/languages/it/slash-commands/dice.strings.ts new file mode 100644 index 000000000..a47b29d52 --- /dev/null +++ b/src/languages/it/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Tira qualche dado", + options: { + dice: "Il numero di dadi da lanciare (predefinito: 1)", + sides: "Il numero di facce del dado (predefinito: 6)" + } + }, + response: "{username} ha rotolato {diceCount}d{diceSides} e ha ottenuto {total}" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/dog.strings.ts b/src/languages/it/slash-commands/dog.strings.ts new file mode 100644 index 000000000..509a13e9c --- /dev/null +++ b/src/languages/it/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Invia un'immagine casuale di un cane" + } +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/info.strings.ts b/src/languages/it/slash-commands/info.strings.ts new file mode 100644 index 000000000..6116e9ec7 --- /dev/null +++ b/src/languages/it/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Ottenere informazioni sul bot" + }, + guilds: "Gilde su questo sito", + uptime: 'Uptime', + shard: "Frammento corrente", + version: "Versione", + owner: "Proprietario", + node: "Versione Node.js", + ram: "Uso della memoria", + os: "Sistema operativo", + cpu: "Utilizzo della CPU", + poweredBy: "Alimentato da WildBeast" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/inspire.strings.ts b/src/languages/it/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..244794d0b --- /dev/null +++ b/src/languages/it/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Ottieni un preventivo casuale da inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/invite.strings.ts b/src/languages/it/slash-commands/invite.strings.ts new file mode 100644 index 000000000..eef72c6bc --- /dev/null +++ b/src/languages/it/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Ottenere un link di invito per il bot" + }, + done: "Usa il seguente link per invitarmi: {invite}", + private: "Questo bot è segnato come privato, chiedi a {owner} di invitarmi sul tuo server" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/meme.strings.ts b/src/languages/it/slash-commands/meme.strings.ts new file mode 100644 index 000000000..feffd8e1e --- /dev/null +++ b/src/languages/it/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Prendi un meme a caso" + } +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/ping.strings.ts b/src/languages/it/slash-commands/ping.strings.ts new file mode 100644 index 000000000..8874fe055 --- /dev/null +++ b/src/languages/it/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong! (gateway: {gateway}ms) (resto: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/tag.strings.ts b/src/languages/it/slash-commands/tag.strings.ts new file mode 100644 index 000000000..38dc43188 --- /dev/null +++ b/src/languages/it/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Creare un nuovo tag", + delete: "Cancellare un tag", + edit: "Modifica un tag", + info: "Ottenere informazioni su un tag", + show: "Mostra un tag" + }, + options: { + name: "Il nome del tag", + content: "Il contenuto del tag", + args: "Gli argomenti da passare al comando" + } + }, + errors: { + notFound: "Nessun tag simile", + conflict: "Un tag con quel nome esiste già", + illegal: "Non puoi chiamare il tuo tag così", + notYours: "Non possiedi quel tag, quindi non puoi modificarlo" + }, + owner: "Il proprietario di questo tag è {user}", + created: "Il tuo tag è stato creato", + deleted: "Il tuo tag è stato cancellato", + updated: false, + createdAt: "Creato a", + updatedAt: "Aggiornato a", + ranking: "Classifica" +}; \ No newline at end of file diff --git a/src/languages/it/slash-commands/urbandictionary.strings.ts b/src/languages/it/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..e86f3e3dc --- /dev/null +++ b/src/languages/it/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Cerca su Urban Dictionary", + options: { + query: "Cosa cercare" + } + }, + errors: { + notFound: "Questa parola è così incasinata che nemmeno Urban Dictionary la conosce" + }, + example: "Esempio", + noExample: "[nessun esempio fornito]" +}; \ No newline at end of file diff --git a/src/languages/ja/common.strings.ts b/src/languages/ja/common.strings.ts new file mode 100644 index 000000000..53670cbe5 --- /dev/null +++ b/src/languages/ja/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Yikes!このコマンドは失敗しました。私のオーナーにこのエラーコードを伝えてください。`{uuid}`", + softFail: "何か問題が発生しました、後でもう一度試してください", + attachmentNeeded: "このコマンドを使用して画像をアップロードしてください。", + nsfwDisabled: "このコマンドを使用するには、このチャンネルがNSFWとしてマークされている必要があります。", + cooldown: "このコマンドはクールダウン中なので、後でもう一度試してください。", + dmDisabled: "このコマンドはDMでは使用できません", + permsMissingOwn: "以下のパーミッションが不足しています。`{perms}`", + permsMissingUser: "以下のパーミッションが不足しています。`{perms}`", + working: "取り組んでいます...。", + noResults: "結果は見つかりませんでした", + noResultsFor: "{query}に該当する結果はありませんでした。", + open: "オープン" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/8ball.strings.ts b/src/languages/ja/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..a60a89626 --- /dev/null +++ b/src/languages/ja/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "マジック8ボールにアドバイスを求める" + }, + prefix: "マジック8ボールは次のように言います: `{response}`", + choices: ["兆候は「イエス」を示している", "はい。", "回答がかすんでいるので、もう一度お願いします", "間違いなく", "私の情報源では", "私が思うに、はい", "頼りになるかもしれない", "集中してもう一度聞く", "アウトルックはあまり良くない", "決まってそうです。", "今は言わない方がいい", "非常に疑わしい", "はい、間違いありません。", "それは確かに", "今は予測できない", "ほとんどの場合", "後でまた聞く", "私の答えは「いいえ」です。", "アウトルック良好", "期待してはいけない", "誰が気にするの?", "決して、決して、決して、決して", "可能性あり", "可能性があります。"] +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/advice.strings.ts b/src/languages/ja/slash-commands/advice.strings.ts new file mode 100644 index 000000000..e24e8b5ac --- /dev/null +++ b/src/languages/ja/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "参考になるアドバイスをもらう" + } +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/booru.strings.ts b/src/languages/ja/slash-commands/booru.strings.ts new file mode 100644 index 000000000..4bf40b87b --- /dev/null +++ b/src/languages/ja/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "検索のポイント" + } + }, + score: "スコア", + favorites: "お気に入り" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/cat.strings.ts b/src/languages/ja/slash-commands/cat.strings.ts new file mode 100644 index 000000000..1c1facbf3 --- /dev/null +++ b/src/languages/ja/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "ランダムな猫の画像を送信" + } +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/dice.strings.ts b/src/languages/ja/slash-commands/dice.strings.ts new file mode 100644 index 000000000..62abd9009 --- /dev/null +++ b/src/languages/ja/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "サイコロを振る", + options: { + dice: "振るサイコロの数(デフォルト:1)", + sides: "サイコロの面の数(デフォルト:6)" + } + }, + response: "{username} が {diceCount}日{diceSides} をロールし、 {total} を獲得" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/dog.strings.ts b/src/languages/ja/slash-commands/dog.strings.ts new file mode 100644 index 000000000..86d9482b3 --- /dev/null +++ b/src/languages/ja/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "ランダムな犬の画像を送信する" + } +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/info.strings.ts b/src/languages/ja/slash-commands/info.strings.ts new file mode 100644 index 000000000..c0171dcb9 --- /dev/null +++ b/src/languages/ja/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "ボットの情報を取得する" + }, + guilds: "このシャードのギルド", + uptime: "アップタイム", + shard: "現在のシャード", + version: "バージョン", + owner: "オーナー", + node: "Node.jsのバージョン", + ram: "メモリ使用量", + os: "オペレーティングシステム", + cpu: "CPU使用率", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/inspire.strings.ts b/src/languages/ja/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..5375bb2e3 --- /dev/null +++ b/src/languages/ja/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "inspirobot.comからランダムに引用する" + } +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/invite.strings.ts b/src/languages/ja/slash-commands/invite.strings.ts new file mode 100644 index 000000000..03b33831b --- /dev/null +++ b/src/languages/ja/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "ボットの招待リンクの取得" + }, + done: "以下のリンクから招待してください。 {invite}となります。", + private: "このボットはプライベートとしてマークされているので、 {owner} に頼んであなたのサーバーに招待してください。" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/meme.strings.ts b/src/languages/ja/slash-commands/meme.strings.ts new file mode 100644 index 000000000..e90cd186a --- /dev/null +++ b/src/languages/ja/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "ランダムなミームを得る" + } +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/ping.strings.ts b/src/languages/ja/slash-commands/ping.strings.ts new file mode 100644 index 000000000..b9411a4a6 --- /dev/null +++ b/src/languages/ja/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong!(gateway: {gateway}ms) (rest: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/tag.strings.ts b/src/languages/ja/slash-commands/tag.strings.ts new file mode 100644 index 000000000..ebc67be09 --- /dev/null +++ b/src/languages/ja/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "新規タグの作成", + delete: "タグの削除", + edit: "タグの編集", + info: "タグの情報を取得する", + show: "タグの表示" + }, + options: { + name: "タグの名前", + content: "タグの内容", + args: "コマンドに渡す引数" + } + }, + errors: { + notFound: "そのようなタグはありません。", + conflict: "その名前のタグがすでに存在する", + illegal: "タグにそのような名前をつけることはできません。", + notYours: "あなたはそのタグを所有していないので、編集することはできません。" + }, + owner: "そのタグの所有者は {user} です", + created: "タグの作成", + deleted: "あなたのタグは削除されました。", + updated: false, + createdAt: "作成場所", + updatedAt: "更新日", + ranking: "ランキング" +}; \ No newline at end of file diff --git a/src/languages/ja/slash-commands/urbandictionary.strings.ts b/src/languages/ja/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..a4711fe1a --- /dev/null +++ b/src/languages/ja/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "検索 都市辞書", + options: { + query: "検索のポイント" + } + }, + errors: { + notFound: "この言葉は、Urban Dictionaryでさえも知らないほど、めちゃくちゃなものです。" + }, + example: "例", + noExample: "[例示がない]" +}; \ No newline at end of file diff --git a/src/languages/ko/common.strings.ts b/src/languages/ko/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/ko/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/8ball.strings.ts b/src/languages/ko/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/ko/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/advice.strings.ts b/src/languages/ko/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/ko/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/booru.strings.ts b/src/languages/ko/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/ko/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/cat.strings.ts b/src/languages/ko/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/ko/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/dice.strings.ts b/src/languages/ko/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/ko/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/dog.strings.ts b/src/languages/ko/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/ko/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/info.strings.ts b/src/languages/ko/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/ko/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/inspire.strings.ts b/src/languages/ko/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/ko/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/invite.strings.ts b/src/languages/ko/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/ko/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/meme.strings.ts b/src/languages/ko/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/ko/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/ping.strings.ts b/src/languages/ko/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/ko/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/tag.strings.ts b/src/languages/ko/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/ko/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/ko/slash-commands/urbandictionary.strings.ts b/src/languages/ko/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/ko/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/lt/common.strings.ts b/src/languages/lt/common.strings.ts new file mode 100644 index 000000000..e0de34448 --- /dev/null +++ b/src/languages/lt/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Oho! Ši komanda nepavyko, suteikite savininkui šį klaidos kodą: `{uuid}`", + softFail: "Kažkas nepavyko, bandykite vėliau", + attachmentNeeded: "Naudodami šią komandą įkelkite paveikslėlį", + nsfwDisabled: "Šis kanalas turi būti pažymėtas kaip NSFW, kad būtų galima naudoti šią komandą", + cooldown: "Ši komanda yra atšaldyta, bandykite dar kartą vėliau", + dmDisabled: "Ši komanda negali būti naudojama DM", + permsMissingOwn: "Man trūksta šių leidimų: `{perms}`", + permsMissingUser: "Jums trūksta šių leidimų: `{perms}`", + working: "Dirbame prie to...", + noResults: "Rezultatų nerasta", + noResultsFor: "Nerasta jokių rezultatų `{query}`", + open: "Atviras" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/8ball.strings.ts b/src/languages/lt/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..af0eebdf0 --- /dev/null +++ b/src/languages/lt/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Klauskite magiškojo 8 kamuoliuko patarimo" + }, + prefix: "Magiškasis 8 kamuolys sako: `{response}`", + choices: ["Ženklai rodo, kad taip", "Taip", "Atsakymas miglotas, pabandykite dar kartą", "Be jokios abejonės", "Mano šaltiniai teigia, kad ne", "Mano supratimu, taip", "Galite juo pasikliauti", "Susikaupkite ir paklauskite dar kartą", "\"Outlook\" nėra tokia gera", "Tai neabejotinai taip", "Geriau dabar jums nesakyti", "Labai abejotina", "Taip - neabejotinai", "Tai tikrai", "Negalima prognozuoti dabar", "Labiausiai tikėtina, kad", "Paklauskite dar kartą vėliau", "Mano atsakymas yra ne", "\"Outlook\" geras", "Nesitikėkite to", "Kam tai rūpi?", "Niekada, niekada, niekada", "Galbūt", "Yra nedidelė tikimybė, kad"] +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/advice.strings.ts b/src/languages/lt/slash-commands/advice.strings.ts new file mode 100644 index 000000000..7177e866a --- /dev/null +++ b/src/languages/lt/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Gaukite naudingų patarimų" + } +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/booru.strings.ts b/src/languages/lt/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0dfd8924c --- /dev/null +++ b/src/languages/lt/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Ko ieškoti" + } + }, + score: "Rezultatai", + favorites: "Mėgstamiausi" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/cat.strings.ts b/src/languages/lt/slash-commands/cat.strings.ts new file mode 100644 index 000000000..53b4e3e43 --- /dev/null +++ b/src/languages/lt/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "siunčia atsitiktinį katės atvaizdą" + } +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/dice.strings.ts b/src/languages/lt/slash-commands/dice.strings.ts new file mode 100644 index 000000000..edf5a9ac9 --- /dev/null +++ b/src/languages/lt/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Meskite kelis kauliukus", + options: { + dice: "metamų kauliukų skaičius (numatytoji reikšmė: 1)", + sides: "kauliuko pusių skaičius (numatytoji reikšmė: 6)" + } + }, + response: "{username} sukasi {diceCount}d{diceSides} ir gavo {total}" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/dog.strings.ts b/src/languages/lt/slash-commands/dog.strings.ts new file mode 100644 index 000000000..b9e2feab9 --- /dev/null +++ b/src/languages/lt/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "siunčia atsitiktinį šuns paveikslėlį" + } +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/info.strings.ts b/src/languages/lt/slash-commands/info.strings.ts new file mode 100644 index 000000000..ccf31a4f6 --- /dev/null +++ b/src/languages/lt/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Gaukite informacijos apie botą" + }, + guilds: "Šios valdos gildijos", + uptime: "Veikimo laikas", + shard: "Dabartinė dalelė", + version: "Versija", + owner: "Savininkas", + node: "Node.js versija", + ram: "Atminties naudojimas", + os: "Operacinė sistema", + cpu: "CPU naudojimas", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/inspire.strings.ts b/src/languages/lt/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..7282a05ae --- /dev/null +++ b/src/languages/lt/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Gaukite atsitiktinę citatą iš inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/invite.strings.ts b/src/languages/lt/slash-commands/invite.strings.ts new file mode 100644 index 000000000..52cd5a7cb --- /dev/null +++ b/src/languages/lt/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Gaukite boto kvietimo nuorodą" + }, + done: "Norėdami mane pakviesti, naudokite šią nuorodą: {invite}", + private: "Šis botas pažymėtas kaip privatus, prašome paprašyti {owner} pakviesti mane į savo serverį" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/meme.strings.ts b/src/languages/lt/slash-commands/meme.strings.ts new file mode 100644 index 000000000..a2a725b4a --- /dev/null +++ b/src/languages/lt/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Gaukite atsitiktinį memą" + } +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/ping.strings.ts b/src/languages/lt/slash-commands/ping.strings.ts new file mode 100644 index 000000000..d51b08ac9 --- /dev/null +++ b/src/languages/lt/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong! (vartai: {gateway}ms) (likusi dalis: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/tag.strings.ts b/src/languages/lt/slash-commands/tag.strings.ts new file mode 100644 index 000000000..4e1fd3699 --- /dev/null +++ b/src/languages/lt/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Sukurti naują žymą", + delete: "Ištrinti žymą", + edit: "Redaguoti žymą", + info: "Gauti informacijos apie žymą", + show: "Rodyti žymą" + }, + options: { + name: "Žymos pavadinimas", + content: "Žymos turinys", + args: "Argumentai, kuriuos reikia perduoti komandai" + } + }, + errors: { + notFound: "Tokios žymos nėra", + conflict: "Žyma su tokiu pavadinimu jau egzistuoja", + illegal: "Negalite pavadinti savo žymės taip", + notYours: "Ši žyma jums nepriklauso, todėl negalite jos redaguoti" + }, + owner: "Šios žymės savininkas yra {user}", + created: "Jūsų žyma buvo sukurta", + deleted: "Jūsų žyma buvo ištrinta", + updated: false, + createdAt: "Sukurta ne", + updatedAt: "Atnaujinta", + ranking: "Reitingas" +}; \ No newline at end of file diff --git a/src/languages/lt/slash-commands/urbandictionary.strings.ts b/src/languages/lt/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..1c2408814 --- /dev/null +++ b/src/languages/lt/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Ieškoti Urban Dictionary", + options: { + query: "Ko ieškoti" + } + }, + errors: { + notFound: "Šis žodis yra toks sugadintas, kad jo nežino net \"Urban Dictionary" + }, + example: "Pavyzdys", + noExample: "[pavyzdys nepateiktas]" +}; \ No newline at end of file diff --git a/src/languages/nl/common.strings.ts b/src/languages/nl/common.strings.ts new file mode 100644 index 000000000..ff8c2c197 --- /dev/null +++ b/src/languages/nl/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Jakkes! Deze opdracht is mislukt, geef mijn eigenaar deze foutcode: `{uuid}`", + softFail: "Er ging iets mis, probeer het later nog eens", + attachmentNeeded: "Upload een afbeelding tijdens het gebruik van dit commando", + nsfwDisabled: "Dit kanaal moet worden gemarkeerd als NSFW voordat dit commando kan worden gebruikt", + cooldown: "Dit commando is op cooldown, probeer het later opnieuw", + dmDisabled: "Dit commando kan niet worden gebruikt in PM's", + permsMissingOwn: "Ik mis de volgende machtigingen: `{perms}`", + permsMissingUser: "Je mist de volgende machtigingen: `{perms}`", + working: "Bezig...", + noResults: "Geen zoekresultaten", + noResultsFor: "Geen resultaten gevonden voor `{query}`", + open: 'Open' +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/8ball.strings.ts b/src/languages/nl/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..91fa0ebee --- /dev/null +++ b/src/languages/nl/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Vraag de magische 8-ball om advies" + }, + prefix: "De magische 8 bal zegt: `{response}`", + choices: ["Het ziet er naar uit", "Ja", "Wazig antwoord, probeer het opnieuw", "Zonder twijfel", "Mijn bronnen zeggen van niet", "Zoals ik het zie, ja", "Je kan er op rekenen", "Concentreer en vraag opnieuw", "Het ziet er niet goed uit", "Absoluut", "Dat kan ik je nu beter niet vertellen", "Onwaarschijnlijk", "Ja, zeker", "Zeker", "Kan het nu niet voorspellen", "Zeer waarschijnlijk", "Vraag het later weer", "Ik zeg nee", "Ziet er goed uit", "Reken er maar niet op", "Wie boeit het?", "Nooit, ooit, ooit", "Misschien", "Er is een kleine kans"] +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/advice.strings.ts b/src/languages/nl/slash-commands/advice.strings.ts new file mode 100644 index 000000000..6924436c1 --- /dev/null +++ b/src/languages/nl/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Krijg behulpzaam advies" + } +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/booru.strings.ts b/src/languages/nl/slash-commands/booru.strings.ts new file mode 100644 index 000000000..16439a7aa --- /dev/null +++ b/src/languages/nl/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Tekst om naar te zoeken" + } + }, + score: 'Score', + favorites: "Favorieten" +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/cat.strings.ts b/src/languages/nl/slash-commands/cat.strings.ts new file mode 100644 index 000000000..c7efa3508 --- /dev/null +++ b/src/languages/nl/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Stuurt een willekeurige kattenfoto" + } +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/dice.strings.ts b/src/languages/nl/slash-commands/dice.strings.ts new file mode 100644 index 000000000..45124017a --- /dev/null +++ b/src/languages/nl/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Gooi wat dobbelstenen", + options: { + dice: "Het aantal dobbelstenen dat moet worden gegooid (standaard: 1)", + sides: "Het aantal zijden van de dobbelsteen (standaard: 6)" + } + }, + response: "{username} rolde {diceCount}d{diceSides} en kreeg {total}" +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/dog.strings.ts b/src/languages/nl/slash-commands/dog.strings.ts new file mode 100644 index 000000000..75b270b5c --- /dev/null +++ b/src/languages/nl/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Stuurt een willekeurige hondenfoto" + } +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/info.strings.ts b/src/languages/nl/slash-commands/info.strings.ts new file mode 100644 index 000000000..c8261e3ec --- /dev/null +++ b/src/languages/nl/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Krijg informatie over de bot" + }, + guilds: "Servers op deze shard", + uptime: "Tijd online", + shard: "Huidige shard", + version: "Versie", + owner: "Eigenaar", + node: "Node.js-versie", + ram: "Geheugengebruik", + os: "Besturingssysteem", + cpu: "CPU gebruik", + poweredBy: "Mogelijk gemaakt door WildBeast" +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/inspire.strings.ts b/src/languages/nl/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..5d5488ac3 --- /dev/null +++ b/src/languages/nl/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Ontvang een willekeurige quote van inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/invite.strings.ts b/src/languages/nl/slash-commands/invite.strings.ts new file mode 100644 index 000000000..56d769e96 --- /dev/null +++ b/src/languages/nl/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Bekijk de uitnodigingslink van de bot" + }, + done: "Gebruik de volgende link om me uit te nodigen: {invite}", + private: "Deze bot is gemarkeerd als privé, vraag {owner} om me uit te nodigen voor jouw server" +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/meme.strings.ts b/src/languages/nl/slash-commands/meme.strings.ts new file mode 100644 index 000000000..5f78075de --- /dev/null +++ b/src/languages/nl/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Krijg een willekeurige meme" + } +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/ping.strings.ts b/src/languages/nl/slash-commands/ping.strings.ts new file mode 100644 index 000000000..fee7bee79 --- /dev/null +++ b/src/languages/nl/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: "Ping de bot" + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/tag.strings.ts b/src/languages/nl/slash-commands/tag.strings.ts new file mode 100644 index 000000000..e35896cee --- /dev/null +++ b/src/languages/nl/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Een nieuwe tag maken", + delete: "Een tag verwijderen", + edit: "Een tag bewerken", + info: "Informatie krijgen over een tag", + show: "Toon een tag" + }, + options: { + name: "De naam van de tag", + content: "De inhoud van de tag", + args: "De argumenten om door te geven aan het commando" + } + }, + errors: { + notFound: "Geen tag gevonden", + conflict: "Een tag met die naam bestaat al", + illegal: "Je kunt je tag niet zo noemen", + notYours: "Je bent niet de eigenaar van die tag, dus je kunt het niet bewerken" + }, + owner: "De eigenaar van die tag is {user}", + created: "Je tag is gemaakt", + deleted: "Je tag is verwijderd", + updated: false, + createdAt: "Aangemaakt op", + updatedAt: "Bijgewerkt op", + ranking: "Rangschikking" +}; \ No newline at end of file diff --git a/src/languages/nl/slash-commands/urbandictionary.strings.ts b/src/languages/nl/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..63f7770b5 --- /dev/null +++ b/src/languages/nl/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Zoek in Urban Dictionary", + options: { + query: "Tekst om naar te zoeken" + } + }, + errors: { + notFound: "Dit woord is zo gestoord, zelfs Urban Dictionary kent het niet" + }, + example: "Voorbeeld", + noExample: "[geen voorbeeld gegeven]" +}; \ No newline at end of file diff --git a/src/languages/no/common.strings.ts b/src/languages/no/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/no/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/8ball.strings.ts b/src/languages/no/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/no/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/advice.strings.ts b/src/languages/no/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/no/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/booru.strings.ts b/src/languages/no/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/no/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/cat.strings.ts b/src/languages/no/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/no/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/dice.strings.ts b/src/languages/no/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/no/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/dog.strings.ts b/src/languages/no/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/no/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/info.strings.ts b/src/languages/no/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/no/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/inspire.strings.ts b/src/languages/no/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/no/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/invite.strings.ts b/src/languages/no/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/no/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/meme.strings.ts b/src/languages/no/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/no/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/ping.strings.ts b/src/languages/no/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/no/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/tag.strings.ts b/src/languages/no/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/no/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/no/slash-commands/urbandictionary.strings.ts b/src/languages/no/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/no/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/pl/common.strings.ts b/src/languages/pl/common.strings.ts new file mode 100644 index 000000000..e2cf0352c --- /dev/null +++ b/src/languages/pl/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Yikes! Ta komenda nie powiodła się, proszę podać mojemu właścicielowi ten kod błędu: `{uuid}`", + softFail: "Coś poszło nie tak, spróbuj ponownie później", + attachmentNeeded: "Proszę załadować obraz podczas używania tej komendy", + nsfwDisabled: "Ten kanał musi być oznaczony jako NSFW zanim będzie można użyć tej komendy", + cooldown: "Ta komenda jest na wyczerpaniu, spróbuj ponownie później", + dmDisabled: "Tego polecenia nie można używać w DM", + permsMissingOwn: "Brakuje mi następujących uprawnień: `{perms}`", + permsMissingUser: "Brakuje Ci następujących uprawnień: `{perms}`", + working: "Pracuję nad tym...", + noResults: "Nie znaleziono żadnych wyników", + noResultsFor: "Nie znaleziono żadnych wyników dla `{query}`", + open: "Otwórz" +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/8ball.strings.ts b/src/languages/pl/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..4073ac4f3 --- /dev/null +++ b/src/languages/pl/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Zapytaj o radę magiczną kulę 8" + }, + prefix: "Magiczna 8 piłka mówi: `{response}`", + choices: ["Znaki wskazują, że tak", "Tak", "Odpowiedź zamglona, spróbuj ponownie", "Bez wątpienia", "Moje źródła mówią, że nie.", "Jak widzę, tak", "Można na nim polegać", "Skoncentruj się i zapytaj ponownie", "Perspektywa nie tak dobra", "Zdecydowanie tak", "Lepiej nie mówić ci teraz.", "Bardzo wątpliwe", "Tak - zdecydowanie", "Jest pewne, że", "Nie można teraz przewidzieć", "Najprawdopodobniej", "Zapytaj ponownie później", "Moja odpowiedź brzmi: nie", "Perspektywy dobre", "Nie licz na to.", "Kogo to obchodzi?", "Nigdy, przenigdy, przenigdy", "Prawdopodobnie", "Jest mała szansa, że"] +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/advice.strings.ts b/src/languages/pl/slash-commands/advice.strings.ts new file mode 100644 index 000000000..b9f7b21b0 --- /dev/null +++ b/src/languages/pl/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Uzyskaj kilka pomocnych rad" + } +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/booru.strings.ts b/src/languages/pl/slash-commands/booru.strings.ts new file mode 100644 index 000000000..8a83cdae7 --- /dev/null +++ b/src/languages/pl/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Czego należy szukać" + } + }, + score: "Wynik", + favorites: "Ulubione" +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/cat.strings.ts b/src/languages/pl/slash-commands/cat.strings.ts new file mode 100644 index 000000000..8037784af --- /dev/null +++ b/src/languages/pl/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Wysyła losowy obrazek kota" + } +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/dice.strings.ts b/src/languages/pl/slash-commands/dice.strings.ts new file mode 100644 index 000000000..840454658 --- /dev/null +++ b/src/languages/pl/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Rzuć trochę kostką", + options: { + dice: "Liczba kostek do rzucenia (domyślnie: 1)", + sides: "Liczba stron na kostce (domyślnie: 6)" + } + }, + response: "{username} toczył się {diceCount}d{diceSides} i otrzymał {total}." +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/dog.strings.ts b/src/languages/pl/slash-commands/dog.strings.ts new file mode 100644 index 000000000..6a47a0c5c --- /dev/null +++ b/src/languages/pl/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Wysyła losowy obrazek psa" + } +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/info.strings.ts b/src/languages/pl/slash-commands/info.strings.ts new file mode 100644 index 000000000..c185ebf42 --- /dev/null +++ b/src/languages/pl/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Uzyskaj informacje na temat bota" + }, + guilds: "Gildie na tej planszy", + uptime: 'Uptime', + shard: "Aktualny oddział", + version: "Wersja", + owner: "Właściciel", + node: "Wersja Node.js", + ram: "Wykorzystanie pamięci", + os: "System operacyjny", + cpu: "Użycie CPU", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/inspire.strings.ts b/src/languages/pl/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..6cc88eaee --- /dev/null +++ b/src/languages/pl/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Pobierz losową wycenę z inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/invite.strings.ts b/src/languages/pl/slash-commands/invite.strings.ts new file mode 100644 index 000000000..aa29336f0 --- /dev/null +++ b/src/languages/pl/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Uzyskaj link do zaproszenia dla bota" + }, + done: "Użyj następującego linku, aby mnie zaprosić: {invite}", + private: "Ten bot jest oznaczony jako prywatny, proszę poprosić {owner} o zaproszenie mnie na swój serwer" +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/meme.strings.ts b/src/languages/pl/slash-commands/meme.strings.ts new file mode 100644 index 000000000..a4a91bab6 --- /dev/null +++ b/src/languages/pl/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Pobierz losowy meme" + } +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/ping.strings.ts b/src/languages/pl/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/pl/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/tag.strings.ts b/src/languages/pl/slash-commands/tag.strings.ts new file mode 100644 index 000000000..bf683d1de --- /dev/null +++ b/src/languages/pl/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Utwórz nowy tag", + delete: "Usuń znacznik", + edit: "Edytuj tag", + info: "Uzyskaj informacje o tagu", + show: "Pokaż znacznik" + }, + options: { + name: "Nazwa znacznika", + content: "Zawartość tagu", + args: "Argumenty do przekazania do polecenia" + } + }, + errors: { + notFound: "Brak takiego tagu", + conflict: "Znacznik o tej nazwie już istnieje", + illegal: "Nie możesz nazwać swojego tagu w ten sposób", + notYours: "Nie jesteś właścicielem tego tagu, więc nie możesz go edytować." + }, + owner: "Właścicielem tego tagu jest {user}.", + created: "Twój tag został utworzony", + deleted: "Twój tag został usunięty", + updated: false, + createdAt: "Utworzono w", + updatedAt: "Aktualizowane na", + ranking: 'Ranking' +}; \ No newline at end of file diff --git a/src/languages/pl/slash-commands/urbandictionary.strings.ts b/src/languages/pl/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..a5e55b89a --- /dev/null +++ b/src/languages/pl/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Przeszukaj Miejski Słownik", + options: { + query: "Czego należy szukać" + } + }, + errors: { + notFound: "To słowo jest tak pokręcone, że nawet Urban Dictionary go nie zna." + }, + example: "Przykład", + noExample: "[nie podano przykładu]." +}; \ No newline at end of file diff --git a/src/languages/pt-BR/common.strings.ts b/src/languages/pt-BR/common.strings.ts new file mode 100644 index 000000000..22b492fef --- /dev/null +++ b/src/languages/pt-BR/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Yikes! Este comando falhou, por favor dê ao meu dono este código de erro: `{uuid}`", + softFail: "Algo correu mal, tente novamente mais tarde.", + attachmentNeeded: "Por favor, carregue uma imagem enquanto usa este comando", + nsfwDisabled: "Este canal precisa de ser marcado como NSFW antes que este comando possa ser usado", + cooldown: "Este comando está em cooldown, tente novamente mais tarde.", + dmDisabled: "Este comando não pode ser usado em DMs", + permsMissingOwn: "Faltam-me as seguintes permissões: `{perms}`", + permsMissingUser: "Faltam-lhe as seguintes permissões: `{perms}`", + working: "A trabalhar nisso...", + noResults: "Não foram encontrados resultados", + noResultsFor: "Não foram encontrados resultados para `{query}`", + open: "Aberto" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/8ball.strings.ts b/src/languages/pt-BR/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..faa76ca3e --- /dev/null +++ b/src/languages/pt-BR/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Peça conselhos à bola 8 mágica" + }, + prefix: "A bola mágica 8 diz: `{response}`", + choices: ["Os sinais apontam para sim", "Sim", "Responda nebuloso, tente novamente", "Sem dúvida", "As minhas fontes dizem que não.", "A meu ver, sim.", "Você pode contar com isso.", "Concentre-se e pergunte novamente", "Perspectivas não tão boas", "É decididamente assim", "É melhor não lhe dizer agora.", "Muito duvidoso.", "Sim - definitivamente", "É certo que", "Não é possível prever agora", "Muito provavelmente", "Pergunte novamente mais tarde", "A minha resposta é não.", "Perspectiva boa", "Não conte com isso.", "Quem se importa?", "Nunca, nunca, nunca.", "Possivelmente", "Há uma pequena hipótese"] +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/advice.strings.ts b/src/languages/pt-BR/slash-commands/advice.strings.ts new file mode 100644 index 000000000..0880d62fe --- /dev/null +++ b/src/languages/pt-BR/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenha alguns conselhos úteis" + } +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/booru.strings.ts b/src/languages/pt-BR/slash-commands/booru.strings.ts new file mode 100644 index 000000000..d203e53dd --- /dev/null +++ b/src/languages/pt-BR/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "O que pesquisar" + } + }, + score: "Pontuação", + favorites: "Favoritos" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/cat.strings.ts b/src/languages/pt-BR/slash-commands/cat.strings.ts new file mode 100644 index 000000000..df45f0a23 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envia uma imagem aleatória do gato" + } +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/dice.strings.ts b/src/languages/pt-BR/slash-commands/dice.strings.ts new file mode 100644 index 000000000..bd45a5944 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Lançar alguns dados", + options: { + dice: "O número de dados a lançar (padrão: 1)", + sides: "O número de lados nos dados (padrão: 6)" + } + }, + response: "{username} rolou {diceCount}d{diceSides} e obteve {total}" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/dog.strings.ts b/src/languages/pt-BR/slash-commands/dog.strings.ts new file mode 100644 index 000000000..3dac29f06 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Envia uma imagem de cão aleatória" + } +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/info.strings.ts b/src/languages/pt-BR/slash-commands/info.strings.ts new file mode 100644 index 000000000..d5039d1b7 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Obter informações sobre o bot" + }, + guilds: "Guildas nesta lasca", + uptime: "Horário de funcionamento", + shard: "Fragmento de corrente", + version: "Versão", + owner: "Proprietário", + node: "Versão Node.js", + ram: "Uso de memória", + os: "Sistema operacional", + cpu: "uso de CPU", + poweredBy: "Movido pelo WildBeast" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/inspire.strings.ts b/src/languages/pt-BR/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..6a8de217b --- /dev/null +++ b/src/languages/pt-BR/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obtenha uma citação aleatória do inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/invite.strings.ts b/src/languages/pt-BR/slash-commands/invite.strings.ts new file mode 100644 index 000000000..070c66951 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Obtenha um link de convite para o bot" + }, + done: "Use o seguinte link para me convidar: {invite}", + private: "Este bot está marcado como privado, por favor peça a {owner} para me convidar para o seu servidor" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/meme.strings.ts b/src/languages/pt-BR/slash-commands/meme.strings.ts new file mode 100644 index 000000000..de4a7601c --- /dev/null +++ b/src/languages/pt-BR/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Receba um memorando aleatório" + } +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/ping.strings.ts b/src/languages/pt-BR/slash-commands/ping.strings.ts new file mode 100644 index 000000000..8874fe055 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong! (gateway: {gateway}ms) (resto: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/tag.strings.ts b/src/languages/pt-BR/slash-commands/tag.strings.ts new file mode 100644 index 000000000..077e9b4e2 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Criar uma nova etiqueta", + delete: "Eliminar uma etiqueta", + edit: "Editar uma etiqueta", + info: "Obter informações sobre uma etiqueta", + show: "Mostrar uma etiqueta" + }, + options: { + name: "O nome da etiqueta", + content: "O conteúdo da etiqueta", + args: "Os argumentos para passar para o comando" + } + }, + errors: { + notFound: "Essa etiqueta não existe", + conflict: "Já existe uma etiqueta com esse nome", + illegal: "Você não pode nomear a sua etiqueta que", + notYours: "Não tens essa etiqueta, por isso não a podes editar." + }, + owner: "O dono dessa etiqueta é {user}", + created: "A sua etiqueta foi criada", + deleted: "A sua etiqueta foi apagada.", + updated: false, + createdAt: "Criado em", + updatedAt: "Atualizado em", + ranking: 'Ranking' +}; \ No newline at end of file diff --git a/src/languages/pt-BR/slash-commands/urbandictionary.strings.ts b/src/languages/pt-BR/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..5093d4084 --- /dev/null +++ b/src/languages/pt-BR/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Pesquisar no Dicionário Urbano", + options: { + query: "O que pesquisar" + } + }, + errors: { + notFound: "Esta palavra é tão lixada que nem o Urban Dictionary a conhece." + }, + example: "Exemplo", + noExample: "[nenhum exemplo fornecido]" +}; \ No newline at end of file diff --git a/src/languages/ro/common.strings.ts b/src/languages/ro/common.strings.ts new file mode 100644 index 000000000..6b5ffa1e3 --- /dev/null +++ b/src/languages/ro/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Yikes! Această comandă a eșuat, vă rugăm să transmiteți proprietarului meu acest cod de eroare: `{uuid}`", + softFail: "Ceva nu a mers bine, încercați din nou mai târziu", + attachmentNeeded: "Vă rugăm să încărcați o imagine în timp ce utilizați această comandă", + nsfwDisabled: "Acest canal trebuie să fie marcat ca NSFW înainte ca această comandă să poată fi folosită.", + cooldown: "Această comandă este în curs de răcire, încercați din nou mai târziu", + dmDisabled: "Această comandă nu poate fi utilizată în DM-uri", + permsMissingOwn: "Îmi lipsesc următoarele permisiuni: `{perms}`", + permsMissingUser: "Îți lipsesc următoarele permisiuni: `{perms}`", + working: "Lucrez la asta...", + noResults: "Nu s-au găsit rezultate", + noResultsFor: "Nu s-au găsit rezultate pentru `{query}` `", + open: "Deschideți" +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/8ball.strings.ts b/src/languages/ro/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..241f05c11 --- /dev/null +++ b/src/languages/ro/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Cereți sfatul bilei magice 8" + }, + prefix: "Mingea magică 8 spune: `{response}`", + choices: ["Semnele arată că da", "Da", "Răspuns neclar, încercați din nou", "Fără îndoială", "Sursele mele spun că nu.", "Din punctul meu de vedere, da.", "Vă puteți baza pe ea", "Concentrează-te și întreabă din nou", "Outlook nu este atât de bun", "În mod cert este așa", "Mai bine nu-ți spun acum.", "Foarte îndoielnic", "Da - cu siguranță", "Este sigur că", "Nu pot prezice acum", "Cel mai probabil", "Întrebați din nou mai târziu", "Răspunsul meu este nu", "Outlook bun", "Nu vă bazați pe asta", "Cui îi pasă?", "Niciodată, niciodată, niciodată, niciodată", "Posibil", "Există o mică șansă"] +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/advice.strings.ts b/src/languages/ro/slash-commands/advice.strings.ts new file mode 100644 index 000000000..ce29255b2 --- /dev/null +++ b/src/languages/ro/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obțineți câteva sfaturi utile" + } +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/booru.strings.ts b/src/languages/ro/slash-commands/booru.strings.ts new file mode 100644 index 000000000..6549a8dd6 --- /dev/null +++ b/src/languages/ro/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Ce trebuie să căutați" + } + }, + score: "Scor", + favorites: "Favorite" +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/cat.strings.ts b/src/languages/ro/slash-commands/cat.strings.ts new file mode 100644 index 000000000..46042e4ef --- /dev/null +++ b/src/languages/ro/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Trimite o imagine aleatorie a unei pisici" + } +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/dice.strings.ts b/src/languages/ro/slash-commands/dice.strings.ts new file mode 100644 index 000000000..6bd7ff13a --- /dev/null +++ b/src/languages/ro/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Aruncă niște zaruri", + options: { + dice: "Numărul de zaruri de aruncat (implicit: 1)", + sides: "Numărul de fețe ale zarurilor (implicit: 6)" + } + }, + response: "{username} a rulat {diceCount}d{diceSides} și a obținut {total}." +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/dog.strings.ts b/src/languages/ro/slash-commands/dog.strings.ts new file mode 100644 index 000000000..fd4de2da2 --- /dev/null +++ b/src/languages/ro/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Trimite o imagine aleatorie a unui câine" + } +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/info.strings.ts b/src/languages/ro/slash-commands/info.strings.ts new file mode 100644 index 000000000..1d8de865b --- /dev/null +++ b/src/languages/ro/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Obțineți informații despre robot" + }, + guilds: "Ghildele de pe acest shard", + uptime: "Timp de funcționare", + shard: "Shardul actual", + version: "Versiunea", + owner: "Proprietar", + node: "Versiunea Node.js", + ram: "Utilizarea memoriei", + os: "Sistem de operare", + cpu: "Utilizarea CPU", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/inspire.strings.ts b/src/languages/ro/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..eee19c95a --- /dev/null +++ b/src/languages/ro/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obțineți un citat aleatoriu de la inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/invite.strings.ts b/src/languages/ro/slash-commands/invite.strings.ts new file mode 100644 index 000000000..07fa5dbcb --- /dev/null +++ b/src/languages/ro/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Obțineți un link de invitație pentru robot" + }, + done: "Folosiți următorul link pentru a mă invita: {invite}", + private: "Acest bot este marcat ca fiind privat, vă rugăm să cereți {owner} să mă invitați pe serverul dvs." +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/meme.strings.ts b/src/languages/ro/slash-commands/meme.strings.ts new file mode 100644 index 000000000..8b9ef1072 --- /dev/null +++ b/src/languages/ro/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Obțineți un meme aleatoriu" + } +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/ping.strings.ts b/src/languages/ro/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/ro/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/tag.strings.ts b/src/languages/ro/slash-commands/tag.strings.ts new file mode 100644 index 000000000..4391b57af --- /dev/null +++ b/src/languages/ro/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Creați o nouă etichetă", + delete: "Ștergeți o etichetă", + edit: "Editați o etichetă", + info: "Obțineți informații despre o etichetă", + show: "Afișați o etichetă" + }, + options: { + name: "Numele etichetei", + content: "Conținutul etichetei", + args: "Argumentele care trebuie transmise comenzii" + } + }, + errors: { + notFound: "Nu există o astfel de etichetă", + conflict: "O etichetă cu acest nume există deja", + illegal: "Nu-ți poți numi eticheta așa.", + notYours: "Nu dețineți această etichetă, deci nu o puteți edita." + }, + owner: "Proprietarul acestei etichete este {user}", + created: "Eticheta ta a fost creată", + deleted: "Eticheta ta a fost ștearsă", + updated: false, + createdAt: "Creat la", + updatedAt: "Actualizat la", + ranking: "Clasament" +}; \ No newline at end of file diff --git a/src/languages/ro/slash-commands/urbandictionary.strings.ts b/src/languages/ro/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..b021e3261 --- /dev/null +++ b/src/languages/ro/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Căutare în Dicționarul Urban", + options: { + query: "Ce trebuie să căutați" + } + }, + errors: { + notFound: "Cuvântul ăsta e atât de aiurea, încât nici măcar Urban Dictionary nu-l știe" + }, + example: "Exemplu", + noExample: "[nu este furnizat niciun exemplu]" +}; \ No newline at end of file diff --git a/src/languages/ru/common.strings.ts b/src/languages/ru/common.strings.ts new file mode 100644 index 000000000..e687be5f1 --- /dev/null +++ b/src/languages/ru/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Ой! Эта команда не сработала, пожалуйста, сообщите моему владельцу этот код ошибки: `{uuid}`", + softFail: "Что-то пошло не так, повторите попытку позже", + attachmentNeeded: "Пожалуйста, загрузите изображение при использовании этой команды", + nsfwDisabled: "Этот канал должен быть помечен как NSFW, прежде чем можно будет использовать эту команду", + cooldown: "Эта команда приостановлена, повторите попытку позже", + dmDisabled: "Эта команда не может быть использована в DM", + permsMissingOwn: "Мне не хватает следующих разрешений: `{perms}`", + permsMissingUser: "Вам не хватает следующих разрешений: `{perms}`", + working: "Работаю над этим...", + noResults: "Результаты не найдены", + noResultsFor: "Не найдено результатов для `{query}`", + open: "Открыть" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/8ball.strings.ts b/src/languages/ru/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..68d89be57 --- /dev/null +++ b/src/languages/ru/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Спросите совета у волшебного 8-шарика" + }, + prefix: "Волшебный шар 8 говорит: `{response}`", + choices: ["Признаки указывают на то, что да", "Да", "Ответ нечеткий, попробуйте еще раз", "Без сомнения", "Мои источники говорят, что нет.", "Как я вижу, да.", "Вы можете положиться на него", "Сконцентрируйтесь и спросите снова", "Outlook не очень хорошо", "Это однозначно так.", "Лучше не говорить тебе сейчас.", "Очень сомнительно", "Да - определенно", "Это точно", "Сейчас не могу предсказать", "Скорее всего", "Спросите позже", "Мой ответ - нет.", "Перспективы хорошие", "Не рассчитывайте на это", "Кого это волнует?", "Никогда, никогда, никогда", "Возможно,", "Есть небольшой шанс"] +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/advice.strings.ts b/src/languages/ru/slash-commands/advice.strings.ts new file mode 100644 index 000000000..eccd71f87 --- /dev/null +++ b/src/languages/ru/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Получите полезный совет" + } +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/booru.strings.ts b/src/languages/ru/slash-commands/booru.strings.ts new file mode 100644 index 000000000..d6627d936 --- /dev/null +++ b/src/languages/ru/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Что искать" + } + }, + score: "Оценка", + favorites: "Избранное" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/cat.strings.ts b/src/languages/ru/slash-commands/cat.strings.ts new file mode 100644 index 000000000..83e272342 --- /dev/null +++ b/src/languages/ru/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Отправляет случайное изображение кошки" + } +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/dice.strings.ts b/src/languages/ru/slash-commands/dice.strings.ts new file mode 100644 index 000000000..1eb731779 --- /dev/null +++ b/src/languages/ru/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Бросьте кости", + options: { + dice: "Количество игральных костей для броска (по умолчанию: 1)", + sides: "Количество сторон игральной кости (по умолчанию: 6)" + } + }, + response: "{username} бросил {diceCount}d{diceSides} и получил {total}" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/dog.strings.ts b/src/languages/ru/slash-commands/dog.strings.ts new file mode 100644 index 000000000..5785f943b --- /dev/null +++ b/src/languages/ru/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Отправляет случайное изображение собаки" + } +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/info.strings.ts b/src/languages/ru/slash-commands/info.strings.ts new file mode 100644 index 000000000..78612d223 --- /dev/null +++ b/src/languages/ru/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Получение информации о боте" + }, + guilds: "Гильдии на этом осколке", + uptime: "Время работы", + shard: "Текущий осколок", + version: "Версия", + owner: "Владелец", + node: "Версия Node.js", + ram: "Использование памяти", + os: "Операционная система", + cpu: "Использование процессора", + poweredBy: 'Powered by WildBeast' +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/inspire.strings.ts b/src/languages/ru/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..cd3c32b72 --- /dev/null +++ b/src/languages/ru/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Получить случайную цитату с inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/invite.strings.ts b/src/languages/ru/slash-commands/invite.strings.ts new file mode 100644 index 000000000..0be2e6b4b --- /dev/null +++ b/src/languages/ru/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Получение пригласительной ссылки для бота" + }, + done: "Используйте следующую ссылку, чтобы пригласить меня: {invite}", + private: "Этот бот помечен как приватный, пожалуйста, попросите {owner} пригласить меня на ваш сервер" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/meme.strings.ts b/src/languages/ru/slash-commands/meme.strings.ts new file mode 100644 index 000000000..f002305b6 --- /dev/null +++ b/src/languages/ru/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Получите случайный мем" + } +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/ping.strings.ts b/src/languages/ru/slash-commands/ping.strings.ts new file mode 100644 index 000000000..de7e40450 --- /dev/null +++ b/src/languages/ru/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Понг! (шлюз: {gateway}ms) (отдых: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/tag.strings.ts b/src/languages/ru/slash-commands/tag.strings.ts new file mode 100644 index 000000000..0a69703dc --- /dev/null +++ b/src/languages/ru/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Создайте новый тег", + delete: "Удалить метку", + edit: "Редактирование тега", + info: "Получение информации о метке", + show: "Показать метку" + }, + options: { + name: "Имя тега", + content: "Содержание тега", + args: "Аргументы для передачи команде" + } + }, + errors: { + notFound: "Нет такого тега", + conflict: "Тег с таким именем уже существует", + illegal: "Вы не можете назвать свою метку так.", + notYours: "Вы не являетесь владельцем этого тега, поэтому не можете его редактировать" + }, + owner: "Владельцем этого тега является {user}", + created: "Ваша метка была создана", + deleted: "Ваша метка была удалена", + updated: false, + createdAt: "Создано в", + updatedAt: "Обновлено в", + ranking: "Рейтинг" +}; \ No newline at end of file diff --git a/src/languages/ru/slash-commands/urbandictionary.strings.ts b/src/languages/ru/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..245de7aec --- /dev/null +++ b/src/languages/ru/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Поиск в городском словаре", + options: { + query: "Что искать" + } + }, + errors: { + notFound: "Это слово настолько испорчено, что даже Urban Dictionary не знает его." + }, + example: "Пример", + noExample: "[пример не приводится]" +}; \ No newline at end of file diff --git a/src/languages/sv-SE/common.strings.ts b/src/languages/sv-SE/common.strings.ts new file mode 100644 index 000000000..6928efbbd --- /dev/null +++ b/src/languages/sv-SE/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "Oj! Det här kommandot misslyckades, ge min ägare den här felkoden:{uuid}`", + softFail: "Något gick fel, försök igen senare", + attachmentNeeded: "Ladda upp en bild när du använder det här kommandot", + nsfwDisabled: "Den här kanalen måste markeras som NSFW innan det här kommandot kan användas.", + cooldown: "Det här kommandot är avstängt, försök igen senare.", + dmDisabled: "Detta kommando kan inte användas i DMs", + permsMissingOwn: "Jag saknar följande behörigheter:{perms}

", + permsMissingUser: "Du saknar följande behörigheter:{perms}

", + working: "Arbetar på det...", + noResults: "Inga resultat hittades", + noResultsFor: "Inga resultat hittades för `{query}`", + open: "Öppna" +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/8ball.strings.ts b/src/languages/sv-SE/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..0e63c8f7e --- /dev/null +++ b/src/languages/sv-SE/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Fråga den magiska 8-bollen om råd" + }, + prefix: "Den magiska 8-bollen säger: `{response}`", + choices: ["Tecknen pekar på ja", "Ja", "Svaret är dimmigt, försök igen", "Utan tvekan", "Mina källor säger nej", "Som jag ser det, ja", "Du kan lita på den.", "Koncentrera dig och fråga igen", "Outlook inte så bra", "Det är helt klart så.", "Bäst att inte berätta det nu", "Mycket tveksamt", "Ja - definitivt", "Det är säkert att", "Kan inte förutsäga nu", "Mest troligt", "Fråga igen senare", "Mitt svar är nej.", "Utsikterna är bra", "Räkna inte med det", "Vem bryr sig?", "Aldrig, aldrig, aldrig", "Eventuellt", "Det finns en liten chans att"] +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/advice.strings.ts b/src/languages/sv-SE/slash-commands/advice.strings.ts new file mode 100644 index 000000000..069e4ae39 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få några användbara råd" + } +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/booru.strings.ts b/src/languages/sv-SE/slash-commands/booru.strings.ts new file mode 100644 index 000000000..014474ac2 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "Vad du ska söka efter" + } + }, + score: "Resultat", + favorites: "Favoriter" +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/cat.strings.ts b/src/languages/sv-SE/slash-commands/cat.strings.ts new file mode 100644 index 000000000..3562c995f --- /dev/null +++ b/src/languages/sv-SE/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Skickar en slumpmässig kattbild" + } +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/dice.strings.ts b/src/languages/sv-SE/slash-commands/dice.strings.ts new file mode 100644 index 000000000..de8c53856 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "Slå några tärningar", + options: { + dice: "Antalet tärningar som ska kastas (standard: 1).", + sides: "Antalet sidor på tärningen (standard: 6)." + } + }, + response: "{username} kastade {diceCount}d{diceSides} och fick {total}" +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/dog.strings.ts b/src/languages/sv-SE/slash-commands/dog.strings.ts new file mode 100644 index 000000000..1e20061af --- /dev/null +++ b/src/languages/sv-SE/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Skickar en slumpmässig hundbild" + } +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/info.strings.ts b/src/languages/sv-SE/slash-commands/info.strings.ts new file mode 100644 index 000000000..7b18b9dbe --- /dev/null +++ b/src/languages/sv-SE/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "Få information om roboten" + }, + guilds: "Gillen på den här sharden", + uptime: "Driftstid", + shard: "Nuvarande shard", + version: 'Version', + owner: "Ägare", + node: "Node.js-version", + ram: "Användning av minne", + os: "Operativsystem", + cpu: "CPU-användning", + poweredBy: "Drivs av WildBeast" +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/inspire.strings.ts b/src/languages/sv-SE/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..acb3d7134 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få ett slumpmässigt citat från inspirobot.com" + } +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/invite.strings.ts b/src/languages/sv-SE/slash-commands/invite.strings.ts new file mode 100644 index 000000000..04d556520 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "Få en inbjudningslänk för roboten" + }, + done: "Använd följande länk för att bjuda in mig: {invite}", + private: "Denna bot är markerad som privat, be {owner} att bjuda in mig till din server." +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/meme.strings.ts b/src/languages/sv-SE/slash-commands/meme.strings.ts new file mode 100644 index 000000000..4e9a8515e --- /dev/null +++ b/src/languages/sv-SE/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "Få en slumpmässig meme" + } +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/ping.strings.ts b/src/languages/sv-SE/slash-commands/ping.strings.ts new file mode 100644 index 000000000..cf6334c51 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: 'Pong! (gateway: {gateway}ms) (rest: {rest}ms)' +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/tag.strings.ts b/src/languages/sv-SE/slash-commands/tag.strings.ts new file mode 100644 index 000000000..de7147cc7 --- /dev/null +++ b/src/languages/sv-SE/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "Skapa en ny tagg", + delete: "Ta bort en tagg", + edit: "Redigera en tagg", + info: "Få information om en tagg", + show: "Visa en tagg" + }, + options: { + name: "Namnet på taggen", + content: "Innehållet i taggen", + args: "De argument som ska skickas till kommandot" + } + }, + errors: { + notFound: "Ingen sådan tagg", + conflict: "En tagg med det namnet finns redan", + illegal: "Du kan inte ge din tag ett sådant namn till din tag", + notYours: "Du äger inte den taggen, så du kan inte redigera den." + }, + owner: "Ägaren till den taggen är {user}", + created: "Din tagg skapades", + deleted: "Din tagg togs bort", + updated: false, + createdAt: "Skapad på", + updatedAt: "Uppdaterad på", + ranking: 'Ranking' +}; \ No newline at end of file diff --git a/src/languages/sv-SE/slash-commands/urbandictionary.strings.ts b/src/languages/sv-SE/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..5266e433c --- /dev/null +++ b/src/languages/sv-SE/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "Sök i Urban Dictionary", + options: { + query: "Vad du ska söka efter" + } + }, + errors: { + notFound: "Det här ordet är så sjukt att inte ens Urban Dictionary känner till det." + }, + example: "Exempel", + noExample: "[inget exempel]" +}; \ No newline at end of file diff --git a/src/languages/th/common.strings.ts b/src/languages/th/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/th/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/8ball.strings.ts b/src/languages/th/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/th/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/advice.strings.ts b/src/languages/th/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/th/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/booru.strings.ts b/src/languages/th/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/th/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/cat.strings.ts b/src/languages/th/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/th/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/dice.strings.ts b/src/languages/th/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/th/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/dog.strings.ts b/src/languages/th/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/th/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/info.strings.ts b/src/languages/th/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/th/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/inspire.strings.ts b/src/languages/th/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/th/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/invite.strings.ts b/src/languages/th/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/th/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/meme.strings.ts b/src/languages/th/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/th/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/ping.strings.ts b/src/languages/th/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/th/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/tag.strings.ts b/src/languages/th/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/th/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/th/slash-commands/urbandictionary.strings.ts b/src/languages/th/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/th/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/tr/common.strings.ts b/src/languages/tr/common.strings.ts new file mode 100644 index 000000000..60eb4ba46 --- /dev/null +++ b/src/languages/tr/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: "Bir hata oluştu, tekrar deneyin", + attachmentNeeded: "Lütfen bu komutu kullanırken bir görüntü yükleyin", + nsfwDisabled: "Bu komutu kullanmadan önce kanalın Uygunsuz olarak işaretlenmesi gerekir", + cooldown: "Bu komut bekleme süresinde, daha sonra tekrar deneyin", + dmDisabled: "Bu komut direkt mesajlarda kullanılmaz", + permsMissingOwn: "Şu izinler verilmedi: '{perms}'", + permsMissingUser: false, + working: "Üzerinde çalışıyorum...", + noResults: false, + noResultsFor: "'{query}' için sonuç bulunamadı", + open: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/8ball.strings.ts b/src/languages/tr/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..4f5fa7ff2 --- /dev/null +++ b/src/languages/tr/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, "Evet", "Kararsız kaldım, tekrar dene", "Hiç şüphesiz", "Kaynaklarım hayır diyor", "Gördüğüm kadarıyla, evet", "Güvenebilirsin", "Odaklan ve yeniden sor", "Çok da iyi görünmüyor", "Kesinlikle öyle", "Şimdi söylemesem daha iyi", "Oldukça şüpheli", "Evet, kesinlikle", "Gayet kesin", "Şu anda tahmin edemem", "Büyük olasılıkla", "Daha sonra tekrar sor", "Cevabım hayır", "Güzel gözüküyor", "Buna güvenme", "Kimin umurunda?", "Aman diyeyim, sakın", "Muhtemel", "Düşük ihtimal"] +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/advice.strings.ts b/src/languages/tr/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/tr/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/booru.strings.ts b/src/languages/tr/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/tr/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/cat.strings.ts b/src/languages/tr/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/tr/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/dice.strings.ts b/src/languages/tr/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/tr/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/dog.strings.ts b/src/languages/tr/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/tr/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/info.strings.ts b/src/languages/tr/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/tr/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/inspire.strings.ts b/src/languages/tr/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/tr/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/invite.strings.ts b/src/languages/tr/slash-commands/invite.strings.ts new file mode 100644 index 000000000..8f19d29c4 --- /dev/null +++ b/src/languages/tr/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: "Beni davet etmek için bu linki kullan: {invite}", + private: "Bu bot özel olarak işaretlenmiş, sunucuna davet edilmem için {owner} yardımcı olabilir" +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/meme.strings.ts b/src/languages/tr/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/tr/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/ping.strings.ts b/src/languages/tr/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/tr/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/tag.strings.ts b/src/languages/tr/slash-commands/tag.strings.ts new file mode 100644 index 000000000..21f35caaa --- /dev/null +++ b/src/languages/tr/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: "Etiket oluşturuldu", + deleted: "Etiket silindi", + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/tr/slash-commands/urbandictionary.strings.ts b/src/languages/tr/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..1c8e75cd9 --- /dev/null +++ b/src/languages/tr/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: "Örnek", + noExample: "[örnek sağlanmadı]" +}; \ No newline at end of file diff --git a/src/languages/uk/common.strings.ts b/src/languages/uk/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/uk/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/8ball.strings.ts b/src/languages/uk/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/uk/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/advice.strings.ts b/src/languages/uk/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/uk/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/booru.strings.ts b/src/languages/uk/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/uk/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/cat.strings.ts b/src/languages/uk/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/uk/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/dice.strings.ts b/src/languages/uk/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/uk/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/dog.strings.ts b/src/languages/uk/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/uk/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/info.strings.ts b/src/languages/uk/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/uk/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/inspire.strings.ts b/src/languages/uk/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/uk/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/invite.strings.ts b/src/languages/uk/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/uk/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/meme.strings.ts b/src/languages/uk/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/uk/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/ping.strings.ts b/src/languages/uk/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/uk/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/tag.strings.ts b/src/languages/uk/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/uk/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/uk/slash-commands/urbandictionary.strings.ts b/src/languages/uk/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/uk/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/vi/common.strings.ts b/src/languages/vi/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/vi/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/8ball.strings.ts b/src/languages/vi/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/vi/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/advice.strings.ts b/src/languages/vi/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/vi/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/booru.strings.ts b/src/languages/vi/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/vi/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/cat.strings.ts b/src/languages/vi/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/vi/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/dice.strings.ts b/src/languages/vi/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/vi/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/dog.strings.ts b/src/languages/vi/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/vi/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/info.strings.ts b/src/languages/vi/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/vi/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/inspire.strings.ts b/src/languages/vi/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/vi/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/invite.strings.ts b/src/languages/vi/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/vi/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/meme.strings.ts b/src/languages/vi/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/vi/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/ping.strings.ts b/src/languages/vi/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/vi/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/tag.strings.ts b/src/languages/vi/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/vi/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/vi/slash-commands/urbandictionary.strings.ts b/src/languages/vi/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/vi/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/languages/zh-CN/common.strings.ts b/src/languages/zh-CN/common.strings.ts new file mode 100644 index 000000000..142166f61 --- /dev/null +++ b/src/languages/zh-CN/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: "呀!这个命令失败了,请给我的主人这个错误代码。`{uuid}`", + softFail: "出错了,稍后再试", + attachmentNeeded: "请在使用此命令时上传一张图片", + nsfwDisabled: "在使用这个命令之前,这个频道需要被标记为NSFW。", + cooldown: "这个命令正在冷却,稍后再试。", + dmDisabled: "该命令不能在DM中使用", + permsMissingOwn: "我缺少以下权限。`{perms}`", + permsMissingUser: "你缺少以下权限。`{perms}`", + working: "正在努力...", + noResults: "没有发现结果", + noResultsFor: "没有找到\"{query}\"的结果。", + open: "开放式" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/8ball.strings.ts b/src/languages/zh-CN/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..056677d3c --- /dev/null +++ b/src/languages/zh-CN/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "向神奇的8号球征求意见" + }, + prefix: "神奇的8号球说:`{response}`", + choices: ["迹象表明,是的", "是", "回复朦胧,再试一次", "毋庸置疑", "我的消息来源说没有", "在我看来,是的", "你可以依靠它", "集中精力,再问一次", "展望不那么好", "果然是这样", "最好现在不告诉你", "非常值得怀疑", "是的--当然", "可以肯定的是", "现在无法预测", "最有可能", "以后再问", "我的回答是没有", "展望良好", "不要指望它", "谁在乎呢?", "永远,永远,永远", "有可能", "有一个小的机会"] +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/advice.strings.ts b/src/languages/zh-CN/slash-commands/advice.strings.ts new file mode 100644 index 000000000..ec5339165 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "获得一些有用的建议" + } +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/booru.strings.ts b/src/languages/zh-CN/slash-commands/booru.strings.ts new file mode 100644 index 000000000..d458ed63b --- /dev/null +++ b/src/languages/zh-CN/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: "搜索的内容" + } + }, + score: "分数", + favorites: "收藏" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/cat.strings.ts b/src/languages/zh-CN/slash-commands/cat.strings.ts new file mode 100644 index 000000000..bd7d70092 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "发送一个随机的猫咪图像" + } +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/dice.strings.ts b/src/languages/zh-CN/slash-commands/dice.strings.ts new file mode 100644 index 000000000..b06ef537d --- /dev/null +++ b/src/languages/zh-CN/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: "掷一些骰子", + options: { + dice: "要掷出的骰子数量(默认:1)。", + sides: "骰子的面数(默认:6)。" + } + }, + response: "{username} 滚动 {diceCount}d{diceSides} 并得到 {total}" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/dog.strings.ts b/src/languages/zh-CN/slash-commands/dog.strings.ts new file mode 100644 index 000000000..801e975b7 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "发送一个随机的狗图像" + } +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/info.strings.ts b/src/languages/zh-CN/slash-commands/info.strings.ts new file mode 100644 index 000000000..a5021b422 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: "获取关于机器人的信息" + }, + guilds: "这个星区的公会", + uptime: "正常运行时间", + shard: "当前分片", + version: "版本", + owner: "业主", + node: "Node.js版本", + ram: "内存使用情况", + os: "操作系统", + cpu: "CPU使用率", + poweredBy: "由WildBeast提供" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/inspire.strings.ts b/src/languages/zh-CN/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..8abbbb389 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "从 inspirobot.com 获取随机报价" + } +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/invite.strings.ts b/src/languages/zh-CN/slash-commands/invite.strings.ts new file mode 100644 index 000000000..5dc3ed0f5 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: "获得机器人的邀请链接" + }, + done: "使用以下链接来邀请我。 {invite}", + private: "这个机器人被标记为私人,请要求 {owner} 邀请我到你的服务器上。" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/meme.strings.ts b/src/languages/zh-CN/slash-commands/meme.strings.ts new file mode 100644 index 000000000..f2edad2fa --- /dev/null +++ b/src/languages/zh-CN/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: "获得一个随机的备忘录" + } +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/ping.strings.ts b/src/languages/zh-CN/slash-commands/ping.strings.ts new file mode 100644 index 000000000..b9411a4a6 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: "Pong!(gateway: {gateway}ms) (rest: {rest}ms)" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/tag.strings.ts b/src/languages/zh-CN/slash-commands/tag.strings.ts new file mode 100644 index 000000000..9e45e39cd --- /dev/null +++ b/src/languages/zh-CN/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: "创建一个新的标签", + delete: "删除一个标签", + edit: "编辑一个标签", + info: "获取一个标签的信息", + show: "显示一个标签" + }, + options: { + name: "标签的名称", + content: "标签的内容", + args: "传递给命令的参数" + } + }, + errors: { + notFound: "没有这样的标签", + conflict: "一个具有该名称的标签已经存在", + illegal: "你不能给你的标签起这样的名字", + notYours: "你不拥有这个标签,所以你不能编辑它。" + }, + owner: "该标签的所有者是 {user}", + created: "您的标签已创建", + deleted: "您的标签已被删除", + updated: false, + createdAt: "创建于", + updatedAt: "更新于", + ranking: "排名" +}; \ No newline at end of file diff --git a/src/languages/zh-CN/slash-commands/urbandictionary.strings.ts b/src/languages/zh-CN/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..b0d06b197 --- /dev/null +++ b/src/languages/zh-CN/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: "搜索城市词典", + options: { + query: "搜索的内容" + } + }, + errors: { + notFound: "这个词太糟糕了,连城市词典都不知道它" + }, + example: "例子", + noExample: "[没有提供例子]" +}; \ No newline at end of file diff --git a/src/languages/zh-TW/common.strings.ts b/src/languages/zh-TW/common.strings.ts new file mode 100644 index 000000000..316a899e9 --- /dev/null +++ b/src/languages/zh-TW/common.strings.ts @@ -0,0 +1,14 @@ +export default { + failedToRun: false, + softFail: false, + attachmentNeeded: false, + nsfwDisabled: false, + cooldown: false, + dmDisabled: false, + permsMissingOwn: false, + permsMissingUser: false, + working: false, + noResults: false, + noResultsFor: false, + open: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/8ball.strings.ts b/src/languages/zh-TW/slash-commands/8ball.strings.ts new file mode 100644 index 000000000..828f1a001 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/8ball.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + prefix: false, + choices: [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false] +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/advice.strings.ts b/src/languages/zh-TW/slash-commands/advice.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/advice.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/booru.strings.ts b/src/languages/zh-TW/slash-commands/booru.strings.ts new file mode 100644 index 000000000..0c784ea7e --- /dev/null +++ b/src/languages/zh-TW/slash-commands/booru.strings.ts @@ -0,0 +1,9 @@ +export default { + metadata: { + options: { + query: false + } + }, + score: false, + favorites: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/cat.strings.ts b/src/languages/zh-TW/slash-commands/cat.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/cat.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/dice.strings.ts b/src/languages/zh-TW/slash-commands/dice.strings.ts new file mode 100644 index 000000000..23ac93dcf --- /dev/null +++ b/src/languages/zh-TW/slash-commands/dice.strings.ts @@ -0,0 +1,10 @@ +export default { + metadata: { + description: false, + options: { + dice: false, + sides: false + } + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/dog.strings.ts b/src/languages/zh-TW/slash-commands/dog.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/dog.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/info.strings.ts b/src/languages/zh-TW/slash-commands/info.strings.ts new file mode 100644 index 000000000..60e80d833 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/info.strings.ts @@ -0,0 +1,15 @@ +export default { + metadata: { + description: false + }, + guilds: false, + uptime: false, + shard: false, + version: false, + owner: false, + node: false, + ram: false, + os: false, + cpu: false, + poweredBy: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/inspire.strings.ts b/src/languages/zh-TW/slash-commands/inspire.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/inspire.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/invite.strings.ts b/src/languages/zh-TW/slash-commands/invite.strings.ts new file mode 100644 index 000000000..f61f0524a --- /dev/null +++ b/src/languages/zh-TW/slash-commands/invite.strings.ts @@ -0,0 +1,7 @@ +export default { + metadata: { + description: false + }, + done: false, + private: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/meme.strings.ts b/src/languages/zh-TW/slash-commands/meme.strings.ts new file mode 100644 index 000000000..47e843819 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/meme.strings.ts @@ -0,0 +1,5 @@ +export default { + metadata: { + description: false + } +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/ping.strings.ts b/src/languages/zh-TW/slash-commands/ping.strings.ts new file mode 100644 index 000000000..27a8c5171 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/ping.strings.ts @@ -0,0 +1,6 @@ +export default { + metadata: { + description: false + }, + response: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/tag.strings.ts b/src/languages/zh-TW/slash-commands/tag.strings.ts new file mode 100644 index 000000000..257d626af --- /dev/null +++ b/src/languages/zh-TW/slash-commands/tag.strings.ts @@ -0,0 +1,29 @@ +export default { + metadata: { + descriptions: { + create: false, + delete: false, + edit: false, + info: false, + show: false + }, + options: { + name: false, + content: false, + args: false + } + }, + errors: { + notFound: false, + conflict: false, + illegal: false, + notYours: false + }, + owner: false, + created: false, + deleted: false, + updated: false, + createdAt: false, + updatedAt: false, + ranking: false +}; \ No newline at end of file diff --git a/src/languages/zh-TW/slash-commands/urbandictionary.strings.ts b/src/languages/zh-TW/slash-commands/urbandictionary.strings.ts new file mode 100644 index 000000000..77e264023 --- /dev/null +++ b/src/languages/zh-TW/slash-commands/urbandictionary.strings.ts @@ -0,0 +1,13 @@ +export default { + metadata: { + description: false, + options: { + query: false + } + }, + errors: { + notFound: false + }, + example: false, + noExample: false +}; \ No newline at end of file diff --git a/src/structures/client.ts b/src/structures/client.ts index 7e6425a46..871865710 100644 --- a/src/structures/client.ts +++ b/src/structures/client.ts @@ -15,10 +15,4 @@ const client = new InteractionCommandClient(process.env.BOT_TOKEN ?? '', { } }) as ModClient -if ((process.env.WILDBEAST_SHARDING_START != null) && (process.env.WILDBEAST_SHARDING_END != null) && (process.env.WILDBEAST_SHARDING_TOTAL != null)) { - client.client.setShardCount(+process.env.WILDBEAST_SHARDING_TOTAL) - client.client.setShardStart(+process.env.WILDBEAST_SHARDING_START) - client.client.setShardEnd(+process.env.WILDBEAST_SHARDING_END) -} - export default client diff --git a/src/structures/cluster.ts b/src/structures/cluster.ts new file mode 100644 index 000000000..8826eb858 --- /dev/null +++ b/src/structures/cluster.ts @@ -0,0 +1,10 @@ +import { ClusterManager } from 'detritus-client' + +const IS_TS_NODE = Symbol.for('ts-node.register.instance') in process + +// the filename is NOT relative to this file +// but to where the file is being run first +// which in this case is the index.ts file +const manager = new ClusterManager(IS_TS_NODE ? './entry.ts' : './entry.js', process.env.BOT_TOKEN ?? '') + +export default manager diff --git a/src/utils/dir-import.ts b/src/utils/dir-import.ts index 4cdfa731b..aa9a7737f 100644 --- a/src/utils/dir-import.ts +++ b/src/utils/dir-import.ts @@ -1,4 +1,4 @@ -import { sync } from 'glob' +import { sync } from 'fast-glob' const IS_TS_NODE = Symbol.for('ts-node.register.instance') in process diff --git a/src/utils/elastic.ts b/src/utils/elastic.ts new file mode 100644 index 000000000..9cef5f5a1 --- /dev/null +++ b/src/utils/elastic.ts @@ -0,0 +1,60 @@ +import { Client } from '@elastic/elasticsearch' +import { BulkStats } from '@elastic/elasticsearch/lib/helpers' +import { format } from 'date-fns' +import discord from '../structures/client' +import { debug, trace, warn } from './logger' + +const storage = new Set() + +export function add (data: any): number { + data['@timestamp'] = new Date().toISOString() + storage.add(data) + return storage.size +} + +export function drop (): number { + storage.clear() + return storage.size +} + +export async function * drain (): AsyncGenerator { + for (const data of storage) { + storage.delete(data) + yield data + } +} + +export async function flush (): Promise { + if (process.env.ELASTIC_URL === undefined) throw new Error('Trying to flush to Elasticsearch, but no URL is set.') + debug('Flushing elasticsearch', 'Elastic') + const client = new Client({ + node: process.env.ELASTIC_URL, + // auth can be either be a b64 encoded api key, or basic auth incorporated into the URL + ...(process.env.ELASTIC_API_KEY !== undefined + ? { + auth: { + apiKey: process.env.ELASTIC_API_KEY + } + } + : {}) + }) + const result = await client.helpers.bulk({ + datasource: drain(), + onDocument (doc) { + return { + create: { + _index: `wildbeast-${discord.client.applicationId}-${format(new Date(), 'yyyy-MM-dd')}` + } + } + } + }) + debug(`Flushed ${result.successful} analytics documents to Elastic, ${result.failed} failed`, 'Elastic') + trace(result, 'Elastic') + if (result.failed > 0) { + warn(`Failed to flush ${result.failed} analytics documents to Elastic`, 'Elastic') + } + // Persistent connection to elastic isn't necessary, close it + // we recreate the client on the next flush anyway + await client.close() + return result +} diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index 6542a9b7b..b12de4b91 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -1,16 +1,23 @@ import { IntlMessageFormat } from 'intl-messageformat' -import { error, fatal } from './logger' +import { error, fatal, warn } from './logger' import { languages } from '../cache' -const defaultLang = process.env.WILDBEAST_LANGUAGE ?? 'en-EN' +const defaultLang = process.env.WILDBEAST_LANGUAGE ?? 'en-US' export function translate (key: string, args?: Record, lang?: string): string { if (!languages.has(defaultLang)) { fatal(`Default language ${defaultLang} not found in cache!`, 'i18n') } + if (lang !== undefined && !languages.has(lang)) { + warn(`A translation call requested language ${lang}, but it's not found in cache. Defaulting back to ${defaultLang}`, 'i18n') + lang = defaultLang + } try { const msg = traverse(key, lang) - if (!(typeof msg === 'string')) error(`Translation key ${key} not found in cache!`, 'i18n') + if (!(typeof msg === 'string') && lang !== defaultLang) { + warn(`Translation key ${key} for language ${lang ?? defaultLang} not found in cache! Retrying for default language`, 'i18n') + return translate(key, args, defaultLang) + } else if (!(typeof msg === 'string')) error(`Translation key ${key} for default language not found in cache!`, 'i18n') return new IntlMessageFormat(typeof msg === 'string' ? msg : '[TRANSLATION FAILED]').format(args) } catch (e) { error(`Failed to translate ${key}`, 'i18n') @@ -19,6 +26,15 @@ export function translate (key: string, args?: Record, lang?: strin } } +// get the translated value for all languages +export function allForKey (key: string, args?: Record): Record { + const result: Record = {} + for (const lang of languages.keys()) { + result[lang] = translate(key, args, lang) + } + return result +} + export function traverse (key: string, lang?: string): any { return key.split('.').reduce((o, i) => o?.[i], lang !== undefined ? languages.get(lang) : languages.get(defaultLang)) as any } diff --git a/src/utils/logger.ts b/src/utils/logger.ts index e993a0f24..d0784b0e8 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -21,7 +21,7 @@ export function debug (message: any, component: string = 'generic'): void { Sentry.addBreadcrumb({ category: component, message, - level: Sentry.Severity.Debug + level: 'debug' }) if (process.env.NODE_ENV === 'debug') log(chalk`{blue dbug}`, chalk`{blue ${component}}`, message) } @@ -35,7 +35,7 @@ export function info (message: any, component: string = 'generic'): void { Sentry.addBreadcrumb({ category: component, message, - level: Sentry.Severity.Info + level: 'info' }) log(chalk`{green info}`, chalk`{green ${component}}`, message) } @@ -53,12 +53,12 @@ export function error (_err: any, component: string = 'generic', captureContext? let uuid if (!(_err instanceof Error)) { uuid = Sentry.captureMessage(_err, { - level: Sentry.Severity.Error, + level: 'error', ...captureContext }) } else { uuid = Sentry.captureException(_err, { - level: Sentry.Severity.Error, + level: 'error', ...captureContext }) } @@ -78,12 +78,12 @@ export function error (_err: any, component: string = 'generic', captureContext? export function fatal (_err: any, component: string = 'generic', captureContext?: CaptureContext): void { if (!(_err instanceof Error)) { Sentry.captureMessage(_err, { - level: Sentry.Severity.Fatal, + level: 'error', ...captureContext }) } else { Sentry.captureException(_err, { - level: Sentry.Severity.Fatal, + level: 'error', ...captureContext }) } @@ -102,7 +102,7 @@ export function warn (message: any, component: string = 'generic'): void { Sentry.addBreadcrumb({ category: component, message, - level: Sentry.Severity.Warning + level: 'warning' }) log(chalk`{yellow warn}`, chalk`{yellow ${component}}`, message instanceof Error ? message.stack : message) }