diff --git a/.github/workflows/broken-links-check.yml b/.github/workflows/broken-links-check.yml index 54d7016b..811f8738 100644 --- a/.github/workflows/broken-links-check.yml +++ b/.github/workflows/broken-links-check.yml @@ -1,25 +1,25 @@ on: - schedule: - - cron: 0 10 1 * * - repository_dispatch: - types: [check-link] - workflow_dispatch: + pull_request: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: pr-${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true name: Broken Link Check jobs: check: name: Broken Link Check runs-on: ubuntu-latest - timeout-minutes: 10 steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Mint + run: npm i -g mint - name: Broken Link Check - uses: technote-space/broken-link-checker-action@gh-actions - with: - TARGET: "https://www.chatwoot.com" - GITHUB_TOKEN: ${{secrets.ACCESS_TOKEN}} - - - + run: | + set -o pipefail + mint broken-links | tee output.log + if ! grep -q "success" output.log; then + echo "No success found in log. Exiting." + exit 1 + fi diff --git a/README.md b/README.md index 375def21..ad97fda4 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,23 @@ -## Chatwoot Handbook +## Chatwoot Developer Documentation -This repository contains the documentation for self-hosted installations, features in the product and a complete guide on how we run the organization. +This is the official repository for the Chatwoot developer documentation. This guide contains everything you need to know about Chatwoot APIs and build custom flows on top of Chatwoot APIs. ----- +### 👩‍💻 Development -## Installation +Install the [Mintlify CLI](https://www.npmjs.com/package/mint) to preview the documentation changes locally. To install, use the following command -```console -pnpm install ``` - -## Local Development - -```console -pnpm start +npm i -g mint ``` -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -## Build +Run the following command at the root of your documentation (where mint.json is) -```console -pnpm build ``` +mint dev +``` + +### 😎 Publishing Changes -This command generates static content into the `build` directory and can be served using any static contents hosting service. +Changes will be deployed to production automatically after pushing to the default branch. -Please feel free to suggest any changes. See our [contributing guide](https://www.chatwoot.com/docs/contributing-guide) to get started. +You can also preview changes using PRs, which generates a preview link of the docs. diff --git a/api-reference/introduction.mdx b/api-reference/introduction.mdx new file mode 100644 index 00000000..28f8436e --- /dev/null +++ b/api-reference/introduction.mdx @@ -0,0 +1,49 @@ +--- +title: Introduction to Chatwoot APIs +description: Learn how to use Chatwoot APIs to build integrations, customize chat experiences, and manage your installation. +sidebarTitle: Introduction +--- + +Welcome to the Chatwoot API documentation. Whether you're building custom workflows for your support team, integrating Chatwoot into your product, or managing users across installations, our APIs provide the flexibility and power to help you do more with Chatwoot. + +Chatwoot provides three categories of APIs, each designed with a specific use case in mind: + +- **Application APIs** – For account-level automation and agent-facing integrations. +- **Client APIs** – For building custom chat interfaces for end-users +- **Platform APIs** – For managing and administering installations at scale + +--- + +## Application APIs + +Application APIs are designed for interacting with a Chatwoot account from an agent/admin perspective. Use them to build internal tools, automate workflows, or perform bulk operations like data import/export. + +- **Authentication**: Requires a user `access_token`, which can be generated from **Profile Settings** after logging into your Chatwoot account. +- **Availability**: Supported on both **Cloud** and **Self-hosted** Chatwoot installations. +- **Example**: [Google Cloud Functions Demo](https://github.com/chatwoot/google-cloud-functions-demo) + +--- + +## Client APIs + +Client APIs are intended for building custom messaging experiences over Chatwoot. If you're not using the native website widget or want to embed chat in your mobile app, these APIs are the way to go. + +- **Authentication**: Uses `inbox_identifier` (from **Settings → Configuration** in API inboxes) and `contact_identifier` (returned when creating a contact). +- **Availability**: Supported on both **Cloud** and **Self-hosted** Chatwoot installations. +- **Examples**: + + - [Client API Demo](https://github.com/chatwoot/client-api-demo) + - [Flutter SDK](https://github.com/chatwoot/chatwoot-flutter-sdk) + +--- + +## Platform APIs + +Platform APIs are used to manage Chatwoot installations at the admin level. These APIs allow you to control users, roles, and accounts, or sync data from external authentication systems. + +- **Authentication**: Requires an `access_token` generated by a **Platform App**, which can be created in the **Super Admin Console**. +- **Availability**: Available on **Self-hosted** / **Managed Hosting** Chatwoot installations only. + +--- + +Use the right API for your use case, and you'll be able to extend, customize, and integrate Chatwoot into your stack with ease. diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index bfd75dbd..00000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve("@docusaurus/core/lib/babel/preset")], -}; diff --git a/config/sidebar/contributingGuide.js b/config/sidebar/contributingGuide.js deleted file mode 100644 index 08ce015e..00000000 --- a/config/sidebar/contributingGuide.js +++ /dev/null @@ -1,56 +0,0 @@ -module.exports = [ - { - collapsible: false, - label: "Getting Started", - type: "category", - items: ["contributing-guide"], - }, - { - collapsible: false, - type: "category", - label: "Environment Setup", - items: [ - "contributing-guide/environment-setup/mac-os", - "contributing-guide/environment-setup/ubuntu", - "contributing-guide/environment-setup/windows", - "contributing-guide/environment-setup/docker", - "contributing-guide/environment-setup/make", - ], - }, - { - collapsible: false, - type: "category", - label: "Project Setup", - items: [ - "contributing-guide/project-setup", - "contributing-guide/environment-variables", - "contributing-guide/common-errors", - "contributing-guide/telegram-channel-setup", - "contributing-guide/line-channel-setup", - "contributing-guide/mobile-app/setup-guide", - ], - }, - { - collapsible: false, - type: "category", - label: "Testing", - items: [ - "contributing-guide/tests/cypress", - ], - }, - { - collapsible: false, - type: "category", - label: "Other", - items: [ - "contributing-guide/chatwoot-apis", - "contributing-guide/api-documentation", - "contributing-guide/chatwoot-platform-apis", - "contributing-guide/security-reports", - "contributing-guide/translation-guidelines", - "contributing-guide/community-guidelines", - "contributing-guide/code-of-conduct", - "contributing-guide/contributors", - ], - }, -]; diff --git a/config/sidebar/selfhosted.js b/config/sidebar/selfhosted.js deleted file mode 100644 index b0c14cfd..00000000 --- a/config/sidebar/selfhosted.js +++ /dev/null @@ -1,135 +0,0 @@ -module.exports = [ - { - collapsible: false, - label: "Getting Started", - type: "category", - items: ["self-hosted"], - }, - { - collapsible: true, - label: "Deployment", - type: "category", - items: [ - "self-hosted/deployment/architecture", - "self-hosted/deployment/requirements", - { - Linux: [ - "self-hosted/deployment/linux-vm", - "self-hosted/deployment/docker", - ], - }, - "self-hosted/deployment/helm-charts", - "self-hosted/deployment/chatwoot-ctl", - ], - }, - { - collapsible: true, - label: "Cloud", - type: "category", - items: [ - { - AWS: [ - "self-hosted/deployment/aws", - "self-hosted/deployment/aws-marketplace", - ], - }, - "self-hosted/deployment/azure", - "self-hosted/deployment/digital-ocean", - "self-hosted/deployment/gcp", - "self-hosted/deployment/heroku", - { - "Community contributed": [ - "self-hosted/deployment/caprover", - "self-hosted/deployment/clevercloud", - "self-hosted/deployment/cloudron", - "self-hosted/deployment/restack", - "self-hosted/deployment/easypanel", - "self-hosted/deployment/elestio", - ], - }, - "self-hosted/deployment/troubleshooting", - ], - }, - { - collapsible: true, - label: "Configuration", - type: "category", - items: [ - "self-hosted/configuration/environment-variables", - { - Performance: [ - "self-hosted/deployment/performance/optimizing-configurations", - "self-hosted/deployment/performance/cloudfront-cdn", - ], - }, - { - Monitoring: [ - "self-hosted/monitoring/super-admin-sidekiq", - "self-hosted/monitoring/apm-and-error-monitoring", - "self-hosted/monitoring/rate-limiting", - ], - }, - { - Storage: [ - "self-hosted/deployment/storage/supported-providers", - "self-hosted/deployment/storage/s3-bucket", - "self-hosted/deployment/storage/gcs-bucket", - ], - }, - { - "Email Channel": [ - "self-hosted/configuration/features/email-channel/conversation-continuity", - "self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid", - "self-hosted/configuration/features/email-channel/setup", - "self-hosted/configuration/features/email-channel/azure-app-setup", - "self-hosted/configuration/features/email-channel/google-workspace-setup", - ], - }, - { - "Help Center": ["self-hosted/configuration/help-center"], - }, - ], - }, - { - collapsible: true, - label: "Integrations", - type: "category", - items: [ - "self-hosted/configuration/features/integrations/facebook-channel-setup", - "self-hosted/configuration/features/integrations/instagram-channel-setup", - "self-hosted/configuration/features/integrations/instagram-via-instagram-business-login", - "self-hosted/configuration/features/integrations/slack-integration-setup", - "self-hosted/configuration/features/integrations/linear-integration-setup", - "self-hosted/configuration/features/integrations/shopify-integration-setup", - ], - }, - { - collapsible: true, - label: "Maintenance", - type: "category", - items: ["self-hosted/deployment/upgrade", "self-hosted/deployment/backup"], - }, - { - type: "category", - label: "Runbooks", - collapsible: true, - items: [ - "self-hosted/runbooks/migrate-chatwoot-database", - "self-hosted/runbooks/upgrade-to-chatwoot-v4", - "self-hosted/configuration/email-notifications", - "self-hosted/configuration/enable-ip-logging", - ], - }, - { - type: "category", - label: "Others", - items: [ - "self-hosted/telemetry", - "self-hosted/enterprise-edition", - "self-hosted/supported-features", - "self-hosted/restricted-instances", - "self-hosted/instagram-app-review", - "self-hosted/faq", - ], - }, -]; diff --git a/contributing-guide.mdx b/contributing-guide.mdx new file mode 100644 index 00000000..afee0d68 --- /dev/null +++ b/contributing-guide.mdx @@ -0,0 +1,196 @@ +--- +title: Contributing to Chatwoot +description: Complete guide to contributing to Chatwoot - from setting up your development environment to submitting pull requests. +sidebarTitle: Introduction +--- + +# Contributing Guide + +Thank you for taking an interest in contributing to Chatwoot! This guide will help you get started with contributing to our open-source customer support platform. Before submitting your contribution, please make sure to take a moment and read through the following guidelines. + +## Getting Started + + +Before starting your work, ensure an issue exists for it. If not, feel free to create one. You can also take a look into the issues tagged [Good first issues](https://github.com/chatwoot/chatwoot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). + + +### Initial Steps + +1. **Check for Existing Issues**: Browse the [GitHub issues](https://github.com/chatwoot/chatwoot/issues) to see if someone is already working on what you want to contribute. + +2. **Comment on the Issue**: Add a comment on the issue and wait for the issue to be assigned before you start working on it. + - This helps to avoid multiple people working on similar issues. + +3. **Propose Complex Solutions**: If the solution is complex, propose the solution on the issue and wait for one of the core contributors to approve before going into the implementation. + - This helps in shorter turn around times in merging PRs. + +4. **Justify New Features**: For new feature requests, provide a convincing reason to add this feature. Real-life business use-cases will be super helpful. + +5. **Join the Community**: Feel free to join our [Discord community](https://discord.com/invite/cJXdrwS) if you need further discussions with the core team. + +## Pull Request Guidelines + + +We use git-flow branching model. The base branch is `develop`. Please raise your PRs against the `develop` branch. + + +### Before Submitting + +- Please make sure that you have read the [issue triage guidelines](https://www.chatwoot.com/hc/handbook/articles/issue-triage-29) before you make a contribution. +- It's okay and encouraged to have multiple small commits as you work on the PR - we will squash the commits before merging. +- For other guidelines, see [PR Guidelines](https://www.chatwoot.com/hc/handbook/articles/pull-request-guidelines-32) +- Ensure that all the text copies that you add into the product are i18n translatable. You are only required to add the `English` version of the strings. We pull in other language translations from our contributors on crowdin. See [Translation guidelines](https://www.chatwoot.com/docs/contributing-guide/translation-guidelines) to learn more. + +## Development Workflow + +### Developing a New Feature + +```bash +# Create a branch in the following format: +feature/- + +# Example: +feature/235-contact-panel +``` + +**Requirements:** +- Add accompanying test cases +- Follow our coding standards +- Include proper documentation + +### Bug Fixes or Chores + +```bash +# Branch naming for bug fixes: +fix/- + +# Branch naming for chores: +chore/ +``` + +**Requirements:** +- If you are resolving a particular issue, add `fix: Fixes xxxx` (#xxxx is the issue) in your PR title +- Provide a detailed description of the bug in the PR +- Add appropriate test coverage if applicable + +## Environment Setup + +Choose the guide that matches your operating system: + + + + Complete setup guide for macOS developers + + + Step-by-step Ubuntu installation guide + + + Windows 10/11 development environment setup + + + Quick setup using Docker containers + + + +### Speed Up Development + +Use our [Make commands](/contributing-guide/environment-setup/make) to speed up your local development workflow. + +## Project Setup + +Once you have set up the environment, follow these guides to get Chatwoot running locally: + +1. **[Quick Setup Guide](/contributing-guide/setup-guide)** - Step-by-step setup instructions +2. **[Environment Variables](/contributing-guide/environment-variables)** - Configuration options +3. **[Common Errors](/contributing-guide/common-errors)** - Troubleshooting guide + +### Special App Integrations + +If you're working on specific integrations: +- **[Telegram App Setup](/contributing-guide/telegram-channel-setup)** +- **[Line App Setup](/contributing-guide/line-channel-setup)** +- **[Mobile App Development](/contributing-guide/mobile-app)** + +## Testing Your Contributions + +We use comprehensive testing to ensure code quality: + +### Test Types +- **Unit Tests**: Test individual components and functions +- **Integration Tests**: Test component interactions +- **End-to-End Tests**: Test complete user workflows with [Cypress](/contributing-guide/tests/cypress) + +### Running Tests + +```bash +# Run all tests +bundle exec rspec + +# Run specific test file +bundle exec rspec spec/models/user_spec.rb + +# Run Cypress tests +npm run cypress:open +``` + +## Documentation and Translation + +### Documentation Guidelines +- Keep documentation clear and concise +- Include code examples where helpful +- Update documentation when changing functionality +- Follow our [translation guidelines](https://www.chatwoot.com/docs/contributing-guide/other/translation-guidelines) + +### Internationalization +- All user-facing text must be translatable +- Only add English strings - other languages are handled via [Crowdin](https://translate.chatwoot.com/) +- Use proper i18n keys and formatting + +## Community Guidelines + +We strive to maintain a welcoming and inclusive community: + +- **[Code of Conduct](https://www.chatwoot.com/docs/contributing-guide/other/code-of-conduct)** - Our community standards +- **[Community Guidelines](https://www.chatwoot.com/docs/contributing-guide/other/community-guidelines)** - How we interact +- **[Security Reports](https://www.chatwoot.com/docs/contributing-guide/other/security-reports)** - Reporting security issues + +## API Development + +If you're working on API-related features: + +- **[Chatwoot APIs](https://www.chatwoot.com/docs/contributing-guide/other/chatwoot-apis)** - API development guide +- **[API Documentation](https://www.chatwoot.com/docs/contributing-guide/other/api-documentation)** - Documenting APIs +- **[Platform APIs](https://www.chatwoot.com/docs/contributing-guide/other/chatwoot-platform-apis)** - Platform-level APIs + +## Recognition + +We value all contributions to Chatwoot. Check out our [Contributors page](https://www.chatwoot.com/docs/contributing-guide/other/contributors) to see the amazing people who have helped make Chatwoot better. + +## Getting Help + +Need assistance? Here are your options: + +- **GitHub Issues**: For bug reports and feature requests +- **Discord Community**: For real-time discussions with the core team +- **Documentation**: Comprehensive guides and API references +- **Community Forums**: Connect with other contributors + +--- + +Ready to start contributing? Pick an issue that interests you and follow our guidelines above. Every contribution, no matter how small, helps make Chatwoot better for everyone! 🚀 diff --git a/docs/contributing-guide/api-documentation.md b/contributing-guide/api-documentation.mdx similarity index 91% rename from docs/contributing-guide/api-documentation.md rename to contributing-guide/api-documentation.mdx index 97b7db74..b887cdb2 100644 --- a/docs/contributing-guide/api-documentation.md +++ b/contributing-guide/api-documentation.mdx @@ -25,4 +25,4 @@ rake swagger:build ### Testing -In development mode, `http://localhost:3000/swagger` is available to test whether the API changes has been updated. +In development mode, `http://localhost:3000/swagger` is available to test whether the API changes has been updated. \ No newline at end of file diff --git a/docs/contributing-guide/chatwoot-apis.md b/contributing-guide/chatwoot-apis.mdx similarity index 90% rename from docs/contributing-guide/chatwoot-apis.md rename to contributing-guide/chatwoot-apis.mdx index 52cefd0b..c1a9e0a2 100644 --- a/docs/contributing-guide/chatwoot-apis.md +++ b/contributing-guide/chatwoot-apis.mdx @@ -12,7 +12,7 @@ Ref: [Chatwoot API Docs](https://www.chatwoot.com/developers/api/) ## Application APIs -Application APIs are designed to interact with a Chatwoot account from a user's perspective. These APIs will help in building integrations for the support agents, +Application APIs are designed to interact with a Chatwoot account from a user's perspective. These APIs will help in building integrations for the support agents, bulk import/export of data into a Chatwoot account etc. To authenticate to this API, you will require a user `access_token`, which can be obtained from `profile_settings` after logging into your Chatwoot account. @@ -37,11 +37,11 @@ Ref: [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-ap - https://github.com/chatwoot/client-api-demo - https://github.com/chatwoot/chatwoot-flutter-sdk -## Platform APIs +## Platform APIs The installation admin can use these APIs to manage users, accounts, and roles. These APIs could also be used to sync auth information from external systems into chatwoot. These APIs are particularly helpful if you plan to build a conversation management interface into your existing software stack. -To authenticate these APIs, you must have an `access_token` issued on behalf of a `Platform app`. You can create a Platform App from [Super Admin Console](/docs/self-hosted/monitoring/super-admin-sidekiq/). The access_token can also be obtained from the `Access Tokens` tab in [Super Admin Console](/docs/self-hosted/monitoring/super-admin-sidekiq/). +To authenticate these APIs, you must have an `access_token` issued on behalf of a `Platform app`. You can create a Platform App from [Super Admin Console](/self-hosted/monitoring/super-admin-sidekiq/). The access_token can also be obtained from the `Access Tokens` tab in [Super Admin Console](/self-hosted/monitoring/super-admin-sidekiq/). These APIs are available on `self-hosted` Chatwoot installations. diff --git a/docs/contributing-guide/chatwoot-platform-apis.md b/contributing-guide/chatwoot-platform-apis.mdx similarity index 76% rename from docs/contributing-guide/chatwoot-platform-apis.md rename to contributing-guide/chatwoot-platform-apis.mdx index a127439f..def3cfaa 100644 --- a/docs/contributing-guide/chatwoot-platform-apis.md +++ b/contributing-guide/chatwoot-platform-apis.mdx @@ -14,19 +14,19 @@ To create a platform app, follow these steps: 1. Go to the super admin portal and navigate to `super_admin/platform_apps`. - ![Super Admin Portal](./images/platform-app/super_admin.png) + ![Super Admin Portal](/contributing-guide/images/platform-app/super_admin.png) 2. Click on the "New platform app" button. - ![Platform Apps Home](./images/platform-app/platform-home.png) + ![Platform Apps Home](/contributing-guide/images/platform-app/platform-home.png) 3. Fill in the platform app name and click the "Create" button. - ![Create Platform App](./images/platform-app/platform-create.png) + ![Create Platform App](/contributing-guide/images/platform-app/platform-create.png) 4. After creating the platform app, open it to view and copy the access token. - ![Platform App Access Token](./images/platform-app/platform-access-token.png) + ![Platform App Access Token](/contributing-guide/images/platform-app/platform-access-token.png) ## Using the Access Token @@ -41,10 +41,10 @@ To test the APIs: Here's an example of creating a user using the API: -![Create User API](./images/platform-app/create-user.png) +![Create User API](/contributing-guide/images/platform-app/create-user.png) Similarly, you can create `Account` and `Role` entities using the APIs. ## Reference -For more detailed information and to test the APIs, refer to our [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-apis/collection/162770-e5451b69-9f97-489b-b352-4ca7d8d82aff). +For more detailed information and to test the APIs, refer to our [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-apis/collection/162770-e5451b69-9f97-489b-b352-4ca7d8d82aff). \ No newline at end of file diff --git a/contributing-guide/code-of-conduct.mdx b/contributing-guide/code-of-conduct.mdx new file mode 100644 index 00000000..ec39d582 --- /dev/null +++ b/contributing-guide/code-of-conduct.mdx @@ -0,0 +1,89 @@ +--- +title: Contributor Covenant Code of Conduct +description: Code of conduct for Chatwoot community members and contributors +sidebarTitle: Code of Conduct +--- + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at **hello@chatwoot.com**. + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html). + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). + +For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are available at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). + +--- + +By participating in the Chatwoot community, you agree to abide by this Code of Conduct. Thank you for helping us create a welcoming and inclusive environment for everyone. \ No newline at end of file diff --git a/contributing-guide/common-errors.mdx b/contributing-guide/common-errors.mdx new file mode 100644 index 00000000..4645c554 --- /dev/null +++ b/contributing-guide/common-errors.mdx @@ -0,0 +1,1002 @@ +--- +title: Common Errors and Solutions +description: Troubleshooting guide for common errors during Chatwoot development setup +sidebarTitle: Common Errors +--- + +# Common Errors and Solutions + +This guide covers the most common errors encountered during Chatwoot development setup and their solutions. Use this as a quick reference when troubleshooting issues. + +## Installation and Setup Errors + +### Ruby and Bundler Issues + + +**Error Message**: +``` +An error occurred while installing pg (1.5.4), and Bundler cannot continue. +Make sure that `gem install pg -v '1.5.4'` succeeds before bundling. +``` + +**Cause**: Missing PostgreSQL development headers or incorrect pg_config path. + +**Solutions**: + + + +```bash +# Install PostgreSQL with Homebrew +brew install postgresql + +# Configure bundle to use correct pg_config +bundle config build.pg --with-pg-config=/opt/homebrew/bin/pg_config + +# For Intel Macs +bundle config build.pg --with-pg-config=/usr/local/bin/pg_config + +# Retry bundle install +bundle install +``` + + + +```bash +# Install PostgreSQL development headers +sudo apt-get update +sudo apt-get install libpq-dev postgresql-client + +# Install build essentials +sudo apt-get install build-essential + +# Retry bundle install +bundle install +``` + + + +```bash +# Install PostgreSQL development packages +sudo yum install postgresql-devel + +# Install development tools +sudo yum groupinstall "Development Tools" + +# Retry bundle install +bundle install +``` + + + + + +**Error Message**: +``` +Your Ruby version is 3.1.0, but your Gemfile specified 3.3.3 +``` + +**Cause**: Wrong Ruby version installed. + +**Solutions**: + + + +```bash +# Install correct Ruby version +rbenv install 3.3.3 + +# Set as global version +rbenv global 3.3.3 + +# Verify version +ruby --version + +# Rehash to update shims +rbenv rehash +``` + + + +```bash +# Install correct Ruby version +rvm install 3.3.3 + +# Use the version +rvm use 3.3.3 --default + +# Verify version +ruby --version +``` + + + +```bash +# Install correct Ruby version +asdf install ruby 3.3.3 + +# Set as global version +asdf global ruby 3.3.3 + +# Verify version +ruby --version +``` + + + + + +**Error Message**: +``` +Bundler could not find compatible versions for gem "bundler" +``` + +**Cause**: Incompatible Bundler version. + +**Solution**: +```bash +# Check current Bundler version +bundler --version + +# Install specific Bundler version (check Gemfile.lock) +gem install bundler:2.4.22 + +# Update Bundler +gem update bundler + +# Clean bundle cache +bundle clean --force + +# Retry installation +bundle install +``` + + +### Node.js and Package Manager Issues + + +**Error Message**: +``` +error @chatwoot/chatwoot@1.0.0: The engine "node" is incompatible with this module. +``` + +**Cause**: Wrong Node.js version. + +**Solutions**: + + + +```bash +# Install correct Node.js version +nvm install 20 + +# Use the version +nvm use 20 + +# Set as default +nvm alias default 20 + +# Verify version +node --version +``` + + + +```bash +# Install correct Node.js version +n 20 + +# Verify version +node --version +``` + + + +```bash +# Install correct Node.js version +asdf install nodejs 20.10.0 + +# Set as global version +asdf global nodejs 20.10.0 + +# Verify version +node --version +``` + + + + + +**Error Message**: +``` +pnpm: command not found +``` + +**Cause**: pnpm not installed. + +**Solutions**: +```bash +# Install pnpm globally +npm install -g pnpm + +# Or using corepack (Node.js 16.10+) +corepack enable +corepack prepare pnpm@latest --activate + +# Or using Homebrew (macOS) +brew install pnpm + +# Verify installation +pnpm --version +``` + + + +**Error Message**: +``` +ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies +``` + +**Cause**: Peer dependency conflicts or corrupted cache. + +**Solutions**: +```bash +# Clear pnpm cache +pnpm store prune + +# Remove node_modules and lock file +rm -rf node_modules pnpm-lock.yaml + +# Reinstall with legacy peer deps +pnpm install --legacy-peer-deps + +# Or force installation +pnpm install --force + +# Alternative: use npm +npm install +``` + + +## Database Errors + +### PostgreSQL Connection Issues + + +**Error Message**: +``` +PG::ConnectionBad: could not connect to server: Connection refused +``` + +**Cause**: PostgreSQL service not running or incorrect connection parameters. + +**Solutions**: + + + +```bash +# Check if PostgreSQL is running +brew services list | grep postgresql + +# Start PostgreSQL +brew services start postgresql + +# Check connection +psql postgres -c "SELECT 1;" + +# If user doesn't exist, create it +createuser -s chatwoot +``` + + + +```bash +# Check PostgreSQL status +sudo systemctl status postgresql + +# Start PostgreSQL +sudo systemctl start postgresql +sudo systemctl enable postgresql + +# Switch to postgres user and create chatwoot user +sudo -u postgres createuser -s chatwoot + +# Set password for chatwoot user +sudo -u postgres psql -c "ALTER USER chatwoot PASSWORD 'password';" +``` + + + +```bash +# Start PostgreSQL container +docker run --name postgres-chatwoot \ + -e POSTGRES_USER=chatwoot \ + -e POSTGRES_PASSWORD=password \ + -e POSTGRES_DB=chatwoot_development \ + -p 5432:5432 \ + -d postgres:15 + +# Check if container is running +docker ps | grep postgres +``` + + + + + +**Error Message**: +``` +ActiveRecord::NoDatabaseError: FATAL: database "chatwoot_development" does not exist +``` + +**Cause**: Database not created. + +**Solution**: +```bash +# Create databases +bundle exec rails db:create + +# If that fails, create manually +createdb chatwoot_development +createdb chatwoot_test + +# Or using psql +psql postgres -c "CREATE DATABASE chatwoot_development;" +psql postgres -c "CREATE DATABASE chatwoot_test;" +``` + + + +**Error Message**: +``` +ActiveRecord::PendingMigrationError: Migrations are pending +``` + +**Cause**: Database schema is not up to date. + +**Solutions**: +```bash +# Run pending migrations +bundle exec rails db:migrate + +# If migrations fail, check status +bundle exec rails db:migrate:status + +# Reset database (WARNING: destroys data) +bundle exec rails db:drop db:create db:migrate db:seed + +# For specific migration issues +bundle exec rails db:migrate:up VERSION=20231201000000 +``` + + +### Redis Connection Issues + + +**Error Message**: +``` +Redis::CannotConnectError: Error connecting to Redis on localhost:6379 +``` + +**Cause**: Redis service not running. + +**Solutions**: + + + +```bash +# Check if Redis is running +brew services list | grep redis + +# Start Redis +brew services start redis + +# Test connection +redis-cli ping +``` + + + +```bash +# Check Redis status +sudo systemctl status redis + +# Start Redis +sudo systemctl start redis +sudo systemctl enable redis + +# Test connection +redis-cli ping +``` + + + +```bash +# Start Redis container +docker run --name redis-chatwoot \ + -p 6379:6379 \ + -d redis:7-alpine + +# Test connection +docker exec redis-chatwoot redis-cli ping +``` + + + + +## Application Runtime Errors + +### Rails Server Issues + + +**Error Message**: +``` +Address already in use - bind(2) for "127.0.0.1" port 3000 +``` + +**Cause**: Another process is using port 3000. + +**Solutions**: +```bash +# Find process using port 3000 +lsof -ti:3000 + +# Kill the process +kill -9 $(lsof -ti:3000) + +# Or use a different port +bundle exec rails server -p 3001 + +# Check what's running on the port +netstat -tulpn | grep :3000 +``` + + + +**Error Message**: +``` +ArgumentError: Missing `secret_key_base` for 'development' environment +``` + +**Cause**: SECRET_KEY_BASE not set in environment. + +**Solution**: +```bash +# Generate a new secret key +bundle exec rails secret + +# Add to .env file +echo "SECRET_KEY_BASE=$(bundle exec rails secret)" >> .env + +# Or set temporarily +export SECRET_KEY_BASE=$(bundle exec rails secret) +bundle exec rails server +``` + + + +**Error Message**: +``` +Webpacker::Manifest::MissingEntryError: Webpacker can't find application.js +``` + +**Cause**: Webpack assets not compiled or compilation failed. + +**Solutions**: +```bash +# Check if webpack dev server is running +ps aux | grep webpack + +# Start webpack dev server +pnpm run dev + +# Or compile assets manually +bundle exec rails assets:precompile + +# Clear webpack cache +rm -rf tmp/cache/webpacker +rm -rf public/packs + +# Reinstall node modules +rm -rf node_modules +pnpm install +``` + + +### Sidekiq Worker Issues + + +**Error Message**: +``` +Jobs are queued but not being processed +``` + +**Cause**: Sidekiq worker not running. + +**Solutions**: +```bash +# Check if Sidekiq is running +ps aux | grep sidekiq + +# Start Sidekiq +bundle exec sidekiq + +# Check Sidekiq web interface +open http://localhost:3000/sidekiq + +# Clear failed jobs +bundle exec rails runner "Sidekiq::Queue.new.clear" +``` + + + +**Error Message**: +``` +Redis::CommandError: OOM command not allowed when used memory > 'maxmemory' +``` + +**Cause**: Redis running out of memory. + +**Solutions**: +```bash +# Check Redis memory usage +redis-cli info memory + +# Clear Redis cache +redis-cli flushall + +# Increase Redis memory limit (redis.conf) +# maxmemory 256mb + +# Or restart Redis +brew services restart redis # macOS +sudo systemctl restart redis # Linux +``` + + +## Testing Errors + +### RSpec Test Failures + + +**Error Message**: +``` +ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "users" does not exist +``` + +**Cause**: Test database not set up properly. + +**Solution**: +```bash +# Prepare test database +RAILS_ENV=test bundle exec rails db:create +RAILS_ENV=test bundle exec rails db:migrate + +# Or use the combined command +bundle exec rails db:test:prepare + +# Reset test database if needed +RAILS_ENV=test bundle exec rails db:drop db:create db:migrate +``` + + + +**Error Message**: +``` +FactoryBot::DuplicateDefinitionError: Factory already registered +``` + +**Cause**: Factory definitions loaded multiple times. + +**Solution**: +```bash +# Clear Spring cache +bundle exec spring stop + +# Restart test suite +bundle exec rspec + +# Check for duplicate factory definitions +grep -r "FactoryBot.define" spec/ +``` + + + +**Error Message**: +``` +Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver +``` + +**Cause**: ChromeDriver not installed or incompatible version. + +**Solutions**: +```bash +# Install ChromeDriver +# macOS +brew install chromedriver + +# Ubuntu/Debian +sudo apt-get install chromium-chromedriver + +# Or use webdrivers gem (should be automatic) +bundle exec rails runner "Webdrivers::Chromedriver.update" + +# Run tests in headless mode +HEADLESS=true bundle exec rspec spec/system/ +``` + + +## Development Environment Issues + +### IDE and Editor Problems + + +**Error**: Ruby IntelliSense not working, no syntax highlighting. + +**Solutions**: +```bash +# Install Ruby LSP +gem install ruby-lsp + +# Or add to Gemfile +echo 'gem "ruby-lsp", group: :development' >> Gemfile +bundle install + +# Restart VS Code +# Install recommended extensions: +# - Ruby LSP +# - Ruby Solargraph +# - Ruby Test Explorer +``` + + + +**Error**: Ruby documentation and autocomplete not working. + +**Solutions**: +```bash +# Install Solargraph +gem install solargraph + +# Generate documentation +bundle exec yard gems +bundle exec solargraph bundle + +# Create .solargraph.yml config +solargraph config + +# Restart your editor +``` + + +### Git and Version Control Issues + + +**Error**: Git commit rejected due to linting errors. + +**Solutions**: +```bash +# Fix RuboCop issues +bundle exec rubocop -a + +# Fix ESLint issues +pnpm run lint:fix + +# Format code +pnpm run format + +# Skip hooks temporarily (not recommended) +git commit --no-verify -m "Your commit message" + +# Update pre-commit hooks +pre-commit autoupdate +``` + + + +**Error**: Git LFS or large file warnings. + +**Solutions**: +```bash +# Install Git LFS +git lfs install + +# Track large files +git lfs track "*.png" +git lfs track "*.jpg" +git lfs track "*.pdf" + +# Add .gitattributes +git add .gitattributes + +# Check LFS status +git lfs status +``` + + +## Performance Issues + +### Slow Application Startup + + +**Cause**: Large codebase, slow database, or memory issues. + +**Solutions**: +```bash +# Use Spring for faster Rails commands +bundle exec spring binstub --all + +# Check Spring status +bundle exec spring status + +# Restart Spring if needed +bundle exec spring stop + +# Increase memory if needed +export RUBY_GC_HEAP_INIT_SLOTS=10000 +export RUBY_GC_HEAP_FREE_SLOTS=10000 + +# Profile startup time +time bundle exec rails runner "puts 'Rails loaded'" +``` + + + +**Cause**: Database setup, factory creation, or inefficient tests. + +**Solutions**: +```bash +# Use parallel testing +bundle exec rspec --parallel + +# Profile slow tests +bundle exec rspec --profile + +# Use database cleaner strategies +# Add to spec/rails_helper.rb: +# config.use_transactional_fixtures = true + +# Optimize factories +# Use build_stubbed instead of create when possible +``` + + +## Email and Communication Issues + +### Email Delivery Problems + + +**Cause**: SMTP configuration or email service issues. + +**Solutions**: + + + +```bash +# Install and start MailHog +brew install mailhog # macOS +mailhog + +# Configure .env +MAILER_SENDER_EMAIL=dev@chatwoot.local +SMTP_ADDRESS=localhost +SMTP_PORT=1025 + +# Check web interface +open http://localhost:8025 +``` + + + +```bash +# Add to Gemfile +echo 'gem "letter_opener", group: :development' >> Gemfile +bundle install + +# Configure in development.rb +# config.action_mailer.delivery_method = :letter_opener + +# Emails will open in browser +``` + + + +```bash +# Use app password, not regular password +MAILER_SENDER_EMAIL=your-email@gmail.com +SMTP_ADDRESS=smtp.gmail.com +SMTP_PORT=587 +SMTP_USERNAME=your-email@gmail.com +SMTP_PASSWORD=your-app-password +SMTP_DOMAIN=gmail.com +SMTP_ENABLE_STARTTLS_AUTO=true +``` + + + + +### WebSocket Connection Issues + + +**Error**: Real-time features not working, WebSocket connection failed. + +**Solutions**: +```bash +# Check if ActionCable is mounted +grep -r "mount ActionCable" config/routes.rb + +# Check Redis connection +redis-cli ping + +# Configure ActionCable for development +# In config/environments/development.rb: +# config.action_cable.url = "ws://localhost:3000/cable" +# config.action_cable.allowed_request_origins = ["http://localhost:3000"] + +# Test WebSocket connection +# Open browser console and check for WebSocket errors +``` + + +## Debugging and Logging Issues + +### Log File Problems + + +**Cause**: Excessive logging in development. + +**Solutions**: +```bash +# Clear log files +> log/development.log +> log/test.log + +# Configure log rotation in development.rb +# config.logger = ActiveSupport::Logger.new("log/development.log", 5, 10.megabytes) + +# Reduce log level +# config.log_level = :info + +# Use logrotate (Linux) +sudo logrotate -f /etc/logrotate.conf +``` + + +### Debugging Tool Issues + + +**Cause**: Debugger not properly configured or running in wrong context. + +**Solutions**: +```bash +# Make sure gems are in Gemfile +echo 'gem "pry-rails", group: [:development, :test]' >> Gemfile +echo 'gem "pry-byebug", group: [:development, :test]' >> Gemfile +bundle install + +# Use correct debugger syntax +# binding.pry # for Pry +# debugger # for built-in debugger +# byebug # for byebug + +# Check if running in correct environment +puts Rails.env +``` + + +## Quick Diagnostic Commands + +### System Health Check + +```bash +#!/bin/bash +# health_check.sh - Quick system diagnostic + +echo "=== Chatwoot Development Health Check ===" + +# Check Ruby version +echo "Ruby version: $(ruby --version)" + +# Check Node.js version +echo "Node.js version: $(node --version)" + +# Check database connection +if bundle exec rails runner "ActiveRecord::Base.connection.execute('SELECT 1')" > /dev/null 2>&1; then + echo "✅ Database connection: OK" +else + echo "❌ Database connection: FAILED" +fi + +# Check Redis connection +if redis-cli ping > /dev/null 2>&1; then + echo "✅ Redis connection: OK" +else + echo "❌ Redis connection: FAILED" +fi + +# Check if services are running +echo "Running processes:" +ps aux | grep -E "(rails|sidekiq|webpack|mailhog)" | grep -v grep + +# Check ports +echo "Port usage:" +lsof -i :3000,3035,6379,5432,8025 2>/dev/null || echo "No processes found on common ports" + +echo "=== Health Check Complete ===" +``` + +### Environment Validation + +```bash +#!/bin/bash +# validate_env.sh - Validate development environment + +required_vars=( + "RAILS_ENV" + "DATABASE_URL" + "REDIS_URL" + "SECRET_KEY_BASE" + "FRONTEND_URL" +) + +echo "=== Environment Variable Check ===" +for var in "${required_vars[@]}"; do + if [ -z "${!var}" ]; then + echo "❌ Missing: $var" + else + echo "✅ Set: $var" + fi +done + +echo "=== Dependency Check ===" +commands=("ruby" "node" "psql" "redis-cli" "git") +for cmd in "${commands[@]}"; do + if command -v $cmd > /dev/null 2>&1; then + echo "✅ $cmd: $(command -v $cmd)" + else + echo "❌ $cmd: Not found" + fi +done +``` + +## Getting Additional Help + +If you're still experiencing issues after trying these solutions: + +1. **Search GitHub Issues**: Check if others have reported similar problems +2. **Check Logs**: Look at `log/development.log` for detailed error messages +3. **Discord Community**: Join the Chatwoot Discord for real-time help +4. **Documentation**: Review the official documentation +5. **Create an Issue**: If it's a bug, create a detailed GitHub issue + +### Creating a Good Bug Report + +When reporting issues, include: + +```markdown +## Environment +- OS: [e.g., macOS 13.0, Ubuntu 22.04] +- Ruby version: [e.g., 3.3.3] +- Node.js version: [e.g., 20.10.0] +- Database: [e.g., PostgreSQL 15.0] + +## Steps to Reproduce +1. Step one +2. Step two +3. Step three + +## Expected Behavior +What you expected to happen + +## Actual Behavior +What actually happened + +## Error Messages +Full error message and stack trace + +## Additional Context +Any other relevant information +``` + +--- + +This guide covers the most common development issues. For production deployment issues, see the [Self-hosted documentation](/self-hosted/). diff --git a/contributing-guide/community-guidelines.mdx b/contributing-guide/community-guidelines.mdx new file mode 100644 index 00000000..ab7f149f --- /dev/null +++ b/contributing-guide/community-guidelines.mdx @@ -0,0 +1,205 @@ +--- +title: Chatwoot Community Guidelines +description: Guidelines for participating in the Chatwoot community across all platforms +sidebarTitle: Community Guidelines +--- + +# Chatwoot Community Guidelines + +Welcome to the Chatwoot community! These guidelines help ensure our community remains welcoming, productive, and inclusive for everyone. + +## General Principles + +### 1. Respect and Inclusivity +Everyone is welcome here. Treat all members with respect, regardless of their background, identity, or level of experience. + +### 2. Collaboration Over Conflict +Always approach discussions and feedback with a constructive attitude. We're all here to learn and grow together. + +### 3. No Spam or Self-Promotion +Unsolicited advertisements, promotions, or spammy links are not allowed. Share valuable content that benefits the community. + +## Platform-Specific Guidelines + +### Discord-Specific Guidelines + +Our Discord server is where the community gathers for real-time discussions, support, and collaboration. + +#### Channel Etiquette + +1. **Stay On Topic**: Each channel has its purpose. Ensure your discussions are relevant to the channel topic. +2. **Use Thread Responses**: For lengthy discussions, use thread replies to keep channels organized. +3. **Search Before Asking**: Check pinned messages and recent discussions before asking questions. + +#### Content Guidelines + +1. **No NSFW Content**: This is a professional community. Do not share or promote any NSFW content. +2. **Quality Over Quantity**: Focus on helpful, meaningful contributions rather than frequent low-value messages. +3. **Appropriate Language**: Keep language professional and appropriate for a business environment. + +#### Voice Channels + +1. **Microphone Etiquette**: Ensure your microphone is muted when not speaking. +2. **Respect Speaking Time**: Avoid interrupting others and allow everyone to participate. +3. **Background Noise**: Use push-to-talk if you're in a noisy environment. + +#### Reporting and Support + +1. **Report Violations**: If you see someone violating these guidelines, don't engage. Instead, report it to the moderators. +2. **Use Private Messages**: For sensitive issues, reach out to moderators via private message. + +### GitHub-Specific Guidelines + +GitHub is our primary platform for code collaboration, issue tracking, and project management. + +#### Issue Reporting + +1. **Search First**: Before reporting a bug or requesting a feature, search the issues to ensure it hasn't been addressed already. +2. **Use Templates**: Follow the provided issue templates for bug reports and feature requests. +3. **Provide Details**: Include clear steps to reproduce, expected behavior, and actual behavior. +4. **Stay Updated**: Monitor your issues for questions from maintainers and respond promptly. + +#### Pull Requests + +1. **Clear Descriptions**: Ensure your PRs are concise, have a clear title, and are linked to relevant issues. +2. **Follow Style Guide**: Adhere to the existing coding style and conventions. +3. **Test Thoroughly**: Test your changes in multiple scenarios before submitting. +4. **Respond to Reviews**: Address feedback constructively and make requested changes promptly. + +#### Code Review Guidelines + +1. **Be Constructive**: Provide specific, actionable feedback rather than general criticism. +2. **Explain Reasoning**: When suggesting changes, explain why the change would improve the code. +3. **Appreciate Good Work**: Acknowledge good code and clever solutions. +4. **Stay Professional**: Keep discussions focused on the code, not the person. + +#### Documentation + +1. **Update Documentation**: If your PR introduces a new feature, ensure that it's documented. +2. **Fix What You See**: If you spot outdated or missing documentation, consider updating it or raising an issue. +3. **Clear Examples**: Provide clear, working examples in documentation. + +## Community Support + +### Helping Others + +#### In Discord + +- **Be Patient**: Remember that people have different experience levels +- **Provide Context**: When helping, explain not just what to do, but why +- **Share Resources**: Link to relevant documentation or previous discussions +- **Follow Up**: Check if your help resolved the issue + +#### In GitHub + +- **Helpful Comments**: Provide constructive feedback on issues and PRs +- **Share Knowledge**: Contribute to discussions with your expertise +- **Test Solutions**: Help test proposed fixes when possible + +### Getting Help + +#### Before Asking + +1. **Check Documentation**: Review the official docs first +2. **Search History**: Look through previous discussions and issues +3. **Try Solutions**: Attempt basic troubleshooting steps + +#### When Asking + +1. **Be Specific**: Provide clear details about your issue +2. **Include Context**: Share relevant environment information +3. **Show Effort**: Explain what you've already tried +4. **Be Patient**: Allow time for community members to respond + +## Consequences for Violating Guidelines + +We enforce these guidelines to maintain a positive community environment. + +### Warning System + +1. **First Violation**: For most violations, you will receive a warning from the moderators. +2. **Repeated Minor Violations**: Additional warnings may lead to temporary restrictions. + +### Immediate Actions + +For serious violations, immediate actions may be taken: + +- **Spam or Self-Promotion**: Immediate ban or removal +- **Harassment or Abuse**: Immediate removal from the community +- **Sharing Inappropriate Content**: Content removal and potential ban + +### Appeal Process + +If you believe you've been unfairly moderated: + +1. **Contact Moderators**: Reach out via private message +2. **Provide Context**: Explain your perspective respectfully +3. **Accept Decisions**: Respect final moderation decisions + +Refer to [enforcement guidelines](/contributing-guide/code-of-conduct#enforcement-guidelines) for more details. + +## Moderator and Admin Privileges + +### Selection Process + +Active contributors to the Chatwoot community, those who consistently offer valuable insights, help, and engagement, may be handpicked as moderators or granted specific privileges. + +### Criteria for Moderators + +- **Consistent Contribution**: Regular, helpful participation in the community +- **Good Judgment**: Demonstrated ability to handle conflicts constructively +- **Technical Knowledge**: Understanding of Chatwoot and related technologies +- **Time Commitment**: Ability to dedicate time to moderation duties + +### Responsibilities + +Moderators are expected to: + +- **Enforce Guidelines**: Apply community guidelines fairly and consistently +- **Facilitate Discussions**: Help keep conversations productive and on-topic +- **Support Users**: Provide assistance and guidance to community members +- **Report Issues**: Escalate serious violations to administrators + +### Discretionary Decisions + +- **Appointment Process**: The appointment of moderators and the granting of additional privileges are at the sole discretion of the Chatwoot team. +- **Review Process**: Moderator performance is reviewed regularly to ensure community standards are maintained. + +### Admin Privileges + +For compliance and security reasons, admin privileges in all Chatwoot communities are reserved exclusively for Chatwoot employees. + +## Building a Positive Community + +### Encouraging Participation + +- **Welcome Newcomers**: Help new members feel included and valued +- **Celebrate Contributions**: Acknowledge helpful contributions and achievements +- **Share Knowledge**: Contribute your expertise to help others learn +- **Provide Feedback**: Offer constructive feedback on ideas and solutions + +### Creating Inclusive Environment + +- **Use Inclusive Language**: Choose words that welcome all community members +- **Respect Differences**: Value diverse perspectives and experiences +- **Avoid Assumptions**: Don't assume others' backgrounds or knowledge levels +- **Learn Together**: Approach discussions as learning opportunities + +## Resources for Community Members + +### Getting Started + +- **Community Onboarding**: [Discord community](https://discord.com/invite/cJXdrwS) +- **Contributor Guide**: [Contributing documentation](/contributing-guide) +- **Code of Conduct**: [Detailed guidelines](/contributing-guide/code-of-conduct) + +### Stay Connected + +- **Discord Server**: Real-time community discussions +- **GitHub Discussions**: Long-form technical discussions +- **Twitter**: [@chatwootapp](https://twitter.com/chatwootapp) for updates +- **Blog**: [Chatwoot Blog](https://www.chatwoot.com/blog) for articles and insights + +--- + +Together, we can build an amazing community that supports Chatwoot users and contributors worldwide. Thank you for being part of our journey! 🚀 diff --git a/contributing-guide/contributors.mdx b/contributing-guide/contributors.mdx new file mode 100644 index 00000000..b188eef7 --- /dev/null +++ b/contributing-guide/contributors.mdx @@ -0,0 +1,37 @@ +--- +title: Contributors +description: Meet the amazing people who contribute to Chatwoot +sidebarTitle: Contributors +--- + +# Contributors + +Chatwoot is made possible by the amazing community of developers, designers, translators, and supporters who contribute their time and expertise to make it better every day. + +## Our Contributors + +You can find the full list of contributors at [https://contributors.chatwoot.com](https://contributors.chatwoot.com) + + + +## Join Our Contributors + +Ready to make your mark on Chatwoot? Here's how to get started: + +### Quick Start + +1. **Star the Repository**: [Star Chatwoot on GitHub](https://github.com/chatwoot/chatwoot) +2. **Join Discord**: [Join our Discord community](https://discord.com/invite/cJXdrwS) +3. **Pick an Issue**: Find a [good first issue](https://github.com/chatwoot/chatwoot/labels/good%20first%20issue) +4. **Make Your First Contribution**: Follow our [contribution guide](/contributing-guide) + +### Stay Connected + +- **GitHub**: [github.com/chatwoot/chatwoot](https://github.com/chatwoot/chatwoot) +- **Discord**: [discord.com/invite/cJXdrwS](https://discord.com/invite/cJXdrwS) +- **Twitter**: [@chatwootapp](https://twitter.com/chatwootapp) +- **LinkedIn**: [Chatwoot Company Page](https://www.linkedin.com/company/chatwoot) + +--- + +Every contribution, no matter how small, makes Chatwoot better for thousands of users worldwide. Thank you for considering joining our contributor community! 🙏 diff --git a/contributing-guide/environment-setup/docker.mdx b/contributing-guide/environment-setup/docker.mdx new file mode 100644 index 00000000..e3bc10a7 --- /dev/null +++ b/contributing-guide/environment-setup/docker.mdx @@ -0,0 +1,283 @@ +--- +title: Docker Development Setup +description: Complete guide to setting up Chatwoot development environment using Docker and Docker Compose. +sidebarTitle: Docker Setup +--- + +# Docker Development Setup + +This guide will help you set up a complete Chatwoot development environment using Docker and Docker Compose. + +## Pre-requisites + +Before proceeding, make sure you have the latest version of `docker` and `docker-compose` installed. + +As of now, we recommend a version equal to or higher than the following: + +```bash +$ docker --version +Docker version 25.0.4, build 1a576c5 +$ docker compose --version +docker-compose version 2.24.7 +``` + +### Install Docker + +#### Windows + +1. **Download Docker Desktop** from [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/) +2. **Run the installer** and follow setup instructions +3. **Enable WSL2 backend** (recommended) +4. **Restart your computer** when prompted + +#### macOS + +```bash +# Option 1: Download from website +# Go to https://www.docker.com/products/docker-desktop/ + +# Option 2: Using Homebrew +brew install --cask docker +``` + +#### Linux (Ubuntu/Debian) + +```bash +# Update package index +sudo apt update + +# Install dependencies +sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release + +# Add Docker's official GPG key +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + +# Add Docker repository +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + +# Install Docker +sudo apt update +sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin + +# Add user to docker group +sudo usermod -aG docker $USER + +# Start Docker service +sudo systemctl start docker +sudo systemctl enable docker +``` + + +After adding yourself to the docker group on Linux, log out and log back in for the changes to take effect. + + +## Development Environment + +1. **Clone the repository.** + + ```bash + git clone https://github.com/chatwoot/chatwoot.git + ``` + +2. **Make a copy of the example environment file and modify it as required.** + + ```bash + # Navigate to Chatwoot + cd chatwoot + cp .env.example .env + # Update redis and postgres passwords + nano .env + # Update docker-compose.yaml with the same postgres password + nano docker-compose.yaml + ``` + +3. **Build the images.** + + ```bash + # Build base image first + docker compose build base + + # Build the server and worker + docker compose build + ``` + +4. **After building the image or destroying the stack, you would have to reset the database using the following command.** + + ```bash + docker compose run --rm rails bundle exec rails db:chatwoot_prepare + ``` + +5. **To run the app:** + + ```bash + docker compose up + ``` + + * Access the rails app frontend by visiting `http://0.0.0.0:3000/` + * Access Mailhog inbox by visiting `http://0.0.0.0:8025/` (You will receive all emails going out of the application here) + + #### Login with credentials + ``` + url: http://localhost:3000 + user_name: john@acme.inc + password: Password1! + ``` + +6. **To stop the app:** + + ```bash + docker compose down + ``` + +## Running RSpec Tests + +For running the complete RSpec tests: + +```bash +docker compose run --rm rails bundle exec rspec +``` + +For running specific test: + +```bash +docker compose run --rm rails bundle exec rspec spec/: +``` + +## Production Environment + +To debug the production build locally, set `SECRET_KEY_BASE` environment variable in your `.env` file and then run the below commands: + +```bash +docker compose -f docker-compose.production.yaml build +docker compose -f docker-compose.production.yaml up +``` + +## Debugging Mode + +To use debuggers like `byebug` or `binding.pry`, use the following command to bring up the app instead of `docker compose up`: + +```bash +docker compose run --rm --service-port rails +``` + +## Development Workflow + +### Daily Development Commands + +```bash +# Start development environment +docker compose up + +# View logs +docker compose logs -f rails + +# Access Rails console +docker compose exec rails bundle exec rails console + +# Run migrations +docker compose exec rails bundle exec rails db:migrate + +# Install new gems +docker compose exec rails bundle install + +# Restart a service +docker compose restart rails + +# Stop all services +docker compose down + +# Stop and remove volumes (reset database) +docker compose down -v +``` + +## Troubleshooting + +If there is an update to any of the following: +- `dockerfile` +- `gemfile` +- `package.json` +- schema change + +Make sure to rebuild the containers and run `db:reset`. + +```bash +docker compose down +docker compose build +docker compose run --rm rails bundle exec rails db:reset +docker compose up +``` + +### Common Issues + + +**Solution**: Check service dependencies and logs: +```bash +# Check service status +docker compose ps + +# Check logs for specific service +docker compose logs rails + +# Restart problematic service +docker compose restart rails +``` + + + +**Solution**: Ensure PostgreSQL container is healthy: +```bash +# Check postgres health +docker compose exec postgres pg_isready + +# Restart postgres if needed +docker compose restart postgres +``` + + + +**Solution**: Stop other services using the same ports: +```bash +# Check what's using port 3000 +lsof -i :3000 + +# Or change ports in docker-compose.yaml +``` + + + +**Solution**: Clean up Docker resources: +```bash +# Remove unused containers, networks, images +docker system prune -f + +# Remove volumes (WARNING: This deletes data) +docker volume prune -f + +# Remove everything (nuclear option) +docker system prune -a --volumes +``` + + + +**Solution**: Clear Docker cache and rebuild: +```bash +# Clear build cache +docker builder prune + +# Rebuild without cache +docker compose build --no-cache +``` + + +## Getting Help + +If you encounter Docker-specific issues: + +- **Docker Documentation**: [https://docs.docker.com/](https://docs.docker.com/) +- **Docker Compose Reference**: [https://docs.docker.com/compose/](https://docs.docker.com/compose/) +- **Chatwoot Issues**: [GitHub Issues](https://github.com/chatwoot/chatwoot/issues) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +--- + +Your Docker development environment is now ready for Chatwoot development! 🐳 \ No newline at end of file diff --git a/contributing-guide/environment-setup/local-development.mdx b/contributing-guide/environment-setup/local-development.mdx new file mode 100644 index 00000000..ef77ef68 --- /dev/null +++ b/contributing-guide/environment-setup/local-development.mdx @@ -0,0 +1,588 @@ +--- +title: Local Development Setup +description: Set up Chatwoot for local development on your machine +sidebarTitle: Local Development +--- + +# Local Development Setup + +This guide will help you set up Chatwoot for local development on your machine. Follow these steps to get a complete development environment running. + +## Prerequisites + +Before setting up Chatwoot locally, ensure you have the following installed: + +### Required Software + + + + Ruby 3.3.3 (managed with rbenv or RVM) + + + Node.js 20+ with pnpm package manager + + + PostgreSQL 13+ for the database + + + Redis 6+ for caching and background jobs + + + +### System Dependencies + + + + ```bash + # Install Homebrew if not already installed + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + + # Install dependencies + brew install postgresql@15 redis imagemagick git + + # Install rbenv for Ruby version management + brew install rbenv ruby-build + + # Install Node.js and pnpm + brew install node + npm install -g pnpm + + # Start services + brew services start postgresql@15 + brew services start redis + ``` + + + + ```bash + # Update package list + sudo apt update + + # Install dependencies + sudo apt install -y curl git build-essential libssl-dev libreadline-dev \ + zlib1g-dev libpq-dev imagemagick libmagickwand-dev libffi-dev \ + postgresql postgresql-contrib redis-server + + # Install rbenv + curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash + + # Install Node.js (using NodeSource) + curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - + sudo apt install -y nodejs + + # Install pnpm + npm install -g pnpm + + # Start services + sudo systemctl start postgresql + sudo systemctl start redis-server + sudo systemctl enable postgresql + sudo systemctl enable redis-server + ``` + + + + ```bash + # Install EPEL repository + sudo yum install -y epel-release + + # Install dependencies + sudo yum groupinstall -y "Development Tools" + sudo yum install -y curl git openssl-devel readline-devel zlib-devel \ + postgresql-devel ImageMagick-devel libffi-devel postgresql-server \ + postgresql-contrib redis + + # Initialize PostgreSQL + sudo postgresql-setup initdb + + # Install rbenv + curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash + + # Install Node.js + curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - + sudo yum install -y nodejs + + # Install pnpm + npm install -g pnpm + + # Start services + sudo systemctl start postgresql + sudo systemctl start redis + sudo systemctl enable postgresql + sudo systemctl enable redis + ``` + + + +## Ruby Setup + +### Install Ruby with rbenv + +```bash +# Add rbenv to your shell profile +echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc +echo 'eval "$(rbenv init -)"' >> ~/.bashrc +source ~/.bashrc + +# Install Ruby 3.3.3 +rbenv install 3.3.3 +rbenv global 3.3.3 + +# Verify installation +ruby --version +# Should output: ruby 3.3.3 + +# Install bundler +gem install bundler +``` + +### Alternative: Using RVM + +```bash +# Install RVM +curl -sSL https://get.rvm.io | bash -s stable +source ~/.rvm/scripts/rvm + +# Install Ruby 3.3.3 +rvm install 3.3.3 +rvm use 3.3.3 --default + +# Verify installation +ruby --version +gem install bundler +``` + +## Database Setup + +### PostgreSQL Configuration + +```bash +# Create PostgreSQL user (macOS with Homebrew) +createuser -s chatwoot + +# Create PostgreSQL user (Linux) +sudo -u postgres createuser -s chatwoot + +# Set password for the user +sudo -u postgres psql +postgres=# ALTER USER chatwoot PASSWORD 'password'; +postgres=# \q + +# Create databases +createdb chatwoot_development +createdb chatwoot_test +``` + +### PostgreSQL Authentication Setup + +Edit PostgreSQL configuration to allow local connections: + +```bash +# Find pg_hba.conf location +sudo -u postgres psql -c "SHOW hba_file;" + +# Edit the file (example path) +sudo nano /etc/postgresql/15/main/pg_hba.conf + +# Add or modify these lines: +local all chatwoot md5 +host all chatwoot 127.0.0.1/32 md5 +host all chatwoot ::1/128 md5 + +# Restart PostgreSQL +sudo systemctl restart postgresql +``` + +## Project Setup + +### Clone the Repository + +```bash +# Fork the repository on GitHub first, then clone your fork +git clone https://github.com/YOUR_USERNAME/chatwoot.git +cd chatwoot + +# Add upstream remote +git remote add upstream https://github.com/chatwoot/chatwoot.git + +# Verify remotes +git remote -v +``` + +### Install Dependencies + +```bash +# Install Ruby dependencies +bundle install + +# Install Node.js dependencies +pnpm install + +# Install Playwright for E2E tests (optional) +pnpm exec playwright install +``` + +### Environment Configuration + +```bash +# Copy environment file +cp .env.example .env + +# Edit the environment file +nano .env +``` + +Update the `.env` file with your local configuration: + +```bash +# Database configuration +DATABASE_URL=postgresql://chatwoot:password@localhost:5432/chatwoot_development +REDIS_URL=redis://localhost:6379/0 + +# Application settings +FRONTEND_URL=http://localhost:3000 +FORCE_SSL=false +RAILS_ENV=development +NODE_ENV=development + +# Email configuration (for development) +MAILER_SENDER_EMAIL=dev@chatwoot.local +SMTP_ADDRESS=localhost +SMTP_PORT=1025 + +# File storage (local) +ACTIVE_STORAGE_SERVICE=local + +# Development features +ENABLE_DEVELOPMENT_FEATURES=true +LOG_LEVEL=debug +``` + +### Database Initialization + +```bash +# Create and migrate the database +bundle exec rails db:create +bundle exec rails db:migrate + +# Seed the database with sample data +bundle exec rails db:seed + +# Prepare the test database +RAILS_ENV=test bundle exec rails db:create +RAILS_ENV=test bundle exec rails db:migrate +``` + +## Running the Application + +### Start Development Servers + +You'll need to run multiple processes for full development: + +#### Option 1: Using Foreman (Recommended) + +```bash +# Install foreman +gem install foreman + +# Start all services +foreman start -f Procfile.dev +``` + +#### Option 2: Manual Process Management + +Open multiple terminal windows/tabs: + +```bash +# Terminal 1: Rails server +bundle exec rails server -p 3000 + +# Terminal 2: Webpack dev server +pnpm run dev + +# Terminal 3: Sidekiq worker +bundle exec sidekiq + +# Terminal 4: MailHog (for email testing) +mailhog +``` + +### Access the Application + +Once all services are running: + +- **Web Application**: http://localhost:3000 +- **API Documentation**: http://localhost:3000/swagger +- **Sidekiq Web UI**: http://localhost:3000/sidekiq +- **MailHog (Email)**: http://localhost:8025 + +### Default Login Credentials + +After seeding the database, you can log in with: + +- **Email**: john@acme.inc +- **Password**: Password1! + +## Development Tools + +### Code Quality Tools + +```bash +# Install development gems +bundle install --with development test + +# Run RuboCop (Ruby linter) +bundle exec rubocop + +# Run RuboCop with auto-fix +bundle exec rubocop -a + +# Run ESLint (JavaScript linter) +pnpm run lint + +# Run ESLint with auto-fix +pnpm run lint:fix + +# Run Prettier (code formatter) +pnpm run format +``` + +### Testing + +```bash +# Run Ruby tests +bundle exec rspec + +# Run specific test file +bundle exec rspec spec/models/user_spec.rb + +# Run JavaScript tests +pnpm run test + +# Run E2E tests +pnpm run test:e2e + +# Run tests with coverage +COVERAGE=true bundle exec rspec +``` + +### Database Operations + +```bash +# Reset database +bundle exec rails db:drop db:create db:migrate db:seed + +# Generate migration +bundle exec rails generate migration AddColumnToTable column:type + +# Run migrations +bundle exec rails db:migrate + +# Rollback migration +bundle exec rails db:rollback + +# Check migration status +bundle exec rails db:migrate:status +``` + +## IDE and Editor Setup + +### VS Code Configuration + +Create `.vscode/settings.json`: + +```json +{ + "ruby.intellisense": "rubyLocate", + "ruby.codeCompletion": "rcodetools", + "ruby.format": "rubocop", + "editor.formatOnSave": true, + "editor.rulers": [120], + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "eslint.autoFixOnSave": true, + "prettier.requireConfig": true +} +``` + +### Recommended VS Code Extensions + +```json +{ + "recommendations": [ + "rebornix.ruby", + "wingrunr21.vscode-ruby", + "bradlc.vscode-tailwindcss", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "ms-vscode.vscode-typescript-next", + "bradlc.vscode-tailwindcss" + ] +} +``` + +### RubyMine Configuration + +1. Open the project in RubyMine +2. Configure Ruby SDK: File → Project Structure → SDKs +3. Set up database connection in Database tool window +4. Configure code style: File → Settings → Editor → Code Style + +## Debugging + +### Rails Debugging + +```ruby +# Add to your code for debugging +binding.pry + +# Or use the built-in debugger +debugger +``` + +### JavaScript Debugging + +```javascript +// Add to your code +console.log('Debug info:', variable); +debugger; +``` + +### Database Debugging + +```bash +# Rails console +bundle exec rails console + +# Database console +bundle exec rails dbconsole + +# Check database queries in logs +tail -f log/development.log | grep SQL +``` + +## Common Issues and Solutions + +### Bundle Install Issues + + +```bash +# macOS +brew install postgresql +bundle config build.pg --with-pg-config=/usr/local/bin/pg_config + +# Ubuntu/Debian +sudo apt-get install libpq-dev +bundle install +``` + + + +```bash +# macOS +brew install imagemagick pkg-config + +# Ubuntu/Debian +sudo apt-get install libmagickwand-dev + +# Then reinstall the gem +bundle pristine rmagick +``` + + +### Node.js Issues + + +```bash +# Clear cache and reinstall +pnpm store prune +rm -rf node_modules +pnpm install +``` + + + +```bash +# Clear webpack cache +rm -rf tmp/cache/webpacker +pnpm run dev +``` + + +### Database Issues + + +```bash +# Check if PostgreSQL is running +sudo systemctl status postgresql + +# Start PostgreSQL if not running +sudo systemctl start postgresql + +# Check connection +psql -U chatwoot -d chatwoot_development -h localhost +``` + + + +```bash +# Reset PostgreSQL user password +sudo -u postgres psql +postgres=# ALTER USER chatwoot PASSWORD 'password'; +postgres=# \q +``` + + +## Performance Optimization + +### Development Performance Tips + +```bash +# Use spring for faster Rails commands +bundle exec spring binstub --all + +# Use bootsnap for faster boot times (already included) +# Ensure tmp/cache directory exists +mkdir -p tmp/cache + +# Use parallel testing +bundle exec rspec --parallel + +# Optimize database queries +# Add to config/environments/development.rb +config.active_record.verbose_query_logs = true +``` + +### Memory Usage Optimization + +```bash +# Monitor memory usage +ps aux | grep ruby +ps aux | grep node + +# Use jemalloc for better memory management +export MALLOC_ARENA_MAX=2 +bundle exec rails server +``` + +## Next Steps + +Once you have your development environment set up: + +1. **Read the Contributing Guidelines**: Check out the [contributing guide](/contributing-guide) for code standards and workflow +2. **Explore the Codebase**: Familiarize yourself with the project structure +3. **Pick an Issue**: Look for "good first issue" labels on GitHub +4. **Join the Community**: Connect with other contributors on Discord or GitHub Discussions + +## Getting Help + +If you encounter issues during setup: + +- **GitHub Issues**: Search existing issues or create a new one +- **Discord Community**: Join the Chatwoot Discord server +- **Documentation**: Check the official documentation +- **Stack Overflow**: Search for Chatwoot-related questions + +--- + +You're now ready to start contributing to Chatwoot! The development environment should be fully functional and ready for coding. diff --git a/contributing-guide/environment-setup/mac-os.mdx b/contributing-guide/environment-setup/mac-os.mdx new file mode 100644 index 00000000..50c08ccf --- /dev/null +++ b/contributing-guide/environment-setup/mac-os.mdx @@ -0,0 +1,314 @@ +--- +title: macOS Development Setup +description: Complete guide to setting up your macOS development environment for Chatwoot contribution. +sidebarTitle: macOS Setup +--- + +# macOS Development Setup + +This guide will help you set up your macOS development environment for contributing to Chatwoot. Open Terminal app and run the following commands. + +## Installing the Standalone Command Line Tools + +Open Terminal app and run: + +```bash +xcode-select --install +``` + +This installs essential development tools including Git, GCC, and other command line utilities. + +## Install Homebrew + +Homebrew is the missing package manager for macOS: + +```bash +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +``` + +After installation, add Homebrew to your PATH (if not automatically added): + +```bash +echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile +eval "$(/opt/homebrew/bin/brew shellenv)" +``` + +## Install Git + +```bash +brew update +brew install git +``` + +Configure Git with your information: + +```bash +git config --global user.name "Your Name" +git config --global user.email "your.email@example.com" +``` + +## Install Ruby Version Manager + +Choose between RVM or rbenv for managing Ruby versions. + +### Option 1: Install RVM (Recommended) + +```bash +curl -L https://get.rvm.io | bash -s stable +source ~/.rvm/scripts/rvm +``` + +### Option 2: Install rbenv (Alternative) + +```bash +brew install rbenv ruby-build +echo 'eval "$(rbenv init -)"' >> ~/.zshrc +source ~/.zshrc +``` + +## Install Ruby + +Chatwoot APIs are built on Ruby on Rails. You need to install Ruby 3.2.2. + +### If using RVM: + +```bash +rvm install ruby-3.2.2 +rvm use 3.2.2 --default +source ~/.rvm/scripts/rvm +``` + +### If using rbenv: + +```bash +rbenv install 3.2.2 +rbenv global 3.2.2 +``` + + +rbenv identifies the ruby version from `.ruby-version` file on the root of the project and loads it automatically. + + +Verify Ruby installation: + +```bash +ruby --version +# Should output: ruby 3.2.2 +``` + +## Install Node.js + +Chatwoot requires Node.js version 20: + +```bash +brew install node@20 +``` + +If you need to link Node.js 20: + +```bash +brew link node@20 +echo 'export PATH="/opt/homebrew/opt/node@20/bin:$PATH"' >> ~/.zshrc +source ~/.zshrc +``` + +Verify Node.js installation: + +```bash +node --version +# Should output: v20.x.x +``` + +## Install pnpm + +We use `pnpm` as our package manager for better performance: + +```bash +brew install pnpm +``` + +Verify pnpm installation: + +```bash +pnpm --version +``` + +## Install PostgreSQL + +The database used in Chatwoot is PostgreSQL. + +### Option 1: PostgresApp (Recommended) + +1. Download and install PostgresApp from [https://postgresapp.com](https://postgresapp.com) +2. This is the easiest way to get started with PostgreSQL on macOS +3. Follow the setup instructions on their website + +### Option 2: Homebrew Installation + +```bash +brew install postgresql@14 +``` + +Start PostgreSQL service: + +```bash +brew services start postgresql@14 +``` + +Create a PostgreSQL user: + +```bash +createuser -s postgres +``` + +Connect to PostgreSQL to verify installation: + +```bash +psql postgres +# Type \q to exit +``` + +## Install Redis Server + +Chatwoot uses Redis server for agent assignments and reporting: + +```bash +brew install redis +``` + +Start the Redis service: + +```bash +brew services start redis +``` + +Verify Redis installation: + +```bash +redis-cli ping +# Should output: PONG +``` + +## Install ImageMagick + +Chatwoot uses ImageMagick library to resize images for previews and thumbnails: + +```bash +brew install imagemagick +``` + +Verify ImageMagick installation: + +```bash +convert --version +``` + +## Install Additional Dependencies + +Install other useful development tools: + +```bash +# Install Yarn (alternative to pnpm if needed) +brew install yarn + +# Install SQLite (for testing) +brew install sqlite + +# Install libvips (for image processing) +brew install libvips +``` + +## Install Docker (Optional) + +For development and testing with containers: + +```bash +# Install Docker Desktop +brew install --cask docker +``` + +Or download Docker Desktop from [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/). + +## Environment Verification + +Verify all installations are working: + +```bash +# Check versions +ruby --version # Should be 3.2.2 +node --version # Should be v20.x.x +pnpm --version # Should show pnpm version +psql --version # Should show PostgreSQL version +redis-cli --version # Should show Redis version +convert --version # Should show ImageMagick version +git --version # Should show Git version +``` + +## Configure Shell Environment + +Add useful aliases to your shell configuration file (`~/.zshrc` for Zsh): + +```bash +# Add to ~/.zshrc +echo '# Chatwoot Development Aliases' >> ~/.zshrc +echo 'alias cw-server="bundle exec rails server"' >> ~/.zshrc +echo 'alias cw-console="bundle exec rails console"' >> ~/.zshrc +echo 'alias cw-test="bundle exec rspec"' >> ~/.zshrc +echo 'alias cw-migrate="bundle exec rails db:migrate"' >> ~/.zshrc + +# Reload shell configuration +source ~/.zshrc +``` +## Troubleshooting Common Issues + + +**Solution**: Update macOS to the latest version and try again. You can also download Xcode from the App Store. + + + +**Solution**: +```bash +sudo chown -R $(whoami) /opt/homebrew +``` + + + +**Solution**: +```bash +# Install missing dependencies +brew install openssl readline libyaml +rvm reinstall 3.2.2 --with-openssl-dir=$(brew --prefix openssl) +``` + + + +**Solution**: +```bash +# Restart PostgreSQL +brew services restart postgresql@14 + +# Check if it's running +brew services list | grep postgresql +``` + + + +**Solution**: +```bash +# If you encounter issues, try: +brew uninstall imagemagick +brew install imagemagick +``` + + +## Getting Help + +If you encounter issues: + +- **Common Errors**: Check [Common Errors](/contributing-guide/common-errors) +- **Discord Community**: Join our [Discord](https://discord.com/invite/cJXdrwS) +- **GitHub Issues**: [Create an issue](https://github.com/chatwoot/chatwoot/issues) + +--- + +Your macOS development environment is now ready for Chatwoot development! 🚀 diff --git a/docs/contributing-guide/environment-setup/make.md b/contributing-guide/environment-setup/make.mdx similarity index 67% rename from docs/contributing-guide/environment-setup/make.md rename to contributing-guide/environment-setup/make.mdx index 3c2992f4..ccfab7ed 100644 --- a/docs/contributing-guide/environment-setup/make.md +++ b/contributing-guide/environment-setup/make.mdx @@ -1,14 +1,18 @@ --- -sidebar_label: "Make Commands" -title: "Speed up your local development with Make" +title: Make Commands Setup +description: Speed up your local development workflow with Make commands for Chatwoot. +sidebarTitle: Make Setup --- -Speed up your local development workflow with make commands. +# Speed up your local development with Make + +Speed up your local development workflow with make commands for Chatwoot. ## Clone the repo and cd to the Chatwoot directory Clone the repository and navigate to the Chatwoot directory: -``` + +```bash git clone https://github.com/chatwoot/chatwoot.git cd chatwoot ``` @@ -16,73 +20,96 @@ cd chatwoot ## Install Ruby & JavaScript dependencies Install Ruby and JavaScript dependencies using the following command. This command runs Bundler and pnpm: -``` + +```bash make burn ``` ## Run database migrations Apply necessary database schema changes to your development environment by running the following command: -``` + +```bash make db ``` ## Run database seed Load some seed data to your development environment for testing by running the following command: -``` + +```bash make db_seed ``` ## Run dev server using Overmind Start the development server using Overmind, a process manager that can run multiple processes concurrently: -``` + +```bash make run ``` ## Force run if ./.overmind.sock file exists If the `make run` command fails due to the existence of a `./.overmind.sock` file, you can try using the following command: -``` + +```bash make force_run ``` ## Debug - Attach to backend via Overmind tmux session For debugging purposes, you can attach to the backend via the Overmind tmux session using the following command: -``` + +```bash make debug ``` ## Debug worker To debug the worker, use the following command: -``` + +```bash make debug_worker ``` ## Get Rails console Access the Rails console, which provides an interactive environment for interacting with the Chatwoot application: -``` + +```bash make console ``` ## Build Docker image Build the Docker image for the Chatwoot project: -``` + +```bash make docker ``` ## Workflow after pulling in the latest changes from `develop` To update your development environment after pulling the latest changes from the `develop` branch, follow these steps: -``` + +```bash make burn # Install dependencies make db # Run migrations make run # Start the server ``` + +## Getting Help + +If you encounter issues with Make commands: + +- **Makefile Documentation**: Check the project's `Makefile` for available commands +- **Overmind Documentation**: [https://github.com/DarthSim/overmind](https://github.com/DarthSim/overmind) +- **Chatwoot Issues**: [GitHub Issues](https://github.com/chatwoot/chatwoot/issues) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +--- + +Your Make-based development workflow is now ready for efficient Chatwoot development! 🚀 \ No newline at end of file diff --git a/contributing-guide/environment-setup/ubuntu.mdx b/contributing-guide/environment-setup/ubuntu.mdx new file mode 100644 index 00000000..a01fae95 --- /dev/null +++ b/contributing-guide/environment-setup/ubuntu.mdx @@ -0,0 +1,237 @@ +--- +title: Ubuntu Development Setup +description: Complete guide to setting up your Ubuntu development environment for Chatwoot contribution. +sidebarTitle: Ubuntu Setup +--- + +# Ubuntu Development Setup + +This guide will help you set up your Ubuntu development environment for contributing to Chatwoot. These instructions work for Ubuntu 20.04, 22.04, and newer versions. + +## Update System Packages + +Open a terminal and run the following commands to update your system packages: + +```bash +sudo apt-get update +``` + +## Install Git + +Install Git for version control: + +```bash +sudo apt-get install git +``` + +Configure Git with your information: + +```bash +git config --global user.name "Your Name" +git config --global user.email "your.email@example.com" +``` + +Verify Git installation: + +```bash +git --version +``` + +## Install RVM + +You need software-properties-common installed in order to add PPA repositories: + +```bash +sudo apt-get install software-properties-common +``` + +Install RVM (Ruby Version Manager): + +```bash +sudo apt-add-repository -y ppa:rael-gc/rvm +sudo apt-get update +sudo apt-get install rvm +sudo usermod -a -G rvm $USER +``` + +**Important**: Enable `Run command as a login shell` in terminal `Preferences`. Restart your computer after installation. + +## Install Ruby + +Chatwoot APIs are built on Ruby on Rails. You need to install Ruby 3.3.3: + +```bash +rvm install ruby-3.3.3 +``` + +Use Ruby 3.3.3 as default: + +```bash +rvm use 3.3.3 --default +``` + +Verify Ruby installation: + +```bash +ruby --version +# Should output: ruby 3.3.3 +``` + +## Install Node.js + +Chatwoot requires Node.js version `20`. Install Node.js from NodeSource using the following commands: + +```bash +curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt-get install -y nodejs +``` + +Verify Node.js installation: + +```bash +node --version +# Should output: v20.x.x + +npm --version +``` + +## Install pnpm + +We use `pnpm` as the package manager: + +```bash +curl -fsSL https://get.pnpm.io/install.sh | sh - +``` + +Verify pnpm installation: + +```bash +pnpm --version +``` + +## Install PostgreSQL + +The database used in Chatwoot is PostgreSQL. Use the following commands to install PostgreSQL: + +```bash +sudo apt install postgresql postgresql-contrib +``` + +The installation procedure creates a user account called postgres that is associated with the default Postgres role. In order to use Postgres, you can log into that account: + +```bash +sudo -u postgres psql +``` + +Install `libpq-dev` dependencies for Ubuntu: + +```bash +sudo apt-get install libpq-dev +``` + +Verify PostgreSQL installation: + +```bash +psql --version +``` + +## Install Redis Server + +Chatwoot uses Redis server in agent assignments and reporting. You need to install `redis-server`: + +```bash +sudo apt-get install redis-server +``` + +Next, enable Redis to start on system boot: + +```bash +sudo systemctl enable redis-server.service +``` + +Verify Redis installation: + +```bash +redis-cli ping +# Should output: PONG +``` + +## Install ImageMagick + +Install ImageMagick for image processing: + +```bash +sudo apt-get install imagemagick +``` + +Verify ImageMagick installation: + +```bash +convert --version +``` + +## Troubleshooting Common Issues + + +**Solution**: Ensure you have restarted your computer and enabled "Run command as a login shell": +```bash +# Check if RVM is loaded +rvm --version + +# If not found, try loading manually +source ~/.rvm/scripts/rvm +``` + + + +**Solution**: Install missing dependencies: +```bash +sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev +rvm reinstall ruby-3.3.3 +``` + + + +**Solution**: Configure PostgreSQL user and database: +```bash +# Switch to postgres user and create a superuser +sudo -u postgres createuser --superuser $USER + +# Set password for your user +sudo -u postgres psql -c "ALTER USER $USER PASSWORD 'password';" + +# Create a database for your user +sudo -u postgres createdb $USER +``` + + + +**Solution**: Clear cache and reinstall: +```bash +sudo apt-get remove nodejs npm +sudo apt-get autoremove +curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt-get install -y nodejs +``` + + + +**Solution**: Fix ownership of common directories: +```bash +sudo chown -R $USER:$USER ~/.npm +sudo chown -R $USER:$USER ~/.pnpm-store +``` + + +## Getting Help + +If you encounter issues: + +- **Common Errors**: Check [Common Errors](/contributing-guide/common-errors) +- **Discord Community**: Join our [Discord](https://discord.com/invite/cJXdrwS) +- **GitHub Issues**: [Create an issue](https://github.com/chatwoot/chatwoot/issues) +- **Ubuntu Community**: [Ubuntu Forums](https://ubuntuforums.org/) + +--- + +Your Ubuntu development environment is now ready for Chatwoot development! 🐧 diff --git a/contributing-guide/environment-setup/windows.mdx b/contributing-guide/environment-setup/windows.mdx new file mode 100644 index 00000000..6d8273c0 --- /dev/null +++ b/contributing-guide/environment-setup/windows.mdx @@ -0,0 +1,320 @@ +--- +title: Windows Development Setup +description: Complete guide to setting up your Windows development environment for Chatwoot contribution using WSL2. +sidebarTitle: Windows Setup +--- + +# Windows Development Setup + +This guide will walk you through setting up your Windows development environment for contributing to Chatwoot. We'll use Windows Subsystem for Linux 2 (WSL2) which provides the best development experience on Windows. + +## Requirements + +You need to install the Windows Subsystem for Linux 2 (WSL2) on your Windows machine. + +### Prerequisites + +- Windows 10 version 2004 and higher (Build 19041 and higher) or Windows 11 +- Administrator privileges on your Windows machine + +## Step 1: Enable Developer Mode + +The first step is to enable "Developer mode" in Windows. You can do this by opening up Settings and navigating to "Update & Security". In there, choose the tab on the left that reads "For Developers". Turn the "Developer mode" toggle on to enable it. + +Enable Developer Mode + +## Step 2: Enable Windows Subsystem for Linux + +Next you have to enable the Windows Subsystem for Linux. Open the "Control Panel" and go to "Programs and Features". Click on the link on the left "Turn Windows features on or off". Look for the "Windows Subsystem for Linux" option and select the checkbox next to it. + +Enable WSL + +You'll also need to enable "Virtual Machine Platform" for WSL2. Make sure both checkboxes are selected: +- ✅ Windows Subsystem for Linux +- ✅ Virtual Machine Platform + +After enabling these features, restart your computer. + +## Step 3: Install WSL2 and Ubuntu + +### Option 1: Using Microsoft Store (Recommended) + +1. **Open Microsoft Store** and search for "Ubuntu" +2. **Install Ubuntu 22.04 LTS** (or latest LTS version) +3. **Launch Ubuntu** from the Start Menu + +### Option 2: Using Command Line + +Open PowerShell as Administrator and run: + +```powershell +# Install WSL2 with Ubuntu +wsl --install -d Ubuntu-22.04 + +# Set WSL2 as default version +wsl --set-default-version 2 +``` + +## Step 4: Initial Ubuntu Setup + +When you first launch Ubuntu, you'll be prompted to create a user account: + +```bash +# Create a username and password when prompted +# This will be your Linux user account +``` + +Update the system packages: + +```bash +sudo apt update && sudo apt upgrade -y +``` + +## Step 5: Install Core Dependencies + +You need core Linux dependencies installed in order to install Ruby and other tools. + +```bash +sudo apt-get update +sudo apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev +``` + +## Installing RVM & Ruby + +Install additional dependencies required for RVM: + +```bash +sudo apt-get install -y libgdbm-dev libncurses5-dev automake libtool bison libffi-dev +``` + +Install RVM & Ruby version 3.2.2: + +```bash +# Add RVM GPG keys +gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB + +# Install RVM +curl -sSL https://get.rvm.io | bash -s stable + +# Load RVM into current session +source ~/.rvm/scripts/rvm + +# Install Ruby 3.2.2 +rvm install 3.2.2 +rvm use 3.2.2 --default + +# Verify installation +ruby -v +``` + +## Install Node.js + +Chatwoot requires Node.js version 20. Install Node.js from NodeSource using the following commands: + +```bash +curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt-get install -y nodejs +``` + +Verify Node.js installation: + +```bash +node --version +# Should output: v20.x.x +``` + +## Install pnpm + +We use `pnpm` as the package manager for better performance: + +```bash +# Install pnpm globally +npm install -g pnpm + +# Verify installation +pnpm --version +``` + +## Install PostgreSQL + +The database used in Chatwoot is PostgreSQL. Use the following commands to install PostgreSQL: + +```bash +sudo apt install -y postgresql postgresql-contrib +``` + +The installation procedure created a user account called postgres that is associated with the default Postgres role. In order to use PostgreSQL, you can log into that account: + +```bash +sudo -u postgres psql +``` + +Install `libpq-dev` dependencies for Ubuntu: + +```bash +sudo apt-get install -y libpq-dev +``` + +Start PostgreSQL service: + +```bash +sudo service postgresql start +``` + +Configure PostgreSQL to start automatically: + +```bash +echo 'sudo service postgresql start' >> ~/.bashrc +``` + +Create a database user: + +```bash +# Switch to postgres user and create a superuser +sudo -u postgres createuser --superuser $USER + +# Set password for your user +sudo -u postgres psql -c "ALTER USER $USER PASSWORD 'password';" +``` + +## Install Redis Server + +Chatwoot uses Redis server for agent assignments and reporting. To install `redis-server`: + +```bash +sudo apt-get install -y redis-server +``` + +Start Redis service: + +```bash +sudo service redis-server start +``` + +Configure Redis to start automatically: + +```bash +echo 'sudo service redis-server start' >> ~/.bashrc +``` + +Enable Redis to start on system boot: + +```bash +sudo systemctl enable redis-server.service +``` + +## Install ImageMagick + +Chatwoot uses ImageMagick for image processing: + +```bash +sudo apt-get install -y imagemagick libmagickwand-dev +``` + +## Configure Git + +Set up Git with your information: + +```bash +git config --global user.name "Your Name" +git config --global user.email "your.email@example.com" +``` + +## Windows-Specific Configuration + +### Install VS Code with WSL Extension + +1. **Install Visual Studio Code** on Windows from [https://code.visualstudio.com/](https://code.visualstudio.com/) +2. **Install Remote - WSL extension** from the Extensions marketplace +3. **Open your project in WSL** by running `code .` from your WSL terminal + +### Configure File Permissions + +WSL2 may have file permission issues. Fix them: + +```bash +# Add to ~/.bashrc for better file permissions +echo 'umask 022' >> ~/.bashrc + +# Configure Git to ignore file mode changes +git config --global core.filemode false +``` + +## Environment Verification + +Verify all installations are working correctly: + +```bash +# Check all versions +ruby --version # Should be 3.2.2 +node --version # Should be v20.x.x +pnpm --version # Should show pnpm version +psql --version # Should show PostgreSQL version +redis-cli ping # Should output: PONG +convert --version # Should show ImageMagick version +git --version # Should show Git version +``` + +## Troubleshooting Common Issues + + +**Solution**: Ensure virtualization is enabled in BIOS and Windows features are properly enabled: +1. Restart computer and enter BIOS settings +2. Enable Intel VT-x or AMD-V virtualization +3. Enable Hyper-V in Windows Features +4. Restart and try installation again + + + +**Solution**: Reset WSL or reinstall Ubuntu: +```powershell +# Reset Ubuntu (will delete all data) +wsl --unregister Ubuntu-22.04 +wsl --install -d Ubuntu-22.04 +``` + + + +**Solution**: Check if Windows PostgreSQL service is conflicting: +```bash +# Stop Windows PostgreSQL service first (run in Windows Command Prompt as Admin) +net stop postgresql-x64-14 + +# Then start WSL2 PostgreSQL +sudo service postgresql start +``` + + + +**Solution**: Fix file permissions: +```bash +# For the entire project +find . -type f -exec chmod 644 {} \; +find . -type d -exec chmod 755 {} \; + +# For executable files +chmod +x bin/* +``` + + + +**Solution**: Ensure code is stored in WSL2 filesystem: +```bash +# Good: Store code here (fast) +/home/username/projects/chatwoot + +# Avoid: Storing code here (slow) +/mnt/c/Users/Username/projects/chatwoot +``` + + +If you encounter issues during setup: + +- **Common Errors**: Check [Common Errors](/contributing-guide/common-errors) +- **WSL2 Documentation**: [Microsoft WSL Documentation](https://docs.microsoft.com/en-us/windows/wsl/) +- **Discord Community**: Join our [Discord](https://discord.com/invite/cJXdrwS) +- **GitHub Issues**: [Create an issue](https://github.com/chatwoot/chatwoot/issues) + +--- + +Your Windows development environment with WSL2 is now ready for Chatwoot development! 🪟🐧 diff --git a/contributing-guide/environment-variables.mdx b/contributing-guide/environment-variables.mdx new file mode 100644 index 00000000..e65c6969 --- /dev/null +++ b/contributing-guide/environment-variables.mdx @@ -0,0 +1,17 @@ +--- +title: Environment Variables for Development +description: Complete guide to environment variables for Chatwoot development and testing +sidebarTitle: Environment Variables +--- + +# Environment Variables for Development + +This guide covers environment variables specifically for development and testing environments. For production environment variables, see the [Self-hosted Environment Variables](/self-hosted/configuration/environment-variables) guide. + +### Use letter opener instead of mailhog/SMTP + +Set the following variable to open emails in letter opener instead of SMTP + +```bash +LETTER_OPENER=true +``` diff --git a/docs/contributing-guide/images/platform-app/create-user.png b/contributing-guide/images/platform-app/create-user.png similarity index 100% rename from docs/contributing-guide/images/platform-app/create-user.png rename to contributing-guide/images/platform-app/create-user.png diff --git a/docs/contributing-guide/images/platform-app/platform-access-token.png b/contributing-guide/images/platform-app/platform-access-token.png similarity index 100% rename from docs/contributing-guide/images/platform-app/platform-access-token.png rename to contributing-guide/images/platform-app/platform-access-token.png diff --git a/docs/contributing-guide/images/platform-app/platform-create.png b/contributing-guide/images/platform-app/platform-create.png similarity index 100% rename from docs/contributing-guide/images/platform-app/platform-create.png rename to contributing-guide/images/platform-app/platform-create.png diff --git a/docs/contributing-guide/images/platform-app/platform-home.png b/contributing-guide/images/platform-app/platform-home.png similarity index 100% rename from docs/contributing-guide/images/platform-app/platform-home.png rename to contributing-guide/images/platform-app/platform-home.png diff --git a/docs/contributing-guide/images/platform-app/super_admin.png b/contributing-guide/images/platform-app/super_admin.png similarity index 100% rename from docs/contributing-guide/images/platform-app/super_admin.png rename to contributing-guide/images/platform-app/super_admin.png diff --git a/contributing-guide/line-channel-setup.mdx b/contributing-guide/line-channel-setup.mdx new file mode 100644 index 00000000..affd68c2 --- /dev/null +++ b/contributing-guide/line-channel-setup.mdx @@ -0,0 +1,198 @@ +--- +title: Line App Integration Setup +description: Setup Line app integration on your local machine for development +sidebarTitle: Line Setup +--- + +# Setup Line app integration on your local machine + +Please follow the steps if you are trying to work with the Line integration on your local machine. + +## Prerequisites + +- Line Developer Account +- Access to [Line Developer Console](https://developers.line.biz/console) +- Ngrok or similar tunneling service +- Running Chatwoot development environment + +## Setup Steps + +### 1. Start Ngrok Server + +Start a Ngrok server listening at port `3000` or the port you will be running the Chatwoot installation: + +```bash +# Install ngrok if you haven't already +# Download from https://ngrok.com/download + +# Start ngrok tunnel +ngrok http 3000 +``` + +### 2. Update Environment Variables + +Update the `.env` variable `FRONTEND_URL` in Chatwoot with the `https` version of the Ngrok URL: + +```bash +# In your .env file +FRONTEND_URL=https://your-ngrok-subdomain.ngrok.io +``` + +### 3. Configure Line Developer Console + +1. **Access Line Developer Console**: Go to [Line Developer Console](https://developers.line.biz/console) +2. **Create a Provider** (if you don't have one) +3. **Create a New Channel** and select "Messaging API" +4. **Configure Basic Settings**: + - Channel name + - Channel description + - Category + - Subcategory + +### 4. Get Required Credentials + +From the Line Developer Console under the "Messaging API" channel, collect the following values: + +1. **Channel Name** +2. **LINE Channel ID** +3. **LINE Channel Secret** +4. **LINE Channel Token** + +### 5. Start Chatwoot Server + +Start the Chatwoot server and create a new Line channel with the values obtained from Line Developer Console: + +```bash +# Start the development server +make run +# or +foreman start -f Procfile.dev +``` + +### 6. Create Line Channel in Chatwoot + +1. **Access Chatwoot**: Go to your Chatwoot instance (http://localhost:3000) +2. **Navigate to Settings** → **Inboxes** → **Add Inbox** +3. **Select Line** as the channel type +4. **Enter Line Credentials**: + - Channel Name + - LINE Channel ID + - LINE Channel Secret + - LINE Channel Token +5. **Save Configuration** + +## Configure Webhook in Line Developer Console + +After creating the channel, Chatwoot will provide a webhook URL for the channel. You need to configure this webhook URL in the Line Developer Console: + +### Steps to Configure Webhook + +1. **Go to Line Developer Console** → Your Channel → **Messaging API** +2. **Find Webhook Settings** +3. **Set Webhook URL**: Use the URL provided by Chatwoot + ``` + https://your-ngrok-subdomain.ngrok.io/webhooks/line/your-channel-id + ``` +4. **Enable Webhook**: Toggle the webhook to "Enabled" +5. **Verify Webhook**: Use the "Verify" button to test the connection + +### Additional Line Settings + +Configure these settings in the Line Developer Console: + +- **Auto-reply messages**: Disable (so Chatwoot can handle responses) +- **Greeting messages**: Optional +- **Webhook redelivery**: Enable for reliability + +## Testing the Integration + +If the webhook is registered correctly with Line, your Ngrok server should receive events for new Line messages, and new conversations will be created in Chatwoot. + +### Test Steps + +1. **Add your Line bot as a friend** using the QR code or bot ID +2. **Send a message** to your Line bot +3. **Check Ngrok logs** to see if the webhook request is received +4. **Check Chatwoot** to see if a new conversation is created +5. **Reply from Chatwoot** to test bidirectional communication + +## Troubleshooting + + +**Problem**: Line webhook verification fails in Developer Console + +**Solution**: +- Ensure your Ngrok URL is accessible publicly +- Check that `FRONTEND_URL` is set correctly in your `.env` file +- Verify the webhook URL format is correct +- Restart Chatwoot after updating environment variables + + + +**Problem**: Line messages don't create conversations in Chatwoot + +**Solution**: +- Check Ngrok logs for incoming webhook requests +- Verify webhook is enabled in Line Developer Console +- Check Chatwoot logs for any error messages +- Ensure all Line credentials are entered correctly +- Verify the channel is enabled in Chatwoot + + + +**Problem**: SSL certificate issues with webhook + +**Solution**: +- Use the `https` version of your Ngrok URL +- Ensure Ngrok is running properly +- Line requires HTTPS for webhook URLs +- Try restarting Ngrok and updating the webhook + + + +**Problem**: Line API authentication failures + +**Solution**: +- Verify Channel ID, Channel Secret, and Channel Token are correct +- Check that the channel is published and not in development mode +- Ensure the Messaging API is enabled for your channel +- Regenerate Channel Token if necessary + + +## Line API Features + +Line offers various features you can integrate: + +- **Rich Messages**: Cards, carousels, quick replies +- **Flex Messages**: Custom layouts +- **LIFF (Line Frontend Framework)**: Web apps within Line +- **Line Login**: User authentication + +## Next Steps + +After successful setup: + +1. **Test message flow** between Line and Chatwoot +2. **Configure agent assignments** for Line conversations +3. **Set up automated responses** if needed +4. **Explore rich message features** for enhanced user experience +5. **Review webhook logs** for debugging + +## Getting Help + +If you encounter issues: + +- **Check Logs**: Review both Chatwoot and Ngrok logs +- **Line Developers Documentation**: [Official Line API Docs](https://developers.line.biz/en/docs/) +- **Common Errors**: See [Common Errors](/contributing-guide/common-errors) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +## Useful Resources + +- **Line Messaging API Documentation**: [https://developers.line.biz/en/docs/messaging-api/](https://developers.line.biz/en/docs/messaging-api/) +- **Line Developer Console**: [https://developers.line.biz/console](https://developers.line.biz/console) +- **Webhook Test Tool**: Available in Line Developer Console + +--- + +Your Line integration is now ready for development and testing! 💬 diff --git a/contributing-guide/mobile-app/setup-guide.mdx b/contributing-guide/mobile-app/setup-guide.mdx new file mode 100644 index 00000000..bb32e8d5 --- /dev/null +++ b/contributing-guide/mobile-app/setup-guide.mdx @@ -0,0 +1,242 @@ +--- +title: Mobile App Development Setup +description: Setup guide for Chatwoot mobile app development +sidebarTitle: Mobile App Setup +--- + +# Setup guide for mobile app + +Complete guide to setting up the Chatwoot mobile app for development and contribution. + +## Installation and setup + +### Prerequisites + +Before starting, ensure you have the following installed: + +- [Node.js](https://nodejs.org/en/download/) (Latest LTS version) +- [React Native CLI](https://reactnative.dev/docs/environment-setup) +- [Expo CLI](https://docs.expo.dev/get-started/installation/) +- [Expo Account](https://expo.dev/signup) + + +To learn more about the most up-to-date instructions, please refer to the guide available [here](https://docs.expo.dev/get-started/set-up-your-environment/). + + +### Clone the repository + +```bash +git clone git@github.com:chatwoot/chatwoot-mobile-app.git +cd chatwoot-mobile-app +``` + +### Install dependencies + +```bash +pnpm install +``` + +### Install Expo CLI + +```bash +pnpm install -g expo-cli +``` + +## Environment Variables + +Create your environment configuration file: + +```bash +cp .env.example .env +``` + +Configure the following environment variables: + +| Name | Description | Default Value | Required | +| ---------------------------------------- | ------------------------------------------- | ------------------------ | -------- | +| EXPO_PUBLIC_CHATWOOT_WEBSITE_TOKEN | Web widget token for in-app support | - | No | +| EXPO_PUBLIC_CHATWOOT_BASE_URL | Self-hosted installation URL | https://app.chatwoot.com | Yes | +| EXPO_PUBLIC_JUNE_SDK_KEY | June analytics SDK key | - | No | +| EXPO_PUBLIC_MINIMUM_CHATWOOT_VERSION | Minimum supported Chatwoot version | - | Yes | +| EXPO_PUBLIC_SENTRY_DSN | Sentry DSN URL for error reporting | - | No | +| EXPO_PUBLIC_PROJECT_ID | Expo project identifier | - | Yes | +| EXPO_PUBLIC_APP_SLUG | Application slug for Expo | - | Yes | +| EXPO_PUBLIC_SENTRY_PROJECT_NAME | Project name in Sentry | - | No | +| EXPO_PUBLIC_SENTRY_ORG_NAME | Organization name in Sentry | - | No | +| EXPO_PUBLIC_IOS_GOOGLE_SERVICES_FILE | Path to iOS Google Services config file | - | No | +| EXPO_PUBLIC_ANDROID_GOOGLE_SERVICES_FILE | Path to Android Google Services config file | - | No | +| EXPO_APPLE_ID | Apple Developer account ID | - | No | +| EXPO_APPLE_TEAM_ID | Apple Developer team ID | - | No | +| EXPO_STORYBOOK_ENABLED | Enable/disable Storybook | false | No | + +## Generate the native code + +```bash +pnpm generate +``` + +This command generates native Android and iOS directories using [Prebuild](https://docs.expo.dev/workflow/continuous-native-generation/). + + +You need to run pre-build if you add a new native dependency to your project or change the project configuration in Expo app config (app.config.ts). + + +## How to run the app + +Connect your iPhone/Android device and run the following command to install the app on your device. + +### iOS Development + +```bash +pnpm run:ios +``` + +### Android Development + +```bash +pnpm run:android +``` + +## Package Installation + + +Please always install packages using the command `npx expo install package-name` instead of `pnpm install package-name`. + + +This is crucial for native dependencies because Expo will automatically install the correct compatible version, while pnpm/yarn/npm may install the latest version, which may not be compatible. + +```bash +# Correct way to install packages +npx expo install package-name + +# Incorrect way (may cause compatibility issues) +pnpm install package-name +``` + +## Push notification + +If you are using the community edition of Chatwoot, you can now use the [official mobile app](https://www.chatwoot.com/mobile-apps) with push notifications without any additional configuration. + +For more details, please refer to the [push notification documentation](https://www.chatwoot.com/hc/handbook/articles/1687935909-push-notification). + +## Build & Submit using EAS + +We use Expo Application Services (EAS) for building, deploying, and submitting the app to app stores. EAS Build and Submit is available to anyone with an Expo account, regardless of whether you pay for EAS or use our Free plan. + +You can sign up at [Expo EAS](https://expo.dev/eas). + +### Build the app + +#### iOS Build + +```bash +pnpm run build:ios:local +``` + +#### Android Build + +```bash +pnpm run build:android:local +``` + +### Submit the app + +#### iOS Submission + +```bash +pnpm submit:ios +``` + +#### Android Submission + +```bash +pnpm submit:android +``` + +When you run the above command, you will be prompted to provide a path to a local app binary file. Please select the file that you built in the previous step: + +- **iOS**: `.ipa` file +- **Android**: `.aab` file + + +It may take a while to complete the submission process. You will see the status of the submission on your terminal. + + +## Troubleshooting + + +**Problem**: Metro bundler fails to start or bundle + +**Solution**: +```bash +# Clear cache and restart +pnpm clear +pnpm start --reset-cache +``` + + + +**Problem**: iOS build or simulator issues + +**Solution**: +- Ensure Xcode is properly installed +- Check iOS simulator version compatibility +- Clear derived data in Xcode +- Restart Metro bundler + + + +**Problem**: Android build or emulator issues + +**Solution**: +- Verify Android Studio setup +- Check SDK versions and build tools +- Ensure emulator is running +- Clear Gradle cache + + + +**Problem**: Expo commands fail + +**Solution**: +```bash +# Update Expo CLI +npm install -g @expo/cli@latest + +# Login to Expo +expo login + +# Clear Expo cache +expo r -c +``` + + +## Contributing Guidelines + +When contributing to the mobile app: + +1. **Follow coding standards**: Use ESLint and Prettier configurations +2. **Write tests**: Include unit tests for new features +3. **Test on both platforms**: Ensure iOS and Android compatibility +4. **Update documentation**: Document new features and changes +5. **Check performance**: Monitor app performance impact + +## Getting Help + +If you encounter issues: + +- **Expo Documentation**: [Official Expo Docs](https://docs.expo.dev/) +- **React Native Documentation**: [React Native Docs](https://reactnative.dev/docs/getting-started) +- **GitHub Issues**: [Mobile App Issues](https://github.com/chatwoot/chatwoot-mobile-app/issues) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +## Useful Resources + +- **Expo Development**: [https://docs.expo.dev/](https://docs.expo.dev/) +- **React Native**: [https://reactnative.dev/](https://reactnative.dev/) +- **EAS Build**: [https://docs.expo.dev/build/introduction/](https://docs.expo.dev/build/introduction/) +- **EAS Submit**: [https://docs.expo.dev/submit/introduction/](https://docs.expo.dev/submit/introduction/) + +--- + +Your Chatwoot mobile app development environment is now ready! 📱 \ No newline at end of file diff --git a/docs/contributing-guide/environment-setup/img/developer-mode.jpg b/contributing-guide/project-setup/img/developer-mode.jpg similarity index 100% rename from docs/contributing-guide/environment-setup/img/developer-mode.jpg rename to contributing-guide/project-setup/img/developer-mode.jpg diff --git a/docs/contributing-guide/environment-setup/img/enable-wsl.jpg b/contributing-guide/project-setup/img/enable-wsl.jpg similarity index 100% rename from docs/contributing-guide/environment-setup/img/enable-wsl.jpg rename to contributing-guide/project-setup/img/enable-wsl.jpg diff --git a/contributing-guide/security-reports.mdx b/contributing-guide/security-reports.mdx new file mode 100644 index 00000000..d7e57312 --- /dev/null +++ b/contributing-guide/security-reports.mdx @@ -0,0 +1,127 @@ +--- +title: Reporting Security Issues +description: How to report security vulnerabilities in Chatwoot +sidebarTitle: Security Reports +--- + +# Reporting Security Issues + +Chatwoot is looking forward to working with security researchers worldwide to keep Chatwoot and our users safe. If you have found an issue in our systems/applications, please reach out to us. + +## Reporting a Vulnerability + +We use GitHub for security issues that affect our project. If you believe you have found a vulnerability, please disclose it via this [form](https://github.com/chatwoot/chatwoot/security/advisories/new). + +This will enable us to review the vulnerability, fix it promptly, and reward you for your efforts. + +If you have any questions about the process, contact **security@chatwoot.com**. + +Please try your best to describe a clear and realistic impact for your report, and please don't open any public issues on GitHub or social media; we're doing our best to respond through GitHub as quickly as possible. + + +Please use the email for questions related to the process. Disclosures should be done via [GitHub](https://github.com/chatwoot/chatwoot/security/advisories/new). + + +## Supported Versions + +| Version | Supported | +| -------- | --------- | +| latest | ️✅ | +| < latest | ❌ | + +## Vulnerabilities We Care About 🫣 + + +Please do not perform testing against Chatwoot production services. Use a `self-hosted instance` to perform tests. + + +We consider the following vulnerabilities as high priority: + +- Remote command execution +- SQL Injection +- Authentication bypass +- Privilege Escalation +- Cross-site scripting (XSS) +- Performing limited admin actions without authorization +- CSRF + +## Non-Qualifying Vulnerabilities + +We consider the following out of scope, though there may be exceptions: + +- Missing HTTP security headers +- Incomplete/Missing SPF/DKIM +- Reports from automated tools or scanners +- Theoretical attacks without proof of exploitability +- Social engineering +- Reflected file download +- Physical attacks +- Weak SSL/TLS/SSH algorithms or protocols +- Attacks involving physical access to a user's device or a device or network that's already seriously compromised (e.g., man-in-the-middle) +- The user attacks themselves +- Incomplete/Missing SPF/DKIM +- Denial of Service attacks +- Brute force attacks +- DNSSEC + +If you are unsure about the scope, please create a [report](https://github.com/chatwoot/chatwoot/security/advisories/new). + +## Triaging Process + +Chatwoot team triages the issues in GitHub weekly. We're doing our best to respond through GitHub as quickly as we can, so please don't open any public issues on GitHub or social media and avoid duplicate reports over emails. + +- Based on reviewing the report, the team will assign a priority to the issue and move it into the internal backlog to prioritize a fix. +- In cases where the team needs more information or disagreements of severity, the team will communicate the same over GitHub before completing the triaging. + +After triage, the team will start working on the issue based on the following severity and timelines: + +## Response Timeline + +| Severity | Timeline | +| ------------- | --------- | +| Critical (P0) | ️ 7 Days | +| High | 30 Days | +| Medium | 60 Days | +| Low | 90 Days | + +## Security Best Practices + +### For Researchers + +- **Test Responsibly**: Only test on your own self-hosted instances +- **Provide Clear Details**: Include steps to reproduce, impact assessment, and suggested fixes +- **Be Patient**: Allow time for our team to investigate and respond +- **Follow Responsible Disclosure**: Don't publish vulnerabilities publicly until they're fixed + +### For Users + +- **Keep Updated**: Always use the latest version of Chatwoot +- **Secure Configuration**: Follow security best practices for your deployment +- **Monitor Logs**: Regularly check logs for suspicious activity +- **Report Issues**: If you notice anything unusual, report it through proper channels + +## Bounty Program + +While we don't currently have a formal bug bounty program, we do recognize and appreciate security researchers who help us improve Chatwoot's security: + +- **Hall of Fame**: Recognition on our security acknowledgments page +- **Direct Communication**: Work directly with our security team +- **Early Access**: Get early access to security updates and patches + +## Getting Help + +If you need assistance with security reporting: + +- **Process Questions**: Contact security@chatwoot.com +- **Technical Issues**: Use our [Discord community](https://discord.com/invite/cJXdrwS) +- **General Support**: Check our [documentation](/contributing-guide/common-errors) + +## Thanks + +Thank you for keeping Chatwoot and our users safe. 🙇 + +Your efforts help us maintain a secure platform for thousands of businesses worldwide. We appreciate the time and expertise you contribute to making Chatwoot better for everyone. + +--- + +Remember: Security is a shared responsibility. Together, we can make Chatwoot safer for everyone. diff --git a/docs/contributing-guide/project-setup.md b/contributing-guide/setup-guide.mdx similarity index 53% rename from docs/contributing-guide/project-setup.md rename to contributing-guide/setup-guide.mdx index 73aea0e5..85c48031 100644 --- a/docs/contributing-guide/project-setup.md +++ b/contributing-guide/setup-guide.mdx @@ -1,11 +1,14 @@ --- -sidebar_label: "Setup Guide" -title: "Project Setup" +title: Project Setup Guide +description: Complete guide to setting up and running Chatwoot in development mode +sidebarTitle: Setup Guide --- +# Project Setup + This guide will help you to setup and run Chatwoot in development mode. Please make sure you have completed the environment setup. -### Clone the repo +## Clone the repo ```bash # change location to the path you want chatwoot to be installed @@ -16,7 +19,7 @@ git clone https://github.com/chatwoot/chatwoot.git cd chatwoot ``` -### Install Ruby & Javascript dependencies +## Install Ruby & Javascript dependencies Use the following command to run `bundle && pnpm install` to install ruby and Javascript dependencies. @@ -24,20 +27,21 @@ Use the following command to run `bundle && pnpm install` to install ruby and Ja make burn ``` - This would install all required dependencies for Chatwoot application. -If you face issue with pg gem, please refer to [Common Errors](/docs/contributing-guide/common-errors#pg-gem-installation-error) + +If you face issue with pg gem, please refer to [Common Errors](/contributing-guide/common-errors#pg-gem-installation-error) + -### Setup environment variables. +## Setup environment variables -``` +```bash cp .env.example .env ``` -Please refer to [environment-variables](/docs/contributing-guide/environment-variables) to read on setting environment variables. +Please refer to [environment-variables](/contributing-guide/environment-variables) to read on setting environment variables. -### Setup rails server +## Setup rails server ```bash # run db migrations @@ -45,9 +49,12 @@ make db # fireup the server foreman start -f Procfile.dev ``` -Note: If you have overmind installed, use `make run` to run the server. -### Login with credentials + +If you have overmind installed, use `make run` to run the server. + + +## Login with credentials ```bash http://localhost:3000 @@ -55,7 +62,7 @@ user name: john@acme.inc password: Password1! ``` -### Testing chat widget in your local environment +## Testing chat widget in your local environment When running Chatwoot in development environment, the chat widget can be accessed under the following URL. @@ -72,12 +79,14 @@ http://localhost:3000/widget_tests?setUser=true To use those URLs, you first need to compile the assets. Run: ```bash -bundle exec rails assets:precompile +bundle exec rails assets:precompile ``` -### Docker for development +## Docker for development -> **Note**: Follow this section only if you are trying to setup Chatwoot via docker. Else skip this. + +Follow this section only if you are trying to setup Chatwoot via docker. Else skip this. + The first time you start your development environment run the following two commands: @@ -93,6 +102,7 @@ docker compose exec rails bundle exec rails db:chatwoot_prepare # docker compose up ``` + Then browse http://localhost:3000 ```bash @@ -109,17 +119,16 @@ docker compose stop docker compose build ``` - The docker-compose environment consists of: - chatwoot server - postgres - redis - webpacker-dev-server -If in case you encounter a seeding issue or you want reset the database you can do it using the following command : +If in case you encounter a seeding issue or you want reset the database you can do it using the following command: ```bash -docker compose run -rm rails bundle exec rake db:reset +docker compose run --rm rails bundle exec rake db:reset ``` This command essentially runs postgres and redis containers and then run the rake command inside the chatwoot server container. @@ -129,26 +138,34 @@ This command essentially runs postgres and redis containers and then run the rak First,compile the assets. Run: ```bash -docker compose exec rails bundle exec rails assets:precompile +docker compose exec rails bundle exec rails assets:precompile ``` -Then use the URLs from [#testing-chat-widget-in-your-local-environment](/docs/contributing-guide/project-setup#testing-chat-widget-in-your-local-environment) +Then use the URLs from [#testing-chat-widget-in-your-local-environment](/contributing-guide/project-setup#testing-chat-widget-in-your-local-environment) ### Running Cypress Tests -Refer the docs to learn how to write cypress specs -https://github.com/shakacode/cypress-on-rails -https://docs.cypress.io/guides/overview/why-cypress.html +First,compile the assets. Run: +```bash +docker compose exec rails bundle exec rails assets:precompile ``` + + +## Running Cypress Tests + +Refer the docs to learn how to write cypress specs: +- https://github.com/shakacode/cypress-on-rails +- https://docs.cypress.io/guides/overview/why-cypress.html + +```bash # in terminal tab1 overmind start -f Procfile.test # in terminal tab2 pnpm cypress open --project ./test ``` - -### Debugging Docker for production +## Debugging Docker for production You can use our official Docker image from [https://hub.docker.com/r/chatwoot/chatwoot](https://hub.docker.com/r/chatwoot/chatwoot) @@ -162,6 +179,28 @@ You can create an image yourselves by running the following command on the root docker compose -f docker-compose.production.yaml build ``` -This will build the image which you can depoy in Kubernetes (GCP, Openshift, AWS, Azure or anywhere), Amazon ECS or Docker Swarm. You can tag this image and push this image to docker registry of your choice. +This will build the image which you can deploy in Kubernetes (GCP, Openshift, AWS, Azure or anywhere), Amazon ECS or Docker Swarm. You can tag this image and push this image to docker registry of your choice. Remember to make the required environment variables available during the deployment. + +## Next Steps + +After completing this setup: + +1. **Verify Installation**: Access http://localhost:3000 and log in with the provided credentials +2. **Explore the Code**: Start making changes and see them reflected in your development environment +3. **Run Tests**: Execute the test suite to ensure everything works correctly +4. **Check Troubleshooting**: If you encounter issues, refer to [Common Errors](/contributing-guide/common-errors) + +## Getting Help + +If you encounter issues during setup: + +- **Common Errors**: Check [Common Errors](/contributing-guide/common-errors) +- **Environment Variables**: See [Environment Variables](/contributing-guide/environment-variables) +- **Discord Community**: Join our [Discord](https://discord.com/invite/cJXdrwS) +- **GitHub Issues**: [Create an issue](https://github.com/chatwoot/chatwoot/issues) + +--- + +Your Chatwoot development environment is now ready for contribution! 🚀 diff --git a/contributing-guide/telegram-channel-setup.mdx b/contributing-guide/telegram-channel-setup.mdx new file mode 100644 index 00000000..4b46873d --- /dev/null +++ b/contributing-guide/telegram-channel-setup.mdx @@ -0,0 +1,129 @@ +--- +title: Telegram App Integration Setup +description: Setup Telegram app integration on your local machine for development +sidebarTitle: Telegram Setup +--- + +# Setup Telegram app integration on your local machine + +Please follow the steps if you are trying to work with the Telegram integration on your local machine. + +## Prerequisites + +- Telegram Bot Token from [BotFather](https://t.me/botfather) +- Ngrok or similar tunneling service +- Running Chatwoot development environment + +## Setup Steps + +### 1. Start Ngrok Server + +Start a Ngrok server listening at port `3000` or the port you will be running the Chatwoot installation: + +```bash +# Install ngrok if you haven't already +# Download from https://ngrok.com/download + +# Start ngrok tunnel +ngrok http 3000 +``` + +### 2. Update Environment Variables + +Update the `.env` variable `FRONTEND_URL` in Chatwoot with the `https` version of the Ngrok URL: + +```bash +# In your .env file +FRONTEND_URL=https://your-ngrok-subdomain.ngrok.io +``` + +### 3. Start Chatwoot Server + +Start the Chatwoot server and create a new Telegram channel with the token obtained from Telegram BotFather. + +```bash +# Start the development server +make run +# or +foreman start -f Procfile.dev +``` + +### 4. Create Telegram Channel + +1. **Access Chatwoot**: Go to your Chatwoot instance (http://localhost:3000) +2. **Navigate to Settings** → **Inboxes** → **Add Inbox** +3. **Select Telegram** as the channel type +4. **Enter Bot Token**: Paste the token you received from BotFather +5. **Configure Channel**: Set up the channel name and other settings + +## Verify Webhook Registration + +While creating the channel, Chatwoot should have registered a webhook callback URL in Telegram for your Bot. You can verify whether this URL registration was done successfully by calling the Telegram API: + +```bash +GET https://api.telegram.org/bot{your_bot_token}/getWebhookInfo +``` + +## Testing the Integration + +If the webhook is registered correctly with Telegram, your Ngrok server should receive events for new Telegram messages, and new conversations will be created in Chatwoot. + +### Test Steps + +1. **Send a message** to your Telegram bot +2. **Check Ngrok logs** to see if the webhook request is received +3. **Check Chatwoot** to see if a new conversation is created +4. **Reply from Chatwoot** to test bidirectional communication + +## Troubleshooting + + +**Problem**: Telegram webhook registration fails + +**Solution**: +- Ensure your Ngrok URL is accessible publicly +- Check that `FRONTEND_URL` is set correctly in your `.env` file +- Verify the bot token is correct +- Restart Chatwoot after updating environment variables + + + +**Problem**: Telegram messages don't create conversations in Chatwoot + +**Solution**: +- Check Ngrok logs for incoming webhook requests +- Verify the webhook URL in Telegram using the API call above +- Check Chatwoot logs for any error messages +- Ensure the channel is properly configured and enabled + + + +**Problem**: SSL certificate issues with webhook + +**Solution**: +- Use the `https` version of your Ngrok URL +- Ensure Ngrok is running properly +- Try restarting Ngrok and updating the webhook + + +## Next Steps + +After successful setup: + +1. **Test message flow** between Telegram and Chatwoot +2. **Configure agent assignments** for Telegram conversations +3. **Set up automated responses** if needed +4. **Review webhook logs** for debugging + +## Getting Help + +If you encounter issues: + +- **Check Logs**: Review both Chatwoot and Ngrok logs +- **Telegram Bot API**: [Official Documentation](https://core.telegram.org/bots/api) +- **Common Errors**: See [Common Errors](/contributing-guide/common-errors) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +--- + +Your Telegram integration is now ready for development and testing! 📱 diff --git a/contributing-guide/tests/cypress.mdx b/contributing-guide/tests/cypress.mdx new file mode 100644 index 00000000..84d89ddd --- /dev/null +++ b/contributing-guide/tests/cypress.mdx @@ -0,0 +1,127 @@ +--- +title: End-to-end testing with Cypress +description: Guide to running Cypress end-to-end tests for Chatwoot +sidebarTitle: Cypress Testing +--- + +# End-to-end testing with Cypress + +Chatwoot uses [Cypress](https://www.cypress.io/) for end-to-end testing. Use the following steps to run the tests on your local machine. + +## Prepare the Test Server + +Choose any of the given methods to run your Chatwoot test server. + + + + +### Using Local Chatwoot Installation + + +You have to install the necessary dependencies as described in [setup guide](/contributing-guide/setup-guide) for this method to work. + + +Navigate to Chatwoot codebase in your local machine and execute the following steps: + +#### Create a fresh test database + +```bash +RAILS_ENV=test bin/rake db:drop +RAILS_ENV=test bin/rake db:create +RAILS_ENV=test bin/rake db:schema:load +``` + +#### Start Chatwoot in the test environment + +```bash +RAILS_ENV=test foreman start -f Procfile.test +``` + +Load the URL in the browser and wait for it to start up: +``` +http://localhost:5050/app/login +``` + + + + +### Using Docker + +Follow the [docker setup guide](/contributing-guide/environment-setup/docker) until you build the images. + +#### Change the Rails Environment + +Open `docker-compose.yaml` and update all the `RAILS_ENV` values from `development` to `test`: + +```yaml +# In docker-compose.yaml +environment: + - RAILS_ENV=test # Change from development to test +``` + +#### Update the Port + +Under rails section in your `docker-compose.yaml` update the port value as given below: + +```yaml +# In docker-compose.yaml +ports: + - 5050:3000 # Change from 3000:3000 to 5050:3000 +``` + +#### Reset the Database + +```bash +docker-compose run --rm rails bundle exec rails db:reset +``` + +#### Start Chatwoot Docker in the test environment + +```bash +docker-compose up +``` + +Load the URL in the browser and wait for it to start up: +``` +http://localhost:5050/app/login +``` + + + + +## Run Cypress + +Load `localhost:5050` on your browser and ensure that the Chatwoot server is running. + +Navigate to your Chatwoot local directory and execute the following command to run the Cypress tests: + +```bash +pnpm cypress open --project ./spec +``` + +This will open the Cypress Test Runner where you can: + +1. **Choose a browser** for running tests +2. **Select test files** to run individual or all tests +3. **Watch tests run** in real-time with step-by-step execution +4. **Debug failed tests** with detailed error information + + +## Getting Help + +If you encounter issues with Cypress testing: + +- **Cypress Documentation**: [Official Cypress Docs](https://docs.cypress.io/) +- **Cypress Best Practices**: [Testing Guide](https://docs.cypress.io/guides/references/best-practices) +- **Common Errors**: See [Common Errors](/contributing-guide/common-errors) +- **Community Support**: [Discord](https://discord.com/invite/cJXdrwS) + +## Useful Resources + +- **Cypress API Reference**: [https://docs.cypress.io/api/table-of-contents](https://docs.cypress.io/api/table-of-contents) +- **Testing Library**: [Testing utilities for better element selection](https://testing-library.com/) +- **Cypress Examples**: [Real-world examples](https://github.com/cypress-io/cypress-example-recipes) + +--- + +Your Cypress testing environment is now ready for comprehensive end-to-end testing! 🧪 diff --git a/contributing-guide/translation-guidelines.mdx b/contributing-guide/translation-guidelines.mdx new file mode 100644 index 00000000..523f1e32 --- /dev/null +++ b/contributing-guide/translation-guidelines.mdx @@ -0,0 +1,151 @@ +--- +title: Translate Chatwoot to Your Language +description: Guide to translating Chatwoot using Crowdin translation platform +sidebarTitle: Translation Guidelines +--- + +# Translate Chatwoot to Your Language + +Chatwoot uses American English by default. Each and every string available in Chatwoot can be translated to the language of your choice. Chatwoot uses Crowdin to manage the translation process. The updates from Crowdin are also included along with every release. + +## How do I see the strings that need to be translated? + +In the codebase, the strings are placed in the following locations: + +- `app/javascript/dashboard/i18n` - The strings related to the agent dashboard +- `app/javascript/widget/i18n` - The strings related to the web widget +- `app/javascript/survey/i18n` - The strings related to CSAT surveys +- `config/locales` - The strings used in backend messages or API responses + +You can login to **Crowdin** ([https://translate.chatwoot.com](https://translate.chatwoot.com)) and create an account to view the strings that need to be translated. + +## How to contribute? + +If you don't find your language on Crowdin, please create an issue on [GitHub](https://github.com/chatwoot/chatwoot/issues) to add the language. + +### Translate Strings + +The translation process for Chatwoot web and mobile app is managed at [https://translate.chatwoot.com](https://translate.chatwoot.com) using Crowdin. You will have to create an account at Crowdin before you can select a language and contribute. + + +New to Crowdin? Check out their [getting started guide](https://support.crowdin.com/crowdin-intro/) to learn the basics of translation management. + + +### Translation Guidelines + +#### Formal vs Informal Context + +At Chatwoot, we prefer to use formal form of language wherever possible. For instance in German there are two forms of "you" where one is rather used in formal contexts ("Sie") and the other one is used among friends ("Du"). "Sie" is preferred over "Du" in translating Chatwoot. + +#### Consistency Guidelines + +- **Maintain consistency** across similar contexts and features +- **Use standard terminology** for technical terms when available in your language +- **Keep placeholders intact** - Don't translate variables like `{name}` or `%{count}` +- **Preserve formatting** - Maintain HTML tags, markdown, and line breaks +- **Consider context** - UI strings may need to be shorter than descriptive text + +#### Brand and Product Names + +- **Chatwoot** - Always keep as "Chatwoot" (don't translate) +- **Feature names** - Translate feature names but maintain consistency +- **Third-party services** - Keep original names (GitHub, Slack, etc.) + +### Proofreading + +Proofreading helps ensure the accuracy and consistency of translations. Right now, the translations are being accepted without a proofreading step. This would be changed in the future as and when there are more contributors for each language. + + +If you are the only person contributing to a language, make sure that you inform any of the Chatwoot members to gain access to manage the language. + + +### Releasing a New Language + +All the translated strings would be included in the next release. If a language has **60% or more translated strings** in Crowdin, we would enable the language in Chatwoot app during the next release. + +#### Steps to Raise a Pull Request for New Language + +Please use this [pull request](https://github.com/chatwoot/chatwoot/pull/7905) as a reference for enabling a new language into Chatwoot. + +- Ensure language is added and enabled in `config/initializers/languages.rb` +- Include the language in `i18n/index.js` for all the packs → `dashboard, widget, survey` +- Select the language from Chatwoot settings UI and confirm the PR to be working + +## Translation Progress and Metrics + +### Current Status + +You can check the translation progress for different languages on our [Crowdin project page](https://translate.chatwoot.com). This shows: + +- **Overall completion percentage** for each language +- **Component-wise progress** (Dashboard, Widget, Survey, API) +- **Recent activity** and contributor statistics + +### Quality Metrics + +We track several quality indicators: + +- **Translation coverage** - Percentage of strings translated +- **Review coverage** - Percentage of translations reviewed +- **Consistency score** - How consistent terminology is across the platform +- **Community engagement** - Number of active translators + +## Best Practices for Translators + +### Before You Start + +1. **Review existing translations** in your language for consistency +2. **Understand the context** - Test the feature in Chatwoot if possible +3. **Check for existing glossaries** or style guides for your language +4. **Join the community** discussions for your language + +### During Translation + +1. **Focus on user experience** - How will end users understand this? +2. **Maintain professional tone** appropriate for business communication +3. **Ask questions** if context is unclear +4. **Suggest improvements** for source text if needed + +### After Translation + +1. **Test your translations** in a live Chatwoot instance +2. **Report issues** if translations don't fit in the UI +3. **Help review** other contributors' work +4. **Stay updated** with new strings added + +## Getting Help and Support + +### Community Resources + +- **GitHub Discussions**: [Translation category](https://github.com/chatwoot/chatwoot/discussions/categories/translations) +- **Discord**: Join our [Discord community](https://discord.gg/uPtCrFfb9B) (#translations channel) +- **Crowdin Comments**: Use comments feature in Crowdin for context-specific questions + +### Technical Support + +For technical issues with translations: + +- **Missing context**: Create an issue on GitHub +- **UI layout problems**: Report in Discord with screenshots +- **Crowdin access issues**: Contact the maintainers + +### Recognition + +We recognize and appreciate our translation contributors: + +- **Contributors page**: Featured on our contributors page +- **Release notes**: Mentioned in release announcements +- **Community highlights**: Featured in community updates + +## Multilingual Support Features + +Chatwoot's internationalization supports: + +- **Right-to-left (RTL) languages** - Arabic, Hebrew, etc. +- **Pluralization rules** - Correct plural forms for different languages +- **Date and time formatting** - Localized date/time display +- **Number formatting** - Currency and number format localization + +--- + +Ready to help make Chatwoot accessible to users worldwide? [Start translating today](https://translate.chatwoot.com)! 🌍 \ No newline at end of file diff --git a/docs.json b/docs.json new file mode 100644 index 00000000..7b929bd8 --- /dev/null +++ b/docs.json @@ -0,0 +1,302 @@ +{ + "$schema": "https://mintlify.com/docs.json", + "name": "Chatwoot Developer Docs", + "description": "Official developer documentation for Chatwoot - the open-source customer support platform. Learn about our APIs, integrations, and development guidelines.", + "logo": { + "dark": "/logo/dark.png", + "light": "/logo/light.png" + }, + "favicon": "/favicon.png", + "colors": { + "primary": "#0069ED", + "light": "#4D9CFF", + "dark": "#0050B4" + }, + "fonts": { + "heading": { + "family": "Haskoy", + "weight": 500, + "source": "https://d1j5ayohogpcd2.cloudfront.net/fonts/haskoy/Haskoy-Medium.woff2", + "format": "woff2" + }, + "body": { + "family": "Haskoy", + "weight": 400, + "source": "https://d1j5ayohogpcd2.cloudfront.net/fonts/haskoy/Haskoy-Regular.woff2", + "format": "woff2" + } + }, + "theme": "maple", + "navigation": { + "anchors": [ + { + "anchor": "Introduction", + "icon": "house", + "pages": [ + "introduction" + ] + }, + { + "anchor": "Installation & Setup", + "icon": "server", + "pages": [ + { + "group": "Getting Started", + "pages": [ + "self-hosted" + ] + }, + { + "group": "Deployment Methods", + "pages": [ + "self-hosted/deployment/architecture", + "self-hosted/deployment/requirements", + "self-hosted/deployment/linux-vm", + "self-hosted/deployment/docker", + "self-hosted/deployment/helm-chart", + "self-hosted/deployment/chatwoot-ctl" + ] + }, + { + "group": "Cloud Providers", + "pages": [ + { + "group": "AWS", + "pages": [ + "self-hosted/deployment/aws", + "self-hosted/deployment/aws-marketplace" + ] + }, + "self-hosted/deployment/azure", + "self-hosted/deployment/digitalocean", + "self-hosted/deployment/gcp", + "self-hosted/deployment/heroku", + { + "group": "Community Contributed", + "pages": [ + "self-hosted/deployment/caprover", + "self-hosted/deployment/clevercloud", + "self-hosted/deployment/cloudron", + "self-hosted/deployment/restack", + "self-hosted/deployment/easypanel", + "self-hosted/deployment/elestio" + ] + } + ] + }, + { + "group": "Configuration", + "pages": [ + "self-hosted/configuration/environment-variables", + { + "group": "Performance", + "pages": [ + "self-hosted/deployment/performance/optimizing-configurations", + "self-hosted/deployment/performance/cloudfront-cdn" + ] + }, + { + "group": "Monitoring", + "pages": [ + "self-hosted/monitoring/super-admin-sidekiq", + "self-hosted/monitoring/apm-and-error-monitoring", + "self-hosted/monitoring/rate-limiting" + ] + }, + { + "group": "Storage", + "pages": [ + "self-hosted/deployment/storage/supported-providers", + "self-hosted/deployment/storage/s3-bucket", + "self-hosted/deployment/storage/gcs-bucket" + ] + }, + { + "group": "Email Channel", + "pages": [ + "self-hosted/configuration/features/email-channel/conversation-continuity", + "self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid", + "self-hosted/configuration/features/email-channel/setup", + "self-hosted/configuration/features/email-channel/azure-app-setup", + "self-hosted/configuration/features/email-channel/google-workspace-setup" + ] + }, + { + "group": "Help Center", + "pages": [ + "self-hosted/configuration/help-center" + ] + } + ] + }, + { + "group": "Integrations", + "pages": [ + "self-hosted/configuration/features/integrations/facebook-channel-setup", + "self-hosted/configuration/features/integrations/instagram-channel-setup", + "self-hosted/configuration/features/integrations/instagram-via-instagram-business-login", + "self-hosted/configuration/features/integrations/slack-integration-setup", + "self-hosted/configuration/features/integrations/linear-integration-setup", + "self-hosted/configuration/features/integrations/shopify-integration-setup" + ] + }, + { + "group": "Maintenance", + "pages": [ + "self-hosted/deployment/upgrade", + "self-hosted/deployment/backup" + ] + }, + { + "group": "Runbooks", + "pages": [ + "self-hosted/runbooks/migrate-chatwoot-database", + "self-hosted/runbooks/upgrade-to-chatwoot-v4", + "self-hosted/runbooks/email-notifications", + "self-hosted/runbooks/enable-ip-logging" + ] + }, + { + "group": "Others", + "pages": [ + "self-hosted/telemetry", + "self-hosted/enterprise-edition", + "self-hosted/supported-features", + "self-hosted/restricted-instances", + "self-hosted/instagram-app-review", + "self-hosted/faq" + ] + } + ] + }, + { + "anchor": "Contributing Guide", + "icon": "code", + "pages": [ + { + "group": "Getting Started", + "pages": [ + "contributing-guide" + ] + }, + { + "group": "Environment Setup", + "pages": [ + "contributing-guide/environment-setup/mac-os", + "contributing-guide/environment-setup/ubuntu", + "contributing-guide/environment-setup/windows", + "contributing-guide/environment-setup/docker", + "contributing-guide/environment-setup/make" + ] + }, + { + "group": "Project Setup", + "pages": [ + "contributing-guide/setup-guide", + "contributing-guide/environment-variables", + "contributing-guide/common-errors", + "contributing-guide/telegram-channel-setup", + "contributing-guide/line-channel-setup", + "contributing-guide/mobile-app/setup-guide" + ] + }, + { + "group": "Testing", + "pages": [ + "contributing-guide/tests/cypress" + ] + }, + { + "group": "Others", + "pages": [ + "contributing-guide/chatwoot-apis", + "contributing-guide/api-documentation", + "contributing-guide/chatwoot-platform-apis", + "contributing-guide/security-reports", + "contributing-guide/translation-guidelines", + "contributing-guide/community-guidelines", + "contributing-guide/code-of-conduct", + "contributing-guide/contributors" + ] + } + ] + }, + { + "anchor": "API Reference", + "icon": "square-terminal", + "pages": [], + "groups": [ + { + "group": "Getting Started", + "description": "Learn about Chatwoot APIs and how to use them", + "pages": [ + "api-reference/introduction" + ] + }, + { + "group": "Application APIs", + "description": "APIs for managing application aspects of Chatwoot", + "includeTags": [ + "Agents", + "Automation Rule", + "Account AgentBots", + "Canned Responses", + "Contact Labels", + "Contacts", + "Conversation Assignments", + "Conversation Labels", + "Conversations", + "Custom Attributes", + "Custom Filters", + "Help Center", + "Inboxes", + "Integrations", + "Messages", + "Profile", + "Reports", + "Teams", + "Webhooks" + ], + "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/develop/swagger/tag_groups/application_swagger.json" + }, + { + "group": "Platform APIs", + "description": "APIs for managing platform aspects of Chatwoot", + "includeTags": [ + "Accounts", + "Account Users", + "AgentBots", + "Users" + ], + "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/develop/swagger/tag_groups/platform_swagger.json" + }, + { + "group": "Client APIs", + "description": "APIs for client applications", + "includeTags": [ + "Contacts API", + "Conversations API", + "Messages API" + ], + "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/develop/swagger/tag_groups/client_swagger.json" + }, + { + "group": "Other APIs", + "description": "Additional Chatwoot APIs", + "includeTags": [ + "CSAT Survey Page" + ], + "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/develop/swagger/tag_groups/other_swagger.json" + } + ] + } + ] + }, + "footer": { + "socials": { + "twitter": "https://twitter.com/chatwootapp", + "github": "https://github.com/chatwoot", + "linkedin": "https://www.linkedin.com/company/chatwoot" + } + } +} diff --git a/docs/contributing-guide.md b/docs/contributing-guide.md deleted file mode 100644 index 263b6bf4..00000000 --- a/docs/contributing-guide.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Contributing Guide" -sidebar_label: "Introduction" -help_discord: "https://discord.gg/fBMuQ7FcG6" -help_github_discussion: "https://github.com/chatwoot/chatwoot/discussions/categories/contributors" ---- - -This guide will help you get started with Chatwoot! Thank you for taking an interest in contributing to Chatwoot. Before submitting your contribution, please make sure to take a moment and read through the following guidelines: - -### Getting Started - -- Before starting your work, ensure an [issue](https://github.com/chatwoot/chatwoot/issues) exists for it. If not, feel free to create one. You can also take a look into the issues tagged [Good first issues](https://github.com/chatwoot/chatwoot/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+first+issue%22). -- Add a comment on the issue and wait for the issue to be assigned before you start working on it. - - This helps to avoid multiple people working on similar issues. -- If the solution is complex, propose the solution on the issue and wait for one of the core contributors to approve before going into the implementation. - - This helps in shorter turn around times in merging PRs. -- For new feature requests, provide a convincing reason to add this feature. Real-life business use-cases will be super helpful. -- Feel free to join our [discord community](https://discord.gg/cJXdrwS), if you need further discussions with the core team. - -### Pull Request Guidelines - -- Please make sure that you have read the [issue triage guidelines](https://www.chatwoot.com/hc/handbook/articles/issue-triage-29) before you make a contribution. -- We use [git-flow](https://nvie.com/posts/a-successful-git-branching-model/) branching model. The base branch is `develop`. -- Please raise your PRs against `develop` branch. -- It's okay and encouraged to have multiple small commits as you work on the PR - we will squash the commits before merging. -- For other guidelines, see [PR Guidelines](https://www.chatwoot.com/hc/handbook/articles/pull-request-guidelines-32). -- Ensure that all the text copies that you add into the product are i18n translatable. You are only required to add the `English` version of the strings. We pull in other language translations from our contributors on crowdin. See [Translation guidelines](https://www.chatwoot.com/docs/contributing-guide/translation-guidelines) to learn more. - -### Developing a new feature: - -- Create a branch in the following format: - `feature/-` (eg: `feature/235-contact-panel`) -- Add accompanying test cases. - -### Bug fixes or chores: -- If you are resolving a particular issue, add `fix: Fixes xxxx` (#xxxx is the issue) in your PR title. -- Provide a detailed description of the bug in the PR. -- Add appropriate test coverage if applicable. - -### Environment Setup for local development - -These guides will help you set up the environment required for Chatwoot. Follow the guides based on the operating system you use. - -* [Mac](/docs/contributing-guide/environment-setup/mac-os) -* [Ubuntu](/docs/contributing-guide/environment-setup/ubuntu) -* [Windows](/docs/contributing-guide/environment-setup/windows) -* [Docker](/docs/contributing-guide/environment-setup/docker) -* [Speed up your local development workflow with make](/docs/contributing-guide/environment-setup/make) - -### Project Setup - -Now that you have set up the environment as mentioned above, use the following guides to set up Chatwoot on your local machine: - -* [Quick Setup](/docs/contributing-guide/project-setup) -* [Environment Variables](/docs/contributing-guide/environment-variables) -* [Common Errors](/docs/contributing-guide/common-errors) - - -### Others - -* [Code of conduct](/docs/contributing-guide/code-of-conduct) -* [Security Reports](/docs/contributing-guide/security-reports) -* [Translation guidelines](/docs/contributing-guide/translation-guidelines) -* [Community guidelines](/docs/contributing-guide/community-guidelines) -* [Contributors](/docs/contributing-guide/contributors) diff --git a/docs/contributing-guide/code-of-conduct.md b/docs/contributing-guide/code-of-conduct.md deleted file mode 100644 index 72f135af..00000000 --- a/docs/contributing-guide/code-of-conduct.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -sidebar_label: "Code of Conduct" -title: "Contributor Covenant Code of Conduct" ---- - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -hello@chatwoot.com. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/docs/contributing-guide/common-errors.md b/docs/contributing-guide/common-errors.md deleted file mode 100644 index 06e4c31d..00000000 --- a/docs/contributing-guide/common-errors.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Common Errors" ---- - -The following are some of the errors you might encounter while setting up the project. - - -### Redis connection error - -```bash -ArgumentError: invalid uri scheme -``` - -This is an error thrown from redis connector. You might not have setup the redis environment variables properly. Please refer to dependencies section to install redis-server and [Configure Redis URL](https://www.chatwoot.com/docs/environment-variables) in the environment-variables section. - - -### pg gem Installation error - -If you see the following error while bundle installation, provide the Postgres path as pg_config. - -``` -Gem::Ext::BuildError: ERROR: Failed to build gem native extension. - -An error occurred while installing pg (x.x.x), and Bundler cannot -continue. -Make sure that `gem install pg -v 'x.x.x' --source 'https://rubygems.org/'` -succeeds before bundling. - -checking for pg_config... no -No pg_config... trying anyway. If building fails, please try again with - --with-pg-config=/path/to/pg_config -``` - -To fix this, try executing - -``` -gem install pg -v 'x.x.x' --source 'https://rubygems.org/' -- --with-pg-config=path-to-postgres-installation/12/bin/pg_config -``` diff --git a/docs/contributing-guide/community-guidelines.md b/docs/contributing-guide/community-guidelines.md deleted file mode 100644 index 50f8d163..00000000 --- a/docs/contributing-guide/community-guidelines.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_label: "Community Guidelines" -title: "Chatwoot Community Guidelines" ---- - - -### **General Principles:** - -1. **Respect and Inclusivity:** Everyone is welcome here. Treat all members with respect, regardless of their background, identity, or level of experience. -2. **Collaboration Over Conflict:** Always approach discussions and feedback with a constructive attitude. We're all here to learn and grow together. -3. **No Spam or Self-Promotion:** Unsolicited advertisements, promotions, or spammy links are not allowed. Share valuable content that benefits the community. - -### **Discord-Specific Guidelines:** - -1. **Stay On Topic:** Each channel has its purpose. Ensure your discussions are relevant to the channel topic. -2. **No NSFW Content:** This is a professional community. Do not share or promote any NSFW content. -3. **Report Violations:** If you see someone violating these guidelines, don't engage. Instead, report it to the moderators. -4. **Voice Channels:** When in voice channels, avoid interrupting others and ensure your microphone is muted when not speaking. - -### **GitHub-Specific Guidelines:** - -1. **Issue Reporting:** Before reporting a bug or requesting a feature, search the issues to ensure it hasn't been addressed already. -2. **Pull Requests:** Ensure your PRs are concise, have a clear title, and are linked to relevant issues. Follow the existing coding style. -3. **Code of Conduct:** Adhere to the project's [Code of Conduct](/docs/contributing-guide/code-of-conduct). Discrimination, harassment, or any form of abuse will not be tolerated. -4. **Documentation:** If your PR introduces a new feature, ensure that it's documented. If you spot outdated or missing documentation, consider updating it or raising an issue. - -### **Consequences for Violating Guidelines:** - -1. **First Violation:** For most violations, you will receive a warning from the moderators. However, for critical violations like spam, immediate bans will be enforced. -2. **Repeated Violations:** Temporary or permanent ban, depending on the severity of the violation. - -Refer [enforcement guidelines](/docs/contributing-guide/code-of-conduct#enforcement-guidelines) for more details. - -### **Moderator and Admin Privileges** - -1. **Selection Process:** Active contributors to the Chatwoot community, those who consistently offer valuable insights, help, and engagement, may be handpicked as moderators or granted specific privileges. -2. **Discretionary Decision:** The appointment of moderators and the granting of additional privileges are at the sole discretion of the Chatwoot team. -3. **Admin Privileges:** For compliance reasons, admin privileges in all Chatwoot communities are reserved exclusively for Chatwoot employees. diff --git a/docs/contributing-guide/contributors.md b/docs/contributing-guide/contributors.md deleted file mode 100644 index 17590f67..00000000 --- a/docs/contributing-guide/contributors.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Contributors" ---- - -You can find the full list of contributors at [https://contributors.chatwoot.com](https://contributors.chatwoot.com) - - diff --git a/docs/contributing-guide/environment-setup/docker.md b/docs/contributing-guide/environment-setup/docker.md deleted file mode 100644 index d99f268b..00000000 --- a/docs/contributing-guide/environment-setup/docker.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -sidebar_label: "Docker" -title: "Docker Setup" ---- - -### Pre-requisites - -Before proceeding, make sure you have the latest version of `docker` and `docker-compose` installed. - -As of now[at the time of writing this doc], we recommend a version equal to or higher than the following. - -```bash -$ docker --version -Docker version 25.0.4, build 1a576c5 -$ docker compose --version -docker-compose version 2.24.7 -``` - -## Development environment - -1. Clone the repository. - - ```bash - git clone https://github.com/chatwoot/chatwoot.git - ``` - -2. Make a copy of the example environment file and modify it as [required](/docs/self-hosted/configuration/environment-variables). - - ```bash - # navigate to Chatwoot - cd chatwoot - cp .env.example .env - # update redis and postgres passwords - nano .env - # update docker-compose.yaml with the same postgres password - nano docker-compose.yaml - ``` - -3. Build the images. - - ```bash - # build base image first - docker compose build base - - # build the server and worker - docker compose build - ``` - -4. After building the image or destroying the stack, you would have to reset the database using the following command. - - ```bash - docker compose run --rm rails bundle exec rails db:chatwoot_prepare - ``` - -5. To run the app, - - ```bash - docker compose up - ``` - - * Access the rails app frontend by visiting `http://0.0.0.0:3000/` - * Access Mailhog inbox by visiting `http://0.0.0.0:8025/` (You will receive all emails going out of the application here) - - #### Login with credentials - ``` - url: http://localhost:3000 - user_name: john@acme.inc - password: Password1! - ```` - -6. To stop the app, - - ```bash - docker compose down - ``` - -### Running RSpec tests - -For running the complete RSpec tests, - -```bash -docker compose run --rm rails bundle exec rspec -``` - -For running specific test, - -```bash -docker compose run --rm rails bundle exec rspec spec/: -``` - -## Production environment - -To debug the production build locally, set `SECRET_KEY_BASE` environment variable in your `.env` file and then run the below commands: - -```bash -docker compose -f docker-compose.production.yaml build -docker compose -f docker-compose.production.yaml up -``` - -## Debugging mode - -To use debuggers like `byebug` or `binding.pry`, use the following command to bring up the app instead of `docker-compose up`. - -```bash -docker compose run --rm --service-port rails -``` - - -## Troubleshooting -If there is an update to any of the following -- `dockerfile` -- `gemfile` -- `package.json` -- schema change - -Make sure to rebuild the containers and run `db:reset`. - -```bash -docker-compose down -docker-compose build -docker-compose run --rm rails bundle exec rails db:reset -docker-compose up -``` diff --git a/docs/contributing-guide/environment-setup/mac-os.md b/docs/contributing-guide/environment-setup/mac-os.md deleted file mode 100644 index c0ebded2..00000000 --- a/docs/contributing-guide/environment-setup/mac-os.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -sidebar_label: "Mac OS" -title: "Mac OS installation guide" ---- - -Open terminal app and run the following commands - -### Installing the standalone Command Line Tools - -Open terminal app and write the code below - -```bash -xcode-select --install -``` - -### Install Homebrew - -```bash -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" -``` - -### Install Git - -```bash -brew update -brew install git -``` - -### Install RVM or rbenv - -```bash -curl -L https://get.rvm.io | bash -s stable -``` - -Alternatively you can use `rbenv` - -```bash -brew install rbenv -``` - -### Install Ruby - -Chatwoot APIs are built on Ruby on Rails, you need install ruby 3.2.2 - -If you are using `rvm` : - -```bash -rvm install ruby-3.2.2 -rvm use 3.2.2 -source ~/.rvm/scripts/rvm -``` - -If you are using `rbenv` to manage ruby versions do : - -```bash -rbenv install 3.2.2 -``` - -`rbenv` identifies the ruby version from `.ruby-version` file on the root of the project and loads it automatically. - -### Install Node.js - -Chatwoot requires `node` version `20`. Install Node.js from NodeSource using the following commands - -```bash -brew install node@20 -``` - -### Install pnpm - -We use `pnpm` as package manager - -```bash -brew install pnpm -``` - -### Install postgres - -The database used in Chatwoot is PostgreSQL. - -1) Install PostgresApp (https://postgresapp.com). This is easiest way to get started with PostgreSQL on mac. - -or - -2) Use the following commands to install postgres. - -```bash -brew install postgresql -# Ensure Postgres is started -brew services start postgresql -# create user postgres -createuser postgres -``` - -The installation procedure created a user account called postgres that is associated with the default Postgres role. In order to use Postgres, you can log into that account. - -```bash -sudo psql -U postgres -``` - -### Install redis-server - -Chatwoot uses Redis server in agent assignments and reporting. To install `redis-server` - -```bash -brew install redis -``` - -Start the redis service. - -```bash -brew services start redis -``` - -### Install imagemagick -Chatwoot uses `imagemagick` library to resize images for showing previews and smaller size based on context. - -```bash -brew install imagemagick -``` - -You can read more on installing imagemagick from source from [here](https://imagemagick.org/script/download.php). - -### Install Docker - -This is an optional step. Those who are doing development can install docker from [Docker Desktop](https://www.docker.com/products/docker-desktop). diff --git a/docs/contributing-guide/environment-setup/ubuntu.md b/docs/contributing-guide/environment-setup/ubuntu.md deleted file mode 100644 index e347eb24..00000000 --- a/docs/contributing-guide/environment-setup/ubuntu.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -sidebar_label: "Ubuntu" -title: "Ubuntu installation guide" ---- - -Open a terminal and run the following commands: - -```bash -sudo apt-get update -``` - -### Install Git - -```bash -sudo apt-get install git -``` - -### Install RVM - -You need software-properties-common installed in order to add PPA repositories. - -```bash -sudo apt-get install software-properties-common -``` - -```bash -sudo apt-add-repository -y ppa:rael-gc/rvm -sudo apt-get update -sudo apt-get install rvm -sudo usermod -a -G rvm $USER -``` - -Enable `Run command as a login shell` in terminal `Preferences`. Restart your computer. - -### Install Ruby - -Chatwoot APIs are built on Ruby on Rails. You need to install ruby 3.3.3: - -```bash -rvm install ruby-3.3.3 -``` - -Use ruby 3.3.3 as default: - -```bash -rvm use 3.3.3 --default -``` - -### Install Node.js - -Chatwoot requires `node` version `20`. Install Node.js from NodeSource using the following commands: - -```bash -curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - -sudo apt-get install -y nodejs -``` - -### Install pnpm - -We use `pnpm` as the package manager: - -```bash -curl -fsSL https://get.pnpm.io/install.sh | sh - -``` - -### Install postgres - -The database used in Chatwoot is PostgreSQL. Use the following commands to install postgres: - -```bash -sudo apt install postgresql postgresql-contrib -``` - -The installation procedure creates a user account called postgres that is associated with the default Postgres role. In order to use Postgres, you can log into that account: - -```bash -sudo -u postgres psql -``` - -Install `libpg-dev` dependencies for ubuntu: - -```bash -sudo apt-get install libpq-dev -``` - -### Install redis-server - -Chatwoot uses Redis server in agent assignments and reporting. You need to install `redis-server`: - -```bash -sudo apt-get install redis-server -``` - -Next, enable Redis to start on system boot: - -```bash -sudo systemctl enable redis-server.service -``` - -### Install imagemagick - -```bash -sudo apt-get install imagemagick -``` diff --git a/docs/contributing-guide/environment-setup/windows.md b/docs/contributing-guide/environment-setup/windows.md deleted file mode 100644 index f5a94e80..00000000 --- a/docs/contributing-guide/environment-setup/windows.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -sidebar_label: "Windows 10" -title: 'Windows 10 Installation Guide' ---- - -### Requirements - -You need to install the Linux Subsystem for Windows. - -1. The first step is to enable "Developer mode" in Windows. You can do this by opening up Settings and navigating to "Update & Security". In there, choose the tab on the left that reads "For Developers". Turn the "Developer mode" toggle on to enable it. - -Enable Developer Mode - -2. Next you have to enable the Windows Subsystem for Linux. Open the "Control Panel" and go to "Programs and Features". Click on the link on the left "Turn Windows features on or off". Look for the "Windows Subsystem for Linux" option and select the checkbox next to it. - -Enable WSL - -3. Once that's complete, you can open up the Start Menu again and search for "Bash". This time it will have the Ubuntu logo. - -### Installing RVM & Ruby - -You need core linux dependencies installed in order to install ruby. - -```bash -sudo apt-get update -sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev -``` - -Install RVM & ruby version 3.2.2 - -```bash -sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev -gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB -curl -sSL https://get.rvm.io | bash -s stable -source ~/.rvm/scripts/rvm -rvm install 3.2.2 -rvm use 3.2.2 --default -ruby -v -``` - -### Install Node.js - -Chatwoot requires `node` version `20`. Install `Node.js` from NodeSource using the following commands - -```bash -curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - -sudo apt-get install -y nodejs -``` - -### Install pnpm - -We use `pnpm` as the package manager - -```bash -iwr https://get.pnpm.io/install.ps1 -useb | iex -``` - -### Install postgres - -The database used in Chatwoot is PostgreSQL. Use the following commands to install postgres: - -```bash -sudo apt install postgresql postgresql-contrib -``` - -The installation procedure created a user account called postgres that is associated with the default Postgres role. In order to use Postgres, you can log into that account. - -```bash -sudo -u postgres psql -``` - -Install `libpg-dev` dependencies for Ubuntu - -```bash -sudo apt-get install libpq-dev -sudo service postgresql start -``` - -### Install redis-server - -Chatwoot uses Redis server in agent assignments and reporting. To install `redis-server` - -```bash -sudo apt-get install redis-server -``` - -Enable Redis to start on system boot. - -```bash -sudo systemctl enable redis-server.service -``` - -### Install imagemagick - -```bash -sudo apt-get install imagemagick -``` diff --git a/docs/contributing-guide/environment-variables.md b/docs/contributing-guide/environment-variables.md deleted file mode 100644 index 69cc55f8..00000000 --- a/docs/contributing-guide/environment-variables.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: 'Environment variables' ---- - -For a complete set of production environment variables, please refer to [Production Environment Variables Guide](/docs/self-hosted/configuration/environment-variables) - -In addition to the above variables, you can use the following variables in development mode. - -### Use letter opener instead of mailhog/SMTP - -Set the following variable to open emails in letter opener instead of SMTP - -``` -LETTER_OPENER=true -``` diff --git a/docs/contributing-guide/line-channel-setup.md b/docs/contributing-guide/line-channel-setup.md deleted file mode 100644 index c099d8e0..00000000 --- a/docs/contributing-guide/line-channel-setup.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_label: "Line App" -title: "Setup Line app integration on your local machine" ---- - -Please follow the steps if you are trying to work with the Line integration on your local machine. - -- Start a Ngrok server listening at port `3000` or the port you will be running the Chatwoot installation. -- Update the .env variable FRONTEND_URL in Chatwoot with the `https` version of the Ngrok URL. -- Start the Chatwoot server and create a new Line channel with the below values obtained from [Line Developer Console](https://developers.line.biz/console) under the "Messaging API" channel. - -1. Channel Name -2. LINE Channel ID -3. LINE Channel Secret -4. LINE Channel Token - -After creating the channel, Chatwoot will provide a webhook URL for the channel. You can configure this webhook url in the [Line Developer Console](https://developers.line.biz/console) under the "Messaging API" channel. - -If the webhook is registered correctly with Line, your Ngork server should receive events for new Line messages, and new conversations will be created in Chatwoot. diff --git a/docs/contributing-guide/mobile-app/custom-release-guide.md b/docs/contributing-guide/mobile-app/custom-release-guide.md deleted file mode 100644 index a6cdd2d3..00000000 --- a/docs/contributing-guide/mobile-app/custom-release-guide.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -sidebar_label: "Custom Release Guide" -title: "Custom release guide for mobile app" ---- - -### Set up Firebase for Push Notifications - -Note: If you're using the official mobile app, you can skip this step. Push notifications should work correctly as long as the `ENABLE_PUSH_RELAY_SERVER` environment variable is set to true in the Chatwoot environment variables. - -- Start by creating a new project in the [Firebase console](https://console.firebase.google.com/). -- Next, generate [Android credentials](https://rnfirebase.io/#generating-android-credentials) from the Firebase console. Download the `google-services.json` file and place it within your project at the following location: `android/app/`. -- Generate [iOS credentials](https://rnfirebase.io/#generating-ios-credentials) from the Firebase console. Download the `GoogleService-Info.plist` file and add it to your project using `Xcode`. More details are available [here](https://rnfirebase.io/#3-ios-setup). -- Follow the [guide](https://firebase.google.com/docs/cloud-messaging/migrate-v1) to generate GOOGLE_APPLICATION_CREDENTIALS. -- Visit `/super_admin/app_config`. Add the `Firebase Project ID` and GOOGLE_APPLICATION_CREDENTIALS as `Firebase Credentials`. -### Deep linking - -#### Android - -Open `AndroidManifest.xml` file under `android/app/src/main/` folder. - -Replace `android:host` with your installation url - -Ex: - -``` - -``` - -In order to test deep linking in local machine run following command in terminal. - -``` -adb shell am start -W -a android.intent.action.VIEW -d "https://{INSTALLATION_URL}/app/accounts/{ACCOUNT_ID}/conversations/{CONVERSATION_URL} {APP_PACKAGE_NAME} -``` - -Ex: - -``` -adb shell am start -W -a android.intent.action.VIEW -d "https://app.chatwoot.com/app/accounts/47/conversations/11” com.chatwoot.app - -``` - -#### iOS - -Set `IOS_APP_ID` in chatwoot server - -Open `Chatwoot.entitlements` file under `ios/` folder. - -Replace `*.chatwoot.com` with your installation url - -### Deployment - -In order to successfully upload your app to the [Playstore](https://reactnative.dev/docs/signed-apk-android) and [Appstore](https://reactnative.dev/docs/publishing-to-app-store), it is important to follow the official guide closely. You must ensure that you have completed all the necessary steps, including creating a signed APK for Android and publishing to the App Store for iOS. It is also important to make sure that your app meets all the requirements and guidelines set forth by the app stores, such as having appropriate content and adhering to their policies and regulations. diff --git a/docs/contributing-guide/mobile-app/setup-guide.md b/docs/contributing-guide/mobile-app/setup-guide.md deleted file mode 100644 index 364de7f1..00000000 --- a/docs/contributing-guide/mobile-app/setup-guide.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -sidebar_label: "Mobile App" -title: "Setup guide for mobile app" ---- - - -### Installation and setup - -#### Prerequisites - -- [Node.js](https://nodejs.org/en/download/) -- [React Native CLI](https://reactnative.dev/docs/environment-setup) -- [Expo CLI](https://docs.expo.dev/get-started/installation/) -- [Expo Account](https://expo.dev/signup) - -To learn more about the most up-to-date instructions, please refer to the guide available [here](https://docs.expo.dev/get-started/set-up-your-environment/). - -#### Clone the repository - -```bash -git clone git@github.com:chatwoot/chatwoot-mobile-app.git -``` - -#### Install dependencies - -```bash -pnpm install -``` - -#### Install Expo CLI - -```bash -pnpm install -g expo-cli -``` - -### Environment Variables - -```bash -cp .env.example .env -``` - -| Name | Description | Default Value | Required | -| ---------------------------------------- | ------------------------------------------- | ------------------------ | -------- | -| EXPO_PUBLIC_CHATWOOT_WEBSITE_TOKEN | Web widget token for in-app support | - | No | -| EXPO_PUBLIC_CHATWOOT_BASE_URL | Self-hosted installation URL | https://app.chatwoot.com | Yes | -| EXPO_PUBLIC_JUNE_SDK_KEY | June analytics SDK key | - | No | -| EXPO_PUBLIC_MINIMUM_CHATWOOT_VERSION | Minimum supported Chatwoot version | - | Yes | -| EXPO_PUBLIC_SENTRY_DSN | Sentry DSN URL for error reporting | - | No | -| EXPO_PUBLIC_PROJECT_ID | Expo project identifier | - | Yes | -| EXPO_PUBLIC_APP_SLUG | Application slug for Expo | - | Yes | -| EXPO_PUBLIC_SENTRY_PROJECT_NAME | Project name in Sentry | - | No | -| EXPO_PUBLIC_SENTRY_ORG_NAME | Organization name in Sentry | - | No | -| EXPO_PUBLIC_IOS_GOOGLE_SERVICES_FILE | Path to iOS Google Services config file | - | No | -| EXPO_PUBLIC_ANDROID_GOOGLE_SERVICES_FILE | Path to Android Google Services config file | - | No | -| EXPO_APPLE_ID | Apple Developer account ID | - | No | -| EXPO_APPLE_TEAM_ID | Apple Developer team ID | - | No | -| EXPO_STORYBOOK_ENABLED | Enable/disable Storybook | false | No | - -### Generate the native code - -```bash -pnpm generate -``` - -Generates native Android and iOS directories using [Prebuild](https://docs.expo.dev/workflow/continuous-native-generation/). - -Note: You need to run pre-build if you add a new native dependency to your project or change the project configuration in Expo app config (app.config.ts). - -### How to run the app - -Connect your iPhone/Android device and run the following command to install the app on your device. - -```bash -## iOS -pnpm run:ios - -## Android -pnpm run:android -``` - -### How to install the packages - -Please always to install the packages using the command `npx expo install package-name` instead of `pnpm install package-name`. - -This is crucial for native dependencies because Expo will automatically install the correct compatible version, while pnpm/yarn/npm may install the latest version, which may not be compatible. - -### Push notification - -If you are using the community edition of Chatwoot, you can now use the [official mobile app](https://www.chatwoot.com/mobile-apps) with push notifications without any additional configuration. Please refer to the [documentation](https://www.chatwoot.com/hc/handbook/articles/1687935909-push-notification) for more details. - - -### Build & Submit using EAS - -We use Expo Application Services (EAS) for building, deploying, and submitting the app to app stores. EAS Build and Submit is available to anyone with an Expo account, regardless of whether you pay for EAS or use our Free plan. You can sign up at [Expo EAS](https://expo.dev/eas). - -#### Build the app - -```bash -## iOS -pnpm run build:ios:local - -## Android -pnpm run build:android:local -``` - - -#### Submit the app - -```bash -## iOS -pnpm submit:ios - -## Android -pnpm submit:android -``` - - -When you run the above command, you will be prompted to provide a path to a local app binary file. Please select the file that you built in the previous step. It is `.ipa` for iOS and `.aab` for Android. - -It may take a while to complete the submission process. You will see the status of the submission on your terminal. \ No newline at end of file diff --git a/docs/contributing-guide/security-reports.md b/docs/contributing-guide/security-reports.md deleted file mode 100644 index 8a9cf7de..00000000 --- a/docs/contributing-guide/security-reports.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -sidebar_label: "Security Reports" -title: "Reporting Security issues" ---- - - -Chatwoot is looking forward to working with security researchers worldwide to keep Chatwoot and our users safe. If you have found an issue in our systems/applications, please reach out to us. - -## Reporting a Vulnerability - -We use Github for security issues that affect our project. If you believe you have found a vulnerability, please disclose it via this [form](https://github.com/chatwoot/chatwoot/security/advisories/new). - -This will enable us to review the vulnerability, fix it promptly, and reward you for your efforts. - -If you have any questions about the process, contact security@chatwoot.com. - -Please try your best to describe a clear and realistic impact for your report, and please don't open any public issues on GitHub or social media; we're doing our best to respond through Github as quickly as possible. - -> Note: Please use the email for questions related to the process. Disclosures should be done via [Github](https://github.com/chatwoot/chatwoot/security/advisories/new). - -## Supported versions - -| Version | Supported | -| -------- | --------- | -| latest | ️✅ | -| < latest | ❌ | - - -## Vulnerabilities we care about 🫣 -> Note: Please do not perform testing against Chatwoot production services. Use a `self-hosted instance` to perform tests. - -- Remote command execution -- SQL Injection -- Authentication bypass -- Privilege Escalation -- Cross-site scripting (XSS) -- Performing limited admin actions without authorization -- CSRF - -## Non-Qualifying Vulnerabilities - -We consider the following out of scope, though there may be exceptions. - -- Missing HTTP security headers -- Incomplete/Missing SPF/DKIM -- Reports from automated tools or scanners -- Theoretical attacks without proof of exploitability -- Social engineering -- Reflected file download -- Physical attacks -- Weak SSL/TLS/SSH algorithms or protocols -- Attacks involving physical access to a user's device or a device or network that's already seriously compromised (e.g., man-in-the-middle). -- The user attacks themselves -- Incomplete/Missing SPF/DKIM -- Denial of Service attacks -- Brute force attacks -- DNSSEC - -If you are unsure about the scope, please create a [report](https://github.com/chatwoot/chatwoot/security/advisories/new). - -## Triaging Process - -Chatwoot team triages the issues in Github weekly. We're doing our best to respond through Github as quickly as we can, So please don't open any public issues on GitHub or social media and avoid duplicate reports over Emails. - -- Based on reviewing the report, the team will assign a priority to the issue and move it into the internal backlog to prioritize a fix. -- In cases where the team needs more information or disagreements of severity, the team will communicate the same over Github before completing the triaging. - -After triage, the team will start working on the issue based on the following Severity and Timelines. - -| Severity | Timeline | -| ------------- | --------- | -| Critical (P0) | ️ 7 Days | -| High | 30 Days | -| Medium | 60 Days | -| Low | 90 Days | - - -## Thanks - -Thank you for keeping Chatwoot and our users safe. 🙇 diff --git a/docs/contributing-guide/telegram-channel-setup.md b/docs/contributing-guide/telegram-channel-setup.md deleted file mode 100644 index ae785115..00000000 --- a/docs/contributing-guide/telegram-channel-setup.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -sidebar_label: "Telegram App" -title: "Setup Telegram app integration on your local machine" ---- - -Please follow the steps if you are trying to work with the Telegram integration on your local machine. - -- Start a Ngrok server listening at port `3000` or the port you will be running the Chatwoot installation. -- Update the .env variable FRONTEND_URL in Chatwoot with the `https` version of the Ngrok URL. -- Start the Chatwoot server and create a new Telegram channel with the token obtained from Telegram botfather. - -While creating the channel, Chatwoot should have registered a webhook callback URL in Telegram for your Bot. You can verify whether this url registration was done successfully by calling the API. - -``` -GET https://api.telegram.org/bot{your_bot_token}/getWebhookInfo -``` - -If the webhook is registered correctly with Telegram, your Ngork server should receive events for new Telegram messages, and new conversations will be created in Chatwoot. diff --git a/docs/contributing-guide/tests/cypress.md b/docs/contributing-guide/tests/cypress.md deleted file mode 100644 index 75f9efed..00000000 --- a/docs/contributing-guide/tests/cypress.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -sidebar_label: "Cypress" -title: "End-to-end testing with Cypress" ---- - -Chatwoot uses [Cypress](https://www.cypress.io/) for end-to-end testing. Use the following steps to run the tests on your local machine. - -## Prepare the Test Server - -Choose any of the given methods to run your chatwoot test server. - -### Using Local Chatwoot Installation (option 1) -> Note: You have to install the necessary dependencies as described in [setup guide](/docs/contributing-guide/project-setup) for this method to work. - -Navigate to chatwoot codebase in your local machine and execute the following steps - -#### Create a fresh test database - -```bash -RAILS_ENV=test bin/rake db:drop -RAILS_ENV=test bin/rake db:create -RAILS_ENV=test bin/rake db:schema:load -``` - -#### Start Chatwoot in the test environment - -```bash -RAILS_ENV=test foreman start -f Procfile.test -### load the url in the browser and wait for it to start up -http://localhost:5050/app/login -``` - - -### Using Docker (option 2) - -Follow the [docker set up guide](/docs/contributing-guide/environment-setup/docker) until you the build images. - -#### Change the Rails Environment -Open `docker-compose.yaml` and update all the `RAILS_ENV` values from `development` to `test` - -#### Update the Port -Under rails section in your `docker-compose.yaml` update the port value as given below. -``` -ports: - - 5050:3000 -``` - -#### Reset the Database -``` -docker-compose run --rm rails bundle exec rails db:reset -``` - -#### Start Chatwoot Docker in the test environment - -``` -docker-compose up -### load the url in the browser and wait for it to start up -http://localhost:5050/app/login -``` - -## Run Cypress - -Load `localhost:5050` on your browser and ensure that the Chatwoot server is running. - -Navigate to your chatwoot local directory and Execute the following command to run the cypress tests. - - -```bash -pnpm cypress open --project ./spec -``` diff --git a/docs/contributing-guide/translation-guidelines.md b/docs/contributing-guide/translation-guidelines.md deleted file mode 100644 index 0ab8b531..00000000 --- a/docs/contributing-guide/translation-guidelines.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -sidebar_label: "Translation guidelines" -title: "Translate Chatwoot to your language" -help_discord: "https://discord.gg/uPtCrFfb9B" -help_github_discussions: "https://github.com/chatwoot/chatwoot/discussions/categories/translations" ---- - -Chatwoot uses American English by default. Each and every string available in Chatwoot can be translated to the language of your choice. Chatwoot uses Crowdin to manage the translation process. The updates from Crowdin is also included along with every release. - -## How do I see the strings that needs to be translated? - -In the codebase the string are placed in the following locations. - -- `app/javascript/dashboard/i18n` - The strings related to the agent dashboard -- `app/javascript/widget/i18n` - The strings related to the web widget -- `app/javascript/survey/i18n` - The strings related to CSAT surveys -- `config/locales` - The strings used in backend messages or API responses - -You can login to the **Crowdin** ([https://translate.chatwoot.com](https://translate.chatwoot.com)) and create an account to view the strings that needs to be translated. - -## How to contribute? - -If you don't find your language on Crowdin, please create an issue on [Github](https://github.com/chatwoot/chatwoot/issues) to add the language. - -### Translate Strings - -The translation process for Chatwoot web and mobile app is managed at [https://translate.chatwoot.com](https://translate.chatwoot.com) using Crowdin. You will have to create an account at Crowdin before you can select a language and contribute. - -### Formal vs informal context - -At Chatwoot, we prefer to use formal form of language wherever possible. For instance in German there are two forms of "you" where one is rather used in formal contexts ("Sie") and the other one is used among friends ("Du"). "Sie" is preferred over "Du" in translating Chatwoot. - -### Proofreading - -Proofreading helps ensure the accuracy and consistency of translations. Right now, the translations are being accepted without a proof reading step. This would be changed in the future as an when there are more contributors on each language. - -*Note:* If you are the only person contributing to a language, make sure that you inform any of the Chatwoot members to gain access to manage the language. - -### Releasing a new language - -All the translated strings would be included in the next release. If a language has *60% or more translated strings* in Crowdin, we would enable the language in Chatwoot app during the next release. - -#### Steps to raise a pull request for new langauge - -Please use this [pull request](https://github.com/chatwoot/chatwoot/pull/7905) as a reference for enabling a new language into Chatwoot. - -- Ensure language is added and enabled in `config/initializers/languages.rb` -- Include the language in `i18n/index.js` for the all the packs -> `dashboard, widget, survey` -- Select the language from Chatwoot settings UI and confirm the PR to be working diff --git a/docs/self-hosted.md b/docs/self-hosted.md deleted file mode 100644 index 8112ad4c..00000000 --- a/docs/self-hosted.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -sidebar_label: "Introduction" -title: "Self-hosted installation guide" ---- - -This guide will help you to install and setup a production ready Chatwoot. - -## Deployment - -- [Architecture](/docs/self-hosted/deployment/architecture) -- [Requirements](/docs/self-hosted/deployment/requirements) -- Linux - - [Manual Install](/docs/self-hosted/deployment/linux-vm) - - [Docker](/docs/self-hosted/deployment/docker) -- [Kubernetes](/docs/self-hosted/deployment/helm-charts) -- [Chatwoot CTL](/docs/self-hosted/deployment/chatwoot-ctl) - -## Cloud - -### Official, supported cloud providers - -- Amazon Web Services (AWS) - - [Manual Install](/docs/self-hosted/deployment/aws) - - [AWS Marketplace](/docs/self-hosted/deployment/aws-marketplace) -- [Azure](/docs/self-hosted/deployment/azure) -- [DigitalOcean](/docs/self-hosted/deployment/digital-ocean) -- [Google Cloud Platform (GCP)](/docs/self-hosted/deployment/gcp) -- [Heroku](/docs/self-hosted/deployment/heroku) - -### Community contributed providers - -- [Caprover](/docs/self-hosted/deployment/caprover) -- [Clever Cloud](/docs/self-hosted/deployment/clevercloud) -- [Cloudron](/docs/self-hosted/deployment/cloudron) -- [Restack](/docs/self-hosted/deployment/restack) -- [Easypanel](/docs/self-hosted/deployment/easypanel) -- [Elestio](/docs/self-hosted/deployment/elestio) - -## Configuration - -- [Environment Variables](/docs/self-hosted/configuration/environment-variables) -- [Email templates](/docs/self-hosted/configuration/email-notifications) -- [Enable IP Logging](/docs/self-hosted/configuration/enable-ip-logging) -- [Optimizing configuration](self-hosted/deployment/performance/optimizing-configurations) -- [Configure Cloudfront CDN](/docs/self-hosted/deployment/performance/cloudfront-cdn) -- [Help Center](/docs/self-hosted/configuration/help-center) - -### Monitoring - -- [Super Admin Console & Sidekiq](/docs/self-hosted/monitoring/super-admin-sidekiq) -- [APM and Tracing](/docs/self-hosted/monitoring/apm-and-error-monitoring) -- [Rate Limiting](/docs/self-hosted/monitoring/rate-limiting) - -### Storage - -- [Supported providers](/docs/self-hosted/deployment/storage/supported-providers) -- [Configure S3 bucket](/docs/self-hosted/deployment/storage/s3-bucket) -- [Configure GCS bucket](/docs/self-hosted/deployment/storage/gcs-bucket) - -### Email - -- [Enable conversation continuity](/docs/self-hosted/configuration/features/email-channel/conversation-continuity) -- [Conversation continuity using SendGrid](/docs/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid) -- [Channel configuration](/docs/self-hosted/configuration/features/email-channel/setup) -- [Microsoft email account setup](/docs/self-hosted/configuration/features/email-channel/azure-app-setup) - -## Integrations - -- [Facebook App Setup](/docs/self-hosted/configuration/features/integrations/facebook-channel-setup) -- [Instagram App Setup](/docs/self-hosted/configuration/features/integrations/instagram-channel-setup) -- [Slack](/docs/self-hosted/configuration/features/integrations/slack-integration-setup) -- [Linear](/docs/self-hosted/configuration/features/integrations/linear-integration-setup) -- [Shopify](/docs/self-hosted/configuration/features/integrations/shopify-integration-setup) -- [Instagram via Facebook Login](/docs/self-hosted/configuration/features/integrations/instagram-channel-setup) -- [Instagram via Instagram Business Login](/docs/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login) - -## Maintenance - -- [Upgrading your Chatwoot installation](/docs/self-hosted/deployment/upgrade) -- [Backup your Chatwoot installation](self-hosted/deployment/backup) - -## Runbooks - -- [How to migrate Chatwoot database?](/docs/self-hosted/runbooks/migrate-chatwoot-database) - -## Others - -- [Telemetry](/docs/self-hosted/telemetry) -- [Enterprise Edition](/docs/self-hosted/enterprise-edition) -- [Supported features](/docs/self-hosted/supported-features) -- [Restricted Instances](/docs/self-hosted/restricted-instances) -- [Instagram App Review](/docs/self-hosted/instagram-app-review) -- [FAQ](/docs/self-hosted/faq) diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/add-api-keys.png b/docs/self-hosted/configuration/features/integrations/images/twitter/add-api-keys.png deleted file mode 100644 index fb28213d..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/add-api-keys.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-details.png b/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-details.png deleted file mode 100644 index 68317aff..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-details.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-name.png b/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-name.png deleted file mode 100644 index 6275236b..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/add-project-name.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/app-details.png b/docs/self-hosted/configuration/features/integrations/images/twitter/app-details.png deleted file mode 100644 index f715a435..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/app-details.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/app-oauth-info.png b/docs/self-hosted/configuration/features/integrations/images/twitter/app-oauth-info.png deleted file mode 100644 index 86a90837..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/app-oauth-info.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/app-permission.png b/docs/self-hosted/configuration/features/integrations/images/twitter/app-permission.png deleted file mode 100644 index 4433dffd..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/app-permission.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/authentication-settings.png b/docs/self-hosted/configuration/features/integrations/images/twitter/authentication-settings.png deleted file mode 100644 index fbf3f3b5..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/authentication-settings.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/callback-url.png b/docs/self-hosted/configuration/features/integrations/images/twitter/callback-url.png deleted file mode 100644 index a9fdb3eb..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/callback-url.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/create-project.png b/docs/self-hosted/configuration/features/integrations/images/twitter/create-project.png deleted file mode 100644 index 36784924..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/create-project.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/dev-env.png b/docs/self-hosted/configuration/features/integrations/images/twitter/dev-env.png deleted file mode 100644 index b2c00442..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/dev-env.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/edit-auth.png b/docs/self-hosted/configuration/features/integrations/images/twitter/edit-auth.png deleted file mode 100644 index 040b1044..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/edit-auth.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/name-your-app.png b/docs/self-hosted/configuration/features/integrations/images/twitter/name-your-app.png deleted file mode 100644 index c248c0ec..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/name-your-app.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/project-app-name.png b/docs/self-hosted/configuration/features/integrations/images/twitter/project-app-name.png deleted file mode 100644 index 9b7c0c65..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/project-app-name.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/select-project-type.png b/docs/self-hosted/configuration/features/integrations/images/twitter/select-project-type.png deleted file mode 100644 index 11d56ca1..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/select-project-type.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/setup-dev-env.jpg b/docs/self-hosted/configuration/features/integrations/images/twitter/setup-dev-env.jpg deleted file mode 100644 index 39408f00..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/setup-dev-env.jpg and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/standalone-app.png b/docs/self-hosted/configuration/features/integrations/images/twitter/standalone-app.png deleted file mode 100644 index 15d4d635..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/standalone-app.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/images/twitter/store-keys.png b/docs/self-hosted/configuration/features/integrations/images/twitter/store-keys.png deleted file mode 100644 index 6fcb2ab8..00000000 Binary files a/docs/self-hosted/configuration/features/integrations/images/twitter/store-keys.png and /dev/null differ diff --git a/docs/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.md b/docs/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.md deleted file mode 100644 index 0b1e80b0..00000000 --- a/docs/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -sidebar_label: "Instagram via Instagram Business Login" -title: "Instagram via Instagram Business Login" ---- - - -> **Note**: Please ensure you have installed version v4.1 or above. If not, please refer to this [guide](./instagram-channel-setup.md) - - -1. A valid facebook account. -2. A valid instagram professional account. - - -### Register A Facebook App - -To use Instagram Channel, you have to create a Facebook app in the developer portal. You can find more details about creating Facebook apps [here](./facebook-channel-setup.md). - - -1. Click on the "Create App" button - -![facebook_create_app](./images/facebook/facebook-create-app.png) - -2. Select the option "Other". - - -![facebook_other_app](./images/facebook/facebook_other_app.png) - -3. For the app type, choose "Business" - -![facebook_business](./images/facebook/facebook_business.png) - -4. Add app name and connect business account - -![facebook_business_details](./images/facebook/facebook_business_details.png) - - -5. Add Instagram product from the Home page. - -![instagram_product](./images/instagram/instagram_product.png) - -### Configure Instagram settings for Chatwoot - -1. Copy Instagram app ID and Instagram app secret - -![instagram_app_id](./images/instagram/instagram_app_id.png) - -2. Add the Instagram app ID and Instagram app secret to your app config via `{Chatwoot installation url}/super_admin/app_config?config=instagram` - -![instagram_app_config](./images/instagram/instagram_app_config.png) - - -3. Configure Webhooks - -Set the callback URL to `{your_chatwoot_url}/webhooks/instagram`. The verify token should match your `INSTAGRAM_VERIFY_TOKEN`, which can be configured through `app_config` - -![instagram_webhooks](./images/instagram/instagram_webhook.png) - - -Subscribe to `messages`, `messaging_seen`, and `message_reactions` events. - -![instagram_webhooks_subscribe](./images/instagram/instagram_webhooks_subscribe.png) - - -> **Note**: To receive web hooks, app mode should be set to "Live". - - -4. Set up Instagram business login - -Set Redirect URL as `{your_chatwoot_url}/instagram/callback` - -![instagram_business_login](./images/instagram/instagram_business_login.png) - - -5. Create a new Instagram tester account - - -### Create Instagram Inbox - - -Head over to Chatwoot and create a Instagram inbox. Please refer to this [guide](https://chatwoot.help/hc/user-guide/articles/1744361165-how-to-setup-an-instagram-channel-via-instagram-login) for more details on creating a Instagram inbox in Chatwoot. - - - -### How to test the Instagram before going to live - - -1. Add Instagram Testers by clicking "Add People" button. - -![facebook_instagram_test](./images/instagram/instagram-testers-list.png) - -2. Make sure that you have selected the role Instagram Tester while creating a new tester. - -![instagram_tester_list](./images/instagram/instagram-add-tester.png) - -### Going into production. - -Before you can start using your Facebook app in production, you will have to get it verified by Facebook. Refer to the [docs](https://developers.facebook.com/docs/messenger-platform/instagram/app-review) on getting your app verified. - - -### Troubleshooting & Common Errors - -#### Insufficient Developer Role Error - -Ensure the Instagram user is added as a developer: `Meta Dashboard → App Roles → Roles → Add People → Enter Instagram ID` - -#### API Access Deactivated - -Ensure the **Privacy Policy URL** is valid and correctly set. - -#### Invalid request: Request parameters are invalid: Invalid redirect_uri - -Please configure the Frontend URL. The Frontend URL does not match the authorization URL. - -#### Instagram Channel creation Error: Failed to exchange token - -Please make sure that tester account has been added to the facebook app settings. - -#### 400: Session Invalid when connecting the instagram channel - -This might be issue from facebook side. Please try again after some time. - - - diff --git a/docs/self-hosted/deployment/architecture.md b/docs/self-hosted/deployment/architecture.md deleted file mode 100644 index a9ae5f9f..00000000 --- a/docs/self-hosted/deployment/architecture.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_label: "Architecture" -title: "Chatwoot Production deployment guide" ---- - -This guide will help you to deploy Chatwoot to production! - -### Architecture - -Running Chatwoot in production requires the following set of services. - -* Chatwoot web servers -* Chatwoot workers -* PostgreSQL Database -* Redis Database -* Email service (SMTP servers / sendgrid / mailgun etc) -* Object Storage ( S3, Azure Storage, GCS, etc) - -![architecture](./images/architecture.png) - -### Updating your Chatwoot installation - -A new version of Chatwoot is released around the first monday of every month. We also release minor versions when there is a need for Hotfixes or security updates. - -You can stay tuned to our [Roadmap](https://github.com/chatwoot/chatwoot/milestones) and [releases](https://github.com/chatwoot/chatwoot/releases) on github. We recommend you to stay upto date with our releases to enjoy the latest features and security updates. - -The deployment process for a newer version involves updating your app servers and workers with the latest code. Most updates would involve database migrations as well which can be executed through the following rails command. - -``` -bundle exec rails db:migrate -``` - -The detailed instructions can be found in respective deployment guides. - -### Available deployment options - -If you want to self host Chatwoot, the recommended approach is to use one of the recommended one click installation options from the below list. If you are comfortable with ruby on rails applications, you can also make use of the other deployment options mentioned below. - -* [Heroku](/docs/self-hosted/deployment/heroku) (recommended) -* [Restack](/docs/self-hosted/deployment/restack) (recommended) -* [Caprover](/docs/self-hosted/deployment/caprover) (recommended) -* [Docker](/docs/self-hosted/deployment/docker) -* [Linux](/docs/self-hosted/deployment/linux-vm) diff --git a/docs/self-hosted/deployment/aws-marketplace.md b/docs/self-hosted/deployment/aws-marketplace.md deleted file mode 100644 index 40676a6f..00000000 --- a/docs/self-hosted/deployment/aws-marketplace.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -sidebar_label: "AWS marketplace AMI " -title: "AWS Chatwoot deployment guide" ---- - - -The following is the guide for deploying Chatwoot on AWS using the marketplace listing. Use our helm charts with AWS Elastic Kubernetes Service(EKS) for a cloud-native deployment. - -### Prerequisites -- AWS account - -## Install Chatwoot via AWS marketplace AMI - -1. Go to [Chatwoot AWS marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-tolblk4kmdqd4) and click on subscribe. -![aws-marketplace-subscribe](./images/aws-ami/awsmp-01-subscribe.png) - -2. Sign in with your AWS account. - -![aws-marketplace-sign-in](./images/aws-ami/awsmp-02-signin.png) - -3. Click on `Continue to Configuration`. -![aws-marketplace-continue](./images/aws-ami/awsmp-03-continue.png) - -4. Select the latest version in `Software Version` and pick your aws `region`. Click `Continue to Launch`. -![aws-marketplace-configure](./images/aws-ami/awsmp-04-configure.png) - -5. Review the launch configuration. Leave the `Choose Action` field with the default value `Launch from Website`. Choose a VPC and subnet as per your AWS region preference. -![aws-marketplace-launch](./images/aws-ami/awsmp-05-launch.png) - -6. Scroll down to the `security group` section and click create `Create New Based On Seller Settings.` -![aws-marketplace-sg](./images/aws-ami/awsmp-06-sg.png) - -7. Save the new security group and choose it after creation. -![aws-marketplace-sg](./images/aws-ami/awsmp-07-sg.png) - -8. Pick a key pair you already have or create a new one in the region you are deploying. Click `Launch`. -![aws-marketplace-keypair](./images/aws-ami/awsmp-08-keypair.png) - -9. AWS should now display a congratulations screen confirming that Chatwoot instance is launched successfully. Click on the `EC2 Console` link. -![aws-marketplace-launch](./images/aws-ami/awsmp-09-launch.png) - -10. Wait for a few minutes to let the instance come up. -![aws-marketplace-ec2](./images/aws-ami/awsmp-10-ec2.png) - -11. Select the instance and copy the public IP. -![aws-marketplace-public-ip](./images/aws-ami/awsmp-11-public-ip.png) - -11. Visit `http://:3000`. This should bring up the Chatwoot UI. Congratulations. Woot ! Woot !! -![aws-marketplace-chatwoot](./images/aws-ami/awsmp-12-chatwoot.png) - -## Configuring Chatwoot - -To configure Chatwoot, we need to ssh into the instance. We will use `AWS console connect` for this. - -1. Select the instance and click on `Connect`. -![aws-marketplace-connect2](./images/aws-ami/awsmp-13-connect.png) - -2. Change the username from `root` to `ubuntu` and click `Connect`. -![aws-marketplace-connect](./images/aws-ami/awsmp-14-connect.png) - -3. Switch to the `chatwoot` user and configure the necessary environment variables. Refer [Environment variables](https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables) document for the complete list. -```bash -sudo -i -u chatwoot -cd chatwoot -vi .env -``` - -6. Also, it is recommended to configure a proxy server like Nginx and set up SSL. Make sure to modify the security group created in `step 6` accordingly. - -### Updating the instance -Please follow the Chatwoot update process in the standard Linux VM setup. diff --git a/docs/self-hosted/deployment/elestio.md b/docs/self-hosted/deployment/elestio.md deleted file mode 100644 index ddb08539..00000000 --- a/docs/self-hosted/deployment/elestio.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_label: "Elestio" -title: "Elestio Chatwoot fully managed deployment guide" ---- -## Deploy to Elestio with one-click - - [![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/chatwoot) - -## Select the providers - - - Select cloud service provider of your choice. - - Choose region of your choice - - Select service plan. The smallest one offers 1 CPU, 2 GB RAM etc. - - Confirm the details and hit "Next" - - ![Elestio Setup](./images/elestio.png) - - ## Configure - - Select the support level - - Name your application - - Add admin email (You can add email you want to access your application from) - - Click "Create Service" - - Here you also get option to copy your terraform config (Optional) - - ## Use Chatwoot - - Click on "Display Admin UI" - - Go to Admin Ui link provided - - Add username and password provided on dashboard. - - ![Elestio Dashboard](./images/elestio-dash.png) - - ## Update Chatwoot - - Go to Overview section in your Chatwoot service - - Click "Change version" inside Software section - - Choose the latest version or the version of your choice. - - Additionally update the configs or restart the instance with single clink under same section - -![Elestio Change version](./images/elestio-version.png) diff --git a/docs/self-hosted/deployment/heroku.md b/docs/self-hosted/deployment/heroku.md deleted file mode 100644 index 625509b7..00000000 --- a/docs/self-hosted/deployment/heroku.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_label: "Heroku" -title: "Heroku Chatwoot Production deployment guide" ---- - -### Deploying on Heroku - -:::note -Heroku has discontinued free dynos, postgres and redis. https://blog.heroku.com/new-low-cost-plans
-Chatwoot will switch to using basic/mini plans for all new heroku deployments going forward. -::: - -Deploy chatwoot on Heroku through the following steps - -1. Click on the [one click deploy button](https://heroku.com/deploy?template=https://github.com/chatwoot/chatwoot/tree/master) and deploy your app. -2. Go to the Resources tab in the Heroku app dashboard and ensure the worker dynos is turned on. -3. Head over to settings tabs in Heroku app dashboard and click reveal config vars. -4. Configure the environment variables for [mailer](/docs/self-hosted/configuration/environment-variables#configure-emails) and [storage](/docs/self-hosted/deployment/storage/supported-providers) as per the [documentation](/docs/self-hosted/configuration/environment-variables). -5. Head over to `yourapp.herokuapp.com` and enjoy using Chatwoot. - - - -### Updating the deployment on Heroku - -Whenever a new version is out for chatwoot, you update your Heroku deployment through following steps. - -1. In the deploy tab, choose `Github` as the deployment option. -2. Connect chatwoot repo to the app. -3. Head over to the manual deploy option, choose `master` branch and hit deploy. - -### Known Limitations - -1. If you are on a free tier and you don’t access the application for a while Heroku will put your dynos to sleep. You can fix this by upgrading the dynos to paid tier. - -2. Heroku has an "ephemeral" hard disk. The files uploaded to Chatwoot would not persist after the application is restarted. By default, Chatwoot uses local disk as the upload destination. To overcome this problem, you will have to [configure a cloud storage](/docs/self-hosted/deployment/storage/supported-providers). - -3. If the build version is shown as unknown on the settings page, enable the runtime dyno metadata feature. To enable, use `heroku labs:enable runtime-dyno-metadata -a `. diff --git a/docs/self-hosted/deployment/performance/cloudfront-cdn.md b/docs/self-hosted/deployment/performance/cloudfront-cdn.md deleted file mode 100644 index bec0fd20..00000000 --- a/docs/self-hosted/deployment/performance/cloudfront-cdn.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_label: "Cloudfront CDN" -title: "Configuring Cloudfront with Chatwoot" ---- - -This document helps you to configure Cloudfront as the asset host for Chatwoot. If you have a high traffic website, we would recommend setting up a CDN for Chatwoot. - -### Configure a Cloudfront distribution - -**Step 1**: Create a Cloudfront distribution. - -![create-distribution](./images/cloudfront/create-distribution.png) - -**Step 2**: Select "Web" as delivery method for your content. - -![web-delivery-method](./images/cloudfront/web-delivery-method.png) - -**Step 3**: Configure the Origin Settings as the following. - -![origin-settings](./images/cloudfront/origin-settings.png) - -- Provide your Chatwoot Installation URL under Origin Domain Name. -- Select "Origin Protocol Policy" as Match Viewer. - -**Step 4**: Configure Cache behaviour. - -![cache-behaviour](./images/cloudfront/cache-behaviour.png) - -- Configure **Allowed HTTP methods** to use *GET, HEAD, OPTIONS*. -- Configure **Cache and origin request settings** to use *Use legacy cache settings*. -- Select **Whitelist** for *Cache Based on Selected Request Headers*. -- Add the following headers to the **Whitelist Headers**. -![extra-headers](./images/cloudfront/extra-headers.png) - - **Access-Control-Request-Headers** - - **Access-Control-Request-Method** - - **Origin** -- Set the **Response headers policy** to **CORS-With-Preflight** - -**Step 5**: Click on **Create Distribution**. You will be able to see the distribution as shown below. Use the **Domain name** listed in the details as the **ASSET_CDN_HOST** in Chatwoot. - -![cdn-distribution-settings](./images/cloudfront/cdn-distribution-settings.png) - -### Add ASSET_CDN_HOST in Chatwoot - -Your Cloudfront URL will be of the format `.cloudfront.net`. - -Set - -```bash -ASSET_CDN_HOST=.cloudfront.net -``` - -in the environment variables. diff --git a/docs/self-hosted/deployment/troubleshooting.md b/docs/self-hosted/deployment/troubleshooting.md deleted file mode 100644 index f9716d95..00000000 --- a/docs/self-hosted/deployment/troubleshooting.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_label: "Troubleshooting and FAQs" -title: "Troubleshooting a Chatwoot installation" ---- - -## Troubleshooting - -### Disconnected from Chatwoot - -Chatwoot uses WebSocket connections to deliver real-time messages. You will see the `Disconnected from Chatwoot` notification when this connection is broken. - -Deployments using load balancers from major cloud providers might frequently experience this. This is due to the default idle timeout settings for Loadbalancer. Increase this limit to fix the problem. - -For AWS, the default load balancer timeout is 60 seconds. Increase it to 3600 seconds or more. [Follow this guide.](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout) - -For GCP, the timeout for a WebSocket connection depends on the `backend service timeout` of the load balancer, which is 30 seconds by default. Increase it to 3600 seconds or more. [Refer to this guide.](https://cloud.google.com/load-balancing/docs/https#timeouts_and_retries) - -For Azure, the default timeout value is 240 seconds. Increase it to 3600 seconds or more. [Refer to this guide.](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-tcp-idle-timeout) - diff --git a/docs/self-hosted/restricted-instances.md b/docs/self-hosted/restricted-instances.md deleted file mode 100644 index c3dc3a03..00000000 --- a/docs/self-hosted/restricted-instances.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -sidebar_label: 'Restricted Instances' -title: 'Running Chatwoot in Restricted Instances' ---- - -This guide outlines the necessary configurations for deploying Chatwoot in environments with restricted internal networks, ensuring full functionality and compliance. - -## Activating Licenses - -Licensing is critical for the operational legality and functionality of Chatwoot: - -1. **Whitelist Licensing Server:** - Add `https://hub.2.chatwoot.com` to your network's whitelist for license activation and management of Stripe payment links. - -2. **Switch to Email Invoices:** - For organizations preferring email invoices, contact our sales team at `sales@chatwoot.com` with your installation identifier to configure this billing option. - -## Enabling ChatWidget for Users - -To ensure seamless functionality of the ChatWidget within restricted networks, perform the following configurations: - -1. **WebSockets:** - Enable WebSocket connections through `wss://yourdomain.com/cable` to facilitate real-time communications. - -2. **Widget API URLs:** - Open all API endpoints under the widget path to ensure full functionality. Configure your network to allow access to: - - `https://yourdomain.com/api/v1/widget/*` - This wildcard approach ensures all necessary widget functionalities such as conversation handling, message management, and contact updates are operable without individual endpoint specifications. - -3. **Widget Assets:** - Make sure that static assets required by the ChatWidget are accessible. These are typically served from: - - `https://yourdomain.com/packs` - Ensure all paths under this directory are accessible to support the widget fully. - -## SMTP Configuration for Emails - -Proper SMTP setup is essential for managing email communications within restricted networks: - -1. **SMTP Server Details:** - Configure your SMTP server to handle outgoing emails from Chatwoot, including server address, port, authentication details, and secure connection protocols. - -2. **Secure Connections:** - Employ TLS/SSL for secure email transmissions, ensuring your network permits connections over the designated SMTP port (commonly 587 for TLS). - -## Additional Configuration for Restricted Networks - -Additional considerations are necessary for the optimal operation of Chatwoot in restricted environments: - -1. **DNS Configuration:** - Ensure DNS settings are optimized to reduce resolution times and enhance the accessibility of Chatwoot services. - -2. **SSL/TLS Configuration:** - Maintain up-to-date SSL/TLS certificates that are compatible with all internal systems and browsers. - -3. **Monitoring and Logging:** - Implement comprehensive monitoring and logging solutions to swiftly detect and address potential disruptions, maintaining system stability and performance. - -By following these detailed instructions, your Chatwoot deployment can effectively operate within restricted network environments, ensuring a robust and secure customer support platform. diff --git a/docs/self-hosted/runbooks/migrate-chatwoot-database.md b/docs/self-hosted/runbooks/migrate-chatwoot-database.md deleted file mode 100644 index a7a89810..00000000 --- a/docs/self-hosted/runbooks/migrate-chatwoot-database.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -sidebar_label: "How to migrate Chatwoot database?" -title: "Chatwoot database migration" ---- - -## Chatwoot database migration - -Follow along If you started out with a bundled install of postgres, redis and chatwoot in a single instance -and now wants to migrate to managed database service. - -In this guide, we assume you want to migrate to AWS RDS. This guide should be equally applicable to any other -managed database service or even migrating data between different Chatwoot installations. - -1. Stop Chatwoot service to stop database activity. -``` -sudo systemctl stop chatwoot.target -``` - -2. Back up the database using `pg_dump` tool. -``` -pg_dump -Fc --no-acl --no-owner -U postgres chatwoot_production > /tmp/cw.dump -``` - -3. Create an RDS Postgres instance in your aws account. Refer https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/. - -4. Verify connectivity to the new RDS instance from your Chatwoot installation. -``` -psql -h -u -d postgres -``` - -5. Restore the database from the backup file. -``` - pg_restore --verbose --clean --no-acl --no-owner --create -U postgres -d postgres /tmp/cw.dump -``` - -6. Modify the Postgres related environment variables to use the new RDS credentials. -``` -sudo -i -u chatwoot -cd chatwoot -vi .env -``` - -7. Start the Chatwoot service. -``` -sudo systemctl start chatwoot.target -``` - -> **Note**: If you are getting the Chatwoot onboarding screen again on visiting your self-hosted Chatwoot URL, -> login to the rails console and run the following. -``` -sudo cwctl --console -::Redis::Alfred.delete(::Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING) -``` - diff --git a/docs/self-hosted/runbooks/upgrade-to-chatwoot-v4.md b/docs/self-hosted/runbooks/upgrade-to-chatwoot-v4.md deleted file mode 100644 index e950b503..00000000 --- a/docs/self-hosted/runbooks/upgrade-to-chatwoot-v4.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -sidebar_label: "How to upgrade to Chatwoot v4?" -title: "Chatwoot v4 migration" ---- - -Chatwoot v4 requires PostgreSQL with `pgvector` support. You need to ensure that the version of PostgreSQL you are running supports `pgvector` before upgrading. - -## Type of Deployment - -### Linux -- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. -- If you are using self-hosted PostgreSQL, read along. - -### Docker -- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. -- If you are using self-hosted PostgreSQL, read along. - -### Kubernetes (Helm) -- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. -- If you are using self-hosted PostgreSQL, read along. - -### Heroku -- No action is needed if you are using Heroku PostgreSQL. -- If you are using another managed PostgreSQL, refer to the **Managed PostgreSQL** section below. - -## PostgreSQL - -The PostgreSQL section is divided into parts based on how you are running PostgreSQL: -1. **Managed PostgreSQL** from cloud vendors like AWS, GCP, Azure, Heroku, etc. -2. **Self-hosted PostgreSQL** on Linux, Docker, or Kubernetes via Helm charts. - -### Managed PostgreSQL - -- **AWS RDS** - No action is needed if you are on the latest version of RDS. - [Learn more](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-rds-postgresql-pgvector-hnsw-indexing/) - -- **Google Cloud (Cloud SQL)** - No action is needed. - [Learn more](https://cloud.google.com/blog/products/databases/using-pgvector-llms-and-langchain-with-google-cloud-databases) - -- **Heroku PostgreSQL** - The `pgvector` extension is supported. No action is needed. - [Learn more](https://devcenter.heroku.com/articles/pgvector-heroku-postgres) - -- **Azure PostgreSQL** - To enable `pgvector` on your Azure Database for PostgreSQL flexible server instance: - 1. Add `pgvector` to your allowlist as described in the PostgreSQL extensions documentation. - 2. Verify if it is correctly added by running: - ```sql - SHOW azure.extensions; - ``` - [Learn more](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-use-pgvector#enable-extension) - ---- - -## Self-hosted PostgreSQL - -### Linux VM - -- **Existing Installation** - Install the `pgvector` extension for your version of PostgreSQL and run the upgrade: - ```bash - # Find your PostgreSQL version - psql --version - - # If its version 16, use the following command - # Replace "16" with your PostgreSQL version - sudo apt install postgresql-16-pgvector - ``` - -### Docker Container - -- **Existing Installation** - 1. Replace the PostgreSQL image with the pgvector image. The pgvector image is a drop-in replacement and works with your existing data: - ```bash - docker compose down - - # Edit and replace the PostgreSQL image in docker-compose.yaml - vi docker-compose.yaml - - # Replace PostgreSQL image tag - # Example: replace - # image: postgres:12 - # with - # image: pgvector/pgvector:pg12 - - # Ensure the pg tag number matches your PostgreSQL version - docker compose pull - - # Verify the updated setup - docker compose up -d``` - - 2. After verifying that the existing installation works with the pgvector image, proceed with the regular upgrade steps. - [Learn more](https://www.chatwoot.com/docs/self-hosted/deployment/upgrade#docker) - -### Kubernetes (Helm Chart) - - If you use the built-in PostgreSQL via the official Helm chart, follow the steps below. The Bitnami-packaged PostgreSQL used in the Helm chart does not support the pgvector extension. To address this, - we have built a custom Postgres image with `pgvector` support. - - NOTE: This is only applicable if you are using the built-in Postgres with helm charts. Refer, to the managed docs section if you are using AWS RDS or something similar. - - 1. Create a `values.v4-upgrade.yaml` file with the following contents -``` -image: - repository: chatwoot/chatwoot - tag: v4.0.1 - pullPolicy: IfNotPresent - -postgresql: - image: - registry: ghcr.io - repository: chatwoot/pgvector -``` -2. Run `helm upgrade` with this custom values.yaml file. - diff --git a/docusaurus.config.js b/docusaurus.config.js deleted file mode 100644 index f6e9cbb2..00000000 --- a/docusaurus.config.js +++ /dev/null @@ -1,98 +0,0 @@ -/** @type {import('@docusaurus/types').DocusaurusConfig} */ -module.exports = { - title: "Chatwoot", - tagline: - "Open-source customer engangement suite, an alternative to Intercom & Zendesk", - url: "https://www.chatwoot.com", - baseUrl: "/docs/", - onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", - favicon: "img/favicon.png", - organizationName: "chatwoot", - projectName: "docs", - themeConfig: { - announcementBar: { - id: "star_us", - content: - '⭐️ If you like Chatwoot, give it a star on GitHub and follow us on Twitter!', - isCloseable: true, - }, - image: "https://www.chatwoot.com/images/preview.png", - navbar: { - logo: { - href: "https://www.chatwoot.com", - alt: "Chatwoot", - src: "img/logo.png", - srcDark: "img/logo-white.png", // Default to `logo.src`. - target: "_self", - }, - items: [ - { - to: "self-hosted", - activeBasePath: "self-hosted", - label: "Self Hosted", - position: "right", - }, - { - to: "https://www.chatwoot.com/hc/user-guide/en", - label: "User Guide", - position: "right", - }, - { - to: "contributing-guide", - activeBasePath: "contributing-guide", - label: "Contributing Guide", - position: "right", - }, - { - to: "https://www.chatwoot.com/hc/handbook/en", - activeBasePath: "handbook", - label: "Handbook", - position: "right", - }, - { - href: "https://www.chatwoot.com/developers/api/", - label: "API", - position: "right", - }, - { - href: "https://github.com/chatwoot/chatwoot", - label: "GitHub", - position: "right", - }, - ], - }, - algolia: { - appId: "J9H34SLMKO", - apiKey: "6034d7c5310911e20c3fbb3b88111235", - indexName: "chatwoot", - }, - }, - presets: [ - [ - "@docusaurus/preset-classic", - { - googleAnalytics: { - trackingID: "G-DFH8WSE67F", - anonymizeIP: true, - }, - docs: { - routeBasePath: "/", - sidebarCollapsible: true, - sidebarPath: require.resolve("./sidebars.js"), - editUrl: "https://github.com/chatwoot/docs/edit/main/", - showLastUpdateAuthor: true, - showLastUpdateTime: true, - breadcrumbs: true, - }, - blog: { - showReadingTime: true, - editUrl: "https://github.com/chatwoot/docs/edit/main/blog/", - }, - theme: { - customCss: require.resolve("./src/css/custom.css"), - }, - }, - ], - ], -}; diff --git a/dump.rdb b/dump.rdb deleted file mode 100644 index 45537eed..00000000 Binary files a/dump.rdb and /dev/null differ diff --git a/favicon.png b/favicon.png new file mode 100644 index 00000000..4b7824e3 Binary files /dev/null and b/favicon.png differ diff --git a/introduction.mdx b/introduction.mdx new file mode 100644 index 00000000..d60cdf54 --- /dev/null +++ b/introduction.mdx @@ -0,0 +1,93 @@ +--- +title: Welcome to Chatwoot Developer Docs +description: Your comprehensive guide to installing, configuring, developing with, and integrating Chatwoot - the open-source customer support platform. +sidebarTitle: Introduction +--- + + +## What You'll Find Here + + + + Deploy Chatwoot on your infrastructure with Docker, Kubernetes, or cloud providers + + + Contribute to Chatwoot with our development setup, testing guidelines, and best practices + + + Build powerful integrations with our comprehensive REST APIs + + + Understand Chatwoot's system architecture and components + + + +## Getting Started Paths + +Choose your path based on what you want to accomplish: + +### 🚀 **I want to install Chatwoot** +Perfect! Head to our [Installation Guide](/self-hosted) to deploy Chatwoot on your preferred platform. We support: +- Docker containers for quick setup +- Kubernetes for scalable deployments +- Major cloud providers (AWS, GCP, Azure) +- Traditional Linux VMs + +### 🛠️ **I want to contribute to Chatwoot** +Check out our [Contributing Guide](/contributing-guide) to: +- Set up your development environment +- Understand our coding standards +- Learn our testing practices +- Submit your first pull request + +### 🔌 **I want to build integrations** +Great! Explore our [API Reference](/api-reference/introduction) with three categories of APIs: +- **Application APIs** - Manage accounts, agents, and conversations +- **Platform APIs** - Administrative control for installations +- **Client APIs** - Build custom chat interfaces + +### 📚 **I want to understand the architecture** +Excellent! Our [Architecture Guide](/self-hosted/deployment/architecture) covers: +- System components and their interactions +- Database schemas and relationships +- Scalability considerations +- Security best practices + +## Why Chatwoot? + +Chatwoot is built with modern technologies and follows industry best practices: + +- **Open Source**: Full transparency and community-driven development +- **Multi-channel**: Support customers across web, mobile, email, and social platforms +- **Scalable**: From small teams to enterprise deployments +- **Extensible**: Rich APIs and webhook system for custom integrations +- **Modern Stack**: Ruby on Rails backend, Vue.js frontend, PostgreSQL database + +## Community & Support + +Join our thriving community of developers and users: + +- **GitHub**: [github.com/chatwoot/chatwoot](https://github.com/chatwoot/chatwoot) +- **Community**: [chatwoot.com/community](https://chatwoot.com/community) +- **Discussions**: [GitHub Discussions](https://github.com/chatwoot/chatwoot/discussions) +- **Twitter**: [@chatwootapp](https://twitter.com/chatwootapp) + +--- + +Ready to dive in? Choose your path above and let's build something amazing together! 🚀 diff --git a/logo/dark.png b/logo/dark.png new file mode 100644 index 00000000..9af20120 Binary files /dev/null and b/logo/dark.png differ diff --git a/logo/light.png b/logo/light.png new file mode 100644 index 00000000..86d75cf5 Binary files /dev/null and b/logo/light.png differ diff --git a/package.json b/package.json deleted file mode 100644 index f98bc12b..00000000 --- a/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@chatwoot/docs", - "version": "0.0.1", - "private": true, - "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build --out-dir build/docs", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" - }, - "dependencies": { - "@docusaurus/core": "3.1.1", - "@docusaurus/preset-classic": "3.1.1", - "@mdx-js/react": "^3.0.0", - "clsx": "^2.0.0", - "prism-react-renderer": "^2.3.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "devDependencies": { - "@docusaurus/module-type-aliases": "3.1.1", - "@docusaurus/types": "3.1.1" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/self-hosted.mdx b/self-hosted.mdx new file mode 100644 index 00000000..9fcd33ca --- /dev/null +++ b/self-hosted.mdx @@ -0,0 +1,121 @@ +--- +title: Self-Hosted Installation Guide +description: Complete guide to install and setup a production-ready Chatwoot instance on your own infrastructure. +sidebarTitle: Introduction +--- + +Welcome to the Chatwoot self-hosted installation guide. This comprehensive documentation will help you deploy, configure, and maintain your own Chatwoot instance with full control over your data and infrastructure. + +## Why Self-Host Chatwoot? + +Self-hosting Chatwoot gives you complete control over your customer support platform: + +- **Data Privacy**: Keep all customer data on your own servers +- **Customization**: Modify the platform to fit your specific needs +- **Cost Control**: No per-agent pricing - scale as much as you need +- **Compliance**: Meet specific regulatory requirements +- **Integration**: Deep integration with your existing infrastructure + +## Deployment Options + +Chatwoot supports multiple deployment methods to fit different infrastructure needs: + +### 🐧 Linux VM Deployment +Deploy directly on Ubuntu/Linux virtual machines with our automated installation script. +- **Best for**: Traditional server environments +- **Complexity**: Low to Medium +- **Maintenance**: Manual updates required + +### 🐳 Docker Deployment +Use Docker containers for consistent, portable deployments. +- **Best for**: Containerized environments +- **Complexity**: Medium +- **Maintenance**: Easy updates with container pulls + +### ☸️ Kubernetes Deployment +Deploy on Kubernetes clusters for enterprise-scale operations. +- **Best for**: Large-scale, high-availability deployments +- **Complexity**: High +- **Maintenance**: Automated with proper CI/CD + +### ☁️ Cloud Provider Deployments +One-click deployments on major cloud platforms: +- **AWS**: EC2, ECS, and Marketplace options +- **Azure**: Container Instances and VM deployments +- **DigitalOcean**: Droplets and App Platform +- **Google Cloud**: Compute Engine and Cloud Run +- **Heroku**: Simple one-click deployment + +## System Requirements + +### Minimum Requirements +- **CPU**: 2 cores +- **RAM**: 4GB +- **Storage**: 20GB SSD +- **OS**: Ubuntu 20.04+ or compatible Linux distribution + +### Recommended for Production +- **CPU**: 4+ cores +- **RAM**: 8GB+ +- **Storage**: 50GB+ SSD +- **Database**: PostgreSQL 12+ +- **Cache**: Redis 6+ +- **Reverse Proxy**: Nginx or similar + +## What You'll Need + +Before starting your Chatwoot installation, ensure you have: + +### Technical Requirements +- [ ] Server or cloud instance meeting minimum requirements +- [ ] Domain name (recommended for production) +- [ ] SSL certificate (Let's Encrypt recommended) +- [ ] SMTP server for email notifications + +### Access Requirements +- [ ] SSH access to your server +- [ ] Root or sudo privileges +- [ ] Firewall configuration access + +### Optional but Recommended +- [ ] Object storage (AWS S3, Google Cloud Storage, etc.) +- [ ] CDN for static assets +- [ ] Monitoring tools (APM, logging) +- [ ] Backup solution + +## Security Considerations + +When self-hosting Chatwoot, consider these security aspects: + +- **Regular Updates**: Keep Chatwoot and system packages updated +- **Firewall Configuration**: Only expose necessary ports +- **SSL/TLS**: Always use HTTPS in production +- **Database Security**: Secure PostgreSQL with strong passwords +- **Backup Encryption**: Encrypt sensitive backup data +- **Access Control**: Implement proper user access controls + +## Getting Started + +Ready to deploy Chatwoot? Choose your preferred deployment method: + + + + Get up and running quickly with Docker containers + + + Traditional server deployment with our automated script + + + Enterprise-scale deployment on Kubernetes + + + One-click deployments on major cloud platforms + + + +## Community and Support + +- **Documentation**: Comprehensive guides and API references +- **GitHub**: [Source code and issue tracking](https://github.com/chatwoot/chatwoot) +- **Discord**: [Community chat and support](https://discord.gg/cJXdrwS) +- **Forum**: [Community discussions and Q&A](https://github.com/chatwoot/chatwoot/discussions) diff --git a/docs/self-hosted/configuration/environment-variables.md b/self-hosted/configuration/environment-variables.mdx similarity index 82% rename from docs/self-hosted/configuration/environment-variables.md rename to self-hosted/configuration/environment-variables.mdx index 70258968..44f23731 100644 --- a/docs/self-hosted/configuration/environment-variables.md +++ b/self-hosted/configuration/environment-variables.mdx @@ -1,6 +1,7 @@ --- -path: "/docs/environment-variables" -title: "Environment Variables" +title: Environment Variables +description: Complete reference for Chatwoot environment variables and configuration options +sidebarTitle: Environment Variables --- ## The .env File @@ -26,7 +27,9 @@ SECRET_KEY_BASE=replace_with_your_own_secret_string You can generate `SECRET_KEY_BASE` using `rake secret` command from the project root folder. If you dont have rails installed, use `head /dev/urandom | tr -dc A-Za-z0-9 | head -c 63 ; echo ''`. -Note: SECRET_KEY_BASE should be alphanumeric. Avoid special characters or symbols. + +SECRET_KEY_BASE should be alphanumeric. Avoid special characters or symbols. + ## Database configuration @@ -98,9 +101,9 @@ sudo apt install -y postfix Choose internet-site when prompted and enter the domain name you used with Chatwoot setup for `System mail name`. -> **Note: ** By default, all major cloud provider have blocked port 25 used for sending emails as part of their spam combat effects. Please raise a -> support ticket with your cloud provider to enable outbound access on port 25 for this to work. Refer [AWS](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle), -> [GCP](https://cloud.google.com/compute/docs/tutorials/sending-mail), [Azure](https://learn.microsoft.com/en-us/azure/virtual-network/troubleshoot-outbound-smtp-connectivity) and [DigitalOcean](https://www.digitalocean.com/blog/smtp-restricted-by-default) for more details. + +By default, all major cloud provider have blocked port 25 used for sending emails as part of their spam combat effects. Please raise a support ticket with your cloud provider to enable outbound access on port 25 for this to work. Refer [AWS](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle), [GCP](https://cloud.google.com/compute/docs/tutorials/sending-mail), [Azure](https://learn.microsoft.com/en-us/azure/virtual-network/troubleshoot-outbound-smtp-connectivity) and [DigitalOcean](https://www.digitalocean.com/blog/smtp-restricted-by-default) for more details. + Also please add MX and PTR records for your domain. If your emails are being flagged by `Gmail` and `Outlook`, setup [SPF and DKIM records](https://www.linuxbabe.com/mail-server/setting-up-dkim-and-spf) for your domain as well. This should improve your email reputation. @@ -116,7 +119,9 @@ SMTP_PASSWORD= ### SendGrid -ℹ️ For clarification, the `SMTP_USERNAME` should be set to the literal text apikey—this is not the actual API key. SendGrid uses 'apikey' as the standard username for its services. + +For clarification, the `SMTP_USERNAME` should be set to the literal text apikey—this is not the actual API key. SendGrid uses 'apikey' as the standard username for its services. + ```bash SMTP_ADDRESS=smtp.sendgrid.net @@ -143,7 +148,10 @@ SMTP_PASSWORD= ### Mandrill If you would like to use Mailchimp to send your emails, use the following environment variables: -Note: Mandrill is the transactional email service for Mailchimp. You need to enable transactional email and login to mandrillapp.com. + + +Mandrill is the transactional email service for Mailchimp. You need to enable transactional email and login to mandrillapp.com. + ```bash SMTP_ADDRESS=smtp.mandrillapp.com @@ -165,7 +173,7 @@ DEFAULT_LOCALE='en' Chatwoot uses [active storage](https://edgeguides.rubyonrails.org/active_storage_overview.html) for storing attachments. The default storage option is the local storage on your server. -But you can change it to use any of the cloud providers like amazon s3, microsoft azure, google gcs etc. Refer [configuring cloud storage](/docs/self-hosted/deployment/storage/supported-providers) for additional environment variables required. +But you can change it to use any of the cloud providers like amazon s3, microsoft azure, google gcs etc. Refer [configuring cloud storage](/self-hosted/deployment/storage/supported-providers) for additional environment variables required. ```bash ACTIVE_STORAGE_SERVICE=local @@ -173,7 +181,9 @@ ACTIVE_STORAGE_SERVICE=local When `local` storage is used the files are stored under `/storage` directory in the chatwoot root folder. -> It is recommended to use a cloud provider for your chatwoot storage to ensure proper backup of the stored attachments and prevent data loss. + +It is recommended to use a cloud provider for your chatwoot storage to ensure proper backup of the stored attachments and prevent data loss. + ## Rails Logging Variables @@ -200,7 +210,7 @@ FB_APP_ID= ## Using CDN for asset delivery -With the release v1.8.0, we are enabling CDN support for Chatwoot. If you have a high traffic website, we recommend to setup a CDN for your asset delivery. Read setting up [CloudFront as your CDN](/docs/self-hosted/deployment/performance/cloudfront-cdn) guide. +With the release v1.8.0, we are enabling CDN support for Chatwoot. If you have a high traffic website, we recommend to setup a CDN for your asset delivery. Read setting up [CloudFront as your CDN](/self-hosted/deployment/performance/cloudfront-cdn) guide. ## Enable new account signup @@ -232,7 +242,9 @@ GOOGLE_OAUTH_CLIENT_SECRET=ABCDEF-GHijklmnoPqrstuvwX-yz1234567 GOOGLE_OAUTH_CALLBACK_URL=https:///omniauth/google_oauth2/callback ``` -**_The callback URL should comply with the format in the example above. This endpoint cannot be changed at the moment._** + +The callback URL should comply with the format in the example above. This endpoint cannot be changed at the moment. + After setting these environment variables, restart your Chatwoot server to apply the changes. Now, users will be able to sign in using their Google accounts. @@ -240,10 +252,10 @@ After setting these environment variables, restart your Chatwoot server to apply To enable LogRocket in Chatwoot, you need to provide the project ID from LogRocket. Here are the steps to follow: -1. Open the LogRocket [website](https://logrocket.com/) and create an account or sign in to your existing account. -2. After signing in, create a new project in LogRocket by clicking on "Create new project". +1. Open the LogRocket [website](https://logrocket.com/) and create an account or sign in to your existing account. +2. After signing in, create a new project in LogRocket by clicking on "Create new project". 3. Enter a name for your project, and save the project ID. -4. Set the `LOG_ROCKET_PROJECT_ID` environment variable in your `.env` file with the project ID you copied from LogRocket. +4. Set the `LOG_ROCKET_PROJECT_ID` environment variable in your `.env` file with the project ID you copied from LogRocket. ```bash LOG_ROCKET_PROJECT_ID=abcd12/pineapple-on-pizza diff --git a/docs/self-hosted/configuration/features/email-channel/azure-app-setup.md b/self-hosted/configuration/features/email-channel/azure-app-setup.mdx similarity index 79% rename from docs/self-hosted/configuration/features/email-channel/azure-app-setup.md rename to self-hosted/configuration/features/email-channel/azure-app-setup.mdx index fc66c0df..a021c9e0 100644 --- a/docs/self-hosted/configuration/features/email-channel/azure-app-setup.md +++ b/self-hosted/configuration/features/email-channel/azure-app-setup.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Outlook & Microsoft 365 Email" -title: "Configure an OAuth app for Outlook & Microsoft 365 emails" +title: Outlook & Microsoft 365 Email +description: Configure an OAuth app for Outlook & Microsoft 365 emails +sidebarTitle: Azure App Setup --- Microsoft no longer permits the use of username and password to retrieve emails from Outlook & Microsoft 365 accounts. They have deprecated the basic auth option. To enable the Outlook/Microsoft 365 email channel in your self-hosted instance, you must configure an OAuth app. @@ -9,17 +10,19 @@ This guide helps you set up an Entra ID App (formerly Azure Active Directory) an ## Register the app -Note: For a more detailed guide on how to set up the Microsoft Identity platform, please refer to the [here](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app). + +For a more detailed guide on how to set up the Microsoft Identity platform, please refer to the [here](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app). + To access the Microsoft Entra Admin Center, go to [entra.microsoft.com](https://entra.microsoft.com/) and log in with your Microsoft account. Once logged in, navigate to the Identity section on the left-hand sidebar. In the Identity section, locate the "Applications" menu and click on "App Registrations" from the submenu. On the "App Registrations" page, click on the "New Registration" option. You will be able to see a page as shown below. -![register-an-app](./images/entra/register-an-app.png) +![register-an-app](/self-hosted/images/entra/register-an-app.png) There are three options for supported account types. Ideally, you only need to select "Accounts in any organizational directory" as Chatwoot is generally used for business emails only. However, if you are connecting a personal account, select the second option. If you are using the applications outside your organization, you would need to register your account as a verified publisher. To configure a redirect URI with the Web platform, use the following URL: `https:///microsoft/callback`. Click on register, and your app will be created. You will see a screen as shown below. -![registration-complete](./images/entra/registration-complete.png) +![registration-complete](/self-hosted/images/entra/registration-complete.png) Save the Application (Client) ID. We will configure this as `AZURE_APP_ID` in Chatwoot later. @@ -33,34 +36,36 @@ Click on the "API Permissions" menu under the "Manage" section. By default, this Click on the "Add permissions" button and add the following permissions from the Delegated permissions menu on Microsoft Graph APIs. -- **email**: To view the user’s email address. +- **email**: To view the user's email address. - **profile**: To view the name and picture etc. - **offline_access**: To retrieve the emails even when you are not using the application. - **SMTP.Send, Mail.Send:** Send emails using the SMTP AUTH when you reply to customers from the Chatwoot dashboard. - **IMAP.AccessAsUser.All, Mail.ReadWrite:** Read and write access to mailboxes via IMAP. - **openid:** Sign users in -![permissions](./images/entra/permissions.png) +![permissions](/self-hosted/images/entra/permissions.png) ### Token Configuration Now, let's proceed to the Token Configuration to set up "optional claims". Optional claims are a feature in Entra ID that enables you to specify additional pieces of information (claims) to include in the security tokens issued to the application. -In Chatwoot, we use optional claims to minimize duplicate calls and retrieve some information in advance. Click on “Add optional claim” and add the following claims to the application. +In Chatwoot, we use optional claims to minimize duplicate calls and retrieve some information in advance. Click on "Add optional claim" and add the following claims to the application. -![optional-claims.png](./images/entra/optional-claims.png) +![optional-claims.png](/self-hosted/images/entra/optional-claims.png) ### Configure Client Secret Go to the Certificates & Secrets section to create a Client Secret. Click on the "New Client Secret" button and provide a description. You can also select an expiry time. -*Remember that you will need to regenerate the secret and update it in the Chatwoot environment variables once it expires.* + +Remember that you will need to regenerate the secret and update it in the Chatwoot environment variables once it expires. + -![add-client-secret](./images/entra/add-client-secret.png) +![add-client-secret](/self-hosted/images/entra/add-client-secret.png) After clicking on the Add button, a client secret will be generated as shown below. -![client-secret-value](./images/entra/client-secret-value.png) +![client-secret-value](/self-hosted/images/entra/client-secret-value.png) Save the value somewhere save as you cannot see it after refreshing the page. This would be used `AZURE_APP_SECRET` in Chatwoot. @@ -73,9 +78,9 @@ After creating the Entra application, you need to configure the application cred After updating the environment variables, restart the Chatwoot service for the changes to take effect. Now, verify if the channel is enabled in the Inbox creation flow. If everything is configured properly, you will see "Microsoft" listed as an email provider in the flow. -![microsoft-channel](./images/entra/microsoft-channel.png) +![microsoft-channel](/self-hosted/images/entra/microsoft-channel.png) -Voila! That’s it you can now receive the emails in your Chatwoot instance. +Voila! That's it you can now receive the emails in your Chatwoot instance. ## Thoughts on multi-tenancy and going for production @@ -85,4 +90,4 @@ To test the changes before the app is verified for production, use the Entra ID Publisher verification provides app users and organization admins with information about the authenticity of the developer's organization that publishes an app integrating with the Microsoft identity platform. If an app has a verified publisher, it means that Microsoft has verified the authenticity of the organization that publishes the app. -Read the publishing guidelines [here](https://learn.microsoft.com/en-us/entra/identity-platform/howto-convert-app-to-be-multi-tenant). +Read the publishing guidelines [here](https://learn.microsoft.com/en-us/entra/identity-platform/howto-convert-app-to-be-multi-tenant). \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.md b/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.mdx similarity index 96% rename from docs/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.md rename to self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.mdx index de864ef8..809a521e 100644 --- a/docs/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.md +++ b/self-hosted/configuration/features/email-channel/conversation-continuity-using-sendgrid.mdx @@ -1,6 +1,7 @@ --- -title: Guide to setting up Conversation Continuity with SendGrid -sidebar_label: Sendgrid +title: SendGrid Guide +description: Guide to setting up Conversation Continuity with SendGrid +sidebarTitle: SendGrid Guide --- This doc will help you set up [Conversation continuity](https://www.chatwoot.com/docs/self-hosted/configuration/features/email-channel/conversation-continuity) with SendGrid. @@ -57,14 +58,12 @@ Then add your **Destination URL**. Your Destination URL should look something li ![Screenshot_102](https://user-images.githubusercontent.com/34171640/128581410-52834258-e826-4c2f-9868-a6c21c9a1ff9.png) -:::important - + Make sure to check "POST the raw, full MIME message". In order to function correctly, Action Mailbox needs the raw MIME message. + ![Screenshot_103](https://user-images.githubusercontent.com/34171640/128581457-ff5e385c-4d7e-4ebb-8f87-28fd5a243798.png) -::: - ## Setting the inbound domain variable in Heroku Finally, we need to tell our Chatwoot installation what domain we're using with SendGrid. @@ -81,4 +80,4 @@ You should change ``support.example.com`` to the domain you used with SendGrid. ## Next steps -You're done! Next, you should [enable the email channel](https://www.chatwoot.com/docs/self-hosted/configuration/features/email-channel/setup). +You're done! Next, you should [enable the email channel](https://www.chatwoot.com/docs/self-hosted/configuration/features/email-channel/setup). \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/email-channel/conversation-continuity.md b/self-hosted/configuration/features/email-channel/conversation-continuity.mdx similarity index 89% rename from docs/self-hosted/configuration/features/email-channel/conversation-continuity.md rename to self-hosted/configuration/features/email-channel/conversation-continuity.mdx index a0443229..4c39f90d 100644 --- a/docs/self-hosted/configuration/features/email-channel/conversation-continuity.md +++ b/self-hosted/configuration/features/email-channel/conversation-continuity.mdx @@ -1,15 +1,18 @@ --- -sidebar_label: "Conversation Continuity" -title: "Configure Conversation Continuity with Email" +title: Conversation Continuity +description: Configure Conversation Continuity with Email +sidebarTitle: Conversation Continuity --- -### Conversation continuity +## Conversation continuity ![101382999-9b0abf00-38de-11eb-845d-1bb1f52306df@2x](https://user-images.githubusercontent.com/73185/109548415-a1ca5c00-7af2-11eb-9b1d-fd636cf5189c.png) -### Configuring inbound reply emails +## Configuring inbound reply emails -*Conversation Continuity requires your chatwoot installation to have a [cloud storage configured](/docs/self-hosted/deployment/storage/supported-providers)* + +Conversation Continuity requires your chatwoot installation to have a [cloud storage configured](/self-hosted/deployment/storage/supported-providers) + There are a couple of email infrastructure service providers to handle the incoming emails that we support at the moment. They are Sendgrid, Mandrill, Mailgun, Exim, Postfix, Qmail and Postmark. @@ -40,13 +43,13 @@ MAILGUN_INGRESS_SIGNING_KEY= MANDRILL_INGRESS_API_KEY= ``` -#### Mailgun +### Mailgun If you are using Mailgun as your email service, in the Mailgun dashboard configure it to forward your inbound emails to `https://example.com/rails/action_mailbox/mailgun/inbound_emails/mime` if `example.com` is where you have hosted the application. -##### Getting Mailgun Ingress Key -![mailgun-ingress-key](./images/mailgun-ingress-key.gif) +#### Getting Mailgun Ingress Key +![mailgun-ingress-key](/self-hosted/images/mailgun-ingress-key.gif) -#### Sendgrid +### Sendgrid Ensure to set up the proper MX records for `your-domain.com` pointed towards Sendgrid @@ -56,14 +59,14 @@ Configure SendGrid Inbound Parse to forward inbound emails to forward your inbou https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/sendgrid/inbound_emails ``` -When configuring your SendGrid Inbound Parse webhook, be sure to check the box labeled “Post the raw, full MIME message.” Action Mailbox needs the raw MIME message to work. +When configuring your SendGrid Inbound Parse webhook, be sure to check the box labeled "Post the raw, full MIME message." Action Mailbox needs the raw MIME message to work. -#### Mandrill +### Mandrill If you are configuring Mandrill as your email service, configure Mandrill to route your inbound emails to `https://example.com/rails/action_mailbox/mandrill/inbound_emails` if `example.com` is where you have hosted the application. If you want to know more about configuring other services visit [Action Mailbox Basics](https://edgeguides.rubyonrails.org/action_mailbox_basics.html#configuration) -#### IMAP via getmail +### IMAP via getmail Chatwoot receives inbound emails through the [Action Mailbox](https://edgeguides.rubyonrails.org/action_mailbox_basics.html) feature of Ruby on Rails. Action Mailbox supports various 'ingresses' by default. They are defined in [here](https://github.com/rails/rails/blob/main/actionmailbox/lib/tasks/ingress.rake) and can be executed through `bin/rails`. For example ```bash cat my_incoming_message | ./bin/rails action_mailbox:ingress:postfix \ @@ -110,7 +113,7 @@ message_log_verbose = true For mail to be imported you'll need to execute `getmail` regularly, for example using a cron job. For `IMAP` you can also run it constantly using `getmail --idle INBOX`, though that will need some care to deal with interrupted connections, etc. -### Configure inbound email domain environment variable +## Configure inbound email domain environment variable Add the following environment variable with the value `your-domain.com`, where `your-domain.com` is the domain for which you set up MX records in the previous step. @@ -118,5 +121,4 @@ Add the following environment variable with the value `your-domain.com`, where ` MAILER_INBOUND_EMAIL_DOMAIN= ``` - After finishing the set up, the mail sent from Chatwoot will have a `replyto:` in the following format `reply+@` and reply to those would get appended to your conversation. diff --git a/docs/self-hosted/configuration/features/email-channel/google-workspace-setup.md b/self-hosted/configuration/features/email-channel/google-workspace-setup.mdx similarity index 81% rename from docs/self-hosted/configuration/features/email-channel/google-workspace-setup.md rename to self-hosted/configuration/features/email-channel/google-workspace-setup.mdx index d31153e7..a5b7347f 100644 --- a/docs/self-hosted/configuration/features/email-channel/google-workspace-setup.md +++ b/self-hosted/configuration/features/email-channel/google-workspace-setup.mdx @@ -1,11 +1,14 @@ --- -sidebar_label: "Google Workspace" -title: "Configure an OAuth app for Gmail" +title: Google Workspace +description: Configure an OAuth app for Gmail +sidebarTitle: Google Workspace --- At present, Gmail integration operates through [less-secure](https://support.google.com/accounts/answer/6010255?hl=en) apps. However, as of June 15, 2024, Google Workspace will [cease to support](https://workspaceupdates.googleblog.com/2023/09/winding-down-google-sync-and-less-secure-apps-support.html) these less-secure apps. This will affect the Gmail integration in Chatwoot. To ensure that your Gmail integration continues to work, you will need to set up an OAuth app in Google Workspace. -> Note: Existing setups will continue to work until September 30, 2024. However, we recommend setting up an OAuth app as soon as possible to avoid any disruptions. + +Existing setups will continue to work until September 30, 2024. However, we recommend setting up an OAuth app as soon as possible to avoid any disruptions. + This guide will walk you through the process of setting up an OAuth app in Google Workspace. @@ -13,7 +16,7 @@ This guide will walk you through the process of setting up an OAuth app in Googl To enable Google OAuth in Chatwoot, you need to provide the client ID, client secret, and callback URL. You can find the instructions to generate these details [here](https://support.google.com/cloud/answer/6158849). Once you have followed these steps, you will be able to get a Client ID and Secret. -![register-an-app](./images/google/oauth-app-setup.png) +![register-an-app](/self-hosted/images/google/oauth-app-setup.png) Use the callback URL `https:///google/callback` when registering the app. This URL is used to redirect the user back to the Chatwoot instance after authentication. @@ -24,7 +27,9 @@ GOOGLE_OAUTH_CLIENT_ID=369777777777-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.google GOOGLE_OAUTH_CLIENT_SECRET=ABCDEF-GHijklmnoPqrstuvwX-yz1234567 ``` -> Note: If you have already setup [Google OAuth login flow](https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables#google-oauth) You can use the same app, by simply adding the new callback URL. **Do not remove the previous callback URL.** + +If you have already setup [Google OAuth login flow](https://www.chatwoot.com/self-hosted/configuration/environment-variables#google-oauth) You can use the same app, by simply adding the new callback URL. **Do not remove the previous callback URL.** + After setting these environment variables, restart your Chatwoot server to apply the changes. Now, users will be able to sign in using their Google accounts. @@ -35,7 +40,7 @@ You will notice that the app you are using is in testing mode; we will cover tha To fetch the emails from the client inbox, you need to configure the correct scopes. The following scopes are required: - `https://mail.google.com/`: To read, send, delete, and manage your email. -- `email`: To view the user’s email address. +- `email`: To view the user's email address. - `profile`: To view the name and picture etc. You can configure the scopes in the Google API Console by following the steps below: @@ -48,7 +53,7 @@ You can configure the scopes in the Google API Console by following the steps be Here's a demo showing how to add the `https://mail.google.com/` scope: -![Demo add scope](./images/google/add-scope-demo.gif) +![Demo add scope](/self-hosted/images/google/add-scope-demo.gif) ## Publishing the app diff --git a/docs/self-hosted/configuration/features/email-channel/setup.md b/self-hosted/configuration/features/email-channel/setup.mdx similarity index 63% rename from docs/self-hosted/configuration/features/email-channel/setup.md rename to self-hosted/configuration/features/email-channel/setup.mdx index 281c29bf..1f6634e8 100644 --- a/docs/self-hosted/configuration/features/email-channel/setup.md +++ b/self-hosted/configuration/features/email-channel/setup.mdx @@ -1,15 +1,18 @@ --- -sidebar_label: "Channel Setup" -title: "Setting up Email Channel" +title: Email Channel Setup +description: Setting up Email Channel in Chatwoot +sidebarTitle: Email Channel Setup --- -### Configure Email Channel +## Configure Email Channel -*Email channels require [conversation continuity configured](/docs/self-hosted/configuration/features/email-channel/conversation-continuity)* + +Email channels require [conversation continuity configured](/self-hosted/configuration/features/email-channel/conversation-continuity) + 1. Enable `channel_email` (Login to rails console and execute the following) -``` +```bash account = Account.find(1) account.enabled_features // This would list enabled features. account.enable_features('channel_email') @@ -17,19 +20,19 @@ account.save! ``` 2. Now head over to inboxes page and create an email inbox with the support email as care@your-domain.com -![mail-channel-step1](./images/mail-channel-step1.png) +![mail-channel-step1](/self-hosted/images/mail-channel-step1.png) 3. Now Add Agents who can have access to the email channel box. 4. Now you will get the email channel box address in the last step. -![mail-channel-step2](./images/mail-channel-step2.png) +![mail-channel-step2](/self-hosted/images/mail-channel-step2.png) 5. Now create a forward rule in your care@your-domain.com inbox to forward emails to the address obtained at inbox creation step. -![set-forwarder-email](./images/set-forwarder-email.png) +![set-forwarder-email](/self-hosted/images/set-forwarder-email.png) 6. You should be able to receive emails in your newly created email inbox in chatwoot. -![mail-channel-box](./images/mail-channel-box.png) +![mail-channel-box](/self-hosted/images/mail-channel-box.png) -#### Sendgrid +### Sendgrid You can send out emails only from a verified email address in SendGrid. For sending emails from wildcard domain, do verification at domain level instead of individual email. -#### Testing On Local +### Testing On Local You can visit `http://localhost:3000/rails/conductor/action_mailbox/inbound_emails/new` to send inbound mails from local to chatwoot inbox. diff --git a/docs/self-hosted/configuration/features/integrations/facebook-channel-setup.md b/self-hosted/configuration/features/integrations/facebook-channel-setup.mdx similarity index 72% rename from docs/self-hosted/configuration/features/integrations/facebook-channel-setup.md rename to self-hosted/configuration/features/integrations/facebook-channel-setup.mdx index 9ef87e94..8fe40d6a 100644 --- a/docs/self-hosted/configuration/features/integrations/facebook-channel-setup.md +++ b/self-hosted/configuration/features/integrations/facebook-channel-setup.mdx @@ -1,39 +1,39 @@ --- -sidebar_label: "Facebook" -title: "Setting Up Facebook" +title: Setting Up Facebook +description: Configure Facebook Messenger integration for Chatwoot +sidebarTitle: Facebook --- - To use Facebook Channel, you have to create a Facebook app in the developer portal. You can find more details about creating Facebook apps [here](https://developers.facebook.com/docs/apps/#register). -### Prerequisites +## Prerequisites 1. A valid facebook account. 2. A valid facebook page. -### Register A Facebook App +## Register A Facebook App 1. Go to [Facebook developer portal](https://developers.facebook.com/apps/) and click on the "Create App" button -![facebook_create_app](./images/facebook/facebook-create-app.png) +![facebook_create_app](/self-hosted/images/facebook/facebook-create-app.png) 2. Select the option "Other". -![facebook_other_app](./images/facebook/facebook_other_app.png) +![facebook_other_app](/self-hosted/images/facebook/facebook_other_app.png) 3. For the app type, choose "Business". -![facebook_business](./images/facebook/facebook_business.png) +![facebook_business](/self-hosted/images/facebook/facebook_business.png) 3. Enter basic details like the app name and email. -![facebook_business_details](./images/facebook/facebook_business_details.png) +![facebook_business_details](/self-hosted/images/facebook/facebook_business_details.png) Once you register your Facebook App, you will have to obtain the `App Id` and `App Secret`. These values will be available in the app settings and will be required while setting up Chatwoot environment variables. -![facebook_app_id](./images/facebook/facebook_app_id.png) +![facebook_app_id](/self-hosted/images/facebook/facebook_app_id.png) -### Configuring the Environment Variables in Chatwoot +## Configuring the Environment Variables in Chatwoot Configure the following Chatwoot environment variables with the values you obtained during the Facebook app setup. The `FB_VERIFY_TOKEN` should be a unique and secure string that you provide when configuring the Facebook app. Generate a random string and set it as the `FB_VERIFY_TOKEN`. Facebook will include this string in all verification requests. @@ -45,37 +45,37 @@ FB_APP_SECRET= FB_APP_ID= ``` -### Configure Facebook Login +## Configure Facebook Login 1. Add the Facebook Login product via the Facebook app dashboard. -![facebook_app_login](./images/facebook/facebook_app_login.png) +![facebook_app_login](/self-hosted/images/facebook/facebook_app_login.png) 2. Enable `Web OAuth Login`, `Login with Javascript SDK` and add your self-hosted domain to the `Allowed Domains for the JavaScript SDK` input. -![facebook_sdk_login](./images/facebook/facebook_sdk_login.png) +![facebook_sdk_login](/self-hosted/images/facebook/facebook_sdk_login.png) -### Configure the Facebook App +## Configure the Facebook App 1. In the app settings, add your `Chatwoot installation domain` as your app domain. -![facebook_app_domain](./images/facebook/facebook_app_domain.png) +![facebook_app_domain](/self-hosted/images/facebook/facebook_app_domain.png) 2. In the products section in your app settings page, Add "Messenger" -![facebook_messenger_product](./images/facebook/facebook_messenger_product.png) +![facebook_messenger_product](/self-hosted/images/facebook/facebook_messenger_product.png) 3. Go to the Messenger settings and configure the call back URL -![Alt text](./images/facebook/facebook_messenger_section.png) +![Alt text](/self-hosted/images/facebook/facebook_messenger_section.png) 4. Provide the Callback URL as `{your_chatwoot_installation_url}/bot` and the Verify token as `FB_VERIFY_TOKEN` from your environment variable. -![facebook_callback_url](./images/facebook/facebook_callback_url.png) +![facebook_callback_url](/self-hosted/images/facebook/facebook_callback_url.png) 5. Head over to Chatwoot and create a Messenger inbox. Choose a page for which your Facebook developer account has admin access to. Please refer to this [guide](https://www.chatwoot.com/hc/user-guide/articles/1677778588-how-to-setup-a-facebook-channel) for more details on creating a Messenger inbox in Chatwoot. -### Testing the Facebook channel +## Testing the Facebook channel Until the application is approved for production, Facebook wouldn't send the new messages on your page to Chatwoot. @@ -83,15 +83,15 @@ To test the changes until the app is approved for production. Follow the steps 1. Head over to the messenger section in your app settings page, in Facebook developers. -![facebook_messenger_settings](./images/facebook/facebook_messenger_settings.png) +![facebook_messenger_settings](/self-hosted/images/facebook/facebook_messenger_settings.png) 2. Click `Add or remove pages` and connect the page which you choose while creating the Chatwoot Messenger inbox. -![facebook_callback_pages](./images/facebook/facebook_callback_pages.png) +![facebook_callback_pages](/self-hosted/images/facebook/facebook_callback_pages.png) 3. After connecting the pages, Click on `Add subscriptions` from the connected page. -![facebook_page_config](./images/facebook/facebook_page_config.png) +![facebook_page_config](/self-hosted/images/facebook/facebook_page_config.png) 4. Subscribe to the following fields and save the subscription. @@ -103,11 +103,11 @@ message_reads message_echoes ``` -![facebook_page_subscription](./images/facebook/facebook_page_subscription.png) +![facebook_page_subscription](/self-hosted/images/facebook/facebook_page_subscription.png) 4. Send a message to the connected page from your Facebook account and it should appear in Chatwoot now. -### Going into production. +## Going into production. Before you can start using your Facebook app in production, you will have to get it verified by Facebook. Refer to the [docs](https://developers.facebook.com/docs/apps/review/) on getting your app verified. @@ -118,13 +118,15 @@ pages_messaging (To message on behalf of the page) pages_show_list (To list the pages to be connected in chatwoot) pages_manage_metadata (Subscribe webhooks on behalf of the page) business_management -pages_read_engagement ( Read followers data (including name, PSID), and profile ) +pages_read_engagement (Read followers data (including name, PSID), and profile ) Business Asset User Profile Access (For accessing user profile picture and name of people who contacts the page) ``` + Make sure your facebook app subscription version is 17.0, we have updated the FB subscription with the latest version, so change the permission subscription version under the facebook app webhooks option. + -### Developing or Testing Facebook Integration in your machine +## Developing or Testing Facebook Integration in your machine Install [ngrok](https://ngrok.com/docs) on your machine. This will be required since Facebook Messenger API's will only communicate via https. @@ -150,13 +152,13 @@ Update verify token in your Chatwoot environment variables. You will also have to add a Facebook page to your `Access Tokens` section in your Messenger settings page. Restart the Chatwoot local server. Your Chatwoot setup will be ready to receive Facebook messages. -### Facebook API version +## Facebook API version We support facebook API version v13.0 going forward, which you can update in the facebook app advanced settings. -![fb_api_version](./images/facebook/fb_api_version.png) +![fb_api_version](/self-hosted/images/facebook/fb_api_version.png) -### Test your local Setup +## Test your local Setup 1. After finishing the set-up above, [create a Facebook inbox](https://www.chatwoot.com/hc/user-guide/articles/1677778588-how-to-setup-a-facebook-channel) after logging in to your Chatwoot Installation. 2. Send a message to your page from Facebook. -3. Wait and confirm incoming requests to `/bot` endpoint in your ngrok screen. +3. Wait and confirm incoming requests to `/bot` endpoint in your ngrok screen. \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/integrations/instagram-channel-setup.md b/self-hosted/configuration/features/integrations/instagram-channel-setup.mdx similarity index 58% rename from docs/self-hosted/configuration/features/integrations/instagram-channel-setup.md rename to self-hosted/configuration/features/integrations/instagram-channel-setup.mdx index 5ad50126..8fb5414f 100644 --- a/docs/self-hosted/configuration/features/integrations/instagram-channel-setup.md +++ b/self-hosted/configuration/features/integrations/instagram-channel-setup.mdx @@ -1,50 +1,44 @@ --- -sidebar_label: "Instagram via Facebook Login" -title: "Instagram via Facebook Login" +title: Instagram via Facebook Login +description: Set up Instagram integration using Facebook Login authentication +sidebarTitle: Instagram via Facebook Login --- + +We recommend Instagram Business Login as the preferred authentication method, as it provides simpler configuration and a better developer experience. Please refer to this [guide](./instagram-via-instagram-business-login) for more details. We will be stopping the support for Instagram via Facebook Login in the future from v4.1 onwards. + - -> **Note**: We recommend Instagram Business Login as the preferred authentication method, as it provides simpler configuration and a better developer experience. Please refer to this [guide](./instagram-via-instagram-business-login.md) for more details. We will be stopping the support for Instagram via Facebook Login in the future from v4.1 onwards. - - - +## Prerequisites 1. A valid facebook account. 2. A valid facebook page. 3. A valid instagram professional account. +## Register A Facebook App -### Register A Facebook App - -To use Instagram Channel, you have to create a Facebook app in the developer portal. You can find more details about creating Facebook developer app [here](./facebook-channel-setup.md). - +To use Instagram Channel, you have to create a Facebook app in the developer portal. You can find more details about creating Facebook developer app [here](./facebook-channel-setup). 1. Click on the "Create App" button -![facebook_create_app](./images/facebook/facebook-create-app.png) +![facebook_create_app](/self-hosted/images/facebook/facebook-create-app.png) 2. Select the option "Other". - -![facebook_other_app](./images/facebook/facebook_other_app.png) +![facebook_other_app](/self-hosted/images/facebook/facebook_other_app.png) 3. For the app type, choose "Business" -![facebook_business](./images/facebook/facebook_business.png) +![facebook_business](/self-hosted/images/facebook/facebook_business.png) 3. Enter basic details like the app name and email. -![facebook_business_details](./images/facebook/facebook_business_details.png) +![facebook_business_details](/self-hosted/images/facebook/facebook_business_details.png) Once you register your Facebook App, you will have to obtain the `App Id` and `App Secret`. These values will be available in the app settings and will be required while setting up Chatwoot environment variables. +![facebook_app_id](/self-hosted/images/facebook/facebook_app_id.png) -![facebook_app_id](./images/facebook/facebook_app_id.png) - - - -### Configuring the Environment Variables in Chatwoot +## Configuring the Environment Variables in Chatwoot Configure the following Chatwoot environment variables with the values you obtained during the Facebook app setup. The `IG_VERIFY_TOKEN` should be a unique and secure string that you provide when configuring the Instagram app. @@ -56,102 +50,100 @@ FB_APP_SECRET= FB_APP_ID= ``` -### Configure the Facebook App +## Configure the Facebook App 1. In the app settings, add your "Chatwoot installation domain" as your app domain. -![facebook_app_domain](./images/facebook/facebook_app_domain.png) +![facebook_app_domain](/self-hosted/images/facebook/facebook_app_domain.png) 2. Add the "Instagram Graph API" product via the Facebook app dashboard. -![instagram_product](./images/instagram/instagram_product.png) +![instagram_product](/self-hosted/images/instagram/instagram_product.png) 3. Go to the app settings and select "Webhooks". From there, choose Instagram and click on the "Subscribe to this object" button. -![instagram_webhooks](./images/instagram/instagram_webhooks.png) +![instagram_webhooks](/self-hosted/images/instagram/instagram_webhooks.png) 4. Provide the Callback URL as `{your_Chatwoot_installation_url}/webhooks/instagram` and the Verify token as `IG_VERIFY_TOKEN` from your environment variable. -![instagram_webhook_url](./images/instagram/instagram_webhook_url.png) +![instagram_webhook_url](/self-hosted/images/instagram/instagram_webhook_url.png) -### Connect the facebook page with instagram account +## Connect the facebook page with instagram account 1. Go to [Facebook pages](https://www.facebook.com/pages/?category=your_pages) and select your page and open the settings -![facebook_page_settings](./images/instagram/facebook_page_settings.png) +![facebook_page_settings](/self-hosted/images/instagram/facebook_page_settings.png) 2. Go to "Linked accounts" and connect your instagram professional account. -![facebook_connect_instagram](./images/instagram/facebook_connect_instagram.png) +![facebook_connect_instagram](/self-hosted/images/instagram/facebook_connect_instagram.png) 3. Select the option "Business" -![instagram_connect_facebook](./images/instagram/instagram_connect_facebook.png) +![instagram_connect_facebook](/self-hosted/images/instagram/instagram_connect_facebook.png) 4. Select the instgram account category -![select_category_instagram](./images/instagram/select_category_instagram.png) +![select_category_instagram](/self-hosted/images/instagram/select_category_instagram.png) -5. If everything is okay, you will see the message "Instagram connected.” +5. If everything is okay, you will see the message "Instagram connected." -![instagram_connect_success](./images/instagram/instagram_connect_success.png) +![instagram_connect_success](/self-hosted/images/instagram/instagram_connect_success.png) +## Create Instagram Inbox in Chatwoot -1. Head over to Chatwoot and create a Messenger inbox. Please refer to this [guide](https://www.chatwoot.com/hc/user-guide/articles/1677829420-how-to-setup-an-instagram-channel) for more details on creating a Messenger inbox in Chatwoot. +1. Head over to Chatwoot and create a Messenger inbox. Please refer to this [guide](https://www.chatwoot.com/hc/user-guide/articles/1677829420-how-to-setup-an-instagram-channel) for more details on creating a Messenger inbox in Chatwoot. So whenever you receive any message on Instagram, it will redirect to your Facebook page. -### Testing the Instagram channel +## Testing the Instagram channel Until the application is approved for production, Facebook wouldn't send the new messages on your instagram to Chatwoot. To test the changes until the app is approved for production. Follow the steps 1. Create a Test app for your app. -![facebook_instagram_test](./images/instagram/facebook_instagram_test.png) +![facebook_instagram_test](/self-hosted/images/instagram/facebook_instagram_test.png) 2. Add the `Instagram Graph API` product via the Facebook app dashboard. -![instagram_product](./images/instagram/instagram_product.png) +![instagram_product](/self-hosted/images/instagram/instagram_product.png) 3. Go to the app settings and select "Webhooks". From there, choose Instagram and click on the "Subscribe to this object" button. -![instagram_webhooks](./images/instagram/instagram_webhooks.png) +![instagram_webhooks](/self-hosted/images/instagram/instagram_webhooks.png) 4. Provide the Callback URL as `{your_chatwoot_installation_url}/webhooks/instagram` and the Verify token as `IG_VERIFY_TOKEN` from your environment variable. -![instagram_webhook_url](./images/instagram/instagram_webhook_url.png) +![instagram_webhook_url](/self-hosted/images/instagram/instagram_webhook_url.png) 5. Open the test app and add extra product for the test app: Instagram Basic Display -![instagram_basic_display](./images/instagram/instagram_basic_display.png) - +![instagram_basic_display](/self-hosted/images/instagram/instagram_basic_display.png) 6. In the app settings, add the platform "Website" and give `Site URL` as your installation URL. -![instagram_app_platform](./images/instagram/instagram_app_platform.png) - +![instagram_app_platform](/self-hosted/images/instagram/instagram_app_platform.png) 7. Head over to the Instagram Basic Display section and create a new app. -![instagram_basic_display_settings](./images/instagram/instagram_basic_display_settings.png) - +![instagram_basic_display_settings](/self-hosted/images/instagram/instagram_basic_display_settings.png) 8. Add Instagram Testers by clicking "Add or Remove Instagram Testers" button. -![instagram_testers](./images/instagram/instagram_testers.png) +![instagram_testers](/self-hosted/images/instagram/instagram_testers.png) 9. Make sure that you have selected the role `Instagram Tester` while creating a new tester. -![instagram_tester_list](./images/instagram/instagram_tester_list.png) - +![instagram_tester_list](/self-hosted/images/instagram/instagram_tester_list.png) 10. Click on Edit subscriptions under Webhook > Instagram and subscribe to the following, - ``` message_reactions messages messaging_seen ``` -![instagram_subscription](./images/instagram/instagram_subscription.png) +![instagram_subscription](/self-hosted/images/instagram/instagram_subscription.png) -Note: You should do this step for both normal and test apps. + +You should do this step for both normal and test apps. + -1. Head over to Chatwoot and create a Messenger inbox. Please refer to this [guide](https://www.chatwoot.com/hc/user-guide/articles/1677829420-how-to-setup-an-instagram-channel) for more details on creating a Messenger inbox in Chatwoot. -. Send a message to the connected Instagram account from Instagram Testers, and it should appear in Chatwoot now +1. Head over to Chatwoot and create a Messenger inbox. Please refer to this [guide](https://www.chatwoot.com/hc/user-guide/articles/1677829420-how-to-setup-an-instagram-channel) for more details on creating a Messenger inbox in Chatwoot. +2. Send a message to the connected Instagram account from Instagram Testers, and it should appear in Chatwoot now -### Going into production. +## Going into production. Before you can start using your Facebook app in production, you will have to get it verified by Facebook. Refer to the [docs](https://developers.facebook.com/docs/messenger-platform/instagram/app-review) on getting your app verified. @@ -159,18 +151,20 @@ Obtain advanced access to the required permissions mentioned below for your Face ``` instagram_manage_messages instagram_basic -pages_show_list -pages_manage_metadata -pages_messaging -business_management +pages_show_list (To list the pages to be connected in chatwoot) +pages_manage_metadata (Subscribe webhooks on behalf of the page) +pages_messaging (To message on behalf of the page) +business_management (For accessing user profile picture and name of people who contacts the page) ``` -> **Note**: If your facebook app's version is more than 7.0 then you will need extra permission according to facebook's updated policy. Make sure you get permission for. + +If your facebook app's version is more than 7.0 then you will need extra permission according to facebook's updated policy. Make sure you get permission for. ``` pages_read_engagement ``` + -### Developing or Testing Facebook Integration in your machine +## Developing or Testing Facebook Integration in your machine Install [ngrok](https://ngrok.com/docs) on your machine. This will be required since Facebook Messenger APIs will only communicate via https. @@ -196,19 +190,20 @@ Update verify token in your Chatwoot environment variables. You will also have to add a Facebook page to your `Access Tokens` section in your Messenger settings page. Restart the Chatwoot local server. Then, your Chatwoot setup will be ready to receive Facebook messages. -### Test your local Setup +## Test your local Setup 1. After finishing the setup above, [create a Messenger inbox](https://www.chatwoot.com/hc/user-guide/articles/1677778588-how-to-setup-a-facebook-channel) after logging in to your Chatwoot Installation. 2. Send a message to your Facebook Page from your Instagram account. 3. Wait and confirm incoming requests to `/webhooks/instagram` endpoint in your ngrok screen. 4. You can also verify your callback URL by clicking on Test for the subscribed Instagram fields. Go to webhook Instagram and click on Test with `v11.0` -![subscribe](./images/instagram/subscribe.png) - +![subscribe](/self-hosted/images/instagram/subscribe.png) -> **Note**: You can have only one app connected to the Chatwoot for Instagram and Facebook combined as the Messenger platform is common. But suppose you want to have separate channels for Instagram and Facebook. In that case, you can have multiple Facebook pages inside your app that would be connected to Facebook users and Instagram users separately and then connected to the different inbox in the Chatwoot page. + +You can have only one app connected to the Chatwoot for Instagram and Facebook combined as the Messenger platform is common. But suppose you want to have separate channels for Instagram and Facebook. In that case, you can have multiple Facebook pages inside your app that would be connected to Facebook users and Instagram users separately and then connected to the different inbox in the Chatwoot page. + -### Checklist +## Checklist 1. Integrate the Facebook test app and Send a message from the Instagram tester to the connected account. 2. Make sure your Instagram account is a business account. @@ -221,4 +216,4 @@ Go to webhook Instagram and click on Test with `v11.0` - When your app gets rejected, open the rejected submission. You can see the messenger icon in the bottom right corner to support you with your rejected review. - You can talk to the support team and ask your questions about the submission and the reason for the rejection. 6. If your test app passed the review, it's good to go into production. -7. If you face an issue on production that you cannot receive the messages, then reach out to us with the error logs. +7. If you face an issue on production that you cannot receive the messages, then reach out to us with the error logs. \ No newline at end of file diff --git a/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.mdx b/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.mdx new file mode 100644 index 00000000..32bd7a40 --- /dev/null +++ b/self-hosted/configuration/features/integrations/instagram-via-instagram-business-login.mdx @@ -0,0 +1,110 @@ +--- +title: Instagram via Instagram Business Login +description: Set up Instagram integration using Instagram Business Login authentication (recommended method) +sidebarTitle: Instagram via Instagram Business Login +--- + + +Please ensure you have installed version v4.1 or above. If not, please refer to this [guide](./instagram-channel-setup) for the Facebook Login method. + + +## Prerequisites + +1. A valid facebook account. +2. A valid instagram professional account. + +## Register A Facebook App + +To use Instagram Channel, you have to create a Facebook app in the developer portal. You can find more details about creating Facebook apps [here](./facebook-channel-setup). + +1. Click on the "Create App" button + +![facebook_create_app](/self-hosted/images/facebook/facebook-create-app.png) + +2. Select the option "Other". + +![facebook_other_app](/self-hosted/images/facebook/facebook_other_app.png) + +3. For the app type, choose "Business" + +![facebook_business](/self-hosted/images/facebook/facebook_business.png) + +4. Add app name and connect business account + +![facebook_business_details](/self-hosted/images/facebook/facebook_business_details.png) + +5. Add Instagram product from the Home page. + +![instagram_product](/self-hosted/images/instagram/instagram_product.png) + +## Configure Instagram settings for Chatwoot + +1. Copy Instagram app ID and Instagram app secret + +![instagram_app_id](/self-hosted/images/instagram/instagram_app_id.png) + +2. Add the Instagram app ID and Instagram app secret to your app config via `{Chatwoot installation url}/super_admin/app_config?config=instagram` + +![instagram_app_config](/self-hosted/images/instagram/instagram_app_config.png) + +3. Configure Webhooks + +Set the callback URL to `{your_chatwoot_url}/webhooks/instagram`. The verify token should match your `INSTAGRAM_VERIFY_TOKEN`, which can be configured through `app_config` + +![instagram_webhooks](/self-hosted/images/instagram/instagram_webhook.png) + +Subscribe to `messages`, `messaging_seen`, and `message_reactions` events. + +![instagram_webhooks_subscribe](/self-hosted/images/instagram/instagram_webhooks_subscribe.png) + + +To receive web hooks, app mode should be set to "Live". + + +4. Set up Instagram business login + +Set Redirect URL as `{your_chatwoot_url}/instagram/callback` + +![instagram_business_login](/self-hosted/images/instagram/instagram_business_login.png) + +5. Create a new Instagram tester account + +## Create Instagram Inbox + +Head over to Chatwoot and create a Instagram inbox. Please refer to this [guide](https://chatwoot.help/hc/user-guide/articles/1744361165-how-to-setup-an-instagram-channel-via-instagram-login) for more details on creating a Instagram inbox in Chatwoot. + +## How to test the Instagram before going to live + +1. Add Instagram Testers by clicking "Add People" button. + +![facebook_instagram_test](/self-hosted/images/instagram/instagram-testers-list.png) + +2. Make sure that you have selected the role Instagram Tester while creating a new tester. + +![instagram_tester_list](/self-hosted/images/instagram/instagram-add-tester.png) + +## Going into production. + +Before you can start using your Facebook app in production, you will have to get it verified by Facebook. Refer to the [docs](https://developers.facebook.com/docs/messenger-platform/instagram/app-review) on getting your app verified. + +## Troubleshooting & Common Errors + +### Insufficient Developer Role Error + +Ensure the Instagram user is added as a developer: `Meta Dashboard → App Roles → Roles → Add People → Enter Instagram ID` + +### API Access Deactivated + +Ensure the **Privacy Policy URL** is valid and correctly set. + +### Invalid request: Request parameters are invalid: Invalid redirect_uri + +Please configure the Frontend URL. The Frontend URL does not match the authorization URL. + +### Instagram Channel creation Error: Failed to exchange token + +Please make sure that tester account has been added to the facebook app settings. + +### 400: Session Invalid when connecting the instagram channel + +This might be issue from facebook side. Please try again after some time. \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/integrations/linear-integration-setup.md b/self-hosted/configuration/features/integrations/linear-integration-setup.mdx similarity index 80% rename from docs/self-hosted/configuration/features/integrations/linear-integration-setup.md rename to self-hosted/configuration/features/integrations/linear-integration-setup.mdx index 0730bdd7..3728387e 100644 --- a/docs/self-hosted/configuration/features/integrations/linear-integration-setup.md +++ b/self-hosted/configuration/features/integrations/linear-integration-setup.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Linear" -title: "Setting Up Linear Integration" +title: Setting Up Linear Integration +description: Configure Linear integration to track issues and features from Chatwoot +sidebarTitle: Linear --- Setting up Chatwoot Linear integration involves 5 steps. @@ -11,7 +12,6 @@ Setting up Chatwoot Linear integration involves 5 steps. 4. Open Chatwoot UI, navigate to integrations, select Linear, and click connect. 5. Voila! You should now be able to use Linear in your Chatwoot account. - ## Register and configure the Linear app To use Linear Integration, you need to create a Linear app in the developer portal. You can find more details about creating Linear apps at the [Linear developer portal](https://developers.linear.app/docs/oauth/authentication). @@ -21,10 +21,7 @@ To use Linear Integration, you need to create a Linear app in the developer port 3. The callback URL should be `{Chatwoot installation url}/linear/callback`. 4. Toggle the `Public` switch to make the app public. - - -![linear_app_domain](./images/linear/create-app.png) - +![linear_app_domain](/self-hosted/images/linear/create-app.png) ## Configure Linear app config @@ -37,8 +34,10 @@ LINEAR_SIGNING_SECRET= Restart the Chatwoot server. -> **Note**: Linear will only show up in the integrations section once you have configured these values and restarted the server. + +Linear will only show up in the integrations section once you have configured these values and restarted the server. + ## Connect Chatwoot with your Linear account -Follow this [guide](https://chatwoot.help/hc/user-guide/articles/1739949089-how-to-track-issues-and-features-with-linear-integration) to complete the Linear integration. \ No newline at end of file +Follow this [guide](https://chatwoot.help/hc/user-guide/articles/1739949089-how-to-track-issues-and-features-with-linear-integration) to complete the Linear integration. \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/integrations/shopify-integration-setup.md b/self-hosted/configuration/features/integrations/shopify-integration-setup.mdx similarity index 71% rename from docs/self-hosted/configuration/features/integrations/shopify-integration-setup.md rename to self-hosted/configuration/features/integrations/shopify-integration-setup.mdx index fa8a1a8d..cdca685f 100644 --- a/docs/self-hosted/configuration/features/integrations/shopify-integration-setup.md +++ b/self-hosted/configuration/features/integrations/shopify-integration-setup.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Shopify" -title: "Setting Up Shopify Integration" +title: Setting Up Shopify Integration +description: Configure Shopify integration to track orders and customer information from Chatwoot +sidebarTitle: Shopify --- Setting up Chatwoot Shopify integration involves 5 steps. @@ -11,26 +12,26 @@ Setting up Chatwoot Shopify integration involves 5 steps. 4. Open Chatwoot UI, navigate to integrations, select Shopify, and click connect. 5. Voila! You should now be able to use Shopify in your Chatwoot account. - ## Register and configure the Shopify app To use Shopify Integration, you need to create a Shopify app in the [shopify partner dashboard](https://partners.shopify.com/). You can find more details about creating Shopify apps at the [Shopify developer portal](https://shopify.dev/docs/apps/build). 1. Create a Shopify app. -![shopify_app_create](./images/shopify/create-app.png) +![shopify_app_create](/self-hosted/images/shopify/create-app.png) 2. Obtain the `Client ID` and `Client Secret` for the app and configure it in your app config via `{Chatwoot installation url}/super_admin/app_config?config=shopify` -![shopify_app_domain](./images/shopify/configure-app.png) +![shopify_app_domain](/self-hosted/images/shopify/configure-app.png) 3. Configure the redirect URL as `{Chatwoot installation url}/shopify/callback` in app configuration. -![shopify_app_redirect](./images/shopify/callback.png) - +![shopify_app_redirect](/self-hosted/images/shopify/callback.png) -> **Note**: Shopify will only show up in the integrations section once you have configured these values. + +Shopify will only show up in the integrations section once you have configured these values. + ## Connect Chatwoot with your Shopify account -Follow this [guide](https://chatwoot.help/hc/user-guide/articles/1742395545-how-to-track-orders-with-shopify-integration) to complete the Shopify integration. \ No newline at end of file +Follow this [guide](https://chatwoot.help/hc/user-guide/articles/1742395545-how-to-track-orders-with-shopify-integration) to complete the Shopify integration. \ No newline at end of file diff --git a/docs/self-hosted/configuration/features/integrations/slack-integration-setup.md b/self-hosted/configuration/features/integrations/slack-integration-setup.mdx similarity index 84% rename from docs/self-hosted/configuration/features/integrations/slack-integration-setup.md rename to self-hosted/configuration/features/integrations/slack-integration-setup.mdx index 772c18a7..55ffaea0 100644 --- a/docs/self-hosted/configuration/features/integrations/slack-integration-setup.md +++ b/self-hosted/configuration/features/integrations/slack-integration-setup.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Slack" -title: "Setting Up Slack Integration" +title: Setting Up Slack Integration +description: Configure Slack integration to receive Chatwoot conversations in Slack channels +sidebarTitle: Slack --- Setting up Chatwoot Slack integration involves 5 steps. @@ -20,7 +21,7 @@ Once you register your Slack App, you will have to obtain the `Client Id` and `C ## Configure the Slack app 1. Create a Slack app and add it to your development workspace. -2. Obtain the `Client Id` and `Client Secret` for the app and configure it in your Chatwoot [environment variables](/docs/self-hosted/configuration/environment-variables). +2. Obtain the `Client Id` and `Client Secret` for the app and configure it in your Chatwoot [environment variables](/self-hosted/configuration/environment-variables). 3. Head over to the `OAuth & permissions` section under `features` tab. 4. In the redirect URLs, Add your Chatwoot installation base URL. 5. In the scopes section configure the given scopes for bot token scopes: @@ -50,10 +51,9 @@ Once you register your Slack App, you will have to obtain the `Client Id` and `C 11. Add the installation URL as `domain` under the `App unfurl domains section` to display meta information about the conversation when the conversation URL is shared. 12. Connect Slack integration on Chatwoot app and get productive. - ## Configure the environment variables in Chatwoot -Obtain the `Client ID` and `Client Secret` for the app and configure it in your Chatwoot [environment variables](/docs/self-hosted/configuration/environment-variables).These values will be available under `Settings` > `Basic Information`. +Obtain the `Client ID` and `Client Secret` for the app and configure it in your Chatwoot [environment variables](/self-hosted/configuration/environment-variables).These values will be available under `Settings` > `Basic Information`. ```bash SLACK_CLIENT_ID= @@ -62,8 +62,9 @@ SLACK_CLIENT_SECRET= Restart the Chatwoot server. - -> **Note**: Slack will only show up in the integrations section once you have configured these values and restarted the server. + +Slack will only show up in the integrations section once you have configured these values and restarted the server. + ## Connect Chatwoot with your Slack workspace diff --git a/docs/self-hosted/configuration/help-center.md b/self-hosted/configuration/help-center.mdx similarity index 91% rename from docs/self-hosted/configuration/help-center.md rename to self-hosted/configuration/help-center.mdx index dd0bae97..432ae3c6 100644 --- a/docs/self-hosted/configuration/help-center.md +++ b/self-hosted/configuration/help-center.mdx @@ -1,5 +1,7 @@ --- -title: "Help Center" +title: Help Center +description: Set up a public-facing help center portal with custom domain and SSL certificate +sidebarTitle: Help Center --- Help center allows you to create a portal and add articles from the chatwoot app dashboard. You can point to these help center portal articles from your main site and display them as your public-facing help center. @@ -21,7 +23,7 @@ Follow these step to create your Portal. Refer to [this guide.](https://www.chat 1. Use certbot to generate SSL certificates for your custom domain. -``` +```bash certbot certonly --agree-tos --nginx -d "docs.example.com" ``` @@ -29,7 +31,7 @@ certbot certonly --agree-tos --nginx -d "docs.example.com" 3. Restart nginx server. -``` +```bash sudo systemctl restart nginx ``` @@ -37,7 +39,6 @@ Voila! `docs.yourdomain.com` is live with a secure connection, and your portal data is visible. - ### How does this work? These are the engineering details to understand `How does docs.yourdomain.com` gets the portal data with SSL certificate. @@ -48,4 +49,4 @@ These are the engineering details to understand `How does docs.yourdomain.com` g Yaay!! -Now you can have your own help-center, product-documentation related portal saved at Chatwoot dashboard and served at your domain with SSL certificate. +Now you can have your own help-center, product-documentation related portal saved at Chatwoot dashboard and served at your domain with SSL certificate. \ No newline at end of file diff --git a/self-hosted/deployment/architecture.mdx b/self-hosted/deployment/architecture.mdx new file mode 100644 index 00000000..f7918ebe --- /dev/null +++ b/self-hosted/deployment/architecture.mdx @@ -0,0 +1,52 @@ +--- +title: Chatwoot Production Deployment Guide +description: Understanding Chatwoot's production architecture and deployment requirements +sidebarTitle: Architecture +--- + +This guide will help you to deploy Chatwoot to production! + +## Architecture + +Running Chatwoot in production requires the following set of services. + +* Chatwoot web servers +* Chatwoot workers +* PostgreSQL Database +* Redis Database +* Email service (SMTP servers / SendGrid / Mailgun etc) +* Object Storage (S3, Azure Storage, GCS, etc) + +![architecture](/self-hosted/images/architecture.png) + +## Updating your Chatwoot installation + +A new version of Chatwoot is released around the first Monday of every month. We also release minor versions when there is a need for hotfixes or security updates. + +You can stay tuned to our [Roadmap](https://github.com/chatwoot/chatwoot/milestones) and [releases](https://github.com/chatwoot/chatwoot/releases) on GitHub. We recommend you to stay up to date with our releases to enjoy the latest features and security updates. + +The deployment process for a newer version involves updating your app servers and workers with the latest code. Most updates would involve database migrations as well which can be executed through the following Rails command. + +```bash +bundle exec rails db:migrate +``` + +The detailed instructions can be found in respective deployment guides. + +## Available deployment options + +If you want to self host Chatwoot, the recommended approach is to use one of the recommended one click installation options from the below list. If you are comfortable with Ruby on Rails applications, you can also make use of the other deployment options mentioned below. + +* **[Heroku](/self-hosted/deployment/heroku)** (recommended) +* **[Docker](/self-hosted/deployment/docker)** (recommended) +* **[Linux](/self-hosted/deployment/linux-vm)** +* **[Kubernetes](/self-hosted/deployment/helm-chart)** +* **[Chatwoot CTL](/self-hosted/deployment/chatwoot-ctl)** + +### Cloud Providers + +* **[AWS](/self-hosted/deployment/aws)** +* **[Azure](/self-hosted/deployment/azure)** +* **[DigitalOcean](/self-hosted/deployment/digitalocean)** +* **[Google Cloud](/self-hosted/deployment/gcp)** +* **[Heroku](/self-hosted/deployment/heroku)** diff --git a/self-hosted/deployment/aws-marketplace.mdx b/self-hosted/deployment/aws-marketplace.mdx new file mode 100644 index 00000000..90680872 --- /dev/null +++ b/self-hosted/deployment/aws-marketplace.mdx @@ -0,0 +1,170 @@ +--- +title: AWS Marketplace AMI Deployment +description: Deploy Chatwoot on AWS using the marketplace AMI listing +sidebarTitle: AWS Marketplace +--- + +# AWS Chatwoot Deployment Guide + +The following is the guide for deploying Chatwoot on AWS using the marketplace listing. Use our helm charts with AWS Elastic Kubernetes Service(EKS) for a cloud-native deployment. + +## Prerequisites +- AWS account + +## Install Chatwoot via AWS Marketplace AMI + +### Step 1: Subscribe to Chatwoot + +1. Go to [Chatwoot AWS marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-tolblk4kmdqd4) and click on **Subscribe**. + +![Subscribe to Chatwoot](/self-hosted/images/aws-ami/awsmp-01-subscribe.png) + +### Step 2: Sign In + +2. Sign in with your AWS account. + +![AWS Sign In](/self-hosted/images/aws-ami/awsmp-02-signin.png) + +### Step 3: Continue to Configuration + +3. Click on **Continue to Configuration**. + +![Continue to Configuration](/self-hosted/images/aws-ami/awsmp-03-continue.png) + +### Step 4: Configure Software + +4. Select the latest version in **Software Version** and pick your AWS **region**. Click **Continue to Launch**. + +![Configure Software](/self-hosted/images/aws-ami/awsmp-04-configure.png) + +### Step 5: Launch Configuration + +5. Review the launch configuration. Leave the **Choose Action** field with the default value **Launch from Website**. Choose a VPC and subnet as per your AWS region preference. + +![Launch Configuration](/self-hosted/images/aws-ami/awsmp-05-launch.png) + +### Step 6: Create Security Group + +6. Scroll down to the **Security Group** section and click **Create New Based On Seller Settings**. + +![Create Security Group](/self-hosted/images/aws-ami/awsmp-06-sg.png) + +### Step 7: Save Security Group + +7. Save the new security group and choose it after creation. + +![Save Security Group](/self-hosted/images/aws-ami/awsmp-07-sg.png) + +### Step 8: Configure Key Pair + +8. Pick a key pair you already have or create a new one in the region you are deploying. Click **Launch**. + +![Configure Key Pair](/self-hosted/images/aws-ami/awsmp-08-keypair.png) + +### Step 9: Launch Confirmation + +9. AWS should now display a congratulations screen confirming that Chatwoot instance is launched successfully. Click on the **EC2 Console** link. + +![Launch Confirmation](/self-hosted/images/aws-ami/awsmp-09-launch.png) + +### Step 10: Wait for Instance + +10. Wait for a few minutes to let the instance come up. + +![Wait for Instance](/self-hosted/images/aws-ami/awsmp-10-ec2.png) + +### Step 11: Get Public IP + +11. Select the instance and copy the public IP. + +![Get Public IP](/self-hosted/images/aws-ami/awsmp-11-public-ip.png) + +### Step 12: Access Chatwoot + +12. Visit `http://:3000`. This should bring up the Chatwoot UI. Congratulations. Woot! Woot!! + +![Access Chatwoot](/self-hosted/images/aws-ami/awsmp-12-chatwoot.png) + +## Configuring Chatwoot + +To configure Chatwoot, we need to SSH into the instance. We will use **AWS Console Connect** for this. + +### Step 1: Connect to Instance + +1. Select the instance and click on **Connect**. + +![Connect to Instance](/self-hosted/images/aws-ami/awsmp-13-connect.png) + +### Step 2: Use Ubuntu User + +2. Change the username from `root` to `ubuntu` and click **Connect**. + +![Use Ubuntu User](/self-hosted/images/aws-ami/awsmp-14-connect.png) + +### Step 3: Configure Environment Variables + +3. Switch to the `chatwoot` user and configure the necessary environment variables. Refer to [Environment variables](/self-hosted/configuration/environment-variables) document for the complete list. + +```bash +sudo -i -u chatwoot +cd chatwoot +vi .env +``` + + +It is recommended to configure a proxy server like Nginx and set up SSL. Make sure to modify the security group created in step 6 accordingly. + + +## Updating the Instance + +Please follow the Chatwoot update process in the standard [Linux VM setup](/self-hosted/deployment/linux-vm). + +## Security Recommendations + +### SSL Configuration +- Set up SSL certificates using Let's Encrypt or AWS Certificate Manager +- Configure Nginx as a reverse proxy +- Update security group rules to allow HTTPS traffic (port 443) + +### Access Control +- Restrict SSH access to specific IP addresses +- Use IAM roles for EC2 instances where possible +- Enable AWS CloudTrail for audit logging + +### Backup Strategy +- Set up automated EBS snapshots +- Configure database backups +- Store backups in S3 with appropriate lifecycle policies + +## Troubleshooting + +### Common Issues + + +**Problem**: Cannot access Chatwoot on port 3000 + +**Solutions**: +- Check security group allows inbound traffic on port 3000 +- Verify instance is running and healthy +- Check if Chatwoot service is running: `sudo systemctl status chatwoot` + + + +**Problem**: Chatwoot service fails to start + +**Solutions**: +- Check logs: `sudo journalctl -u chatwoot -f` +- Verify environment variables are correctly set +- Ensure database connection is working +- Check disk space and memory usage + + +### Support Resources + +- [AWS Support](https://aws.amazon.com/support/) +- [Chatwoot Community Discord](https://discord.com/invite/cJXdrwS) +- [GitHub Issues](https://github.com/chatwoot/chatwoot/issues) + +--- + +The AWS Marketplace AMI provides a quick way to deploy Chatwoot with pre-configured settings. For production use, ensure you implement proper security measures and backup strategies. \ No newline at end of file diff --git a/docs/self-hosted/deployment/aws.md b/self-hosted/deployment/aws.mdx similarity index 92% rename from docs/self-hosted/deployment/aws.md rename to self-hosted/deployment/aws.mdx index 2e1b9e64..cb6c7dd9 100644 --- a/docs/self-hosted/deployment/aws.md +++ b/self-hosted/deployment/aws.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Manual Install" -title: "AWS Chatwoot deployment guide" +title: AWS Chatwoot deployment guide +description: Deploy Chatwoot on AWS with a reference HA architecture +sidebarTitle: Manual Install --- The following is a reference HA architecture guide for deploying Chatwoot on AWS. For a cloud-native deployment, use our [helm charts](https://github.com/chatwoot/charts) with AWS Elastic Kubernetes Service(EKS). @@ -18,10 +19,9 @@ of managed AWS services for the same viz Elasticache, RDS, and ALB. ### Architecture -This guide will follow a standard 3-tier architecture on AWS. - -![aws-architecture](./images/aws-01-architecture.png) +This guide will follow a standard 3-tier architecture on AWS. +![aws-architecture](/self-hosted/images/aws-01-architecture.png) ## Network @@ -32,7 +32,7 @@ This guide will follow a standard 3-tier architecture on AWS. `chatwoot-vpc` and use the CIDR block `10.0.0.0/16`. 3. Leave the rest of the options as default and click on `Create VPC`. -![aws-create-vpc](./images/aws-02-create-vpc.png) +![aws-create-vpc](/self-hosted/images/aws-02-create-vpc.png) ### Subnets Create two public and private subnets in the vpc we created. Make sure to have them in different AZ's and have non-overlapping CIDR ranges. @@ -40,7 +40,8 @@ Create two public and private subnets in the vpc we created. Make sure to have t 1. Navigate to VPC > Subnets. 2. Click on `Create Subnet`. Select the `chatwoot-vpc` we created before, name it as `chatwoot-public-1`, select an availability zone (for example, ap-south-1a), and the CIDR block as `10.0.0.0/24`. -![aws-create-subnet](./images/aws-03-create-subnet.png) + +![aws-create-subnet](/self-hosted/images/aws-03-create-subnet.png) 3. Follow the same to create the remaining subnets. @@ -56,10 +57,10 @@ Create two public and private subnets in the vpc we created. Make sure to have t ### Internet Gateway 1. Select `Create Internet Gateway` , name it `chatwoot-igw`, and click create. -3. Select it from the internet gateways list, choose actions and then select `Attach to VPC`. -4. Choose `chatwoot-vpc` and click attach. +2. Select it from the internet gateways list, choose actions and then select `Attach to VPC`. +3. Choose `chatwoot-vpc` and click attach. -![aws-create-igw](./images/aws-04-create-igw.png) +![aws-create-igw](/self-hosted/images/aws-04-create-igw.png) ### NAT Gateway @@ -74,12 +75,14 @@ Chatwoot app servers need to be deployed in the private subnet. For them to acce 4. Add additional tags as per your need. 5. Click `Create NAT gateway`. -![aws-create-nat](./images/aws-05-create-nat.png) +![aws-create-nat](/self-hosted/images/aws-05-create-nat.png) 3. Follow the same to create a second NAT gateway (`chatwoot-nat-2`) and choose the `chatwoot-public-2` subnet. + ### Route tables The route table controls the inbound and outbound access for a subnet. + #### Public Route table We will create route tables so that our public subnets can reach the internet via the Internet gateway. @@ -89,7 +92,7 @@ Navigate to the VPC dashboard and select `Route Tables`. 2. Use the name `chatwoot-public-rt` and choose `chatwoot-vpc` under VPC. 3. Click `Create`. -![aws-create-rt](./images/aws-06-create-rt.png) +![aws-create-rt](/self-hosted/images/aws-06-create-rt.png) Next, we need to add a route to the internet gateway we created earlier(`chatwoot-igw`). @@ -118,7 +121,7 @@ Also, ## Application Load Balancer (ALB) -Create an application load balancer to receive traffic on port 80 and 443 and distribute it across Chatwoot instances. +Create an application load balancer to receive traffic on port 80 and 443 and distribute it across Chatwoot instances. 1. Navigate to the EC2 section and choose the Load Balancer section. 2. Click `Create Load Balancer`. @@ -146,12 +149,8 @@ Create an application load balancer to receive traffic on port 80 and 443 and di Also, add if you have your domain on Route53 and use ACM to generate a certificate to use with ALB. - - ## Postgresql using AWS RDS - - Chatwoot uses Postgres as a DB layer, and we will use Amazon RDS with a multi-AZ option for reliability. ### RDS security group @@ -176,14 +175,12 @@ Chatwoot uses Postgres as a DB layer, and we will use Amazon RDS with a multi-AZ 6. Enable password authentication. 7. Click create. 8. After completing the creation, note down the hostname, username, and password. We will need this to configure Chatwoot. -## Redis using AWS Elasticache - +## Redis using AWS Elasticache 1. Follow similar steps like the rds to create Redis security and subnet groups. 2. Create the Redis cluster with a multi-AZ option. - ## Creating Bastion servers Create bastion servers in both public subnets. These servers will be used to ssh into Chatwoot servers in private subnets. @@ -210,31 +207,30 @@ Repeat and create another bastion, `chatwoot-bastion-b` in the other AZ. 8. Switch to the `root` user. 9. Download the chatwoot Linux installation script. -``` +```bash wget https://get.chatwoot.app/linux/install.sh chmod 755 install.sh ``` + 10. Run the script. -``` +```bash ./install.sh --install ``` ## Configure Chatwoot - - 11. Once the installation is complete, switch to the chatwoot user and navigate to the chatwoot folder. Edit the .env file and replace the Postgres and Redis credentials with RDS and elasticache values. -``` +```bash sudo -i -u chatwoot cd chatwoot vi .env - ``` 12. Run the db migration. -``` + +```bash RAILS_ENV=production bundle exec rake db:prepare ``` @@ -242,14 +238,14 @@ RAILS_ENV=production bundle exec rake db:prepare 14. Restart the `chatwoot` service. -``` +```bash sudo cwctl --restart ``` ## Verify login 15. Add this instance to the target group attached to the alb. -16. Navigate to your chatwoot domain to see if everything is working. +16. Navigate to your chatwoot domain to see if everything is working. ## Create a custom AMI @@ -278,4 +274,4 @@ sudo cwctl --restart ## Conclusion -This document is a reference guideline for an HA chatwoot architecture on AWS. Modify or build upon this to suit your requirements. +This document is a reference guideline for an HA chatwoot architecture on AWS. Modify or build upon this to suit your requirements. \ No newline at end of file diff --git a/docs/self-hosted/deployment/azure.md b/self-hosted/deployment/azure.mdx similarity index 77% rename from docs/self-hosted/deployment/azure.md rename to self-hosted/deployment/azure.mdx index c0598236..ddf56b58 100644 --- a/docs/self-hosted/deployment/azure.md +++ b/self-hosted/deployment/azure.mdx @@ -1,11 +1,14 @@ --- -sidebar_label: "Azure" -title: "Azure Chatwoot deployment guide" +title: Azure Chatwoot deployment guide +description: Deploy Chatwoot on a single VM in Azure +sidebarTitle: Azure --- This guide will deploy chatwoot on a single VM in Azure. For a cloud native deployment, use our [helm charts](https://github.com/chatwoot/charts) with Azure Kubernetes Service(AKS). -> **NOTE**: This guide is a work in progress and your mileage may vary. + +This guide is a work in progress and your mileage may vary. + ## Create a Virtual Machine @@ -20,17 +23,19 @@ This guide will deploy chatwoot on a single VM in Azure. For a cloud native depl 9. Click next and leave the defaults for Disks, Networking, Management, Advanced and Tags section. 10. Select `Review + create` to spin up the VM. -![azure-create-vm](./images/azure.png) +![azure-create-vm](/self-hosted/images/azure.png) ## Install Chatwoot -1. SSH into the instance created from your local machine or create a bastion in azure to ssh via the browser. +1. SSH into the instance created from your local machine or create a bastion in azure to ssh via the browser. 2. Follow the linux VM instructions at https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm. 3. Woot! Woot! Your Chatwoot Instance is ready and can be accessed at `http://:3000`. Or if you completed the domain setup during the installation, chatwoot should be available at `https://`. -> **NOTE**: Browser access via port 3000 will only work if enabled under inbound rules. + +Browser access via port 3000 will only work if enabled under inbound rules. + ## Configure Chatwoot 1. Follow the Chatwoot docs to configure your domain, email and other parameters you need. -https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables +https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables \ No newline at end of file diff --git a/docs/self-hosted/deployment/backup.md b/self-hosted/deployment/backup.mdx similarity index 84% rename from docs/self-hosted/deployment/backup.md rename to self-hosted/deployment/backup.mdx index 007ed168..84608a46 100644 --- a/docs/self-hosted/deployment/backup.md +++ b/self-hosted/deployment/backup.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Backup" -title: "Backing Up Your Chatwoot Installation" +title: Backing Up Your Chatwoot Installation +description: Complete guide to backing up and restoring your Chatwoot installation data +sidebarTitle: Backup --- Backups are crucial for any software system, including Chatwoot, for several reasons: @@ -22,7 +23,6 @@ In short, backups are an essential part of risk management and ensure the smooth - [Configuration Variables](#configuration) - [Code Customisations](#code-customisations) - ### Postgres Database If you are managing the Postgres service yourself, you can use the `pg_dump` tool provided by PostgreSQL for this purpose. @@ -35,7 +35,7 @@ If you are using a managed provider like AWS, Google Cloud, or Azure, enable bac ### Storage -Based on your [storage configuration](/docs/self-hosted/configuration/environment-variables#configure-storage), you should take the appropriate steps. +Based on your [storage configuration](/self-hosted/configuration/environment-variables#configure-storage), you should take the appropriate steps. If you are using a managed provider like `S3`, `GCS`, etc., ensure backups using the options available with the provider. If you are using the `local` storage provider, ensure to take a disk backup of the `storage` folder in the root of your Chatwoot Installation. @@ -53,7 +53,9 @@ Official Chatwoot updates using tools like `cwctl` assume that there are no cust The frequency of backups largely depends on the nature of your application and the amount of data you generate and can afford to lose. You can opt for `continuous` or `daily` backups as per your need. -> Remember, these backups should be stored in a different physical location to protect against hardware failures. Using a cloud storage provider could be a good solution. Please ensure that access to these backups is tightly controlled, as they contain sensitive data. + +Remember, these backups should be stored in a different physical location to protect against hardware failures. Using a cloud storage provider could be a good solution. Please ensure that access to these backups is tightly controlled, as they contain sensitive data. + ## Restoring a Backup diff --git a/docs/self-hosted/deployment/caprover.md b/self-hosted/deployment/caprover.mdx similarity index 77% rename from docs/self-hosted/deployment/caprover.md rename to self-hosted/deployment/caprover.mdx index bd9c0ed5..6cdc3d6c 100644 --- a/docs/self-hosted/deployment/caprover.md +++ b/self-hosted/deployment/caprover.mdx @@ -1,17 +1,19 @@ --- -sidebar_label: "Caprover" -title: "Caprover Chatwoot Production deployment guide" -help_discord: "https://discord.gg/jypY57m" -help_github_discussions: "https://github.com/chatwoot/chatwoot/discussions/categories/self-hosted" +title: Caprover Chatwoot Production deployment guide +description: Deploy Chatwoot using Caprover's one-click application management +sidebarTitle: Caprover --- ## Caprover Overview Caprover is an extremely easy to use application server management tool. It is blazing fast and uses Docker under the hood. Chatwoot has been made available as a one-click app in Caprover, and the deployment process is straightforward. -**Note:** This is a community contributed installation setup. This will only have community support for any issues in future. + +This is a community contributed installation setup. This will only have community support for any issues in future. + ## Setup Chatwoot Using Caprover + ### 1. Install Caprover on your VM Finish your Caprover installation by referring to [Getting started guide](https://caprover.com/docs/get-started.html). @@ -24,18 +26,17 @@ Chatwoot is available in the one-click apps option in Caprover. Search for Chatw Head over to the `web` service in the Caprover applications and enable `Websocket Support` in the HTTP settings to true. You could also enable `https` for the application. - -![caprover-enable-websocket](./images/caprover-websocket.png) +![caprover-enable-websocket](/self-hosted/images/caprover-websocket.png) ### 4. Configure environment variables Caprover will take care of Postgres and Redis installation, along with the app and worker servers. We would advise you to replace the Database/Redis services with managed/standalone servers once you start scaling. -Also, ensure to set the appropriate environment variables for email, Object Store service etc. using our [Environment variables guide](/docs/self-hosted/configuration/environment-variables) - - -> **NOTE**: Chatwoot requires websocket support. Do enable it from `chatwoot-web` settings page in Caprover. +Also, ensure to set the appropriate environment variables for email, Object Store service etc. using our [Environment variables guide](/self-hosted/configuration/environment-variables) + +Chatwoot requires websocket support. Do enable it from `chatwoot-web` settings page in Caprover. + ## Upgrading Chatwoot installation @@ -56,6 +57,7 @@ To update your chatwoot installation to the latest version in Caprover, run the ``` ### worker + ```json { "schemaVersion": 2, @@ -72,7 +74,7 @@ To update your chatwoot installation to the latest version in Caprover, run the Login to the server where you have caprover installed and execute the following commands. -``` +```bash # access the shell inside the container docker exec -it $(docker ps --filter name=srv-captain--chatwoot-web -q) /bin/sh # start rails console @@ -83,22 +85,21 @@ RAILS_ENV=production bundle exec rails c ### API requests failing with "You need to sign in or sign up before continuing." -Nginx by default strip of headers with `_` . Head over to the Nginx configuration option in caprover under the Chatwoot web and add the following directive. +Nginx by default strip of headers with `_` . Head over to the Nginx configuration option in caprover under the Chatwoot web and add the following directive. -Access the Caprover `web dashboard` > `Apps` > `Apps Edit` > `Edit Default Nginx Configurations`. Refer https://caprover.com/docs/nginx-customization.html for more details. +Access the Caprover `web dashboard` > `Apps` > `Apps Edit` > `Edit Default Nginx Configurations`. Refer https://caprover.com/docs/nginx-customization.html for more details. +```nginx +# Nginx strips out underscore in headers by default +# Chatwoot relies on underscore in headers for API +# Make sure that the config is set to on. +underscores_in_headers on; ``` - # Nginx strips out underscore in headers by default - # Chatwoot relies on underscore in headers for API - # Make sure that the config is set to on. - underscores_in_headers on; - ``` ### Issues related to storage persistance -Please setup a cloud storage like s3 or gcs bucket or any s3 api compatible service as the active storage service. -Caprover installation needs this for storage persistance. Refer the [storage guide](/docs/self-hosted/deployment/storage/supported-providers). - +Please setup a cloud storage like s3 or gcs bucket or any s3 api compatible service as the active storage service. +Caprover installation needs this for storage persistance. Refer the [storage guide](/self-hosted/deployment/storage/supported-providers). ## Further references diff --git a/docs/self-hosted/deployment/chatwoot-ctl.md b/self-hosted/deployment/chatwoot-ctl.mdx similarity index 74% rename from docs/self-hosted/deployment/chatwoot-ctl.md rename to self-hosted/deployment/chatwoot-ctl.mdx index 7ca83360..09ad343a 100644 --- a/docs/self-hosted/deployment/chatwoot-ctl.md +++ b/self-hosted/deployment/chatwoot-ctl.mdx @@ -1,9 +1,11 @@ --- -sidebar_label: "Chatwoot CTL" -title: "Chatwoot CTL" +title: Chatwoot CTL +description: CLI tool to install and manage a self hosted Chatwoot Linux installation +sidebarTitle: Chatwoot CTL --- ## Introduction + Chatwoot CTL(`cwctl`) is CLI tool to install and manage a self hosted Chatwoot Linux installation. `cwctl` aims to abstract away the common bash interactions with a Chatwoot installation and provide an easy to use syntax. This is not intended to be a full replacement. @@ -12,7 +14,7 @@ If you are running a Chatwoot v2.7.0 instance or later, `cwctl` would have been Check if `cwctl` is already installed by -``` +```bash cwctl --version ``` @@ -22,17 +24,20 @@ If `cwctl` is not present, follow the steps below to install Chatwoot CTL. If you used an older version of install script(< 2.0), you will not have `cwctl` in your PATH. To install/upgrade Chatwoot CTL, -``` +```bash wget https://get.chatwoot.app/linux/install.sh -O /usr/local/bin/cwctl && chmod +x /usr/local/bin/cwctl cwctl --help ``` -> **Note**: The above command requires root access to install `cwctl` to `/usr/local/bin`. + +The above command requires root access to install `cwctl` to `/usr/local/bin`. + ### Help To learn more about the options supported by `cwctl`, -``` + +```bash sudo cwctl --help ``` @@ -40,32 +45,35 @@ sudo cwctl --help Whenever a new version of Chatwoot is released, use the following steps to upgrade your instance. -``` +```bash sudo cwctl --upgrade ``` -> **Note**: This will upgrade your Chatwoot instance to the latest stable release. If you are running a custom branch in production do not use this to upgrade. + +This will upgrade your Chatwoot instance to the latest stable release. If you are running a custom branch in production do not use this to upgrade. + ### Setup Nginx with SSL after installation To set up Nginx with SSL after initial setup(if you answered `no` to webserver/SSL setup during the first install) -> **Note**: Please add an A record pointing to your Chatwoot instance IP before proceeding. + +Please add an A record pointing to your Chatwoot instance IP before proceeding. + -``` +```bash sudo cwctl --webserver ``` - ### Restart Chatwoot -``` +```bash sudo cwctl --restart ``` ### Running Rails Console -``` +```bash sudo cwctl --console ``` @@ -73,13 +81,13 @@ sudo cwctl --console For Chatwoot web(rails) server logs use, -``` +```bash sudo cwctl --logs web ``` For Chatwoot worker(sidekiq) server logs use, -``` +```bash sudo cwctl --logs worker ``` @@ -87,6 +95,6 @@ sudo cwctl --logs worker To check the version of Chatwoot CTL, -``` +```bash sudo cwctl --version -``` +``` \ No newline at end of file diff --git a/docs/self-hosted/deployment/clevercloud.md b/self-hosted/deployment/clevercloud.mdx similarity index 77% rename from docs/self-hosted/deployment/clevercloud.md rename to self-hosted/deployment/clevercloud.mdx index 7108ea1a..d06ad898 100644 --- a/docs/self-hosted/deployment/clevercloud.md +++ b/self-hosted/deployment/clevercloud.mdx @@ -1,65 +1,68 @@ --- -sidebar_label: "Clever Cloud" -title: "Deploy Chatwoot to Clever Cloud" +title: Deploy Chatwoot to Clever Cloud +description: Deploy Chatwoot on Clever Cloud PaaS platform +sidebarTitle: Clever Cloud --- Clever Cloud is a PaaS platform where you can deploy your applications with ease. To setup Chatwoot on Clever Cloud, you can follow the steps described below. -**Note:** This is a community contributed installation setup. This will only have community support for any issues in future. + +This is a community contributed installation setup. This will only have community support for any issues in future. + - -### 1. Create CleverCloud application +## 1. Create CleverCloud application - Login to Clever Cloud dashboard - Click on create an application - Select your deployment type (> 2GB recommended) - Provide an app name and select the zone -### 2. Select addons +## 2. Select addons Chatwoot requires PostgreSQL and Redis to function properly. Select Postgres and Redis from CleverCloud addons. - Copy connection URI from Postgres Addon and set `DATABASE_URL` environment variable - Make sure you have set REDIS_URL -### 3. Setup Clever cloud origin +## 3. Setup Clever cloud origin - Clone Chatwoot project from Github -``` +```bash git clone git@github.com:chatwoot/chatwoot.git ``` - Set Clever Cloud origin -``` + +```bash git remote add clever git+ssh://git@.clever-cloud.com/.git ``` -### 4. Setup build hooks +## 4. Setup build hooks To install the dependencies, you have to setup builds hooks. Set the following in the environment variables of the application. -``` +```bash CC_POST_BUILD_HOOK="RAILS_ENV=production rails assets:precompile" CC_PRE_BUILD_HOOK="pnpm install" CC_PRE_RUN_HOOK="rake db:chatwoot_prepare" ``` -### 5. Push the latest changes +## 5. Push the latest changes Push the latest code from your local machine to Clever Cloud. -``` +```bash git push clever master ``` Voila! After the deployment, you would be able to access the application. -**Notes: ** +## Environment Variables Make sure you have the following environment variables configured in the application. -``` +```bash CC_POST_BUILD_HOOK="RAILS_ENV=production rails assets:precompile" CC_PRE_BUILD_HOOK="pnpm install" CC_PRE_RUN_HOOK="rake db:chatwoot_prepare" @@ -69,4 +72,4 @@ PORT="8080" RAILS_ENV="production" REDIS_URL="" SECRET_KEY_BASE="" -``` +``` \ No newline at end of file diff --git a/docs/self-hosted/deployment/cloudron.md b/self-hosted/deployment/cloudron.mdx similarity index 81% rename from docs/self-hosted/deployment/cloudron.md rename to self-hosted/deployment/cloudron.mdx index 6d24f69d..33919f1b 100644 --- a/docs/self-hosted/deployment/cloudron.md +++ b/self-hosted/deployment/cloudron.mdx @@ -1,16 +1,16 @@ --- -sidebar_label: "Cloudron" -title: "Cloudron Chatwoot deployment guide" -help_discord: "https://discord.gg/jypY57m" -help_github_discussions: "https://github.com/chatwoot/chatwoot/discussions/categories/self-hosted" +title: Cloudron Chatwoot deployment guide +description: Deploy Chatwoot using Cloudron's 1-click app platform +sidebarTitle: Cloudron --- ## Cloudron Overview [Cloudron](https://cloudron.io) is a platform that makes it easy to install, manage and secure web apps on your server. Chatwoot is now available as a 1-click app in the Cloudron app store and the installation is blazing fast. -**Note:** This is a community contributed installation setup. This will only have community support for any issues in future. - + +This is a community contributed installation setup. This will only have community support for any issues in future. + ## Setup Chatwoot using Cloudron @@ -32,7 +32,7 @@ Navigate to your chatwoot domain and complete the onboarding setup. Cloudron will take care of Postgres and Redis installation, along with the app and worker processes. We would advise you to replace the Database/Redis services with managed/standalone servers once you start scaling. -Also, ensure to set the appropriate environment variables for email, Object Store service etc. using our [Environment variables guide](/docs/self-hosted/configuration/environment-variables). +Also, ensure to set the appropriate environment variables for email, Object Store service etc. using our [Environment variables guide](/self-hosted/configuration/environment-variables). Custom environment variables can be set in `/app/data/env` using the Cloudron File manager. Be sure to reboot the app after making any changes. diff --git a/docs/self-hosted/deployment/digital-ocean.md b/self-hosted/deployment/digitalocean.mdx similarity index 69% rename from docs/self-hosted/deployment/digital-ocean.md rename to self-hosted/deployment/digitalocean.mdx index fd7caed0..818111fc 100644 --- a/docs/self-hosted/deployment/digital-ocean.md +++ b/self-hosted/deployment/digitalocean.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "DigitalOcean" -title: "DigitalOcean Chatwoot deployment guide" +title: DigitalOcean Chatwoot deployment guide +description: Deploy Chatwoot on a single droplet in DigitalOcean +sidebarTitle: DigitalOcean --- This guide will deploy chatwoot on a single droplet in DigitalOcean. For a cloud native deployment, go with @@ -10,14 +11,13 @@ our [1-click k8s app on DigitalOcean Marketplace](https://marketplace.digitaloce 1. Login to DigitalOcean console and choose create droplet. 2. Choose `Ubuntu 20.04` image. -2. Create an instance with a minimum of 4vCPU and 8GB RAM. -3. Make sure to choose the datacenter region you want to deploy. -4. Under authentication, choose your SSH key or create a new one. This is important as you will need +3. Create an instance with a minimum of 4vCPU and 8GB RAM. +4. Make sure to choose the datacenter region you want to deploy. +5. Under authentication, choose your SSH key or create a new one. This is important as you will need this key to complete the next section. -5. Click create. +6. Click create. - -![do-create-droplet](./images/do.png) +![do-create-droplet](/self-hosted/images/do.png) ## Install Chatwoot @@ -25,8 +25,7 @@ our [1-click k8s app on DigitalOcean Marketplace](https://marketplace.digitaloce 2. Follow the linux VM instructions at https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm. 3. Woot! Woot! Your Chatwoot Instance is ready and can be accessed at `http://:3000`. Or if you completed the domain setup during the installation, chatwoot should be available at `https://` - ## Configure Chatwoot 1. Follow the Chatwoot docs to configure your domain, email and other parameters you need. -https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables +https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables \ No newline at end of file diff --git a/docs/self-hosted/deployment/docker.md b/self-hosted/deployment/docker.mdx similarity index 69% rename from docs/self-hosted/deployment/docker.md rename to self-hosted/deployment/docker.mdx index 945f0e0e..ec645a5d 100644 --- a/docs/self-hosted/deployment/docker.md +++ b/self-hosted/deployment/docker.mdx @@ -1,12 +1,14 @@ --- -sidebar_label: "Docker" -title: "Docker Chatwoot Production deployment guide" +title: Docker Chatwoot Production deployment guide +description: Deploy Chatwoot using Docker containers for production environments +sidebarTitle: Docker --- -### Pre-requisites +## Pre-requisites + Before proceeding, make sure you have the latest version of `docker` and `docker-compose` installed. -As of now[at the time of writing this doc], we recommend a version equal to or higher than the following. +As of now [at the time of writing this doc], we recommend a version equal to or higher than the following. ```bash $ docker --version @@ -14,14 +16,16 @@ Docker version 20.10.10, build b485636 $ docker compose version Docker Compose version v2.14.1 ``` -**Note** -Container name uses dashes instead of underscores by default with new docker/compose versions. If you are using an older version of docker/compose, replace `-` with `_`. Also, use `docker-compose` instead of `docker compose`. + +Container name uses dashes instead of underscores by default with new docker/compose versions. If you are using an older version of docker/compose, replace `-` with `_`. Also, use `docker-compose` instead of `docker compose`. + ## Steps to deploy Chatwoot using docker-compose -1) Install Docker on your VM -``` +### 1. Install Docker on your VM + +```bash # example in ubuntu apt-get update apt-get upgrade @@ -30,45 +34,52 @@ sudo sh get-docker.sh apt install docker-compose-plugin ``` -2) Download the required files -``` +### 2. Download the required files + +```bash # Download the env file template wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example # Download the Docker compose template wget -O docker-compose.yaml https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml ``` -3) Tweak the `.env` and `docker-compose.yaml` according to your preferences. Refer to the available [environment variables](/docs/self-hosted/configuration/environment-variables). You could also remove the dependant services like `Postgres`, `Redis` etc., in favor of managed services configured via environment variables. +### 3. Configure environment variables -``` +Tweak the `.env` and `docker-compose.yaml` according to your preferences. Refer to the available [environment variables](/self-hosted/configuration/environment-variables). You could also remove the dependant services like `Postgres`, `Redis` etc., in favor of managed services configured via environment variables. + +```bash # update redis and postgres passwords nano .env # update docker-compose.yaml same postgres pass nano docker-compose.yaml ``` -4) Prepare the database by running the migrations. -``` +### 4. Prepare the database + +```bash docker compose run --rm rails bundle exec rails db:chatwoot_prepare ``` -5) Get the service up and running. -``` +### 5. Start the services + +```bash docker compose up -d ``` -6) Your Chatwoot installation is complete. Please note that the containers are not exposed to the internet and they only bind to the localhost. Setup something like Nginx or any other proxy server to proxy the requests to the container. - +### 6. Access your installation + +Your Chatwoot installation is complete. Please note that the containers are not exposed to the internet and they only bind to the localhost. Setup something like Nginx or any other proxy server to proxy the requests to the container. + If you want to verify whether the installation is working, try `curl -I localhost:3000/api` to see if it returns `200`. Also, you could temporarily drop the `127.0.0.1:3000:3000` for rails to `3000:3000` in the compose file to access your instance at `http://:3000`. It's recommended to revert this change back and use Nginx or some proxy server in the front. -### Additional Steps +## Additional Steps -1) Have an `Nginx` web server acting as a reverse proxy for Chatwoot installation. So that you can access Chatwoot from `https://chat.yourdomain.com` -2) Run `docker compose run --rm rails bundle exec rails db:chatwoot_prepare` whenever you decide to update the Chatwoot images to handle the migrations. +1. Have an `Nginx` web server acting as a reverse proxy for Chatwoot installation. So that you can access Chatwoot from `https://chat.yourdomain.com` +2. Run `docker compose run --rm rails bundle exec rails db:chatwoot_prepare` whenever you decide to update the Chatwoot images to handle the migrations. -#### Configure Nginx and **Let's Encrypt** +### Configure Nginx and Let's Encrypt -1. Configure Nginx to serve as a frontend proxy. +#### 1. Configure Nginx to serve as a frontend proxy ```bash sudo apt-get install nginx @@ -76,9 +87,11 @@ cd /etc/nginx/sites-enabled nano yourdomain.com.conf ``` -2. Use the following Nginx config after replacing the `yourdomain.com` in `server_name` . +#### 2. Use the following Nginx config -```bash +Use the following Nginx config after replacing the `yourdomain.com` in `server_name`. + +```nginx server { server_name ; @@ -116,24 +129,25 @@ server { } ``` -3. Verify and reload your Nginx config by running the following command. +#### 3. Verify and reload Nginx config ```bash nginx -t systemctl reload nginx ``` -4. Run **Let's Encrypt** to configure **SSL certificate**. +#### 4. Run Let's Encrypt to configure SSL certificate ```bash -apt install certbot +apt install certbot apt-get install python3-certbot-nginx mkdir -p /var/www/ssl-proof/chatwoot/.well-known certbot --webroot -w /var/www/ssl-proof/chatwoot/ -d yourdomain.com -i nginx ``` -5. Your Chatwoot installation should be accessible from the `https://yourdomain.com` now. +#### 5. Access your installation +Your Chatwoot installation should be accessible from the `https://yourdomain.com` now. ## Steps to build images yourself @@ -141,23 +155,23 @@ We publish our base images to the Docker hub. You should be able to build your C ### Web -``` +```dockerfile FROM chatwoot/chatwoot:latest RUN chmod +x docker/entrypoints/rails.sh ENTRYPOINT ["docker/entrypoints/rails.sh"] CMD bundle exec bundle exec rails s -b 0.0.0.0 -p 3000 ``` -### worker +### Worker -``` +```dockerfile FROM chatwoot/chatwoot:latest RUN chmod +x docker/entrypoints/rails.sh ENTRYPOINT ["docker/entrypoints/rails.sh"] CMD bundle exec sidekiq -C config/sidekiq.yml ``` -The app servers will run available on port `3000`. Ensure the images connect to the same database and Redis servers. Provide the configuration for these services via [environment variables](/docs/self-hosted/configuration/environment-variables). +The app servers will run available on port `3000`. Ensure the images connect to the same database and Redis servers. Provide the configuration for these services via [environment variables](/self-hosted/configuration/environment-variables). ### Initial database setup @@ -165,21 +179,24 @@ To set up the database for the first time, you must run `rails db:chatwoot_prepa ## Upgrading -If you're not using the `latest` or `latest-ce` tag, you first need to change the desired tag in your docker-compose file +If you're not using the `latest` or `latest-ce` tag, you first need to change the desired tag in your docker-compose file. After that you can pull the new image and start using them: -``` + +```bash docker compose pull docker compose up -d ``` Finally you may need to update the database: -`docker compose run --rm rails bundle exec rails db:chatwoot_prepare` +```bash +docker compose run --rm rails bundle exec rails db:chatwoot_prepare +``` ## Running Rails Console -``` +```bash docker exec -it $(basename $(pwd))-rails-1 sh -c 'RAILS_ENV=production bundle exec rails c' ``` diff --git a/docs/self-hosted/deployment/easypanel.md b/self-hosted/deployment/easypanel.mdx similarity index 69% rename from docs/self-hosted/deployment/easypanel.md rename to self-hosted/deployment/easypanel.mdx index 3dcafb88..400cf8a4 100644 --- a/docs/self-hosted/deployment/easypanel.md +++ b/self-hosted/deployment/easypanel.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Easypanel" -title: "Deploying Chatwoot on Easypanel" +title: Deploying Chatwoot on Easypanel +description: Deploy Chatwoot using Easypanel's modern server control panel +sidebarTitle: Easypanel --- [Easypanel](https://easypanel.io) it's a modern server control panel. You can use it to deploy Chatwoot on your own server. @@ -12,4 +13,4 @@ title: "Deploying Chatwoot on Easypanel" 1. Create a VM that runs Ubuntu on your cloud provider. 2. Install Easypanel using the instructions from the website. 3. Create a new project. -4. Install Chatwoot using the dedicated template. +4. Install Chatwoot using the dedicated template. \ No newline at end of file diff --git a/self-hosted/deployment/elestio.mdx b/self-hosted/deployment/elestio.mdx new file mode 100644 index 00000000..72eebd03 --- /dev/null +++ b/self-hosted/deployment/elestio.mdx @@ -0,0 +1,43 @@ +--- +title: Elestio Chatwoot fully managed deployment guide +description: Deploy Chatwoot with Elestio's fully managed platform +sidebarTitle: Elestio +--- + +## Deploy to Elestio with one-click + +[![Deploy](https://pub-da36157c854648669813f3f76c526c2b.r2.dev/deploy-on-elestio-black.png)](https://elest.io/open-source/chatwoot) + +## Select the providers + +- Select cloud service provider of your choice. +- Choose region of your choice +- Select service plan. The smallest one offers 1 CPU, 2 GB RAM etc. +- Confirm the details and hit "Next" + +![Elestio Setup](/self-hosted/images/elestio.png) + +## Configure + +- Select the support level +- Name your application +- Add admin email (You can add email you want to access your application from) +- Click "Create Service" +- Here you also get option to copy your terraform config (Optional) + +## Use Chatwoot + +- Click on "Display Admin UI" +- Go to Admin Ui link provided +- Add username and password provided on dashboard. + +![Elestio Dashboard](/self-hosted/images/elestio-dash.png) + +## Update Chatwoot + +- Go to Overview section in your Chatwoot service +- Click "Change version" inside Software section +- Choose the latest version or the version of your choice. +- Additionally update the configs or restart the instance with single clink under same section + +![Elestio Change version](/self-hosted/images/elestio-version.png) \ No newline at end of file diff --git a/docs/self-hosted/deployment/gcp.md b/self-hosted/deployment/gcp.mdx similarity index 75% rename from docs/self-hosted/deployment/gcp.md rename to self-hosted/deployment/gcp.mdx index 3b3743f7..8806d03a 100644 --- a/docs/self-hosted/deployment/gcp.md +++ b/self-hosted/deployment/gcp.mdx @@ -1,21 +1,24 @@ --- -sidebar_label: "GCP" -title: "GCP Chatwoot deployment guide" +title: GCP Chatwoot deployment guide +description: Deploy Chatwoot on a single VM in GCP +sidebarTitle: GCP --- This guide will deploy chatwoot on a single VM in GCP. For a cloud native deployment, use our [helm charts](https://github.com/chatwoot/charts) with Google Kubernetes Engine(GKE). -> **NOTE**: This guide is a work in progress and your mileage may vary. + +This guide is a work in progress and your mileage may vary. + ## Create Compute Engine (VM) -1. Navigate to VM > Compute Engine window. +1. Navigate to VM > Compute Engine window. 2. Create an instance with a minimum of 4vCPU and 8GB RAM.(N2 General-Purpose) 3. Make sure to select the correct region you want to deploy. 4. Choose `Ubuntu 20.04` as your OS with a 120GB disk. 5. Click create. -![gcp-create-compute-engine](./images/gcp.png) +![gcp-create-compute-engine](/self-hosted/images/gcp.png) ## Install Chatwoot @@ -23,8 +26,7 @@ This guide will deploy chatwoot on a single VM in GCP. For a cloud native deplo 2. Follow the linux VM instructions at https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm. 3. Woot! Woot! Your Chatwoot Instance is ready and can be accessed at `http://:3000`. Or if you completed the domain setup during the installation, chatwoot should be available at `https://` - ## Configure Chatwoot 1. Follow the Chatwoot docs to configure your domain, email and other parameters you need. -https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables +https://www.chatwoot.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables \ No newline at end of file diff --git a/docs/self-hosted/deployment/helm-charts.md b/self-hosted/deployment/helm-chart.mdx similarity index 74% rename from docs/self-hosted/deployment/helm-charts.md rename to self-hosted/deployment/helm-chart.mdx index ace38259..eb0d80e1 100644 --- a/docs/self-hosted/deployment/helm-charts.md +++ b/self-hosted/deployment/helm-chart.mdx @@ -1,14 +1,14 @@ --- -sidebar_label: "Kubernetes" -title: "Deploy Chatwoot on Kubernetes using Helm Charts" +title: Deploy Chatwoot on Kubernetes using Helm Charts +description: Deploy Chatwoot on Kubernetes using our official Helm charts +sidebarTitle: Kubernetes --- This guide will help you to deploy a production ready Chatwoot instance with Helm Charts. -To quickly try out the charts, follow the two steps below. For a production deployment, please make sure to -pass in the required arguments to helm using your custom `values.yaml` file. +To quickly try out the charts, follow the two steps below. For a production deployment, please make sure to pass in the required arguments to helm using your custom `values.yaml` file. -``` +```bash helm repo add chatwoot https://chatwoot.github.io/charts helm install chatwoot chatwoot/chatwoot ``` @@ -23,35 +23,36 @@ helm install chatwoot chatwoot/chatwoot The helm installation will create 3 "Persistent Volume Claims" for redis, rails and postgres. Setup up a default "Storage Class" (for automatic PV) or create 3 "Persistent Volumes" with the size of 8GB, before installing chatwoot. If the "Persistent Volume Claims" do not claim the "Persistent Volumes", leave storageClassName blank (inside the PV .yaml files). - ## Installing the chart To install the chart with the release name `chatwoot`, use the following. To deploy it in `chatwoot` namespace, pass `-n chatwoot` to the command. -```console +```bash helm install chatwoot chatwoot/chatwoot -f #-n chatwoot ``` The command deploys Chatwoot on the Kubernetes cluster in the default configuration. The [parameters](#parameters) section lists the parameters that can be configured during installation. -> **Tip**: List all releases using `helm list` + +List all releases using `helm list` + ## Uninstalling the chart To uninstall/delete the `chatwoot` deployment: -```console +```bash helm delete chatwoot ``` The command removes all the Kubernetes components associated with the chart and deletes the release. -> **Note**: Persistent volumes are not deleted automatically. They need to be removed manually. - + +Persistent volumes are not deleted automatically. They need to be removed manually. + ## Parameters - ### Chatwoot Image parameters | Name | Description | Value | @@ -60,7 +61,6 @@ The command removes all the Kubernetes components associated with the chart and | `image.tag` | Chatwoot image tag (immutable tags are recommended) | `v2.16.0` | | `image.pullPolicy` | Chatwoot image pull policy | `IfNotPresent` | - ### Chatwoot Environment Variables | Name | Type | Default Value | @@ -122,7 +122,6 @@ The command removes all the Kubernetes components associated with the chart and | `env.REDIS_SENTINELS` | Redis Sentinel can be used by passing list of sentinel host and ports. | `""` | | `env.REDIS_SENTINEL_MASTER_NAME` | Redis sentinel master name is required when using sentinel. | `""` | - ### Logging variables | Name | Type | Default Value | @@ -164,47 +163,6 @@ The command removes all the Kubernetes components associated with the chart and | `worker.hpa.maxpods` | Maximum number of pods for Chatwoot worker | `10` | | `worker.replicaCount` | No of worker pods if hpa is not enabled | `1` | -### Other Parameters - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| affinity | object | `{}` | | -| existingEnvSecret | string | "" | Allows the use of an existing secret to set env variables | -| fullnameOverride | string | `""` | | -| hooks.affinity | object | `{}` | | -| hooks.migrate.env | list | `[]` | | -| hooks.migrate.hookAnnotation | string | `"post-install,post-upgrade"` | | -| hooks.migrate.resources.limits.memory | string | `"1000Mi"` | | -| hooks.migrate.resources.requests.memory | string | `"1000Mi"` | | -| imagePullSecrets | list | `[]` | | -| ingress.annotations | object | `{}` | | -| ingress.enabled | bool | `false` | | -| ingress.hosts[0].host | string | `""` | | -| ingress.hosts[0].paths[0].backend.service.name | string | `"chatwoot"` | | -| ingress.hosts[0].paths[0].backend.service.port.number | int | `3000` | | -| ingress.hosts[0].paths[0].path | string | `"/"` | | -| ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | -| ingress.tls | list | `[]` | | -| nameOverride | string | `""` | | -| nodeSelector | object | `{}` | | -| podAnnotations | object | `{}` | | -| podSecurityContext | object | `{}` | | -| redis.master.persistence.enabled | bool | `true` | | -| redis.nameOverride | string | `"chatwoot-redis"` | | -| resources | object | `{}` | | -| securityContext | object | `{}` | | -| service.port | int | `80` | | -| service.type | string | `"ClusterIP"` | | -| serviceAccount.annotations | object | `{}` | | -| serviceAccount.create | bool | `true` | | -| serviceAccount.name | string | `""` | | -| services.annotations | object | `{}` | | -| services.internalPort | int | `3000` | | -| services.name | string | `"chatwoot"` | | -| services.targetPort | int | `3000` | | -| services.type | string | `"LoadBalancer"` | | -| tolerations | list | `[]` | | - ## Install with custom parameters Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, @@ -223,7 +181,9 @@ Alternatively, a YAML file that specifies the values for the parameters can be p helm install my-release -f values.yaml chatwoot/chatwoot ``` -> **Tip** You can use the default `values.yaml` file. + +You can use the default `values.yaml` file. + ## Postgres @@ -232,12 +192,12 @@ PostgreSQL is installed along with the chart if you choose the default setup. To ## Redis Redis is installed along with the chart if you choose the default setup. To use an external Redis DB, please set `redis.enabled` to `false` and set the variables under the Redis section above. -ActionController::InvalidAuthenticityToken HTTP Origin header https://mydomain.com didn't match request.base_url http://mydomain.comv + ## Autoscaling To enable horizontal pod autoscaling, set `web.hpa.enabled` and `worker.hpa.enabled` to `true`. Also make sure to uncomment the values under, `resources.limits` and `resources.requests`. This assumes your k8s cluster is already having a metrics-server. If not, deploy metrics-server with the following command. -``` +```bash kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml ``` @@ -245,7 +205,7 @@ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/late Do `helm repo update` and check the version of charts that is going to be installed. Helm charts follows semantic versioning and so if the MAJOR version is different from your installed version, there might be breaking changes. Please refer to the changelog before upgrading. -``` +```bash # update helm repositories helm repo update # list your current installed version @@ -254,135 +214,21 @@ helm list helm search repo chatwoot ``` -``` +```bash #if it is major version update, refer to the changelog before proceeding helm upgrade chatwoot chatwoot/chatwoot -f .yaml ``` -### To 1.x.x - -Make sure you are on Chatwoot helm charts version `0.9.0` before upgrading to version `1.x.x`. If not, please upgrade to `0.9.0` before proceeding. - -``` -helm repo update -helm upgrade chatwoot chatwoot/chatwoot --version="0.9.0" -f --debug -``` - -This release changes the postgres and redis versions. This is a breaking change and requires manual data migration if you are not using external postgres and redis. - -> **Note**: This release also changes the postgres and redis auth paramaters values under `.Values.redis` and `.Values.postgres`. -Make the necessary changes to your custom `values.yaml` file if any. `Values.postgresqlDatabase` is now `Values.auth.postgresqlDatabase`, `Values.postgresqlUsername` is now `Values.auth.postgresqlUsername` and `Values.postgresqlPassword` is renamed to `Values.auth.postgresqlPassword`. - ->**Note:** Append the kubectl commands with `-n chatwoot`, if you have deployed it under the chatwoot namespace. - -Before updating, - -1. Set the replica count to 0 for both Chatwoot web(`.Values.web.replicaCount`) and worker(`.Values.worker.replicaCount`) replica sets. Applying this change -will bring down the pods count to 0. This is to ensure the database will not be having any activity and is in a state to backup. -``` -helm upgrade chatwoot chatwoot/chatwoot --version="0.9.0" --namespace ug3 -f values.ci.yaml --create-namespace --debug -``` - -2. Log into the postgres pod and take a backup of your database. - ``` - kubectl exec -it chatwoot-chatwoot-postgresql-0 -- /bin/sh - env | grep -i postgres_password #get postgres password to use in next step - pg_dump -Fc --no-acl --no-owner -U postgres chatwoot_production > /tmp/cw.dump - exit - ``` - - 3. Copy the backup to your local machine. - ``` - kubectl cp pod/chatwoot-chatwoot-postgresql-0:/tmp/cw.dump ./cw.dump - ``` - - 4. Delete the deployments. - ``` - helm delete chatwoot - kubectl get pvc - # this will delete the database volumes - # make sure you have backed up before proceeding - kubectl delete pvc - kubectl delete pvc - ``` - -5. Update and install new version of charts. -``` -helm repo update -#reset web.replicaCount and worker.replicaCount to your previous values -helm install chatwoot chatwoot/chatwoot -f #-n chatwoot -``` - -6. Copy the local db backup into postgres pod. -``` -kubectl cp cw.dump chatwoot-chatwoot-postgresql-0:/tmp/cw.dump -``` - -7. Exec into the postgres pod and drop the database. -``` - kubectl exec -it chatwoot-chatwoot-postgresql-0 -- /bin/sh - psql -u postgres -d postgres - # this is a destructive action - # remove -- to take effect - -- DROP DATABASE chatwoot_production with (FORCE); - exit -``` - -8. Restore the database from the backup. If you are seeing no errors, the databse has been restored and you -are good to go. -``` - pg_restore --verbose --clean --no-acl --no-owner --create -U postgres -d postgres /tmp/cw.dump -``` - -9. Exec into the web pod and remove the onboarding variable in redis. - -``` -kubectl exec -it chatwoot-web-xxxxxxxxxx -- /bin/sh -RAILS_ENV=production bundle exec rails c -::Redis::Alfred.delete(::Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING) -``` - -10. Load the Chatwoot web url, log in using the old credentials and verify the contents. Voila! Thats it!! - -### To 0.9.x - -This release adds support for horizontal pod autoscaling(hpa) for chatwoot-web and chatwoot-worker deployments. -Also, this changes the default redis replica count to `1`. The `Values.web.replicas` and `Values.worker. replicas` parameters -where renamed to `Values.web.replicaCount` and `Values.worker.replicaCount` respectively. Also `services.internlPort` was renamed -to `services.internalPort`. - -Please make the necessary changes in your custom values file if needed. - -### To 0.8.x - -Move from Kubernetes ConfigMap to Kubernetes Secrets for environment variables. This is not a breaking change. - - -### To 0.6.x - -Existing labels were causing issues with `helm upgrade`. `0.6.x` introduces breaking changes related to selector -labels used for deployements. Please delete your helm release and recreate. Deleting your helm release will -not delete your persistent volumes used for redis and postgres and as such your data should be safe. - -``` -helm delete chatwoot -helm repo update -helm install chatwoot chatwoot/chatwoot -``` - - -## TroubleShooting - +## Troubleshooting ### pod has unbound immediate PersistentVolumeClaims Make sure the "Persistent Volume Claims" can be satisfied. Refer to [prerequisites](#prerequisites). - ### ActionController::InvalidAuthenticityToken HTTP Origin header ``` ActionController::InvalidAuthenticityToken HTTP Origin header (https://mydomain.com) didn't match request.base_url (http://mydomain.com) ``` -If you are recieving the above error when trying to access the superadmin panel, configure your ingress controller to forward the protocol of the origin request. For `nginx` ingress, you can do this by setting the `proxy_set_header X-Forwarded-Proto https;` config. Refer this [issue](https://github.com/chatwoot/chatwoot/issues/5506) to learn more. +If you are recieving the above error when trying to access the superadmin panel, configure your ingress controller to forward the protocol of the origin request. For `nginx` ingress, you can do this by setting the `proxy_set_header X-Forwarded-Proto https;` config. Refer this [issue](https://github.com/chatwoot/chatwoot/issues/5506) to learn more. \ No newline at end of file diff --git a/self-hosted/deployment/heroku.mdx b/self-hosted/deployment/heroku.mdx new file mode 100644 index 00000000..6fe028b0 --- /dev/null +++ b/self-hosted/deployment/heroku.mdx @@ -0,0 +1,49 @@ +--- +title: Heroku Chatwoot Production Deployment Guide +description: Deploy Chatwoot on Heroku with one-click deployment +sidebarTitle: Heroku +--- + +# Deploying on Heroku + + +Heroku has discontinued free dynos, postgres and redis. [Chatwoot will use basic/mini plans](https://blog.heroku.com/new-low-cost-plans) for all new Heroku deployments going forward. + + +Deploy Chatwoot on Heroku through the following steps: + +1. Click on the [one click deploy button](https://heroku.com/deploy?template=https://github.com/chatwoot/chatwoot/tree/master) and deploy your app. +2. Go to the **Resources** tab in the Heroku app dashboard and ensure the worker dynos is turned on. +3. Head over to **Settings** tab in Heroku app dashboard and click **Reveal Config Vars**. +4. Configure the environment variables for [mailer](/self-hosted/configuration/environment-variables#configure-emails) and [storage](/self-hosted/deployment/storage/supported-providers) as per the [documentation](/self-hosted/configuration/environment-variables). +5. Head over to `yourapp.herokuapp.com` and enjoy using Chatwoot. + + + +## Updating the deployment on Heroku + +Whenever a new version is out for Chatwoot, you update your Heroku deployment through following steps: + +1. In the **Deploy** tab, choose `GitHub` as the deployment option. +2. Connect Chatwoot repo to the app. +3. Head over to the manual deploy option, choose `master` branch and hit **Deploy**. + +## Known Limitations + +1. **Dyno Sleep**: If you are on a free tier and you don't access the application for a while Heroku will put your dynos to sleep. You can fix this by upgrading the dynos to paid tier. + +2. **Ephemeral Storage**: Heroku has an "ephemeral" hard disk. The files uploaded to Chatwoot would not persist after the application is restarted. By default, Chatwoot uses local disk as the upload destination. To overcome this problem, you will have to [configure a cloud storage](/self-hosted/deployment/storage/supported-providers). + +3. **Build Version**: If the build version is shown as unknown on the settings page, enable the runtime dyno metadata feature. To enable, use: + ```bash + heroku labs:enable runtime-dyno-metadata -a + ``` \ No newline at end of file diff --git a/docs/self-hosted/deployment/linux-vm.md b/self-hosted/deployment/linux-vm.mdx similarity index 66% rename from docs/self-hosted/deployment/linux-vm.md rename to self-hosted/deployment/linux-vm.mdx index a497e812..0474adcd 100644 --- a/docs/self-hosted/deployment/linux-vm.md +++ b/self-hosted/deployment/linux-vm.mdx @@ -1,36 +1,43 @@ --- -sidebar_label: "Linux VM" -title: "Production deployment guide for Linux VM" +title: Production deployment guide for Linux VM +description: Deploy Chatwoot on Ubuntu 24.04 LTS using the automated installation script +sidebarTitle: Linux VM --- ## Deploying to Linux VM -This guide will help you install **Chatwoot** on **Ubuntu 24.04 LTS. We have prepared a deployment script for you to run. Refer to the script and feel free to make changes accordingly to the operating system if you are on a non-Ubuntu system. +This guide will help you install **Chatwoot** on **Ubuntu 24.04 LTS**. We have prepared a deployment script for you to run. Refer to the script and feel free to make changes accordingly to the operating system if you are on a non-Ubuntu system. ## Steps to install -> **Note**: If you plan to use a domain with chatwoot, please add an A record before proceeding. -> Refer to the `Configuring the installation domain` section below. + +If you plan to use a domain with chatwoot, please add an A record before proceeding. Refer to the `Configuring the installation domain` section below. + -1. Create an **install.sh** file using the following commands. +### 1. Create an install.sh file ```bash wget https://get.chatwoot.app/linux/install.sh chmod +x install.sh ``` -2. Execute the script. The script will take care of the initial **Chatwoot** setup. +### 2. Execute the script + +The script will take care of the initial **Chatwoot** setup. ```bash ./install.sh --install ``` -3. **Chatwoot** Installation will now be accessible at `http://{your_ip_address}:3000` or if you opted - for domain setup, it will be at `https://chatwoot.mydomain.com`. +### 3. Access your installation + +**Chatwoot** Installation will now be accessible at `http://{your_ip_address}:3000` or if you opted for domain setup, it will be at `https://chatwoot.mydomain.com`. -> **Note** This will also install the Chatwoot CLI(`cwctl`) starting with Chatwoot v2.7.0. Use `cwctl --help` to learn more. + +This will also install the Chatwoot CLI(`cwctl`) starting with Chatwoot v2.7.0. Use `cwctl --help` to learn more. + ## Configuring The installation Domain @@ -41,23 +48,26 @@ chmod +x install.sh ## Configure the required environment variables -For your Chatwoot installation to properly function, you would need to configure the essential environment variables like `FRONTEND_URL`, Mailer, and a cloud storage config. Refer **[Environment variables](/docs/self-hosted/configuration/environment-variables)** for the full list. +For your Chatwoot installation to properly function, you would need to configure the essential environment variables like `FRONTEND_URL`, Mailer, and a cloud storage config. Refer **[Environment variables](/self-hosted/configuration/environment-variables)** for the full list. -1. Login as **chatwoot** user and edit the .env file. +### 1. Login as chatwoot user and edit the .env file ```bash # Login as chatwoot user - sudo -i -u chatwoot cd chatwoot nano .env ``` -2. Refer **[Environment variables](/docs/self-hosted/configuration/environment-variables)** and update the required variables. Save the `.env` file. +### 2. Update environment variables + +Refer **[Environment variables](/self-hosted/configuration/environment-variables)** and update the required variables. Save the `.env` file. -3. Restart the **Chatwoot** server and enjoy using your self-hosted Chatwoot. +### 3. Restart the Chatwoot server -> **Note** If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -r`. + +If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -r`. + ```bash sudo systemctl restart chatwoot.target @@ -67,11 +77,15 @@ sudo systemctl restart chatwoot.target Whenever a new version of Chatwoot is released, use the following steps to upgrade your instance. -> **Note** If you have Chatwoot CLI(`cwctl`) installed, use `cwctl --upgrade` to upgrade your Chatwoot installation. + +If you have Chatwoot CLI(`cwctl`) installed, use `cwctl --upgrade` to upgrade your Chatwoot installation. + To install `cwctl`, refer [this](#install-or-upgrade-chatwoot-cli) section below. -> **Note** If you are on an older version of Chatwoot(< 2.7), follow the manual upgrade steps below if you face errors with `cwctl`. + +If you are on an older version of Chatwoot(< 2.7), follow the manual upgrade steps below if you face errors with `cwctl`. + Run the following steps on your VM. Make changes based on your OS if you are on a non-Ubuntu system. @@ -116,9 +130,11 @@ systemctl restart chatwoot.target ## Running Rails Console -> **Note** If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -c`. + +If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -c`. + -``` +```bash # Login as Chatwoot user sudo -i -u chatwoot @@ -131,29 +147,32 @@ RAILS_ENV=production bundle exec rails c ## Viewing Logs -> **Note** If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -l web` or `cwctl -l worker`. + +If you have Chatwoot CLI(`cwctl`) installed, use `cwctl -l web` or `cwctl -l worker`. + Run the following commands in your ubuntu shell -``` +```bash # logs from the rails server journalctl -u chatwoot-web.1.service -f # logs from sidekiq journalctl -u chatwoot-worker.1.service -f - ``` ## Install or Upgrade Chatwoot CLI If you used an older version of install script(< 2.0), you will not have `cwctl` in your PATH. To install/upgrade Chatwoot CLI, -``` +```bash wget https://get.chatwoot.app/linux/install.sh -O /usr/local/bin/cwctl && chmod +x /usr/local/bin/cwctl cwctl --help ``` -> **Note**: The above command requires root access to install `cwctl` to `/usr/local/bin`. + +The above command requires root access to install `cwctl` to `/usr/local/bin`. + ## Troubleshooting @@ -161,7 +180,7 @@ cwctl --help If the asset precompilation step fails with `ActionView::Template::Error (Webpacker can't find application.css in /home/chatwoot/chatwoot/public/packs/manifest.json)` or if you face issues while restarting the server, try the following command and restart the server. -``` +```bash RAILS_ENV=production rake assets:clean assets:clobber assets:precompile ``` diff --git a/self-hosted/deployment/performance/cloudfront-cdn.mdx b/self-hosted/deployment/performance/cloudfront-cdn.mdx new file mode 100644 index 00000000..81feed2d --- /dev/null +++ b/self-hosted/deployment/performance/cloudfront-cdn.mdx @@ -0,0 +1,99 @@ +--- +title: Cloudfront CDN +description: Configure Cloudfront as a CDN for Chatwoot assets +sidebarTitle: Cloudfront CDN +--- + +This document helps you to configure Cloudfront as the asset host for Chatwoot. If you have a high traffic website, we would recommend setting up a CDN for Chatwoot. + +## Configure a Cloudfront distribution + +**Step 1**: Create a Cloudfront distribution. + +![create-distribution](/self-hosted/images/cloudfront/create-distribution.png) + +**Step 2**: Select "Web" as delivery method for your content. + +![web-delivery-method](/self-hosted/images/cloudfront/web-delivery-method.png) + +**Step 3**: Configure the Origin Settings as the following. + +![origin-settings](/self-hosted/images/cloudfront/origin-settings.png) + +- Provide your Chatwoot Installation URL under Origin Domain Name. +- Select "Origin Protocol Policy" as Match Viewer. + +**Step 4**: Configure Cache behaviour. + +![cache-behaviour](/self-hosted/images/cloudfront/cache-behaviour.png) + +- Configure **Allowed HTTP methods** to use *GET, HEAD, OPTIONS*. +- Configure **Cache and origin request settings** to use *Use legacy cache settings*. +- Select **Whitelist** for *Cache Based on Selected Request Headers*. +- Add the following headers to the **Whitelist Headers**. +![extra-headers](/self-hosted/images/cloudfront/extra-headers.png) + - **Access-Control-Request-Headers** + - **Access-Control-Request-Method** + - **Origin** +- Set the **Response headers policy** to **CORS-With-Preflight** + +**Step 5**: Click on **Create Distribution**. You will be able to see the distribution as shown below. Use the **Domain name** listed in the details as the **ASSET_CDN_HOST** in Chatwoot. + +![cdn-distribution-settings](/self-hosted/images/cloudfront/cdn-distribution-settings.png) + +## Add ASSET_CDN_HOST in Chatwoot + +Your Cloudfront URL will be of the format `.cloudfront.net`. + +Set + +```bash +ASSET_CDN_HOST=.cloudfront.net +``` + +in the environment variables. + +## Benefits of Using CDN + + +Using a CDN provides several benefits for your Chatwoot installation: + + +1. **Faster Asset Loading**: Assets are served from edge locations closer to users +2. **Reduced Server Load**: Static assets are served from CDN, reducing load on your application server +3. **Better User Experience**: Faster page load times improve user experience +4. **Global Availability**: Assets are cached globally for users worldwide +5. **Bandwidth Savings**: Reduces bandwidth usage on your origin server + +## Troubleshooting + +### CORS Issues + +If you encounter CORS issues after setting up CloudFront: + +1. Ensure the CORS headers are properly configured in CloudFront +2. Verify that your `CORS_ORIGINS` environment variable includes your CDN domain: + +```bash +CORS_ORIGINS=https://yourdomain.com,https://d1234567890.cloudfront.net +``` + +### Cache Invalidation + +To invalidate CloudFront cache after updating assets: + +1. Go to CloudFront console +2. Select your distribution +3. Create an invalidation for `/*` to clear all cached assets + +### SSL Certificate + +For custom domain names with CloudFront: + +1. Request an SSL certificate in AWS Certificate Manager (ACM) +2. Configure the certificate in your CloudFront distribution +3. Update your DNS to point to the CloudFront distribution + + +SSL certificates for CloudFront must be requested in the US East (N. Virginia) region regardless of where your distribution is located. + \ No newline at end of file diff --git a/docs/self-hosted/deployment/performance/optimizing-configurations.md b/self-hosted/deployment/performance/optimizing-configurations.mdx similarity index 82% rename from docs/self-hosted/deployment/performance/optimizing-configurations.md rename to self-hosted/deployment/performance/optimizing-configurations.mdx index 30f09810..bcd36b1e 100644 --- a/docs/self-hosted/deployment/performance/optimizing-configurations.md +++ b/self-hosted/deployment/performance/optimizing-configurations.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "Optimizing Configurations" -title: "Optimizing Configuration for Maximum Performance" +title: Optimizing Configurations +description: Performance optimization guide for Chatwoot self-hosted deployments +sidebarTitle: Optimizing Configurations --- This document helps you to fine-tune various configuration values available in Chatwoot to extract the maximum performance out of your Chatwoot Installation. @@ -27,7 +28,9 @@ The `WEB_CONCURRENCY` environment variable can be used to configure the number o WEB_CONCURRENCY=2 ``` -> Note: The default configuration in Chatwoot for `WEB_CONCURRENCY` is `0`. I.e. it runs one Worker. This is to ensure the application works on machines with a lower configuration. If you run Chatwoot on machines with higher specs, fine-tune this configuration accordingly. + +The default configuration in Chatwoot for `WEB_CONCURRENCY` is `0`. I.e. it runs one Worker. This is to ensure the application works on machines with a lower configuration. If you run Chatwoot on machines with higher specs, fine-tune this configuration accordingly. + ### Threads @@ -43,7 +46,9 @@ Using multiple threads can increase concurrency and performance, but balancing t RAILS_MAX_THREADS=5 ``` -> Note? The default configuration in Chatwoot for `RAILS_MAX_THREADS` values is `5`. You can fine-tune it based on your requirements. The value of `RAILS_MIN_THREADS` defaults to `RAILS_MAX_THREADS` unless a specific value is provided. + +The default configuration in Chatwoot for `RAILS_MAX_THREADS` values is `5`. You can fine-tune it based on your requirements. The value of `RAILS_MIN_THREADS` defaults to `RAILS_MAX_THREADS` unless a specific value is provided. + ### Fine-tuning @@ -70,7 +75,9 @@ You can configure the number of sidekiq workers using the following environment SIDEKIQ_CONCURRENCY=10 ``` -Note: If you are running sidekiq on dedicated pods, you can fine-tune the `SIDEKIQ_CONCURRENCY` number to extract the maximum performance of the available CPU resources. + +If you are running sidekiq on dedicated pods, you can fine-tune the `SIDEKIQ_CONCURRENCY` number to extract the maximum performance of the available CPU resources. + ## Database Connections @@ -85,7 +92,9 @@ https://github.com/chatwoot/chatwoot/blob/4d719a8fe33bed72ec57812e174dab18743153 Ref: - https://stackoverflow.com/questions/40412611/in-puma-how-do-i-calculate-db-connections -> Note: If you have a database server with higher resources available, you can leverage it by bumping up the number of rails and sidekiq pods so that more of the connection limit is being used. + +If you have a database server with higher resources available, you can leverage it by bumping up the number of rails and sidekiq pods so that more of the connection limit is being used. + ### FAQ @@ -96,4 +105,4 @@ There is a potential bug with Chatwoot's implementation of `rack-timeout`, in sp ``` RACK_TIMEOUT_SERVICE_TIMEOUT=0 -``` +``` \ No newline at end of file diff --git a/docs/self-hosted/deployment/requirements.md b/self-hosted/deployment/requirements.mdx similarity index 66% rename from docs/self-hosted/deployment/requirements.md rename to self-hosted/deployment/requirements.mdx index 7be80bc5..6bee4343 100644 --- a/docs/self-hosted/deployment/requirements.md +++ b/self-hosted/deployment/requirements.mdx @@ -1,10 +1,10 @@ --- -sidebar_label: "Requirements" -title: "Chatwoot Self Hosted Requirements" +title: System Requirements +description: Hardware and software requirements for self-hosting Chatwoot +sidebarTitle: Requirements --- - -This page incldues useful information on the requirements that are needed to install and run Chatwoot on your servers. +This page includes useful information on the requirements that are needed to install and run Chatwoot on your servers. ## Operating Systems @@ -12,12 +12,11 @@ This page incldues useful information on the requirements that are needed to ins - Ubuntu (20.04) - Installation of Chatwoot is possible on most unix environments, but not officially supported. ### Microsoft Windows -Chatwoot is developed for Linux-based operating systems. Please consider using a virtual machine to run Chatwoot on windows +Chatwoot is developed for Linux-based operating systems. Please consider using a virtual machine to run Chatwoot on windows. ## Software requirements @@ -35,24 +34,21 @@ We recommend Node 20.x, as it's faster and the latest. Chatwoot uses [webpack](https://webpack.js.org/) to compile frontend assets, which requires a minimum version of Node.js 20.x.0. -You can check which version you're running with `node -v`. If you're running -a version older than `v10.13.0`, you need to update it to a newer version. You -can find instructions to install from community maintained packages or compile -from source at the [Node.js website](https://nodejs.org/en/download/). - +You can check which version you're running with `node -v`. If you're running a version older than `v10.13.0`, you need to update it to a newer version. You can find instructions to install from community maintained packages or compile from source at the [Node.js website](https://nodejs.org/en/download/). ## Hardware requirements ### Storage -The necessary hard drive space largely depends on your usage, the size and number of attachments that you recieve through your conversations etc. +The necessary hard drive space largely depends on your usage, the size and number of attachments that you receive through your conversations etc. -Consider using a storage option provided by AWS, Azure, google cloud etc, if you want to stay flexible and accomodate the growing storage requirements. Chatwoot -also supports other s3 api compatible services viz Minio, DigitalOcean Spaces, Linode Objects etc. + +Consider using a storage option provided by AWS, Azure, Google Cloud etc, if you want to stay flexible and accommodate the growing storage requirements. Chatwoot also supports other S3 API compatible services viz Minio, DigitalOcean Spaces, Linode Objects etc. + ### CPU -CPU requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - how active your users are, how many conversations do you recieve and the conversation channels which you are using. +CPU requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - how active your users are, how many conversations do you receive and the conversation channels which you are using. The following is the recommended minimum CPU hardware guidance for a handful of example Chatwoot conversation base sizes. @@ -62,7 +58,7 @@ The following is the recommended minimum CPU hardware guidance for a handful of ### Memory -Memory requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - How active your users are, how many conversations do you recieve and the conversation channels which you are using. +Memory requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - How active your users are, how many conversations do you receive and the conversation channels which you are using. The following is the recommended minimum Memory hardware guidance for a handful of example Chatwoot conversation base sizes. @@ -71,7 +67,9 @@ The following is the recommended minimum Memory hardware guidance for a handful - 8GB RAM supports up to 20,000 conversations a day. - More conversations? Consider scaling horizontally by adding more application servers. -**Note:** Add at least 1GB of swap memory to the machine to ensure that the machine doesn't run out of resources during an upgrade. + +Add at least 1GB of swap memory to the machine to ensure that the machine doesn't run out of resources during an upgrade. + ## Database @@ -79,26 +77,21 @@ PostgreSQL is the only supported database. We don't have plans to support any ot ### PostgreSQL Requirements -The server running PostgreSQL should have _at least_ 5-10 GB of storage -available, though the exact requirements depends on the usage on your Chatwoot Instance. +The server running PostgreSQL should have _at least_ 5-10 GB of storage available, though the exact requirements depends on the usage on your Chatwoot Instance. We highly recommend using the latest stable PostgreSQL versions as these were used for development and testing. ### Redis -Redis stores the background task queue and various chatwoot configurations cached. -The storage requirements for Redis are minimal, You can start with 100MB and scale up as required. +Redis stores the background task queue and various chatwoot configurations cached. The storage requirements for Redis are minimal, You can start with 100MB and scale up as required. Redis version 7.0 or higher is recommended ## Sidekiq -Sidekiq processes the background jobs with a multi-threaded process. -This process starts with the entire Rails stack but it can grow over time due to memory leaks. -On a very active server the Sidekiq process can use 1GB+ of memory. +Sidekiq processes the background jobs with a multi-threaded process. This process starts with the entire Rails stack but it can grow over time due to memory leaks. On a very active server the Sidekiq process can use 1GB+ of memory. -You can opt to have both the sidekiq workers and rails servers to run on the same machine. -But we recommend keeping the worker process and rails server on seperate webservers for better scalability. +You can opt to have both the sidekiq workers and rails servers to run on the same machine. But we recommend keeping the worker process and rails server on separate webservers for better scalability. ## Supported web browsers @@ -110,5 +103,6 @@ Chatwoot supports the following web browsers: - [Apple Safari](https://www.apple.com/safari/) - [Microsoft Edge](https://www.microsoft.com/en-us/edge) -NOTE: + We don't support running Chatwoot with JavaScript disabled in the browser. + \ No newline at end of file diff --git a/docs/self-hosted/deployment/restack.md b/self-hosted/deployment/restack.mdx similarity index 51% rename from docs/self-hosted/deployment/restack.md rename to self-hosted/deployment/restack.mdx index 39a5fff8..6b2e44d8 100644 --- a/docs/self-hosted/deployment/restack.md +++ b/self-hosted/deployment/restack.mdx @@ -1,77 +1,101 @@ --- -sidebar_label: "AWS with Restack" -title: "Restack Chatwoot production deployment guide" +title: Restack Chatwoot production deployment guide +description: Deploy Chatwoot on AWS with Restack's managed Kubernetes platform +sidebarTitle: AWS with Restack --- ## Getting Started To deploy Chatwoot with Restack: - - [Sign up for a Restack account](#sign-up-for-a-restack-account). - - [Add AWS credentials with AdministratorAccess](#add-aws-credentials-with-administratoraccess). - - [One-click cluster creation with Restack](#one-click-cluster-creation-with-restack). - - [Deploy Chatwoot on Restack](#deploy-chatwoot-on-restack). - - [Start using Chatwoot](#start-using-chatwoot). - - [Deploy multiple instances of Chatwoot](#deploy-multiple-instances-of-chatwoot). +- [Sign up for a Restack account](#sign-up-for-a-restack-account). +- [Add AWS credentials with AdministratorAccess](#add-aws-credentials-with-administratoraccess). +- [One-click cluster creation with Restack](#one-click-cluster-creation-with-restack). +- [Deploy Chatwoot on Restack](#deploy-chatwoot-on-restack). +- [Start using Chatwoot](#start-using-chatwoot). +- [Deploy multiple instances of Chatwoot](#deploy-multiple-instances-of-chatwoot). -**Note:** This is a community contributed installation setup. This will only have community support for any issues in future. + +This is a community contributed installation setup. This will only have community support for any issues in future. + ## Sign up for a Restack account To Sign up for a Restack account, visit [www.restack.io/signup](https://www.restack.io/signup). You can sign up with your corporate email address or your GitHub profile. You do not need a credit card to sign up. -![restack-signup](./images/restack-sign-up.png) + +![restack-signup](/self-hosted/images/restack-sign-up.png) + If you already have an account, go ahead and login to Restack at [www.restack.io/login](https://www.restack.io/login). ## Add AWS credentials with AdministratorAccess -To deploy Chatwoot in your own AWS infrastructure with Restack, you will need to add your credentials as the next step. +To deploy Chatwoot in your own AWS infrastructure with Restack, you will need to add your credentials as the next step. Make sure that this account has *AdministratorAccess*. This is how Restack can ensure an end-to-end cluster creation and cluster management process. 1. Navigate to *Clusters* in the left-hand navigation menu. 2. Select the *Credentials* tab. 3. Click *Add credential*. - ![add-credentials](./images/Add_credentials.png) + +![add-credentials](/self-hosted/images/Add_credentials.png) + 4. Give a suitable title to your credentials for managing them later. 5. Enter your *AWS Access Key ID* and *AWS Secret Access key*. 6. Click *Add credential*. - ![add-aws-credentials](./images/Add_AWS_Creds.png) +![add-aws-credentials](/self-hosted/images/Add_AWS_Creds.png) + + +[How to get your AWS Access key ID and AWS Secret Access Key](https://docs.aws.amazon.com/accounts/latest/reference/root-user-access-key.html) + ->[How to get your AWS Access key ID and AWS Secret Access Key](https://docs.aws.amazon.com/accounts/latest/reference/root-user-access-key.html) ## One-click cluster creation with Restack -:::tip + Why do I need a cluster?
-Running your application on a Kubernetes cluster lets you deploy, scale and monitor the application reliably. -::: -Once you have added your credentials, +Running your application on a Kubernetes cluster lets you deploy, scale and monitor the application reliably. +
+ +Once you have added your credentials, + 1. Navigate to the *Clusters* tab on the same page and click on *Create cluster*. - ![create-cluster](./images/Create_cluster.png) + +![create-cluster](/self-hosted/images/Create_cluster.png) + 2. Give a suitable name to your cluster. 3. Select the region you want to deploy the cluster in. 4. Select the AWS credentials you added in the previous step. - ![cluster-details](./images/Cluster_details.png) -The cluster creation process will start automatically. Once the cluster is ready, you will get an email on the email id connected with your account.
Creating a cluster is a one-time process. From here you can add other open source tools or multiple instances of Chatwoot in the same cluster. +![cluster-details](/self-hosted/images/Cluster_details.png) + +The cluster creation process will start automatically. Once the cluster is ready, you will get an email on the email id connected with your account.
Creating a cluster is a one-time process. From here you can add other open source tools or multiple instances of Chatwoot in the same cluster. -![creating-cluster](./images/Creating_cluster.png) -![cluster-created](./images/Cluster_created.png) +![creating-cluster](/self-hosted/images/Creating_cluster.png) -Any application you deploy in your cluster will be accessible via a free **restack domain**.
Contact the Restack team via chat to set a custom domain for your Chatwoot instances. +![cluster-created](/self-hosted/images/Cluster_created.png) + +Any application you deploy in your cluster will be accessible via a free **restack domain**.
Contact the Restack team via chat to set a custom domain for your Chatwoot instances. ## Deploy Chatwoot on Restack + 1. Click *Add application* from the Cluster description or go to the Applications tab in the left hand side navigation. 2. Click *Chatwoot*. - ![select-chatwoot](./images/Select_Chatwoot.png) + +![select-chatwoot](/self-hosted/images/Select_Chatwoot.png) + 3. Select the cluster you have already provisioned. 4. Click *Add application*. ## Start using Chatwoot + Chatwoot will be deployed on your cluster and you can access it using the link under the *URL* tab. -![chatwoot-deployed](./images/Chatwoot_deployed.png) + +![chatwoot-deployed](/self-hosted/images/Chatwoot_deployed.png) + You can also check the workloads and volumes that are deployed within Chatwoot. -![access-chatwoot](./images/Chatwoot_access.png) + +![access-chatwoot](/self-hosted/images/Chatwoot_access.png) ## Deploy multiple instances of Chatwoot -Restack makes it easier to deploy multiple instances of Chatwoot on the same or multiple clusters.
So you can test the latest version before upgrading or have a dedicated instance for development and for production. + +Restack makes it easier to deploy multiple instances of Chatwoot on the same or multiple clusters.
So you can test the latest version before upgrading or have a dedicated instance for development and for production. \ No newline at end of file diff --git a/docs/self-hosted/deployment/storage/gcs-bucket.md b/self-hosted/deployment/storage/gcs-bucket.mdx similarity index 76% rename from docs/self-hosted/deployment/storage/gcs-bucket.md rename to self-hosted/deployment/storage/gcs-bucket.mdx index 36ae5880..8d7affb2 100644 --- a/docs/self-hosted/deployment/storage/gcs-bucket.md +++ b/self-hosted/deployment/storage/gcs-bucket.mdx @@ -1,6 +1,7 @@ --- -sidebar_label: "GCS Bucket" -title: "Configure GCS as storage in Chatwoot" +title: GCS Bucket +description: Configure Google Cloud Storage bucket as storage in Chatwoot +sidebarTitle: GCS Bucket --- Chatwoot supports Google Cloud storage as the storage provider. To enable GCS in Chatwoot, follow the below mentioned steps. @@ -11,49 +12,49 @@ Set google as the active storage service in the environment variables ACTIVE_STORAGE_SERVICE='google' ``` -### Get project ID variable +## Get project ID variable Login to your Google Cloud console. On your home page of your project you will be able to see the project id and project name as follows. -![get-your-project-id](./images/get-your-project-id.png) +![get-your-project-id](/self-hosted/images/get-your-project-id.png) ```bash GCS_PROJECT=your-project-id ``` -### Setup GCS Bucket +## Setup GCS Bucket Go to Storage -> Browser. Click on "Create Bucket". You will be presented with a screen as shown below. Select the default values and continue. -![create-a-bucket](./images/create-a-bucket.png) +![create-a-bucket](/self-hosted/images/create-a-bucket.png) Once this is done you will get the bucket name. Set this as GCS_BUCKET. -``` +```bash GCS_BUCKET=your-bucket-name ``` -### Setup a service account +## Setup a service account Go to `Identity & Services -> Identity -> Service Accounts`. Click on "Create Service Account". Provice a name and an ID for the service account, click on create. You will be asked to "Grant this service account access to the project" Select Cloud Storage -> Storage Admin as shown below. -![storage-admin](./images/storage-admin.png) +![storage-admin](/self-hosted/images/storage-admin.png) -### Add service account to the bucket +## Add service account to the bucket Go to Storage -> Browser -> Your bucket -> Permissions. Click on add. On "New members" field select the service account you just created. Select role as `Cloud Storage -> Storage Admin` and save. -![permissions](./images/permissions.png) +![permissions](/self-hosted/images/permissions.png) -### Generate a key for the service account +## Generate a key for the service account Go to `Identity & Services -> Identity -> Service Accounts -> Your service account`. There is a section called **Keys**. Click on **Add Key**. You will be presented with an option like the one below. Select JSON from the option. -![json](./images/json.png) +![json](/self-hosted/images/json.png) Copy the json file content and set it as GCS_CREDENTIALS @@ -75,8 +76,10 @@ A sample credential file is of the following format. ``` When pasting the credentials to the ENV file, make sure to remove the new lines and paste it into a single line. -``` +```bash GCS_CREDENTIALS={"type": "service_account","project_id": "","private_key_id": "","private_key": "","client_email": "","client_id": "","auth_uri": "","token_uri": "","auth_provider_x509_cert_url": "","client_x509_cert_url": ""} ``` -**Note**: If you are running Chatwoot v2.17+, make sure to wrap `GCS_CREDENTIALS` in single quotes. + +If you are running Chatwoot v2.17+, make sure to wrap `GCS_CREDENTIALS` in single quotes. + \ No newline at end of file diff --git a/docs/self-hosted/deployment/storage/s3-bucket.md b/self-hosted/deployment/storage/s3-bucket.mdx similarity index 88% rename from docs/self-hosted/deployment/storage/s3-bucket.md rename to self-hosted/deployment/storage/s3-bucket.mdx index e2df5849..8e4651f5 100644 --- a/docs/self-hosted/deployment/storage/s3-bucket.md +++ b/self-hosted/deployment/storage/s3-bucket.mdx @@ -1,9 +1,10 @@ --- -sidebar_label: "S3 bucket" -title: "Configuring S3 Bucket as storage in Chatwoot" +title: S3 Bucket +description: Configure Amazon S3 bucket as storage in Chatwoot +sidebarTitle: S3 Bucket --- -### Using Amazon S3 +## Using Amazon S3 You can get started with [Creating an S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) and [Create an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) to configure the following details. @@ -17,7 +18,7 @@ AWS_SECRET_ACCESS_KEY= AWS_REGION= ``` -### S3 Bucket policy +## S3 Bucket policy Inorder to use S3 bucket in Chatwoot, a policy has to be set with the correct credentials. A sample policy is given below, as the listed actions are required for the storage to work. @@ -53,11 +54,11 @@ Replace your *bucket name* in the appropriate places. 1. Login to AWS Console. Go to IAM, and click on Users from the left sidebar. You will be to see the list of users as follows. -![s3-users-list](./images/s3-users-list.png) +![s3-users-list](/self-hosted/images/s3-users-list.png) 2. Click on the user, you will be to see a screen as shown below. Copy the User ARN and paste it in the above policy. -![user-arn](./images/user-arn.png) +![user-arn](/self-hosted/images/user-arn.png) **Add CORS Configuration on your S3 buckets** @@ -71,11 +72,11 @@ To make CORS configuration changes on S3: 2. Click on the permissions tab. 3. Scroll to Cross-origin resource sharing (CORS) and click on `Edit` and add the respective changes shown below. -![aws-cors-setup](./images/aws-cors-setup.png) +![aws-cors-setup](/self-hosted/images/aws-cors-setup.png) Add your Chatwoot URL to the `AllowedOrigin` as shown below. -``` +```json [ { "AllowedHeaders": [ @@ -99,5 +100,4 @@ Add your Chatwoot URL to the `AllowedOrigin` as shown below. "MaxAgeSeconds": 3600 } ] -``` - +``` \ No newline at end of file diff --git a/docs/self-hosted/deployment/storage/supported-providers.md b/self-hosted/deployment/storage/supported-providers.mdx similarity index 70% rename from docs/self-hosted/deployment/storage/supported-providers.md rename to self-hosted/deployment/storage/supported-providers.mdx index d82e630c..cc008d61 100644 --- a/docs/self-hosted/deployment/storage/supported-providers.md +++ b/self-hosted/deployment/storage/supported-providers.mdx @@ -1,9 +1,18 @@ --- -sidebar_label: "Supported Providers" -title: "Configure Cloud Storage" +title: Supported Providers +description: Configure cloud storage providers for Chatwoot file storage +sidebarTitle: Supported Providers --- -### Using Amazon S3 +# Configure Cloud Storage + +Chatwoot uses [Active Storage](https://edgeguides.rubyonrails.org/active_storage_overview.html) for storing attachments. The default storage option is local storage on your server, but you can configure cloud providers for better scalability and backup. + + +It is recommended to use a cloud provider for your Chatwoot storage to ensure proper backup of stored attachments and prevent data loss. + + +## Using Amazon S3 You can get started with [Creating an S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) and [Create an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) to configure the following details. @@ -17,10 +26,11 @@ AWS_SECRET_ACCESS_KEY= AWS_REGION= ``` +## Using Google GCS -### Using Google GCS - -**Note**: Starting with version 2.17+, wrap the `GCS_CREDENTIALS` environment variable in single quotes. + +Starting with version 2.17+, wrap the `GCS_CREDENTIALS` environment variable in single quotes. + Configure the following env variables. @@ -49,11 +59,11 @@ The value of the `GCS_CREDENTIALS` should be a json formatted string containing ``` When pasting the credentials to the ENV file, make sure to remove the new lines and paste it into a single line. -``` +```bash GCS_CREDENTIALS={"type": "service_account","project_id": "","private_key_id": "","private_key": "","client_email": "","client_id": "","auth_uri": "","token_uri": "","auth_provider_x509_cert_url": "","client_x509_cert_url": ""} ``` -### Using Microsoft Azure +## Using Microsoft Azure Configure the following env variables. @@ -64,8 +74,7 @@ AZURE_STORAGE_ACCESS_KEY= AZURE_STORAGE_CONTAINER= ``` - -### Using Amazon S3 Compatible Service +## Using Amazon S3 Compatible Service To use an s3 compatible service such as [DigitalOcean Spaces](https://www.digitalocean.com/docs/spaces/resources/s3-sdk-examples/#configure-a-client), Minio etc.. diff --git a/docs/self-hosted/deployment/upgrade.md b/self-hosted/deployment/upgrade.mdx similarity index 75% rename from docs/self-hosted/deployment/upgrade.md rename to self-hosted/deployment/upgrade.mdx index 640aa5bd..35c9c6e2 100644 --- a/docs/self-hosted/deployment/upgrade.md +++ b/self-hosted/deployment/upgrade.mdx @@ -1,18 +1,22 @@ --- -sidebar_label: "Upgrade " -title: "Upgrading your Chatwoot installation" +title: Upgrading your Chatwoot installation +description: Step-by-step guide to upgrade Chatwoot across different deployment methods +sidebarTitle: Upgrade --- ## Linux VM Whenever a new version of Chatwoot is released, use the following steps to upgrade your instance. -> **Note** To install `cwctl`, refer [this](#install-or-upgrade-chatwoot-cli) section below. + +To install `cwctl`, refer [this](#install-or-upgrade-chatwoot-cli) section below. + -> **Note** If you are on an older version of Chatwoot(< 2.7), follow the [manual upgrade steps](/docs/self-hosted/deployment/linux-vm#upgrading-to-a-newer-version-of-chatwoot) if you face errors with `cwctl`. + +If you are on an older version of Chatwoot(< 2.7), follow the [manual upgrade steps](/self-hosted/deployment/linux-vm#upgrading-to-a-newer-version-of-chatwoot) if you face errors with `cwctl`. + - -``` +```bash cwctl --upgrade ``` @@ -22,7 +26,7 @@ This upgrade method is applicable for all manual linux installations including i Update the images using the latest image from chatwoot. -``` +```bash docker-compose down docker-compose pull docker-compose up -d @@ -30,7 +34,7 @@ docker-compose up -d Run the `rails db:chatwoot_prepare` option after accessing the console from one of the containers running the latest image. -``` +```bash docker exec -it $(basename $(pwd))-rails-1 sh -c 'RAILS_ENV=production bundle exec rails db:chatwoot_prepare' ``` @@ -40,7 +44,7 @@ This upgrade guide is applicable for Chatwoot DigitalOcean 1-click k8s app and a Do `helm repo update` and check the version of charts that is going to be installed. Helm charts follows semantic versioning and so if the MAJOR version is different from your installed version, there might be breaking changes. Please refer to the changelog before upgrading. -``` +```bash # update helm repositories helm repo update # list your current installed version @@ -49,7 +53,7 @@ helm list helm search repo chatwoot ``` -``` +```bash #if it is major version update, refer to the changelog before proceeding helm upgrade chatwoot chatwoot/chatwoot -f .yaml ``` diff --git a/docs/self-hosted/enterprise-edition.md b/self-hosted/enterprise-edition.mdx similarity index 90% rename from docs/self-hosted/enterprise-edition.md rename to self-hosted/enterprise-edition.mdx index 7eec5f7d..6fd1e1b3 100644 --- a/docs/self-hosted/enterprise-edition.md +++ b/self-hosted/enterprise-edition.mdx @@ -1,6 +1,6 @@ --- -sidebar_label: 'Enterprise Edition' title: 'Managing Enterprise Edition Features' +description: 'Learn how to manage and configure Chatwoot Enterprise Edition features including licensing, pricing, and advanced capabilities' --- Chatwoot Enterprise Edition is a proprietary version of Chatwoot software designed for larger organizations that require advanced features such as Whitelabeling, SLA Management, Audit Logs, Agent Capacity Managment, etc. It is developed from the same GitHub repository as the Community Edition but includes additional, proprietary features aimed at supporting commercial business needs. @@ -14,7 +14,8 @@ To activate the Enterprise Plan, head over to the `Settings` tab in your Super A Our pricing plans start at $19 per agent per month. For more detailed information, please refer to the [self-hosted pricing plans](https://chatwoot.com/pricing/self-hosted-plans). ### Settings Overview -Manage Enterprise Plan + +Manage Enterprise Plan - `Installation Identifier`: This is the unique identifier used to identify an installation and associate a license with that installation. - `Manage Plan`: Redirects to the Stripe portal where you can purchase the appropriate number of licenses. @@ -29,6 +30,7 @@ Our pricing plans start at $19 per agent per month. For more detailed informatio No, at the moment Chatwoot only offers per agent per month plans. If you are looking at a large number of agents, you can reach out to us at `sales@chatwoot.com` for custom plans. ### Transferring licenses? + If you are moving the installation between servers and doing so with a database backup, the original installation identifier is retained, and you don't need to activate the license again. -If for some reason you decide to delete an existing licensed installation and want to do a new installation, please reach out to Chatwoot support, and our team can help you transfer the license to your new installation. +If for some reason you decide to delete an existing licensed installation and want to do a new installation, please reach out to Chatwoot support, and our team can help you transfer the license to your new installation. \ No newline at end of file diff --git a/docs/self-hosted/faq.md b/self-hosted/faq.mdx similarity index 76% rename from docs/self-hosted/faq.md rename to self-hosted/faq.mdx index 7586c503..3c169551 100644 --- a/docs/self-hosted/faq.md +++ b/self-hosted/faq.mdx @@ -1,11 +1,10 @@ --- -sidebar_label: 'FAQ' -title: 'Frequently asked questions' +title: 'Frequently Asked Questions' +description: 'Common questions and answers about self-hosted Chatwoot installation, support, and best practices' --- This document is a place to search for frequently asked questions in the Chatwoot community about the processes, support and best practices. - ## How to get support? The chatwoot team provides support over the following channels. Please choose the appropriate medium based on the type of your query and resolution expectations. @@ -18,19 +17,19 @@ The chatwoot team provides support over the following channels. Please choose th **Premium Support**: Available for customers having a commerical contract with Chatwoot or subscribers of a paid plan. This includes both Chatwoot Cloud Customers and Self-hosted Customers. - -| Channel Type | Response Expectations | Query Types +| Channel Type | Response Expectations | Query Types | |----------|-------------|------| -| Chat Wiget | Real-time responses based on online agent availability. Cloud customers can use the in-product Support option for priority resolutions.
Email follow-ups in 2 Business Days or per SLA | Business Enquiries, Premium Support | -| [Email](mailto:hello@chatwoot.com) | Responses in 2 Business Days or as per SLA | Business Enquiries, Premium Support | -| [Github](https://github.com/chatwoot/chatwoot) | Responses in 5 Business Days or per SLA | Developer Support, Product Support, Premium Support| -| [Discord](https://discord.gg/cJXdrwS) | Community Support Based on availability. Contributors support based on availability | Developer Support, Product Support, Premium Support | +| Chat Widget | Real-time responses based on online agent availability. Cloud customers can use the in-product Support option for priority resolutions.
Email follow-ups in 2 Business Days or per SLA | Business Enquiries, Premium Support | +| [Email](mailto:hello@chatwoot.com) | Responses in 2 Business Days or as per SLA | Business Enquiries, Premium Support | +| [Github](https://github.com/chatwoot/chatwoot) | Responses in 5 Business Days or per SLA | Developer Support, Product Support, Premium Support | +| [Discord](https://discord.gg/cJXdrwS) | Community Support Based on availability. Contributors support based on availability | Developer Support, Product Support, Premium Support | -> Notes: The Chatwoot team tries to resolve queries in public forums. So please avoid DMing, the contributors unless sensitive information is involved. + +The Chatwoot team tries to resolve queries in public forums. So please avoid DMing, the contributors unless sensitive information is involved. - Chatwoot team doesn't provide one-time installation services at the moment due to limited resources. - Chatwoot team doesn't provide bug fixes and support for older/modified versions of the software. Therefore, please ensure that you have the latest version of software running when reporting bugs. - + ## How to promote Chatwoot Services? @@ -40,8 +39,9 @@ We encourage the community to build and promote Chatwoot related services. You c 2. [Show and tell - (GitHub Discussions)](https://github.com/chatwoot/chatwoot/discussions/categories/show-and-tell): Use the Channel to showcase a Chatwoot related service / Custom Integrations that you have built. Examples include Chatwoot Hosting services, Services built on top of Chatwoot etc 3. [Discord Channels](https://discord.gg/cJXdrwS) : Use appropriate discord Channels like `#intro` , `#general`. -> Note: spamming channels with repetitive messages, Hijacking threads with unrelated promotional messages isn't allowed and will be handled according to the [Code of Conduct](/contributing-guide/code-of-conduct#3-temporary-ban). - + +Spamming channels with repetitive messages, Hijacking threads with unrelated promotional messages isn't allowed and will be handled according to the [Code of Conduct](/contributing-guide/code-of-conduct#3-temporary-ban). + ## How can I customise the Chatwoot Branding ? @@ -69,33 +69,38 @@ Chatwoot team doesn't encourage the following cases: - Use cases that directly compete with Chatwoot Business offerings.
examples: clones of Chatwoot Cloud (SaaS), Rebranding Services, etc - ## How to debug SMTP Email errors in Chatwoot? Suppose you run into issues with the agent mailers ( account confirmation, password reset, etc.) and email Channels in Chatwoot. Then, you can go through the following steps to debug your SMTP configurations. ### Step 1: Check your SMTP configuration + Ensure that the intended config matches what is configured in the system. If there are discrepancies, you should double-check your environment variables. #### Viewing the SMTP config for the Installation -Run the following command from the [Rails Console](/docs/self-hosted/monitoring/super-admin-sidekiq/). -``` + +Run the following command from the [Rails Console](/self-hosted/monitoring/super-admin-sidekiq). + +```ruby ActionMailer::Base.smtp_settings ``` #### Viewing the SMTP config for an Inbox -Run the following command from the [Rails Console](/docs/self-hosted/monitoring/super-admin-sidekiq/). -``` + +Run the following command from the [Rails Console](/self-hosted/monitoring/super-admin-sidekiq). + +```ruby # replace `inbox_id` with your Inbox Id Inbox.find(inbox_id).channel ``` ### Step 2: Validate your SMTP config by sending an Email + If you find the config is as intended, Try sending an email from the Rails Console using your config. -Run the following script from the [Rails Console](/docs/self-hosted/monitoring/super-admin-sidekiq/). -``` +Run the following script from the [Rails Console](/self-hosted/monitoring/super-admin-sidekiq). +```ruby # Fill values for appropriate settings # Remove the keys which aren't relevant to your use case smtp_settings = { @@ -117,12 +122,13 @@ mailer.smtp_settings = smtp_settings # replace with your values for the mail mailer.mail(from: 'sender@example.com', to: 'recipient@example.com', subject: 'test', body: "Hello, you've got mail!").deliver - ``` -If the configuration is correct, You should receive the email in the recipient's Inbox. In other cases, Fix the config as per the returned error and reconfigure the values in Chatwoot Environment variables with the correct values. -> Note: If you are still facing errors, Please check your Sidekiq worker logs or [Sidekiq UI](/docs/self-hosted/monitoring/super-admin-sidekiq/) for any errors. +If the configuration is correct, You should receive the email in the recipient's Inbox. In other cases, Fix the config as per the returned error and reconfigure the values in Chatwoot Environment variables with the correct values. + +If you are still facing errors, Please check your Sidekiq worker logs or [Sidekiq UI](/self-hosted/monitoring/super-admin-sidekiq) for any errors. + ## How to Fix the Onboarding Screen Issue in Chatwoot? @@ -136,6 +142,3 @@ If you have deployed Chatwoot and the login page is shown instead of the onboard 2. Restart Chatwoot. This should resolve the issue, and the onboarding screen should be displayed as expected. - - - diff --git a/docs/self-hosted/deployment/images/Add_AWS_Creds.png b/self-hosted/images/Add_AWS_Creds.png similarity index 100% rename from docs/self-hosted/deployment/images/Add_AWS_Creds.png rename to self-hosted/images/Add_AWS_Creds.png diff --git a/docs/self-hosted/deployment/images/Add_credentials.png b/self-hosted/images/Add_credentials.png similarity index 100% rename from docs/self-hosted/deployment/images/Add_credentials.png rename to self-hosted/images/Add_credentials.png diff --git a/docs/self-hosted/deployment/images/Chatwoot_access.png b/self-hosted/images/Chatwoot_access.png similarity index 100% rename from docs/self-hosted/deployment/images/Chatwoot_access.png rename to self-hosted/images/Chatwoot_access.png diff --git a/docs/self-hosted/deployment/images/Chatwoot_deployed.png b/self-hosted/images/Chatwoot_deployed.png similarity index 100% rename from docs/self-hosted/deployment/images/Chatwoot_deployed.png rename to self-hosted/images/Chatwoot_deployed.png diff --git a/docs/self-hosted/deployment/images/Cluster_created.png b/self-hosted/images/Cluster_created.png similarity index 100% rename from docs/self-hosted/deployment/images/Cluster_created.png rename to self-hosted/images/Cluster_created.png diff --git a/docs/self-hosted/deployment/images/Cluster_details.png b/self-hosted/images/Cluster_details.png similarity index 100% rename from docs/self-hosted/deployment/images/Cluster_details.png rename to self-hosted/images/Cluster_details.png diff --git a/docs/self-hosted/deployment/images/Create_cluster.png b/self-hosted/images/Create_cluster.png similarity index 100% rename from docs/self-hosted/deployment/images/Create_cluster.png rename to self-hosted/images/Create_cluster.png diff --git a/docs/self-hosted/deployment/images/Creating_cluster.png b/self-hosted/images/Creating_cluster.png similarity index 100% rename from docs/self-hosted/deployment/images/Creating_cluster.png rename to self-hosted/images/Creating_cluster.png diff --git a/docs/self-hosted/deployment/images/Select_Chatwoot.png b/self-hosted/images/Select_Chatwoot.png similarity index 100% rename from docs/self-hosted/deployment/images/Select_Chatwoot.png rename to self-hosted/images/Select_Chatwoot.png diff --git a/docs/self-hosted/deployment/images/architecture.png b/self-hosted/images/architecture.png similarity index 100% rename from docs/self-hosted/deployment/images/architecture.png rename to self-hosted/images/architecture.png diff --git a/docs/self-hosted/deployment/images/aws-01-architecture.png b/self-hosted/images/aws-01-architecture.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-01-architecture.png rename to self-hosted/images/aws-01-architecture.png diff --git a/docs/self-hosted/deployment/images/aws-02-create-vpc.png b/self-hosted/images/aws-02-create-vpc.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-02-create-vpc.png rename to self-hosted/images/aws-02-create-vpc.png diff --git a/docs/self-hosted/deployment/images/aws-03-create-subnet.png b/self-hosted/images/aws-03-create-subnet.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-03-create-subnet.png rename to self-hosted/images/aws-03-create-subnet.png diff --git a/docs/self-hosted/deployment/images/aws-04-create-igw.png b/self-hosted/images/aws-04-create-igw.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-04-create-igw.png rename to self-hosted/images/aws-04-create-igw.png diff --git a/docs/self-hosted/deployment/images/aws-05-create-nat.png b/self-hosted/images/aws-05-create-nat.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-05-create-nat.png rename to self-hosted/images/aws-05-create-nat.png diff --git a/docs/self-hosted/deployment/images/aws-06-create-rt.png b/self-hosted/images/aws-06-create-rt.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-06-create-rt.png rename to self-hosted/images/aws-06-create-rt.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-01-subscribe.png b/self-hosted/images/aws-ami/awsmp-01-subscribe.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-01-subscribe.png rename to self-hosted/images/aws-ami/awsmp-01-subscribe.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-02-signin.png b/self-hosted/images/aws-ami/awsmp-02-signin.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-02-signin.png rename to self-hosted/images/aws-ami/awsmp-02-signin.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-03-continue.png b/self-hosted/images/aws-ami/awsmp-03-continue.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-03-continue.png rename to self-hosted/images/aws-ami/awsmp-03-continue.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-04-configure.png b/self-hosted/images/aws-ami/awsmp-04-configure.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-04-configure.png rename to self-hosted/images/aws-ami/awsmp-04-configure.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-05-launch.png b/self-hosted/images/aws-ami/awsmp-05-launch.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-05-launch.png rename to self-hosted/images/aws-ami/awsmp-05-launch.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-06-sg.png b/self-hosted/images/aws-ami/awsmp-06-sg.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-06-sg.png rename to self-hosted/images/aws-ami/awsmp-06-sg.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-07-sg.png b/self-hosted/images/aws-ami/awsmp-07-sg.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-07-sg.png rename to self-hosted/images/aws-ami/awsmp-07-sg.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-08-keypair.png b/self-hosted/images/aws-ami/awsmp-08-keypair.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-08-keypair.png rename to self-hosted/images/aws-ami/awsmp-08-keypair.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-09-launch.png b/self-hosted/images/aws-ami/awsmp-09-launch.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-09-launch.png rename to self-hosted/images/aws-ami/awsmp-09-launch.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-10-ec2.png b/self-hosted/images/aws-ami/awsmp-10-ec2.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-10-ec2.png rename to self-hosted/images/aws-ami/awsmp-10-ec2.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-11-public-ip.png b/self-hosted/images/aws-ami/awsmp-11-public-ip.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-11-public-ip.png rename to self-hosted/images/aws-ami/awsmp-11-public-ip.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-12-chatwoot.png b/self-hosted/images/aws-ami/awsmp-12-chatwoot.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-12-chatwoot.png rename to self-hosted/images/aws-ami/awsmp-12-chatwoot.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-13-connect.png b/self-hosted/images/aws-ami/awsmp-13-connect.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-13-connect.png rename to self-hosted/images/aws-ami/awsmp-13-connect.png diff --git a/docs/self-hosted/deployment/images/aws-ami/awsmp-14-connect.png b/self-hosted/images/aws-ami/awsmp-14-connect.png similarity index 100% rename from docs/self-hosted/deployment/images/aws-ami/awsmp-14-connect.png rename to self-hosted/images/aws-ami/awsmp-14-connect.png diff --git a/docs/self-hosted/deployment/storage/images/aws-cors-setup.png b/self-hosted/images/aws-cors-setup.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/aws-cors-setup.png rename to self-hosted/images/aws-cors-setup.png diff --git a/docs/self-hosted/deployment/images/azure.png b/self-hosted/images/azure.png similarity index 100% rename from docs/self-hosted/deployment/images/azure.png rename to self-hosted/images/azure.png diff --git a/docs/self-hosted/deployment/images/caprover-websocket.png b/self-hosted/images/caprover-websocket.png similarity index 100% rename from docs/self-hosted/deployment/images/caprover-websocket.png rename to self-hosted/images/caprover-websocket.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/cache-behaviour.png b/self-hosted/images/cloudfront/cache-behaviour.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/cache-behaviour.png rename to self-hosted/images/cloudfront/cache-behaviour.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/cdn-distribution-settings.png b/self-hosted/images/cloudfront/cdn-distribution-settings.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/cdn-distribution-settings.png rename to self-hosted/images/cloudfront/cdn-distribution-settings.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/create-distribution.png b/self-hosted/images/cloudfront/create-distribution.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/create-distribution.png rename to self-hosted/images/cloudfront/create-distribution.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/extra-headers.png b/self-hosted/images/cloudfront/extra-headers.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/extra-headers.png rename to self-hosted/images/cloudfront/extra-headers.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/origin-settings.png b/self-hosted/images/cloudfront/origin-settings.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/origin-settings.png rename to self-hosted/images/cloudfront/origin-settings.png diff --git a/docs/self-hosted/deployment/performance/images/cloudfront/web-delivery-method.png b/self-hosted/images/cloudfront/web-delivery-method.png similarity index 100% rename from docs/self-hosted/deployment/performance/images/cloudfront/web-delivery-method.png rename to self-hosted/images/cloudfront/web-delivery-method.png diff --git a/docs/self-hosted/deployment/storage/images/create-a-bucket.png b/self-hosted/images/create-a-bucket.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/create-a-bucket.png rename to self-hosted/images/create-a-bucket.png diff --git a/docs/self-hosted/deployment/images/do.png b/self-hosted/images/do.png similarity index 100% rename from docs/self-hosted/deployment/images/do.png rename to self-hosted/images/do.png diff --git a/docs/self-hosted/deployment/images/elestio-dash.png b/self-hosted/images/elestio-dash.png similarity index 100% rename from docs/self-hosted/deployment/images/elestio-dash.png rename to self-hosted/images/elestio-dash.png diff --git a/docs/self-hosted/deployment/images/elestio-version.png b/self-hosted/images/elestio-version.png similarity index 100% rename from docs/self-hosted/deployment/images/elestio-version.png rename to self-hosted/images/elestio-version.png diff --git a/docs/self-hosted/deployment/images/elestio.png b/self-hosted/images/elestio.png similarity index 100% rename from docs/self-hosted/deployment/images/elestio.png rename to self-hosted/images/elestio.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/add-client-secret.png b/self-hosted/images/entra/add-client-secret.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/add-client-secret.png rename to self-hosted/images/entra/add-client-secret.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/client-secret-value.png b/self-hosted/images/entra/client-secret-value.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/client-secret-value.png rename to self-hosted/images/entra/client-secret-value.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/microsoft-channel.png b/self-hosted/images/entra/microsoft-channel.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/microsoft-channel.png rename to self-hosted/images/entra/microsoft-channel.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/optional-claims.png b/self-hosted/images/entra/optional-claims.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/optional-claims.png rename to self-hosted/images/entra/optional-claims.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/permissions.png b/self-hosted/images/entra/permissions.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/permissions.png rename to self-hosted/images/entra/permissions.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/register-an-app.png b/self-hosted/images/entra/register-an-app.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/register-an-app.png rename to self-hosted/images/entra/register-an-app.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/entra/registration-complete.png b/self-hosted/images/entra/registration-complete.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/entra/registration-complete.png rename to self-hosted/images/entra/registration-complete.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook-create-app.png b/self-hosted/images/facebook/facebook-create-app.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook-create-app.png rename to self-hosted/images/facebook/facebook-create-app.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_domain.png b/self-hosted/images/facebook/facebook_app_domain.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_domain.png rename to self-hosted/images/facebook/facebook_app_domain.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_id.png b/self-hosted/images/facebook/facebook_app_id.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_id.png rename to self-hosted/images/facebook/facebook_app_id.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_login.png b/self-hosted/images/facebook/facebook_app_login.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_app_login.png rename to self-hosted/images/facebook/facebook_app_login.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_business.png b/self-hosted/images/facebook/facebook_business.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_business.png rename to self-hosted/images/facebook/facebook_business.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_business_details.png b/self-hosted/images/facebook/facebook_business_details.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_business_details.png rename to self-hosted/images/facebook/facebook_business_details.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_callback_pages.png b/self-hosted/images/facebook/facebook_callback_pages.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_callback_pages.png rename to self-hosted/images/facebook/facebook_callback_pages.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_callback_url.png b/self-hosted/images/facebook/facebook_callback_url.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_callback_url.png rename to self-hosted/images/facebook/facebook_callback_url.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_product.png b/self-hosted/images/facebook/facebook_messenger_product.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_product.png rename to self-hosted/images/facebook/facebook_messenger_product.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_section.png b/self-hosted/images/facebook/facebook_messenger_section.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_section.png rename to self-hosted/images/facebook/facebook_messenger_section.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_settings.png b/self-hosted/images/facebook/facebook_messenger_settings.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_messenger_settings.png rename to self-hosted/images/facebook/facebook_messenger_settings.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_other_app.png b/self-hosted/images/facebook/facebook_other_app.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_other_app.png rename to self-hosted/images/facebook/facebook_other_app.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_page_config.png b/self-hosted/images/facebook/facebook_page_config.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_page_config.png rename to self-hosted/images/facebook/facebook_page_config.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_page_subscription.png b/self-hosted/images/facebook/facebook_page_subscription.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_page_subscription.png rename to self-hosted/images/facebook/facebook_page_subscription.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/facebook_sdk_login.png b/self-hosted/images/facebook/facebook_sdk_login.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/facebook_sdk_login.png rename to self-hosted/images/facebook/facebook_sdk_login.png diff --git a/docs/self-hosted/configuration/features/integrations/images/facebook/fb_api_version.png b/self-hosted/images/facebook/fb_api_version.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/facebook/fb_api_version.png rename to self-hosted/images/facebook/fb_api_version.png diff --git a/docs/self-hosted/deployment/images/gcp.png b/self-hosted/images/gcp.png similarity index 100% rename from docs/self-hosted/deployment/images/gcp.png rename to self-hosted/images/gcp.png diff --git a/docs/self-hosted/deployment/storage/images/get-your-project-id.png b/self-hosted/images/get-your-project-id.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/get-your-project-id.png rename to self-hosted/images/get-your-project-id.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/google/add-scope-demo.gif b/self-hosted/images/google/add-scope-demo.gif similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/google/add-scope-demo.gif rename to self-hosted/images/google/add-scope-demo.gif diff --git a/docs/self-hosted/configuration/features/email-channel/images/google/oauth-app-setup.png b/self-hosted/images/google/oauth-app-setup.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/google/oauth-app-setup.png rename to self-hosted/images/google/oauth-app-setup.png diff --git a/docs/self-hosted/img/instagram-review/i-g-review-3.png b/self-hosted/images/instagram-review/i-g-review-3.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i-g-review-3.png rename to self-hosted/images/instagram-review/i-g-review-3.png diff --git a/docs/self-hosted/img/instagram-review/i.g-add-platform.png b/self-hosted/images/instagram-review/i.g-add-platform.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-add-platform.png rename to self-hosted/images/instagram-review/i.g-add-platform.png diff --git a/docs/self-hosted/img/instagram-review/i.g-app-settings.png b/self-hosted/images/instagram-review/i.g-app-settings.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-app-settings.png rename to self-hosted/images/instagram-review/i.g-app-settings.png diff --git a/docs/self-hosted/img/instagram-review/i.g-business-review.png b/self-hosted/images/instagram-review/i.g-business-review.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-business-review.png rename to self-hosted/images/instagram-review/i.g-business-review.png diff --git a/docs/self-hosted/img/instagram-review/i.g-data-handling-questions.png b/self-hosted/images/instagram-review/i.g-data-handling-questions.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-data-handling-questions.png rename to self-hosted/images/instagram-review/i.g-data-handling-questions.png diff --git a/docs/self-hosted/img/instagram-review/i.g-data-handling.png b/self-hosted/images/instagram-review/i.g-data-handling.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-data-handling.png rename to self-hosted/images/instagram-review/i.g-data-handling.png diff --git a/docs/self-hosted/img/instagram-review/i.g-permission-requests.png b/self-hosted/images/instagram-review/i.g-permission-requests.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-permission-requests.png rename to self-hosted/images/instagram-review/i.g-permission-requests.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-1.png b/self-hosted/images/instagram-review/i.g-review-1.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-1.png rename to self-hosted/images/instagram-review/i.g-review-1.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-2.png b/self-hosted/images/instagram-review/i.g-review-2.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-2.png rename to self-hosted/images/instagram-review/i.g-review-2.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-edit.png b/self-hosted/images/instagram-review/i.g-review-edit.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-edit.png rename to self-hosted/images/instagram-review/i.g-review-edit.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-instructions-1.png b/self-hosted/images/instagram-review/i.g-review-instructions-1.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-instructions-1.png rename to self-hosted/images/instagram-review/i.g-review-instructions-1.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-instructions-2.png b/self-hosted/images/instagram-review/i.g-review-instructions-2.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-instructions-2.png rename to self-hosted/images/instagram-review/i.g-review-instructions-2.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-instructions.png b/self-hosted/images/instagram-review/i.g-review-instructions.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-instructions.png rename to self-hosted/images/instagram-review/i.g-review-instructions.png diff --git a/docs/self-hosted/img/instagram-review/i.g-review-requests.png b/self-hosted/images/instagram-review/i.g-review-requests.png similarity index 100% rename from docs/self-hosted/img/instagram-review/i.g-review-requests.png rename to self-hosted/images/instagram-review/i.g-review-requests.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/facebook_connect_instagram.png b/self-hosted/images/instagram/facebook_connect_instagram.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/facebook_connect_instagram.png rename to self-hosted/images/instagram/facebook_connect_instagram.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/facebook_instagram_test.png b/self-hosted/images/instagram/facebook_instagram_test.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/facebook_instagram_test.png rename to self-hosted/images/instagram/facebook_instagram_test.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/facebook_page_settings.png b/self-hosted/images/instagram/facebook_page_settings.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/facebook_page_settings.png rename to self-hosted/images/instagram/facebook_page_settings.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram-add-tester.png b/self-hosted/images/instagram/instagram-add-tester.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram-add-tester.png rename to self-hosted/images/instagram/instagram-add-tester.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram-testers-list.png b/self-hosted/images/instagram/instagram-testers-list.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram-testers-list.png rename to self-hosted/images/instagram/instagram-testers-list.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_config.png b/self-hosted/images/instagram/instagram_app_config.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_config.png rename to self-hosted/images/instagram/instagram_app_config.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_id.png b/self-hosted/images/instagram/instagram_app_id.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_id.png rename to self-hosted/images/instagram/instagram_app_id.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_platform.png b/self-hosted/images/instagram/instagram_app_platform.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_app_platform.png rename to self-hosted/images/instagram/instagram_app_platform.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_basic_display.png b/self-hosted/images/instagram/instagram_basic_display.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_basic_display.png rename to self-hosted/images/instagram/instagram_basic_display.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_basic_display_settings.png b/self-hosted/images/instagram/instagram_basic_display_settings.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_basic_display_settings.png rename to self-hosted/images/instagram/instagram_basic_display_settings.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_business_login.png b/self-hosted/images/instagram/instagram_business_login.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_business_login.png rename to self-hosted/images/instagram/instagram_business_login.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_connect_facebook.png b/self-hosted/images/instagram/instagram_connect_facebook.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_connect_facebook.png rename to self-hosted/images/instagram/instagram_connect_facebook.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_connect_success.png b/self-hosted/images/instagram/instagram_connect_success.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_connect_success.png rename to self-hosted/images/instagram/instagram_connect_success.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_graph_api.png b/self-hosted/images/instagram/instagram_graph_api.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_graph_api.png rename to self-hosted/images/instagram/instagram_graph_api.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_product.png b/self-hosted/images/instagram/instagram_product.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_product.png rename to self-hosted/images/instagram/instagram_product.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_subscription.png b/self-hosted/images/instagram/instagram_subscription.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_subscription.png rename to self-hosted/images/instagram/instagram_subscription.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_tester_list.png b/self-hosted/images/instagram/instagram_tester_list.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_tester_list.png rename to self-hosted/images/instagram/instagram_tester_list.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_testers.png b/self-hosted/images/instagram/instagram_testers.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_testers.png rename to self-hosted/images/instagram/instagram_testers.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhook.png b/self-hosted/images/instagram/instagram_webhook.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhook.png rename to self-hosted/images/instagram/instagram_webhook.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhook_url.png b/self-hosted/images/instagram/instagram_webhook_url.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhook_url.png rename to self-hosted/images/instagram/instagram_webhook_url.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhooks.png b/self-hosted/images/instagram/instagram_webhooks.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhooks.png rename to self-hosted/images/instagram/instagram_webhooks.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhooks_subscribe.png b/self-hosted/images/instagram/instagram_webhooks_subscribe.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/instagram_webhooks_subscribe.png rename to self-hosted/images/instagram/instagram_webhooks_subscribe.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/register_domain.png b/self-hosted/images/instagram/register_domain.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/register_domain.png rename to self-hosted/images/instagram/register_domain.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/select_category_instagram.png b/self-hosted/images/instagram/select_category_instagram.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/select_category_instagram.png rename to self-hosted/images/instagram/select_category_instagram.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/setup_callback.png b/self-hosted/images/instagram/setup_callback.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/setup_callback.png rename to self-hosted/images/instagram/setup_callback.png diff --git a/docs/self-hosted/configuration/features/integrations/images/instagram/subscribe.png b/self-hosted/images/instagram/subscribe.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/instagram/subscribe.png rename to self-hosted/images/instagram/subscribe.png diff --git a/docs/self-hosted/deployment/storage/images/json.png b/self-hosted/images/json.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/json.png rename to self-hosted/images/json.png diff --git a/docs/self-hosted/configuration/features/integrations/images/linear/create-app.png b/self-hosted/images/linear/create-app.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/linear/create-app.png rename to self-hosted/images/linear/create-app.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/mail-channel-box.png b/self-hosted/images/mail-channel-box.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/mail-channel-box.png rename to self-hosted/images/mail-channel-box.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/mail-channel-step1.png b/self-hosted/images/mail-channel-step1.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/mail-channel-step1.png rename to self-hosted/images/mail-channel-step1.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/mail-channel-step2.png b/self-hosted/images/mail-channel-step2.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/mail-channel-step2.png rename to self-hosted/images/mail-channel-step2.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/mailgun-ingress-key.gif b/self-hosted/images/mailgun-ingress-key.gif similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/mailgun-ingress-key.gif rename to self-hosted/images/mailgun-ingress-key.gif diff --git a/docs/self-hosted/deployment/storage/images/permissions.png b/self-hosted/images/permissions.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/permissions.png rename to self-hosted/images/permissions.png diff --git a/docs/self-hosted/deployment/images/restack-sign-up.png b/self-hosted/images/restack-sign-up.png similarity index 100% rename from docs/self-hosted/deployment/images/restack-sign-up.png rename to self-hosted/images/restack-sign-up.png diff --git a/docs/self-hosted/deployment/storage/images/s3-users-list.png b/self-hosted/images/s3-users-list.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/s3-users-list.png rename to self-hosted/images/s3-users-list.png diff --git a/docs/self-hosted/configuration/features/email-channel/images/set-forwarder-email.png b/self-hosted/images/set-forwarder-email.png similarity index 100% rename from docs/self-hosted/configuration/features/email-channel/images/set-forwarder-email.png rename to self-hosted/images/set-forwarder-email.png diff --git a/docs/self-hosted/configuration/features/integrations/images/shopify/callback.png b/self-hosted/images/shopify/callback.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/shopify/callback.png rename to self-hosted/images/shopify/callback.png diff --git a/docs/self-hosted/configuration/features/integrations/images/shopify/configure-app.png b/self-hosted/images/shopify/configure-app.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/shopify/configure-app.png rename to self-hosted/images/shopify/configure-app.png diff --git a/docs/self-hosted/configuration/features/integrations/images/shopify/create-app.png b/self-hosted/images/shopify/create-app.png similarity index 100% rename from docs/self-hosted/configuration/features/integrations/images/shopify/create-app.png rename to self-hosted/images/shopify/create-app.png diff --git a/docs/self-hosted/deployment/storage/images/storage-admin.png b/self-hosted/images/storage-admin.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/storage-admin.png rename to self-hosted/images/storage-admin.png diff --git a/docs/self-hosted/img/superadmin-settings.png b/self-hosted/images/superadmin-settings.png similarity index 100% rename from docs/self-hosted/img/superadmin-settings.png rename to self-hosted/images/superadmin-settings.png diff --git a/docs/self-hosted/deployment/storage/images/user-arn.png b/self-hosted/images/user-arn.png similarity index 100% rename from docs/self-hosted/deployment/storage/images/user-arn.png rename to self-hosted/images/user-arn.png diff --git a/docs/self-hosted/instagram-app-review.md b/self-hosted/instagram-app-review.mdx similarity index 83% rename from docs/self-hosted/instagram-app-review.md rename to self-hosted/instagram-app-review.mdx index 135041c5..dfc2dcf2 100644 --- a/docs/self-hosted/instagram-app-review.md +++ b/self-hosted/instagram-app-review.mdx @@ -1,10 +1,8 @@ --- -sidebar_label: "Instagram App Review" title: "Instagram App Review" +description: "Complete guide for submitting Instagram App Review request to get advanced messaging permissions for Chatwoot integration" --- -# Instagram App review submission template - This document provides a customizable template for brands requesting advanced Instagram permissions. Use this template to submit an Instagram App Review request and demonstrate how your app uses advanced messaging permissions to provide real-time customer support through Instagram. ## Requested Permissions @@ -21,61 +19,61 @@ Please replace all placeholder values such as `BRAND_NAME`, `DASHBOARD_URL`, `EM Navigate to the basic settings and add the Website platform. Provide your frontend URL in the platform configuration. -![i.g-add-platform](./img/instagram-review/i.g-add-platform.png) +Add platform ### Go to the App Review Section Go to the Instagram product and click on "Go to App Review". -![i.g-review-1](./img/instagram-review/i.g-review-1.png) +Go to App Review ### Confirm the Documentation Click on "Continue" to confirm the documentation. -![i.g-review-2](./img/instagram-review/i.g-review-2.png) +Confirm documentation ### Select the Permissions Select the permissions `instagram_business_basic`, `instagram_business_manage_messages`, and `human_agent` and click on "Continue to App Review". -![i.g-review-3](./img/instagram-review/i-g-review-3.png) +Select permissions ### Configure App Review Requests After clicking on "Continue to App Review", you will be redirected to the App Review requests page. -![i.g-review-4](./img/instagram-review/i.g-review-requests.png) +App Review requests Click on the "Edit" button to edit the review request. -![i.g-review-5](./img/instagram-review/i.g-review-edit.png) +Edit review request ### Business Account You **must** have a Business Account to be able to request these permissions. Please ensure you have a Business Account before requesting the permissions. Submit Business Account details. -![i.g-review-6](./img/instagram-review/i.g-business-review.png) +Business Account details ### Data Handling Please answer all the questions in the Data Handling section and include all the pre-processing steps you perform on the data. -![i.g-review-7](./img/instagram-review/i.g-data-handling-questions.png) +Data handling questions -![i.g-review-8](./img/instagram-review/i.g-data-handling.png) +Data handling ### Complete App Settings Make sure you have an app icon, privacy policy URL, and app category configured. You can update these via the Basic Settings. -![i.g-app-settings](./img/instagram-review/i.g-app-settings.png) +App settings ### Review Instructions Provide the review instructions to the reviewer for the App Review. Essentially, you need to provide the steps to log in to the Dashboard and send a message to the connected Instagram account. -![i.g-review-instructions](./img/instagram-review/i.g-review-instructions.png) +Review instructions You can use the following template to provide the review instructions: @@ -89,13 +87,13 @@ You can use the following template to provide the review instructions: 6. Once the setup is complete, you can send a message to the connected Instagram account. 7. The message should appear on the Dashboard at `[DASHBOARD_URL]/app/accounts/[ACCOUNT_ID]/dashboard`. -![i.g-review-instructions-1](./img/instagram-review/i.g-review-instructions-2.png) +Review instructions details ## Permissions It is time to request the permissions. Please click on each permission and fill in the details. Once you are done, click on "Submit for Review". Below are sample permission requests you can use as a reference. -![i.g-permission-requests](./img/instagram-review/i.g-permission-requests.png) +Permission requests ## `instagram_business_basic` @@ -214,8 +212,10 @@ Include a screencast demonstrating the following steps: - Do not include Instagram account credentials. - Only share test Dashboard credentials (non-super admin access recommended). - Ensure your screencast clearly shows the platform UI and relevant workflows. -- Keep your permission usage aligned with Meta’s policy for message tags and user privacy. +- Keep your permission usage aligned with Meta's policy for message tags and user privacy. - Speak aloud or add captions in your video for reviewer clarity. - Video should be as detailed as possible. -> 💡 **Tip:** Use a screen recorder that captures mouse interactions, popups, and browser activity to clearly demonstrate authentication flows and inbox interactions. + +**Tip:** Use a screen recorder that captures mouse interactions, popups, and browser activity to clearly demonstrate authentication flows and inbox interactions. + \ No newline at end of file diff --git a/docs/self-hosted/monitoring/apm-and-error-monitoring.md b/self-hosted/monitoring/apm-and-error-monitoring.mdx similarity index 92% rename from docs/self-hosted/monitoring/apm-and-error-monitoring.md rename to self-hosted/monitoring/apm-and-error-monitoring.mdx index 821f5a8e..e56c43ac 100644 --- a/docs/self-hosted/monitoring/apm-and-error-monitoring.md +++ b/self-hosted/monitoring/apm-and-error-monitoring.mdx @@ -1,5 +1,7 @@ --- -title: "APM and Tracing" +title: APM and Tracing +description: Configure APM and error monitoring tools for Chatwoot +sidebarTitle: APM and Tracing --- Chatwoot supports various APM and monitoring tools. @@ -42,11 +44,11 @@ Enable Datadog in chatwoot by configuring the `trace agent url`. ``` ### Running Datadog agent in local via docker -``` +```bash # to run in your local machine binding to port 8126 # replace
and dd_site as required docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -p 8126:8126 -e DD_API_KEY=
-e DD_SITE="datadoghq.com" gcr.io/datadoghq/agent:7 ``` -Refer Datadog documentation to install the agent in specific environments like [Ubuntu](https://docs.datadoghq.com/agent/basic_agent_usage/ubuntu/?tab=agentv6v7), [Docker](https://docs.datadoghq.com/agent/docker/?tab=standard), [kubernetes](https://docs.datadoghq.com/agent/kubernetes/?tab=helm) etc. +Refer Datadog documentation to install the agent in specific environments like [Ubuntu](https://docs.datadoghq.com/agent/basic_agent_usage/ubuntu/?tab=agentv6v7), [Docker](https://docs.datadoghq.com/agent/docker/?tab=standard), [kubernetes](https://docs.datadoghq.com/agent/kubernetes/?tab=helm) etc. \ No newline at end of file diff --git a/docs/self-hosted/monitoring/rate-limiting.md b/self-hosted/monitoring/rate-limiting.mdx similarity index 92% rename from docs/self-hosted/monitoring/rate-limiting.md rename to self-hosted/monitoring/rate-limiting.mdx index ed969233..779a836e 100644 --- a/docs/self-hosted/monitoring/rate-limiting.md +++ b/self-hosted/monitoring/rate-limiting.mdx @@ -1,5 +1,7 @@ --- -title: "Rate Limiting" +title: Rate Limiting +description: Configure rate limiting to protect your Chatwoot installation from abuse +sidebarTitle: Rate Limiting --- To protect the system from abusive requests, Chatwoot makes use of [`rack_attack`](https://github.com/rack/rack-attack) gem. @@ -24,7 +26,7 @@ You could customize the configuration to suit your needs by updating, [`config/i You can control the behaviour of rack attack in your instance via the following environment variables. -``` +```bash ## Rack Attack configuration ## To prevent and throttle abusive requests. # Disable if you are getting too many request errors for custom use cases diff --git a/docs/self-hosted/monitoring/super-admin-sidekiq.md b/self-hosted/monitoring/super-admin-sidekiq.mdx similarity index 82% rename from docs/self-hosted/monitoring/super-admin-sidekiq.md rename to self-hosted/monitoring/super-admin-sidekiq.mdx index ff6da034..2d90fb0d 100644 --- a/docs/self-hosted/monitoring/super-admin-sidekiq.md +++ b/self-hosted/monitoring/super-admin-sidekiq.mdx @@ -1,11 +1,14 @@ --- -title: "Super admin Console" +title: Super Admin Console +description: Guide to accessing and using the Super Admin Console and Sidekiq monitoring +sidebarTitle: Super Admin Console --- - You will need a user account with super admin privileges to access the super admin console and Sidekiq console. -**Note**: The first user created during onboarding is a `super admin`. + +The first user created during onboarding is a `super admin`. + ## Access superadmin console @@ -33,7 +36,6 @@ If you have `cwctl`, use `cwctl --console`. - If you running Chatwoot in a Docker container, you would need to access the shell inside your container first. - If you are running Chatwoot on Caprover, use the following command to access the command line. -``` +```bash docker exec -it $(docker ps --filter name=srv-captain--chatwoot-web -q) /bin/sh -``` - +``` \ No newline at end of file diff --git a/self-hosted/restricted-instances.mdx b/self-hosted/restricted-instances.mdx new file mode 100644 index 00000000..57f7fc80 --- /dev/null +++ b/self-hosted/restricted-instances.mdx @@ -0,0 +1,78 @@ +--- +title: 'Running Chatwoot in Restricted Instances' +description: 'Configuration guide for deploying Chatwoot in environments with restricted internal networks' +--- + +This guide outlines the necessary configurations for deploying Chatwoot in environments with restricted internal networks, ensuring full functionality and compliance. + +## Activating Licenses + +Licensing is critical for the operational legality and functionality of Chatwoot: + +### Whitelist Licensing Server + +Add `https://hub.2.chatwoot.com` to your network's whitelist for license activation and management of Stripe payment links. + +### Switch to Email Invoices + +For organizations preferring email invoices, contact our sales team at `sales@chatwoot.com` with your installation identifier to configure this billing option. + +## Enabling ChatWidget for Users + +To ensure seamless functionality of the ChatWidget within restricted networks, perform the following configurations: + +### WebSockets + +Enable WebSocket connections through `wss://yourdomain.com/cable` to facilitate real-time communications. + +### Widget API URLs + +Open all API endpoints under the widget path to ensure full functionality. Configure your network to allow access to: + +``` +https://yourdomain.com/api/v1/widget/* +``` + +This wildcard approach ensures all necessary widget functionalities such as conversation handling, message management, and contact updates are operable without individual endpoint specifications. + +### Widget Assets + +Make sure that static assets required by the ChatWidget are accessible. These are typically served from: + +``` +https://yourdomain.com/packs +``` + +Ensure all paths under this directory are accessible to support the widget fully. + +## SMTP Configuration for Emails + +Proper SMTP setup is essential for managing email communications within restricted networks: + +### SMTP Server Details + +Configure your SMTP server to handle outgoing emails from Chatwoot, including server address, port, authentication details, and secure connection protocols. + +### Secure Connections + +Employ TLS/SSL for secure email transmissions, ensuring your network permits connections over the designated SMTP port (commonly 587 for TLS). + +## Additional Configuration for Restricted Networks + +Additional considerations are necessary for the optimal operation of Chatwoot in restricted environments: + +### DNS Configuration + +Ensure DNS settings are optimized to reduce resolution times and enhance the accessibility of Chatwoot services. + +### SSL/TLS Configuration + +Maintain up-to-date SSL/TLS certificates that are compatible with all internal systems and browsers. + +### Monitoring and Logging + +Implement comprehensive monitoring and logging solutions to swiftly detect and address potential disruptions, maintaining system stability and performance. + + +By following these detailed instructions, your Chatwoot deployment can effectively operate within restricted network environments, ensuring a robust and secure customer support platform. + \ No newline at end of file diff --git a/docs/self-hosted/configuration/email-notifications.md b/self-hosted/runbooks/email-notifications.mdx similarity index 79% rename from docs/self-hosted/configuration/email-notifications.md rename to self-hosted/runbooks/email-notifications.mdx index 4b08fb79..63e5ddd0 100644 --- a/docs/self-hosted/configuration/email-notifications.md +++ b/self-hosted/runbooks/email-notifications.mdx @@ -1,13 +1,14 @@ --- -sidebar_label: "How to customize email notifications in Chatwoot?" -title: "Customize email notifications in Chatwoot" +title: Customize email notifications in Chatwoot +description: Guide to customizing email notification templates in self-hosted Chatwoot installations +sidebarTitle: Email Notifications --- Chatwoot allows customization of email notifications in self hosted installations. To customize the email notifications, follow the instructions below. Inorder to update the content, you have to add a new template in the Database, here is how you can do it. -### 1. Login into the rails console. +## 1. Login into the rails console. For Heroku installation, login to your account, go to the app. Click on "More", select "Run Console" from the dropdown menu. Enter the following command and hit run @@ -21,7 +22,7 @@ For Linux VM installations, go to directory where Chatwoot code is available. If RAILS_ENV=production bundle exec rails console ``` -### 2. Create a new template for the emails. Execute the following commands. +## 2. Create a new template for the emails. Execute the following commands. ```rb email_template = EmailTemplate.new @@ -30,7 +31,7 @@ email_template.body = '// Enter your content' email_template.save! ``` -#### Variables +### Variables Template would receive 3 variable @@ -38,11 +39,11 @@ Template would receive 3 variable 2. `conversation` - Use `{{ conversation.display_id }}` to get the conversation ID 3. `action_url` - This is the URL of the conversation. -### Default content +## Default content Default content of the above template is as shown below -#### 1. Conversation Assignment +### 1. Conversation Assignment ```html

Hi {{user.available_name}},

@@ -50,7 +51,7 @@ Default content of the above template is as shown below

Click here to get cracking.

``` -#### 2. Conversation Creation +### 2. Conversation Creation ```html

Hi {{user.available_name}}

@@ -61,4 +62,4 @@ Click here to get cracking.

``` -We use [Liquid templating engine](https://shopify.github.io/liquid/) internally, so all valid operators can be used here. +We use [Liquid templating engine](https://shopify.github.io/liquid/) internally, so all valid operators can be used here. \ No newline at end of file diff --git a/docs/self-hosted/configuration/enable-ip-logging.md b/self-hosted/runbooks/enable-ip-logging.mdx similarity index 52% rename from docs/self-hosted/configuration/enable-ip-logging.md rename to self-hosted/runbooks/enable-ip-logging.mdx index 8b6b1a3b..3377b061 100644 --- a/docs/self-hosted/configuration/enable-ip-logging.md +++ b/self-hosted/runbooks/enable-ip-logging.mdx @@ -1,13 +1,18 @@ --- -sidebar_label: "How to enable IP identification in Chatwoot?" -title: "How to enable IP identification in Chatwoot?" +title: How to enable IP identification in Chatwoot? +description: Guide to enabling IP address geocoding and location identification in Chatwoot +sidebarTitle: Enable IP Logging --- Chatwoot lets you identify the user's location by geocoding the IP address. For IP Address geocoding, we support MaxmindDB services. This lookup provides methods for geocoding IP addresses without calling a remote API every time. You can follow the steps below to set up your self-hosted instance with the geocoding. -**Step 1:** Create an account at [MaxmindDB](https://www.maxmind.com) and create an API key. +## Step 1: Create MaxmindDB Account -**Step 2:** Add the following environment variables. +Create an account at [MaxmindDB](https://www.maxmind.com) and create an API key. + +## Step 2: Add Environment Variables + +Add the following environment variables. ```bash IP_LOOKUP_API_KEY=your-api-key @@ -15,15 +20,17 @@ IP_LOOKUP_API_KEY=your-api-key With this step, Chatwoot would automatically download the [MaxmindDB downloadable databases](https://dev.maxmind.com/geoip/geoip2/downloadable/) and cache it locally. -**Step 3:** Enable IP Lookup on your account. You can do this in two ways. +## Step 3: Enable IP Lookup -- Method 1 via Superadmin console UI +Enable IP Lookup on your account. You can do this in two ways. - Log into the super admin and select accounts. Select your account, click edit, and toggle the `ip_lookup` feature. +### Method 1: Via Superadmin Console UI -- Method 2 via Rails console +Log into the super admin and select accounts. Select your account, click edit, and toggle the `ip_lookup` feature. -``` +### Method 2: Via Rails Console + +```bash RAILS_ENV=production bundle exec rails console ``` @@ -32,4 +39,4 @@ account_id = 1 // Please fill your account id instead of 1 account = Account.find(account_id) account.enable_features('ip_lookup') account.save! -``` +``` \ No newline at end of file diff --git a/self-hosted/runbooks/migrate-chatwoot-database.mdx b/self-hosted/runbooks/migrate-chatwoot-database.mdx new file mode 100644 index 00000000..5355f5a8 --- /dev/null +++ b/self-hosted/runbooks/migrate-chatwoot-database.mdx @@ -0,0 +1,76 @@ +--- +title: "How to migrate Chatwoot database?" +description: "Learn how to migrate your Chatwoot database from bundled PostgreSQL to managed database services like AWS RDS" +--- + +## Chatwoot database migration + +Follow along If you started out with a bundled install of postgres, redis and chatwoot in a single instance +and now wants to migrate to managed database service. + +In this guide, we assume you want to migrate to AWS RDS. This guide should be equally applicable to any other +managed database service or even migrating data between different Chatwoot installations. + +### Step 1: Stop Chatwoot service + +Stop Chatwoot service to stop database activity. + +```bash +sudo systemctl stop chatwoot.target +``` + +### Step 2: Back up the database + +Back up the database using `pg_dump` tool. + +```bash +pg_dump -Fc --no-acl --no-owner -U postgres chatwoot_production > /tmp/cw.dump +``` + +### Step 3: Create RDS instance + +Create an RDS Postgres instance in your AWS account. Refer to the [AWS documentation](https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/). + +### Step 4: Verify connectivity + +Verify connectivity to the new RDS instance from your Chatwoot installation. + +```bash +psql -h -u -d postgres +``` + +### Step 5: Restore the database + +Restore the database from the backup file. + +```bash +pg_restore --verbose --clean --no-acl --no-owner --create -U postgres -d postgres /tmp/cw.dump +``` + +### Step 6: Update environment variables + +Modify the Postgres related environment variables to use the new RDS credentials. + +```bash +sudo -i -u chatwoot +cd chatwoot +vi .env +``` + +### Step 7: Start Chatwoot service + +Start the Chatwoot service. + +```bash +sudo systemctl start chatwoot.target +``` + + + If you are getting the Chatwoot onboarding screen again on visiting your self-hosted Chatwoot URL, + login to the rails console and run the following: + + ```bash + sudo cwctl --console + ::Redis::Alfred.delete(::Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING) + ``` + \ No newline at end of file diff --git a/self-hosted/runbooks/upgrade-to-chatwoot-v4.mdx b/self-hosted/runbooks/upgrade-to-chatwoot-v4.mdx new file mode 100644 index 00000000..38984cf6 --- /dev/null +++ b/self-hosted/runbooks/upgrade-to-chatwoot-v4.mdx @@ -0,0 +1,125 @@ +--- +title: "How to upgrade to Chatwoot v4?" +description: "Complete guide for upgrading to Chatwoot v4 with PostgreSQL pgvector support" +--- + +Chatwoot v4 requires PostgreSQL with `pgvector` support. You need to ensure that the version of PostgreSQL you are running supports `pgvector` before upgrading. + +## Type of Deployment + +### Linux +- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. +- If you are using self-hosted PostgreSQL, read along. + +### Docker +- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. +- If you are using self-hosted PostgreSQL, read along. + +### Kubernetes (Helm) +- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below. +- If you are using self-hosted PostgreSQL, read along. + +### Heroku +- No action is needed if you are using Heroku PostgreSQL. +- If you are using another managed PostgreSQL, refer to the **Managed PostgreSQL** section below. + +## PostgreSQL + +The PostgreSQL section is divided into parts based on how you are running PostgreSQL: +1. **Managed PostgreSQL** from cloud vendors like AWS, GCP, Azure, Heroku, etc. +2. **Self-hosted PostgreSQL** on Linux, Docker, or Kubernetes via Helm charts. + +### Managed PostgreSQL + +#### AWS RDS +No action is needed if you are on the latest version of RDS. +[Learn more](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-rds-postgresql-pgvector-hnsw-indexing/) + +#### Google Cloud (Cloud SQL) +No action is needed. +[Learn more](https://cloud.google.com/blog/products/databases/using-pgvector-llms-and-langchain-with-google-cloud-databases) + +#### Heroku PostgreSQL +The `pgvector` extension is supported. No action is needed. +[Learn more](https://devcenter.heroku.com/articles/pgvector-heroku-postgres) + +#### Azure PostgreSQL +To enable `pgvector` on your Azure Database for PostgreSQL flexible server instance: + +1. Add `pgvector` to your allowlist as described in the PostgreSQL extensions documentation. +2. Verify if it is correctly added by running: + ```sql + SHOW azure.extensions; + ``` + +[Learn more](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-use-pgvector#enable-extension) + +--- + +## Self-hosted PostgreSQL + +### Linux VM + +#### Existing Installation +Install the `pgvector` extension for your version of PostgreSQL and run the upgrade: + +```bash +# Find your PostgreSQL version +psql --version + +# If its version 16, use the following command +# Replace "16" with your PostgreSQL version +sudo apt install postgresql-16-pgvector +``` + +### Docker Container + +#### Existing Installation + +1. Replace the PostgreSQL image with the pgvector image. The pgvector image is a drop-in replacement and works with your existing data: + + ```bash + docker compose down + + # Edit and replace the PostgreSQL image in docker-compose.yaml + vi docker-compose.yaml + + # Replace PostgreSQL image tag + # Example: replace + # image: postgres:12 + # with + # image: pgvector/pgvector:pg12 + + # Ensure the pg tag number matches your PostgreSQL version + docker compose pull + + # Verify the updated setup + docker compose up -d + ``` + +2. After verifying that the existing installation works with the pgvector image, proceed with the regular upgrade steps. + [Learn more](https://www.chatwoot.com/docs/self-hosted/deployment/upgrade#docker) + +### Kubernetes (Helm Chart) + +If you use the built-in PostgreSQL via the official Helm chart, follow the steps below. The Bitnami-packaged PostgreSQL used in the Helm chart does not support the pgvector extension. To address this, we have built a custom Postgres image with `pgvector` support. + + + This is only applicable if you are using the built-in Postgres with helm charts. Refer to the managed docs section if you are using AWS RDS or something similar. + + +1. Create a `values.v4-upgrade.yaml` file with the following contents: + + ```yaml + image: + repository: chatwoot/chatwoot + tag: v4.0.1 + pullPolicy: IfNotPresent + + postgresql: + image: + registry: ghcr.io + repository: chatwoot/pgvector + ``` + +2. Run `helm upgrade` with this custom values.yaml file. \ No newline at end of file diff --git a/docs/self-hosted/supported-features.md b/self-hosted/supported-features.mdx similarity index 91% rename from docs/self-hosted/supported-features.md rename to self-hosted/supported-features.mdx index b7b07336..412a051b 100644 --- a/docs/self-hosted/supported-features.md +++ b/self-hosted/supported-features.mdx @@ -1,11 +1,9 @@ --- -sidebar_label: "Supported features" -title: "Supported features on channels" +title: "Supported Features on Channels" +description: "Comprehensive reference for supported features, message types, and limitations across all Chatwoot channels" --- -### Supported message type - -
+## Supported message type | Channel | Incoming/Outgoing message | Activity message | | --------- | ------------------------- | ---------------- | @@ -19,11 +17,7 @@ title: "Supported features on channels" | Line | Yes | Yes | | API | Yes | Yes | -
- -### Maximum message size (number of characters) - -
+## Maximum message size (number of characters) | Channel | Maximum message size | | ------------------ | -------------------- | @@ -40,11 +34,7 @@ title: "Supported features on channels" | Line | 2000 | | API | 10,000 | -
- -### Outbound conversation restriction - -
+## Outbound conversation restriction | Channel | Restriction | | --------- | --------------------------------------------------------------------------------------------------------------- | @@ -58,11 +48,7 @@ title: "Supported features on channels" | Line | Cannot create outbound conversations. First message should be from the contact | | API | No restriction | -
- -### Outgoing message restriction - -
+## Outgoing message restriction | Channel | Restriction | | --------- | --------------------------------------------------------------------------------------------------------------- | @@ -76,11 +62,7 @@ title: "Supported features on channels" | Line | No restriction | | API | Custom time depends on Agent reply time window | -
- -### Outgoing message delivery status - -
+## Outgoing message delivery status | Channel | Sent status | Read status | Delivered status | Failed status | | ------------------ | ----------- | ------------- | ---------------- | ------------- | @@ -97,11 +79,7 @@ title: "Supported features on channels" | Telegram | Yes | Not supported | Not supported | Yes | | Email | Yes | Not supported | Not supported | Not supported | -
- -### Reply to message - -
+## Reply to message | Channel | Reply to incoming message | Reply to outgoing message | | --------------- | ------------------------- | ------------------------- | @@ -116,13 +94,11 @@ title: "Supported features on channels" | Line | No | No | | API | Yes | Yes | -
- -### Outgoing attachments supported file types +## Outgoing attachments supported file types -> Note: The default maximum file size limit is 40MB. - -
+ +The default maximum file size limit is 40MB. + | Channel | Audio | Image | Video | Document | | --------------- | ------------------------- | -------------------- | ------------------------------ | ------------- | @@ -136,7 +112,8 @@ title: "Supported features on channels" | Line | Not supported | png, jpeg | mp4 | Not supported | | API | All | All | All | All | -> "All" means the channel supports all standard file types listed below: + +"All" means the channel supports all standard file types listed below: **Standard File Types** @@ -144,12 +121,9 @@ title: "Supported features on channels" - **Audio:** `mp3`, `mpeg`, `opus`, `ogg`, `amr`, `aac`, `m4a`, `wav` - **Image:** `png`, `jpeg`, `gif`, `bmp`, `webp` - **Document:** `pdf`, `doc`, `docx`, `xls`, `xlsx`, `ppt`, `pptx`, `zip`, `7z`, `rar`, `tar`, `xml`, `csv`, `json`, `rtf`, `txt`, `plain`, `.3gpp`, `x-7z-compressed`, `vnd.rar`, `x-tar`, `msword` + -
- -### Available features - -
+## Available features | Channel | Channel greeting | Attachments | Agent Auto assignment | Slack | | --------- | ---------------- | ----------- | --------------------- | ----- | @@ -161,6 +135,4 @@ title: "Supported features on channels" | Email | Yes | Yes | Yes | Yes | | Telegram | Yes | Yes | Yes | Yes | | Line | Yes | No | Yes | Yes | -| API | Yes | Yes | Yes | Yes | - -
+| API | Yes | Yes | Yes | Yes | \ No newline at end of file diff --git a/docs/self-hosted/telemetry.md b/self-hosted/telemetry.mdx similarity index 74% rename from docs/self-hosted/telemetry.md rename to self-hosted/telemetry.mdx index 2a94637e..916fa729 100644 --- a/docs/self-hosted/telemetry.md +++ b/self-hosted/telemetry.mdx @@ -1,13 +1,13 @@ --- -sidebar_label: "Telemetry" title: "Telemetry" +description: "Learn about Chatwoot's telemetry data collection, what data is collected, how it's used, and how to opt-out" --- Chatwoot tracks usage of its products which helps the team to improve and deliver better software. You can opt-out of this telemetry at any time. -## **What data is collected** +## What data is collected -None of your customer data is ever transmitted by Chatwoot installation. The telemetry data collected by our products are purely usage statics of various software features. +None of your customer data is ever transmitted by Chatwoot installation. The telemetry data collected by our products are purely usage statistics of various software features. ### On-boarding @@ -26,7 +26,7 @@ Chatwoot sends anonymised metadata to our telemetry instance at a defined interv - Usage events on various feature interactions. -## **How is the data used** +## How is the data used This data will only be used by Chatwoot team for: @@ -34,7 +34,7 @@ This data will only be used by Chatwoot team for: - Identifying areas with limited usage or where our users get stuck. - Prioritizing the next set of features to be developed. -## **How is the data collected and how will it be processed** +## How is the data collected and how will it be processed The telemetry data is stored securely on Chatwoot systems, with appropriate encryptions and access controls in place. @@ -44,5 +44,14 @@ The self-hosted installation interacts with the URLs (hub.chatwoot.com, hub.2.ch If you want to disable telemetry you can do the following. -- **Disable data collection:** Use the environment variable 'DISABLE_TELEMETRY' in the installation. Set it to true to disable the data collection. -- **Disable update email subscription:** While you signup, you have to option to disable the subscription to update emails. If the option is disabled, Chatwoot won't collect the emails. +### Disable data collection + +Use the environment variable `DISABLE_TELEMETRY` in the installation. Set it to `true` to disable the data collection. + +```bash +DISABLE_TELEMETRY=true +``` + +### Disable update email subscription + +While you signup, you have to option to disable the subscription to update emails. If the option is disabled, Chatwoot won't collect the emails. \ No newline at end of file diff --git a/sidebars.js b/sidebars.js deleted file mode 100644 index 3bc980ca..00000000 --- a/sidebars.js +++ /dev/null @@ -1,7 +0,0 @@ -const contributingGuide = require("./config/sidebar/contributingGuide"); -const selfHosted = require("./config/sidebar/selfhosted"); - -module.exports = { - selfHosted, - contributingGuide, -}; diff --git a/src/css/custom.css b/src/css/custom.css deleted file mode 100644 index cb917199..00000000 --- a/src/css/custom.css +++ /dev/null @@ -1,192 +0,0 @@ -/* stylelint-disable docusaurus/copyright-header */ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ - -:root { - --ifm-color-primary: #1f93ff; - --ifm-color-primary-dark: #0285ff; - --ifm-color-primary-darker: #007ef3; - --ifm-color-primary-darkest: #0068c8; - --ifm-color-primary-light: #3ca1ff; - --ifm-color-primary-lighter: #4aa8ff; - --ifm-color-primary-lightest: #75bcff; - --ifm-footer-background-color: #fff; - --ifm-code-font-size: 75%; - --ifm-heading-family-base: 'Helvetica Neue', Helvetica, -apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - --ifm-font-family-base: 'Helvetica Neue', Helvetica, -apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - --doc-sidebar-width: 248px !important; - --ifm-menu-link-padding-horizontal: 0.5rem; - --ifm-menu-link-padding-vertical: 0.25rem; - --ifm-menu-color-background-hover: transparent; - --ifm-menu-color-background-active: transparent; - --color-body: #23282e; - --ifm-h1-font-size: calc(1.375rem + 1vw) !important; - --ifm-navbar-height: 5rem; - --ifm-navbar-link-font-size: 1.0625rem; - --ifm-navbar-link-color: #506690; - --ifm-h1-font-size: 2.4rem !important; - --docusaurus-announcement-bar-height: 2.4rem !important; -} - -.markdown { - font-size: 1.1rem; -} - -html[data-theme="light"] { - --ifm-heading-color: #3c4858; -} - -html[data-theme="light"] .markdown { - color: var(--ifm-heading-color); -} - -.docusaurus-highlight-code-line { - background-color: rgb(72, 77, 91); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -h1, h2, h3, h4, h5, h6 { - font-family: var(--ifm-heading-family-base); - font-weight: 600; -} - -.navbar__title, .navbar__item { - font-family: var(--ifm-heading-family-base); -} - -@media screen and (min-width: 997px) { - .menu { - padding: 2.5rem 0.8rem !important; - font-size: 0.875rem; - } - - .mw-25 { - max-width: 25%; - } - - .mw-50 { - max-width: 50%; - } -} - -@media screen and (max-width: 996px) { - h1 { - font-size: 2.4rem !important; - } -} - - -.menu__link:hover { - color: var(--ifm-color-primary); -} - -.navbar__title { - font-size: var(--ifm-navbar-link-font-size); -} - -html[data-theme="light"] .navbar__title { - color: var(--ifm-heading-color); -} - -.navbar__link { - font-size: var(--ifm-navbar-link-font-size); -} - -.menu__link--sublist::after { - background: var(--ifm-menu-link-sublist-icon) 50% / 1.5rem 1.5rem; -} - -html[data-theme="light"] .navbar__link { - color: var(--ifm-navbar-link-color); -} - -.menu__list { - margin: 0.25rem 0 1.5rem; -} - -.menu__list .menu__list-item { - text-transform: uppercase; - font-weight: 600; - font-size: 0.75rem; - font-family: var(--ifm-heading-family-base); - letter-spacing: 0; -} - -.menu__list .menu__list .menu__list-item { - font-weight: 400; - text-transform: none; - font-size: 1rem; - font-family: var(--ifm-font-family-base); - color: rgb(80, 102, 144); -} - - -.table-of-contents { - font-size: 1rem; -} - -html[data-theme="light"] .navbar__link:hover, -html[data-theme="light"] .navbar__link--active { - color: var(--ifm-navbar-link-hover-color) !important; -} - -.d-block { - display: block; -} - -.markdown { - padding: 1rem 2.4rem; -} - -.theme-doc-breadcrumbs { - padding: 1rem 2.4rem 0; -} - -@media screen and (max-width: 997px) { - .markdown { - padding: 0.8rem; - } -} - -.markdown h1:first-child { - --ifm-h1-font-size: 2.4rem; -} - -.doc-page--footer { - padding: 2.4rem; - margin-top: 1rem; - background: var(--ifm-color-secondary-lightest); - border-radius: 8px; -} - -.doc-page--footer--edit { - display: flex; - justify-content: space-between; -} - -@media screen and (max-width: 997px) { - .doc-page--footer--edit { - flex-direction: column; - } - - div[class^='announcementBar_'] { - height: 4rem; - } -} - -div[class^='announcementBar_'] { - background-color: var(--ifm-color-primary); - color: #fff; -} diff --git a/src/theme/DocItemFooter/index.js b/src/theme/DocItemFooter/index.js deleted file mode 100644 index 075aa7b7..00000000 --- a/src/theme/DocItemFooter/index.js +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; - -import LastUpdated from '@theme/LastUpdated'; -import EditThisPage from '@theme/EditThisPage'; -import TagsListInline from '@theme/TagsListInline'; -function TagsRow(props) { - return ( -
-
- -
-
- ); -} - -function EditMetaRow({ - editUrl, - lastUpdatedAt, - lastUpdatedBy, - formattedLastUpdatedAt, -}) { - return ( -
-
{editUrl && }
- -
- {(lastUpdatedAt || lastUpdatedBy) && ( - - )} -
-
- ); -} - -export default function DocItemFooter(props) { - const {content: DocContent} = props; - const {metadata} = DocContent; - const {editUrl, lastUpdatedAt, formattedLastUpdatedAt, lastUpdatedBy, tags, frontMatter} = - metadata; - const canDisplayTagsRow = tags.length > 0; - const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy); - - const canDisplayFooter = canDisplayTagsRow || canDisplayEditMetaRow; - - const discordLink = frontMatter.help_discord; - const githubDiscussionLink = frontMatter.help_github_discussions; - const showHelpLink = !!discordLink || !!githubDiscussionLink; - if (!canDisplayFooter) { - return <>; - } - - return ( -
- {showHelpLink && ( -

- If you need help with any of the steps described in this document, please reach out to us on our GitHub discussions{ discordLink && showHelpLink ? ' or ' : '' }Discord channel. -

- )} - {canDisplayTagsRow && } - {canDisplayEditMetaRow && ( - - )} -
- ); -} diff --git a/src/theme/Seo/index.js b/src/theme/Seo/index.js deleted file mode 100644 index dcecd154..00000000 --- a/src/theme/Seo/index.js +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; -import {useTitleFormatter} from '@docusaurus/theme-common'; - -const getBannerBearURL = title => `https://ondemand.bannerbear.com/taggedurl/40p1rqg8Wyrdva3NJz/image.jpg?modifications=[title---text~~${title}]` - -export default function Seo({ - title, - description, - keywords, - image, -}){ - const metaTitle = useTitleFormatter(title); - const metaImageUrl = title ? getBannerBearURL(title): ''; - return ( - - {title && {metaTitle}} - {title && } - {description && } - {description && } - {keywords && ( - - )} - {metaImageUrl && } - {metaImageUrl && } - {metaImageUrl && } - - ); -} diff --git a/static/.nojekyll b/static/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/static/_redirects b/static/_redirects deleted file mode 100644 index 49797248..00000000 --- a/static/_redirects +++ /dev/null @@ -1,17 +0,0 @@ -/docs/handbook/about-chatwoot/history https://www.chatwoot.com/hc/handbook/en/company/4 -/docs/handbook/about-chatwoot/investors https://www.chatwoot.com/hc/handbook/en/company/5 -/docs/handbook/how-we-work/communication https://www.chatwoot.com/hc/handbook/en/culture/6 -/docs/handbook/design/guidelines https://www.chatwoot.com/hc/handbook/en/design/7 -/docs/handbook/engineering/issue-triage https://www.chatwoot.com/hc/handbook/en/engineering/15 -/docs/handbook/engineering/pr-guidelines https://www.chatwoot.com/hc/handbook/en/engineering/8 -/docs/handbook/engineering/frontend-guidelines https://www.chatwoot.com/hc/handbook/en/engineering/10 -/docs/handbook/engineering/release-process https://www.chatwoot.com/hc/handbook/en/engineering/11 -/docs/handbook/engineering/scheduled-maintenance https://www.chatwoot.com/hc/handbook/en/engineering/12 -/docs/handbook/engineering/swagger-documentation https://www.chatwoot.com/hc/handbook/en/engineering/13 -/docs/handbook/engineering/enterprise-edition https://www.chatwoot.com/hc/handbook/en/enterprise-edition/14 -/docs/handbook/engineering/faq https://www.chatwoot.com/hc/handbook/en/engineering/15 -/docs/handbook/marketing/playbook https://www.chatwoot.com/hc/handbook/en/marketing/16 -/docs/handbook/marketing/blog-post https://www.chatwoot.com/hc/handbook/en/marketing/17 -/docs/handbook/marketing/brand-guidelines https://www.chatwoot.com/hc/handbook/en/marketing/19 -/docs/handbook/marketing/guidelines-taking-product-screenshots-or-screencasts https://www.chatwoot.com/hc/handbook/en/marketing/18 -/docs/* /docs/404.html 404 diff --git a/static/admin/config.yml b/static/admin/config.yml deleted file mode 100644 index cf54de92..00000000 --- a/static/admin/config.yml +++ /dev/null @@ -1,33 +0,0 @@ -backend: - name: github - branch: main - repo: chatwoot/docs - -# These lines should *not* be indented -media_folder: "static/img" # Media files will be stored in the repo under static/images/uploads -public_folder: "/img/" # The src attribute for uploaded media will begin with /images/uploads - -collections: - - name: docs - label: "docs" - folder: docs - identifier_field: title - extension: md - widget: "list" - create: true - slug: "{{slug}}" # Filename template, e.g., YYYY-MM-DD-title.md - fields: - - { name: title, label: Title, widget: string } - - { name: body, label: Body, widget: markdown } - - { name: slug, label: Slug, widget: string } - - label: "Tags" - name: "tags" - widget: "list" - - label: "Authors" - name: "authors" - widget: "list" - fields: - - { name: name, label: Name, widget: string } - - { name: title, label: Title, widget: string } - - { name: url, label: URL, widget: string } - - { name: imageUrl, label: ImageURL, widget: string } diff --git a/static/admin/index.html b/static/admin/index.html deleted file mode 100644 index 2e1c02db..00000000 --- a/static/admin/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Content Manager - - - - - - diff --git a/static/img/favicon.png b/static/img/favicon.png deleted file mode 100644 index 5fc50e9f..00000000 Binary files a/static/img/favicon.png and /dev/null differ diff --git a/static/img/logo-white.png b/static/img/logo-white.png deleted file mode 100644 index df120662..00000000 Binary files a/static/img/logo-white.png and /dev/null differ diff --git a/static/img/logo.png b/static/img/logo.png deleted file mode 100644 index dcf9ff44..00000000 Binary files a/static/img/logo.png and /dev/null differ diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index ef8b5cd2..00000000 --- a/yarn.lock +++ /dev/null @@ -1,8695 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@algolia/autocomplete-core@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" - integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-plugin-algolia-insights@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" - integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-preset-algolia@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" - integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-shared@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" - integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== - -"@algolia/cache-browser-local-storage@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" - integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/cache-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" - integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== - -"@algolia/cache-in-memory@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" - integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/client-account@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" - integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-analytics@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" - integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" - integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== - dependencies: - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-personalization@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" - integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-search@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" - integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/events@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" - integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== - -"@algolia/logger-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" - integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== - -"@algolia/logger-console@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" - integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== - dependencies: - "@algolia/logger-common" "4.22.1" - -"@algolia/requester-browser-xhr@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" - integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/requester-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" - integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== - -"@algolia/requester-node-http@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" - integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/transporter@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" - integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== - dependencies: - "@algolia/cache-common" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.19.6", "@babel/core@^7.23.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.3", "@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": - version "7.23.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" - integrity sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" - integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.22.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" - integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" - integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" - integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" - integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" - integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.23.8": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" - integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" - integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.15" - -"@babel/plugin-transform-destructuring@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" - integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" - integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" - integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" - integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" - integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" - integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" - integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" - integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" - integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" - integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" - integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" - integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" - integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== - dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.23.3" - -"@babel/plugin-transform-object-super@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" - integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - -"@babel/plugin-transform-optional-catch-binding@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" - integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" - integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" - integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" - integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" - integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c" - integrity sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-display-name@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" - integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" - integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-runtime@^7.22.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" - integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" - integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" - integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" - integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" - integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typescript@^7.23.3": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" - integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.23.3" - -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" - integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" - integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.9" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.8" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.6" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.9" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.23.4" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" - integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.23.3" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.23.3" - -"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" - integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-typescript" "^7.23.3" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.22.6": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.9.tgz#1b43062a13ecb60158aecdd81bc3fab4108b7cbc" - integrity sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ== - dependencies: - core-js-pure "^3.30.2" - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.5": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.22.6": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" - integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15", "@babel/template@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.22.8", "@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" - integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@discoveryjs/json-ext@0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@docsearch/css@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" - integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== - -"@docsearch/react@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" - integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== - dependencies: - "@algolia/autocomplete-core" "1.9.3" - "@algolia/autocomplete-preset-algolia" "1.9.3" - "@docsearch/css" "3.5.2" - algoliasearch "^4.19.1" - -"@docusaurus/core@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.1.tgz#29ce8df7a3d3d12ee8962d6d86133b87235ff17b" - integrity sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ== - dependencies: - "@babel/core" "^7.23.3" - "@babel/generator" "^7.23.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/preset-react" "^7.22.5" - "@babel/preset-typescript" "^7.22.5" - "@babel/runtime" "^7.22.6" - "@babel/runtime-corejs3" "^7.22.6" - "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.1.1" - "@docusaurus/logger" "3.1.1" - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-common" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - "@slorber/static-site-generator-webpack-plugin" "^4.0.7" - "@svgr/webpack" "^6.5.1" - autoprefixer "^10.4.14" - babel-loader "^9.1.3" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.2" - cli-table3 "^0.6.3" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.31.1" - css-loader "^6.8.1" - css-minimizer-webpack-plugin "^4.2.2" - cssnano "^5.1.15" - del "^6.1.1" - detect-port "^1.5.1" - escape-html "^1.0.3" - eta "^2.2.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - html-minifier-terser "^7.2.0" - html-tags "^3.3.1" - html-webpack-plugin "^5.5.3" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.7.6" - postcss "^8.4.26" - postcss-loader "^7.3.3" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.4" - react-router-config "^5.1.1" - react-router-dom "^5.3.4" - rtl-detect "^1.0.4" - semver "^7.5.4" - serve-handler "^6.1.5" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.9" - tslib "^2.6.0" - update-notifier "^6.0.2" - url-loader "^4.1.1" - webpack "^5.88.1" - webpack-bundle-analyzer "^4.9.0" - webpack-dev-server "^4.15.1" - webpack-merge "^5.9.0" - webpackbar "^5.0.2" - -"@docusaurus/cssnano-preset@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.1.tgz#03a4cb8e6d41654d7ff5ed79fddd73fd224feea4" - integrity sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g== - dependencies: - cssnano-preset-advanced "^5.3.10" - postcss "^8.4.26" - postcss-sort-media-queries "^4.4.1" - tslib "^2.6.0" - -"@docusaurus/logger@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.1.tgz#423e8270c00a57b1b3a0cc8a3ee0a4c522a68387" - integrity sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q== - dependencies: - chalk "^4.1.2" - tslib "^2.6.0" - -"@docusaurus/mdx-loader@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.1.tgz#f79290abc5044bef1d7ecac4eccec887058b8e03" - integrity sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA== - dependencies: - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@docusaurus/logger" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - "@mdx-js/mdx" "^3.0.0" - "@slorber/remark-comment" "^1.0.0" - escape-html "^1.0.3" - estree-util-value-to-estree "^3.0.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - image-size "^1.0.2" - mdast-util-mdx "^3.0.0" - mdast-util-to-string "^4.0.0" - rehype-raw "^7.0.0" - remark-directive "^3.0.0" - remark-emoji "^4.0.0" - remark-frontmatter "^5.0.0" - remark-gfm "^4.0.0" - stringify-object "^3.3.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - url-loader "^4.1.1" - vfile "^6.0.1" - webpack "^5.88.1" - -"@docusaurus/module-type-aliases@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.1.tgz#b304402b0535a13ebd4c0db1c368d2604d54d02f" - integrity sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A== - dependencies: - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "3.1.1" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - -"@docusaurus/plugin-content-blog@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.1.tgz#16f4fd723227b2158461bba6b9bcc18c1926f7ea" - integrity sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/logger" "3.1.1" - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-common" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - cheerio "^1.0.0-rc.12" - feed "^4.2.2" - fs-extra "^11.1.1" - lodash "^4.17.21" - reading-time "^1.5.0" - srcset "^4.0.0" - tslib "^2.6.0" - unist-util-visit "^5.0.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-docs@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.1.tgz#f2eddebf351dd8dd504a2c26061165c519e1f964" - integrity sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/logger" "3.1.1" - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/module-type-aliases" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - "@types/react-router-config" "^5.0.7" - combine-promises "^1.1.0" - fs-extra "^11.1.1" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-pages@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.1.tgz#05aec68c2abeac2140c7a16d4c5b506bf4d19fb2" - integrity sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - fs-extra "^11.1.1" - tslib "^2.6.0" - webpack "^5.88.1" - -"@docusaurus/plugin-debug@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.1.tgz#cee5aae1fef288fb93f68894db79a2612e313d3f" - integrity sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - fs-extra "^11.1.1" - react-json-view-lite "^1.2.0" - tslib "^2.6.0" - -"@docusaurus/plugin-google-analytics@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.1.tgz#bfc58205b4fcaf3222e04f9c3542f3bef9804887" - integrity sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - tslib "^2.6.0" - -"@docusaurus/plugin-google-gtag@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.1.tgz#7e8b5aa6847a12461c104a65a335f4a45dae2f28" - integrity sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - "@types/gtag.js" "^0.0.12" - tslib "^2.6.0" - -"@docusaurus/plugin-google-tag-manager@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.1.tgz#e1aae4d821e786d133386b4ae6e6fe66a4bc0089" - integrity sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - tslib "^2.6.0" - -"@docusaurus/plugin-sitemap@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.1.tgz#8828bf5e2922273aad207a35189f22913e6a0dfd" - integrity sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/logger" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-common" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - fs-extra "^11.1.1" - sitemap "^7.1.1" - tslib "^2.6.0" - -"@docusaurus/preset-classic@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.1.tgz#15fd80012529dafd7e01cc0bce59d39ee6ad6bf5" - integrity sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/plugin-content-blog" "3.1.1" - "@docusaurus/plugin-content-docs" "3.1.1" - "@docusaurus/plugin-content-pages" "3.1.1" - "@docusaurus/plugin-debug" "3.1.1" - "@docusaurus/plugin-google-analytics" "3.1.1" - "@docusaurus/plugin-google-gtag" "3.1.1" - "@docusaurus/plugin-google-tag-manager" "3.1.1" - "@docusaurus/plugin-sitemap" "3.1.1" - "@docusaurus/theme-classic" "3.1.1" - "@docusaurus/theme-common" "3.1.1" - "@docusaurus/theme-search-algolia" "3.1.1" - "@docusaurus/types" "3.1.1" - -"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" - integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== - dependencies: - "@types/react" "*" - prop-types "^15.6.2" - -"@docusaurus/theme-classic@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.1.tgz#0a188c787fc4bf2bb525cc30c7aa34e555ee96b8" - integrity sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q== - dependencies: - "@docusaurus/core" "3.1.1" - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/module-type-aliases" "3.1.1" - "@docusaurus/plugin-content-blog" "3.1.1" - "@docusaurus/plugin-content-docs" "3.1.1" - "@docusaurus/plugin-content-pages" "3.1.1" - "@docusaurus/theme-common" "3.1.1" - "@docusaurus/theme-translations" "3.1.1" - "@docusaurus/types" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-common" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - "@mdx-js/react" "^3.0.0" - clsx "^2.0.0" - copy-text-to-clipboard "^3.2.0" - infima "0.2.0-alpha.43" - lodash "^4.17.21" - nprogress "^0.2.0" - postcss "^8.4.26" - prism-react-renderer "^2.3.0" - prismjs "^1.29.0" - react-router-dom "^5.3.4" - rtlcss "^4.1.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-common@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.1.tgz#5a16893928b8379c9e83aef01d753e7e142459e2" - integrity sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg== - dependencies: - "@docusaurus/mdx-loader" "3.1.1" - "@docusaurus/module-type-aliases" "3.1.1" - "@docusaurus/plugin-content-blog" "3.1.1" - "@docusaurus/plugin-content-docs" "3.1.1" - "@docusaurus/plugin-content-pages" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-common" "3.1.1" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - clsx "^2.0.0" - parse-numeric-range "^1.3.0" - prism-react-renderer "^2.3.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-search-algolia@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.1.tgz#5170cd68cc59d150416b070bdc6d15c363ddf5e1" - integrity sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g== - dependencies: - "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.1.1" - "@docusaurus/logger" "3.1.1" - "@docusaurus/plugin-content-docs" "3.1.1" - "@docusaurus/theme-common" "3.1.1" - "@docusaurus/theme-translations" "3.1.1" - "@docusaurus/utils" "3.1.1" - "@docusaurus/utils-validation" "3.1.1" - algoliasearch "^4.18.0" - algoliasearch-helper "^3.13.3" - clsx "^2.0.0" - eta "^2.2.0" - fs-extra "^11.1.1" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-translations@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.1.tgz#117e91ba5e3a8178cb59f3028bf41de165a508c1" - integrity sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg== - dependencies: - fs-extra "^11.1.1" - tslib "^2.6.0" - -"@docusaurus/types@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.1.tgz#747c9dee8cf7c3b0e5ee7351bac5e9c4fdc7f259" - integrity sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg== - dependencies: - "@mdx-js/mdx" "^3.0.0" - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.9.2" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.88.1" - webpack-merge "^5.9.0" - -"@docusaurus/utils-common@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.1.tgz#b48fade63523fd40f3adb67b47c3371e5183c20b" - integrity sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg== - dependencies: - tslib "^2.6.0" - -"@docusaurus/utils-validation@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.1.tgz#3a747349ed05aee0e4d543552b41f3c9467ee731" - integrity sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA== - dependencies: - "@docusaurus/logger" "3.1.1" - "@docusaurus/utils" "3.1.1" - joi "^17.9.2" - js-yaml "^4.1.0" - tslib "^2.6.0" - -"@docusaurus/utils@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.1.tgz#e822d14704e4b3bb451ca464a7cc56aea9b55a45" - integrity sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg== - dependencies: - "@docusaurus/logger" "3.1.1" - "@svgr/webpack" "^6.5.1" - escape-string-regexp "^4.0.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - github-slugger "^1.5.0" - globby "^11.1.0" - gray-matter "^4.0.3" - jiti "^1.20.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.6.0" - url-loader "^4.1.1" - webpack "^5.88.1" - -"@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== - -"@hapi/hoek@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - -"@mdx-js/mdx@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.0.0.tgz#37ef87685143fafedf1165f0a79e9fe95fbe5154" - integrity sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw== - dependencies: - "@types/estree" "^1.0.0" - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdx" "^2.0.0" - collapse-white-space "^2.0.0" - devlop "^1.0.0" - estree-util-build-jsx "^3.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-util-to-js "^2.0.0" - estree-walker "^3.0.0" - hast-util-to-estree "^3.0.0" - hast-util-to-jsx-runtime "^2.0.0" - markdown-extensions "^2.0.0" - periscopic "^3.0.0" - remark-mdx "^3.0.0" - remark-parse "^11.0.0" - remark-rehype "^11.0.0" - source-map "^0.7.0" - unified "^11.0.0" - unist-util-position-from-estree "^2.0.0" - unist-util-stringify-position "^4.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -"@mdx-js/react@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.0.0.tgz#eaccaa8d6a7736b19080aff5a70448a7ba692271" - integrity sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ== - dependencies: - "@types/mdx" "^2.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pnpm/config.env-replace@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" - integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" - integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" - integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.24" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" - integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== - -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@sindresorhus/is@^5.2.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" - integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== - -"@slorber/remark-comment@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" - integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.1.0" - micromark-util-symbol "^1.0.1" - -"@slorber/static-site-generator-webpack-plugin@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" - integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== - dependencies: - eval "^0.1.8" - p-map "^4.0.0" - webpack-sources "^3.2.2" - -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== - -"@svgr/babel-plugin-remove-jsx-attribute@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - camelcase "^6.2.0" - cosmiconfig "^7.0.1" - -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== - dependencies: - "@babel/types" "^7.20.0" - entities "^4.4.0" - -"@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" - svg-parser "^2.0.4" - -"@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== - dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" - -"@svgr/webpack@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== - dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" - -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/acorn@^4.0.0": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" - integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== - dependencies: - "@types/estree" "*" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605" - integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree-jsx@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.4.tgz#8d34b43444887dde8a73af530f772f23e1d3287c" - integrity sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ== - dependencies: - "@types/estree" "*" - -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - -"@types/estree@^1.0.0", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.27" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" - integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/gtag.js@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" - integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== - -"@types/hast@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/history@^4.7.11": - version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-cache-semantics@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/mdast@^4.0.0", "@types/mdast@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333" - integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== - dependencies: - "@types/unist" "*" - -"@types/mdx@^2.0.0": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.11.tgz#21f4c166ed0e0a3a733869ba04cd8daea9834b8e" - integrity sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw== - -"@types/mime@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/ms@*": - version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== - -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@^17.0.5": - version "17.0.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.7.tgz#4a53d8332bb65a45470a2f9e2611f1ced637a5cb" - integrity sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prismjs@^1.26.0": - version "1.26.3" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.3.tgz#47fe8e784c2dee24fe636cab82e090d3da9b7dec" - integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react-router-config@*": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" - integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router-config@^5.0.7": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.11.tgz#2761a23acc7905a66a94419ee40294a65aaa483a" - integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "^5.1.0" - -"@types/react-router-dom@*": - version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" - integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" - integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - -"@types/react-router@^5.1.0": - version "5.1.20" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" - integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - -"@types/react@*": - version "17.0.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" - integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== - -"@types/sax@^1.2.1": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e" - integrity sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw== - dependencies: - "@types/node" "*" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" - -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@^1.13.10": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" - -"@types/unist@*", "@types/unist@^2.0.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" - integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== - -"@types/unist@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== - -"@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@ungap/structured-clone@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.0.0, acorn@^8.7.1, acorn@^8.8.2: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -acorn@^8.0.4: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -address@^1.0.1, address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.2, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -algoliasearch-helper@^3.13.3: - version "3.16.2" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.16.2.tgz#edb8744d6ffe52e731387092fef7324d59214e2f" - integrity sha512-Yl/Gu5Cq4Z5s/AJ0jR37OPI1H3+z7PHz657ibyaXgMOaWvPlZ3OACN13N+7HCLPUlB0BN+8BtmrG/CqTilowBA== - dependencies: - "@algolia/events" "^4.0.1" - -algoliasearch@^4.18.0, algoliasearch@^4.19.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" - integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== - dependencies: - "@algolia/cache-browser-local-storage" "4.22.1" - "@algolia/cache-common" "4.22.1" - "@algolia/cache-in-memory" "4.22.1" - "@algolia/client-account" "4.22.1" - "@algolia/client-analytics" "4.22.1" - "@algolia/client-common" "4.22.1" - "@algolia/client-personalization" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/logger-console" "4.22.1" - "@algolia/requester-browser-xhr" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/requester-node-http" "4.22.1" - "@algolia/transporter" "4.22.1" - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astring@^1.8.0: - version "1.8.6" - resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" - integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@^10.4.12, autoprefixer@^10.4.14: - version "10.4.17" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" - integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== - dependencies: - browserslist "^4.22.2" - caniuse-lite "^1.0.30001578" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" - integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.5.0" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" - integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - core-js-compat "^3.34.0" - -babel-plugin-polyfill-regenerator@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - -bail@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -boxen@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" - integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== - dependencies: - ansi-align "^3.0.1" - camelcase "^6.2.0" - chalk "^4.1.2" - cli-boxes "^3.0.0" - string-width "^5.0.1" - type-fest "^2.5.0" - widest-line "^4.0.1" - wrap-ansi "^8.0.1" - -boxen@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" - integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.1" - chalk "^5.2.0" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.0.0, browserslist@^4.18.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== - dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: - version "4.22.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" - integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== - dependencies: - caniuse-lite "^1.0.30001580" - electron-to-chromium "^1.4.648" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacheable-lookup@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" - integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== - -cacheable-request@^10.2.8: - version "10.2.14" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" - integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== - dependencies: - "@types/http-cache-semantics" "^4.0.2" - get-stream "^6.0.1" - http-cache-semantics "^4.1.1" - keyv "^4.5.3" - mimic-response "^4.0.0" - normalize-url "^8.0.0" - responselike "^3.0.0" - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-bind@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.6.tgz#6c46675fc7a5e9de82d75a233d586c8b7ac0d931" - integrity sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.3" - set-function-length "^1.2.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: - version "1.0.30001457" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz" - integrity sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA== - -caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001580: - version "1.0.30001585" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" - integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.1, chalk@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - -character-reference-invalid@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" - integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.12: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@^3.4.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -clean-css@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" - integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== - dependencies: - source-map "~0.6.0" - -clean-css@^5.3.2, clean-css@~5.3.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -cli-table3@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clsx@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== - -collapse-white-space@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" - integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colord@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== - -colorette@^2.0.10: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -combine-promises@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" - integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" - integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== - dependencies: - dot-prop "^6.0.1" - graceful-fs "^4.2.6" - unique-string "^3.0.0" - write-file-atomic "^3.0.3" - xdg-basedir "^5.0.1" - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -consola@^2.15.3: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-text-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" - integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== - -copy-webpack-plugin@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== - dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" - integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== - dependencies: - browserslist "^4.22.2" - -core-js-pure@^3.30.2: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.35.1.tgz#f33ad7fdf9dddae260339a30e5f8363f5c49a3bc" - integrity sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ== - -core-js@^3.31.1: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.3.5: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - -css-loader@^6.8.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-minimizer-webpack-plugin@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" - integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== - dependencies: - cssnano "^5.1.8" - jest-worker "^29.1.2" - postcss "^8.4.17" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== - dependencies: - boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-advanced@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" - integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== - dependencies: - autoprefixer "^10.4.12" - cssnano-preset-default "^5.2.14" - postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.1" - postcss-reduce-idents "^5.2.0" - postcss-zindex "^5.1.0" - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.1.15, cssnano@^5.1.8: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csstype@^3.0.2: - version "3.0.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" - integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.6.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== - dependencies: - character-entities "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-data-property@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.2.tgz#f3c33b4f0102360cd7c0f5f28700f5678510b63a" - integrity sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.2" - gopd "^1.0.1" - has-property-descriptors "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -del@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - -devlop@^1.0.0, devlop@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.4.17: - version "1.4.31" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.31.tgz#8d5ccc3f8253cd142b07afaa84f200fd33a7f2a6" - integrity sha512-t3XVQtk+Frkv6aTD4RRk0OqosU+VLe1dQFW83MDer78ZD6a52frgXuYOIsLYTQiH2Lm+JB2OKYcn7zrX+YGAiQ== - -electron-to-chromium@^1.4.648: - version "1.4.661" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.661.tgz#b28d63468b06e75610ed2b0f8e5f5f669a57bd91" - integrity sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojilib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" - integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -emoticon@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.0.1.tgz#2d2bbbf231ce3a5909e185bbb64a9da703a1e749" - integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" - integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-util-attach-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" - integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== - dependencies: - "@types/estree" "^1.0.0" - -estree-util-build-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" - integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== - dependencies: - "@types/estree-jsx" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-walker "^3.0.0" - -estree-util-is-identifier-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" - integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== - -estree-util-to-js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" - integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== - dependencies: - "@types/estree-jsx" "^1.0.0" - astring "^1.8.0" - source-map "^0.7.0" - -estree-util-value-to-estree@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5" - integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA== - dependencies: - "@types/estree" "^1.0.0" - is-plain-obj "^4.0.0" - -estree-util-visit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" - integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/unist" "^3.0.0" - -estree-walker@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" - integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - dependencies: - "@types/estree" "^1.0.0" - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eta@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" - integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eval@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" - integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== - dependencies: - "@types/node" "*" - require-like ">= 0.1.1" - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -express@^4.17.3: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-glob@^3.2.11, fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= - dependencies: - punycode "^1.3.2" - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fault@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" - integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== - dependencies: - format "^0.2.0" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -feed@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" - integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== - dependencies: - xml-js "^1.6.11" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -follow-redirects@^1.0.0: - version "1.14.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" - integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== - -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" - integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -form-data-encoder@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" - integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== - -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-extra@^11.1.1: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -github-slugger@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" - integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globby@^11.0.1, globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@^12.1.0: - version "12.6.1" - resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" - integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== - dependencies: - "@sindresorhus/is" "^5.2.0" - "@szmarczak/http-timer" "^5.0.1" - cacheable-lookup "^7.0.0" - cacheable-request "^10.2.8" - decompress-response "^6.0.0" - form-data-encoder "^2.1.2" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^3.0.0" - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-yarn@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" - integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hast-util-from-parse5@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz#654a5676a41211e14ee80d1b1758c399a0327651" - integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - hastscript "^8.0.0" - property-information "^6.0.0" - vfile "^6.0.0" - vfile-location "^5.0.0" - web-namespaces "^2.0.0" - -hast-util-parse-selector@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" - integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-raw@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c" - integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - "@ungap/structured-clone" "^1.0.0" - hast-util-from-parse5 "^8.0.0" - hast-util-to-parse5 "^8.0.0" - html-void-elements "^3.0.0" - mdast-util-to-hast "^13.0.0" - parse5 "^7.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-to-estree@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz#f2afe5e869ddf0cf690c75f9fc699f3180b51b19" - integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== - dependencies: - "@types/estree" "^1.0.0" - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - estree-util-attach-comments "^3.0.0" - estree-util-is-identifier-name "^3.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^0.4.0" - unist-util-position "^5.0.0" - zwitch "^2.0.0" - -hast-util-to-jsx-runtime@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz#3ed27caf8dc175080117706bf7269404a0aa4f7c" - integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== - dependencies: - "@types/estree" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" - unist-util-position "^5.0.0" - vfile-message "^4.0.0" - -hast-util-to-parse5@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" - integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -hastscript@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-8.0.0.tgz#4ef795ec8dee867101b9f23cc830d4baf4fd781a" - integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - hast-util-parse-selector "^4.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hoist-non-react-statics@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== - -html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-minifier-terser@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" - integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== - dependencies: - camel-case "^4.1.2" - clean-css "~5.3.2" - commander "^10.0.0" - entities "^4.4.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.15.1" - -html-tags@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -html-webpack-plugin@^5.5.3: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== - -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http2-wrapper@^2.1.10: - version "2.2.1" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" - integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ignore@^5.1.4, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.7: - version "9.0.12" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" - integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== - -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infima@0.2.0-alpha.43: - version "0.2.0-alpha.43" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.43.tgz#f7aa1d7b30b6c08afef441c726bac6150228cbe0" - integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inline-style-parser@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" - integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== - -inline-style-parser@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" - integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -is-alphabetical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" - integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== - -is-alphanumerical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" - integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-decimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" - integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" - integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-npm@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" - integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-reference@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" - integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== - dependencies: - "@types/estree" "*" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" - integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.1.2: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jiti@^1.20.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -joi@^17.9.2: - version "17.12.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" - integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -latest-version@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" - integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== - dependencies: - package-json "^8.1.0" - -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" - integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -longest-streak@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" - integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -markdown-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" - integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== - -markdown-table@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" - integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== - -mdast-util-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f" - integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" - integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== - dependencies: - "@types/mdast" "^4.0.0" - escape-string-regexp "^5.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-from-markdown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88" - integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - mdast-util-to-string "^4.0.0" - micromark "^4.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-decode-string "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-stringify-position "^4.0.0" - -mdast-util-frontmatter@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8" - integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - escape-string-regexp "^5.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - -mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a" - integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== - dependencies: - "@types/mdast" "^4.0.0" - ccount "^2.0.0" - devlop "^1.0.0" - mdast-util-find-and-replace "^3.0.0" - micromark-util-character "^2.0.0" - -mdast-util-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" - integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - -mdast-util-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" - integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" - integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - markdown-table "^3.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-task-list-item@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" - integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" - integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-gfm-autolink-literal "^2.0.0" - mdast-util-gfm-footnote "^2.0.0" - mdast-util-gfm-strikethrough "^2.0.0" - mdast-util-gfm-table "^2.0.0" - mdast-util-gfm-task-list-item "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-expression@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87" - integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz#f73631fa5bb7a36712ff1e9cedec0cafed03401c" - integrity sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-remove-position "^5.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -mdast-util-mdx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" - integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdxjs-esm@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" - integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-phrasing@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" - integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== - dependencies: - "@types/mdast" "^4.0.0" - unist-util-is "^6.0.0" - -mdast-util-to-hast@^13.0.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz#1ae54d903150a10fe04d59f03b2b95fd210b2124" - integrity sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -mdast-util-to-markdown@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4" - integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - longest-streak "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-string "^4.0.0" - micromark-util-decode-string "^2.0.0" - unist-util-visit "^5.0.0" - zwitch "^2.0.0" - -mdast-util-to-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" - integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== - dependencies: - "@types/mdast" "^4.0.0" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memfs@^3.1.2, memfs@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" - integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== - dependencies: - fs-monkey "1.0.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromark-core-commonmark@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" - integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz#527869de497a6de9024138479091bc885dae076b" - integrity sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - parse-entities "^4.0.0" - -micromark-extension-frontmatter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a" - integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== - dependencies: - fault "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9" - integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c" - integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61" - integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7" - integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-tagfilter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" - integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-gfm-task-list-item@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838" - integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" - integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== - dependencies: - micromark-extension-gfm-autolink-literal "^2.0.0" - micromark-extension-gfm-footnote "^2.0.0" - micromark-extension-gfm-strikethrough "^2.0.0" - micromark-extension-gfm-table "^2.0.0" - micromark-extension-gfm-tagfilter "^2.0.0" - micromark-extension-gfm-task-list-item "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-expression@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a" - integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz#4aba0797c25efb2366a3fd2d367c6b1c1159f4f5" - integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdx-md@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" - integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-mdxjs-esm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" - integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdxjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" - integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== - dependencies: - acorn "^8.0.0" - acorn-jsx "^5.0.0" - micromark-extension-mdx-expression "^3.0.0" - micromark-extension-mdx-jsx "^3.0.0" - micromark-extension-mdx-md "^2.0.0" - micromark-extension-mdxjs-esm "^3.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" - integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" - integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-mdx-expression@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz#f2a9724ce174f1751173beb2c1f88062d3373b1b" - integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-factory-space@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" - integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030" - integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" - integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" - integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" - integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-character@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz#31320ace16b4644316f6bf057531689c71e2aee1" - integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-chunked@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" - integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" - integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" - integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" - integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-decode-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" - integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" - integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== - -micromark-util-events-to-acorn@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07" - integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - estree-util-visit "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-util-html-tag-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" - integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" - integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" - integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== - dependencies: - micromark-util-types "^2.0.0" - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" - integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-subtokenize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" - integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" - integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== - -micromark-util-symbol@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" - integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== - -micromark-util-types@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" - integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== - -micromark-util-types@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" - integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== - -micromark@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" - integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -mimic-response@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" - integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== - -mini-css-extract-plugin@^2.7.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz#1aeae2a90a954b6426c9e8311eab36b450f553a0" - integrity sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-emoji@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" - integrity sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== - dependencies: - "@sindresorhus/is" "^4.6.0" - char-regex "^1.0.2" - emojilib "^2.4.0" - skin-tone "^2.0.0" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -normalize-url@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" - integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= - -nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9, open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== - dependencies: - "@types/retry" "^0.12.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" - integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== - dependencies: - got "^12.1.0" - registry-auth-token "^5.0.1" - registry-url "^6.0.0" - semver "^7.3.7" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-entities@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" - integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== - dependencies: - "@types/unist" "^2.0.0" - character-entities "^2.0.0" - character-entities-legacy "^3.0.0" - character-reference-invalid "^2.0.0" - decode-named-character-reference "^1.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-numeric-range@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" - integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -periscopic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" - integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^3.0.0" - is-reference "^3.0.0" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-discard-unused@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" - integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-loader@^7.3.3: - version "7.3.4" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" - integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== - dependencies: - cosmiconfig "^8.3.5" - jiti "^1.20.0" - semver "^7.5.4" - -postcss-merge-idents@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" - integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" - integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" - integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-idents@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" - integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.8" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" - integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-sort-media-queries@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128" - integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw== - dependencies: - sort-css-media-queries "2.1.0" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss-zindex@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" - integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== - -postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33: - version "8.4.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" - integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prism-react-renderer@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz#e59e5450052ede17488f6bc85de1553f584ff8d5" - integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== - dependencies: - "@types/prismjs" "^1.26.0" - clsx "^2.0.0" - -prismjs@^1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.8.0" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.0.tgz#d237e624c45a9846e469f5f31117f970017ff588" - integrity sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -property-information@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" - integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" - integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== - dependencies: - escape-goat "^4.0.0" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -react-dom@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-helmet-async@*: - version "1.2.3" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" - integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== - dependencies: - "@babel/runtime" "^7.12.5" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - shallowequal "^1.1.0" - -react-helmet-async@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" - integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== - dependencies: - "@babel/runtime" "^7.12.5" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - shallowequal "^1.1.0" - -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-json-view-lite@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.2.1.tgz#c59a0bea4ede394db331d482ee02e293d38f8218" - integrity sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ== - -react-loadable-ssr-addon-v5-slorber@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" - integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== - dependencies: - "@babel/runtime" "^7.10.3" - -react-router-config@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" - integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== - dependencies: - "@babel/runtime" "^7.1.2" - -react-router-dom@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.4" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.3.4, react-router@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -readable-stream@^2.0.1: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reading-time@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" - integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" - integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -registry-url@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" - integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== - dependencies: - rc "1.2.8" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -rehype-raw@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" - integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== - dependencies: - "@types/hast" "^3.0.0" - hast-util-raw "^9.0.0" - vfile "^6.0.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remark-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.0.tgz#34452d951b37e6207d2e2a4f830dc33442923268" - integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-directive "^3.0.0" - micromark-extension-directive "^3.0.0" - unified "^11.0.0" - -remark-emoji@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04" - integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== - dependencies: - "@types/mdast" "^4.0.2" - emoticon "^4.0.1" - mdast-util-find-and-replace "^3.0.1" - node-emoji "^2.1.0" - unified "^11.0.4" - -remark-frontmatter@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2" - integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-frontmatter "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - unified "^11.0.0" - -remark-gfm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" - integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-gfm "^3.0.0" - micromark-extension-gfm "^3.0.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.0" - -remark-mdx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.0.0.tgz#146905a3925b078970e05fc89b0e16b9cc3bfddd" - integrity sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g== - dependencies: - mdast-util-mdx "^3.0.0" - micromark-extension-mdxjs "^3.0.0" - -remark-parse@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" - integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - micromark-util-types "^2.0.0" - unified "^11.0.0" - -remark-rehype@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.0.tgz#d5f264f42bcbd4d300f030975609d01a1697ccdc" - integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - mdast-util-to-hast "^13.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -remark-stringify@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" - integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-to-markdown "^2.0.0" - unified "^11.0.0" - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -"require-like@>= 0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" - integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve@^1.1.6, resolve@^1.14.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" - integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== - dependencies: - lowercase-keys "^3.0.0" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rtl-detect@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" - integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== - -rtlcss@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.1.1.tgz#f20409fcc197e47d1925996372be196fee900c0c" - integrity sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - postcss "^8.4.21" - strip-json-comments "^3.1.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^3.0.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.8.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" - integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== - dependencies: - semver "^7.3.5" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.7, semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-handler@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-function-length@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" - integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== - dependencies: - define-data-property "^1.1.2" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" - integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sitemap@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" - integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== - dependencies: - "@types/node" "^17.0.5" - "@types/sax" "^1.2.1" - arg "^5.0.0" - sax "^1.2.4" - -skin-tone@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" - integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== - dependencies: - unicode-emoji-modifier-base "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -sort-css-media-queries@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" - integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.0: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -srcset@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" - integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" - integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-to-object@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" - integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== - dependencies: - inline-style-parser "0.1.1" - -style-to-object@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.5.tgz#5e918349bc3a39eee3a804497d97fcbbf2f0d7c0" - integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== - dependencies: - inline-style-parser "0.2.2" - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^2.7.0, svgo@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" - integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -terser@^5.15.1, terser@^5.26.0: - version "5.27.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" - integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tiny-invariant@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tiny-warning@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -trough@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" - integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== - -tslib@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -type-fest@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.13.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type-fest@^2.5.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.0.tgz#ce342f58cab9114912f54b493d60ab39c3fc82b6" - integrity sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-emoji-modifier-base@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" - integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" - integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== - dependencies: - "@types/unist" "^3.0.0" - bail "^2.0.0" - devlop "^1.0.0" - extend "^3.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^6.0.0" - -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position-from-estree@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" - integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-remove-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163" - integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== - dependencies: - "@types/unist" "^3.0.0" - unist-util-visit "^5.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-notifier@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" - integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== - dependencies: - boxen "^7.0.0" - chalk "^5.0.1" - configstore "^6.0.0" - has-yarn "^3.0.0" - import-lazy "^4.0.0" - is-ci "^3.0.1" - is-installed-globally "^0.4.0" - is-npm "^6.0.0" - is-yarn-global "^0.4.0" - latest-version "^7.0.0" - pupa "^3.1.0" - semver "^7.3.7" - semver-diff "^4.0.0" - xdg-basedir "^5.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vfile-location@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.2.tgz#220d9ca1ab6f8b2504a4db398f7ebc149f9cb464" - integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== - dependencies: - "@types/unist" "^3.0.0" - vfile "^6.0.0" - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0, vfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536" - integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -web-namespaces@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" - integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== - -webpack-bundle-analyzer@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - is-plain-object "^5.0.0" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-dev-middleware@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" - integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== - dependencies: - colorette "^2.0.10" - memfs "^3.4.1" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.15.1: - version "4.15.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-merge@^5.9.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.2, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.88.1: - version "5.90.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.1.tgz#62ab0c097d7cbe83d32523dbfbb645cdb7c3c01c" - integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== - dependencies: - chalk "^4.1.0" - consola "^2.15.3" - pretty-time "^1.1.0" - std-env "^3.0.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -wrap-ansi@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" - integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.3.1: - version "7.5.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== - -ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== - -xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" - integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== - -xml-js@^1.6.11: - version "1.6.11" - resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" - integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== - dependencies: - sax "^1.2.4" - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - -zwitch@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==