diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6042dee24..59d1faff6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ PRs to our libraries are always welcome and can be a quick way to get your fix o - Only fix/add the functionality in question **OR** address wide-spread whitespace/style issues, not both. - Add unit or integration tests for fixed or changed functionality (if a test suite exists). - Address a single concern in the least number of changed lines as possible. -- Include documentation in the repo or on our [docs site](https://docs.nhost.io/get-started). +- Include documentation in the repo or on our [docs site](https://docs.nhost.io). - Be accompanied by a complete Pull Request template (loaded automatically when a PR is created). For changes that address core functionality or require breaking changes (e.g., a major release), it's best to open an Issue to discuss your proposal first. This is not required but can save time creating and reviewing changes. diff --git a/DEVELOPERS.md b/DEVELOPERS.md index edd8fc5e9..56ff74fcb 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -14,10 +14,10 @@ The easiest way to install `pnpm` if it's not installed on your machine yet is t $ npm install -g pnpm ``` -### [Nhost CLI](https://docs.nhost.io/cli) +### [Nhost CLI](https://docs.nhost.io/platform/cli/local-development) - The CLI is primarily used for running the E2E tests -- Please refer to the [installation guide](https://docs.nhost.io/get-started/cli-workflow/install-cli) if you have not installed it yet +- Please refer to the [installation guide](https://docs.nhost.io/platform/cli/local-development) if you have not installed it yet ## File Structure diff --git a/README.md b/README.md index 93257c27a..27195d8f3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Nhost -Quickstart +Quickstart   •   Website   •   @@ -36,7 +36,7 @@ Nhost consists of open source software: - Authentication: [Hasura Auth](https://github.com/nhost/hasura-auth/) - Storage: [Hasura Storage](https://github.com/nhost/hasura-storage) - Serverless Functions: Node.js (JavaScript and TypeScript) -- [Nhost CLI](https://docs.nhost.io/development/cli/overview) for local development +- [Nhost CLI](https://docs.nhost.io/platform/cli/local-development) for local development ## Architecture of Nhost @@ -89,25 +89,25 @@ await nhost.graphql.request(`{ Nhost is frontend agnostic, which means Nhost works with all frontend frameworks.
- - - - - - + + + + + +
# Resources -- Start developing locally with the [Nhost CLI](https://docs.nhost.io/cli) +- Start developing locally with the [Nhost CLI](https://docs.nhost.io/platform/cli/local-development) ## Nhost Clients -- [JavaScript/TypeScript](https://docs.nhost.io/reference/javascript) +- [JavaScript/TypeScript](https://docs.nhost.io/reference/javascript/nhost-js/nhost-client) - [Dart and Flutter](https://github.com/nhost/nhost-dart) -- [React](https://docs.nhost.io/reference/react) -- [Next.js](https://docs.nhost.io/reference/nextjs) -- [Vue](https://docs.nhost.io/reference/vue) +- [React](https://docs.nhost.io/reference/react/nhost-client) +- [Next.js](https://docs.nhost.io/reference/nextjs/nhost-client) +- [Vue](https://docs.nhost.io/reference/vue/nhost-client) ## Integrations @@ -140,7 +140,7 @@ This repository, and most of our other open source projects, are licensed under Here are some ways of contributing to making Nhost better: -- **[Try out Nhost](https://docs.nhost.io/introduction)**, and think of ways to make the service better. Let us know here on GitHub. +- **[Try out Nhost](https://docs.nhost.io)**, and think of ways to make the service better. Let us know here on GitHub. - Join our [Discord](https://discord.com/invite/9V7Qb2U) and connect with other members to share and learn from. - Send a pull request to any of our [open source repositories](https://github.com/nhost) on Github. Check our [contribution guide](https://github.com/nhost/nhost/blob/main/CONTRIBUTING.md) and our [developers guide](https://github.com/nhost/nhost/blob/main/DEVELOPERS.md) for more details about how to contribute. We're looking forward to your contribution! diff --git a/dashboard/README.md b/dashboard/README.md index ddb6ce8ea..326200881 100644 --- a/dashboard/README.md +++ b/dashboard/README.md @@ -38,7 +38,7 @@ These files are added to `.gitignore`, so you don't need to worry about committi ### Enable Local Development -You can connect the Nhost Dashboard to your **locally running** Nhost backend in a few steps. Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli#installation). +You can connect the Nhost Dashboard to your **locally running** Nhost backend in a few steps. Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). First, you need to run the following command to start your backend locally: diff --git a/dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx b/dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx index 18706d650..d2c8fd560 100644 --- a/dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx +++ b/dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx @@ -97,7 +97,7 @@ export default function AuthenticatedLayout({ nhost up? Please refer to the{' '} You can also visit our Configuration Overlays {' '} diff --git a/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedEmailSettings/AllowedEmailSettings.tsx b/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedEmailSettings/AllowedEmailSettings.tsx index add7950ba..37433f326 100644 --- a/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedEmailSettings/AllowedEmailSettings.tsx +++ b/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedEmailSettings/AllowedEmailSettings.tsx @@ -162,7 +162,7 @@ export default function AllowedEmailDomainsSettings() { loading: formState.isSubmitting, }, }} - docsLink="https://docs.nhost.io/guides/auth/overview#allowed-emails-and-domains" + docsLink="https://docs.nhost.io/products/auth/overview#allowed-emails-and-domains" switchId="enabled" showSwitch className={twMerge( diff --git a/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedRedirectURLsSettings/AllowedRedirectURLsSettings.tsx b/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedRedirectURLsSettings/AllowedRedirectURLsSettings.tsx index e090f2070..33c6ff529 100644 --- a/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedRedirectURLsSettings/AllowedRedirectURLsSettings.tsx +++ b/dashboard/src/features/orgs/projects/authentication/settings/components/AllowedRedirectURLsSettings/AllowedRedirectURLsSettings.tsx @@ -134,7 +134,7 @@ export default function AllowedRedirectURLsSettings() { loading: formState.isSubmitting, }, }} - docsLink="https://docs.nhost.io/guides/auth/overview#allowed-redirect-urls" + docsLink="https://docs.nhost.io/products/auth/overview#allowed-redirect-urls" className="grid grid-flow-row px-4 lg:grid-cols-5" > {isFreeProject ? ( diff --git a/dashboard/src/features/orgs/projects/environmentVariables/settings/components/EnvironmentVariableSettings/EnvironmentVariableSettings.tsx b/dashboard/src/features/orgs/projects/environmentVariables/settings/components/EnvironmentVariableSettings/EnvironmentVariableSettings.tsx index e4a0c1e5d..2688b797e 100644 --- a/dashboard/src/features/orgs/projects/environmentVariables/settings/components/EnvironmentVariableSettings/EnvironmentVariableSettings.tsx +++ b/dashboard/src/features/orgs/projects/environmentVariables/settings/components/EnvironmentVariableSettings/EnvironmentVariableSettings.tsx @@ -161,7 +161,7 @@ export default function EnvironmentVariableSettings() { Base Directory{' '} {project?.githubRepository ? ( diff --git a/dashboard/src/features/orgs/projects/git/settings/components/DeploymentBranchSettings/DeploymentBranchSettings.tsx b/dashboard/src/features/orgs/projects/git/settings/components/DeploymentBranchSettings/DeploymentBranchSettings.tsx index 3959fa457..f0376b359 100644 --- a/dashboard/src/features/orgs/projects/git/settings/components/DeploymentBranchSettings/DeploymentBranchSettings.tsx +++ b/dashboard/src/features/orgs/projects/git/settings/components/DeploymentBranchSettings/DeploymentBranchSettings.tsx @@ -83,7 +83,7 @@ export default function DeploymentBranchSettings() { loading: formState.isSubmitting, }, }} - docsLink="https://docs.nhost.io/platform/github-integration#deployment-branch" + docsLink="https://docs.nhost.io/platform/cloud/git#deployment-branch" className="grid grid-flow-row lg:grid-cols-5" > {project?.githubRepository ? ( diff --git a/dashboard/src/features/orgs/projects/git/settings/components/GitConnectionSettings/GitConnectionSettings.tsx b/dashboard/src/features/orgs/projects/git/settings/components/GitConnectionSettings/GitConnectionSettings.tsx index 856252189..dfb748116 100644 --- a/dashboard/src/features/orgs/projects/git/settings/components/GitConnectionSettings/GitConnectionSettings.tsx +++ b/dashboard/src/features/orgs/projects/git/settings/components/GitConnectionSettings/GitConnectionSettings.tsx @@ -51,7 +51,7 @@ export default function GitConnectionSettings() { diff --git a/dashboard/src/features/orgs/projects/jwt/settings/components/JWTSettings/JWTSettings.tsx b/dashboard/src/features/orgs/projects/jwt/settings/components/JWTSettings/JWTSettings.tsx index d1ae91178..bf860b3fc 100644 --- a/dashboard/src/features/orgs/projects/jwt/settings/components/JWTSettings/JWTSettings.tsx +++ b/dashboard/src/features/orgs/projects/jwt/settings/components/JWTSettings/JWTSettings.tsx @@ -298,7 +298,7 @@ export default function JWTSettings() { loading: formState.isSubmitting, }, }} - docsLink="https://docs.nhost.io/guides/auth/jwt" + docsLink="https://docs.nhost.io/products/auth/jwt" docsTitle="JSON Web Token (JWT) Settings" className="grid grid-flow-row gap-x-4 gap-y-2 px-4" > @@ -321,7 +321,7 @@ export default function JWTSettings() { symmetric keys @@ -351,7 +351,7 @@ export default function JWTSettings() { asymmetric keys @@ -381,7 +381,7 @@ export default function JWTSettings() { external signing diff --git a/dashboard/src/features/orgs/projects/metrics/settings/components/ContactPointsSettings/ContactPointsSettings.tsx b/dashboard/src/features/orgs/projects/metrics/settings/components/ContactPointsSettings/ContactPointsSettings.tsx index 18a98b088..c17d3fd82 100644 --- a/dashboard/src/features/orgs/projects/metrics/settings/components/ContactPointsSettings/ContactPointsSettings.tsx +++ b/dashboard/src/features/orgs/projects/metrics/settings/components/ContactPointsSettings/ContactPointsSettings.tsx @@ -173,7 +173,7 @@ export default function ContactPointsSettings() { diff --git a/dashboard/src/features/orgs/projects/overview/features/features.tsx b/dashboard/src/features/orgs/projects/overview/features/features.tsx index 724e82e0f..bb49d1f44 100644 --- a/dashboard/src/features/orgs/projects/overview/features/features.tsx +++ b/dashboard/src/features/orgs/projects/overview/features/features.tsx @@ -10,28 +10,28 @@ const features: CardProps[] = [ description: 'Learn how to use Postgres with Nhost', icon: , disableIconBackground: true, - link: 'https://docs.nhost.io/product/database', + link: 'https://docs.nhost.io/products/database/overview', }, { title: 'GraphQL API', description: 'Learn how to interact with the GraphQL API', icon: , disableIconBackground: true, - link: 'https://docs.nhost.io/product/graphql', + link: 'https://docs.nhost.io/products/graphql/overview', }, { title: 'Authentication', description: 'Learn how to authenticate users with Nhost', icon: , disableIconBackground: true, - link: 'https://docs.nhost.io/product/authentication', + link: 'https://docs.nhost.io/products/auth/overview', }, { title: 'Storage', description: 'Learn how to use Storage with Nhost', icon: , disableIconBackground: true, - link: 'https://docs.nhost.io/product/storage', + link: 'https://docs.nhost.io/products/storage/overview', }, ]; diff --git a/dashboard/src/features/orgs/projects/overview/frameworks/frameworks.ts b/dashboard/src/features/orgs/projects/overview/frameworks/frameworks.ts index 4017e3db7..67eb0e512 100644 --- a/dashboard/src/features/orgs/projects/overview/frameworks/frameworks.ts +++ b/dashboard/src/features/orgs/projects/overview/frameworks/frameworks.ts @@ -5,7 +5,7 @@ const frameworks: CardProps[] = [ title: 'React', description: 'Guide to build a simple React app', icon: '/assets/frameworks/react.svg', - link: 'https://docs.nhost.io/guides/quickstarts/react', + link: 'https://docs.nhost.io/getting-started/quickstart/react', iconIsComponent: false, }, { @@ -14,14 +14,14 @@ const frameworks: CardProps[] = [ icon: '/assets/frameworks/nextjs.svg', lightIcon: '/assets/frameworks/light/nextjs.svg', disableIconBackground: true, - link: 'https://docs.nhost.io/guides/quickstarts/nextjs', + link: 'https://docs.nhost.io/getting-started/quickstart/nextjs', iconIsComponent: false, }, { title: 'Vue.js', description: 'Learn how to use Vue.js with Nhost', icon: '/assets/frameworks/vue.svg', - link: 'https://docs.nhost.io/guides/quickstarts/vue', + link: 'https://docs.nhost.io/getting-started/quickstart/vue', iconIsComponent: false, }, ]; diff --git a/dashboard/src/features/orgs/projects/permissions/settings/components/PermissionVariableSettings/PermissionVariableSettings.tsx b/dashboard/src/features/orgs/projects/permissions/settings/components/PermissionVariableSettings/PermissionVariableSettings.tsx index f148c9672..0bdf255ce 100644 --- a/dashboard/src/features/orgs/projects/permissions/settings/components/PermissionVariableSettings/PermissionVariableSettings.tsx +++ b/dashboard/src/features/orgs/projects/permissions/settings/components/PermissionVariableSettings/PermissionVariableSettings.tsx @@ -158,7 +158,7 @@ export default function PermissionVariableSettings() { Learn more about{' '} Learn more about{' '} resources diff --git a/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/HealthCheckFormSection/HealthCheckFormSection.tsx b/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/HealthCheckFormSection/HealthCheckFormSection.tsx index a154c589c..828de394d 100644 --- a/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/HealthCheckFormSection/HealthCheckFormSection.tsx +++ b/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/HealthCheckFormSection/HealthCheckFormSection.tsx @@ -42,7 +42,7 @@ export default function HealthCheckFormSection() { Health Check diff --git a/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/ImageField/ImageField.tsx b/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/ImageField/ImageField.tsx index 661936309..0fac0d3f6 100644 --- a/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/ImageField/ImageField.tsx +++ b/dashboard/src/features/orgs/projects/services/components/ServiceForm/components/ImageField/ImageField.tsx @@ -86,7 +86,7 @@ export default function ImageField({ Learn more about{' '} Learn more about{' '} Networking diff --git a/dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/settings/custom-domains.tsx b/dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/settings/custom-domains.tsx index b7eedab8b..f66cc2f1a 100644 --- a/dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/settings/custom-domains.tsx +++ b/dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/settings/custom-domains.tsx @@ -49,7 +49,7 @@ export default function CustomDomains() { Add a custom domain to Auth, Hasura, PostgreSQL, and your Run services for only a $10 flat fee 🚀
Learn more about Learn more about This is an example of a reusable snippet diff --git a/docs/community/coc.mdx b/docs/community/coc.mdx new file mode 100644 index 000000000..db63e1b32 --- /dev/null +++ b/docs/community/coc.mdx @@ -0,0 +1,128 @@ +--- +title: 'Code of Conduct' +description: 'The set of rules and guidelines that govern interaction among community members' +icon: users-line +--- + +As a community-driven company, Nhost is committed to creating an inclusive and welcoming environment for all members, regardless of factors such as age, body size, disability, ethnicity, gender identity, experience level, education, socio-economic status, nationality, personal appearance, race, religion, or sexual orientation. + +However, diverse communities may face challenges, such as potential misunderstandings and miscommunications. To ensure respectful interactions, free from behaviour that may create an unsafe environment, we have established this Code of Conduct. + +These guidelines do not cover every possible scenario comprehensively but serve as a guiding light towards courteous interactions among community members, aligning with the overarching principle of avoiding unprofessional behaviour. This Code of Conduct applies to all events and participants, aiming to maintain a welcoming and healthy environment for our community. + +Traits of a Nhost community member include: + +### Being considerate and using appropriate channels + +Contributions of every kind have far-ranging consequences. Just as your work depends on the work of others, decisions you make surrounding your contributions to the Nhost community will affect your fellow community members. Use appropriate channels for what you're about to say and refrain from tagging a role that sends out a lot of pings. You are strongly encouraged to take those consequences into account while making decisions. + +### Adhering to these standards + +It's crucial to keep in mind that our community members are from all kinds of backgrounds, so the members are expected to: + +- Demonstrate empathy and kindness toward other people +- Be respectful of differing opinions, viewpoints, and experiences +- Give and accept constructive feedback gracefully +- Accept responsibility and apologise to those affected by mistakes, and learn from such experiences +- Focus on what is best not just for us as individuals, but for the overall community! + +### Patience + +Our community thrives on the generosity of volunteered time. Questions, contributions, and support requests may embark on a time-travelling journey before finding their destination. Repeated "bumps" or persistent "reminders" don't display patience and are looked down upon. Lastly, it is a bad practice to ask general questions to a specific person (in direct messages for example). Try to ask in public as much as you can, and patiently wait for the response + +### Inclusivity, kindness and respectfulness + +Please be courteous and respectful to fellow members. Avoid offensive comments related to age, body size, disability, ethnicity, gender identity, experience level, education, socio-economic status, nationality, personal appearance, race, religion, or sexual orientation. + +Strictly prohibited are sexualized imagery, violence, intimidation, stalking, disruptions, sharing personal information without explicit permission, unwanted physical contact, and unwelcome sexual attention. + +Use inclusive language respecting our community's diversity. + +Avoid assumptions about others' backgrounds. Maintain a positive and professional demeanour, refraining from threatening or inappropriate behaviour. + +**We have zero tolerance for discrimination**. Any form of discrimination, including harassment, will lead to immediate consequences, potentially expulsion. + +### Inquisitive + +**_The only stupid question is the one that does not get asked_**. + +We encourage our users to ask early and ask often. Rather than asking whether you can ask a question (the answer is always yes!), instead, simply ask your question. You are encouraged to provide as many specifics as possible. + +Code snippets in the form of images are bad practice. Instead, use text formatted as code (using backticks) on Discord or simply send a gist. Refrain from pasting multiple lines of code directly into the chat channels - instead use [gist.github.com](http://gist.github.com/) or another paste site to provide code snippets. + +### Helpful + +Nhost welcomes users of all skill levels. We were all beginners once, and a supportive environment is essential for the community to thrive. While it can be repetitive to answer the same questions, members are expected to be courteous and helpful to everyone. + +Avoid sarcastic responses and prioritize useful information. Everyone should read the provided documentation. We're here to answer questions, offer guidance, and suggest workflows, but not to do your job for you. + +### Anti-harassment policy + +Harassment includes (but is not limited to) all of the following behaviors: + +- Offensive comments related to gender (including gender expression and identity), age, sexual orientation, disability, physical appearance, body size, race, and religion. +- Derogatory terminology including words commonly known to be slurs +- Posting sexualized images or imagery in public spaces +- Deliberate intimidation +- Stalking +- Posting others' personal information without explicit permission +- Sustained disruption of talks or other events +- Inappropriate physical contact +- Unwelcome sexual attention + +Immediate compliance is expected from participants asked to cease harassing behaviour. Sponsors must adhere to the anti-harassment policy, refraining from using sexualized images or creating a sexualized environment at events. Volunteer organizers, including meetup staff, should also avoid sexualized attire. + +Continuing inappropriate behaviour after being asked to stop constitutes harassment, even if not explicitly mentioned in this policy. It is respectful to stop doing something when asked to do so, and all community members are expected to promptly comply with such requests. + +### Reporting policy violations + +Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to anyone with administrative power in the community (Admins or Moderators on Discord, members of the 'DevRel' role), or to the local organizers of an event or to [our support team](https://app.nhost.io/support). Meetup organizers are encouraged to prominently display points of contact for reporting unacceptable behaviour at local events. + +If a participant engages in harassing behaviour, the meetup organizers may take any action they deem appropriate. These actions may include but are not limited to warning the offender, expelling the offender from the event, and barring the offender from future community events. + +Organizers will be happy to help participants contact security or local law enforcement, provide escorts to an alternate location, or otherwise assist those experiencing harassment to feel safe during the meetup. We value the safety and well-being of our community members and want everyone to feel welcome at our events, both online and offline. + +We expect all participants, organizers, speakers, and attendees to follow these policies at all of our event venues and event-related social events. + +### 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 behaviour 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 behaviour 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 behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. 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 behaviour. +- `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 behaviour, 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. + +The Nhost Community Code of Conduct is licensed under the Creative Commons Attribution-Share Alike 3.0 license. + +Our Code of Conduct was adapted from Codes of Conduct of other open-source projects, including: + +- **Contributor Covenant** +- **Elastic** +- **The Fedora Project** +- **OpenStack** +- **Ansible** +- **Puppet Labs** +- **Ubuntu** +- **Novu** + +Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder. + +For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. + +Translations are available at https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/docs/community/getting-involved.mdx b/docs/community/getting-involved.mdx new file mode 100644 index 000000000..a2e8e9270 --- /dev/null +++ b/docs/community/getting-involved.mdx @@ -0,0 +1,57 @@ +--- +title: 'Getting Involved' +description: 'Get started with making your first contribution' +icon: handshake-simple +--- + +# Contributing + +Welcome and thank you for considering contributing to Nhost! + +This document outlines the rules to follow to make the contribution process easy and effective for everyone involved. If you are ever in doubt about anything, we encourage you to reach out [via Discord](https://discord.com/invite/9V7Qb2U). + +## Code of Conduct + +We take our open source community seriously and hold ourselves and other contributors to high standards of communication. By participating and contributing to this project, you agree to uphold our [Code of Conduct](https://github.com/nhost/nhost/blob/main/CODE_OF_CONDUCT.md). + +## Getting Started + +Contributions are made to Nhost repos via Issues and Pull Requests (PRs). A few general guidelines that cover both: + +- Search for existing Issues and PRs before creating your own. +- We work hard to make sure issues are handled on time, but it could take a while to investigate the root cause depending on the impact. A friendly ping in the comment thread to the submitter or a contributor can help draw attention if your issue is blocking. +- If you've never contributed before, see [the first-timer's guide](https://github.com/firstcontributions/first-contributions) for resources and tips on getting started. + +### Issues + +Issues should be used to report problems with Nhost, request a new feature, or discuss potential changes before a PR is created. + +If you find an Issue that addresses the problem you're having, please add your reproduction information to the existing issue rather than creating a new one. Adding a [reaction](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) can also help indicate to our maintainers that a particular problem affects more than just the reporter. + +### Pull Requests + +Please have a look at our [developers guide](https://github.com/nhost/nhost/blob/main/DEVELOPERS.md) to start coding! + +PRs to our libraries are always welcome and can be a quick way to get your fix or improvement slated for the next release. In general, PRs should: + +- Only fix/add the functionality in question **OR** address wide-spread whitespace/style issues, not both. +- Add unit or integration tests for fixed or changed functionality (if a test suite exists). +- Address a single concern in the least number of changed lines as possible. +- Include documentation in the repo or on our [docs site](https://docs.nhost.io). +- Be accompanied by a complete Pull Request template (loaded automatically when a PR is created). + +For changes that address core functionality or require breaking changes (e.g., a major release), it's best to open an Issue to discuss your proposal first. This is not required but can save time creating and reviewing changes. + +In general, we follow the ["fork-and-pull" Git workflow](https://github.com/susam/gitpr) + +1. Fork the repository to your own Github account +2. Clone the project to your machine +3. Create a branch locally with a succinct but descriptive name. All changes should be part of a branch and submitted as a pull request - your branches should be prefixed with one of: + - `bug/` for bug fixes + - `feat/` for features + - `chore/` for configuration changes + - `docs/` for documentation changes +4. Commit changes to the branch +5. Following any formatting and testing guidelines specific to this repo +6. Push changes to your fork +7. Open a PR in our repository and follow the PR template to review the changes efficiently. \ No newline at end of file diff --git a/docs/development/cli/commands.mdx b/docs/development/cli/commands.mdx deleted file mode 100644 index 8c7bce1aa..000000000 --- a/docs/development/cli/commands.mdx +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Commands -description: Available commands to run and manage local Nhost projects -icon: rectangle-code ---- - -## `nhost init` - -Initializes current directory with a new project containing configuration and objects necessary to run Nhost locally. - - - -Initializing Nhost project - -Successfully initialized Nhost project, run `nhost up` to start development - - - -### Flags - -`--remote` optional `false`
-Pulls state from a remote Nhost instance. - -## `nhost up` - -Starts Nhost for development and testing purposes. Requires scaffolding from `nhost init`. - - - -``` -Nhost development environment started. -URLs: -- Postgres: postgres://postgres:postgres@localhost:5432/local -- Hasura: https://local.hasura.local.nhost.run -- GraphQL: https://local.graphql.local.nhost.run -- Auth: https://local.auth.local.nhost.run -- Storage: https://local.storage.local.nhost.run -- Functions: https://local.functions.local.nhost.run -- Dashboard: https://local.dashboard.local.nhost.run -- Mailhog: https://local.mailhog.local.nhost.run - -SDK Configuration: - Subdomain: local - Region: (empty) - -Run `nhost up` to reload the development environment -Run `nhost down` to stop the development environment -Run `nhost logs` to watch the logs -``` - - - -## `nhost down` - -Stops all services and deletes all containers. - -### Flags - -`--volumes` optional `false`
-Remove volumes. - -## `nhost login` - -Login to an Nhost account to perform authenticated operations. - - -- email: user@domain.com -- password: - -Authenticating
-Successfully logged in, creating PAT
-Successfully created PAT
-Storing PAT for future user - -
- -### Flags - -`--email` optional
-Email adress. - -`--password` optional
-Password. - -`--pat` optional
-Use this Personal Access Token instead of generating a new one with email/password. - -## `nhost logs` - -Render all logs. - - -``` -app-auth-1 | {"level":"info","message":"Applying SQL migrations..."} -app-auth-1 | {"level":"info","message":"SQL migrations applied"} -app-auth-1 | {"level":"info","message":"Applying metadata..."} -app-auth-1 | {"level":"info","message":"Metadata applied"} -app-auth-1 | {"level":"info","message":"Running on port 4000"} -``` - - - -### Flags - -`--follow` optional
-Follow (or tail) log output. - -`--no-color` optional
-Produce monochrome output. - -`--no-log-prefix` optional
-Don't print prefix in logs. - -`--since` optional
-Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) - -`--tail` optional `all`
-Number of lines to show from the end of the logs for each service - -`--timestamps` optional
-Show timestamps - -`--until` optional
-Show logs before a timestamp - -## `nhost list` - -List all remote Nhost projects this user has access to. - - - -``` - # │ Subdomain │ Project │ Workspace │ Region │ - 1 │ dahvgwlspuridghplrso │ nbp │ Nuno's Workspace │ eu-central-1 │ - 2 │ mhmvhergiiycqfvhisan │ Bun Generator │ Nhost Examples │ eu-central-1 │ - 4 │ qaxzubvwbuhzgxswghug │ Next.js Stripe Starter Template │ Nhost Examples │ eu-central-1 │ - 5 │ cuzwcdqwgmhbxqetfbci │ Nhost Netlify Starter Template │ Nhost Examples │ us-east-1 │ - 6 │ jsjiiuwiuqdvvwgwhxnx │ quickstarts │ Nhost Examples │ eu-central-1 │ - 7 │ vvhjnsgebtspueuuxnvp │ React Apollo │ Nhost Examples │ eu-central-1 │ - 9 │ vue-quickstart │ vue-quickstart │ Nhost Examples │ eu-central-1 │ - 11 │ odqlmnqxospbvqvphuyl │ monitoring-app-frankfurt │ monitoring │ eu-central-1 │ - 12 │ xmhqdbhkvskuubnelgkc │ monitoring-app-london │ monitoring │ eu-west-2 │ - 13 │ jjetetkbmovfgyewremk │ monitoring-app-mumbai │ monitoring │ ap-south-1 │ -``` - - - -## `nhost secrets` - -Manage secrets in the Nhost cloud. - -### `nhost secrets create` - -#### Flags - - - - diff --git a/docs/development/cli/getting-started.mdx b/docs/development/cli/getting-started.mdx deleted file mode 100644 index b21846916..000000000 --- a/docs/development/cli/getting-started.mdx +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Nhost CLI -description: Tools to develop and test Nhost projects locally -icon: square-terminal ---- - -## Instaling the Nhost CLI - -To install the Nhost CLI copy the following command and paste it into your terminal: - -```bash -sudo curl -L https://raw.githubusercontent.com/nhost/cli/main/get.sh | bash -``` - -The `get.sh` script checks for both the architecture and operating system and installs the right binary. - -### Supported Platforms: - -- MacOS -- Linux -- Windows WSL2 - -### Dependencies: - -- [Docker](https://docs.docker.com/get-docker/) -- [curl](https://curl.se/) -- [Git](https://git-scm.com/downloads) - -## Updating the Nhost CLI - -Update an existing installation to the latest version. - -```bash Terminal -nhost sw upgrade -``` - -## Running Nhost - -Inside of the folder where you want to create your project, run: - -```bash Terminal -> nhost init - -Initializing Nhost project -Successfully initialized Nhost project, run `nhost up` to start development -``` - -`init` will scaffold a bunch of files that Nhost uses to manage configuration, database schema and migrations, APIs, functions, etc. - -With the project scaffolding in place, start the local Nhost instance with `nhost up`: - -```bash Terminal -> nhost up - - -Nhost development environment started. -URLs: -- Postgres: postgres://postgres:postgres@localhost:5432/local -- Hasura: https://local.hasura.local.nhost.run -- GraphQL: https://local.graphql.local.nhost.run -- Auth: https://local.auth.local.nhost.run -- Storage: https://local.storage.local.nhost.run -- Functions: https://local.functions.local.nhost.run -- Dashboard: https://local.dashboard.local.nhost.run -- Mailhog: https://local.mailhog.local.nhost.run - -SDK Configuration: - Subdomain: local - Region: (empty) - -Run `nhost up` to reload the development environment -Run `nhost down` to stop the development environment -Run `nhost logs` to watch the logs -``` - -The following services are started: - -- Postgres -- Hasura Console -- GraphQL API -- Authentication -- Storage -- Functions -- Dashboard -- Mailhog (SMTP server for testing emails locally) - -Support for Nhost Run services is coming soon diff --git a/docs/development/cli/overview.mdx b/docs/development/cli/overview.mdx deleted file mode 100644 index 5986321d4..000000000 --- a/docs/development/cli/overview.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: 'Overview' -description: 'Developing locally with the Nhost CLI' -icon: hand-wave ---- - -Run the Nhost Stack on your computer with `nhost init` and `nhost start`. The Nhost CLI ships with all the tools you need to run, test, and operate your projects. - -Manage configuration, database migrations, API schema changes, and more, with ease. - -```bash -> nhost up - -Nhost development environment started. -URLs: -- Postgres: postgres://postgres:postgres@localhost:5432/local -- Hasura: https://local.hasura.local.nhost.run -- GraphQL: https://local.graphql.local.nhost.run -- Auth: https://local.auth.local.nhost.run -- Storage: https://local.storage.local.nhost.run -- Functions: https://local.functions.local.nhost.run -- Dashboard: https://local.dashboard.local.nhost.run -- Mailhog: https://local.mailhog.local.nhost.run - -SDK Configuration: - Subdomain: local - Region: (empty) - -Run `nhost up` to reload the development environment -Run `nhost down` to stop the development environment -Run `nhost logs` to watch the logs -``` diff --git a/docs/docs.json b/docs/docs.json new file mode 100644 index 000000000..2e05086bf --- /dev/null +++ b/docs/docs.json @@ -0,0 +1,616 @@ +{ + "$schema": "https://mintlify.com/docs.json", + "theme": "palm", + "name": "Documentation", + "colors": { + "primary": "#3787ff", + "light": "#569aff", + "dark": "#1874ff" + }, + "favicon": "/favicon.svg", + "navigation": { + "tabs": [ + { + "tab": "Welcome", + "pages": [ + "welcome" + ] + }, + { + "tab": "Getting Started", + "pages": [ + { + "group": "Welcome", + "icon": "house", + "pages": ["/getting-started/overview" ] + }, + { + "group": "Quickstart", + "icon": "house", + "pages": [ + "/getting-started/quickstart/react", + "/getting-started/quickstart/nextjs", + "/getting-started/quickstart/vue", + "/getting-started/quickstart/reactnative" + ] + }, + { + "group": "Tutorials", + "icon": "book", + "pages": [ + "/getting-started/tutorials/react", + "/getting-started/tutorials/nextjs", + "/getting-started/tutorials/vue" + ] + } + ] + }, + { + "tab": "Products", + "dropdowns": [ + { + "dropdown": "Overview", + "icon": "eye", + "pages": [ + "/products/overview" + ] + }, + { + "dropdown": "Auth", + "icon": "lock", + "pages": [ + "/products/auth/overview", + "/products/auth/users", + "/products/auth/client_and_redirect_urls", + "/products/auth/jwt", + "/products/auth/email-templates", + "/products/auth/gravatar", + { + "group": "Sign In Methods", + "pages": [ + { + "group": "Social Providers", + "icon": "at", + "pages": [ + "products/auth/social/sign-in-apple", + "products/auth/social/sign-in-azuread", + "products/auth/social/sign-in-discord", + "products/auth/social/sign-in-facebook", + "products/auth/social/sign-in-github", + "products/auth/social/sign-in-google", + "products/auth/social/sign-in-linkedin", + "products/auth/social/sign-in-spotify", + "products/auth/social/sign-in-twitch", + "products/auth/social/sign-in-workos" + ] + }, + "/products/auth/social-connect", + "/products/auth/sign-in-email-password", + "/products/auth/sign-in-otp", + "/products/auth/sign-in-magic-link", + "/products/auth/sign-in-sms-otp", + "/products/auth/webauthn", + "/products/auth/idtokens" + ] + }, + { + "group": "Security", + "icon": "shield", + "pages": [ + + "/products/auth/elevated-permissions", + "/products/auth/bot-protection", + "/products/auth/custom-jwts", + "/products/auth/restricting_emails_and_domains" + ] + } + ] + }, + { + "dropdown": "Database", + "icon":"database", + "pages":[ + "/products/database/overview", + "/products/database/configuring-postgres", + "/products/database/backups", + "/products/database/access", + "/products/database/extensions", + "/products/database/performance", + "/products/database/upgrade-major" + ] + }, + { + "dropdown": "Functions", + "icon":"lambda", + "pages":[ + "/products/functions/overview", + "/products/functions/getting-started", + "/products/functions/runtimes" + ] + }, + { + "dropdown": "GraphQL", + "icon":"webhook", + "pages":[ + "/products/graphql/overview", + "/products/graphql/configuring-hasura", + "/products/graphql/permissions", + "/products/graphql/advanced-features" + ] + }, + { + "dropdown": "Storage", + "icon":"warehouse", + "pages":[ + "/products/storage/overview", + "/products/storage/cdn", + "/products/storage/antivirus" + ] + }, + { + "dropdown": "AI", + "icon":"robot", + "pages":[ + "/products/ai/overview", + "/products/ai/enabling-service", + "/products/ai/local-development", + "/products/ai/auto-embeddings", + "/products/ai/assistants", + "/products/ai/dev-assistant" + ] + }, + { + "dropdown": "Run", + "icon":"play", + "pages":[ + "/products/run/overview", + "/products/run/getting-started", + "/products/run/configuration", + "/products/run/networking", + "/products/run/health-checks", + "/products/run/resources", + "/products/run/registry", + "/products/run/local-development", + "/products/run/configuration-overlays", + "/products/run/cli-deployments" + ] + } + ] + }, + { + "tab": "Platform", + "dropdowns": [ + { + "dropdown": "Overview", + "icon": "eye", + "pages": [ + "/platform/overview" + ] + }, + { + "dropdown": "Cloud", + "icon": "cloud", + "pages": [ + "/platform/cloud/overview", + "platform/cloud/subdomain", + "platform/cloud/compute-resources", + "platform/cloud/service-replicas", + "platform/cloud/metrics", + "platform/cloud/environment-variables", + "platform/cloud/secrets", + "platform/cloud/git", + "platform/cloud/custom-domains", + "platform/cloud/rate-limits", + "platform/cloud/tls", + "platform/cloud/billing" + ] + }, + { + "dropdown": "Local Development", + "icon": "terminal", + "pages": [ + "/platform/cli/overview", + "/platform/cli/local-development", + "/platform/cli/subdomain", + "/platform/cli/migrate-config", + "/platform/cli/multiple-projects", + "/platform/cli/configuration-overlays", + "/platform/cli/seeds" + ] + }, + { + "dropdown": "Self-Hosting", + "icon": "server", + "pages": [ + "/platform/self-hosting/overview", + "/platform/self-hosting/community", + "/platform/self-hosting/support", + "/platform/self-hosting/dedicated" + ] + } + ] + }, + { + "tab":"Reference", + "icon":"bolt", + "pages":[ + "/reference/overview", + { + "group": "Backend Services", + "pages": [ + { + "group": "Authentication", + "icon": "user-check", + "pages": [ + "reference/auth/get-.well-known-jwks.json", + "reference/auth/post-elevate-webauthn", + "reference/auth/post-elevate-webauthn-verify", + "reference/auth/get-healthz", + "reference/auth/head-healthz", + "reference/auth/post-link-idtoken", + "reference/auth/get-mfa-totp-generate", + "reference/auth/post-pat", + "reference/auth/post-signin-anonymous", + "reference/auth/post-signin-email-password", + "reference/auth/post-signin-idtoken", + "reference/auth/post-signin-mfa-totp", + "reference/auth/post-signin-otp-email", + "reference/auth/post-signin-otp-email-verify", + "reference/auth/post-signin-passwordless-email", + "reference/auth/post-signin-passwordless-sms", + "reference/auth/post-signin-passwordless-sms-otp", + "reference/auth/post-signin-pat", + "reference/auth/get-signin-provider-{provider}", + "reference/auth/get-signin-provider-{provider}-callback", + "reference/auth/post-signin-webauthn", + "reference/auth/post-signin-webauthn-verify", + "reference/auth/post-signout", + "reference/auth/post-signup-email-password", + "reference/auth/post-signup-webauthn", + "reference/auth/post-signup-webauthn-verify", + "reference/auth/post-token", + "reference/auth/post-token-verify", + "reference/auth/get-user", + "reference/auth/post-user-deanonymize", + "reference/auth/post-user-email-change", + "reference/auth/post-user-email-send-verification-email", + "reference/auth/post-user-mfa", + "reference/auth/post-user-password", + "reference/auth/post-user-password-reset", + "reference/auth/post-user-provider-tokens", + "reference/auth/post-user-webauthn-add", + "reference/auth/post-user-webauthn-verify", + "reference/auth/get-verify", + "reference/auth/get-version" + ] + }, + { + "group": "Storage", + "icon": "warehouse", + "pages": [ + "reference/storage/upload-file", + "reference/storage/replace-file", + "reference/storage/delete-file", + "reference/storage/download-file", + "reference/storage/download-file-metadata", + "reference/storage/presigned-url", + "reference/storage/get-file-content" + ] + }, + { + "group": "AI", + "icon":"robot", + "pages": [ + "reference/graphql/ai/overview", + { + "group": "Query", + "pages": [ + "reference/graphql/ai/query/assistant", + "reference/graphql/ai/query/assistants", + "reference/graphql/ai/query/session", + "reference/graphql/ai/query/sessionMessages", + "reference/graphql/ai/query/sessions" + ] + }, + { + "group": "Mutation", + "pages": [ + "reference/graphql/ai/mutation/insertAssistant", + "reference/graphql/ai/mutation/updateAssistant", + "reference/graphql/ai/mutation/deleteAssistant", + "reference/graphql/ai/mutation/startSession", + "reference/graphql/ai/mutation/deleteSession", + "reference/graphql/ai/mutation/sendMessage", + "reference/graphql/ai/mutation/startDevSession", + "reference/graphql/ai/mutation/sendDevMessage" + ] + } + ] + } + ] + }, + { + "group": "Client Libraries", + "pages": [ + { + "group": "Javascript", + "icon":"js", + "pages": [ + { + "group": "nhost-js", + "pages": [ + "reference/javascript/nhost-js/nhost-client", + "reference/javascript/nhost-js/set-role", + "reference/javascript/nhost-js/unset-role" + ] + }, + { + "group": "Auth", + "pages": [ + "reference/javascript/auth/hasura-auth-client", + "reference/javascript/auth/change-email", + "reference/javascript/auth/change-password", + "reference/javascript/auth/create-pat", + "reference/javascript/auth/get-access-token", + "reference/javascript/auth/get-authentication-status", + "reference/javascript/auth/get-decoded-access-token", + "reference/javascript/auth/get-hasura-claim", + "reference/javascript/auth/get-hasura-claims", + "reference/javascript/auth/get-session", + "reference/javascript/auth/get-user", + "reference/javascript/auth/is-authenticated", + "reference/javascript/auth/is-authenticated-async", + "reference/javascript/auth/on-auth-state-changed", + "reference/javascript/auth/on-token-changed", + "reference/javascript/auth/refresh-session", + "reference/javascript/auth/reset-password", + "reference/javascript/auth/send-verification-email", + "reference/javascript/auth/sign-in", + "reference/javascript/auth/sign-in-pat", + "reference/javascript/auth/sign-out", + "reference/javascript/auth/sign-up", + "reference/javascript/auth/add-security-key", + "reference/javascript/auth/elevate-email-security-key", + "reference/javascript/auth/connect-provider", + "reference/javascript/auth/sign-in-email-otp", + "reference/javascript/auth/verify-email-otp", + "reference/javascript/auth/sign-in-id-token", + "reference/javascript/auth/link-id-token", + "reference/javascript/auth/sign-in-security-key" + ] + }, + { + "group": "Storage", + "pages": [ + "reference/javascript/storage/hasura-storage-client", + "reference/javascript/storage/upload", + "reference/javascript/storage/download", + "reference/javascript/storage/get-presigned-url", + "reference/javascript/storage/get-public-url", + "reference/javascript/storage/delete", + "reference/javascript/storage/set-access-token", + "reference/javascript/storage/set-admin-secret", + "reference/javascript/storage/set-headers", + "reference/javascript/storage/unset-headers", + "reference/javascript/storage/get-headers" + ] + }, + { + "group": "GraphQL ", + "pages": [ + "reference/javascript/graphql/nhost-graphql-client", + "reference/javascript/graphql/get-url", + "reference/javascript/graphql/set-access-token", + "reference/javascript/graphql/request", + "reference/javascript/graphql/set-headers", + "reference/javascript/graphql/unset-headers", + "reference/javascript/graphql/get-headers" + ] + }, + { + "group": "Functions ", + "pages": [ + "reference/javascript/functions/create-functions-client", + "reference/javascript/functions/call", + "reference/javascript/functions/set-access-token" + ] + } + ] + }, + { + "group": "React", + "icon": "react", + "pages": [ + "reference/react/nhost-client", + "reference/react/signed-in", + "reference/react/signed-out", + "reference/react/use-access-token", + "reference/react/use-add-security-key", + "reference/react/use-authenticated", + "reference/react/use-authentication-status", + "reference/react/use-change-email", + "reference/react/use-change-password", + "reference/react/use-config-mfa", + "reference/react/use-decoded-access-token", + "reference/react/use-file-upload", + "reference/react/use-file-upload-item", + "reference/react/use-hasura-claim", + "reference/react/use-hasura-claims", + "reference/react/use-multiple-files-upload", + "reference/react/use-nhost-client", + "reference/react/use-provider-link", + "reference/react/use-reset-password", + "reference/react/use-send-verification-email", + "reference/react/use-sign-in-anonymous", + "reference/react/use-sign-in-email-password", + "reference/react/use-sign-in-email-passwordless", + "reference/react/use-sign-in-email-security-key", + "reference/react/use-sign-in-pat", + "reference/react/use-sign-in-sms-passwordless", + "reference/react/use-sign-out", + "reference/react/use-sign-up-email-password", + "reference/react/use-sign-up-email-security-key-email", + "reference/react/use-elevate-security-key-email", + "reference/react/use-user-avatar-url", + "reference/react/use-user-data", + "reference/react/use-user-default-role", + "reference/react/use-user-display-name", + "reference/react/use-user-email", + "reference/react/use-user-id", + "reference/react/use-user-is-anonymous", + "reference/react/use-user-locale", + "reference/react/use-user-roles", + "reference/react/use-sign-in-email-otp", + "reference/react/use-sign-in-id-token", + "reference/react/use-link-id-token", + "reference/react/use-sign-in-security-key" + ] + }, + { + "group": "Next.js", + "icon": "react", + "pages": [ + "reference/nextjs/nhost-client", + "reference/nextjs/signed-in", + "reference/nextjs/signed-out", + "reference/nextjs/create-server-side-client", + "reference/nextjs/get-nhost-session", + "reference/nextjs/use-access-token", + "reference/nextjs/use-add-security-key", + "reference/nextjs/use-authenticated", + "reference/nextjs/use-authentication-status", + "reference/nextjs/use-change-email", + "reference/nextjs/use-change-password", + "reference/nextjs/use-config-mfa", + "reference/nextjs/use-decoded-access-token", + "reference/nextjs/use-file-upload", + "reference/nextjs/use-file-upload-item", + "reference/nextjs/use-hasura-claim", + "reference/nextjs/use-hasura-claims", + "reference/nextjs/use-multiple-files-upload", + "reference/nextjs/use-nhost-client", + "reference/nextjs/use-provider-link", + "reference/nextjs/use-reset-password", + "reference/nextjs/use-send-verification-email", + "reference/nextjs/use-sign-in-anonymous", + "reference/nextjs/use-sign-in-email-password", + "reference/nextjs/use-sign-in-email-passwordless", + "reference/nextjs/use-sign-in-email-security-key", + "reference/nextjs/use-sign-in-pat", + "reference/nextjs/use-sign-in-sms-passwordless", + "reference/nextjs/use-sign-out", + "reference/nextjs/use-sign-up-email-password", + "reference/nextjs/use-sign-up-email-security-key-email", + "reference/nextjs/use-elevate-security-key-email", + "reference/nextjs/use-user-avatar-url", + "reference/nextjs/use-user-data", + "reference/nextjs/use-user-default-role", + "reference/nextjs/use-user-display-name", + "reference/nextjs/use-user-email", + "reference/nextjs/use-user-id", + "reference/nextjs/use-user-is-anonymous", + "reference/nextjs/use-user-locale", + "reference/nextjs/use-user-roles", + "reference/nextjs/use-sign-in-email-otp", + "reference/nextjs/use-sign-in-id-token", + "reference/nextjs/use-link-id-token", + "reference/nextjs/use-sign-in-security-key" + ] + }, + { + "group": "Vue", + "icon": "vuejs", + "pages": [ + "reference/vue/nhost-client", + "reference/vue/use-access-token", + "reference/vue/use-authenticated", + "reference/vue/use-authentication-status", + "reference/vue/use-change-email", + "reference/vue/use-change-password", + "reference/vue/use-decoded-access-token", + "reference/vue/use-file-upload", + "reference/vue/use-file-upload-item", + "reference/vue/use-hasura-claim", + "reference/vue/use-hasura-claims", + "reference/vue/use-multiple-files-upload", + "reference/vue/use-nhost-client", + "reference/vue/use-provider-link", + "reference/vue/use-reset-password", + "reference/vue/use-send-verification-email", + "reference/vue/use-sign-in-anonymous", + "reference/vue/use-sign-in-email-password", + "reference/vue/use-sign-in-email-passwordless", + "reference/vue/use-sign-in-pat", + "reference/vue/use-sign-in-sms-passwordless", + "reference/vue/use-sign-out", + "reference/vue/use-sign-up-email-password", + "reference/vue/use-user-avatar-url", + "reference/vue/use-user-data", + "reference/vue/use-user-default-role", + "reference/vue/use-user-display-name", + "reference/vue/use-user-email", + "reference/vue/use-user-id", + "reference/vue/use-user-is-anonymous", + "reference/vue/use-user-locale", + "reference/vue/use-user-roles", + "reference/vue/use-add-security-key", + "reference/vue/use-elevate-security-key-email", + "reference/vue/use-sign-in-email-security-key", + "reference/vue/use-sign-up-email-security-key", + "reference/vue/use-sign-in-email-otp", + "reference/vue/use-sign-in-id-token", + "reference/vue/use-link-id-token", + "reference/vue/use-sign-in-security-key" + ] + }, + { + "group": "React Native", + "icon": "mobile-notch", + "pages": ["reference/react-native/support"] + } + ] + }, + { + "group": "CLI", + "pages": [ + "reference/cli/commands" + ] + } + ] + }, + { + "tab":"Community", + "icon":"users-line", + "pages":["/community/coc", "/community/getting-involved"] + }, + { + "tab": "Blog", + "href":"https://nhost.io/blog" + } + ] + }, + "logo": { + "light": "/images/logo/light.svg", + "dark": "/images/logo/dark.svg" + }, + "navbar": { + "links": [ + { + "label": "Support", + "href": "https://app.nhost.io/support" + } + ], + "primary": { + "type": "button", + "label": "Dashboard", + "href": "https://app.nhost.io" + } + }, + "footer": { + "socials": { + "twitter": "https://twitter.com/nhost", + "github": "https://github.com/nhost", + "linkedin": "https://www.linkedin.com/company/nhost" + } + } +} diff --git a/docs/getting-started/overview.mdx b/docs/getting-started/overview.mdx new file mode 100644 index 000000000..b621aa4ce --- /dev/null +++ b/docs/getting-started/overview.mdx @@ -0,0 +1,88 @@ +--- +title: What is Nhost? +icon: hand-wave +sidebarTitle: Introduction +--- + +Nhost is a backend development platform designed to help you build and scale production-ready applications fast, with powerful, fully managed infrastructure. + +It eliminates backend complexity by providing a performant and reliable software stack ready-to-go, while still offering the flexibility to customize and grow as your app grows. + + + Hero Light + Hero Dark + + +## Next steps + +Follow one of our quick start guides for learning how to quickly setup Nhost with your framework of choice, in just a few easy steps. + + + + Learn how to connect Nhost with Next.js + + + Learn how to connect Nhost with React + + + Learn how to connect Nhost with Vue + + + Learn how to connect Nhost with React Native + + + + +## Follow a tutorial to build a Todo Manager + +Follow one of your tutorials where we walk you through building a Todo Manager application using features from Nhost. + + + + Todo Manager with Nhost and React + + + Todo Manager with Nhost and Vue + + + Todo Manager with Nhost and NextJS + + + + diff --git a/docs/guides/quickstarts/nextjs.mdx b/docs/getting-started/quickstart/nextjs.mdx similarity index 96% rename from docs/guides/quickstarts/nextjs.mdx rename to docs/getting-started/quickstart/nextjs.mdx index 9375f2562..80ecc0d34 100644 --- a/docs/guides/quickstarts/nextjs.mdx +++ b/docs/getting-started/quickstart/nextjs.mdx @@ -32,14 +32,14 @@ icon: react Make sure the option `Track this` is enabled - ![SQL Editor](/images/guides/quickstarts/react/sql-editor.png) + ![SQL Editor](/images/quickstarts/react/sql-editor.png) Select the new table `movies` just created, and click in **Edit Permissions** to set the following permissions for the `public` role and `select` action. - ![Permission Rules](/images/guides/quickstarts/react/permissions.png) + ![Permission Rules](/images/quickstarts/react/permissions.png) @@ -154,8 +154,4 @@ icon: react Run your project with `npm run dev` and navigate to `http://localhost:3000` in your browser. - - -``` - -``` + \ No newline at end of file diff --git a/docs/guides/quickstarts/react.mdx b/docs/getting-started/quickstart/react.mdx similarity index 90% rename from docs/guides/quickstarts/react.mdx rename to docs/getting-started/quickstart/react.mdx index d4d9159b9..490d58350 100644 --- a/docs/guides/quickstarts/react.mdx +++ b/docs/getting-started/quickstart/react.mdx @@ -27,9 +27,7 @@ icon: react ); ``` - - - + ![Create Todos Table](/images/quickstarts/react-native/create-table-todos.png) @@ -43,9 +41,7 @@ icon: react - Add a new `Column preset` and set `Column Name` to `user_id` and `Column Value` to `X-Hasura-User-Id` - Save - - - + ![Insert Permissions](/images/quickstarts/react-native/todos-insert-permissions.png) 2. `Select` - Set `Row select permissions` to `With custom check` and fill in the following rule: @@ -55,9 +51,7 @@ icon: react - Select all columns except `user_id` on `Column select permissions` - Save - - - + ![Select Permissions](/images/quickstarts/react-native/todos-select-permissions.png) 3. `Update` - Set `Row update permissions` to `With custom check` and fill in the following rule: @@ -67,9 +61,7 @@ icon: react - Select all columns except `user_id` on `Column select permissions` - Save - - - + ![Update permissions](/images/quickstarts/react-native/todos-update-permissions.png) 4. `Delete` - Set `Row delete permissions` to `With custom check` and fill in the following rule: @@ -78,9 +70,7 @@ icon: react - Set the value to `X-Hasura-User-Id` - Save - - - + ![Delete permissions](/images/quickstarts/react-native/todos-delete-permissions.png) @@ -97,9 +87,7 @@ icon: react 2. Select all columns on `Column insert permissions` 4. Save - - - + ![Insert Permissions](/images/quickstarts/react-native/files-insert-permissions.png) 3. `Select` - Set `Row select permissions` to `With custom check` and fill in the following rule: @@ -109,9 +97,7 @@ icon: react - Select all columns on `Column select permissions` - Save - - - + ![Select permissions](/images/quickstarts/react-native/files-select-permissions.png) diff --git a/docs/guides/quickstarts/react-native.mdx b/docs/getting-started/quickstart/reactnative.mdx similarity index 91% rename from docs/guides/quickstarts/react-native.mdx rename to docs/getting-started/quickstart/reactnative.mdx index 5d173c164..401ae0db1 100644 --- a/docs/guides/quickstarts/react-native.mdx +++ b/docs/getting-started/quickstart/reactnative.mdx @@ -6,7 +6,7 @@ icon: mobile-notch --- - Throughout this guide, we'll utilize the **@nhost/react-native-template**, which comes pre-configured with + Throughout this guide, we'll utilize the **@nhost/react-native-template**, which comes pre-configured with authentication and storage capabilities provided by Nhost. @@ -36,13 +36,11 @@ icon: mobile-notch user_id uuid NOT NULL, contents text NOT NULL, PRIMARY KEY (id), - FOREIGN KEY (user_id) REFERENCES auth.users(id) ON UPDATE cascade ON DELETE cascade + FOREIGN KEY (user_id) REFERENCES auth.users(id) ON UPDATE cascade ON DELETE cascade ); ``` - - - + ![Create Todos Table](/images/quickstarts/react-native/create-table-todos.png) @@ -55,10 +53,8 @@ icon: mobile-notch - Select all columns except `user_id` on `Column insert permissions` - Add a new `Column preset` and set `Column Name` to `user_id` and `Column Value` to `X-Hasura-User-Id` - Save - - - - + + ![Insert Permissions](/images/quickstarts/react-native/todos-insert-permissions.png) 2. `Select` - Set `Row select permissions` to `With custom check` and fill in the following rule: @@ -68,9 +64,7 @@ icon: mobile-notch - Select all columns except `user_id` on `Column select permissions` - Save - - - + ![Select Permissions](/images/quickstarts/react-native/todos-select-permissions.png) 3. `Update` - Set `Row update permissions` to `With custom check` and fill in the following rule: @@ -80,9 +74,7 @@ icon: mobile-notch - Select all columns except `user_id` on `Column select permissions` - Save - - - + ![Update permissions](/images/quickstarts/react-native/todos-update-permissions.png) 4. `Delete` - Set `Row delete permissions` to `With custom check` and fill in the following rule: @@ -91,9 +83,7 @@ icon: mobile-notch - Set the value to `X-Hasura-User-Id` - Save - - - + ![Delete permissions](/images/quickstarts/react-native/todos-delete-permissions.png) @@ -109,9 +99,7 @@ icon: mobile-notch 2. Select all columns on `Column insert permissions` 4. Save - - - + ![Insert Permissions](/images/quickstarts/react-native/files-insert-permissions.png) 3. `Select` - Set `Row select permissions` to `With custom check` and fill in the following rule: @@ -121,14 +109,12 @@ icon: mobile-notch - Select all columns on `Column select permissions` - Save - - - +![Select permissions](/images/quickstarts/react-native/files-select-permissions.png) Intialize a new React Native project using the template `@nhost/react-native-template` - + ```bash Terminal npx react-native init myapp --template @nhost/react-native-template ``` @@ -452,6 +438,6 @@ icon: mobile-notch 3. Fill in the necessary credentials. For detailed instructions on generating the required credentials, refer to the following guides: - - [Google Sign-In Guide](https://docs.nhost.io/guides/auth/social/sign-in-google) - - [Apple Sign-In Guide](https://docs.nhost.io/guides/auth/social/sign-in-apple) - \ No newline at end of file + - [Google Sign-In Guide](https://docs.nhost.io/products/auth/social/sign-in-google) + - [Apple Sign-In Guide](https://docs.nhost.io/products/auth/social/sign-in-apple) + diff --git a/docs/guides/quickstarts/vue.mdx b/docs/getting-started/quickstart/vue.mdx similarity index 95% rename from docs/guides/quickstarts/vue.mdx rename to docs/getting-started/quickstart/vue.mdx index 1470641b0..c4718316e 100644 --- a/docs/guides/quickstarts/vue.mdx +++ b/docs/getting-started/quickstart/vue.mdx @@ -32,14 +32,14 @@ icon: vuejs Make sure the option `Track this` is enabled - ![SQL Editor](/images/guides/quickstarts/react/sql-editor.png) + ![SQL Editor](/images/quickstarts/react/sql-editor.png) Select the new table `movies` just created, and click in **Edit Permissions** to set the following permissions for the `public` role and `select` action. - ![Permission Rules](/images/guides/quickstarts/react/permissions.png) + ![Permission Rules](/images/quickstarts/react/permissions.png) @@ -125,8 +125,4 @@ icon: vuejs Run your project with `npm run dev -- --open --port 3000` and enter `http://localhost:3000` in your browser. - - -``` - -``` + \ No newline at end of file diff --git a/docs/guides/tutorials/nextjs.mdx b/docs/getting-started/tutorials/nextjs.mdx similarity index 95% rename from docs/guides/tutorials/nextjs.mdx rename to docs/getting-started/tutorials/nextjs.mdx index 18b4d309c..31aaa631f 100644 --- a/docs/guides/tutorials/nextjs.mdx +++ b/docs/getting-started/tutorials/nextjs.mdx @@ -43,7 +43,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov On the project's dashboard, navigate to **Database** and create a new table called `todos`. -![Database](/images/guides/todos-react-database.png) +![Database](/images/tutorials/todos-react-database.png) You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**. @@ -72,7 +72,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database Click on **New Table** and fill in the details for the `todos` table as shown. - ![New Table](/images/guides/todos-react-database-new-table.png) + ![New Table](/images/tutorials/todos-react-database-new-table.png) @@ -88,19 +88,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-select.png) +![User Select](/images/tutorials/todos-react-permissions-select.png) Click on the right cell for the `user` role and action `update` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-update.png) +![User Select](/images/tutorials/todos-react-permissions-update.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-delete.png) @@ -115,15 +115,15 @@ As before, we want to set permissions for the `user` role and actions `insert`, Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-files-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-files-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-files-select.png) +![User Select](/images/tutorials/todos-react-permissions-files-select.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-files-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-files-delete.png) @@ -505,5 +505,4 @@ Run the Todo Manager with: npm run dev -- --port 3000 ``` -Open your browser on [localhost:3000](localhost:3000) to see your new application in action. - +Open your browser on [localhost:3000](localhost:3000) to see your new application in action. \ No newline at end of file diff --git a/docs/guides/tutorials/react.mdx b/docs/getting-started/tutorials/react.mdx similarity index 95% rename from docs/guides/tutorials/react.mdx rename to docs/getting-started/tutorials/react.mdx index 33a8d7195..afadfc5f7 100644 --- a/docs/guides/tutorials/react.mdx +++ b/docs/getting-started/tutorials/react.mdx @@ -43,7 +43,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov On the project's dashboard, navigate to **Database** and create a new table called `todos`. -![Database](/images/guides/todos-react-database.png) +![Database](/images/tutorials/todos-react-database.png) You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**. @@ -72,7 +72,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database Click on **New Table** and fill in the details for the `todos` table as shown. - ![New Table](/images/guides/todos-react-database-new-table.png) + ![New Table](/images/tutorials/todos-react-database-new-table.png) @@ -88,19 +88,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-select.png) +![User Select](/images/tutorials/todos-react-permissions-select.png) Click on the right cell for the `user` role and action `update` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-update.png) +![User Select](/images/tutorials/todos-react-permissions-update.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-delete.png) @@ -115,15 +115,15 @@ As before, we want to set permissions for the `user` role and actions `insert`, Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-files-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-files-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-files-select.png) +![User Select](/images/tutorials/todos-react-permissions-files-select.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-files-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-files-delete.png) diff --git a/docs/guides/tutorials/vue.mdx b/docs/getting-started/tutorials/vue.mdx similarity index 95% rename from docs/guides/tutorials/vue.mdx rename to docs/getting-started/tutorials/vue.mdx index e7e50f3bb..ce321d592 100644 --- a/docs/guides/tutorials/vue.mdx +++ b/docs/getting-started/tutorials/vue.mdx @@ -42,7 +42,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov On the project's dashboard, navigate to **Database** and create a new table called `todos`. -![Database](/images/guides/todos-database.png) +![Database](/images/tutorials/todos-react-database.png) You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**. @@ -70,7 +70,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database Click on **New Table** and fill in the details for the `todos` table as shown. - ![New Table](/images/guides/todos-react-database-new-table.png) + ![New Table](/images/tutorials/todos-react-database-new-table.png) @@ -86,19 +86,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-select.png) +![User Select](/images/tutorials/todos-react-permissions-select.png) Click on the right cell for the `user` role and action `update` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-update.png) +![User Select](/images/tutorials/todos-react-permissions-update.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-delete.png) @@ -113,15 +113,15 @@ As before, we want to set permissions for the `user` role and actions `insert`, Click on the right cell for the `user` role and action `insert` and set permissions as follows: -![User Insert](/images/guides/todos-react-permissions-files-insert.png) +![User Insert](/images/tutorials/todos-react-permissions-files-insert.png) Click on the right cell for the `user` role and action `select` and set permissions as follows: -![User Select](/images/guides/todos-react-permissions-files-select.png) +![User Select](/images/tutorials/todos-react-permissions-files-select.png) Click on the right cell for the `user` role and action `delete` and set permissions as follows: -![User Delete](/images/guides/todos-react-permissions-files-delete.png) +![User Delete](/images/tutorials/todos-react-permissions-files-delete.png) diff --git a/docs/guides/auth/overview.mdx b/docs/guides/auth/overview.mdx deleted file mode 100644 index f2f341a5e..000000000 --- a/docs/guides/auth/overview.mdx +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Overview -description: Learn about Nhost Auth -icon: hand-wave ---- - -Nhost Auth is a ready-to-use authentication service seamlessly integrated with the [GraphQL API](/product/graphql) and its [Permission System](/guides/api/permissions) from Hasura. This allows you to easily add user authentication to your application without having to build and maintain your own authentication system. - -## Supported Methods - - - - - - - - - - - - - - -### OAuth Providers - - - - - - - - - - - - - - - - - - - - - - -## Client URL - -Client URL is the URL of your frontend application. The Client URL is used to redirect the user in certain auth workflows like signing in or resetting a password. - -## Allowed Redirect URLs - -Allowed Redirect URLs are the URLs of your frontend application that users are allowed to be redirected to on specific auth workflows. This is useful if you have multiple applications using the same Nhost backend or if you want to redirect users to a specific URL after certain authentication workflows. - -As an example, for a staging project, you can set the Client URL to `https://staging.example.com` and Allowed Redirect URLs to `https://*.vercel.app`. This way, the user can be redirected to any Vercel deployment of your frontend application. - -## Allowed Emails and Domains - -Allowed Emails and Domains are used to restrict what email adresses and domains are valid when signing up and signing in. - -If both allowed emails and allowed domains are set a user can only sign up if their email address matches one of the allowed emails or one of the allowed domains. - -## Blocked Emails and Domains - -Blocked Emails and Domains are used to block specific email addresses and domains from signing up and signing in. - -Note that even if a user's email address matches any allowed email or domain, they will still be blocked if their email address matches any blocked email or domain. - -## Multi-factor Authentication - -By enabling Multi-Factor Authentication (MFA), you can allow users to verify their identity using a second factor during the sign-in process. We currently support Authenticator Apps (TOTP) for MFA. - -A user can enable MFA for their account by scanning a QR code with their Authenticator App. After that, they will be prompted to enter a code generated by their Authenticator App during the sign-in process. - -## Gravatar - -If Gravatar is enabled, Nhost Auth will use the user's email address to fetch their Gravatar profile picture. If the user doesn't have a Gravatar profile picture, a default image will be used. - -There are two options for Gravatars. - - - - -If the user doesn't have a Gravatar profile picture, a default image will be used. You can choose between the following options: - -- `404`: Do not load any image if none is associated with the email hash, instead return an HTTP 404 (File Not Found) response. -- `mp`: (mystery-person) a simple, cartoon-style silhouetted outline of a person (does not vary by email hash). -- `identicon`: a geometric pattern based on an email hash. -- `monsterid`: a generated 'monster' with different colors, faces, etc. -- `wavatar`: generated faces with differing features and backgrounds. -- `retro`: awesome generated, 8-bit arcade-style pixelated faces. -- `robohash`: a generated robot with different colors, faces, etc. -- `blank`: a transparent PNG image. - - - - - -Gravatar images are rated by default. You can choose between the following options: - -- `g`: suitable for display on all websites with any audience type. -- `pg`: may contain rude gestures, provocatively dressed individuals, lesser swear words or mild violence. -- `r`: may contain such things as harsh profanity, intense violence, nudity, or hard drug use. -- `x`: may contain hardcore sexual imagery or extremely disturbing violence. - - - - -## Disable New Users - -If set, newly registered users are disabled and won't be able to sign in. This is useful if you want to manually approve new users before they can sign in. - -## Disable Sign Ups - -If set, new users won't be able to sign up. diff --git a/docs/guides/overview.mdx b/docs/guides/overview.mdx deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/guides/run/getting-started.mdx b/docs/guides/run/getting-started.mdx deleted file mode 100644 index 6deeb5f6a..000000000 --- a/docs/guides/run/getting-started.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Getting Started -description: 'Learn how to get started with Run' -icon: play ---- - -To start with Nhost Run, you will need to create an Nhost project first. Then you can click on `Run` in the sidebar: - -![click on run](/images/guides/run/getting_started_1.png) - -Then on `New Service`: - -![click on New Service](/images/guides/run/getting_started_2.png) - -Now you can fill your [service configuration](/guides/run/configuration): - -![click on New Service](/images/guides/run/getting_started_3.png) - -As you configure the `Ports` section you can take note of the generated URL. You can find more information about this section under [Networking](/guides/run/networking). - -![copy the URL](/images/guides/run/getting_started_4.png) - -Once you are done configuring your service you can click on `Create`: - -![click on create](/images/guides/run/getting_started_5.png) - -Now wait for the service to finish updating: - -![wait for the service to finish updating](/images/guides/run/getting_started_6.png) - -Finally you can visit the URL you copied before: - -![visit url](/images/guides/run/getting_started_7.png) - -And profit! diff --git a/docs/images/guides/ai/assistants/GetMoviesWithScoreHigherThan.png b/docs/images/ai/assistants/GetMoviesWithScoreHigherThan.png similarity index 100% rename from docs/images/guides/ai/assistants/GetMoviesWithScoreHigherThan.png rename to docs/images/ai/assistants/GetMoviesWithScoreHigherThan.png diff --git a/docs/images/guides/ai/assistants/answer_deep_questions.png b/docs/images/ai/assistants/answer_deep_questions.png similarity index 100% rename from docs/images/guides/ai/assistants/answer_deep_questions.png rename to docs/images/ai/assistants/answer_deep_questions.png diff --git a/docs/images/guides/ai/assistants/dashboard.png b/docs/images/ai/assistants/dashboard.png similarity index 100% rename from docs/images/guides/ai/assistants/dashboard.png rename to docs/images/ai/assistants/dashboard.png diff --git a/docs/images/guides/ai/assistants/diagrams.txt b/docs/images/ai/assistants/diagrams.txt similarity index 100% rename from docs/images/guides/ai/assistants/diagrams.txt rename to docs/images/ai/assistants/diagrams.txt diff --git a/docs/images/guides/ai/auto-embeddings/auto-embedding.png b/docs/images/ai/auto-embeddings/auto-embedding.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/auto-embedding.png rename to docs/images/ai/auto-embeddings/auto-embedding.png diff --git a/docs/images/guides/ai/auto-embeddings/column.png b/docs/images/ai/auto-embeddings/column.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/column.png rename to docs/images/ai/auto-embeddings/column.png diff --git a/docs/images/guides/ai/auto-embeddings/count_0.png b/docs/images/ai/auto-embeddings/count_0.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/count_0.png rename to docs/images/ai/auto-embeddings/count_0.png diff --git a/docs/images/guides/ai/auto-embeddings/count_non_zero.png b/docs/images/ai/auto-embeddings/count_non_zero.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/count_non_zero.png rename to docs/images/ai/auto-embeddings/count_non_zero.png diff --git a/docs/images/guides/ai/auto-embeddings/logs.png b/docs/images/ai/auto-embeddings/logs.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/logs.png rename to docs/images/ai/auto-embeddings/logs.png diff --git a/docs/images/guides/ai/auto-embeddings/outdated.png b/docs/images/ai/auto-embeddings/outdated.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/outdated.png rename to docs/images/ai/auto-embeddings/outdated.png diff --git a/docs/images/guides/ai/auto-embeddings/search.png b/docs/images/ai/auto-embeddings/search.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/search.png rename to docs/images/ai/auto-embeddings/search.png diff --git a/docs/images/guides/ai/auto-embeddings/similar.png b/docs/images/ai/auto-embeddings/similar.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/similar.png rename to docs/images/ai/auto-embeddings/similar.png diff --git a/docs/images/guides/ai/auto-embeddings/table.png b/docs/images/ai/auto-embeddings/table.png similarity index 100% rename from docs/images/guides/ai/auto-embeddings/table.png rename to docs/images/ai/auto-embeddings/table.png diff --git a/docs/images/guides/ai/dev-assistants/chat.png b/docs/images/ai/dev-assistants/chat.png similarity index 100% rename from docs/images/guides/ai/dev-assistants/chat.png rename to docs/images/ai/dev-assistants/chat.png diff --git a/docs/images/guides/ai/dev-assistants/dashboard.png b/docs/images/ai/dev-assistants/dashboard.png similarity index 100% rename from docs/images/guides/ai/dev-assistants/dashboard.png rename to docs/images/ai/dev-assistants/dashboard.png diff --git a/docs/images/guides/ai/enabling/database.png b/docs/images/ai/enabling/database.png similarity index 100% rename from docs/images/guides/ai/enabling/database.png rename to docs/images/ai/enabling/database.png diff --git a/docs/images/guides/ai/enabling/openai.png b/docs/images/ai/enabling/openai.png similarity index 100% rename from docs/images/guides/ai/enabling/openai.png rename to docs/images/ai/enabling/openai.png diff --git a/docs/images/guides/ai/enabling/settings.png b/docs/images/ai/enabling/settings.png similarity index 100% rename from docs/images/guides/ai/enabling/settings.png rename to docs/images/ai/enabling/settings.png diff --git a/docs/images/guides/ai/local-development/git_status.png b/docs/images/ai/local-development/git_status.png similarity index 100% rename from docs/images/guides/ai/local-development/git_status.png rename to docs/images/ai/local-development/git_status.png diff --git a/docs/images/guides/ai/local-development/git_status_functions.png b/docs/images/ai/local-development/git_status_functions.png similarity index 100% rename from docs/images/guides/ai/local-development/git_status_functions.png rename to docs/images/ai/local-development/git_status_functions.png diff --git a/docs/images/guides/ai/local-development/migration.png b/docs/images/ai/local-development/migration.png similarity index 100% rename from docs/images/guides/ai/local-development/migration.png rename to docs/images/ai/local-development/migration.png diff --git a/docs/images/guides/ai/local-development/nhost_up.png b/docs/images/ai/local-development/nhost_up.png similarity index 100% rename from docs/images/guides/ai/local-development/nhost_up.png rename to docs/images/ai/local-development/nhost_up.png diff --git a/docs/images/guides/auth/apple-signin.svg b/docs/images/auth/apple-signin.svg similarity index 100% rename from docs/images/guides/auth/apple-signin.svg rename to docs/images/auth/apple-signin.svg diff --git a/docs/images/guides/auth/discord-signin.svg b/docs/images/auth/discord-signin.svg similarity index 100% rename from docs/images/guides/auth/discord-signin.svg rename to docs/images/auth/discord-signin.svg diff --git a/docs/images/guides/auth/elevated-permissions/overview.mermaidjs b/docs/images/auth/elevated-permissions/overview.mermaidjs similarity index 100% rename from docs/images/guides/auth/elevated-permissions/overview.mermaidjs rename to docs/images/auth/elevated-permissions/overview.mermaidjs diff --git a/docs/images/guides/auth/elevated-permissions/overview.png b/docs/images/auth/elevated-permissions/overview.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/overview.png rename to docs/images/auth/elevated-permissions/overview.png diff --git a/docs/images/guides/auth/elevated-permissions/password.png b/docs/images/auth/elevated-permissions/password.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/password.png rename to docs/images/auth/elevated-permissions/password.png diff --git a/docs/images/guides/auth/elevated-permissions/password_changed.png b/docs/images/auth/elevated-permissions/password_changed.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/password_changed.png rename to docs/images/auth/elevated-permissions/password_changed.png diff --git a/docs/images/guides/auth/elevated-permissions/secret_notes_add.png b/docs/images/auth/elevated-permissions/secret_notes_add.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/secret_notes_add.png rename to docs/images/auth/elevated-permissions/secret_notes_add.png diff --git a/docs/images/guides/auth/elevated-permissions/secret_notes_added.png b/docs/images/auth/elevated-permissions/secret_notes_added.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/secret_notes_added.png rename to docs/images/auth/elevated-permissions/secret_notes_added.png diff --git a/docs/images/guides/auth/elevated-permissions/secret_notes_view.png b/docs/images/auth/elevated-permissions/secret_notes_view.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/secret_notes_view.png rename to docs/images/auth/elevated-permissions/secret_notes_view.png diff --git a/docs/images/guides/auth/elevated-permissions/select.png b/docs/images/auth/elevated-permissions/select.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/select.png rename to docs/images/auth/elevated-permissions/select.png diff --git a/docs/images/guides/auth/elevated-permissions/update.png b/docs/images/auth/elevated-permissions/update.png similarity index 100% rename from docs/images/guides/auth/elevated-permissions/update.png rename to docs/images/auth/elevated-permissions/update.png diff --git a/docs/images/guides/auth/facebook-signin.svg b/docs/images/auth/facebook-signin.svg similarity index 100% rename from docs/images/guides/auth/facebook-signin.svg rename to docs/images/auth/facebook-signin.svg diff --git a/docs/images/guides/auth/github-signin.svg b/docs/images/auth/github-signin.svg similarity index 100% rename from docs/images/guides/auth/github-signin.svg rename to docs/images/auth/github-signin.svg diff --git a/docs/images/guides/auth/google-signin.svg b/docs/images/auth/google-signin.svg similarity index 100% rename from docs/images/guides/auth/google-signin.svg rename to docs/images/auth/google-signin.svg diff --git a/docs/images/guides/auth/jwt/asymmetric.png b/docs/images/auth/jwt/asymmetric.png similarity index 100% rename from docs/images/guides/auth/jwt/asymmetric.png rename to docs/images/auth/jwt/asymmetric.png diff --git a/docs/images/guides/auth/jwt/external.png b/docs/images/auth/jwt/external.png similarity index 100% rename from docs/images/guides/auth/jwt/external.png rename to docs/images/auth/jwt/external.png diff --git a/docs/images/guides/auth/jwt/symmetric.png b/docs/images/auth/jwt/symmetric.png similarity index 100% rename from docs/images/guides/auth/jwt/symmetric.png rename to docs/images/auth/jwt/symmetric.png diff --git a/docs/images/guides/auth/linkedin-signin.svg b/docs/images/auth/linkedin-signin.svg similarity index 100% rename from docs/images/guides/auth/linkedin-signin.svg rename to docs/images/auth/linkedin-signin.svg diff --git a/docs/images/guides/auth/sign-in-otp.png b/docs/images/auth/sign-in-otp.png similarity index 100% rename from docs/images/guides/auth/sign-in-otp.png rename to docs/images/auth/sign-in-otp.png diff --git a/docs/images/guides/auth/social-connect-permissions.png b/docs/images/auth/social-connect-permissions.png similarity index 100% rename from docs/images/guides/auth/social-connect-permissions.png rename to docs/images/auth/social-connect-permissions.png diff --git a/docs/images/guides/auth/spotify-signin.svg b/docs/images/auth/spotify-signin.svg similarity index 100% rename from docs/images/guides/auth/spotify-signin.svg rename to docs/images/auth/spotify-signin.svg diff --git a/docs/images/guides/auth/turnstile/turnstile.gif b/docs/images/auth/turnstile/turnstile.gif similarity index 100% rename from docs/images/guides/auth/turnstile/turnstile.gif rename to docs/images/auth/turnstile/turnstile.gif diff --git a/docs/images/guides/auth/twitch-signin.svg b/docs/images/auth/twitch-signin.svg similarity index 100% rename from docs/images/guides/auth/twitch-signin.svg rename to docs/images/auth/twitch-signin.svg diff --git a/docs/images/guides/auth/workos-signin.svg b/docs/images/auth/workos-signin.svg similarity index 100% rename from docs/images/guides/auth/workos-signin.svg rename to docs/images/auth/workos-signin.svg diff --git a/docs/images/checks-passed.png b/docs/images/checks-passed.png deleted file mode 100644 index 3303c7736..000000000 Binary files a/docs/images/checks-passed.png and /dev/null differ diff --git a/docs/images/guides/cli/1.png b/docs/images/cli/1.png similarity index 100% rename from docs/images/guides/cli/1.png rename to docs/images/cli/1.png diff --git a/docs/images/guides/cli/2.png b/docs/images/cli/2.png similarity index 100% rename from docs/images/guides/cli/2.png rename to docs/images/cli/2.png diff --git a/docs/images/guides/cli/3.png b/docs/images/cli/3.png similarity index 100% rename from docs/images/guides/cli/3.png rename to docs/images/cli/3.png diff --git a/docs/images/guides/cli/4.png b/docs/images/cli/4.png similarity index 100% rename from docs/images/guides/cli/4.png rename to docs/images/cli/4.png diff --git a/docs/images/guides/cli/5.png b/docs/images/cli/5.png similarity index 100% rename from docs/images/guides/cli/5.png rename to docs/images/cli/5.png diff --git a/docs/images/guides/cli/6.png b/docs/images/cli/6.png similarity index 100% rename from docs/images/guides/cli/6.png rename to docs/images/cli/6.png diff --git a/docs/images/guides/cli/create-table-messages.png b/docs/images/cli/create-table-messages.png similarity index 100% rename from docs/images/guides/cli/create-table-messages.png rename to docs/images/cli/create-table-messages.png diff --git a/docs/images/guides/cli/deployments.png b/docs/images/cli/deployments.png similarity index 100% rename from docs/images/guides/cli/deployments.png rename to docs/images/cli/deployments.png diff --git a/docs/images/guides/cli/insert-permissions.png b/docs/images/cli/insert-permissions.png similarity index 100% rename from docs/images/guides/cli/insert-permissions.png rename to docs/images/cli/insert-permissions.png diff --git a/docs/images/guides/cli/matrix-permissions.png b/docs/images/cli/matrix-permissions.png similarity index 100% rename from docs/images/guides/cli/matrix-permissions.png rename to docs/images/cli/matrix-permissions.png diff --git a/docs/images/guides/database/access/public.png b/docs/images/database/access/public.png similarity index 100% rename from docs/images/guides/database/access/public.png rename to docs/images/database/access/public.png diff --git a/docs/images/guides/database/access/reset.png b/docs/images/database/access/reset.png similarity index 100% rename from docs/images/guides/database/access/reset.png rename to docs/images/database/access/reset.png diff --git a/docs/images/guides/backups/pitr-import-1.png b/docs/images/database/backups/pitr-import-1.png similarity index 100% rename from docs/images/guides/backups/pitr-import-1.png rename to docs/images/database/backups/pitr-import-1.png diff --git a/docs/images/guides/backups/pitr-restore-1.png b/docs/images/database/backups/pitr-restore-1.png similarity index 100% rename from docs/images/guides/backups/pitr-restore-1.png rename to docs/images/database/backups/pitr-restore-1.png diff --git a/docs/images/guides/backups/pitr-restore-2.png b/docs/images/database/backups/pitr-restore-2.png similarity index 100% rename from docs/images/guides/backups/pitr-restore-2.png rename to docs/images/database/backups/pitr-restore-2.png diff --git a/docs/images/guides/backups/pitr-restore-3.png b/docs/images/database/backups/pitr-restore-3.png similarity index 100% rename from docs/images/guides/backups/pitr-restore-3.png rename to docs/images/database/backups/pitr-restore-3.png diff --git a/docs/images/guides/backups/pitr-restore-4.png b/docs/images/database/backups/pitr-restore-4.png similarity index 100% rename from docs/images/guides/backups/pitr-restore-4.png rename to docs/images/database/backups/pitr-restore-4.png diff --git a/docs/images/guides/backups/pitr-settings.png b/docs/images/database/backups/pitr-settings.png similarity index 100% rename from docs/images/guides/backups/pitr-settings.png rename to docs/images/database/backups/pitr-settings.png diff --git a/docs/images/guides/database/pghero_01.png b/docs/images/database/pghero_01.png similarity index 100% rename from docs/images/guides/database/pghero_01.png rename to docs/images/database/pghero_01.png diff --git a/docs/images/guides/database/pghero_02.png b/docs/images/database/pghero_02.png similarity index 100% rename from docs/images/guides/database/pghero_02.png rename to docs/images/database/pghero_02.png diff --git a/docs/images/guides/database/pghero_03.png b/docs/images/database/pghero_03.png similarity index 100% rename from docs/images/guides/database/pghero_03.png rename to docs/images/database/pghero_03.png diff --git a/docs/images/guides/database/pghero_04.png b/docs/images/database/pghero_04.png similarity index 100% rename from docs/images/guides/database/pghero_04.png rename to docs/images/database/pghero_04.png diff --git a/docs/images/guides/database/upgrade_01.png b/docs/images/database/upgrade_01.png similarity index 100% rename from docs/images/guides/database/upgrade_01.png rename to docs/images/database/upgrade_01.png diff --git a/docs/images/guides/database/upgrade_02.png b/docs/images/database/upgrade_02.png similarity index 100% rename from docs/images/guides/database/upgrade_02.png rename to docs/images/database/upgrade_02.png diff --git a/docs/images/guides/database/upgrade_03.png b/docs/images/database/upgrade_03.png similarity index 100% rename from docs/images/guides/database/upgrade_03.png rename to docs/images/database/upgrade_03.png diff --git a/docs/images/guides/graphql/dashboard-permissions-select.png b/docs/images/graphql/dashboard-permissions-select.png similarity index 100% rename from docs/images/guides/graphql/dashboard-permissions-select.png rename to docs/images/graphql/dashboard-permissions-select.png diff --git a/docs/images/guides/graphql/dashboard-permissions.png b/docs/images/graphql/dashboard-permissions.png similarity index 100% rename from docs/images/guides/graphql/dashboard-permissions.png rename to docs/images/graphql/dashboard-permissions.png diff --git a/docs/images/guides/graphql/logs.png b/docs/images/graphql/logs.png similarity index 100% rename from docs/images/guides/graphql/logs.png rename to docs/images/graphql/logs.png diff --git a/docs/images/guides/graphql/observability.png b/docs/images/graphql/observability.png similarity index 100% rename from docs/images/guides/graphql/observability.png rename to docs/images/graphql/observability.png diff --git a/docs/images/hero-dark.svg b/docs/images/hero-dark.svg deleted file mode 100644 index c6a30e88b..000000000 --- a/docs/images/hero-dark.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/hero-light.svg b/docs/images/hero-light.svg deleted file mode 100644 index 297d68fb9..000000000 --- a/docs/images/hero-light.svg +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/logo/dark.svg b/docs/images/logo/dark.svg similarity index 100% rename from docs/logo/dark.svg rename to docs/images/logo/dark.svg diff --git a/docs/logo/light.svg b/docs/images/logo/light.svg similarity index 100% rename from docs/logo/light.svg rename to docs/images/logo/light.svg diff --git a/docs/images/nhost-overview-dark.svg b/docs/images/nhost-overview-dark.svg new file mode 100644 index 000000000..fe96f1fdc --- /dev/null +++ b/docs/images/nhost-overview-dark.svg @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/nhost-overview-light.svg b/docs/images/nhost-overview-light.svg new file mode 100644 index 000000000..ffbab0ad7 --- /dev/null +++ b/docs/images/nhost-overview-light.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/product/run/overview.png b/docs/images/product/run/overview.png deleted file mode 100644 index f0b3c9985..000000000 Binary files a/docs/images/product/run/overview.png and /dev/null differ diff --git a/docs/images/product/ai/assistant-insert.png b/docs/images/products/ai/assistant-insert.png similarity index 100% rename from docs/images/product/ai/assistant-insert.png rename to docs/images/products/ai/assistant-insert.png diff --git a/docs/images/product/ai/assistant-thread.png b/docs/images/products/ai/assistant-thread.png similarity index 100% rename from docs/images/product/ai/assistant-thread.png rename to docs/images/products/ai/assistant-thread.png diff --git a/docs/images/product/ai/auto-embeddings-search.png b/docs/images/products/ai/auto-embeddings-search.png similarity index 100% rename from docs/images/product/ai/auto-embeddings-search.png rename to docs/images/products/ai/auto-embeddings-search.png diff --git a/docs/images/product/ai/auto-embeddings-similar.png b/docs/images/products/ai/auto-embeddings-similar.png similarity index 100% rename from docs/images/product/ai/auto-embeddings-similar.png rename to docs/images/products/ai/auto-embeddings-similar.png diff --git a/docs/images/product/database/dashboard-database.png b/docs/images/products/database/dashboard-database.png similarity index 100% rename from docs/images/product/database/dashboard-database.png rename to docs/images/products/database/dashboard-database.png diff --git a/docs/images/quickstarts/project-info-dashboard.png b/docs/images/quickstarts/project-info-dashboard.png deleted file mode 100644 index 5d10e70cd..000000000 Binary files a/docs/images/quickstarts/project-info-dashboard.png and /dev/null differ diff --git a/docs/images/guides/quickstarts/react-native/create-table-todos.png b/docs/images/quickstarts/react-native/create-table-todos.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/create-table-todos.png rename to docs/images/quickstarts/react-native/create-table-todos.png diff --git a/docs/images/guides/quickstarts/react-native/emulator-add-todo.png b/docs/images/quickstarts/react-native/emulator-add-todo.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/emulator-add-todo.png rename to docs/images/quickstarts/react-native/emulator-add-todo.png diff --git a/docs/images/guides/quickstarts/react-native/emulator-drawer.png b/docs/images/quickstarts/react-native/emulator-drawer.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/emulator-drawer.png rename to docs/images/quickstarts/react-native/emulator-drawer.png diff --git a/docs/images/guides/quickstarts/react-native/files-insert-permissions.png b/docs/images/quickstarts/react-native/files-insert-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/files-insert-permissions.png rename to docs/images/quickstarts/react-native/files-insert-permissions.png diff --git a/docs/images/guides/quickstarts/react-native/files-select-permissions.png b/docs/images/quickstarts/react-native/files-select-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/files-select-permissions.png rename to docs/images/quickstarts/react-native/files-select-permissions.png diff --git a/docs/images/guides/quickstarts/react-native/todos-delete-permissions.png b/docs/images/quickstarts/react-native/todos-delete-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/todos-delete-permissions.png rename to docs/images/quickstarts/react-native/todos-delete-permissions.png diff --git a/docs/images/guides/quickstarts/react-native/todos-insert-permissions.png b/docs/images/quickstarts/react-native/todos-insert-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/todos-insert-permissions.png rename to docs/images/quickstarts/react-native/todos-insert-permissions.png diff --git a/docs/images/guides/quickstarts/react-native/todos-select-permissions.png b/docs/images/quickstarts/react-native/todos-select-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/todos-select-permissions.png rename to docs/images/quickstarts/react-native/todos-select-permissions.png diff --git a/docs/images/guides/quickstarts/react-native/todos-update-permissions.png b/docs/images/quickstarts/react-native/todos-update-permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react-native/todos-update-permissions.png rename to docs/images/quickstarts/react-native/todos-update-permissions.png diff --git a/docs/images/guides/quickstarts/react/permissions.png b/docs/images/quickstarts/react/permissions.png similarity index 100% rename from docs/images/guides/quickstarts/react/permissions.png rename to docs/images/quickstarts/react/permissions.png diff --git a/docs/images/guides/quickstarts/react/sql-editor.png b/docs/images/quickstarts/react/sql-editor.png similarity index 100% rename from docs/images/guides/quickstarts/react/sql-editor.png rename to docs/images/quickstarts/react/sql-editor.png diff --git a/docs/images/guides/run/configuration.png b/docs/images/run/configuration.png similarity index 100% rename from docs/images/guides/run/configuration.png rename to docs/images/run/configuration.png diff --git a/docs/images/guides/run/configure-http-port.png b/docs/images/run/configure-http-port.png similarity index 100% rename from docs/images/guides/run/configure-http-port.png rename to docs/images/run/configure-http-port.png diff --git a/docs/images/guides/run/configure-multiple-ports.png b/docs/images/run/configure-multiple-ports.png similarity index 100% rename from docs/images/guides/run/configure-multiple-ports.png rename to docs/images/run/configure-multiple-ports.png diff --git a/docs/images/guides/run/configure-port.png b/docs/images/run/configure-port.png similarity index 100% rename from docs/images/guides/run/configure-port.png rename to docs/images/run/configure-port.png diff --git a/docs/images/guides/run/getting_started_1.png b/docs/images/run/getting_started_1.png similarity index 100% rename from docs/images/guides/run/getting_started_1.png rename to docs/images/run/getting_started_1.png diff --git a/docs/images/guides/run/getting_started_2.png b/docs/images/run/getting_started_2.png similarity index 100% rename from docs/images/guides/run/getting_started_2.png rename to docs/images/run/getting_started_2.png diff --git a/docs/images/guides/run/getting_started_3.png b/docs/images/run/getting_started_3.png similarity index 100% rename from docs/images/guides/run/getting_started_3.png rename to docs/images/run/getting_started_3.png diff --git a/docs/images/guides/run/getting_started_4.png b/docs/images/run/getting_started_4.png similarity index 100% rename from docs/images/guides/run/getting_started_4.png rename to docs/images/run/getting_started_4.png diff --git a/docs/images/guides/run/getting_started_5.png b/docs/images/run/getting_started_5.png similarity index 100% rename from docs/images/guides/run/getting_started_5.png rename to docs/images/run/getting_started_5.png diff --git a/docs/images/guides/run/getting_started_6.png b/docs/images/run/getting_started_6.png similarity index 100% rename from docs/images/guides/run/getting_started_6.png rename to docs/images/run/getting_started_6.png diff --git a/docs/images/guides/run/getting_started_7.png b/docs/images/run/getting_started_7.png similarity index 100% rename from docs/images/guides/run/getting_started_7.png rename to docs/images/run/getting_started_7.png diff --git a/docs/images/guides/run/local_development_1.png b/docs/images/run/local_development_1.png similarity index 100% rename from docs/images/guides/run/local_development_1.png rename to docs/images/run/local_development_1.png diff --git a/docs/images/guides/run/overview.png b/docs/images/run/overview.png similarity index 100% rename from docs/images/guides/run/overview.png rename to docs/images/run/overview.png diff --git a/docs/images/guides/run/registry_1.png b/docs/images/run/registry_1.png similarity index 100% rename from docs/images/guides/run/registry_1.png rename to docs/images/run/registry_1.png diff --git a/docs/images/guides/run/registry_2.png b/docs/images/run/registry_2.png similarity index 100% rename from docs/images/guides/run/registry_2.png rename to docs/images/run/registry_2.png diff --git a/docs/images/guides/run/registry_3.png b/docs/images/run/registry_3.png similarity index 100% rename from docs/images/guides/run/registry_3.png rename to docs/images/run/registry_3.png diff --git a/docs/images/guides/run/registry_4.png b/docs/images/run/registry_4.png similarity index 100% rename from docs/images/guides/run/registry_4.png rename to docs/images/run/registry_4.png diff --git a/docs/images/guides/run/registry_5.png b/docs/images/run/registry_5.png similarity index 100% rename from docs/images/guides/run/registry_5.png rename to docs/images/run/registry_5.png diff --git a/docs/images/guides/run/registry_6.png b/docs/images/run/registry_6.png similarity index 100% rename from docs/images/guides/run/registry_6.png rename to docs/images/run/registry_6.png diff --git a/docs/images/guides/run/registry_7.png b/docs/images/run/registry_7.png similarity index 100% rename from docs/images/guides/run/registry_7.png rename to docs/images/run/registry_7.png diff --git a/docs/images/guides/run/registry_8.png b/docs/images/run/registry_8.png similarity index 100% rename from docs/images/guides/run/registry_8.png rename to docs/images/run/registry_8.png diff --git a/docs/images/guides/run/resources_1.png b/docs/images/run/resources_1.png similarity index 100% rename from docs/images/guides/run/resources_1.png rename to docs/images/run/resources_1.png diff --git a/docs/images/guides/run/resources_2.png b/docs/images/run/resources_2.png similarity index 100% rename from docs/images/guides/run/resources_2.png rename to docs/images/run/resources_2.png diff --git a/docs/images/guides/run/resources_3.png b/docs/images/run/resources_3.png similarity index 100% rename from docs/images/guides/run/resources_3.png rename to docs/images/run/resources_3.png diff --git a/docs/images/guides/storage/av_01.png b/docs/images/storage/av_01.png similarity index 100% rename from docs/images/guides/storage/av_01.png rename to docs/images/storage/av_01.png diff --git a/docs/images/guides/storage/av_02.png b/docs/images/storage/av_02.png similarity index 100% rename from docs/images/guides/storage/av_02.png rename to docs/images/storage/av_02.png diff --git a/docs/images/guides/storage/av_03.png b/docs/images/storage/av_03.png similarity index 100% rename from docs/images/guides/storage/av_03.png rename to docs/images/storage/av_03.png diff --git a/docs/images/guides/storage/av_04.png b/docs/images/storage/av_04.png similarity index 100% rename from docs/images/guides/storage/av_04.png rename to docs/images/storage/av_04.png diff --git a/docs/images/guides/storage/av_05.png b/docs/images/storage/av_05.png similarity index 100% rename from docs/images/guides/storage/av_05.png rename to docs/images/storage/av_05.png diff --git a/docs/images/guides/storage/av_06.png b/docs/images/storage/av_06.png similarity index 100% rename from docs/images/guides/storage/av_06.png rename to docs/images/storage/av_06.png diff --git a/docs/images/guides/storage/sequence.mermaid b/docs/images/storage/sequence.mermaid similarity index 100% rename from docs/images/guides/storage/sequence.mermaid rename to docs/images/storage/sequence.mermaid diff --git a/docs/images/guides/storage/sequence.png b/docs/images/storage/sequence.png similarity index 100% rename from docs/images/guides/storage/sequence.png rename to docs/images/storage/sequence.png diff --git a/docs/images/guides/todos-react-database-new-table.png b/docs/images/tutorials/todos-react-database-new-table.png similarity index 100% rename from docs/images/guides/todos-react-database-new-table.png rename to docs/images/tutorials/todos-react-database-new-table.png diff --git a/docs/images/guides/todos-react-database.png b/docs/images/tutorials/todos-react-database.png similarity index 100% rename from docs/images/guides/todos-react-database.png rename to docs/images/tutorials/todos-react-database.png diff --git a/docs/images/guides/todos-react-permissions-delete.png b/docs/images/tutorials/todos-react-permissions-delete.png similarity index 100% rename from docs/images/guides/todos-react-permissions-delete.png rename to docs/images/tutorials/todos-react-permissions-delete.png diff --git a/docs/images/guides/todos-react-permissions-files-delete.png b/docs/images/tutorials/todos-react-permissions-files-delete.png similarity index 100% rename from docs/images/guides/todos-react-permissions-files-delete.png rename to docs/images/tutorials/todos-react-permissions-files-delete.png diff --git a/docs/images/guides/todos-react-permissions-files-insert.png b/docs/images/tutorials/todos-react-permissions-files-insert.png similarity index 100% rename from docs/images/guides/todos-react-permissions-files-insert.png rename to docs/images/tutorials/todos-react-permissions-files-insert.png diff --git a/docs/images/guides/todos-react-permissions-files-select.png b/docs/images/tutorials/todos-react-permissions-files-select.png similarity index 100% rename from docs/images/guides/todos-react-permissions-files-select.png rename to docs/images/tutorials/todos-react-permissions-files-select.png diff --git a/docs/images/guides/todos-react-permissions-insert.png b/docs/images/tutorials/todos-react-permissions-insert.png similarity index 100% rename from docs/images/guides/todos-react-permissions-insert.png rename to docs/images/tutorials/todos-react-permissions-insert.png diff --git a/docs/images/guides/todos-react-permissions-select.png b/docs/images/tutorials/todos-react-permissions-select.png similarity index 100% rename from docs/images/guides/todos-react-permissions-select.png rename to docs/images/tutorials/todos-react-permissions-select.png diff --git a/docs/images/guides/todos-react-permissions-update.png b/docs/images/tutorials/todos-react-permissions-update.png similarity index 100% rename from docs/images/guides/todos-react-permissions-update.png rename to docs/images/tutorials/todos-react-permissions-update.png diff --git a/docs/images/guides/todos-react-project-dashboard.png b/docs/images/tutorials/todos-react-project-dashboard.png similarity index 100% rename from docs/images/guides/todos-react-project-dashboard.png rename to docs/images/tutorials/todos-react-project-dashboard.png diff --git a/docs/introduction.mdx b/docs/introduction.mdx deleted file mode 100644 index 1101313b9..000000000 --- a/docs/introduction.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Getting Started -description: 'Learn Nhost through guides and tutorials.' -icon: hand-wave ---- - -Hero Light -Hero Dark - -## Quick Start Guides - -Follow our quick start guides for learning how to quickly setup Nhost with your framework of choice, in just a few easy steps. - - - - Learn how to connect Nhost with React - - - Learn how to connect Nhost with Vue - - - Learn how to connect Nhost with Next.js - - - Learn how to connect Nhost with RedwoodJS - - - - -## Guides and Tutorials - -Guides and Tutorials walk you through most of Nhost's feature set. You will build an example application using Nhost and your framework of choice. - - - - Todo Manager with Nhost and React - - - Todo Manager with Nhost and Vue - - - Todo Manager with Nhost and NextJS - - - Todo Manager with Nhost and RedwoodJS - - - diff --git a/docs/mint.json b/docs/mint.json deleted file mode 100644 index ceb3efe33..000000000 --- a/docs/mint.json +++ /dev/null @@ -1,560 +0,0 @@ -{ - "$schema": "https://mintlify.com/schema.json", - "name": "Documentation", - "openapi": [ - "reference/openapi-auth.yaml", - "reference/openapi-auth-old.yaml", - "reference/openapi-storage.yaml" - ], - "logo": { - "dark": "/logo/dark.svg", - "light": "/logo/light.svg" - }, - "favicon": "/favicon.svg", - "colors": { - "primary": "#3787ff", - "light": "#569aff", - "dark": "#1874ff", - "anchors": { - "from": "#1874ff", - "to": "#569aff" - } - }, - "topbarLinks": [ - { - "name": "Support", - "url": "mailto:support@nhost.io" - } - ], - "topbarCtaButton": { - "name": "Dashboard", - "url": "https://app.nhost.io" - }, - "tabs": [ - { - "name": "Reference", - "url": "reference" - }, - { - "name": "Guides", - "url": "guides" - } - ], - "anchors": [ - { - "name": "Documentation", - "icon": "book-open-cover", - "url": "introduction" - }, - { - "name": "Community", - "icon": "discord", - "url": "https://discord.com/nhost" - }, - { - "name": "Blog", - "icon": "newspaper", - "url": "https://nhost.io/blog" - } - ], - "navigation": [ - { - "group": "Overview", - "pages": ["introduction"] - }, - { - "group": "Product", - "pages": [ - "product/database", - "product/graphql", - "product/authentication", - "product/storage", - "product/functions", - "product/run", - "product/ai" - ] - }, - { - "group": "Platform", - "pages": [ - "platform/subdomain", - "platform/compute-resources", - "platform/service-replicas", - "platform/metrics", - "platform/environment-variables", - "platform/secrets", - "platform/deployments", - "platform/custom-domains", - "platform/rate-limits", - "platform/tls", - "platform/billing" - ] - }, - { - "group": "Development & CLI", - "pages": [ - "development/cli/overview", - "development/cli/getting-started", - "development/cli/commands" - ] - }, - { - "group": "API Documentation", - "pages": ["reference/overview"] - }, - { - "group": "Quickstarts", - "pages": [ - "guides/quickstarts/react", - "guides/quickstarts/nextjs", - "guides/quickstarts/vue", - "guides/quickstarts/react-native" - ] - }, - { - "group": "Tutorials", - "pages": ["guides/tutorials/react", "guides/tutorials/nextjs", "guides/tutorials/vue"] - }, - { - "group": "Database", - "pages": [ - "guides/database/configuring-postgres", - "guides/database/backups", - "guides/database/access", - "guides/database/extensions", - "guides/database/performance", - "guides/database/upgrade-major" - ] - }, - { - "group": "AI", - "pages": [ - "guides/ai/enabling-service", - "guides/ai/local-development", - "guides/ai/auto-embeddings", - "guides/ai/assistants", - "guides/ai/dev-assistant" - ] - }, - { - "group": "Authentication", - "pages": [ - "guides/auth/overview", - "guides/auth/users", - "guides/auth/jwt", - { - "group": "Social Sign In", - "icon": "at", - "pages": [ - "guides/auth/social/sign-in-apple", - "guides/auth/social/sign-in-azuread", - "guides/auth/social/sign-in-discord", - "guides/auth/social/sign-in-facebook", - "guides/auth/social/sign-in-github", - "guides/auth/social/sign-in-google", - "guides/auth/social/sign-in-linkedin", - "guides/auth/social/sign-in-spotify", - "guides/auth/social/sign-in-twitch", - "guides/auth/social/sign-in-workos" - ] - }, - "guides/auth/social-connect", - "guides/auth/sign-in-email-password", - "guides/auth/sign-in-otp", - "guides/auth/sign-in-magic-link", - "guides/auth/sign-in-phone-number", - "guides/auth/sign-in-webauthn", - "guides/auth/sign-in-idtokens", - "guides/auth/elevated-permissions", - "guides/auth/bot-protection", - "guides/auth/email-templates", - "guides/auth/custom-jwts" - ] - }, - { - "group": "API / Hasura", - "pages": [ - "guides/api/configuring-hasura", - "guides/api/permissions", - "guides/api/advanced_features" - ] - }, - { - "group": "Storage", - "pages": ["guides/storage/overview", "guides/storage/cdn", "guides/storage/antivirus"] - }, - { - "group": "Functions", - "pages": ["guides/functions/overview", "guides/functions/runtimes"] - }, - { - "group": "Run", - "pages": [ - "guides/run/getting-started", - "guides/run/configuration", - "guides/run/networking", - "guides/run/health-checks", - "guides/run/resources", - "guides/run/registry", - "guides/run/local-development", - "guides/run/configuration-overlays", - "guides/run/cli-deployments" - ] - }, - { - "group": "CLI", - "pages": [ - "guides/cli/local-development", - "guides/cli/subdomain", - "guides/cli/migrate-config", - "guides/cli/multiple-projects", - "guides/cli/configuration-overlays", - "guides/cli/seeds" - ] - }, - { - "group": "Backend Services", - "pages": [ - { - "group": "Authentication", - "icon": "users", - "pages": [ - "reference/auth/get-.well-known-jwks.json", - "reference/auth/post-elevate-webauthn", - "reference/auth/post-elevate-webauthn-verify", - "reference/auth/get-healthz", - "reference/auth/head-healthz", - "reference/auth/post-link-idtoken", - "reference/auth/get-mfa-totp-generate", - "reference/auth/post-pat", - "reference/auth/post-signin-anonymous", - "reference/auth/post-signin-email-password", - "reference/auth/post-signin-idtoken", - "reference/auth/post-signin-mfa-totp", - "reference/auth/post-signin-otp-email", - "reference/auth/post-signin-otp-email-verify", - "reference/auth/post-signin-passwordless-email", - "reference/auth/post-signin-passwordless-sms", - "reference/auth/post-signin-passwordless-sms-otp", - "reference/auth/post-signin-pat", - "reference/auth/get-signin-provider-{provider}", - "reference/auth/get-signin-provider-{provider}-callback", - "reference/auth/post-signin-webauthn", - "reference/auth/post-signin-webauthn-verify", - "reference/auth/post-signout", - "reference/auth/post-signup-email-password", - "reference/auth/post-signup-webauthn", - "reference/auth/post-signup-webauthn-verify", - "reference/auth/post-token", - "reference/auth/post-token-verify", - "reference/auth/get-user", - "reference/auth/post-user-deanonymize", - "reference/auth/post-user-email-change", - "reference/auth/post-user-email-send-verification-email", - "reference/auth/post-user-mfa", - "reference/auth/post-user-password", - "reference/auth/post-user-password-reset", - "reference/auth/post-user-provider-tokens", - "reference/auth/post-user-webauthn-add", - "reference/auth/post-user-webauthn-verify", - "reference/auth/get-verify", - "reference/auth/get-version" - ] - }, - { - "group": "Storage", - "icon": "file", - "pages": [ - "reference/storage/upload-file", - "reference/storage/replace-file", - "reference/storage/delete-file", - "reference/storage/download-file", - "reference/storage/download-file-metadata", - "reference/storage/presigned-url", - "reference/storage/get-file-content" - ] - } - ] - }, - { - "group": "GraphQL", - "pages": [ - { - "group": "AI", - "pages": [ - "reference/graphql/ai/overview", - { - "group": "Query", - "pages": [ - "reference/graphql/ai/query/assistant", - "reference/graphql/ai/query/assistants", - "reference/graphql/ai/query/session", - "reference/graphql/ai/query/sessionMessages", - "reference/graphql/ai/query/sessions" - ] - }, - { - "group": "Mutation", - "pages": [ - "reference/graphql/ai/mutation/insertAssistant", - "reference/graphql/ai/mutation/updateAssistant", - "reference/graphql/ai/mutation/deleteAssistant", - "reference/graphql/ai/mutation/startSession", - "reference/graphql/ai/mutation/deleteSession", - "reference/graphql/ai/mutation/sendMessage", - "reference/graphql/ai/mutation/startDevSession", - "reference/graphql/ai/mutation/sendDevMessage" - ] - } - ] - } - ] - }, - { - "group": "Client Libraries", - "pages": [ - { - "group": "JavaScript", - "icon": "js", - "pages": [ - { - "group": "nhost-js", - "pages": [ - "reference/javascript/nhost-js/nhost-client", - "reference/javascript/nhost-js/set-role", - "reference/javascript/nhost-js/unset-role" - ] - }, - { - "group": "Auth", - "pages": [ - "reference/javascript/auth/hasura-auth-client", - "reference/javascript/auth/change-email", - "reference/javascript/auth/change-password", - "reference/javascript/auth/create-pat", - "reference/javascript/auth/get-access-token", - "reference/javascript/auth/get-authentication-status", - "reference/javascript/auth/get-decoded-access-token", - "reference/javascript/auth/get-hasura-claim", - "reference/javascript/auth/get-hasura-claims", - "reference/javascript/auth/get-session", - "reference/javascript/auth/get-user", - "reference/javascript/auth/is-authenticated", - "reference/javascript/auth/is-authenticated-async", - "reference/javascript/auth/on-auth-state-changed", - "reference/javascript/auth/on-token-changed", - "reference/javascript/auth/refresh-session", - "reference/javascript/auth/reset-password", - "reference/javascript/auth/send-verification-email", - "reference/javascript/auth/sign-in", - "reference/javascript/auth/sign-in-pat", - "reference/javascript/auth/sign-out", - "reference/javascript/auth/sign-up", - "reference/javascript/auth/add-security-key", - "reference/javascript/auth/elevate-email-security-key", - "reference/javascript/auth/connect-provider", - "reference/javascript/auth/sign-in-email-otp", - "reference/javascript/auth/verify-email-otp", - "reference/javascript/auth/sign-in-id-token", - "reference/javascript/auth/link-id-token", - "reference/javascript/auth/sign-in-security-key" - ] - }, - { - "group": "Storage", - "pages": [ - "reference/javascript/storage/hasura-storage-client", - "reference/javascript/storage/upload", - "reference/javascript/storage/download", - "reference/javascript/storage/get-presigned-url", - "reference/javascript/storage/get-public-url", - "reference/javascript/storage/delete", - "reference/javascript/storage/set-access-token", - "reference/javascript/storage/set-admin-secret", - "reference/javascript/storage/set-headers", - "reference/javascript/storage/unset-headers", - "reference/javascript/storage/get-headers" - ] - }, - { - "group": "GraphQL ", - "pages": [ - "reference/javascript/graphql/nhost-graphql-client", - "reference/javascript/graphql/get-url", - "reference/javascript/graphql/set-access-token", - "reference/javascript/graphql/request", - "reference/javascript/graphql/set-headers", - "reference/javascript/graphql/unset-headers", - "reference/javascript/graphql/get-headers" - ] - }, - { - "group": "Functions ", - "pages": [ - "reference/javascript/functions/create-functions-client", - "reference/javascript/functions/call", - "reference/javascript/functions/set-access-token" - ] - } - ] - }, - { - "group": "React", - "icon": "react", - "pages": [ - "reference/react/nhost-client", - "reference/react/signed-in", - "reference/react/signed-out", - "reference/react/use-access-token", - "reference/react/use-add-security-key", - "reference/react/use-authenticated", - "reference/react/use-authentication-status", - "reference/react/use-change-email", - "reference/react/use-change-password", - "reference/react/use-config-mfa", - "reference/react/use-decoded-access-token", - "reference/react/use-file-upload", - "reference/react/use-file-upload-item", - "reference/react/use-hasura-claim", - "reference/react/use-hasura-claims", - "reference/react/use-multiple-files-upload", - "reference/react/use-nhost-client", - "reference/react/use-provider-link", - "reference/react/use-reset-password", - "reference/react/use-send-verification-email", - "reference/react/use-sign-in-anonymous", - "reference/react/use-sign-in-email-password", - "reference/react/use-sign-in-email-passwordless", - "reference/react/use-sign-in-email-security-key", - "reference/react/use-sign-in-pat", - "reference/react/use-sign-in-sms-passwordless", - "reference/react/use-sign-out", - "reference/react/use-sign-up-email-password", - "reference/react/use-sign-up-email-security-key-email", - "reference/react/use-elevate-security-key-email", - "reference/react/use-user-avatar-url", - "reference/react/use-user-data", - "reference/react/use-user-default-role", - "reference/react/use-user-display-name", - "reference/react/use-user-email", - "reference/react/use-user-id", - "reference/react/use-user-is-anonymous", - "reference/react/use-user-locale", - "reference/react/use-user-roles", - "reference/react/use-sign-in-email-otp", - "reference/react/use-sign-in-id-token", - "reference/react/use-link-id-token", - "reference/react/use-sign-in-security-key" - ] - }, - { - "group": "Next.js", - "icon": "react", - "pages": [ - "reference/nextjs/nhost-client", - "reference/nextjs/signed-in", - "reference/nextjs/signed-out", - "reference/nextjs/create-server-side-client", - "reference/nextjs/get-nhost-session", - "reference/nextjs/use-access-token", - "reference/nextjs/use-add-security-key", - "reference/nextjs/use-authenticated", - "reference/nextjs/use-authentication-status", - "reference/nextjs/use-change-email", - "reference/nextjs/use-change-password", - "reference/nextjs/use-config-mfa", - "reference/nextjs/use-decoded-access-token", - "reference/nextjs/use-file-upload", - "reference/nextjs/use-file-upload-item", - "reference/nextjs/use-hasura-claim", - "reference/nextjs/use-hasura-claims", - "reference/nextjs/use-multiple-files-upload", - "reference/nextjs/use-nhost-client", - "reference/nextjs/use-provider-link", - "reference/nextjs/use-reset-password", - "reference/nextjs/use-send-verification-email", - "reference/nextjs/use-sign-in-anonymous", - "reference/nextjs/use-sign-in-email-password", - "reference/nextjs/use-sign-in-email-passwordless", - "reference/nextjs/use-sign-in-email-security-key", - "reference/nextjs/use-sign-in-pat", - "reference/nextjs/use-sign-in-sms-passwordless", - "reference/nextjs/use-sign-out", - "reference/nextjs/use-sign-up-email-password", - "reference/nextjs/use-sign-up-email-security-key-email", - "reference/nextjs/use-elevate-security-key-email", - "reference/nextjs/use-user-avatar-url", - "reference/nextjs/use-user-data", - "reference/nextjs/use-user-default-role", - "reference/nextjs/use-user-display-name", - "reference/nextjs/use-user-email", - "reference/nextjs/use-user-id", - "reference/nextjs/use-user-is-anonymous", - "reference/nextjs/use-user-locale", - "reference/nextjs/use-user-roles", - "reference/nextjs/use-sign-in-email-otp", - "reference/nextjs/use-sign-in-id-token", - "reference/nextjs/use-link-id-token", - "reference/nextjs/use-sign-in-security-key" - ] - }, - { - "group": "Vue", - "icon": "vuejs", - "pages": [ - "reference/vue/nhost-client", - "reference/vue/use-access-token", - "reference/vue/use-authenticated", - "reference/vue/use-authentication-status", - "reference/vue/use-change-email", - "reference/vue/use-change-password", - "reference/vue/use-decoded-access-token", - "reference/vue/use-file-upload", - "reference/vue/use-file-upload-item", - "reference/vue/use-hasura-claim", - "reference/vue/use-hasura-claims", - "reference/vue/use-multiple-files-upload", - "reference/vue/use-nhost-client", - "reference/vue/use-provider-link", - "reference/vue/use-reset-password", - "reference/vue/use-send-verification-email", - "reference/vue/use-sign-in-anonymous", - "reference/vue/use-sign-in-email-password", - "reference/vue/use-sign-in-email-passwordless", - "reference/vue/use-sign-in-pat", - "reference/vue/use-sign-in-sms-passwordless", - "reference/vue/use-sign-out", - "reference/vue/use-sign-up-email-password", - "reference/vue/use-user-avatar-url", - "reference/vue/use-user-data", - "reference/vue/use-user-default-role", - "reference/vue/use-user-display-name", - "reference/vue/use-user-email", - "reference/vue/use-user-id", - "reference/vue/use-user-is-anonymous", - "reference/vue/use-user-locale", - "reference/vue/use-user-roles", - "reference/vue/use-add-security-key", - "reference/vue/use-elevate-security-key-email", - "reference/vue/use-sign-in-email-security-key", - "reference/vue/use-sign-up-email-security-key", - "reference/vue/use-sign-in-email-otp", - "reference/vue/use-sign-in-id-token", - "reference/vue/use-link-id-token", - "reference/vue/use-sign-in-security-key" - ] - }, - { - "group": "React Native", - "icon": "mobile-notch", - "pages": ["reference/react-native/support"] - } - ] - } - ], - "footerSocials": { - "twitter": "https://twitter.com/nhost", - "github": "https://github.com/nhost", - "linkedin": "https://www.linkedin.com/company/nhost" - } -} diff --git a/docs/package.json b/docs/package.json index 875aa4dec..db9e3d715 100644 --- a/docs/package.json +++ b/docs/package.json @@ -6,6 +6,6 @@ "start": "mintlify dev" }, "devDependencies": { - "mintlify": "^4.0.136" + "mintlify": "^4.0.445" } } diff --git a/docs/guides/cli/configuration-overlays.mdx b/docs/platform/cli/configuration-overlays.mdx similarity index 90% rename from docs/guides/cli/configuration-overlays.mdx rename to docs/platform/cli/configuration-overlays.mdx index 19aa6d067..3dd2c4386 100644 --- a/docs/guides/cli/configuration-overlays.mdx +++ b/docs/platform/cli/configuration-overlays.mdx @@ -45,35 +45,35 @@ It's important to note that overlays in Nhost do not modify the original files, You can create overlays with the CLI command `nhost config edit [--subdomain $SUBDOMAIN]`: -![open editor](/images/guides/cli/1.png) +![open editor](/images/cli/1.png) If you need to create an overlay for your local development environment remember to use `local` as subdomain This will open an editor with the configuration for your `$SUBDOMAIN`: -![editor](/images/guides/cli/2.png) +![editor](/images/cli/2.png) You can perform as many changes as needed using overlays. For example, you can add an environment variable, enable Hasura remote permissions, and change the client URL. -![editor](/images/guides/cli/3.png) +![editor](/images/cli/3.png) You can verify the overlay by checking the file `nhost/overlays/$SUBDOMAIN.json` -![verify overlay](/images/guides/cli/4.png) +![verify overlay](/images/cli/4.png) ## Viewing Configuration To verify that your final configuration is correct, you can use the command `nhost config show [--subdomain $SUBDOMAIN]`. This command will apply the specified overlay (if it exists) and render the configuration using the local secrets. -![view configuration](/images/guides/cli/5.png) +![view configuration](/images/cli/5.png) ## Validating Configuration Finally, you can validate your configuration overlay with the command `nhost config validate [--subdomain $SUBDOMAIN]` -![view configuration](/images/guides/cli/6.png) +![view configuration](/images/cli/6.png) ## Run services -To learn how to use configuration overlays with Run services, please refer to the specific information provided for [Run services](/guides/run/configuration-overlays). +To learn how to use configuration overlays with Run services, please refer to the specific information provided for [Run services](/products/run/configuration-overlays). diff --git a/docs/guides/cli/local-development.mdx b/docs/platform/cli/local-development.mdx similarity index 96% rename from docs/guides/cli/local-development.mdx rename to docs/platform/cli/local-development.mdx index 5049ce902..0f216d46f 100644 --- a/docs/guides/cli/local-development.mdx +++ b/docs/platform/cli/local-development.mdx @@ -110,7 +110,7 @@ Let's create a new table called `messages`, with the following columns: There are other ways to generate a migration, here we will use the local Nhost Dashboard running on `https://local.dashboard.local.nhost.run/local/local`. Please head to the `database` tab and add the columns as follows: -![Nhost Local Dashboard](/images/guides/cli/create-table-messages.png) +![Nhost Local Dashboard](/images/cli/create-table-messages.png) To confirm that the migration was correctly generated with the correct SQL: @@ -133,11 +133,11 @@ Metadata is used to track the state of the API, permissions, event triggers, rem Again on the `database` tab of the Nhost Dashboard, click on the 3 dots right next to the table name and choose "Edit Permissions" to open the permissions editor. -![Permissions Editor](/images/guides/cli/matrix-permissions.png) +![Permissions Editor](/images/cli/matrix-permissions.png) Here we have access to a matrix of permissions for all available roles and actions. We want to set a permission to the `user` role and `insert` action as follows: -![Permissions Editor](/images/guides/cli/insert-permissions.png) +![Permissions Editor](/images/cli/insert-permissions.png) We defined a simple permission to allow a `user` to insert or create messages. We can look at the underlying metadata that tracks it. @@ -197,6 +197,6 @@ git push -u origin main To check out your deployment, head over to the **Deployments** tab (https://app.nhost.io). -![Deployments](/images/guides/cli/deployments.png) +![Deployments](/images/cli/deployments.png) You should now have the same `messages` table (and permissions) on your production instance! diff --git a/docs/guides/cli/migrate-config.mdx b/docs/platform/cli/migrate-config.mdx similarity index 100% rename from docs/guides/cli/migrate-config.mdx rename to docs/platform/cli/migrate-config.mdx diff --git a/docs/guides/cli/multiple-projects.mdx b/docs/platform/cli/multiple-projects.mdx similarity index 100% rename from docs/guides/cli/multiple-projects.mdx rename to docs/platform/cli/multiple-projects.mdx diff --git a/docs/platform/cli/overview.mdx b/docs/platform/cli/overview.mdx new file mode 100644 index 000000000..70f1bd929 --- /dev/null +++ b/docs/platform/cli/overview.mdx @@ -0,0 +1,46 @@ +--- +title: Local Development +sidebarTitle: Overview +description: Run and develop Nhost locally +icon: terminal +--- + +The Nhost CLI provides a seamless local development experience, allowing you to run the entire Nhost stack on your local machine. This approach enables fast iteration times, offline development capabilities, and an environment that closely mirrors production. + +## Key Features + + + + Run the entire Nhost platform locally including PostgreSQL, GraphQL, Auth, Storage, and custom services. + + + Make changes to your schema, auth settings, or storage permissions and see them take effect instantly. + + + Define your project's configuration in version-controlled files for easy collaboration. + + + +## Capabilities & Features + + + + Set up and run Nhost locally for a development workflow + + + Manage environment-specific settings without duplicating your base configuration + + + Configure dynamic DNS to connect from a different device to your local project + + + Work on multiple projects simultaneously with isolated environments + + + Populate your development database with test data for consistent environments + + + +## Next steps + +For detailed installation and setup instructions, see the [Local Development](/platform/cli/local-development) guide. \ No newline at end of file diff --git a/docs/guides/cli/seeds.mdx b/docs/platform/cli/seeds.mdx similarity index 100% rename from docs/guides/cli/seeds.mdx rename to docs/platform/cli/seeds.mdx diff --git a/docs/guides/cli/subdomain.mdx b/docs/platform/cli/subdomain.mdx similarity index 94% rename from docs/guides/cli/subdomain.mdx rename to docs/platform/cli/subdomain.mdx index 3b73cb0f9..2796f8b4b 100644 --- a/docs/guides/cli/subdomain.mdx +++ b/docs/platform/cli/subdomain.mdx @@ -4,7 +4,7 @@ description: Connecting to your local environment icon: compass --- -When you start the CLI the services are exposed similarly to the way they are exposed in the [cloud](/platform/subdomain). For instance, the following information is shown on your terminal after running `nhost up` +When you start the CLI the services are exposed similarly to the way they are exposed in the [cloud](/platform/cloud/subdomain). For instance, the following information is shown on your terminal after running `nhost up` ``` > nhost up @@ -55,7 +55,7 @@ This is useful if you need to connect to your environment from a different devic Some ISPs filter DNS responses that point to localhost and/or private IP space. If your provider is one of them you may have troubles accessing your local dev environment. As a workaround you have two options: -1. Follow the instructions under [offline access](/guides/cli/subdomain#offline-access) to create static DNS entries in your machine. +1. Follow the instructions under [offline access](/platform/cli/subdomain#offline-access) to create static DNS entries in your machine. 2. Configure your computer to use a different [DNS provider](https://privacysavvy.com/security/business/best-free-public-dns-servers/). diff --git a/docs/platform/billing.mdx b/docs/platform/cloud/billing.mdx similarity index 100% rename from docs/platform/billing.mdx rename to docs/platform/cloud/billing.mdx diff --git a/docs/platform/compute-resources.mdx b/docs/platform/cloud/compute-resources.mdx similarity index 92% rename from docs/platform/compute-resources.mdx rename to docs/platform/cloud/compute-resources.mdx index d6a99b087..087b4e9f1 100644 --- a/docs/platform/compute-resources.mdx +++ b/docs/platform/cloud/compute-resources.mdx @@ -8,7 +8,7 @@ Compute resources are the fundamental units that represent the processing power This documentation outlines the key aspects of compute resources in the context of the Nhost Cloud Platform. -To further improve availability and fault tolerance, check out [Service Replicas](/platform/service-replicas) +To further improve availability and fault tolerance, check out [Service Replicas](/platform/cloud/service-replicas#service-replicas) ## Shared Compute @@ -100,7 +100,7 @@ By default disks are provisioned with a capacity for 3000 IOPS and 125 Mbps of t ## Encryption at Rest -All files uploaded to the [storage](/product/storage) service are encrypted at rest using AES-256 encryption. Similarly, any volumes provisioned for your [database](/product/database) and [Run services](/product/run) are also encrypted using AES-256. +All files uploaded to the [storage](/products/storage/overview) service are encrypted at rest using AES-256 encryption. Similarly, any volumes provisioned for your [database](/products/database/overview) and [Run services](/products/run/overview) are also encrypted using AES-256. Only volumes provisioned after December 2024 are encrypted with AES-256. You can verify your volume's encryption status by navigating to your project's settings -> Database -> Storage capacity. If your volume is not encrypted, you'll see a warning message indicating this. To enable encryption on your volume, you can pause and then unpause your project. This action will provision new volumes with encryption enabled. diff --git a/docs/platform/custom-domains.mdx b/docs/platform/cloud/custom-domains.mdx similarity index 97% rename from docs/platform/custom-domains.mdx rename to docs/platform/cloud/custom-domains.mdx index 7b223297b..053c82d7a 100644 --- a/docs/platform/custom-domains.mdx +++ b/docs/platform/cloud/custom-domains.mdx @@ -18,7 +18,7 @@ The following examples assume we are configuring custom domains at `*.custom-dom 1. Add a CNAME record in your DNS provider for each of the services you want a custom domain for, and click "Verify". The verification might take a few seconds to succeed. 2. Once the verification succeeds, click "Save" to update your project. - ![Custom Domains](./images/platform/custom-domains/custom-domains-dashboard.png) + ![Custom Domains](/images/platform/custom-domains/custom-domains-dashboard.png) diff --git a/docs/platform/environment-variables.mdx b/docs/platform/cloud/environment-variables.mdx similarity index 100% rename from docs/platform/environment-variables.mdx rename to docs/platform/cloud/environment-variables.mdx diff --git a/docs/platform/cloud/git.mdx b/docs/platform/cloud/git.mdx new file mode 100644 index 000000000..60e4c3cb6 --- /dev/null +++ b/docs/platform/cloud/git.mdx @@ -0,0 +1,52 @@ +--- +title: 'Connecting to GitHub' +description: 'Set up automatic deployments by connecting your Nhost project to GitHub' +icon: github +--- + +By connecting your Nhost project to GitHub, you can set up a seamless CI/CD workflow that takes care of deploying your database migrations, GraphQL metadata, and serverless functions. + +## Getting Started + +Connecting to GitHub only takes a few minutes. Here's how to do it: + +1. Head over to your project dashboard +2. Navigate to **Settings** → **Git** +3. Click the **Connect to GitHub** button + +## Authorizing Nhost + +When you click the connect button, you'll be redirected to GitHub where you'll need to: + +- Install the Nhost GitHub App on your account +- Choose which repositories Nhost can access (you can select specific repos or grant access to all of them) + +Don't worry - Nhost only requests the permissions it needs to deploy your project. + +## Configuring Your Repository + +After authorizing the GitHub integration, you'll need to tell Nhost a couple of important details: + +### Base Directory + +This is the folder in your repository where your Nhost folder lives. If your Nhost foder is in the root of your repository, you can leave this as `/`. If it is in a subfolder (like `/backend`), specify that path here. + +### Deployment Branch + +Choose which branch should trigger deployments when pushed to. This is typically: +- `main` or `master` for production environments +- `develop` or `staging` for development environments + +## How Deployments Work + +Once everything is set up, here's what happens: + +1. You push code to your deployment branch +2. We do the rest. We: + 1. Checkout your commit + 2. Deploy your `nhost.toml` + 3. Deploy any new database migrations + 4. Apply GraphQL metadata + 5. Deploy new or modified serverless functions + +You can head to your project's deployment tab to see your deployments and their logs. diff --git a/docs/platform/logs.mdx b/docs/platform/cloud/logs.mdx similarity index 100% rename from docs/platform/logs.mdx rename to docs/platform/cloud/logs.mdx diff --git a/docs/platform/metrics.mdx b/docs/platform/cloud/metrics.mdx similarity index 97% rename from docs/platform/metrics.mdx rename to docs/platform/cloud/metrics.mdx index 8ee1c45b6..ede9a48b6 100644 --- a/docs/platform/metrics.mdx +++ b/docs/platform/cloud/metrics.mdx @@ -12,7 +12,7 @@ Insights such as response times, resource usage, and error rates, to help you as Metrics helps you analyze the performance of your infrastructure, while identifying bottlenecks and optimizing your applications. -Read more about [compute resources](/platform/compute-resources) and [service replicas](/platform/service-replicas) +Read more about [compute resources](/platform/cloud/compute-resources) and [service replicas](/platform/cloud/service-replicas) ## Managed Grafana diff --git a/docs/platform/cloud/overview.mdx b/docs/platform/cloud/overview.mdx new file mode 100644 index 000000000..5d25a0d99 --- /dev/null +++ b/docs/platform/cloud/overview.mdx @@ -0,0 +1,70 @@ +--- +title: Cloud +description: Fully managed backend infrastructure +icon: cloud +--- + +# Nhost Cloud Platform + +Nhost Cloud offers a fully managed backend infrastructure solution that lets you focus on building your application without worrying about infrastructure management, scaling, or maintenance. + +## Key Features + + + + Deploy your backend in seconds. Nhost Cloud automatically provisions all the services you need - database, GraphQL API, authentication, storage, and more. + + + Deploy your project in one of multiple regions available around the world to reduce latency and improve user experience. + + + Your infrastructure scales automatically based on your application's needs. From small projects to enterprise-scale applications. + + + Monitor your application's performance, resource utilization, and operations through built-in metrics, logs, and alerts. + + + Enterprise-grade security with TLS encryption, regular patching, secure authentication options, and granular permissions. + + + +## Deployment Options + + + + Configure your application environment with secure variable management + + + Connect your own domain name to your Nhost project + + + Scale your application with flexible compute resources + + + Increase availability with multiple service instances + + + Protect your services from abuse with configurable rate limits + + + Store sensitive information securely with integrated secrets + + + +## Observability + + + + Access comprehensive logs for all services in your project + + + Monitor system performance with real-time metrics + + + Track all deployments with detailed history and rollback capabilities + + + +## Flexible Billing + +Pay only for what you use with [transparent billing](/platform/cloud/billing) that scales with your application's needs. Start with a free tier and upgrade as your project grows. diff --git a/docs/platform/rate-limits.mdx b/docs/platform/cloud/rate-limits.mdx similarity index 100% rename from docs/platform/rate-limits.mdx rename to docs/platform/cloud/rate-limits.mdx diff --git a/docs/platform/secrets.mdx b/docs/platform/cloud/secrets.mdx similarity index 100% rename from docs/platform/secrets.mdx rename to docs/platform/cloud/secrets.mdx diff --git a/docs/platform/service-replicas.mdx b/docs/platform/cloud/service-replicas.mdx similarity index 100% rename from docs/platform/service-replicas.mdx rename to docs/platform/cloud/service-replicas.mdx diff --git a/docs/platform/subdomain.mdx b/docs/platform/cloud/subdomain.mdx similarity index 93% rename from docs/platform/subdomain.mdx rename to docs/platform/cloud/subdomain.mdx index 1b148f21e..026b3a8d0 100644 --- a/docs/platform/subdomain.mdx +++ b/docs/platform/cloud/subdomain.mdx @@ -32,9 +32,9 @@ const nhost = new NhostClient( ``` -If you want to use your own domain you can head to the [custom domains documentation](/platform/custom-domains) +If you want to use your own domain you can head to the [custom domains documentation](/platform/cloud/custom-domains) -For information on how to access your local environment check the [cli documentation](/guides/cli/subdomain) +For information on how to access your local environment check the [cli documentation](/platform/cli/subdomain) diff --git a/docs/platform/tls.mdx b/docs/platform/cloud/tls.mdx similarity index 99% rename from docs/platform/tls.mdx rename to docs/platform/cloud/tls.mdx index 7cdfdfedb..81c9dd4d8 100644 --- a/docs/platform/tls.mdx +++ b/docs/platform/cloud/tls.mdx @@ -7,7 +7,7 @@ icon: file-certificate Below you can find some advanced TLS functionality you can enable. -Advanced TLS settings are only available with [custom domains](/platform/custom-domains) +Advanced TLS settings are only available with [custom domains](/platform/cloud/custom-domains) ## TLS Client Authentication diff --git a/docs/platform/deployments.mdx b/docs/platform/deployments.mdx deleted file mode 100644 index e6cdd27c6..000000000 --- a/docs/platform/deployments.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: 'Deployments' -description: 'As simple as pushing your code to source control' -icon: code-pull-request-closed ---- - -## Automatic Deploys - -Nhost deploys your project everytime new code is pushed to the branch connected to it. - -## Pipeline - -During a deployment, the following happens: - - - - - Nhost pulls down your connected repository, and deletes it after the deployment completes. - - - - Nhost makes sure the state of your cloud instance reflects the one described in `./nhost/nhost.toml`. - - - - New migrations present in `./nhost/migrations` are applied to your PostgreSQL instance. - - - - Metadata changes from `./nhost/metadata` are applied to the Hasura Instance. - - - - Functions inside `./functions` are deployed. - - - - diff --git a/docs/platform/overview.mdx b/docs/platform/overview.mdx new file mode 100644 index 000000000..345a9a38b --- /dev/null +++ b/docs/platform/overview.mdx @@ -0,0 +1,46 @@ +--- +title: Platform +mode: "custom" +--- + +
+
+ # Platform +

Learn about platform features

+ + [Explore Nhost Cloud →](/platform/cloud) + +
+ +
+ # Explore different deployment options + + + + Fully managed backend infrastructure + + + + Develop your project with a local instance of Nhost + + + + Run Nhost on your own infrastructure + + +
+
+ + diff --git a/docs/platform/self-hosting/community.mdx b/docs/platform/self-hosting/community.mdx new file mode 100644 index 000000000..54403b1ea --- /dev/null +++ b/docs/platform/self-hosting/community.mdx @@ -0,0 +1,13 @@ +--- +title: Community +description: Self-hosting Nhost with community support +icon: city +--- + +If you enjoy server administration, infrastructure management, and operational responsibilities, you can host Nhost on your own infrastructure with support from our community. We provide an official reference implementation for demonstration purposes in our [GitHub repository](https://github.com/nhost/nhost/tree/main/examples/docker-compose). + +Need assistance? Our community is ready to help: +- Join discussions in our [Discord community](https://discord.com/invite/9V7Qb2U) +- Participate in [GitHub discussions](https://github.com/nhost/nhost/discussions) + +Our community edition gives you complete control over your deployment while benefiting from the collective knowledge of Nhost users worldwide. diff --git a/docs/platform/self-hosting/dedicated.mdx b/docs/platform/self-hosting/dedicated.mdx new file mode 100644 index 000000000..26f53e63e --- /dev/null +++ b/docs/platform/self-hosting/dedicated.mdx @@ -0,0 +1,18 @@ +--- +title: Dedicated Cluster +description: Dedicated infrastructure for your specific needs or security requirements +icon: shield-check +--- + + +For enterprise customers with specific requirements or security needs, we offer dedicated cluster deployments: + +- Enterprise-grade agreement with comprehensive support and services +- Dedicated infrastructure exclusively for your organization, operated by Nhost's expert team +- Fully integrated with the Nhost dashboard for a seamless management experience +- Robust Service Level Agreements (SLAs) covering availability, performance, and support +- Custom configuration options to meet your specific security and compliance requirements + +Our dedicated cluster option provides the ideal solution for organizations requiring the highest levels of service, security, and performance. + +If you want to know more don't hesitate to get in touch with our [team](mailto:hello@nhost.io). diff --git a/docs/platform/self-hosting/overview.mdx b/docs/platform/self-hosting/overview.mdx new file mode 100644 index 000000000..7377173ce --- /dev/null +++ b/docs/platform/self-hosting/overview.mdx @@ -0,0 +1,40 @@ +--- +title: Self-Hosting +description: Running Nhost on your own infrastructure +icon: server +--- + +Nhost is designed to be flexible in how you deploy and manage it. Here's an overview of the self-hosting options available for your infrastructure: + +## Self-Hosting Options + + + + Self-host Nhost on your own infrastructure with community support through open-source documentation and forums. + + + Self-host while benefiting from professional support with direct access to our team for troubleshooting and guidance. + + + Enterprise-grade option with a fully-managed Nhost environment on your infrastructure, handled by our team. + + + +## Benefits of Self-Hosting + + + + Maintain complete control over your data within your own infrastructure and jurisdiction. + + + Meet specific regulatory requirements by hosting in your controlled environment. + + + Tailor the deployment to your specific infrastructure requirements and preferences. + + + Seamlessly integrate with your existing systems, monitoring, and deployment pipelines. + + + +Each option allows you to maintain your data within your own infrastructure while choosing the level of support that matches your team's needs and technical capabilities. \ No newline at end of file diff --git a/docs/platform/self-hosting/support.mdx b/docs/platform/self-hosting/support.mdx new file mode 100644 index 000000000..0211a2d6c --- /dev/null +++ b/docs/platform/self-hosting/support.mdx @@ -0,0 +1,17 @@ +--- +title: Enterprise Support +description: Enterprise support for organizations managing their own infrastructure +icon: handshake +--- + +For organizations seeking additional reliability and expert assistance, we offer a professional support agreement for self-hosted deployments: + +- You maintain full administrative control over your Nhost infrastructure +- Our team provides expert guidance on architecture, codebase, infrastructure optimization, and best practices +- Access to a dedicated Discord channel for direct communication with our support engineers +- Defined Service Level Agreements (SLAs) for response times and issue resolution +- Priority troubleshooting for critical issues + +This option balances the flexibility of self-hosting with the security of professional support when you need it most. + +If you want to know more don't hesitate to get in touch with our [team](mailto:hello@nhost.io). diff --git a/docs/product.mdx b/docs/product.mdx deleted file mode 100644 index 8291d23e0..000000000 --- a/docs/product.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: 'Product' -description: 'Nhost is backend infrastructure that scales.' ---- - -## Your Infrastructure - -Nhost offers realtime APIs, authentication, storage, and functions out-of-the-box to get you off the ground fast. - - -It also gives you the tools to extend your infrastructure. Follow [Nhost Run](https://docs.nhost.run/platform/run) for more information. - - -## Database - -Each Nhost project comes with PostgreSQL and a set of useful extensions. - - - Read more about Nhost PostgreSQL here - - -## APIs - -Instantly build and ship realtime APIs with Hasura - - - Read more about Hasura here. - - -## Authentication - -Manage user accounts with ease. - -Read more about Nhost Auth here. - -## Storage - -Store files at scale. - -Read more about Nhost Storage here. - -## Functions - -Process webhooks from database events. - -## Run - -Run anything else you need. diff --git a/docs/product/authentication.mdx b/docs/product/authentication.mdx deleted file mode 100644 index aaddafcd3..000000000 --- a/docs/product/authentication.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Auth -description: Sign Up and Sign In users -icon: users ---- - -Auth makes it possible to have secure authentication with support for many different authentication methods in just a few minutes. - -Combined with a powerful **Permission Rules** system, Nhost Auth offers everything you need to **authenticate** and **authorize** users. - -## Supported Methods - - - - - - - - - - - - - - - - - - -### OAuth Providers - - - - - - - - - - - - - - - - - - - - - - -## Authorization - -For authorization and permission rules, read the API's guide on [Permissions](/guides/api/permissions). - -### Additional Resources - - - - - - - - - diff --git a/docs/product/storage.mdx b/docs/product/storage.mdx deleted file mode 100644 index 7fe889536..000000000 --- a/docs/product/storage.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Storage -description: Store and Serve large files -icon: file ---- - -Use Nhost Storage to store and retrieve large files such as videos, images, large documents, or any other objects. - -Nhost Storage includes a built-in image optimizer, so you can resize and compress your media files on the fly. - - - - - - - - - - - -### Additional Resources - - - - - - - - - diff --git a/docs/guides/ai/assistants.mdx b/docs/products/ai/assistants.mdx similarity index 97% rename from docs/guides/ai/assistants.mdx rename to docs/products/ai/assistants.mdx index c5ddceedb..0b3427d5a 100644 --- a/docs/guides/ai/assistants.mdx +++ b/docs/products/ai/assistants.mdx @@ -16,7 +16,7 @@ The first step is to create an AI assistant. You can create an AI assistant by u -![dashboard](/images/guides/ai/assistants/dashboard.png) +![dashboard](/images/ai/assistants/dashboard.png) @@ -113,7 +113,7 @@ mutation { In order to enhance our AI assistants we are leveraging tools. Tools can be either queries or mutations performed against your project's GraphQL engine or they can also be any arbitrary endpoint you choose. Using the example above, we added 4 different tools to our AI Assistant: - The GraphQL query `GetMoviesWithScoreHigherThan`, which will allow the AI Assistant to query movies based on their score. -- The GraphQL query `SearchMovies`, which leverages [auto-embeddings](auto-embeddings) and will allow the AI Assistant to query movies using natural language. +- The GraphQL query `SearchMovies`, which leverages [auto-embeddings](/products/ai/auto-embeddings) and will allow the AI Assistant to query movies using natural language. - The GraphQL mutation `InsertMovie`, which will let the AI Assistant to insert new movies directly into the database. - The webhook `answer_deep_questions`, which is a serverless function that can respond to deep questions about life and the universe. @@ -212,7 +212,7 @@ The field `prevMessageID` is used to only return messages after this one. As thi Something to note is that ChatGPT detected that this was a "deep question" that could be answered with the webhook `answer_deep_questions` so this is roughly what happened: -![answer deep questions sequence of events](/images/guides/ai/assistants/answer_deep_questions.png) +![answer deep questions sequence of events](/images/ai/assistants/answer_deep_questions.png) We can continue the conversation by performing from mutations. Notice this time we can ask graphite to only return new message by specifying `prevMessageID`: @@ -266,7 +266,7 @@ Which should return something like: In this case ChatGPT detected some of the information needed to formulate the answer could be retrieved with the GraphQL query `GetMoviesWithScoreHigherThan` so it requested graphite to run the query and return the data. This is what happened: -![GetMoviesWithScoreHigherThan sequence of events](/images/guides/ai/assistants/GetMoviesWithScoreHigherThan.png) +![GetMoviesWithScoreHigherThan sequence of events](/images/ai/assistants/GetMoviesWithScoreHigherThan.png) ## Implementing workflows diff --git a/docs/guides/ai/auto-embeddings.mdx b/docs/products/ai/auto-embeddings.mdx similarity index 92% rename from docs/guides/ai/auto-embeddings.mdx rename to docs/products/ai/auto-embeddings.mdx index ad719afca..b0c6511d3 100644 --- a/docs/guides/ai/auto-embeddings.mdx +++ b/docs/products/ai/auto-embeddings.mdx @@ -25,7 +25,7 @@ To demonstrate how to configure Auto-Embeddings we will use an example project w Before we start, let's start by explaining the project. Our project contains a single table called `movies` with the following columns: -![table](/images/guides/ai/auto-embeddings/table.png) +![table](/images/ai/auto-embeddings/table.png) Our goal is going to be to generate embeddings using the data in the columns `name`, `genre` and `overview`. @@ -49,7 +49,7 @@ ALTER TABLE public.movies ADD COLUMN embeddings vector(1536) NULL; For instance: -![creating embeddings column](/images/guides/ai/auto-embeddings/column.png) +![creating embeddings column](/images/ai/auto-embeddings/column.png) #### Detecting Changes @@ -93,7 +93,7 @@ EXECUTE FUNCTION set_outdated_trigger(); For instance: -![outdated mechanism migration](/images/guides/ai/auto-embeddings/outdated.png) +![outdated mechanism migration](/images/ai/auto-embeddings/outdated.png) Now, `graphite`'s query will be (more on this later): @@ -139,7 +139,7 @@ Now that we have all the data we need, adding the configuration is as simple as -![configuration](/images/guides/ai/auto-embeddings/auto-embedding.png) +![configuration](/images/ai/auto-embeddings/auto-embedding.png) ```graphql @@ -167,24 +167,24 @@ mutation { After executing the mutation above two things will happen; the first one is that if we look at our logs we will start seeing entries like this on the next `sync-period`: -![logs](/images/guides/ai/auto-embeddings/logs.png) +![logs](/images/ai/auto-embeddings/logs.png) The logs indicate that graphite has started to generate embeddings for the movies. We can track the progress by counting movies with the `embeddings` column set to `NULL`: -![auto embeddings count non zero](/images/guides/ai/auto-embeddings/count_non_zero.png) +![auto embeddings count non zero](/images/ai/auto-embeddings/count_non_zero.png) Until eventually it reaches 0. -![auto embeddings count 0](/images/guides/ai/auto-embeddings/count_0.png) +![auto embeddings count 0](/images/ai/auto-embeddings/count_0.png) #### Natural Language and Similarity Search The second thing that will happen is that the queries `graphiteSearchMovies`, `graphiteSearchMoviesAggregate`, `graphiteSimilarMovies` and `graphiteSimilarMoviesAggregate` will be created. These queries will work similar to the standard `movies` and `moviesAggregate` queries provided by hasura and will respect the same permissions but they will also allow you to query movies using natural language or other movies for comparison. For instance: -![auto-embeddings-search](/images/guides/ai/auto-embeddings/search.png) -![auto-embeddings-similar](/images/guides/ai/auto-embeddings/similar.png) +![auto-embeddings-search](/images/ai/auto-embeddings/search.png) +![auto-embeddings-similar](/images/ai/auto-embeddings/similar.png) Both queries accept a third argument `maxDistance`. This argument allows you to filter responses that are too far from the query, useful for ensuring that very specific queries do not return entirely unrelated responses. The argument is a float between `0.0` (an exact match) and 1.0 (completely unrelated), with a default setting of `1.0`, ensuring the best matches are always returned even if they are unrelated to the query. diff --git a/docs/guides/ai/dev-assistant.mdx b/docs/products/ai/dev-assistant.mdx similarity index 64% rename from docs/guides/ai/dev-assistant.mdx rename to docs/products/ai/dev-assistant.mdx index 0a2a0af7f..99d784983 100644 --- a/docs/guides/ai/dev-assistant.mdx +++ b/docs/products/ai/dev-assistant.mdx @@ -6,11 +6,11 @@ icon: hat-wizard The developer assistant is a special AI Assistant enabled through the dashboard that has access to your project's schema and can help developing your project. -To use it simply [enable graphite](enabling-service) and query it through the dasbhoard: +To use it simply [enable graphite](/products/ai/enabling-service) and query it through the dasbhoard: -![dashboard](/images/guides/ai/dev-assistants/dashboard.png) +![dashboard](/images/ai/dev-assistants/dashboard.png) -![chat](/images/guides/ai/dev-assistants/chat.png) +![chat](/images/ai/dev-assistants/chat.png) ## Permissions diff --git a/docs/guides/ai/enabling-service.mdx b/docs/products/ai/enabling-service.mdx similarity index 90% rename from docs/guides/ai/enabling-service.mdx rename to docs/products/ai/enabling-service.mdx index 2eb82cb28..8f6b38f5c 100644 --- a/docs/guides/ai/enabling-service.mdx +++ b/docs/products/ai/enabling-service.mdx @@ -10,7 +10,7 @@ You can enable Graphite, Nhost's AI service, with the following steps: Check your project's settings and make sure the database version is at least `14.6-20231018-1`. If it isn't upgrade your database version (latest available version is recommended). - ![database settings](/images/guides/ai/enabling/database.png) + ![database settings](/images/ai/enabling/database.png) @@ -25,13 +25,13 @@ You can enable Graphite, Nhost's AI service, with the following steps: Get an OpenAI API key from their [customer portal](https://platform.openai.com/account/api-keys). - ![openai dashboard](/images/guides/ai/enabling/openai.png) + ![openai dashboard](/images/ai/enabling/openai.png) Finally, you can head to your project's settings -> AI section and enable the service or, alternatively, use your TOML configuration file to enable the service: - ![ai configuration screenshot](/images/guides/ai/enabling/settings.png) + ![ai configuration screenshot](/images/ai/enabling/settings.png) diff --git a/docs/guides/ai/local-development.mdx b/docs/products/ai/local-development.mdx similarity index 55% rename from docs/guides/ai/local-development.mdx rename to docs/products/ai/local-development.mdx index 57c19a0f9..4d521b1ba 100644 --- a/docs/guides/ai/local-development.mdx +++ b/docs/products/ai/local-development.mdx @@ -9,19 +9,19 @@ If you are using the Nhost CLI for local development, as of [v0.12.0](https://gi - Follow the steps highlighed in the [Enabling Service](enabling-service) guide and don't forget to add the relevant secrets to your `.secrets` file. + Follow the steps highlighed in the [Enabling Service](/products/ai/enabling-service) guide and don't forget to add the relevant secrets to your `.secrets` file. Run `nhost up`: - ![nhost up](/images/guides/ai/local-development/nhost_up.png) + ![nhost up](/images/ai/local-development/nhost_up.png) After starting the service the first thing you will notice is that there is a new `ai` service running. As you start the AI service metadata changes may be proposed: - ![git status](/images/guides/ai/local-development/git_status.png) + ![git status](/images/ai/local-development/git_status.png) We strongly recommmend you to commit them to your git repository so they can be deployed alongside your application. @@ -30,16 +30,16 @@ If you are using the Nhost CLI for local development, as of [v0.12.0](https://gi ### Synhcronizing Auto-Embeddings -If you add [auto-embeddings](/guides/ai/auto-embeddings) configuration locally and want to synchronize them with the cloud we recommend inserting them using a migration rather than with the auto-embeddings UI: +If you add [auto-embeddings](/products/ai/auto-embeddings) configuration locally and want to synchronize them with the cloud we recommend inserting them using a migration rather than with the auto-embeddings UI: -![migration](/images/guides/ai/local-development/migration.png) +![migration](/images/ai/local-development/migration.png) And then running `nhost up` to download the updated metadata. Afterwards you should see both database migrations and functions' metadata changes in your local project: -![git status](/images/guides/ai/local-development/git_status_functions.png) +![git status](/images/ai/local-development/git_status_functions.png) Pushing them to your deployment branch will also deploy them to your cloud project. ### Synhcronizing Assistants -Similar to auto-embeddings, if you want to synchronize [assistants](/guides/ai/assistants) we recommend you to insert them using a migration and then running `nhost up` to update any metadata if necessary. After pushing the proposed changes to the deployment branch all the changes should be deployed to the cloud project. +Similar to auto-embeddings, if you want to synchronize [assistants](/products/ai/assistants) we recommend you to insert them using a migration and then running `nhost up` to update any metadata if necessary. After pushing the proposed changes to the deployment branch all the changes should be deployed to the cloud project. diff --git a/docs/product/ai.mdx b/docs/products/ai/overview.mdx similarity index 77% rename from docs/product/ai.mdx rename to docs/products/ai/overview.mdx index 7cc209a13..978fb3bce 100644 --- a/docs/product/ai.mdx +++ b/docs/products/ai/overview.mdx @@ -1,5 +1,5 @@ --- -title: AI +title: Overview icon: sparkles --- @@ -30,11 +30,11 @@ Graphite, Nhost's AI service, extends the [Nhost stack](https://nhost.io) provid Embeddings are automatically generated based on defined rules and a new GraphQL query to search objects using natural language is automatically added to the schema: -![auto-embeddings-search](/images/product/ai/auto-embeddings-search.png) +![auto-embeddings-search](/images/products/ai/auto-embeddings-search.png) Similarly, a GraphQL schema to search for similar objects is also provided: -![auto-embeddings-similar](/images/product/ai/auto-embeddings-similar.png) +![auto-embeddings-similar](/images/products/ai/auto-embeddings-similar.png) Both queries respect the user session and permissions so only results the user is allowed to see are returned. @@ -42,20 +42,20 @@ In addition, thanks to [pgvector](https://github.com/pgvector/pgvector) you can ### AI Assistants -![assistant-insert](/images/product/ai/assistant-insert.png) -![assistant-thread](/images/product/ai/assistant-thread.png) +![assistant-insert](/images/products/ai/assistant-insert.png) +![assistant-thread](/images/products/ai/assistant-thread.png) ## Guides - + - + - + - + - + diff --git a/docs/guides/auth/bot-protection.mdx b/docs/products/auth/bot-protection.mdx similarity index 97% rename from docs/guides/auth/bot-protection.mdx rename to docs/products/auth/bot-protection.mdx index acf74c93a..7a345fdbf 100644 --- a/docs/guides/auth/bot-protection.mdx +++ b/docs/products/auth/bot-protection.mdx @@ -8,7 +8,7 @@ icon: robot To safeguard your Auth API against automated attacks from scripts and bots, you can implement [Cloudflare's Turnstile](https://www.cloudflare.com/en-gb/products/turnstile/). Turnstile offers CAPTCHA-like protection without user friction, as it doesn't require solving puzzles. -![Turnstile Check in Action](/images/guides/auth/turnstile/turnstile.gif) +![Turnstile Check in Action](/images/auth/turnstile/turnstile.gif) ## Integration Benefits diff --git a/docs/products/auth/client_and_redirect_urls.mdx b/docs/products/auth/client_and_redirect_urls.mdx new file mode 100644 index 000000000..a4f0def50 --- /dev/null +++ b/docs/products/auth/client_and_redirect_urls.mdx @@ -0,0 +1,16 @@ +--- +title: Client & Redirect URLs +description: Redirect users to your application after auth events +icon: route +--- + +## Client URL + +Client URL is the URL of your frontend application. The Client URL is used to redirect the user in certain auth workflows like signing in or resetting a password. + +## Allowed Redirect URLs + +Allowed Redirect URLs are the URLs of your frontend application that users are allowed to be redirected to on specific auth workflows. This is useful if you have multiple applications using the same Nhost backend or if you want to redirect users to a specific URL after certain authentication workflows. + +As an example, for a staging project, you can set the Client URL to `https://staging.example.com` and Allowed Redirect URLs to `https://*.vercel.app`. This way, the user can be redirected to any Vercel deployment of your frontend application. + diff --git a/docs/guides/auth/custom-jwts.mdx b/docs/products/auth/custom-jwts.mdx similarity index 100% rename from docs/guides/auth/custom-jwts.mdx rename to docs/products/auth/custom-jwts.mdx diff --git a/docs/guides/auth/elevated-permissions.mdx b/docs/products/auth/elevated-permissions.mdx similarity index 77% rename from docs/guides/auth/elevated-permissions.mdx rename to docs/products/auth/elevated-permissions.mdx index f374a6646..bd3f66b50 100644 --- a/docs/guides/auth/elevated-permissions.mdx +++ b/docs/products/auth/elevated-permissions.mdx @@ -5,9 +5,9 @@ description: Require extra permissions to perform critical operations icon: unlock --- -In some scenarios you may want to add an extra layer of security to perform certain actions or view certain data. For instance, you may wish to allow users to view their profile information after authenticating but you may want to require users to confirm changes to their profile by performing an extra validation step with a [security key](sign-in-webauthn). +In some scenarios you may want to add an extra layer of security to perform certain actions or view certain data. For instance, you may wish to allow users to view their profile information after authenticating but you may want to require users to confirm changes to their profile by performing an extra validation step with a [security key](/products/auth/webauthn#add-a-security-key). -![overview-flow](/images/guides/auth/elevated-permissions/overview.png) +![overview-flow](/images/auth/elevated-permissions/overview.png) This is accomplished by adding the claim `x-hasura-auth-elevated: $user-id` to the access token in response to the extra security challenge. With this new claim in mind you can start writing permissions that require this extra step. @@ -15,7 +15,7 @@ It is important to keep in mind the claim is added to the access token so, for a # API Endpoints and SDK components -To implement this functionality [auth](/product/authentication) [0.26.0](https://github.com/nhost/hasura-auth/releases/tag/0.26.0) introduces the new endpoint [/elevate/webauthn](/reference/auth/elevate-webauthn). This endpoint works the same way as [/signin/webauthn](/reference/auth/sign-in-using-email-via-fido2-webauthn-authentication) but it requires an Authorization header with a valid token to add the elevated claim to. +To implement this functionality [auth](/products/auth/overview) [0.26.0](https://github.com/nhost/hasura-auth/releases/tag/0.26.0) introduces the new endpoint [/elevate/webauthn](/reference/auth/post-elevate-webauthn). This endpoint works the same way as [/signin/webauthn](/reference/auth/post-signin-webauthn) but it requires an Authorization header with a valid token to add the elevated claim to. In addition, a few methods and components have also been added to simplify it's usage: @@ -28,21 +28,21 @@ In addition, a few methods and components have also been added to simplify it's You can use the claim `x-hasura-auth-elevated` in exactly the same way you would normally use `X-Hasura-User-Id` for added security. For instance, the following permissions would allow users to see their data without any extra security: -![example-select-permissions](/images/guides/auth/elevated-permissions/select.png) +![example-select-permissions](/images/auth/elevated-permissions/select.png) While the following permissions would require them first to elevate their access in order to update them: -![example-update-permissions](/images/guides/auth/elevated-permissions/update.png) +![example-update-permissions](/images/auth/elevated-permissions/update.png) # Protecting Auth data Some user information needs to be changed via hasura-auth's API rather than via graphql mutations. These endpoints are: -- [/user/password](/reference/auth/set-a-new-password) for changing passwords -- [/user/email/change](/reference/auth/change-the-current-users-email) for changing emails -- [/user/mfa](/reference/auth/activatedeactivate-multi-factor-authentication) for enabling or disabling MFA -- [/user/webauthn/add](/reference/auth/initialize-adding-of-a-new-webauthn-security-key-device-browser) for adding security keys -- [/pat](/reference/auth/create-personal-access-token-pat) for PAT creation +- [/user/password](/reference/auth/post-user-password) for changing passwords +- [/user/email/change](/reference/auth/post-user-email-change) for changing emails +- [/user/mfa](/reference/auth/post-user-mfa) for enabling or disabling MFA +- [/user/webauthn/add](/reference/auth/post-user-webauthn-add) for adding security keys +- [/pat](/reference/auth/post-pat) for PAT creation To protect these endpoints and require the elevated claim you can use the following configuration option: @@ -71,22 +71,22 @@ To demonstrate this functionality we have implemented them in our [react-apollo] To demonstrate how the elevated claim can work for permissions you can check the "Secret Notes" example. In this example, we are allowing users to see their secret notes by giving the `select` permissions `notes.user_id eq X-Hasura-User-Id` -![view secret notes](/images/guides/auth/elevated-permissions/secret_notes_view.png) +![view secret notes](/images/auth/elevated-permissions/secret_notes_view.png) However, we are requiring elevated permissions to `insert`, `update` and `delete` with the permissions `notes.user_id eq x-hasura-auth-elevated`. In our example we automatically initiate the elevation process if the claim isn't already present: -![add secret notes](/images/guides/auth/elevated-permissions/secret_notes_add.png) +![add secret notes](/images/auth/elevated-permissions/secret_notes_add.png) Note that after elevating permissions the secret note is added and the elevated claim persists until there is a token refreshed. -![after adding secret notes](/images/guides/auth/elevated-permissions/secret_notes_added.png) +![after adding secret notes](/images/auth/elevated-permissions/secret_notes_added.png) ### Updating profile information In addition, to demonstrate the new `auth.elevatedPrivileges` setting, we have set it to `required` in this example requiring elevated access to perform certain changes. For instance, if you try to change your password you will first have to elevate your access: -![change password](/images/guides/auth/elevated-permissions/password.png) +![change password](/images/auth/elevated-permissions/password.png) After elevating access the password is changed: -![password changed](/images/guides/auth/elevated-permissions/password_changed.png) +![password changed](/images/auth/elevated-permissions/password_changed.png) diff --git a/docs/guides/auth/email-templates.mdx b/docs/products/auth/email-templates.mdx similarity index 97% rename from docs/guides/auth/email-templates.mdx rename to docs/products/auth/email-templates.mdx index 09016ae8e..5ed1e43f5 100644 --- a/docs/guides/auth/email-templates.mdx +++ b/docs/products/auth/email-templates.mdx @@ -10,9 +10,7 @@ Nhost Auth sends out transactional emails as part of certain authentication work ## Customize your emails -Email Templates are deployed as part of a [Deployment](/platform/deployments) so your project must be connected to a Git repository. - -Learn how to connect a [Git Repository](/platform/git) to your project +Email Templates are deployed as part of a [Deployment](/platform/cloud/git) so your project must be connected to a Git repository. ### File Structure diff --git a/docs/products/auth/gravatar.mdx b/docs/products/auth/gravatar.mdx new file mode 100644 index 000000000..340070e14 --- /dev/null +++ b/docs/products/auth/gravatar.mdx @@ -0,0 +1,39 @@ +--- +title: Gravatar +description: Fetch user profiles automatically from gravatar +icon: image-portrait +--- + +## Gravatar + +If Gravatar is enabled, Nhost Auth will use the user's email address to fetch their Gravatar profile picture. If the user doesn't have a Gravatar profile picture, a default image will be used. + +There are two options for Gravatars. + + + + +If the user doesn't have a Gravatar profile picture, a default image will be used. You can choose between the following options: + +- `404`: Do not load any image if none is associated with the email hash, instead return an HTTP 404 (File Not Found) response. +- `mp`: (mystery-person) a simple, cartoon-style silhouetted outline of a person (does not vary by email hash). +- `identicon`: a geometric pattern based on an email hash. +- `monsterid`: a generated 'monster' with different colors, faces, etc. +- `wavatar`: generated faces with differing features and backgrounds. +- `retro`: awesome generated, 8-bit arcade-style pixelated faces. +- `robohash`: a generated robot with different colors, faces, etc. +- `blank`: a transparent PNG image. + + + + + +Gravatar images are rated by default. You can choose between the following options: + +- `g`: suitable for display on all websites with any audience type. +- `pg`: may contain rude gestures, provocatively dressed individuals, lesser swear words or mild violence. +- `r`: may contain such things as harsh profanity, intense violence, nudity, or hard drug use. +- `x`: may contain hardcore sexual imagery or extremely disturbing violence. + + + diff --git a/docs/guides/auth/sign-in-idtokens.mdx b/docs/products/auth/idtokens.mdx similarity index 91% rename from docs/guides/auth/sign-in-idtokens.mdx rename to docs/products/auth/idtokens.mdx index 2832b412a..3bfd9eb02 100644 --- a/docs/guides/auth/sign-in-idtokens.mdx +++ b/docs/products/auth/idtokens.mdx @@ -13,7 +13,7 @@ ID tokens serve as a secure proof that a user has already been authenticated by ## Usage -To use ID tokens, you need to configure supported identity providers (currently [apple](/guides/auth/social/sign-in-apple) and [google](/guides/auth/social/sign-in-google)) and make sure the `audience` is set correctly. +To use ID tokens, you need to configure supported identity providers (currently [apple](/products/auth/social/sign-in-apple) and [google](/products/auth/social/sign-in-google)) and make sure the `audience` is set correctly. ### Sign in @@ -30,11 +30,7 @@ Once everything is configured you can use an ID token to authenticate users with ``` - -{' '} See [react docs](/reference/react/use-sign-in-id-token) for details - -{' '} See [vue docs](/reference/react/use-sign-in-id-token) for details @@ -47,7 +43,7 @@ Once everything is configured you can use an ID token to authenticate users with ### Link Provider to existing user -Similarly to the [Social Connect](/guides/auth/social-connect) feature, you can link an identity provider to an existing user: +Similarly to the [Social Connect](/products/auth/social-connect) feature, you can link an identity provider to an existing user: @@ -58,16 +54,9 @@ Similarly to the [Social Connect](/guides/auth/social-connect) feature, you can nonce: '...' // Optional: The nonce used during token generation. }) ``` - -{' '} Keep in mind this is an authenticated method so the user must be logged in already. - - -{' '} See [react docs](/reference/react/use-link-id-token) for details - -{' '} See [vue docs](/reference/vue/use-link-id-token) for details diff --git a/docs/guides/auth/jwt.mdx b/docs/products/auth/jwt.mdx similarity index 96% rename from docs/guides/auth/jwt.mdx rename to docs/products/auth/jwt.mdx index 35e4b135a..d719ef1fe 100644 --- a/docs/guides/auth/jwt.mdx +++ b/docs/products/auth/jwt.mdx @@ -55,12 +55,12 @@ key = 'f03d5f5a0ed055e3fcbc0a3639405aca0511e6abe6d60e40d1fff610c6248f2a' ``` -![Symmetric Key Configuration](/images/guides/auth/jwt/symmetric.png) +![Symmetric Key Configuration](/images/auth/jwt/symmetric.png) -We recommend using a [secret](/platform/secrets) to configure the key. +We recommend using a [secret](/platform/cloud/secrets) to configure the key. In addition to `HS256`, you can also use `HS384` and `HS512` for extra security. To quickly generate a key, you can use the following command: @@ -113,7 +113,7 @@ s6fJmz3ZeArPI8KFSI3Q2xqm ``` -![Asymmetric Key Configuration](/images/guides/auth/jwt/asymmetric.png) +![Asymmetric Key Configuration](/images/auth/jwt/asymmetric.png) @@ -180,7 +180,7 @@ jwIDAQAB ``` -![External signing](/images/guides/auth/jwt/external.png) +![External signing](/images/auth/jwt/external.png) @@ -312,4 +312,4 @@ export default (req: Request, res: Response) => { ## Custom Claims -You can attach extra information to your JWTs in the form of custom claims. These claims can be used for authorization purposes in your application. For more details on how to add custom claims to your JWTs and how to use them, see the [Permissions Variables](/guides/api/permissions#permission-variables) documentation. +You can attach extra information to your JWTs in the form of custom claims. These claims can be used for authorization purposes in your application. For more details on how to add custom claims to your JWTs and how to use them, see the [Permissions Variables](/products/graphql/permissions#permission-variables) documentation. diff --git a/docs/products/auth/overview.mdx b/docs/products/auth/overview.mdx new file mode 100644 index 000000000..16373ece6 --- /dev/null +++ b/docs/products/auth/overview.mdx @@ -0,0 +1,49 @@ +--- +title: Overview +description: Learn about Nhost Auth +icon: hand-wave +--- + +Nhost Auth is a ready-to-use authentication service seamlessly integrated with the [GraphQL API](/products/graphql) and its [Permission System](/products/graphql/permissions) from Hasura. This allows you to easily add user authentication to your application without having to build and maintain your own authentication system. + +## Supported Methods + + + + + + + + + + + + + + + + + + +### OAuth Providers + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/products/auth/restricting_emails_and_domains.mdx b/docs/products/auth/restricting_emails_and_domains.mdx new file mode 100644 index 000000000..43cadc330 --- /dev/null +++ b/docs/products/auth/restricting_emails_and_domains.mdx @@ -0,0 +1,16 @@ +--- +title: Restricting Emails & Domains +icon: ban +--- + +## Allowed Emails and Domains + +Allowed Emails and Domains are used to restrict what email adresses and domains are valid when signing up and signing in. + +If both allowed emails and allowed domains are set a user can only sign up if their email address matches one of the allowed emails or one of the allowed domains. + +## Blocked Emails and Domains + +Blocked Emails and Domains are used to block specific email addresses and domains from signing up and signing in. + +Note that even if a user's email address matches any allowed email or domain, they will still be blocked if their email address matches any blocked email or domain. diff --git a/docs/guides/auth/sign-in-email-password.mdx b/docs/products/auth/sign-in-email-password.mdx similarity index 97% rename from docs/guides/auth/sign-in-email-password.mdx rename to docs/products/auth/sign-in-email-password.mdx index ab1b67b8e..f10ff7db4 100644 --- a/docs/guides/auth/sign-in-email-password.mdx +++ b/docs/products/auth/sign-in-email-password.mdx @@ -86,4 +86,4 @@ await nhost.auth.sendVerificationEmail( -It is possible to customize these automatic emails, learn how to [here](/guides/auth/email-templates) +It is possible to customize these automatic emails, learn how to [here](/products/auth/email-templates) diff --git a/docs/guides/auth/sign-in-magic-link.mdx b/docs/products/auth/sign-in-magic-link.mdx similarity index 94% rename from docs/guides/auth/sign-in-magic-link.mdx rename to docs/products/auth/sign-in-magic-link.mdx index a43ac7798..294b8459d 100644 --- a/docs/guides/auth/sign-in-magic-link.mdx +++ b/docs/products/auth/sign-in-magic-link.mdx @@ -34,5 +34,5 @@ await nhost.auth.signIn( Users who have signed up with email and password can also sign in with a Magic Link -It is possible to customize the email with the Magic Link, learn how to [here](/guides/auth/email-templates) +It is possible to customize the email with the Magic Link, learn how to [here](/products/auth/email-templates) diff --git a/docs/guides/auth/sign-in-otp.mdx b/docs/products/auth/sign-in-otp.mdx similarity index 96% rename from docs/guides/auth/sign-in-otp.mdx rename to docs/products/auth/sign-in-otp.mdx index 76d5d670d..b918ae627 100644 --- a/docs/guides/auth/sign-in-otp.mdx +++ b/docs/products/auth/sign-in-otp.mdx @@ -17,7 +17,7 @@ To use One-Time Passwords, they need to be enabled in the configuration: ``` - ![sign-in otp](/images/guides/auth/sign-in-otp.png) + ![sign-in otp](/images/auth/sign-in-otp.png) diff --git a/docs/guides/auth/sign-in-phone-number.mdx b/docs/products/auth/sign-in-sms-otp.mdx similarity index 100% rename from docs/guides/auth/sign-in-phone-number.mdx rename to docs/products/auth/sign-in-sms-otp.mdx diff --git a/docs/guides/auth/social-connect.mdx b/docs/products/auth/social-connect.mdx similarity index 95% rename from docs/guides/auth/social-connect.mdx rename to docs/products/auth/social-connect.mdx index d6ebb64f8..d775297e4 100644 --- a/docs/guides/auth/social-connect.mdx +++ b/docs/products/auth/social-connect.mdx @@ -25,7 +25,7 @@ Keep in mind that as we need a `JWT` the user needs to be logged in. If you want to allow your users to view and/or delete social provider authentication mechanisms, you can provide the necessary permissions to the table `auth.user_providers` (i.e. `select` and/or `delete`) and then use the appropriate GraphQL query. For example, the following permissions should allow users to list their own social providers: -![social connect permissions](/images/guides/auth/social-connect-permissions.png) +![social connect permissions](/images/auth/social-connect-permissions.png) Using the following GraphQL query: diff --git a/docs/guides/auth/social/sign-in-apple.mdx b/docs/products/auth/social/sign-in-apple.mdx similarity index 97% rename from docs/guides/auth/social/sign-in-apple.mdx rename to docs/products/auth/social/sign-in-apple.mdx index 8e82218b5..a311eda44 100644 --- a/docs/guides/auth/social/sign-in-apple.mdx +++ b/docs/products/auth/social/sign-in-apple.mdx @@ -7,7 +7,7 @@ icon: apple

Apple Sign In Preview @@ -95,5 +95,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-azuread.mdx b/docs/products/auth/social/sign-in-azuread.mdx similarity index 95% rename from docs/guides/auth/social/sign-in-azuread.mdx rename to docs/products/auth/social/sign-in-azuread.mdx index f25173e2a..6c63217d7 100644 --- a/docs/guides/auth/social/sign-in-azuread.mdx +++ b/docs/products/auth/social/sign-in-azuread.mdx @@ -43,5 +43,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-discord.mdx b/docs/products/auth/social/sign-in-discord.mdx similarity index 92% rename from docs/guides/auth/social/sign-in-discord.mdx rename to docs/products/auth/social/sign-in-discord.mdx index 86382d342..ed36b4de9 100644 --- a/docs/guides/auth/social/sign-in-discord.mdx +++ b/docs/products/auth/social/sign-in-discord.mdx @@ -8,7 +8,7 @@ icon: discord

Discord Sign In Preview @@ -43,5 +43,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-facebook.mdx b/docs/products/auth/social/sign-in-facebook.mdx similarity index 95% rename from docs/guides/auth/social/sign-in-facebook.mdx rename to docs/products/auth/social/sign-in-facebook.mdx index 4bfc54ccc..5c11b1a60 100644 --- a/docs/guides/auth/social/sign-in-facebook.mdx +++ b/docs/products/auth/social/sign-in-facebook.mdx @@ -8,7 +8,7 @@ icon: facebook

Facebook Sign In Preview @@ -66,5 +66,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-github.mdx b/docs/products/auth/social/sign-in-github.mdx similarity index 93% rename from docs/guides/auth/social/sign-in-github.mdx rename to docs/products/auth/social/sign-in-github.mdx index bbe6c0582..2a654c7c7 100644 --- a/docs/guides/auth/social/sign-in-github.mdx +++ b/docs/products/auth/social/sign-in-github.mdx @@ -8,7 +8,7 @@ icon: github

GitHub Sign In Preview @@ -51,5 +51,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-google.mdx b/docs/products/auth/social/sign-in-google.mdx similarity index 95% rename from docs/guides/auth/social/sign-in-google.mdx rename to docs/products/auth/social/sign-in-google.mdx index 682d0a1ef..cbce57818 100644 --- a/docs/guides/auth/social/sign-in-google.mdx +++ b/docs/products/auth/social/sign-in-google.mdx @@ -7,7 +7,7 @@ icon: google

Google Sign In Preview @@ -75,5 +75,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-linkedin.mdx b/docs/products/auth/social/sign-in-linkedin.mdx similarity index 95% rename from docs/guides/auth/social/sign-in-linkedin.mdx rename to docs/products/auth/social/sign-in-linkedin.mdx index 221e9ca3b..60ab37ac0 100644 --- a/docs/guides/auth/social/sign-in-linkedin.mdx +++ b/docs/products/auth/social/sign-in-linkedin.mdx @@ -8,7 +8,7 @@ icon: linkedin

LinkedIn Sign In Preview @@ -66,5 +66,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-spotify.mdx b/docs/products/auth/social/sign-in-spotify.mdx similarity index 93% rename from docs/guides/auth/social/sign-in-spotify.mdx rename to docs/products/auth/social/sign-in-spotify.mdx index 1cc39a1a9..2d64856bf 100644 --- a/docs/guides/auth/social/sign-in-spotify.mdx +++ b/docs/products/auth/social/sign-in-spotify.mdx @@ -8,7 +8,7 @@ icon: spotify

Spotify Sign In Preview @@ -51,5 +51,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-twitch.mdx b/docs/products/auth/social/sign-in-twitch.mdx similarity index 93% rename from docs/guides/auth/social/sign-in-twitch.mdx rename to docs/products/auth/social/sign-in-twitch.mdx index 45f7d3073..f63e84413 100644 --- a/docs/guides/auth/social/sign-in-twitch.mdx +++ b/docs/products/auth/social/sign-in-twitch.mdx @@ -8,7 +8,7 @@ icon: twitch

Twitch Sign In Preview @@ -45,5 +45,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/social/sign-in-workos.mdx b/docs/products/auth/social/sign-in-workos.mdx similarity index 95% rename from docs/guides/auth/social/sign-in-workos.mdx rename to docs/products/auth/social/sign-in-workos.mdx index c138d534a..fcf4413b0 100644 --- a/docs/guides/auth/social/sign-in-workos.mdx +++ b/docs/products/auth/social/sign-in-workos.mdx @@ -8,7 +8,7 @@ icon: workos

WorkOS Sign In Preview @@ -65,5 +65,5 @@ nhost.auth.signIn({ ``` -To use your own domain for the callback URL refer to the [custom domains](/platform/custom-domains) documentation. +To use your own domain for the callback URL refer to the [custom domains](/platform/cloud/custom-domains) documentation. diff --git a/docs/guides/auth/users.mdx b/docs/products/auth/users.mdx similarity index 96% rename from docs/guides/auth/users.mdx rename to docs/products/auth/users.mdx index 7d363b175..c4faad35a 100644 --- a/docs/guides/auth/users.mdx +++ b/docs/products/auth/users.mdx @@ -6,7 +6,7 @@ icon: users ## Creating Users -Users are created using the sign-up or sign-in flows described under [Supported Methods](/guides/auth/overview#supported-methods). +Users are created using the sign-up or sign-in flows described under [Supported Methods](/products/auth/overview#supported-methods). - **Avoid** creating users directly via GraphQL or the database, unless you are [importing users](#import-users) from an external system. - **Avoid** modifying the database schema for the `auth.users` table. @@ -19,7 +19,7 @@ You're allowed to: ## Roles -Each user has one **default role** and a list of **allowed roles**. These roles are used to resolve permissions for requests to [GraphQL](/guides/api/permissions) and [Storage](/guides/storage/overview#permissions). +Each user has one **default role** and a list of **allowed roles**. These roles are used to resolve permissions for requests to [GraphQL](/products/graphql/permissions) and [Storage](/products/storage/overview#permissions). When the user makes a request, only one role is used to resolve permissions. The default role is used if no role is explicitly specified. Users can only make requests using the default role or one of the allowed roles. diff --git a/docs/guides/auth/sign-in-webauthn.mdx b/docs/products/auth/webauthn.mdx similarity index 100% rename from docs/guides/auth/sign-in-webauthn.mdx rename to docs/products/auth/webauthn.mdx diff --git a/docs/guides/database/access.mdx b/docs/products/database/access.mdx similarity index 72% rename from docs/guides/database/access.mdx rename to docs/products/database/access.mdx index 62dab0a5a..d619c577b 100644 --- a/docs/guides/database/access.mdx +++ b/docs/products/database/access.mdx @@ -9,11 +9,11 @@ In most cases you will not need to access the database directly, choosing to int # Nhost Run -You can find details on how to connect to the database from an [Nhost Run](/product/run) service [here](/guides/run/networking#connecting-to-the-nhost-stack). If you don't know the password you can set a new password in the dashboard: +You can find details on how to connect to the database from an [Nhost Run](/products/run/overview) service [here](/products/run/networking#connecting-to-the-nhost-stack). If you don't know the password you can set a new password in the dashboard: **Project Dashboard -> Settings -> Database** -![reset password](/images/guides/database/access/reset.png) +![reset password](/images/database/access/reset.png) # Public Access @@ -23,7 +23,7 @@ For security reasons, by default your database won't be accessible online. If yo **Project Dashboard -> Settings -> Database** - ![public access](/images/guides/database/access/public.png) + ![public access](/images/database/access/public.png) @@ -40,4 +40,4 @@ Public access to your database utilizes [pgbouncer](http://www.pgbouncer.org). A # Functions -[Functions](/product/functions) run on a separate network, which means in order to access the database you will first need to [make it public](#public-access). +[Functions](/products/functions/overview) run on a separate network, which means in order to access the database you will first need to [make it public](#public-access). diff --git a/docs/guides/database/backups.mdx b/docs/products/database/backups.mdx similarity index 95% rename from docs/guides/database/backups.mdx rename to docs/products/database/backups.mdx index cc40c0ab2..f0d5613b6 100644 --- a/docs/guides/database/backups.mdx +++ b/docs/products/database/backups.mdx @@ -135,7 +135,7 @@ You can configure Point-in-Time Recovery via the dashboard or using your `nhost. 1. Go to the [Backups](https://app.nhost.io/orgs/_/projects/_/settings/database) section in your project's dashboard. 2. Enable "Point-in-Time Recovery" - ![Point-in-Time Recovery](/images/guides/backups/pitr-settings.png) + ![Point-in-Time Recovery](/images/database/backups/pitr-settings.png) @@ -157,7 +157,7 @@ To restore to a specific point in time: Go to the [Backups](https://app.nhost.io/orgs/_/projects/_/backups) section in your project's dashboard and click on "Start Restore" - ![Point-in-Time Recovery](/images/guides/backups/pitr-restore-1.png) + ![Point-in-Time Recovery](/images/database/backups/pitr-restore-1.png) @@ -165,7 +165,7 @@ To restore to a specific point in time: Here you can click on the calendar icon to select the restore time: - ![Point-in-Time Recovery](/images/guides/backups/pitr-restore-2.png) + ![Point-in-Time Recovery](/images/database/backups/pitr-restore-2.png) @@ -173,7 +173,7 @@ To restore to a specific point in time: Select the time you want to restore to and click on "Select". Be mindfule of timezones. - ![Point-in-Time Recovery](/images/guides/backups/pitr-restore-3.png) + ![Point-in-Time Recovery](/images/database/backups/pitr-restore-3.png) @@ -181,7 +181,7 @@ To restore to a specific point in time: Finally, acknowledge the warning and click on "Restore" - ![Point-in-Time Recovery](/images/guides/backups/pitr-restore-4.png) + ![Point-in-Time Recovery](/images/database/backups/pitr-restore-4.png) This will trigger the restore in the background, you can now proceed to the logs and filter by "Service: Backup Jobs" to see the progress. @@ -214,7 +214,7 @@ You can restore to a specific point in time on a different project in our cloud Finally, go to the new project's [Backups](https://app.nhost.io/orgs/_/projects/_/backups) section, navigate to "Import Backup" and select the original project. After this the steps are the same as restoring to a specific point in time on the same project. - ![Point-in-Time Recovery import](/images/guides/backups/pitr-import-1.png) + ![Point-in-Time Recovery import](/images/database/backups/pitr-import-1.png) diff --git a/docs/guides/database/configuring-postgres.mdx b/docs/products/database/configuring-postgres.mdx similarity index 100% rename from docs/guides/database/configuring-postgres.mdx rename to docs/products/database/configuring-postgres.mdx diff --git a/docs/guides/database/extensions.mdx b/docs/products/database/extensions.mdx similarity index 100% rename from docs/guides/database/extensions.mdx rename to docs/products/database/extensions.mdx diff --git a/docs/product/database.mdx b/docs/products/database/overview.mdx similarity index 69% rename from docs/product/database.mdx rename to docs/products/database/overview.mdx index 1517380fa..710d2dcc7 100644 --- a/docs/product/database.mdx +++ b/docs/products/database/overview.mdx @@ -1,10 +1,10 @@ --- -title: Database +title: Overview description: Dedicated PostgreSQL Instance icon: database --- -All Nhost projects have their own dedicated PostgreSQL instance, an advanced, open-source object-relational database system known for its robustness, durability, and performance. +All Nhost projects have their own dedicated PostgreSQL instance, an advanced, open-source object-relational database system known for its robustness, durability, and performance. With a history of over 30 years of active development, PostgreSQL offers a versatile solution for managing data in a wide range of applications. @@ -12,15 +12,15 @@ With a history of over 30 years of active development, PostgreSQL offers a versa Manage your database with the Nhost Dashboard. Create tables, relationships, manage data, or run arbitrary SQL, with a simple but powerful UI. -![Manage database](/images/product/database/dashboard-database.png) +![Manage database](/images/products/database/dashboard-database.png) ### Extensions -Extensions are one of Postgres' best features because they allow us to extend the functionality of our databases. +Extensions are one of Postgres' best features because they allow us to extend the functionality of our databases. -Nhost supports a bunch of extensions that you can install for functionalities such as full-text search capabilities with pgvector or geographic object support with PostGIS. +Nhost supports a bunch of extensions that you can install for functionalities such as full-text search capabilities with pgvector or geographic object support with PostGIS. -You can find the complete list of supported extensions [here](/guides/database/extensions). +You can find the complete list of supported extensions [here](/products/database/extensions). ### Additional Features @@ -31,11 +31,10 @@ You can find the complete list of supported extensions [here](/guides/database/e ### Additional Resources - + Learn how to configure Nhost PostgreSQL. - + Learn about extensions. - diff --git a/docs/guides/database/performance.mdx b/docs/products/database/performance.mdx similarity index 84% rename from docs/guides/database/performance.mdx rename to docs/products/database/performance.mdx index 6e0b1eb38..5897b8e31 100644 --- a/docs/guides/database/performance.mdx +++ b/docs/products/database/performance.mdx @@ -8,7 +8,7 @@ Ensuring a healthy and performant PostgreSQL service is crucial as it directly i In case your Postgres service is not meeting your performance expectations, you can explore the following options: -1. Consider upgrading your [dedicated compute](/platform/compute-resources#dedicated-compute) resources to provide more processing power and memory to the Postgres server. +1. Consider upgrading your [dedicated compute](/platform/cloud/compute-resources#dedicated-compute) resources to provide more processing power and memory to the Postgres server. 2. Fine-tune the configuration parameters of Postgres to optimize its performance. Adjust settings such as `shared_buffers`, `work_mem`, and `effective_cache_size` to better align with your workload and server resources. @@ -16,7 +16,7 @@ In case your Postgres service is not meeting your performance expectations, you 4. Evaluate the usage of indexes in your database. Identify queries that could benefit from additional indexes and strategically add them to improve query performance. -5. If the problem is related to IOPS, consider increasing [disk performance](/platform/compute-resources#disk-performance). +5. If the problem is related to IOPS, consider increasing [disk performance](/platform/cloud/compute-resources#disk-performance). By implementing these steps, you can effectively address performance concerns and enhance the overall performance of your Postgres service. @@ -26,11 +26,11 @@ Before trying anything else, always upgrade to our latest postgres image first. ## Upgrade to dedicated compute -Increasing CPU and memory is the simplest way to address performance issues. You can read more about compute resources [here](/platform/compute-resources#dedicated-compute). +Increasing CPU and memory is the simplest way to address performance issues. You can read more about compute resources [here](/platform/cloud/compute-resources#dedicated-compute). ## Fine-tune configuration parameters -When optimizing your Postgres setup, you can consider adjusting various Postgres settings. You can find a list of these parameters [here](/guides/database/configuring-postgres). Keep in mind that the optimal values for these parameters will depend on factors such as available resources, workload, and data distribution. +When optimizing your Postgres setup, you can consider adjusting various Postgres settings. You can find a list of these parameters [here](/products/database/configuring-postgres). Keep in mind that the optimal values for these parameters will depend on factors such as available resources, workload, and data distribution. To help you get started, you can use [pgtune](https://pgtune.leopard.in.ua) as a reference tool. Pgtune can generate recommended configuration settings based on your system specifications. By providing information about your system, it can suggest parameter values that may be a good starting point for optimization. @@ -42,24 +42,24 @@ Monitoring slow queries is a highly effective method for tackling performance is ### pghero -[PgHero](https://github.com/ankane/pghero) is one of such tools you can use to idenfity and address slow queries. You can easily run pghero alongside your postgres with [Nhost Run](/product/run): +[PgHero](https://github.com/ankane/pghero) is one of such tools you can use to idenfity and address slow queries. You can easily run pghero alongside your postgres with [Nhost Run](/products/run/overview): -1. First, make sure the extension [pg_stat_statements](/guides/database/extensions#pg-stat-statements) is enabled. +1. First, make sure the extension [pg_stat_statements](/products/database/extensions#pg-stat-statements) is enabled. 2. Click on this [one-click install link](https://app.nhost.io:/run-one-click-install?config=eyJuYW1lIjoicGdoZXJvIiwiaW1hZ2UiOnsiaW1hZ2UiOiJkb2NrZXIuaW8vYW5rYW5lL3BnaGVybzpsYXRlc3QifSwiY29tbWFuZCI6W10sInJlc291cmNlcyI6eyJjb21wdXRlIjp7ImNwdSI6MTI1LCJtZW1vcnkiOjI1Nn0sInN0b3JhZ2UiOltdLCJyZXBsaWNhcyI6MX0sImVudmlyb25tZW50IjpbeyJuYW1lIjoiREFUQUJBU0VfVVJMIiwidmFsdWUiOiJwb3N0Z3JlczovL3Bvc3RncmVzOltQQVNTV09SRF1AcG9zdGdyZXMtc2VydmljZTo1NDMyL1tTVUJET01BSU5dP3NzbG1vZGU9ZGlzYWJsZSJ9LHsibmFtZSI6IlBHSEVST19VU0VSTkFNRSIsInZhbHVlIjoiW1VTRVJdIn0seyJuYW1lIjoiUEdIRVJPX1BBU1NXT1JEIiwidmFsdWUiOiJbUEFTU1dPUkRdIn1dLCJwb3J0cyI6W3sicG9ydCI6ODA4MCwidHlwZSI6Imh0dHAiLCJwdWJsaXNoIjp0cnVlfV19) 3. Select your project: - ![select your project](/images/guides/database/pghero_01.png) + ![select your project](/images/database/pghero_01.png) 4. Replace the placeholders with your postgres password, subdomain and a user and password to protect your pghero service. Finally, click on create. - ![fill run service details](/images/guides/database/pghero_02.png) + ![fill run service details](/images/database/pghero_02.png) 5. After confirming the service, copy the URL: - ![run service details](/images/guides/database/pghero_03.png) + ![run service details](/images/database/pghero_03.png) 6. Finally, you can open the link you just copied to access pghero: -![pghero](/images/guides/database/pghero_04.png) +![pghero](/images/database/pghero_04.png) When you create a new service, it can take a few minutes for the DNS (Domain @@ -78,13 +78,13 @@ There are tools you can use to help analyze your workload and detect missing ind ### pghero -[PgHero](https://github.com/ankane/pghero), in addition to help with slow queries, can also help finding missing and duplicate indexes. See previous section on how to deploy pghero with [Nhost Run](/product/run). +[PgHero](https://github.com/ankane/pghero), in addition to help with slow queries, can also help finding missing and duplicate indexes. See previous section on how to deploy pghero with [Nhost Run](/products/run/overview). ### dexter [Dexter](https://github.com/ankane/dexter) can leverage both [pg_stat_statements](https://www.postgresql.org/docs/14/pgstatstatements.html) and [hypopg](https://hypopg.readthedocs.io/en/rel1_stable/) to find and evaluate indexes. You can run dexter directly from your machine: -1. Enable [hypopg](/database/extensions#hypopg) +1. Enable [hypopg](/products/database/extensions#hypopg) 2. Execute the command `docker run --rm -it ankane/dexter [POSTGRES_CONN_STRING] --pg-stat-statements` ``` diff --git a/docs/guides/database/upgrade-major.mdx b/docs/products/database/upgrade-major.mdx similarity index 89% rename from docs/guides/database/upgrade-major.mdx rename to docs/products/database/upgrade-major.mdx index 546db4dd3..541ae6719 100644 --- a/docs/guides/database/upgrade-major.mdx +++ b/docs/products/database/upgrade-major.mdx @@ -12,7 +12,7 @@ This document only applies when changing Postgres major version (i.e. from 14 to While new cloud projects ship with Postgres 14 by default, versions 15, 16, and 17 are also supported. To change your major version you can go to Settings -> Database, select the new major version and start the process: -![dashboard settings](/images/guides/database/upgrade_01.png) +![dashboard settings](/images/database/upgrade_01.png) Keep in mind that the upgrade process requires downtime. Pay attention to all the information provided to you in the settings page. @@ -20,11 +20,11 @@ Keep in mind that the upgrade process requires downtime. Pay attention to all th After starting the process you can follow it on the same page: -![logs](/images/guides/database/upgrade_02.png) +![logs](/images/database/upgrade_02.png) Finally, you can confirm the upgrade by executing the SQL query `SELECT version();` -![select version()](/images/guides/database/upgrade_03.png) +![select version()](/images/database/upgrade_03.png) ## Projects with connected repos diff --git a/docs/guides/functions/overview.mdx b/docs/products/functions/getting-started.mdx similarity index 87% rename from docs/guides/functions/overview.mdx rename to docs/products/functions/getting-started.mdx index 40a21b6c3..c748fd6c8 100644 --- a/docs/guides/functions/overview.mdx +++ b/docs/products/functions/getting-started.mdx @@ -1,10 +1,10 @@ --- -title: Overview +title: Getting Started description: Learn how to use Nhost Functions icon: play --- -All you have to do is throw your `.js` and `.ts` files inside of the `./functions` folder of your project and Nhost takes care of deploying your functions as part of a [Deployment](/platform/deployments). +All you have to do is throw your `.js` and `.ts` files inside of the `./functions` folder of your project and Nhost takes care of deploying your functions as part of a [Deployment](/platform/cloud/git). To deploy Nhost Functions, your project needs to be connected to a GitHub repository. @@ -42,7 +42,7 @@ To get the `Request` and `Response` types you have to install the `@types/expres ### Endpoints -Functions are exposed through HTTP endpoints generated based on the contents of `./functions`: +Functions are exposed through HTTP endpoints generated based on the contents of `./functions`: | File | HTTP Endpoint | | --------------------------- | ------------------------------------------------------------------ | @@ -56,7 +56,7 @@ Functions are exposed through HTTP endpoints generated based on the contents of ### Environment Variables -[Environment variables](/platform/environment-variables) are available to your Functions. Both in production and when running Nhost locally using the [Nhost CLI](/development/cli). +[Environment variables](/platform/cloud/environment-variables) are available to your Functions. Both in production and when running Nhost locally using the [Nhost CLI](/platform/cli/local-development). The same environment variables that are used to configure event triggers can be used to authenticate functions. @@ -73,3 +73,4 @@ Functions are billed per GB-sec or GB-hour. 1 GB-hour is 3600 GB-seconds. + diff --git a/docs/product/functions.mdx b/docs/products/functions/overview.mdx similarity index 73% rename from docs/product/functions.mdx rename to docs/products/functions/overview.mdx index 5cb240294..c9a1ba38c 100644 --- a/docs/product/functions.mdx +++ b/docs/products/functions/overview.mdx @@ -1,5 +1,5 @@ --- -title: Functions +title: Overview description: Server-side code that works as API endpoints icon: code --- @@ -7,7 +7,7 @@ icon: code Nhost Functions are server-side JavaScript or TypeScript functions that are a great option for handling things like Event Triggers for async workflows, as well as to integrate with external service providers like Stripe or Slack. - For more sophisticated use-cases and control over the runtime, use [Nhost Run](/product/run). + For more sophisticated use-cases and control over the runtime, use [Nhost Run](/products/run/overview). ## Hello World @@ -23,6 +23,6 @@ Deploying functions is as easy as pushing your code! ## Additional Resources - - + + diff --git a/docs/guides/functions/runtimes.mdx b/docs/products/functions/runtimes.mdx similarity index 100% rename from docs/guides/functions/runtimes.mdx rename to docs/products/functions/runtimes.mdx diff --git a/docs/guides/api/advanced_features.mdx b/docs/products/graphql/advanced-features.mdx similarity index 95% rename from docs/guides/api/advanced_features.mdx rename to docs/products/graphql/advanced-features.mdx index 49ed99d54..2ebd07f45 100644 --- a/docs/guides/api/advanced_features.mdx +++ b/docs/products/graphql/advanced-features.mdx @@ -27,7 +27,7 @@ All of the added GraphQL metrics are broken down per: For instance, below you can see a screenshot from our own staging application: -![observability](/images/guides/graphql/observability.png) +![observability](/images/graphql/observability.png) ## Security Features @@ -90,4 +90,4 @@ will work just fine. In addition to the logs you already have a new service will show in your "Logs" tab; `hasura-graphi`. Here you can see security events in the case you have enabled any of the security features mentioned above. -![logs](/images/guides/graphql/logs.png) +![logs](/images/graphql/logs.png) diff --git a/docs/guides/api/configuring-hasura.mdx b/docs/products/graphql/configuring-hasura.mdx similarity index 100% rename from docs/guides/api/configuring-hasura.mdx rename to docs/products/graphql/configuring-hasura.mdx diff --git a/docs/product/graphql.mdx b/docs/products/graphql/overview.mdx similarity index 55% rename from docs/product/graphql.mdx rename to docs/products/graphql/overview.mdx index 72a4df0e8..853ef2683 100644 --- a/docs/product/graphql.mdx +++ b/docs/products/graphql/overview.mdx @@ -1,15 +1,25 @@ --- -title: Realtime GraphQL API +title: Overview description: Autogenerated APIs with Hasura -sidebarTitle: GraphQL API icon: webhook --- -Hasura is a powerful GraphQL engine that generates **realtime GraphQL APIs** from your Postgres database. +Hasura is a powerful GraphQL engine that generates **realtime GraphQL APIs** from your Postgres database. + +Hero Light +Hero Dark ## Instant APIs -Instant APIs on all your data. +Instant APIs on all your data. ```graphql query GetTodos { @@ -24,7 +34,7 @@ query GetTodos { Define granular, role-based permissions at the level of rows and columns. -You can read more about Hasura Permissions [here](/guides/api/permissions) +You can read more about Hasura Permissions [here](/products/graphql/permissions) ### GraphQL Clients @@ -40,11 +50,11 @@ The Nhost JavaScript SDK ships with a simple GraphQL client that you can use for ### Additional Resources - - Learn how to configure Hasura + + Learn how to configure Hasura - + Learn how permissions work diff --git a/docs/guides/api/permissions.mdx b/docs/products/graphql/permissions.mdx similarity index 90% rename from docs/guides/api/permissions.mdx rename to docs/products/graphql/permissions.mdx index 06bf823e2..bbc09d607 100644 --- a/docs/guides/api/permissions.mdx +++ b/docs/products/graphql/permissions.mdx @@ -9,21 +9,21 @@ icon: octagon-exclamation Permissions follow a **Zero Trust** model, meaning that by default, no role, with the exception of **admin**, has any access. Access has to be explicitly granted. -![Permission Variables](/images/guides/graphql/dashboard-permissions.png) +![Permission Variables](/images/graphql/dashboard-permissions.png) Imagine a table `todos` with `id`, `title`, and `user_id` columns. We want users to only have access to their own todos. This is how we would do it: -![Permission Variables](/images/guides/graphql/dashboard-permissions-select.png) +![Permission Variables](/images/graphql/dashboard-permissions-select.png) The permission above makes sure users can only select their own todos, because the value of `user_id` must be equal (`_eq`) to the authenticated user's ID (`x-hasura-user-id`). ## What is `x-hasura-user-id`? -`x-hasura-user-id` is a permission variable that is used to create permission rules. Permission Variables come from the session's [access token](/authentication/tokens#access-token). You can add [custom permission variables](#permission-variables) to create more complex permission rules unique to your project. +`x-hasura-user-id` is a permission variable that is used to create permission rules. Permission Variables come from the session's access token. You can add [custom permission variables](#permission-variables) to create more complex permission rules unique to your project. ## Permission Variables -You can add your own permission variables through the Nhost Dashboard under **Settings -> Roles and Permissions -> Permission Variables**. All variables are available in users' [access tokens](/authentication/tokens#access-token) which means you can use them when defining permissions for the GraphQL API. +You can add your own permission variables through the Nhost Dashboard under **Settings -> Roles and Permissions -> Permission Variables**. All variables are available in users' access tokens which means you can use them when defining permissions for the GraphQL API. ### Example @@ -113,7 +113,7 @@ GraphQL requests from unauthenticated users resolve permissions using the `publi ## Insert Permissions -![Insert permissions](/images/guides/todos-react-permissions-insert.png) +![Insert permissions](/images/tutorials/todos-react-permissions-insert.png) Here is a popular approach for insert permission for authenticated users. @@ -128,7 +128,7 @@ Now, authenticated users are allowed to insert todos. Users are allowed to add a Select, update, and delete permissions usually follow the same pattern. Here's an example of how to add select permissions: -![Select permissions](/images/guides/todos-react-permissions-select.png) +![Select permissions](/images/tutorials/todos-react-permissions-select.png) One of the most common permission requirements is that authenticated users should only be able to read their own data. This is how to do that: @@ -145,7 +145,7 @@ One of the most common permission requirements is that authenticated users shoul ### Permissions are slow -In certain situations, permission checks can cause significant delays. One way to identify this issue is by comparing the execution time of a GraphQL query when performed as an admin versus as a regular user. To resolve such cases, disabling the Just-in-Time (JIT) compilation in [Postgres](/database/settings) can be beneficial. +In certain situations, permission checks can cause significant delays. One way to identify this issue is by comparing the execution time of a GraphQL query when performed as an admin versus as a regular user. To resolve such cases, disabling the Just-in-Time (JIT) compilation in [Postgres](/products/database/configuring-postgres) can be beneficial. [Github issue](https://github.com/hasura/graphql-engine/issues/3672) diff --git a/docs/products/overview.mdx b/docs/products/overview.mdx new file mode 100644 index 000000000..e2dacf673 --- /dev/null +++ b/docs/products/overview.mdx @@ -0,0 +1,81 @@ +--- +title: Products +mode: "custom" +--- + + +

+
+ # Products +

Turn-key convenience plus extensibility

+ + [Explore products →](/products/database/overview) + +
+ +
+ # Nhost Stack + + + + Powerful PostgreSQL database with automated migrations and backups + + + Instant GraphQL API with comprehensive permissions system + + + + + + Secure authentication with multiple sign-in methods and social providers + + + Scalable file storage with permissions and CDN integration + + + + +# Nhost Extend + + + Deploy custom services alongside your Nhost project + + + Serverless functions for backend logic and API integrations + + + Integrate AI capabilities with auto-embeddings and assistants + + +
+
+ + diff --git a/docs/guides/run/cli-deployments.mdx b/docs/products/run/cli-deployments.mdx similarity index 100% rename from docs/guides/run/cli-deployments.mdx rename to docs/products/run/cli-deployments.mdx diff --git a/docs/guides/run/configuration-overlays.mdx b/docs/products/run/configuration-overlays.mdx similarity index 97% rename from docs/guides/run/configuration-overlays.mdx rename to docs/products/run/configuration-overlays.mdx index 28c04f96e..d7dbf34ba 100644 --- a/docs/guides/run/configuration-overlays.mdx +++ b/docs/products/run/configuration-overlays.mdx @@ -4,7 +4,7 @@ description: Learn how to use Configuration Overlays icon: circles-overlap --- -Before reading this document about how to use configuration overlays with Run services make sure you are familiar with the concept of [configuration overlays](/guides/cli/configuration-overlays) and how they work. +Before reading this document about how to use configuration overlays with Run services make sure you are familiar with the concept of [configuration overlays](/platform/cli/configuration-overlays) and how they work. Working with configuration overlays with Run services is very similar to working with them in the Nhost stack. There are a few differences though: diff --git a/docs/guides/run/configuration.mdx b/docs/products/run/configuration.mdx similarity index 74% rename from docs/guides/run/configuration.mdx rename to docs/products/run/configuration.mdx index 23d2cacb1..610fad625 100644 --- a/docs/guides/run/configuration.mdx +++ b/docs/products/run/configuration.mdx @@ -10,7 +10,7 @@ To configure a service you can use either the dashboard or a TOML configuration -![configuration](/images/guides/run/configuration.png) +![configuration](/images/run/configuration.png) @@ -46,11 +46,11 @@ capacity=1 -Head to [CLI & CI deployments](/guides/run/cli-deployments) for more details on how to deploy using a configuration file. +Head to [CLI & CI deployments](/platform/cloud/git) for more details on how to deploy using a configuration file. -The `name` of the service is used as an identifier and to generate URLs when exposing the service to the Internet. You can use any container image publicly available or you can push your own to the [Nhost registry](/guides/run/registry). +The `name` of the service is used as an identifier and to generate URLs when exposing the service to the Internet. You can use any container image publicly available or you can push your own to the [Nhost registry](/products/run/registry). All environment variables set here are exclusive to this service and will not be shared with other services or with the Nhost stack. If you are using a configuration file secrets are supported. -For more details about the `Ports` section head to [networking](/guides/run/networking). You can also head to [resources](/guides/run/resources) for more information about replicas, compute, and storage. +For more details about the `Ports` section head to [networking](/products/run/networking). You can also head to [resources](/products/run/resources) for more information about replicas, compute, and storage. diff --git a/docs/products/run/getting-started.mdx b/docs/products/run/getting-started.mdx new file mode 100644 index 000000000..0586ef482 --- /dev/null +++ b/docs/products/run/getting-started.mdx @@ -0,0 +1,35 @@ +--- +title: Getting Started +description: 'Learn how to get started with Run' +icon: play +--- + +To start with Nhost Run, you will need to create an Nhost project first. Then you can click on `Run` in the sidebar: + +![click on run](/images/run/getting_started_1.png) + +Then on `New Service`: + +![click on New Service](/images/run/getting_started_2.png) + +Now you can fill your [service configuration](/products/run/configuration): + +![click on New Service](/images/run/getting_started_3.png) + +As you configure the `Ports` section you can take note of the generated URL. You can find more information about this section under [Networking](/products/run/networking). + +![copy the URL](/images/run/getting_started_4.png) + +Once you are done configuring your service you can click on `Create`: + +![click on create](/images/run/getting_started_5.png) + +Now wait for the service to finish updating: + +![wait for the service to finish updating](/images/run/getting_started_6.png) + +Finally you can visit the URL you copied before: + +![visit url](/images/run/getting_started_7.png) + +And profit! diff --git a/docs/guides/run/health-checks.mdx b/docs/products/run/health-checks.mdx similarity index 100% rename from docs/guides/run/health-checks.mdx rename to docs/products/run/health-checks.mdx diff --git a/docs/guides/run/local-development.mdx b/docs/products/run/local-development.mdx similarity index 91% rename from docs/guides/run/local-development.mdx rename to docs/products/run/local-development.mdx index ce6143631..9cdb6d44f 100644 --- a/docs/guides/run/local-development.mdx +++ b/docs/products/run/local-development.mdx @@ -4,13 +4,13 @@ description: Developing with the Nhost stack and Run services locally icon: code --- -You can start Nhost Run services alongside your Nhost project very easily using the [Nhost CLI](/guides/cli/local-development) by simply using the option `--run-service path/to/run-service.toml[:overlay_name]`, for instance: +You can start Nhost Run services alongside your Nhost project very easily using the [Nhost CLI](/platform/cli/local-development) by simply using the option `--run-service path/to/run-service.toml[:overlay_name]`, for instance: -![cli](/images/guides/run/local_development_1.png) +![cli](/images/run/local_development_1.png) Let's first take a look at the commend above, the first thing you can notice is that multiple `--run-service` flags are supported. You can pass as many as you need and they all will be added to your project. You can also add or remove Run services to an already running instance by re-running the command specifying the final list of `--run-service` you want. Any missing service will be removed and any new one will be added. -The second thing you will notice is that one of the `--run-service` flags contains the suffix `:mysvc` while the other one doesn't. If you add to the configuration path the suffix `:overlay_name` the [configuration overlay](configuration-overlays) with name `overlay_name` will be applied. +The second thing you will notice is that one of the `--run-service` flags contains the suffix `:mysvc` while the other one doesn't. If you add to the configuration path the suffix `:overlay_name` the [configuration overlay](/products/run/configuration-overlays) with name `overlay_name` will be applied. The last thing to notice in the screenshot is that the URLs include information on how to connect to the Run service (in the example used in this guide only one of the started services expose a port): @@ -97,6 +97,6 @@ ENVIRONMENT="dev" services in the stack. For instance, in the example above we are using `http://hasura-service:8080/v1/graphql` to connect to hasura in production and in the CLI but when running the service in the host machine using the env file we are using an overlay to change the - value to `https://local.graphql.local.nhost.run/v1/graphql`. Refer to the [network](networking) + value to `https://local.graphql.local.nhost.run/v1/graphql`. Refer to the [network](/products/run/networking) configuration for more details.
diff --git a/docs/guides/run/networking.mdx b/docs/products/run/networking.mdx similarity index 88% rename from docs/guides/run/networking.mdx rename to docs/products/run/networking.mdx index f7c498e66..80e60f405 100644 --- a/docs/guides/run/networking.mdx +++ b/docs/products/run/networking.mdx @@ -25,7 +25,7 @@ Example for Redis service: -![exposing a port](/images/guides/run/configure-port.png) +![exposing a port](/images/run/configure-port.png) @@ -51,7 +51,7 @@ Example for a service exposing the ports tcp/3000 and udp/4000: -![exposing multiple ports](/images/guides/run/configure-multiple-ports.png) +![exposing multiple ports](/images/run/configure-multiple-ports.png) @@ -80,7 +80,7 @@ Example for a nodejs service exposing an API on port 3000: -![expose http port](/images/guides/run/configure-http-port.png) +![expose http port](/images/run/configure-http-port.png) @@ -108,7 +108,7 @@ publish = true ## GRPC -GRPC services are supported, however, they are only supported via [custom domains](/platform/custom-domains). To expose a GRPC service to the internet you can use the following configuration: +GRPC services are supported, however, they are only supported via [custom domains](/platform/cloud/custom-domains). To expose a GRPC service to the internet you can use the following configuration: ``` toml ... diff --git a/docs/product/run.mdx b/docs/products/run/overview.mdx similarity index 78% rename from docs/product/run.mdx rename to docs/products/run/overview.mdx index 8ac00fa00..ce3655908 100644 --- a/docs/product/run.mdx +++ b/docs/products/run/overview.mdx @@ -1,12 +1,12 @@ --- -title: Run +title: Overview description: Extend your backend icon: caret-right --- Nhost Run makes it easy to **extend** and **customize** your backend infrastructure. It unlocks the power and flexibility to run any custom and third-party OSS solutions, all in the same place. -![Run](/images/product/run/overview.png) +![Run](/images/run/overview.png) ## Use Cases @@ -29,22 +29,22 @@ By leveraging Nhost Run, you can optimize the performance, reliability, and cost ## Guides - + - + - + - + - + - + - + - + - + diff --git a/docs/guides/run/registry.mdx b/docs/products/run/registry.mdx similarity index 95% rename from docs/guides/run/registry.mdx rename to docs/products/run/registry.mdx index d942f02a4..ee8c79460 100644 --- a/docs/guides/run/registry.mdx +++ b/docs/products/run/registry.mdx @@ -8,21 +8,21 @@ icon: box-archive We provide a private image registry you can push images to with each service. To make use of it you can start by creating a service and configuring it: -![configure service](/images/guides/run/registry_1.png) +![configure service](/images/run/registry_1.png) Note that we are leaving the Image empty, this will auto-populate the service with the provisioned registry. We are also setting `Replicas` to 0 to avoid starting the service and incurring costs before we have pushed the image. Now you can click on Create: -![create service](/images/guides/run/registry_2.png) +![create service](/images/run/registry_2.png) Now you can click on the newly created service: -![click on the new service](/images/guides/run/registry_3.png) +![click on the new service](/images/run/registry_3.png) And copy the image: -![copy the image](/images/guides/run/registry_4.png) +![copy the image](/images/run/registry_4.png) ## Configuring docker to use Nhost's registry @@ -83,15 +83,15 @@ $ docker buildx build \ After you have pushed your image you can click on your service again and update the configuration: -![configure service](/images/guides/run/registry_5.png) +![configure service](/images/run/registry_5.png) Notice we added the tag `:123` to the image that was already pre-populated and that we increased replicas to `1` to unpause the service. Don't forget to copy the URL where we are exposing the service. Now you can click on update: -![update service](/images/guides/run/registry_6.png) +![update service](/images/run/registry_6.png) Wait a few seconds until the project is done updating the new service and visit the URL we copied before: -![visit url](/images/guides/run/registry_7.png) +![visit url](/images/run/registry_7.png) ## Using your own private registry @@ -113,7 +113,7 @@ If you are publishing your images in your own private registry you can add pull 3. Create a secret under Settings -> Secrets with the contents of the auth section. For instance: -![pull secret](/images/guides/run/registry_8.png) +![pull secret](/images/run/registry_8.png) Pay attention that **only** the object inside "auths" is to be added. diff --git a/docs/guides/run/resources.mdx b/docs/products/run/resources.mdx similarity index 93% rename from docs/guides/run/resources.mdx rename to docs/products/run/resources.mdx index 08a180344..4643c77cb 100644 --- a/docs/guides/run/resources.mdx +++ b/docs/products/run/resources.mdx @@ -11,7 +11,7 @@ You can configure compute resources for your service like this: -![compute slider](/images/guides/run/resources_1.png) +![compute slider](/images/run/resources_1.png) @@ -39,7 +39,7 @@ By default a container's disk is ephemeral so data isn't persisted across reboot -![storage](/images/guides/run/resources_2.png) +![storage](/images/run/resources_2.png) @@ -76,7 +76,7 @@ To pause a service, simply set its number of replicas to `0`: -![pausing a service](/images/guides/run/resources_3.png) +![pausing a service](/images/run/resources_3.png) diff --git a/docs/guides/storage/antivirus.mdx b/docs/products/storage/antivirus.mdx similarity index 60% rename from docs/guides/storage/antivirus.mdx rename to docs/products/storage/antivirus.mdx index 756294233..5899132f5 100644 --- a/docs/guides/storage/antivirus.mdx +++ b/docs/products/storage/antivirus.mdx @@ -6,23 +6,23 @@ icon: shield-virus Integration with [clamav](https://www.clamav.net) antivirus relies on an external [clamd](https://docs.clamav.net/manual/Usage/Scanning.html#clamd) service. When a file is uploaded `hasura-storage` will create the file metadata first and then check if the file is clean with `clamd` via its TCP socket. If the file is clean the rest of the process will continue as usual. If a virus is found details about the virus will be added to the `virus` table and the rest of the process will be aborted. -![sequence](/images/guides/storage/sequence.png) +![sequence](/images/storage/sequence.png) To enable the antivirus you need to follow the next steps: -1. Deploy using [Nhost Run](/run) a dedicated instance of `clamd` with this [one-click install link](https://app.nhost.io:/run-one-click-install?config=eyJuYW1lIjoiY2xhbWF2IiwiaW1hZ2UiOnsiaW1hZ2UiOiJkb2NrZXIuaW8vbmhvc3QvY2xhbWF2OjAuMS4xIn0sImNvbW1hbmQiOltdLCJyZXNvdXJjZXMiOnsiY29tcHV0ZSI6eyJjcHUiOjEwMDAsIm1lbW9yeSI6MjA0OH0sInN0b3JhZ2UiOltdLCJyZXBsaWNhcyI6MX0sImVudmlyb25tZW50IjpbXSwicG9ydHMiOlt7InBvcnQiOiIzMzEwIiwidHlwZSI6InRjcCIsInB1Ymxpc2giOmZhbHNlfV19). +1. Deploy using [Nhost Run](/products/run/overview) a dedicated instance of `clamd` with this [one-click install link](https://app.nhost.io:/run-one-click-install?config=eyJuYW1lIjoiY2xhbWF2IiwiaW1hZ2UiOnsiaW1hZ2UiOiJkb2NrZXIuaW8vbmhvc3QvY2xhbWF2OjAuMS4xIn0sImNvbW1hbmQiOltdLCJyZXNvdXJjZXMiOnsiY29tcHV0ZSI6eyJjcHUiOjEwMDAsIm1lbW9yeSI6MjA0OH0sInN0b3JhZ2UiOltdLCJyZXBsaWNhcyI6MX0sImVudmlyb25tZW50IjpbXSwicG9ydHMiOlt7InBvcnQiOiIzMzEwIiwidHlwZSI6InRjcCIsInB1Ymxpc2giOmZhbHNlfV19). 2. Select the project: -![select project](/images/guides/storage/av_01.png) +![select project](/images/storage/av_01.png) 3. Click on "Create": -![click on create](/images/guides/storage/av_02.png) +![click on create](/images/storage/av_02.png) 4. Make sure you are running **at least** storage version 0.4.0 and enable the antivirus: -![update settings](/images/guides/storage/av_03.png) +![update settings](/images/storage/av_03.png) 5. Wait for the service to update and try to upload a sample virus file like [eicar](https://www.eicar.org/download-anti-malware-testfile/) -![upload virus](/images/guides/storage/av_04.png) +![upload virus](/images/storage/av_04.png) 6. If the setup is working the upload should fail -![upload fails](/images/guides/storage/av_05.png) +![upload fails](/images/storage/av_05.png) 7. You can also head to hasura and verify entries were added to the `virus` table: -![click on create](/images/guides/storage/av_06.png) +![click on create](/images/storage/av_06.png) That entry should have useful information about like the filename, the virus found and the user session. In addition, the information on that table can be used a source for events. diff --git a/docs/guides/storage/cdn.mdx b/docs/products/storage/cdn.mdx similarity index 85% rename from docs/guides/storage/cdn.mdx rename to docs/products/storage/cdn.mdx index f69e348bc..269bcec49 100644 --- a/docs/guides/storage/cdn.mdx +++ b/docs/products/storage/cdn.mdx @@ -4,7 +4,7 @@ description: Serving files lightning fast icon: bolt --- -The [storage](/product/storage) service integrates with a CDN service to cache files and serve them close to users. This leads to faster response times and lower load on the backend service. You can read our initial [announcement](https://nhost.io/blog/launching-nhost-cdn-nhost-storage-is-now-blazing-fast) for some general information about what a CDN is and the performance gains. +The [storage](/products/storage/overview) service integrates with a CDN service to cache files and serve them close to users. This leads to faster response times and lower load on the backend service. You can read our initial [announcement](https://nhost.io/blog/launching-nhost-cdn-nhost-storage-is-now-blazing-fast) for some general information about what a CDN is and the performance gains. # Security diff --git a/docs/guides/storage/overview.mdx b/docs/products/storage/overview.mdx similarity index 99% rename from docs/guides/storage/overview.mdx rename to docs/products/storage/overview.mdx index a3d550ea3..c2c74ace6 100644 --- a/docs/guides/storage/overview.mdx +++ b/docs/products/storage/overview.mdx @@ -26,7 +26,7 @@ You're allowed to add and modify the following: - GraphQL Relationships - Permissions - + ### Upload File diff --git a/docs/reference/cli/commands.mdx b/docs/reference/cli/commands.mdx new file mode 100644 index 000000000..c8947bda4 --- /dev/null +++ b/docs/reference/cli/commands.mdx @@ -0,0 +1,341 @@ +--- +title: Commands +icon: terminal +--- + +# NAME + +nhost - A new cli application + +# SYNOPSIS + +nhost + +``` +[--data-folder]=[value] +[--dot-nhost-folder]=[value] +[--help|-h] +[--local-subdomain]=[value] +[--nhost-folder]=[value] +[--project-name]=[value] +[--root-folder]=[value] +``` + +# DESCRIPTION + +Nhost CLI tool + +**Usage**: + +``` +nhost [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...] +``` + +# GLOBAL OPTIONS + +**--data-folder**="": Data folder to persist data + (default: ".nhost/data/certs2") + +**--dot-nhost-folder**="": Path to .nhost folder + (default: ".nhost") + +**--help, -h**: show help + +**--local-subdomain**="": Local subdomain to reach the development environment (default: "local") + +**--nhost-folder**="": Path to nhost folder + (default: "nhost") + +**--project-name**="": Project name (default: "cli") + +**--root-folder**="": Root folder of project + (default: ".") + + +# COMMANDS + +## config + +Perform config operations + +### default + +Create default configuration and secrets + +### example + +Shows an example config file + +### pull + +Get cloud configuration + +**--subdomain**="": Pull this subdomain's configuration. Defaults to linked project + +**--yes**: Skip confirmation + +### show + +Shows configuration after resolving secrets + +**--subdomain**="": Show this subdomain's rendered configuration. Defaults to base configuration + +### validate + +Validate configuration + +**--subdomain**="": Validate this subdomain's configuration. Defaults to linked project + +### edit + +Edit base configuration or an overlay + +**--editor**="": Editor to use (default: "vim") + +**--subdomain**="": If specified, edit this subdomain's overlay, otherwise edit base configuation + +## deployments + +Manage deployments + +### list + +List deployments in the cloud environment + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +### logs + +View deployments logs in the cloud environment + +**--follow**: Specify if the logs should be streamed + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +**--timeout**="": Specify the timeout for streaming logs (default: 5m0s) + +### new + +[EXPERIMENTAL] Create a new deployment + +**--follow**: Specify if the logs should be streamed. If set, the command will wait for the deployment to finish and stream the logs. If the deployment fails the command will return an error. + +**--message**="": Commit message + +**--ref**="": Git reference + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +**--timeout**="": Specify the timeout for streaming logs (default: 5m0s) + +**--user**="": Commit user name + +**--user-avatar-url**="": Commit user avatar URL + +## dev + +Operate local development environment + +### compose + +docker compose wrapper, sets project name and compose file automatically + +### hasura + +hasura-cli wrapper + +## up + +Start local development environment + +**--apply-seeds**: Apply seeds. If the .nhost folder does not exist, seeds will be applied regardless of this flag + +**--auth-port**="": If specified, expose auth on this port. Not recommended (default: 0) + +**--ca-certificates**="": Mounts and everrides path to CA certificates in the containers + +**--dashboard-version**="": Dashboard version to use (default: "nhost/dashboard:2.20.0") + +**--disable-tls**: Disable TLS + +**--down-on-error**: Skip confirmation + +**--functions-port**="": If specified, expose functions on this port. Not recommended (default: 0) + +**--hasura-console-port**="": If specified, expose hasura console on this port. Not recommended (default: 0) + +**--hasura-port**="": If specified, expose hasura on this port. Not recommended (default: 0) + +**--http-port**="": HTTP port to listen on (default: 443) + +**--postgres-port**="": Postgres port to listen on (default: 5432) + +**--run-service**="": Run service to add to the development environment. Can be passed multiple times. Comma-separated values are also accepted. Format: /path/to/run-service.toml[:overlay_name] + +**--storage-port**="": If specified, expose storage on this port. Not recommended (default: 0) + +## down + +Stop local development environment + +**--volumes**: Remove volumes + +## logs + +Show logs from local development environment + +## docker-credentials + +Perform docker-credentials operations + +### configure + +Install credentials helper and configure docker so it can authenticate with Nhost's registry + +**--docker-config**="": Path to docker config file (default: "/Users/dbarroso/.docker/config.json") + +**--no-interactive**: Do not prompt for confirmation + +## init + +Initialize a new Nhost project + +**--remote**: Initialize pulling configuration, migrations and metadata from the linked project + +## list + +List remote apps + +## link + +Link local app to a remote one + +## run + +Perform operations on Nhost Run + +### config-show + +Shows Run service configuration after resolving secrets + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--overlay-name**="": If specified, apply this overlay + +### config-deploy + +Deploy service configuration + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--service-id**="": Service ID to update. Applies overlay of the same name + +### config-edit + +Edit service configuration + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--editor**="": Editor to use (default: "vim") + +**--overlay-name**="": If specified, apply this overlay + +### config-edit-image + +Edits configuration file and sets the image + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--image**="": Image to use + +### config-pull + +Download service configuration + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--service-id**="": Service ID to update + +### config-validate + +Validates service configuration after resolving secrets + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--overlay-name**="": If specified, apply this overlay + +**--service-id**="": If specified, apply this overlay and remote secrets for this service + +### config-example + +Shows an example config file + +### env + +Outputs environment variables. Useful to generate .env files + +**--config**="": Service configuration file (default: "nhost-run-service.toml") + +**--overlay-name**="": If specified, apply this overlay + +**--prepend-export**: Prepend 'export' to each line + +## secrets + +Manage secrets + +### create + +Create secret in the cloud environment + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +### delete + +Delete secret in the cloud environment + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +### list + +List secrets in the cloud environment + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +### update + +Update secret in the cloud environment + +**--subdomain**="": Project's subdomain to operate on, defaults to linked project + +## sw + +Perform software management operations + +### uninstall + +Remove the installed CLI from system permanently + +**--force**: Force uninstall without confirmation + +### upgrade + +Upgrade the CLI to the latest version + +### version + +Show the current version of Nhost CLI you have installed + +## login + +Login to Nhost + +**--email**="": Email address + +**--password**="": Password + +**--pat**="": Use this Personal Access Token instead of generating a new one with your email/password + +## help, h + +Shows a list of commands or help for one command diff --git a/docs/reference/graphql/ai/mutation/deleteAssistant.mdx b/docs/reference/graphql/ai/mutation/deleteAssistant.mdx index 60a1f202a..81fba01a8 100644 --- a/docs/reference/graphql/ai/mutation/deleteAssistant.mdx +++ b/docs/reference/graphql/ai/mutation/deleteAssistant.mdx @@ -1,5 +1,6 @@ --- title: deleteAssistant +icon: trash --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/deleteSession.mdx b/docs/reference/graphql/ai/mutation/deleteSession.mdx index e43357ae8..c664b26d0 100644 --- a/docs/reference/graphql/ai/mutation/deleteSession.mdx +++ b/docs/reference/graphql/ai/mutation/deleteSession.mdx @@ -1,5 +1,6 @@ --- title: deleteSession +icon: eraser --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/insertAssistant.mdx b/docs/reference/graphql/ai/mutation/insertAssistant.mdx index b59ec3db5..28eae8580 100644 --- a/docs/reference/graphql/ai/mutation/insertAssistant.mdx +++ b/docs/reference/graphql/ai/mutation/insertAssistant.mdx @@ -1,5 +1,6 @@ --- title: insertAssistant +icon: file-import --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/sendDevMessage.mdx b/docs/reference/graphql/ai/mutation/sendDevMessage.mdx index 75db38488..121f77138 100644 --- a/docs/reference/graphql/ai/mutation/sendDevMessage.mdx +++ b/docs/reference/graphql/ai/mutation/sendDevMessage.mdx @@ -1,5 +1,6 @@ --- title: sendDevMessage +icon: reply --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/sendMessage.mdx b/docs/reference/graphql/ai/mutation/sendMessage.mdx index 010d5fb2a..fdac00aba 100644 --- a/docs/reference/graphql/ai/mutation/sendMessage.mdx +++ b/docs/reference/graphql/ai/mutation/sendMessage.mdx @@ -1,5 +1,6 @@ --- title: sendMessage +icon: paper-plane --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/startDevSession.mdx b/docs/reference/graphql/ai/mutation/startDevSession.mdx index 67c446652..717b5212a 100644 --- a/docs/reference/graphql/ai/mutation/startDevSession.mdx +++ b/docs/reference/graphql/ai/mutation/startDevSession.mdx @@ -1,5 +1,6 @@ --- title: startDevSession +icon: hourglass-start --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/startSession.mdx b/docs/reference/graphql/ai/mutation/startSession.mdx index 354382d60..1f84ee9f6 100644 --- a/docs/reference/graphql/ai/mutation/startSession.mdx +++ b/docs/reference/graphql/ai/mutation/startSession.mdx @@ -1,5 +1,6 @@ --- title: startSession +icon: play --- ```graphql diff --git a/docs/reference/graphql/ai/mutation/updateAssistant.mdx b/docs/reference/graphql/ai/mutation/updateAssistant.mdx index d0f26065a..f999c9f67 100644 --- a/docs/reference/graphql/ai/mutation/updateAssistant.mdx +++ b/docs/reference/graphql/ai/mutation/updateAssistant.mdx @@ -1,5 +1,6 @@ --- title: updateAssistant +icon: gears --- ```graphql diff --git a/docs/reference/graphql/ai/overview.mdx b/docs/reference/graphql/ai/overview.mdx index f2a3dae70..f586399c1 100644 --- a/docs/reference/graphql/ai/overview.mdx +++ b/docs/reference/graphql/ai/overview.mdx @@ -1,5 +1,6 @@ --- title: Overview +icon: house --- When deploying graphite, Nhost's AI service, three sets of queries and mutations are deployed: diff --git a/docs/reference/graphql/ai/query/assistant.mdx b/docs/reference/graphql/ai/query/assistant.mdx index e9ce30fc0..07fa6e029 100644 --- a/docs/reference/graphql/ai/query/assistant.mdx +++ b/docs/reference/graphql/ai/query/assistant.mdx @@ -1,5 +1,6 @@ --- title: assistant +icon: hand-holding --- ```graphql diff --git a/docs/reference/graphql/ai/query/assistants.mdx b/docs/reference/graphql/ai/query/assistants.mdx index e445925b1..62a132cdf 100644 --- a/docs/reference/graphql/ai/query/assistants.mdx +++ b/docs/reference/graphql/ai/query/assistants.mdx @@ -1,5 +1,6 @@ --- title: assistants +icon: handshake-simple --- ```graphql diff --git a/docs/reference/graphql/ai/query/session.mdx b/docs/reference/graphql/ai/query/session.mdx index b32f4335f..9869918c9 100644 --- a/docs/reference/graphql/ai/query/session.mdx +++ b/docs/reference/graphql/ai/query/session.mdx @@ -1,5 +1,6 @@ --- title: session +icon: hourglass --- ```graphql diff --git a/docs/reference/graphql/ai/query/sessionMessages.mdx b/docs/reference/graphql/ai/query/sessionMessages.mdx index 0e8cc60ee..20afa56de 100644 --- a/docs/reference/graphql/ai/query/sessionMessages.mdx +++ b/docs/reference/graphql/ai/query/sessionMessages.mdx @@ -1,5 +1,6 @@ --- title: sessionMessages +icon: envelope --- ```graphql diff --git a/docs/reference/graphql/ai/query/sessions.mdx b/docs/reference/graphql/ai/query/sessions.mdx index 3ed5c335b..38a63b70e 100644 --- a/docs/reference/graphql/ai/query/sessions.mdx +++ b/docs/reference/graphql/ai/query/sessions.mdx @@ -1,5 +1,6 @@ --- title: sessions +icon: hourglass-end --- ```graphql diff --git a/docs/reference/javascript/nhost-js/link-id-token.mdx b/docs/reference/javascript/nhost-js/link-id-token.mdx index 451831355..09e81af06 100644 --- a/docs/reference/javascript/nhost-js/link-id-token.mdx +++ b/docs/reference/javascript/nhost-js/link-id-token.mdx @@ -17,12 +17,12 @@ nhost.auth.linkIdToken({ --- -**params** required [`LinkIdTokenParams`](/reference/javascript/nhost-js/types/link-id-token-params) +**params** required [`LinkIdTokenParams`](/reference/javascript/auth/types/link-id-token-params) | Property | Type | Required | Notes | | :------------------------------------------------------------------------------------------ | :---------------------------------------------------------- | :------: | :---- | | params.idToken | string | ✔️ | | -| params.provider | [`Provider`](/reference/javascript/nhost-js/types/provider) | ✔️ | | +| params.provider | [`Provider`](/reference/javascript/auth/types/provider) | ✔️ | | | params.nonce | string | | | --- diff --git a/docs/reference/javascript/nhost-js/sign-in-email-otp.mdx b/docs/reference/javascript/nhost-js/sign-in-email-otp.mdx index 7611a2d14..87e7b5e26 100644 --- a/docs/reference/javascript/nhost-js/sign-in-email-otp.mdx +++ b/docs/reference/javascript/nhost-js/sign-in-email-otp.mdx @@ -19,7 +19,7 @@ The email address to send the OTP to --- -**options** optional [`EmailOTPOptions`](/reference/javascript/nhost-js/types/email-otp-options) +**options** optional [`EmailOTPOptions`](/reference/javascript/auth/types/email-otp-options) | Property | Type | Required | Notes | | :----------------------------------------------------------------------------------------------- | :----------------------------------------- | :------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/docs/reference/javascript/nhost-js/sign-in-id-token.mdx b/docs/reference/javascript/nhost-js/sign-in-id-token.mdx index a831a9bc7..f70bc07b3 100644 --- a/docs/reference/javascript/nhost-js/sign-in-id-token.mdx +++ b/docs/reference/javascript/nhost-js/sign-in-id-token.mdx @@ -17,12 +17,12 @@ nhost.auth.signInIdToken({ --- -**params** required [`SignInIdTokenParams`](/reference/javascript/nhost-js/types/sign-in-id-token-params) +**params** required [`SignInIdTokenParams`](/reference/javascript/auth/types/sign-in-id-token-params) | Property | Type | Required | Notes | | :------------------------------------------------------------------------------------------ | :---------------------------------------------------------- | :------: | :---- | | params.idToken | string | ✔️ | | -| params.provider | [`Provider`](/reference/javascript/nhost-js/types/provider) | ✔️ | | +| params.provider | [`Provider`](/reference/javascript/auth/types/provider) | ✔️ | | | params.nonce | string | | | --- diff --git a/docs/reference/javascript/nhost-js/types/link-id-token-handler-params.mdx b/docs/reference/javascript/nhost-js/types/link-id-token-handler-params.mdx index d31684210..aa8b87d1b 100644 --- a/docs/reference/javascript/nhost-js/types/link-id-token-handler-params.mdx +++ b/docs/reference/javascript/nhost-js/types/link-id-token-handler-params.mdx @@ -14,7 +14,7 @@ description: No description provided. --- -**provider** required [`Provider`](/reference/javascript/nhost-js/types/provider) +**provider** required [`Provider`](/reference/javascript/auth/types/provider) --- diff --git a/docs/reference/javascript/nhost-js/types/link-id-token-handler-result.mdx b/docs/reference/javascript/nhost-js/types/link-id-token-handler-result.mdx index f0ae4868c..87f21e704 100644 --- a/docs/reference/javascript/nhost-js/types/link-id-token-handler-result.mdx +++ b/docs/reference/javascript/nhost-js/types/link-id-token-handler-result.mdx @@ -22,7 +22,7 @@ use `!isSuccess` or `!!error` instead --- -**error** required null | [`AuthErrorPayload`](/reference/javascript/nhost-js/types/auth-error-payload) +**error** required null | [`AuthErrorPayload`](/reference/javascript/auth/types/auth-error-payload) Provides details about the error diff --git a/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-params.mdx b/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-params.mdx index cbe3e1dd3..a34d96448 100644 --- a/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-params.mdx +++ b/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-params.mdx @@ -14,7 +14,7 @@ description: No description provided. --- -**provider** required [`Provider`](/reference/javascript/nhost-js/types/provider) +**provider** required [`Provider`](/reference/javascript/auth/types/provider) --- diff --git a/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-result.mdx b/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-result.mdx index eeb0106ae..483f4b3d4 100644 --- a/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-result.mdx +++ b/docs/reference/javascript/nhost-js/types/sign-in-id-token-handler-result.mdx @@ -22,7 +22,7 @@ use `!isSuccess` or `!!error` instead --- -**error** required null | [`AuthErrorPayload`](/reference/javascript/nhost-js/types/auth-error-payload) +**error** required null | [`AuthErrorPayload`](/reference/javascript/auth/types/auth-error-payload) Provides details about the error @@ -34,7 +34,7 @@ Returns `true` if the action is successful. --- -**user** required null | [`User`](/reference/javascript/nhost-js/types/user) +**user** required null | [`User`](/reference/javascript/auth/types/user) User information diff --git a/docs/reference/javascript/nhost-js/types/sign-in-id-token-state.mdx b/docs/reference/javascript/nhost-js/types/sign-in-id-token-state.mdx index 974a6c70a..1dc7b5621 100644 --- a/docs/reference/javascript/nhost-js/types/sign-in-id-token-state.mdx +++ b/docs/reference/javascript/nhost-js/types/sign-in-id-token-state.mdx @@ -22,7 +22,7 @@ use `!isSuccess` or `!!error` instead --- -**error** required null | [`AuthErrorPayload`](/reference/javascript/nhost-js/types/auth-error-payload) +**error** required null | [`AuthErrorPayload`](/reference/javascript/auth/types/auth-error-payload) Provides details about the error @@ -42,7 +42,7 @@ Returns `true` if the action is successful. --- -**user** required null | [`User`](/reference/javascript/nhost-js/types/user) +**user** required null | [`User`](/reference/javascript/auth/types/user) User information diff --git a/docs/reference/nextjs/use-nhost-client.mdx b/docs/reference/nextjs/use-nhost-client.mdx index f8b3f155e..dae1425b3 100644 --- a/docs/reference/nextjs/use-nhost-client.mdx +++ b/docs/reference/nextjs/use-nhost-client.mdx @@ -3,7 +3,7 @@ title: useNhostClient() sidebarTitle: useNhostClient() --- -Use the hook `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript). +Use the hook `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript/nhost-js/nhost-client). ```tsx const nhost = useNhostClient() diff --git a/docs/reference/openapi-auth.yaml b/docs/reference/openapi-auth.yaml index 751d0cc2c..f3ef6fcc2 100644 --- a/docs/reference/openapi-auth.yaml +++ b/docs/reference/openapi-auth.yaml @@ -498,7 +498,7 @@ components: scheme: bearer description: >- This endpoint may require elevated permissions, depending on server settings. - For details see https://docs.nhost.io/guides/auth/elevated-permissions + For details see https://docs.nhost.io/products/auth/elevated-permissions schemas: JWKSet: diff --git a/docs/reference/overview.mdx b/docs/reference/overview.mdx index 770cfd922..353ca6d19 100644 --- a/docs/reference/overview.mdx +++ b/docs/reference/overview.mdx @@ -4,13 +4,13 @@ description: 'API Reference' icon: hand-wave --- -This reference section is home to both backend services and the various client libraries available. +This reference section is home to both backend services and the various client libraries available. ## Backend Services In this section you will find the API reference for both the authentication and storage services. There is an **API Playground** to help you learn and test the endpoints against a local Nhost instance. -To learn how to start a local Nhost instance check out [local development](/development/cli/overview). Starting a local instance is optional and only required if you want to use the playground to simulate real requests. +To learn how to start a local Nhost instance check out [local development](/platform/cli/local-development). Starting a local instance is optional and only required if you want to use the playground to simulate real requests. ## Client Libraries diff --git a/docs/reference/react/use-nhost-client.mdx b/docs/reference/react/use-nhost-client.mdx index f8b3f155e..dae1425b3 100644 --- a/docs/reference/react/use-nhost-client.mdx +++ b/docs/reference/react/use-nhost-client.mdx @@ -3,7 +3,7 @@ title: useNhostClient() sidebarTitle: useNhostClient() --- -Use the hook `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript). +Use the hook `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript/nhost-js/nhost-client). ```tsx const nhost = useNhostClient() diff --git a/docs/reference/vue/use-nhost-client.mdx b/docs/reference/vue/use-nhost-client.mdx index 5daf2405c..5b3947ae6 100644 --- a/docs/reference/vue/use-nhost-client.mdx +++ b/docs/reference/vue/use-nhost-client.mdx @@ -3,7 +3,7 @@ title: useNhostClient() sidebarTitle: useNhostClient() --- -Use the composable `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript). +Use the composable `useNhostClient` to get the Nhost JavaScript client (https://docs.nhost.io/reference/javascript/nhost-js/nhost-client). ```tsx const { nhost } = useNhostClient() diff --git a/docs/style.css b/docs/style.css new file mode 100644 index 000000000..ce51ad4e8 --- /dev/null +++ b/docs/style.css @@ -0,0 +1,80 @@ +.welcome-page { + margin: 0 auto; +} + +.welcome-hero { + text-align: center; + padding-top: 5rem; + padding-bottom: 2rem; + margin-bottom: 6rem; + background-color: var(--custom-background); +} + +/* dark mode */ +html[class~="dark"] .welcome-hero { + background-color: rgb(23, 29, 38); + color: white; +} + +/* light mode */ +html:not([class~="dark"]) .welcome-hero { + background-color: #f5f8ff; + color: #111827; +} + +.welcome-hero h1 { + font-size: 3rem; + margin-bottom: 1.5rem; + font-weight: 700; +} + +.welcome-hero p { + font-size: 1.2rem; + max-width: 600px; + margin: 0 auto 2rem; +} + +.welcome-hero b { + display: inline-block; + margin-top: 1rem; +} + +.welcome-hero b a { + color: var(--primary-color); + font-size: 1.1rem; + text-decoration: none; + transition: color 0.2s; +} + +html[class~="dark"] .welcome-hero b a { + color: #3787ff; +} + +html:not([class~="dark"]) .welcome-hero b a { + color: #1874ff; +} + +.welcome-hero b a:hover { + text-decoration: underline; +} + +.welcome-get-started { + margin: 0 auto; + max-width: 1000px; +} + +.welcome-get-started h1 { + text-align: center; + font-size: 1.5rem; + font-weight: 600; + margin: 2.0rem; +} + +html[class~="dark"] .welcome-get-started { + color: white; +} + +/* light mode */ +html:not([class~="dark"]) .welcome-get-started { + color: #111827; +} \ No newline at end of file diff --git a/docs/welcome.mdx b/docs/welcome.mdx new file mode 100644 index 000000000..a709431d3 --- /dev/null +++ b/docs/welcome.mdx @@ -0,0 +1,65 @@ +--- +title: Welcome +mode: "custom" +--- + +
+
+ # Build. Deploy. Scale. +

Learn how to get started with Nhost

+ + [Explore the docs →](/getting-started) + +
+ +
+ # Get started with our guides or explore our community + + + + Learn the fundamentals of Nhost and how to set up your first project + + + Integrate Nhost with your React application + + + Explore the API reference for client SDKs and data APIs + + + Learn about the Nhost Platform and deployment targets + + + Explore our integrated products like database, auth, GraphQL & storage. + + + Deployable applications built with Nhost + + + +
+
+ diff --git a/examples/docker-compose/.env.example b/examples/docker-compose/.env.example index 3149801bd..52b7cbea6 100644 --- a/examples/docker-compose/.env.example +++ b/examples/docker-compose/.env.example @@ -1,31 +1,19 @@ # Change all these variables before first creating the containers -POSTGRES_PASSWORD=secret-pg-password-never-use-this-value -HASURA_GRAPHQL_ADMIN_SECRET=change-me +POSTGRES_PASSWORD=postgres +GRAPHQL_ADMIN_SECRET=change-me # The jwt secret key can be generated with `openssl rand -hex 32` -HASURA_GRAPHQL_JWT_SECRET='{"type":"HS256", "key":"5152fa850c02dc222631cca898ed1485821a70912a6e3649c49076912daa3b62182ba013315915d64f40cddfbb8b58eb5bd11ba225336a6af45bbae07ca873f3","issuer":"hasura-auth"}' +JWT_SECRET='{"type":"HS256", "key":"5152fa850c02dc222631cca898ed1485821a70912a6e3649c49076912daa3b62182ba013315915d64f40cddfbb8b58eb5bd11ba225336a6af45bbae07ca873f3","issuer":"hasura-auth"}' STORAGE_ACCESS_KEY=storage-access-key-never-use-this-value STORAGE_SECRET_KEY=storage-secret-key-never-use-this-value -# The following HOST and URL env variables are separated since the HOST variables are used to define the allowed hosts to the traefik services in the docker-compose.yaml +AUTH_URL=local.auth.local.nhost.run +CONSOLE_URL=local.console.local.nhost.run +DASHBOARD_URL=local.dashboard.local.nhost.run +DB_URL=local.db.local.nhost.run +FUNCTIONS_URL=local.functions.local.nhost.run +GRAPHQL_URL=local.graphql.local.nhost.run +MAILHOG_URL=local.mailhog.local.nhost.run +STORAGE_URL=local.storage.local.nhost.run -# Public (proxy.my-nhost.com) or private (localhost) hostname for the Hasura API/proxy for the Nhost dashboard to send requests to -PROXY_HOST=localhost -# Change to https://${PROXY_HOST} if not using localhost -PROXY_URL=http://${PROXY_HOST}:1337 - -# Public (example-url.my-nhost.com) or private (localhost) hostname for the Nhost dashboard for the proxy to allow requests from -NHOST_HOST=localhost - -# Environment variables for the Nhost Dashboard. See dashboard/.env.example for default values. The defualt values are changed to work with our traefik setup created with the docker-compose - -# URL for the migrations API running from running `hasura-console`. If it needs to be publicly accessible, change it to your publicly-available URL (https://hasura-migrations.my-nhost.com) -NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL=http://localhost:9693 - -# The following do not need to be changed unless you modified the docker-compose.yaml -NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL=${PROXY_URL} -NEXT_PUBLIC_NHOST_HASURA_API_URL=${PROXY_URL} -NEXT_PUBLIC_NHOST_ADMIN_SECRET=${HASURA_GRAPHQL_ADMIN_SECRET} -NEXT_PUBLIC_NHOST_AUTH_URL=${PROXY_URL}/v1/auth -NEXT_PUBLIC_NHOST_GRAPHQL_URL=${PROXY_URL}/v1/graphql -NEXT_PUBLIC_NHOST_STORAGE_URL=${PROXY_URL}/v1/storage -NEXT_PUBLIC_NHOST_FUNCTIONS_URL=${PROXY_URL}/v1/functions +# you should have this enabled but for testing/demoing it is easier to disable +AUTH_EMAIL_SIGNIN_EMAIL_VERIFIED_REQUIRED=false diff --git a/examples/docker-compose/README.md b/examples/docker-compose/README.md index 607a9a947..8b2f1287b 100644 --- a/examples/docker-compose/README.md +++ b/examples/docker-compose/README.md @@ -1,38 +1,199 @@ -# Docker-compose example +# Nhost Docker Compose Example -Here is an example on how to reproduce the Nhost stack from a docker-compose file. +This example demonstrates how to reproduce the Nhost stack using Docker Compose. It's based on our CLI implementation and provides a comprehensive demonstration environment for exploring Nhost's capabilities. -NOTE: You may notice that some options in the dashboard are greyed-out. These include additional services like CI integration, configuration management, etc., offered by the Nhost Cloud and therefore are not accessible when self-hosting. +> **IMPORTANT**: This example is for demonstration purposes only. While it's a mostly complete representation of the Nhost stack, it includes development-friendly features that may not be suitable for production environments. + +## Self-Hosting Notice + +Please note: +- We don't officially support self-hosting without a support agreement (see [Nhost Pricing](https://nhost.io/pricing)) +- This example is primarily for demonstration purposes +- Beyond fixes/updates to this example, support is community-provided +- Some dashboard options are greyed out as they relate to Nhost Cloud services (CI integration, configuration management, etc.) + +## Available Endpoints + +After starting the services, the following endpoints will be available: + +| Service | URL | Description | +|---------|-----|-------------| +| Auth | http://local.auth.local.nhost.run | Authentication service | +| Dashboard | http://local.dashboard.local.nhost.run | Nhost dashboard | +| Database | postgres://local.db.local.nhost.run | PostgreSQL database | +| Functions | http://local.functions.local.nhost.run | Serverless functions | +| Hasura Console | http://local.graphql.local.nhost.run/console | GraphQL API management | +| GraphQL | http://local.graphql.local.nhost.run | GraphQL service | +| Mailhog | http://local.mailhog.local.nhost.run | Email testing tool (dev only) | +| Storage | http://local.storage.local.nhost.run | File storage service | ## Configuration -```sh -git clone https://github.com/nhost/nhost -cd nhost/examples/docker-compose -cp .env.example .env -docker-compose up -d +While minor configuration can be done via the `.env` file, this Docker Compose setup is primarily for demonstration. For production use: + +- Study and understand the Docker Compose configuration +- Adjust it to your specific requirements +- Pay special attention to security settings in the `.env` file and the Docker Compose configuration +- Consider removing development-only services like Mailhog and Hasura Console + +## Demo + +Starting the services: + +``` +$ git clone https://github.com/nhost/nhost + +$ cd nhost/examples/docker-compose + +$ cp .env.example .env + +$ docker compose up -d +[+] Running 10/10 + ✔ Container docker-compose-mailhog-1 Started 10.6s + ✔ Container docker-compose-traefik-1 Started 10.6s + ✔ Container docker-compose-dashboard-1 Started 10.6s + ✔ Container docker-compose-functions-1 Started 10.6s + ✔ Container docker-compose-storage-1 Started 21.8s + ✔ Container docker-compose-auth-1 Started 21.9s + ✔ Container docker-compose-graphql-1 Healthy 21.6s + ✔ Container docker-compose-minio-1 Started 10.5s + ✔ Container docker-compose-postgres-1 Healthy 6.5s + ✔ Container docker-compose-console-1 Started 11.5s ``` -The following endpoints are now exposed: +### Testing Individual Services -- `http://localhost:1337/v1/graphql`: Hasura GraphQL endpoint -- `http://localhost:1337/v1/auth`: Hasura Auth -- `http://localhost:1337/v1/storage`: Hasura Storage -- `http://localhost:1337/v1/functions`: Functions +#### Postgres -- `http://localhost:3030`: Nhost Dashboard -- `http://localhost:1337`: Hasura Console -- `http://localhost:8025`: Mailhog SMTP testing dashboard -- `http://localhost:9090`: Traefik dashboard - -## Running the Nhost dashboard locally - -In order for you to be able to make edits to the database from the Nhost dashboard, you need to run the [Hasura console locally from the Hasura CLI](https://hasura.io/docs/latest/hasura-cli/commands/hasura_console/): - -```sh -hasura console +``` +$ psql postgres://postgres:postgres@local.db.local.nhost.run -c "SELECT VERSION();" + version +--------------------------------------------------------------------------------------------------------------------------- + PostgreSQL 16.8 (Debian 16.8-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit +(1 row) ``` -The Nhost Dashboard [uses](https://github.com/nhost/nhost/discussions/2398) the [Hasura migrations API](https://hasura.io/docs/latest/hasura-cli/commands/hasura_console/#options) in order to make edits to the database. It runs over port 9693 and is only accessible through running the Hasura console from the CLI. Because the Docker compose still only uses the graphql-engine Hasura Docker image and does not include the CLI image, that is why you need to run it locally. See https://github.com/nhost/nhost/issues/1220. Users are welcome to contibute a Docker compose that includes the CLI image to resolve this. +#### Auth -The Nhost Dashboard also requires the Hasura admin secret to `nhost-admin-secret` specified in the `.env` file. +``` +$ curl http://local.auth.local.nhost.run/v1/version +{"version":"0.37.1"} + +$ curl -X POST http://local.auth.local.nhost.run/v1/signup/email-password \ + -H "Content-Type: application/json" \ + -d '{"email": "email@acme.test", "password":"s3cur3p4ssw0rd!"}' +{ + "session": { + "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDMwODczMzEsImh0dHBzOi8vaGFzdXJhLmlvL2p3dC9jbGFpbXMiOnsieC1oYXN1cmEtYWxsb3dlZC1yb2xlcyI6WyJ1c2VyIiwibWUiXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoidXNlciIsIngtaGFzdXJhLXVzZXItaWQiOiJmNDYwMzUyNC00NDhkLTRhOTYtYjZkNi1kNGNmNDc2Nzk2YTgiLCJ4LWhhc3VyYS11c2VyLWlzLWFub255bW91cyI6ImZhbHNlIn0sImlhdCI6MTc0MzA4NjQzMSwiaXNzIjoiaGFzdXJhLWF1dGgiLCJzdWIiOiJmNDYwMzUyNC00NDhkLTRhOTYtYjZkNi1kNGNmNDc2Nzk2YTgifQ.yBGn3Gsb0kuqXxEPbdqb9FOmKxGpQjDnAJCVYuBvPMM", + "accessTokenExpiresIn": 900, + "refreshToken": "5743ea5b-9561-46f6-a9a4-b0cbc3c13dd2", + "refreshTokenId": "44a66ddf-a099-4a1d-bdb4-4c4d6e3d10ac", + "user": { + "avatarUrl": "https://www.gravatar.com/avatar/1de09cde1ce545d06c9381280237c224?d=blank&r=g", + "createdAt": "2025-03-27T14:40:31.046694975Z", + "defaultRole": "user", + "displayName": "email@acme.test", + "email": "email@acme.test", + "emailVerified": false, + "id": "f4603524-448d-4a96-b6d6-d4cf476796a8", + "isAnonymous": false, + "locale": "en", + "metadata": null, + "phoneNumberVerified": false, + "roles": [ + "user", + "me" + ] + } + } +} +``` + +#### Storage + +``` +$ curl http://local.storage.local.nhost.run/v1/version +{"buildVersion":"0.7.1"} + +$ curl -X POST http://local.storage.local.nhost.run/v1/files \ + -H "X-Hasura-Admin-Secret: change-me" \ + -H "Content-Type: multipart/form-data" \ + -F "file=@README.md" +{ + "id": "ed8d72f4-34da-446a-aac7-150fd909bfd8", + "name": "README.md", + "size": 6567, + "bucketId": "default", + "etag": "\"19dba20946122f4a2f0aa41a12288270\"", + "createdAt": "2025-03-27T14:43:42.081047+00:00", + "updatedAt": "2025-03-27T14:43:42.086137+00:00", + "isUploaded": true, + "mimeType": "text/plain; charset=utf-8", + "uploadedByUserId": "", + "metadata": null +} +``` + +#### GraphQL + +``` +$ curl http://local.graphql.local.nhost.run/v1/version +{"server_type":"ce","version":"v2.36.9-ce"} + +$ curl -X POST http://local.graphql.local.nhost.run/v1/graphql \ + -H "Content-Type: application/json" \ + -H "X-Hasura-Admin-Secret: change-me" \ + -d '{"query":"query { users { id email } }"}' +{ + "data": { + "users": [ + { + "id": "f4603524-448d-4a96-b6d6-d4cf476796a8", + "email": "email@acme.test" + } + ] + } +} +``` + +#### Functions + +``` +$ curl http://local.functions.local.nhost.run/v1/echo +{ + "headers": { + "host": "local.functions.local.nhost.run", + "user-agent": "curl/8.7.1", + "accept": "*/*", + "x-forwarded-for": "172.19.0.1", + "x-forwarded-host": "local.functions.local.nhost.run", + "x-forwarded-port": "80", + "x-forwarded-proto": "http", + "x-forwarded-server": "941746efd09a", + "x-real-ip": "172.19.0.1", + "x-replaced-path": "/v1/echo", + "accept-encoding": "gzip" + }, + "query": {}, + "node": "v22.13.0", + "arch": "arm64" +} +``` + +## Production Considerations + +This example showcases most Nhost features but includes development-only components like: +- Mailhog for email testing +- Hasura Console for GraphQL schema management + +For production deployments: +- Remove development-only services +- Configure proper authentication secrets +- Set up proper database credentials +- Implement proper SSL/TLS termination +- Configure appropriate resource limits +- Implement proper backup strategies + +## Support + +For official support with self-hosting, please see our [pricing page](https://nhost.io/pricing) for support agreements. Community support is available through our [Discord](https://discord.com/invite/9V7Qb2U) and [GitHub discussions](https://github.com/nhost/nhost/discussions). diff --git a/examples/docker-compose/docker-compose.yaml b/examples/docker-compose/docker-compose.yaml index f806edf1c..f4c6e1ba8 100644 --- a/examples/docker-compose/docker-compose.yaml +++ b/examples/docker-compose/docker-compose.yaml @@ -1,176 +1,483 @@ -version: '3.6' services: - traefik: - image: 'traefik:v2.5' - container_name: 'traefik' - command: - - '--api.insecure=true' - - '--providers.docker=true' - - '--providers.docker.exposedbydefault=false' - - '--entrypoints.web.address=:1337' - - '--entryPoints.admin.address=:3030' - ports: - # hasura/services - - '1337:1337' - # traefik interface - - '9090:8080' - # dashboard - - '3030:3030' - volumes: - - '/var/run/docker.sock:/var/run/docker.sock:ro' - postgres: - image: postgres - restart: always - volumes: - - ./data/db:/var/lib/postgresql/data - - ./initdb.d:/docker-entrypoint-initdb.d:ro - environment: - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-secretpgpassword} - ports: - - '5432:5432' - graphql-engine: - image: hasura/graphql-engine:v2.35.1 - depends_on: - - 'postgres' - restart: always - expose: - - 8080 - environment: - HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD:-secretpgpassword}@postgres:5432/postgres - HASURA_GRAPHQL_JWT_SECRET: ${HASURA_GRAPHQL_JWT_SECRET} - HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} - HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public - HASURA_GRAPHQL_LOG_LEVEL: debug - HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' - healthcheck: - test: - - CMD-SHELL - - curl http://localhost:8080/healthz > /dev/null 2>&1 - timeout: 60s - interval: 30s - start_period: 90s - labels: - - 'traefik.enable=true' - - 'traefik.http.routers.hasura.rule=Host(`${PROXY_HOST}`, `localhost`) && PathPrefix(`/`)' - - 'traefik.http.routers.hasura.entrypoints=web' - auth: - image: nhost/hasura-auth:0.24 - depends_on: - - postgres - - graphql-engine - restart: always - volumes: - - ./emails:/app/email-templates - environment: - AUTH_HOST: '0.0.0.0' - HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD:-secretpgpassword}@postgres:5432/postgres - HASURA_GRAPHQL_GRAPHQL_URL: http://graphql-engine:8080/v1/graphql - HASURA_GRAPHQL_JWT_SECRET: ${HASURA_GRAPHQL_JWT_SECRET} - HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} - AUTH_CLIENT_URL: ${AUTH_CLIENT_URL:-http://localhost:3000} - AUTH_SMTP_HOST: mailhog - AUTH_SMTP_PORT: 1025 - AUTH_SMTP_USER: user - AUTH_SMTP_PASS: password - AUTH_SMTP_SENDER: mail@example.com - expose: - - 4000 - labels: - - 'traefik.enable=true' - - 'traefik.http.middlewares.strip-auth.stripprefix.prefixes=/v1/auth' - - 'traefik.http.routers.auth.rule=Host(`${PROXY_HOST}`, `localhost`) && PathPrefix(`/v1/auth`)' - - 'traefik.http.routers.auth.middlewares=strip-auth@docker' - - 'traefik.http.routers.auth.entrypoints=web' - storage: - image: nhost/hasura-storage:0.4.1 - depends_on: - - postgres - - graphql-engine - - minio - restart: always - expose: - - 8000 - environment: - PUBLIC_URL: ${PROXY_URL} - HASURA_METADATA: 1 - HASURA_ENDPOINT: http://graphql-engine:8080/v1 - HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} - S3_ACCESS_KEY: ${STORAGE_ACCESS_KEY} - S3_SECRET_KEY: ${STORAGE_SECRET_KEY} - S3_ENDPOINT: http://minio:8484 - S3_BUCKET: nhost - POSTGRES_MIGRATIONS: 1 - POSTGRES_MIGRATIONS_SOURCE: postgres://postgres:${POSTGRES_PASSWORD:-secretpgpassword}@postgres:5432/postgres?sslmode=disable - labels: - - 'traefik.enable=true' - - 'traefik.http.routers.storage.rule=Host(`${PROXY_HOST}`, `localhost`) && PathPrefix(`/v1/storage`)' - - 'traefik.http.routers.storage.entrypoints=web' - # Rewrite the path so it matches with the new storage API path introduced in hasura-storage 0.2 - - 'traefik.http.middlewares.strip-suffix.replacepathregex.regex=^/v1/storage/(.*)' - - 'traefik.http.middlewares.strip-suffix.replacepathregex.replacement=/v1/$$1' - - 'traefik.http.routers.storage.middlewares=strip-suffix@docker' - command: serve - functions: - image: nhost/functions:1.0.0 - labels: - - 'traefik.enable=true' - - 'traefik.http.middlewares.strip-functions.stripprefix.prefixes=/v1/functions' - - 'traefik.http.routers.functions.rule=Host(`${PROXY_HOST}`, `localhost`) && PathPrefix(`/v1/functions`)' - - 'traefik.http.routers.functions.middlewares=strip-functions@docker' - - 'traefik.http.routers.functions.entrypoints=web' - restart: always - expose: - - 3000 - volumes: - - .:/opt/project - - functions_node_modules:/opt/project/node_modules - - /opt/project/data/ - - /opt/project/initdb.d/ - minio: - image: minio/minio:RELEASE.2021-09-24T00-24-24Z - entrypoint: sh - command: -c 'mkdir -p /data/nhost && /opt/bin/minio server --address :8484 /data' - environment: - MINIO_ROOT_USER: ${STORAGE_ACCESS_KEY} - MINIO_ROOT_PASSWORD: ${STORAGE_SECRET_KEY} - ports: - - ${MINIO_PORT:-8484}:8484 - volumes: - - ./data/minio:/data - mailhog: - image: mailhog/mailhog - environment: - SMTP_HOST: ${AUTH_SMTP_HOST:-mailhog} - SMTP_PORT: ${AUTH_SMTP_PORT:-1025} - SMTP_PASS: ${AUTH_SMTP_PASS:-password} - SMTP_USER: ${AUTH_SMTP_USER:-user} - SMTP_SECURE: '${AUTH_SMTP_SECURE:-false}' - SMTP_SENDER: ${AUTH_SMTP_SENDER:-hbp@hbp.com} - ports: - - ${AUTH_SMTP_PORT:-1025}:1025 - - 8025:8025 - volumes: - - ./data/mailhog:/maildir - dashboard: - image: nhost/dashboard:0.21.1 - environment: - NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL: ${NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL} - NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL: ${NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL} - NEXT_PUBLIC_NHOST_HASURA_API_URL: ${NEXT_PUBLIC_NHOST_HASURA_API_URL} - NEXT_PUBLIC_NHOST_ADMIN_SECRET: ${NEXT_PUBLIC_NHOST_ADMIN_SECRET} - NEXT_PUBLIC_NHOST_AUTH_URL: ${NEXT_PUBLIC_NHOST_AUTH_URL} - NEXT_PUBLIC_NHOST_GRAPHQL_URL: ${NEXT_PUBLIC_NHOST_GRAPHQL_URL} - NEXT_PUBLIC_NHOST_STORAGE_URL: ${NEXT_PUBLIC_NHOST_STORAGE_URL} - NEXT_PUBLIC_NHOST_FUNCTIONS_URL: ${NEXT_PUBLIC_NHOST_FUNCTIONS_URL} - NEXT_PUBLIC_NHOST_CONFIGSERVER_URL: ${NEXT_PUBLIC_NHOST_CONFIGSERVER_URL} - expose: - - 3000 - labels: - - 'traefik.enable=true' - - 'traefik.http.routers.nhost.rule=Host(`${NHOST_HOST}`)' - - 'traefik.http.routers.nhost.entrypoints=admin' - # If you would like to protect your dashboard with a username and password if it is publicly-facing, uncomment and fill in the following lines below according to the documentation at https://doc.traefik.io/traefik/middlewares/http/basicauth/ - #- "traefik.http.routers.nhost.middlewares=auth" - #- "traefik.http.middlewares.auth.basicauth.users= + auth: + image: nhost/hasura-auth:0.37.1 + depends_on: + graphql: + condition: service_healthy + postgres: + condition: service_healthy + environment: + AUTH_ACCESS_CONTROL_ALLOWED_EMAIL_DOMAINS: "" + AUTH_ACCESS_CONTROL_ALLOWED_EMAILS: "" + AUTH_ACCESS_CONTROL_ALLOWED_REDIRECT_URLS: "" + AUTH_ACCESS_CONTROL_BLOCKED_EMAIL_DOMAINS: "" + AUTH_ACCESS_CONTROL_BLOCKED_EMAILS: "" + AUTH_ACCESS_TOKEN_EXPIRES_IN: "900" + AUTH_ANONYMOUS_USERS_ENABLED: "false" + AUTH_API_PREFIX: /v1 + AUTH_CLIENT_URL: http://localhost:3000 + AUTH_CONCEAL_ERRORS: "false" + AUTH_DISABLE_NEW_USERS: "false" + AUTH_DISABLE_SIGNUP: "false" + AUTH_EMAIL_PASSWORDLESS_ENABLED: "false" + AUTH_EMAIL_SIGNIN_EMAIL_VERIFIED_REQUIRED: "${AUTH_EMAIL_SIGNIN_EMAIL_VERIFIED_REQUIRED}" + AUTH_GRAVATAR_DEFAULT: blank + AUTH_GRAVATAR_ENABLED: "true" + AUTH_GRAVATAR_RATING: g + AUTH_HOST: 0.0.0.0 + AUTH_JWT_CUSTOM_CLAIMS: '{}' + AUTH_LOCALE_ALLOWED_LOCALES: en + AUTH_LOCALE_DEFAULT: en + AUTH_MFA_ENABLED: "false" + AUTH_MFA_TOTP_ISSUER: "" + AUTH_OTP_EMAIL_ENABLED: "false" + AUTH_PASSWORD_HIBP_ENABLED: "false" + AUTH_PASSWORD_MIN_LENGTH: "9" + AUTH_PORT: "4000" + AUTH_RATE_LIMIT_BRUTE_FORCE_BURST: "10" + AUTH_RATE_LIMIT_BRUTE_FORCE_INTERVAL: 5m + AUTH_RATE_LIMIT_EMAIL_BURST: "10" + AUTH_RATE_LIMIT_EMAIL_INTERVAL: 1h + AUTH_RATE_LIMIT_EMAIL_IS_GLOBAL: "true" + AUTH_RATE_LIMIT_ENABLE: "true" + AUTH_RATE_LIMIT_GLOBAL_BURST: "100" + AUTH_RATE_LIMIT_GLOBAL_INTERVAL: 1m + AUTH_RATE_LIMIT_SIGNUPS_BURST: "10" + AUTH_RATE_LIMIT_SIGNUPS_INTERVAL: 5m + AUTH_RATE_LIMIT_SMS_BURST: "10" + AUTH_RATE_LIMIT_SMS_INTERVAL: 1h + AUTH_REFRESH_TOKEN_EXPIRES_IN: "2592000" + AUTH_REQUIRE_ELEVATED_CLAIM: disabled + AUTH_SERVER_URL: http://${AUTH_URL}/v1 + AUTH_SMTP_AUTH_METHOD: LOGIN + AUTH_SMTP_HOST: mailhog + AUTH_SMTP_PASS: password + AUTH_SMTP_PORT: "1025" + AUTH_SMTP_SECURE: "false" + AUTH_SMTP_SENDER: hasura-auth@example.com + AUTH_SMTP_USER: user + AUTH_TURNSTILE_SECRET: "" + AUTH_USER_DEFAULT_ALLOWED_ROLES: user,me + AUTH_USER_DEFAULT_ROLE: user + HASURA_GRAPHQL_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + HASURA_GRAPHQL_GRAPHQL_URL: http://graphql:8080/v1/graphql + HASURA_GRAPHQL_JWT_SECRET: ${JWT_SECRET} + POSTGRES_MIGRATIONS_CONNECTION: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + healthcheck: + test: + - CMD + - wget + - --spider + - -S + - http://localhost:4000/healthz + timeout: 60s + interval: 5s + start_period: 60s + labels: + traefik.enable: "true" + traefik.http.routers.auth.entrypoints: web + traefik.http.routers.auth.rule: Host(`${AUTH_URL}`) + traefik.http.routers.auth.service: auth + traefik.http.routers.auth.tls: "false" + traefik.http.services.auth.loadbalancer.server.port: "4000" + restart: always + volumes: + - type: bind + source: nhost/emails + target: /app/email-templates + read_only: false + + console: + image: nhost/graphql-engine:v2.36.9-ce.cli-migrations-v3 + depends_on: + graphql: + condition: service_healthy + entrypoint: + - hasura-cli + command: + - console + - --no-browser + - --endpoint=http://graphql:8080 + - --address=0.0.0.0 + - --console-port=9695 + - --api-port=80 + - --api-host=http://${GRAPHQL_URL} + - --console-hge-endpoint=http://${GRAPHQL_URL} + environment: + GRAPHITE_WEBHOOK_SECRET: "" + HASURA_GRAPHQL_ADMIN_INTERNAL_ERRORS: "true" + HASURA_GRAPHQL_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets + HASURA_GRAPHQL_CORS_DOMAIN: '*' + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + HASURA_GRAPHQL_DEV_MODE: "true" + HASURA_GRAPHQL_DISABLE_CORS: "false" + HASURA_GRAPHQL_ENABLE_ALLOWLIST: "false" + HASURA_GRAPHQL_ENABLE_CONSOLE: "true" + HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS: "false" + HASURA_GRAPHQL_ENABLE_TELEMETRY: "false" + HASURA_GRAPHQL_ENABLED_APIS: metadata,graphql,pgdump,config + HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup,http-log,webhook-log,websocket-log + HASURA_GRAPHQL_EVENTS_HTTP_POOL_SIZE: "100" + HASURA_GRAPHQL_INFER_FUNCTION_PERMISSIONS: "true" + HASURA_GRAPHQL_JWT_SECRET: ${JWT_SECRET} + HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_BATCH_SIZE: "100" + HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_REFETCH_INTERVAL: "1000" + HASURA_GRAPHQL_LOG_LEVEL: warn + HASURA_GRAPHQL_PG_CONNECTIONS: "50" + HASURA_GRAPHQL_PG_TIMEOUT: "180" + HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES: "false" + HASURA_GRAPHQL_TX_ISOLATION: read-committed + HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public + HASURA_GRAPHQL_USE_PREPARED_STATEMENTS: "true" + HASURA_GRAPHQL_WS_READ_COOKIE: "false" + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:0.0.0.0 + - ${STORAGE_URL}:host-gateway + healthcheck: + test: + - CMD-SHELL + - timeout 1s bash -c ':> /dev/tcp/127.0.0.1/9695' || exit 1 + timeout: 60s + interval: 5s + start_period: 60s + labels: + traefik.enable: "true" + traefik.http.routers.console.entrypoints: web + traefik.http.routers.console.rule: Host(`${GRAPHQL_URL}`) + traefik.http.routers.console.service: console + traefik.http.routers.console.tls: "false" + traefik.http.routers.migrate.entrypoints: web + traefik.http.routers.migrate.rule: Host(`${GRAPHQL_URL}`) && PathPrefix(`/apis/`) + traefik.http.routers.migrate.service: migrate + traefik.http.routers.migrate.tls: "false" + traefik.http.services.console.loadbalancer.server.port: "9695" + traefik.http.services.migrate.loadbalancer.server.port: "80" + restart: always + volumes: + - type: bind + source: nhost + target: /app + read_only: false + working_dir: /app + + dashboard: + image: nhost/dashboard:2.20.0 + environment: + NEXT_PUBLIC_ENV: dev + NEXT_PUBLIC_NHOST_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + NEXT_PUBLIC_NHOST_AUTH_URL: http://${AUTH_URL}/v1 + NEXT_PUBLIC_NHOST_CONFIGSERVER_URL: http://unused.in.self.hosting + NEXT_PUBLIC_NHOST_FUNCTIONS_URL: http://${FUNCTIONS_URL}/v1 + NEXT_PUBLIC_NHOST_GRAPHQL_URL: http://${GRAPHQL_URL}/v1/graphql + NEXT_PUBLIC_NHOST_HASURA_API_URL: http://${GRAPHQL_URL} + NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL: http://${GRAPHQL_URL}/console + NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL: http://${GRAPHQL_URL} + NEXT_PUBLIC_NHOST_PLATFORM: "false" + NEXT_PUBLIC_NHOST_STORAGE_URL: http://${STORAGE_URL}/v1 + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + labels: + traefik.enable: "true" + traefik.http.routers.dashboard.entrypoints: web + traefik.http.routers.dashboard.rule: Host(`${DASHBOARD_URL}`) + traefik.http.routers.dashboard.service: dashboard + traefik.http.routers.dashboard.tls: "false" + traefik.http.services.dashboard.loadbalancer.server.port: "3000" + restart: "" + working_dir: "" + + functions: + image: nhost/functions:22-1.4.0 + environment: + GRAPHITE_WEBHOOK_SECRET: "" + HASURA_GRAPHQL_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + HASURA_GRAPHQL_GRAPHQL_URL: http://graphql:8080/v1/graphql + HASURA_GRAPHQL_JWT_SECRET: ${JWT_SECRET} + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + healthcheck: + test: + - CMD + - wget + - --spider + - -S + - http://localhost:3000/healthz + timeout: 600s + interval: 5s + start_period: 600s + labels: + traefik.enable: "true" + traefik.http.middlewares.replace-functions.replacepathregex.regex: /v1(/|$$)(.*) + traefik.http.middlewares.replace-functions.replacepathregex.replacement: /$$2 + traefik.http.routers.functions.entrypoints: web + traefik.http.routers.functions.middlewares: replace-functions + traefik.http.routers.functions.rule: Host(`${FUNCTIONS_URL}`) && PathPrefix(`/v1`) + traefik.http.routers.functions.service: functions + traefik.http.routers.functions.tls: "false" + traefik.http.services.functions.loadbalancer.server.port: "3000" + restart: always + volumes: + - type: bind + source: . + target: /opt/project + read_only: false + - type: volume + source: root_node_modules + target: /opt/project/node_modules + read_only: false + - type: volume + source: functions_node_modules + target: /opt/project/functions/node_modules + read_only: false + + graphql: + image: nhost/graphql-engine:v2.36.9-ce + depends_on: + postgres: + condition: service_healthy + environment: + GRAPHITE_WEBHOOK_SECRET: "" + HASURA_GRAPHQL_ADMIN_INTERNAL_ERRORS: "true" + HASURA_GRAPHQL_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets + HASURA_GRAPHQL_CORS_DOMAIN: '*' + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + HASURA_GRAPHQL_DEV_MODE: "true" + HASURA_GRAPHQL_DISABLE_CORS: "false" + HASURA_GRAPHQL_ENABLE_ALLOWLIST: "false" + HASURA_GRAPHQL_ENABLE_CONSOLE: "true" + HASURA_GRAPHQL_ENABLE_REMOTE_SCHEMA_PERMISSIONS: "false" + HASURA_GRAPHQL_ENABLE_TELEMETRY: "false" + HASURA_GRAPHQL_ENABLED_APIS: metadata,graphql,pgdump,config + HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup,http-log,webhook-log,websocket-log + HASURA_GRAPHQL_EVENTS_HTTP_POOL_SIZE: "100" + HASURA_GRAPHQL_INFER_FUNCTION_PERMISSIONS: "true" + HASURA_GRAPHQL_JWT_SECRET: ${JWT_SECRET} + HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_BATCH_SIZE: "100" + HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_REFETCH_INTERVAL: "1000" + HASURA_GRAPHQL_LOG_LEVEL: warn + HASURA_GRAPHQL_PG_CONNECTIONS: "50" + HASURA_GRAPHQL_PG_TIMEOUT: "180" + HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES: "false" + HASURA_GRAPHQL_TX_ISOLATION: read-committed + HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public + HASURA_GRAPHQL_USE_PREPARED_STATEMENTS: "true" + HASURA_GRAPHQL_WS_READ_COOKIE: "false" + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + healthcheck: + test: + - CMD-SHELL + - curl http://localhost:8080/healthz > /dev/null 2>&1 + timeout: 60s + interval: 5s + start_period: 60s + labels: + traefik.enable: "true" + traefik.http.middlewares.replace-graphql.replacepathregex.regex: /v1(/|$$)(.*) + traefik.http.middlewares.replace-graphql.replacepathregex.replacement: /v1/graphql$$2 + traefik.http.routers.hasura.entrypoints: web + traefik.http.routers.hasura.rule: Host(`${GRAPHQL_URL}`) && ( PathPrefix(`/v1`) || PathPrefix(`/v2`) || PathPrefix(`/api/`) || PathPrefix(`/console/assets`) ) + traefik.http.routers.hasura.service: hasura + traefik.http.routers.hasura.tls: "false" + traefik.http.services.graphql.loadbalancer.server.port: "8080" + traefik.http.services.hasura.loadbalancer.server.port: "8080" + restart: always + + mailhog: + image: jcalonso/mailhog:v1.0.1 + environment: + SMTP_HOST: mailhog + SMTP_PASS: password + SMTP_PORT: "1025" + SMTP_SECURE: "false" + SMTP_SENDER: hasura-auth@example.com + SMTP_USER: user + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + labels: + traefik.enable: "true" + traefik.http.routers.mailhog.entrypoints: web + traefik.http.routers.mailhog.rule: Host(`${MAILHOG_URL}`) + traefik.http.routers.mailhog.service: mailhog + traefik.http.routers.mailhog.tls: "false" + traefik.http.services.mailhog.loadbalancer.server.port: "8025" + restart: always + volumes: + - type: volume + source: mailhog + target: /maildir + + minio: + image: minio/minio:RELEASE.2025-02-28T09-55-16Z + entrypoint: + - /bin/sh + command: + - -c + - mkdir -p /data/nhost && /usr/bin/minio server --address :9000 /data + environment: + MINIO_ROOT_USER: ${STORAGE_ACCESS_KEY} + MINIO_ROOT_PASSWORD: ${STORAGE_SECRET_KEY} + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + restart: always + volumes: + - type: volume + source: minio + target: /data + + postgres: + image: postgres:16 + environment: + POSTGRES_DB: postgres + POSTGRES_DEV_INSECURE: "true" + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_USER: postgres + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + healthcheck: + test: + - CMD-SHELL + - pg_isready -U postgres + - -d + - postgres + - -q + timeout: 60s + interval: 5s + start_period: 60s + ports: + - mode: ingress + target: 5432 + published: "5432" + protocol: tcp + restart: always + volumes: + - type: volume + source: pgdata + target: /var/lib/postgresql/ + read_only: false + - type: bind + source: ./initdb.d + target: /docker-entrypoint-initdb.d + read_only: true + + storage: + image: nhost/hasura-storage:0.7.1 + depends_on: + graphql: + condition: service_healthy + minio: + condition: service_started + postgres: + condition: service_healthy + command: + - serve + environment: + BIND: :5000 + HASURA_ENDPOINT: http://graphql:8080/v1 + HASURA_GRAPHQL_ADMIN_SECRET: ${GRAPHQL_ADMIN_SECRET} + HASURA_METADATA: "1" + POSTGRES_MIGRATIONS: "1" + POSTGRES_MIGRATIONS_SOURCE: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres?sslmode=disable + PUBLIC_URL: http://${STORAGE_URL} + S3_ACCESS_KEY: ${STORAGE_ACCESS_KEY} + S3_BUCKET: nhost + S3_ENDPOINT: http://minio:9000 + S3_REGION: "" + S3_ROOT_FOLDER: "" + S3_SECRET_KEY: ${STORAGE_SECRET_KEY} + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + labels: + traefik.enable: "true" + traefik.http.routers.storage.entrypoints: web + traefik.http.routers.storage.rule: Host(`${STORAGE_URL}`) && PathPrefix(`/v1`) + traefik.http.routers.storage.service: storage + traefik.http.routers.storage.tls: "false" + traefik.http.services.storage.loadbalancer.server.port: "5000" + restart: always + + traefik: + image: traefik:v3.1 + command: + - --api.insecure=true + - --providers.docker=true + - --providers.file.directory=/opt/traefik + - --providers.file.watch=true + - --providers.docker.exposedbydefault=false + - --providers.docker.constraints=Label(`com.docker.compose.project`,`docker-compose`) + - --entrypoints.web.address=:80 + extra_hosts: + - host.docker.internal:host-gateway + - ${AUTH_URL}:host-gateway + - ${DB_URL}:host-gateway + - ${FUNCTIONS_URL}:host-gateway + - ${GRAPHQL_URL}:host-gateway + - ${STORAGE_URL}:host-gateway + ports: + - mode: ingress + target: 80 + published: "80" + protocol: tcp + restart: always + volumes: + - type: bind + source: /var/run/docker.sock + target: /var/run/docker.sock + read_only: true + volumes: - functions_node_modules: + functions_node_modules: {} + root_node_modules: {} + pgdata: {} + mailhog: {} + minio: {} diff --git a/examples/docker-compose/emails/en/email-confirm-change/body.html b/examples/docker-compose/emails/en/email-confirm-change/body.html deleted file mode 100644 index 367c57f1c..000000000 --- a/examples/docker-compose/emails/en/email-confirm-change/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Confirm Email Change

-

Use this link to confirm changing email:

-

- - Change email - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/en/email-verify/body.html b/examples/docker-compose/emails/en/email-verify/body.html deleted file mode 100644 index 754cd6ce9..000000000 --- a/examples/docker-compose/emails/en/email-verify/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Verify Email

-

Use this link to verify your email:

-

- - Verify Email - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/en/password-reset/body.html b/examples/docker-compose/emails/en/password-reset/body.html deleted file mode 100644 index 4a2c0667d..000000000 --- a/examples/docker-compose/emails/en/password-reset/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Reset Password

-

Use this link to reset your password:

-

- - Reset password - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/en/signin-passwordless/body.html b/examples/docker-compose/emails/en/signin-passwordless/body.html deleted file mode 100644 index 2c0a990fb..000000000 --- a/examples/docker-compose/emails/en/signin-passwordless/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Magic Link

-

Use this link to securely sign in:

-

- - Sign In - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/fr/email-confirm-change/body.html b/examples/docker-compose/emails/fr/email-confirm-change/body.html deleted file mode 100644 index 918c4fade..000000000 --- a/examples/docker-compose/emails/fr/email-confirm-change/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Confirmer changement de courriel

-

Utilisez ce lien pour confirmer le changement de courriel:

-

- - Changer courriel - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/fr/email-verify/body.html b/examples/docker-compose/emails/fr/email-verify/body.html deleted file mode 100644 index b83659495..000000000 --- a/examples/docker-compose/emails/fr/email-verify/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Vérifiez votre courriel

-

Utilisez ce lien pour vérifier votre courriel:

-

- - Vérifier courriel - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/fr/password-reset/body.html b/examples/docker-compose/emails/fr/password-reset/body.html deleted file mode 100644 index f84248c7c..000000000 --- a/examples/docker-compose/emails/fr/password-reset/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Réinitializer votre mot de passe

-

Utilisez ce lien pour réinitializer votre mot de passe:

-

- - Réinitializer mot de passe - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/emails/fr/signin-passwordless/body.html b/examples/docker-compose/emails/fr/signin-passwordless/body.html deleted file mode 100644 index b9a765b30..000000000 --- a/examples/docker-compose/emails/fr/signin-passwordless/body.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -

Lien magique

-

Utilisez ce lien pour vous connecter de façon sécuritaire:

-

- - Connexion - -

- - - \ No newline at end of file diff --git a/examples/docker-compose/functions/echo.ts b/examples/docker-compose/functions/echo.ts new file mode 100644 index 000000000..a902bbe4f --- /dev/null +++ b/examples/docker-compose/functions/echo.ts @@ -0,0 +1,13 @@ +import { Request, Response } from 'express' +import process from 'process' + +export default (req: Request, res: Response) => { + res.status(200).json( + { + headers: req.headers, + query: req.query, + node: process.version, + arch: process.arch, + }, + ) +} diff --git a/examples/docker-compose/functions/pnpm-lock.yaml b/examples/docker-compose/functions/pnpm-lock.yaml index 2b9f1883a..9b60ae178 100644 --- a/examples/docker-compose/functions/pnpm-lock.yaml +++ b/examples/docker-compose/functions/pnpm-lock.yaml @@ -1,5 +1,9 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/examples/docker-compose/nhost/config.yaml b/examples/docker-compose/nhost/config.yaml new file mode 100644 index 000000000..0a70affa4 --- /dev/null +++ b/examples/docker-compose/nhost/config.yaml @@ -0,0 +1 @@ +version: 3 diff --git a/examples/docker-compose/nhost/emails/bg/email-confirm-change/body.html b/examples/docker-compose/nhost/emails/bg/email-confirm-change/body.html new file mode 100644 index 000000000..437face7d --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/email-confirm-change/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Потвърдете смяната на вашия имейл

+

Използвайте посочения линк, за да повърдите смяната на имейл:

+ + + + + + +
+ Смени имейл +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/bg/email-confirm-change/subject.txt b/examples/docker-compose/nhost/emails/bg/email-confirm-change/subject.txt new file mode 100644 index 000000000..790147e6c --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/email-confirm-change/subject.txt @@ -0,0 +1 @@ +Потвърждение за смяна на имейл \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/bg/email-verify/body.html b/examples/docker-compose/nhost/emails/bg/email-verify/body.html new file mode 100644 index 000000000..9a9604f40 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/email-verify/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Потвърдете вашия имейл

+

Използвайте посочения линк, за да потвърдите вашия имейл:

+ + + + + + +
+ Потвърдете имейл +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/bg/email-verify/subject.txt b/examples/docker-compose/nhost/emails/bg/email-verify/subject.txt new file mode 100644 index 000000000..f0109ef96 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/email-verify/subject.txt @@ -0,0 +1 @@ +Потвърждаване на имейл \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/bg/password-reset/body.html b/examples/docker-compose/nhost/emails/bg/password-reset/body.html new file mode 100644 index 000000000..d69b734de --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/password-reset/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Смяна на парола

+

Използвайте посочения линк, за да смените вашата парола:

+ + + + + + +
+ Смяна на парола +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/bg/password-reset/subject.txt b/examples/docker-compose/nhost/emails/bg/password-reset/subject.txt new file mode 100644 index 000000000..11b95a290 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/password-reset/subject.txt @@ -0,0 +1 @@ +Смяна на парола \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/bg/signin-otp/body.html b/examples/docker-compose/nhost/emails/bg/signin-otp/body.html new file mode 100644 index 000000000..2fab88cba --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/signin-otp/body.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
+

One-time Password

+

За да влезете в ${redirectTo}, моля, използвайте следната еднократна парола:

+ + + + + + +

${ticket}

+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/bg/signin-otp/subject.txt b/examples/docker-compose/nhost/emails/bg/signin-otp/subject.txt new file mode 100644 index 000000000..ec9e5f7e3 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/signin-otp/subject.txt @@ -0,0 +1 @@ +Еднократна парола за ${redirectTo} diff --git a/examples/docker-compose/nhost/emails/bg/signin-passwordless-sms/body.txt b/examples/docker-compose/nhost/emails/bg/signin-passwordless-sms/body.txt new file mode 100644 index 000000000..ccb34253e --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/signin-passwordless-sms/body.txt @@ -0,0 +1 @@ +Вашият код е ${code}. \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/bg/signin-passwordless/body.html b/examples/docker-compose/nhost/emails/bg/signin-passwordless/body.html new file mode 100644 index 000000000..8d4b40cd2 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/signin-passwordless/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Магически линк за вход

+

Използвайте посочения линк за защитен и бърз вход:

+ + + + + + +
+ Вход +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/bg/signin-passwordless/subject.txt b/examples/docker-compose/nhost/emails/bg/signin-passwordless/subject.txt new file mode 100644 index 000000000..945efccb7 --- /dev/null +++ b/examples/docker-compose/nhost/emails/bg/signin-passwordless/subject.txt @@ -0,0 +1 @@ +Магически линк за вход \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/cs/email-confirm-change/body.html b/examples/docker-compose/nhost/emails/cs/email-confirm-change/body.html new file mode 100644 index 000000000..b2b4da445 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/email-confirm-change/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Potvrzení změny emailové adresy

+

Použijte tento odkaz k potvrzení změny emailové adresy:

+ + + + + + +
+ Změnit email +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/cs/email-confirm-change/subject.txt b/examples/docker-compose/nhost/emails/cs/email-confirm-change/subject.txt new file mode 100644 index 000000000..52b99137e --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/email-confirm-change/subject.txt @@ -0,0 +1 @@ +Změna vaší emailové adresy \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/cs/email-verify/body.html b/examples/docker-compose/nhost/emails/cs/email-verify/body.html new file mode 100644 index 000000000..22671ba22 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/email-verify/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Ověření emailové adresy

+

Použijte tento odkaz k ověření vaší emailové adresy:

+ + + + + + +
+ Ověřit emailovou adresu +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/cs/email-verify/subject.txt b/examples/docker-compose/nhost/emails/cs/email-verify/subject.txt new file mode 100644 index 000000000..8e3eabacf --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/email-verify/subject.txt @@ -0,0 +1 @@ +Ověření vaší emailové adresy \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/cs/password-reset/body.html b/examples/docker-compose/nhost/emails/cs/password-reset/body.html new file mode 100644 index 000000000..3a3fa1d97 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/password-reset/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Obnova hesla

+

Použijte tento odkaz k obnovení vašeho hesla:

+ + + + + + +
+ Obnova hesla +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/cs/password-reset/subject.txt b/examples/docker-compose/nhost/emails/cs/password-reset/subject.txt new file mode 100644 index 000000000..7b8fba50b --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/password-reset/subject.txt @@ -0,0 +1 @@ +Obnova hesla \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/cs/signin-otp/body.html b/examples/docker-compose/nhost/emails/cs/signin-otp/body.html new file mode 100644 index 000000000..20115716a --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/signin-otp/body.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
+

One-time Password

+

Pro přihlášení do ${redirectTo}, prosím, použijte následující jednorázové heslo:

+ + + + + + +

${ticket}

+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/cs/signin-otp/subject.txt b/examples/docker-compose/nhost/emails/cs/signin-otp/subject.txt new file mode 100644 index 000000000..e2cd8c1da --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/signin-otp/subject.txt @@ -0,0 +1 @@ +Jednorázové heslo pro ${redirectTo} diff --git a/examples/docker-compose/nhost/emails/cs/signin-passwordless-sms/body.txt b/examples/docker-compose/nhost/emails/cs/signin-passwordless-sms/body.txt new file mode 100644 index 000000000..df330b769 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/signin-passwordless-sms/body.txt @@ -0,0 +1 @@ +Váš kód je ${code}. \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/cs/signin-passwordless/body.html b/examples/docker-compose/nhost/emails/cs/signin-passwordless/body.html new file mode 100644 index 000000000..f6f019747 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/signin-passwordless/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Magický odkaz

+

Použijte tento odkaz k bezpečnému přihlášení:

+ + + + + + +
+ Přihlášení +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/cs/signin-passwordless/subject.txt b/examples/docker-compose/nhost/emails/cs/signin-passwordless/subject.txt new file mode 100644 index 000000000..8d9a66a25 --- /dev/null +++ b/examples/docker-compose/nhost/emails/cs/signin-passwordless/subject.txt @@ -0,0 +1 @@ +Bezpečný odkaz k přihlášení \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/en/email-confirm-change/body.html b/examples/docker-compose/nhost/emails/en/email-confirm-change/body.html new file mode 100644 index 000000000..68034c566 --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/email-confirm-change/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Confirm Email Change

+

Use this link to confirm changing email:

+ + + + + + +
+ Change Email +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/en/email-confirm-change/subject.txt b/examples/docker-compose/nhost/emails/en/email-confirm-change/subject.txt similarity index 100% rename from examples/docker-compose/emails/en/email-confirm-change/subject.txt rename to examples/docker-compose/nhost/emails/en/email-confirm-change/subject.txt diff --git a/examples/docker-compose/nhost/emails/en/email-verify/body.html b/examples/docker-compose/nhost/emails/en/email-verify/body.html new file mode 100644 index 000000000..e98e013ab --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/email-verify/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Verify Email

+

Use this link to verify your email:

+ + + + + + +
+ Verify Email +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/en/email-verify/subject.txt b/examples/docker-compose/nhost/emails/en/email-verify/subject.txt similarity index 100% rename from examples/docker-compose/emails/en/email-verify/subject.txt rename to examples/docker-compose/nhost/emails/en/email-verify/subject.txt diff --git a/examples/docker-compose/nhost/emails/en/password-reset/body.html b/examples/docker-compose/nhost/emails/en/password-reset/body.html new file mode 100644 index 000000000..bd3b5b483 --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/password-reset/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Reset Password

+

Use this link to reset your password:

+ + + + + + +
+ Reset Password +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/en/password-reset/subject.txt b/examples/docker-compose/nhost/emails/en/password-reset/subject.txt similarity index 100% rename from examples/docker-compose/emails/en/password-reset/subject.txt rename to examples/docker-compose/nhost/emails/en/password-reset/subject.txt diff --git a/examples/docker-compose/nhost/emails/en/signin-otp/body.html b/examples/docker-compose/nhost/emails/en/signin-otp/body.html new file mode 100644 index 000000000..95acc397e --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/signin-otp/body.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
+

One-time Password

+

To sign in to ${redirectTo}, please, use the following one-time password:

+ + + + + + +

${ticket}

+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/en/signin-otp/subject.txt b/examples/docker-compose/nhost/emails/en/signin-otp/subject.txt new file mode 100644 index 000000000..3da3fca7f --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/signin-otp/subject.txt @@ -0,0 +1 @@ +One-time password for ${redirectTo} diff --git a/examples/docker-compose/nhost/emails/en/signin-passwordless-sms/body.txt b/examples/docker-compose/nhost/emails/en/signin-passwordless-sms/body.txt new file mode 100644 index 000000000..f03ec5b88 --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/signin-passwordless-sms/body.txt @@ -0,0 +1 @@ +Your code is ${code}. \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/en/signin-passwordless/body.html b/examples/docker-compose/nhost/emails/en/signin-passwordless/body.html new file mode 100644 index 000000000..e8301b5ad --- /dev/null +++ b/examples/docker-compose/nhost/emails/en/signin-passwordless/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Magic Link

+

Use this link to securely sign in:

+ + + + + + +
+ Magic Link +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/en/signin-passwordless/subject.txt b/examples/docker-compose/nhost/emails/en/signin-passwordless/subject.txt similarity index 100% rename from examples/docker-compose/emails/en/signin-passwordless/subject.txt rename to examples/docker-compose/nhost/emails/en/signin-passwordless/subject.txt diff --git a/examples/docker-compose/nhost/emails/es/email-confirm-change/body.html b/examples/docker-compose/nhost/emails/es/email-confirm-change/body.html new file mode 100644 index 000000000..5cb7388be --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/email-confirm-change/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Confirmar cambio de correo electrónico

+

Utiliza el siguiente enlace para confirmar el cambio de correo:

+ + + + + + +
+ Cambiar correo electrónico +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/es/email-confirm-change/subject.txt b/examples/docker-compose/nhost/emails/es/email-confirm-change/subject.txt new file mode 100644 index 000000000..6a7cf4069 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/email-confirm-change/subject.txt @@ -0,0 +1 @@ +Cambiar dirección de correo electrónico \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/es/email-verify/body.html b/examples/docker-compose/nhost/emails/es/email-verify/body.html new file mode 100644 index 000000000..b5b93b813 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/email-verify/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Verificar correo electrónico

+

Utilza el siguiente enlace para verificar tu correo:

+ + + + + + +
+ Verificar correo electrónico +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/es/email-verify/subject.txt b/examples/docker-compose/nhost/emails/es/email-verify/subject.txt new file mode 100644 index 000000000..cf15cb278 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/email-verify/subject.txt @@ -0,0 +1 @@ +Verifica tu correo electrónico \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/es/password-reset/body.html b/examples/docker-compose/nhost/emails/es/password-reset/body.html new file mode 100644 index 000000000..c02bbc800 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/password-reset/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Recuperar contraseña

+

Utiliza el siguiente enlace para recuperar tu contraseña:

+ + + + + + +
+ Recuperar contraseña +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/es/password-reset/subject.txt b/examples/docker-compose/nhost/emails/es/password-reset/subject.txt new file mode 100644 index 000000000..417d1c730 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/password-reset/subject.txt @@ -0,0 +1 @@ +Recuperar contraseña \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/es/signin-otp/body.html b/examples/docker-compose/nhost/emails/es/signin-otp/body.html new file mode 100644 index 000000000..3effba1cd --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/signin-otp/body.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
+

One-time Password

+

Para iniciar sesión en ${redirectTo}, por favor, utilice la siguiente contraseña de un solo uso:

+ + + + + + +

${ticket}

+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/es/signin-otp/subject.txt b/examples/docker-compose/nhost/emails/es/signin-otp/subject.txt new file mode 100644 index 000000000..f041fe0c5 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/signin-otp/subject.txt @@ -0,0 +1 @@ +Contraseña de un solo uso para ${redirectTo} diff --git a/examples/docker-compose/nhost/emails/es/signin-passwordless-sms/body.txt b/examples/docker-compose/nhost/emails/es/signin-passwordless-sms/body.txt new file mode 100644 index 000000000..c74950dd2 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/signin-passwordless-sms/body.txt @@ -0,0 +1 @@ +Tu código es ${code}. \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/es/signin-passwordless/body.html b/examples/docker-compose/nhost/emails/es/signin-passwordless/body.html new file mode 100644 index 000000000..c1b67a841 --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/signin-passwordless/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Enlace mágico

+

Utiliza este enlace para iniciar sesión de forma segura:

+ + + + + + +
+ Iniciar sesión +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/es/signin-passwordless/subject.txt b/examples/docker-compose/nhost/emails/es/signin-passwordless/subject.txt new file mode 100644 index 000000000..cbd5ab19f --- /dev/null +++ b/examples/docker-compose/nhost/emails/es/signin-passwordless/subject.txt @@ -0,0 +1 @@ +Enlace de acceso seguro \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/fr/email-confirm-change/body.html b/examples/docker-compose/nhost/emails/fr/email-confirm-change/body.html new file mode 100644 index 000000000..c4ba00737 --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/email-confirm-change/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Confirmer changement de courriel

+

Utilisez ce lien pour confirmer le changement de courriel:

+ + + + + + +
+ Changer courriel +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/fr/email-confirm-change/subject.txt b/examples/docker-compose/nhost/emails/fr/email-confirm-change/subject.txt similarity index 100% rename from examples/docker-compose/emails/fr/email-confirm-change/subject.txt rename to examples/docker-compose/nhost/emails/fr/email-confirm-change/subject.txt diff --git a/examples/docker-compose/nhost/emails/fr/email-verify/body.html b/examples/docker-compose/nhost/emails/fr/email-verify/body.html new file mode 100644 index 000000000..951c7c7fe --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/email-verify/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Vérifiez votre courriel

+

Utilisez ce lien pour vérifier votre courriel:

+ + + + + + +
+ Vérifier courriel +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/fr/email-verify/subject.txt b/examples/docker-compose/nhost/emails/fr/email-verify/subject.txt similarity index 100% rename from examples/docker-compose/emails/fr/email-verify/subject.txt rename to examples/docker-compose/nhost/emails/fr/email-verify/subject.txt diff --git a/examples/docker-compose/nhost/emails/fr/password-reset/body.html b/examples/docker-compose/nhost/emails/fr/password-reset/body.html new file mode 100644 index 000000000..8dc4da721 --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/password-reset/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Réinitialiser votre mot de passe

+

Utilisez ce lien pour réinitialiser votre mot de passe:

+ + + + + + +
+ Réinitialiser mot de passe +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/fr/password-reset/subject.txt b/examples/docker-compose/nhost/emails/fr/password-reset/subject.txt similarity index 100% rename from examples/docker-compose/emails/fr/password-reset/subject.txt rename to examples/docker-compose/nhost/emails/fr/password-reset/subject.txt diff --git a/examples/docker-compose/nhost/emails/fr/signin-otp/body.html b/examples/docker-compose/nhost/emails/fr/signin-otp/body.html new file mode 100644 index 000000000..773e33b83 --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/signin-otp/body.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
+

One-time Password

+

Pour vous connecter à ${redirectTo}, veuillez utiliser le mot de passe à usage unique suivant :

+ + + + + + +

${ticket}

+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/nhost/emails/fr/signin-otp/subject.txt b/examples/docker-compose/nhost/emails/fr/signin-otp/subject.txt new file mode 100644 index 000000000..f4156ed0e --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/signin-otp/subject.txt @@ -0,0 +1 @@ +Mot de passe à usage unique pour ${redirectTo} diff --git a/examples/docker-compose/nhost/emails/fr/signin-passwordless-sms/body.txt b/examples/docker-compose/nhost/emails/fr/signin-passwordless-sms/body.txt new file mode 100644 index 000000000..72d6ab249 --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/signin-passwordless-sms/body.txt @@ -0,0 +1 @@ +Votre code est ${code}. \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/fr/signin-passwordless/body.html b/examples/docker-compose/nhost/emails/fr/signin-passwordless/body.html new file mode 100644 index 000000000..a45f217bc --- /dev/null +++ b/examples/docker-compose/nhost/emails/fr/signin-passwordless/body.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + +
+

Lien magique

+

Utilisez ce lien pour vous connecter de façon sécurisée:

+ + + + + + +
+ Connexion +
+
+ + + + + + +
+ + + + + + + +
Nhost LogoPowered by Nhost
+
+
+ + diff --git a/examples/docker-compose/emails/fr/signin-passwordless/subject.txt b/examples/docker-compose/nhost/emails/fr/signin-passwordless/subject.txt similarity index 100% rename from examples/docker-compose/emails/fr/signin-passwordless/subject.txt rename to examples/docker-compose/nhost/emails/fr/signin-passwordless/subject.txt diff --git a/examples/docker-compose/nhost/emails/generator/README.md b/examples/docker-compose/nhost/emails/generator/README.md new file mode 100644 index 000000000..b01010786 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/README.md @@ -0,0 +1,23 @@ +# How to generate emails for a new locale + +The emails are made using (`react.email`)[https://react.email/] and they can be edited and previewd running the +following command at the root of the repo: + +```sh +pnpm dev:email +``` + +To generate email templates for a new locale, use the following command: + +```sh +pnpm generate:emails +``` + +Once the script finishes, a new folder will be created under the email-templates directory, named according +to the new locale. You can then edit the email text to match the specific locale’s language. + +For example to generate emails for the German locale (de) you run: + +```sh +pnpm generate:emails de +``` \ No newline at end of file diff --git a/examples/docker-compose/nhost/emails/generator/email-confirm-change.tsx b/examples/docker-compose/nhost/emails/generator/email-confirm-change.tsx new file mode 100644 index 000000000..3c2092982 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/email-confirm-change.tsx @@ -0,0 +1,129 @@ +import { + Body, + Button, + Column, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Row, + Section, + Text, +} from '@react-email/components'; +import * as React from 'react'; + +const logo = { + borderRadius: 0, + width: 20, + height: 20, +}; + +const main = { + backgroundColor: '#f5f5f5', + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', +}; + +const container = { + margin: '20px auto 0 auto', + padding: '20px', + maxWidth: '560px', + backgroundColor: '#ffffff', + borderRadius: 8, + border: '1px solid #ececec', +}; + +const heading = { + fontSize: '24px', + letterSpacing: '-0.5px', + lineHeight: '1.3', + fontWeight: '400', + color: '#484848', + marginTop: 0, +}; + +const paragraph = { + margin: '0 0 10px', + fontSize: '15px', + lineHeight: '1.4', + color: '#3c4149', +}; + +const buttonContainer = { + padding: '10px 0 0px', +}; + +const button = { + backgroundColor: '#0052CD', + borderRadius: '3px', + fontWeight: '600', + color: '#fff', + fontSize: '15px', + textDecoration: 'none', + textAlign: 'center' as const, + display: 'block', + padding: '11px 23px', +}; + +const reportLink = { + fontSize: '14px', + color: '#b4becc', +}; + +const hr = { + borderColor: '#dfe1e4', + margin: '20px 0 20px', +}; + +const logoColumn = { + width: '30px', +}; + +const linkColumn = { + margin: 0, +}; + +export function EmailConfirmChange() { + return ( + + + + + Confirm Email Change + + Use this link to confirm changing email: + +
+ +
+
+
+ + + Nhost Logo + + + + Powered by Nhost + + + +
+
+ + + ); +} + +export default EmailConfirmChange; diff --git a/examples/docker-compose/nhost/emails/generator/email-verify.tsx b/examples/docker-compose/nhost/emails/generator/email-verify.tsx new file mode 100644 index 000000000..e83724526 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/email-verify.tsx @@ -0,0 +1,127 @@ +import { + Body, + Button, + Column, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Row, + Section, + Text, +} from '@react-email/components'; +import * as React from 'react'; + +const logo = { + borderRadius: 0, + width: 20, + height: 20, +}; + +const main = { + backgroundColor: '#f5f5f5', + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', +}; + +const container = { + margin: '20px auto 0 auto', + padding: '20px', + maxWidth: '560px', + backgroundColor: '#ffffff', + borderRadius: 8, + border: '1px solid #ececec', +}; + +const heading = { + fontSize: '24px', + letterSpacing: '-0.5px', + lineHeight: '1.3', + fontWeight: '400', + color: '#484848', + marginTop: 0, +}; + +const paragraph = { + margin: '0 0 10px', + fontSize: '15px', + lineHeight: '1.4', + color: '#3c4149', +}; + +const buttonContainer = { + padding: '10px 0 0px', +}; + +const button = { + backgroundColor: '#0052CD', + borderRadius: '3px', + fontWeight: '600', + color: '#fff', + fontSize: '15px', + textDecoration: 'none', + textAlign: 'center' as const, + display: 'block', + padding: '11px 23px', +}; + +const reportLink = { + fontSize: '14px', + color: '#b4becc', +}; + +const hr = { + borderColor: '#dfe1e4', + margin: '20px 0 20px', +}; + +const logoColumn = { + width: '30px', +}; + +const linkColumn = { + margin: 0, +}; + +export function EmailVerify() { + return ( + + + + + Verify Email + Use this link to verify your email: +
+ +
+
+
+ + + Nhost Logo + + + + Powered by Nhost + + + +
+
+ + + ); +} + +export default EmailVerify; diff --git a/examples/docker-compose/nhost/emails/generator/password-reset.tsx b/examples/docker-compose/nhost/emails/generator/password-reset.tsx new file mode 100644 index 000000000..370c8a79c --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/password-reset.tsx @@ -0,0 +1,127 @@ +import { + Body, + Button, + Column, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Row, + Section, + Text, +} from '@react-email/components'; +import * as React from 'react'; + +const logo = { + borderRadius: 0, + width: 20, + height: 20, +}; + +const main = { + backgroundColor: '#f5f5f5', + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', +}; + +const container = { + margin: '20px auto 0 auto', + padding: '20px', + maxWidth: '560px', + backgroundColor: '#ffffff', + borderRadius: 8, + border: '1px solid #ececec', +}; + +const heading = { + fontSize: '24px', + letterSpacing: '-0.5px', + lineHeight: '1.3', + fontWeight: '400', + color: '#484848', + marginTop: 0, +}; + +const paragraph = { + margin: '0 0 10px', + fontSize: '15px', + lineHeight: '1.4', + color: '#3c4149', +}; + +const buttonContainer = { + padding: '10px 0 0px', +}; + +const button = { + backgroundColor: '#0052CD', + borderRadius: '3px', + fontWeight: '600', + color: '#fff', + fontSize: '15px', + textDecoration: 'none', + textAlign: 'center' as const, + display: 'block', + padding: '11px 23px', +}; + +const reportLink = { + fontSize: '14px', + color: '#b4becc', +}; + +const hr = { + borderColor: '#dfe1e4', + margin: '20px 0 20px', +}; + +const logoColumn = { + width: '30px', +}; + +const linkColumn = { + margin: 0, +}; + +export function PasswordReset() { + return ( + + + + + Reset Password + Use this link to reset your password: +
+ +
+
+
+ + + Nhost Logo + + + + Powered by Nhost + + + +
+
+ + + ); +} + +export default PasswordReset; diff --git a/examples/docker-compose/nhost/emails/generator/render-emails.ts b/examples/docker-compose/nhost/emails/generator/render-emails.ts new file mode 100644 index 000000000..907d4ad25 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/render-emails.ts @@ -0,0 +1,82 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import prettier from 'prettier'; +import { render } from '@react-email/components'; +import { EmailConfirmChange } from './email-confirm-change'; +import { EmailVerify } from './email-verify'; +import { PasswordReset } from './password-reset'; +import { SignInPasswordless } from './signin-passwordless'; +import { SignInOTP } from './signin-otp'; + +function renderEmails(targetLocale: string) { + const emails = [ + { + name: 'email-confirm-change', + body: prettier.format(render(EmailConfirmChange()), { + parser: 'html', + printWidth: 500, + }), + subject: '', + }, + { + name: 'email-verify', + body: prettier.format(render(EmailVerify()), { + parser: 'html', + printWidth: 500, + }), + subject: '', + }, + { + name: 'password-reset', + body: prettier.format(render(PasswordReset()), { + parser: 'html', + printWidth: 500, + }), + subject: '', + }, + { + name: 'signin-passwordless', + body: prettier.format(render(SignInPasswordless()), { + parser: 'html', + printWidth: 500, + }), + subject: '', + }, + { + name: 'signin-otp', + body: prettier.format(render(SignInOTP()), { + parser: 'html', + printWidth: 500, + }), + subject: '', + }, + ]; + + const targetFolder = path.resolve(`./email-templates/${targetLocale}`); + + if (!fs.existsSync(targetFolder)) { + fs.mkdirSync(targetFolder); + } + + emails.forEach((email) => { + if (!fs.existsSync(`${targetFolder}/${email.name}`)) { + fs.mkdirSync(`${targetFolder}/${email.name}`, { recursive: true }); + } + + fs.writeFileSync(`${targetFolder}/${email.name}/body.html`, email.body); + fs.writeFileSync( + `${targetFolder}/${email.name}/subject.txt`, + email.subject + ); + }); +} + +const args = process.argv.slice(2); +const locale = args[0]; + +if (!locale) { + console.error('Please provide a locale for the emails.'); + process.exit(1); +} + +renderEmails(locale); diff --git a/examples/docker-compose/nhost/emails/generator/signin-otp.tsx b/examples/docker-compose/nhost/emails/generator/signin-otp.tsx new file mode 100644 index 000000000..be209ad61 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/signin-otp.tsx @@ -0,0 +1,124 @@ +import { + Body, + Column, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Row, + Section, + Text, +} from '@react-email/components'; +import * as React from 'react'; + +const logo = { + borderRadius: 0, + width: 20, + height: 20, +}; + +const main = { + backgroundColor: '#f5f5f5', + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', +}; + +const container = { + margin: '20px auto 0 auto', + padding: '20px', + maxWidth: '560px', + backgroundColor: '#ffffff', + borderRadius: 8, + border: '1px solid #ececec', +}; + +const heading = { + fontSize: '24px', + letterSpacing: '-0.5px', + lineHeight: '1.3', + fontWeight: '400', + color: '#484848', + marginTop: 0, +}; + +const paragraph = { + margin: '0 0 10px', + fontSize: '15px', + lineHeight: '1.4', + color: '#3c4149', +}; + +const buttonContainer = { + padding: '10px 0 0px', +}; + +const reportLink = { + fontSize: '14px', + color: '#b4becc', +}; + +const hr = { + borderColor: '#dfe1e4', + margin: '20px 0 20px', +}; + +const logoColumn = { + width: '30px', +}; + +const linkColumn = { + margin: 0, +}; + +const amazingText = { + fontSize:'24px', + lineHeight:'32px', + margin:'16px 0', + color:'#0052cd', + fontWeight:'600', +} + +export function SignInOTP() { + const ticket = "${ticket}"; + const redirectTo = "${redirectTo}"; + return ( + + + + + One-time Password + To signin to {redirectTo}, please, use the following one-time password: +
+ + {ticket} + +
+
+
+ + + Nhost Logo + + + + Powered by Nhost + + + +
+
+ + + ); +} + +export default SignInOTP; diff --git a/examples/docker-compose/nhost/emails/generator/signin-passwordless.tsx b/examples/docker-compose/nhost/emails/generator/signin-passwordless.tsx new file mode 100644 index 000000000..c9a2315c4 --- /dev/null +++ b/examples/docker-compose/nhost/emails/generator/signin-passwordless.tsx @@ -0,0 +1,127 @@ +import { + Body, + Button, + Column, + Container, + Head, + Heading, + Hr, + Html, + Img, + Link, + Row, + Section, + Text, +} from '@react-email/components'; +import * as React from 'react'; + +const logo = { + borderRadius: 0, + width: 20, + height: 20, +}; + +const main = { + backgroundColor: '#f5f5f5', + fontFamily: + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', +}; + +const container = { + margin: '20px auto 0 auto', + padding: '20px', + maxWidth: '560px', + backgroundColor: '#ffffff', + borderRadius: 8, + border: '1px solid #ececec', +}; + +const heading = { + fontSize: '24px', + letterSpacing: '-0.5px', + lineHeight: '1.3', + fontWeight: '400', + color: '#484848', + marginTop: 0, +}; + +const paragraph = { + margin: '0 0 10px', + fontSize: '15px', + lineHeight: '1.4', + color: '#3c4149', +}; + +const buttonContainer = { + padding: '10px 0 0px', +}; + +const button = { + backgroundColor: '#0052CD', + borderRadius: '3px', + fontWeight: '600', + color: '#fff', + fontSize: '15px', + textDecoration: 'none', + textAlign: 'center' as const, + display: 'block', + padding: '11px 23px', +}; + +const reportLink = { + fontSize: '14px', + color: '#b4becc', +}; + +const hr = { + borderColor: '#dfe1e4', + margin: '20px 0 20px', +}; + +const logoColumn = { + width: '30px', +}; + +const linkColumn = { + margin: 0, +}; + +export function SignInPasswordless() { + return ( + + + + + Magic Link + Use this link to securely sign in: +
+ +
+
+
+ + + Nhost Logo + + + + Powered by Nhost + + + +
+
+ + + ); +} + +export default SignInPasswordless; diff --git a/examples/docker-compose/nhost/emails/test/email-verify/body.html b/examples/docker-compose/nhost/emails/test/email-verify/body.html new file mode 100644 index 000000000..5c2dbc158 --- /dev/null +++ b/examples/docker-compose/nhost/emails/test/email-verify/body.html @@ -0,0 +1,8 @@ +${link}, +${displayName}, +${email}, +${ticket}, +${redirectTo}, +${serverUrl}, +${clientUrl}, +${locale}, diff --git a/examples/docker-compose/nhost/emails/test/email-verify/subject.txt b/examples/docker-compose/nhost/emails/test/email-verify/subject.txt new file mode 100644 index 000000000..1fe895365 --- /dev/null +++ b/examples/docker-compose/nhost/emails/test/email-verify/subject.txt @@ -0,0 +1 @@ +${link}, ${displayName}, ${email}, ${ticket}, ${redirectTo}, ${serverUrl}, ${clientUrl}, ${locale} diff --git a/examples/nextjs/README.md b/examples/nextjs/README.md index 49715d0b5..accef7974 100644 --- a/examples/nextjs/README.md +++ b/examples/nextjs/README.md @@ -24,7 +24,7 @@ cd examples/nextjs 4. Terminal 1: Start Nhost -> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli). +> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). ```sh nhost up diff --git a/examples/node-storage/README.md b/examples/node-storage/README.md index 18079e96a..a15f11313 100644 --- a/examples/node-storage/README.md +++ b/examples/node-storage/README.md @@ -1,6 +1,6 @@ # Node.js Storage Example -This example demonstrates how to use the [Nhost Storage SDK](https://docs.nhost.io/reference/javascript/storage) in Node.js. +This example demonstrates how to use the [Nhost Storage SDK](https://docs.nhost.io/reference/javascript/storage/hasura-storage-client) in Node.js. Make sure to install the dependencies: diff --git a/examples/quickstarts/nextjs-server-components/README.md b/examples/quickstarts/nextjs-server-components/README.md index 56e6491ea..dbaec7333 100644 --- a/examples/quickstarts/nextjs-server-components/README.md +++ b/examples/quickstarts/nextjs-server-components/README.md @@ -55,7 +55,7 @@ This quickstart showcases how to correctly add authentication to a Next.js 13 pr 3. Terminal 1: Start the Nhost Backend - 3.1 Make sure you have the [Nhost CLI installed](https://docs.nhost.io/development/cli/). + 3.1 Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). 3.2 Go to examples/quickstarts/nhost-backend. @@ -87,6 +87,6 @@ This quickstart showcases how to correctly add authentication to a Next.js 13 pr ## How to setup authentication with Google -[Sign In with Google](https://docs.nhost.io/guides/auth/social/sign-in-google). +[Sign In with Google](https://docs.nhost.io/products/auth/social/sign-in-google). Under [Settings/Sign in methods](https://local.dashboard.local.nhost.run/orgs/local/projects/local/settings/sign-in-methods) add your Google client ID and secret. In this page you can find the redirect url needed by Google. diff --git a/examples/quickstarts/sveltekit/README.md b/examples/quickstarts/sveltekit/README.md index 48bbebb17..a3a837873 100644 --- a/examples/quickstarts/sveltekit/README.md +++ b/examples/quickstarts/sveltekit/README.md @@ -72,7 +72,7 @@ This is a quickstart that showcases how to use the Nhost SDK running on server ` 3. Terminal 1: Start the Nhost Backend - > Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli). + > Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). ```sh cd examples/quickstarts/sveltekit diff --git a/examples/react-apollo/README.md b/examples/react-apollo/README.md index a24baded0..3d9f2d13a 100644 --- a/examples/react-apollo/README.md +++ b/examples/react-apollo/README.md @@ -28,7 +28,7 @@ cd examples/react-apollo 4. Terminal 1: Start Nhost -> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli). +> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). ```sh nhost up diff --git a/examples/react_native/README.md b/examples/react_native/README.md index 5324f5715..71334ed12 100644 --- a/examples/react_native/README.md +++ b/examples/react_native/README.md @@ -1,7 +1,7 @@ # Nhost React Native Example -This example project is built using the [Nhost React Native Template](https://www.npmjs.com/package/@nhost/react-native-template). It was created following the steps in the [React Native quickstart guide](https://docs.nhost.io/guides/quickstarts/react-native). +This example project is built using the [Nhost React Native Template](https://www.npmjs.com/package/@nhost/react-native-template). It was created following the steps in the [React Native quickstart guide](https://docs.nhost.io/getting-started/quickstart/reactnative). ## How to Run -If you are already familiar with [Nhost CLI](https://docs.nhost.io/development/cli/getting-started), you can start the backend by running `nhost up` in the [backend](./backend/) folder. For detailed instructions on how to get the project running, you can head to the [React Native quickstart guide](https://docs.nhost.io/guides/quickstarts/react-native) and skip to the end for specific steps. \ No newline at end of file +If you are already familiar with [Nhost CLI](https://docs.nhost.io/platform/cli/local-development), you can start the backend by running `nhost up` in the [backend](./backend/) folder. For detailed instructions on how to get the project running, you can head to the [React Native quickstart guide](https://docs.nhost.io/getting-started/quickstart/reactnative) and skip to the end for specific steps. \ No newline at end of file diff --git a/examples/react_native/backend/README.md b/examples/react_native/backend/README.md index 7005ad50f..91808cbb6 100644 --- a/examples/react_native/backend/README.md +++ b/examples/react_native/backend/README.md @@ -1,4 +1,4 @@ # How to start the backend -1. Install the [Nhost CLI](https://docs.nhost.io/platform/cli). +1. Install the [Nhost CLI](https://docs.nhost.io/platform/cli/local-development). 2. Run `cp .secrets.example .secrets` 3. Run `nhost up` \ No newline at end of file diff --git a/examples/seed-data/README.md b/examples/seed-data/README.md index 9c901770b..8eb5eddf7 100644 --- a/examples/seed-data/README.md +++ b/examples/seed-data/README.md @@ -20,4 +20,4 @@ Seed data is only applied **the first time** when Nhost starts. If you want to r ## Documentation -Learn more about [Seed data](https://docs.nhost.io/platform/database#seed-data). +Learn more about [Seed data](https://docs.nhost.io/platform/cli/seeds). diff --git a/examples/serverless-functions/README.md b/examples/serverless-functions/README.md index 203e8c2d7..ef1648dfa 100644 --- a/examples/serverless-functions/README.md +++ b/examples/serverless-functions/README.md @@ -2,7 +2,7 @@ Here are examples of Serverless Functions with Nhost. -Docs: [https://docs.nhost.io/platform/serverless-functions](https://docs.nhost.io/platform/serverless-functions) +Docs: [https://docs.nhost.io/products/functions/overview](https://docs.nhost.io/products/functions/overview) ## Examples @@ -45,7 +45,7 @@ cd examples/serverless-functions 4. Terminal 1: Start Nhost -> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli). +> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). ``` nhost up diff --git a/examples/vue-apollo/README.md b/examples/vue-apollo/README.md index 379088f65..8f5f8f795 100644 --- a/examples/vue-apollo/README.md +++ b/examples/vue-apollo/README.md @@ -28,7 +28,7 @@ cd examples/vue-apollo 4. Terminal 1: Start Nhost -> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli). +> Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development). ```sh nhost up diff --git a/examples/vue-quickstart/README.md b/examples/vue-quickstart/README.md index ca0447bd4..c88714292 100644 --- a/examples/vue-quickstart/README.md +++ b/examples/vue-quickstart/README.md @@ -2,5 +2,4 @@ ## Get started -Follow the [quickstart instructions](https://docs.nhost.io/platform/quickstarts/vue) - +Follow the [quickstart instructions](https://docs.nhost.io/getting-started/quickstart/vue) diff --git a/integrations/google-translation/README.md b/integrations/google-translation/README.md index 84b1ad578..bf8d4032a 100644 --- a/integrations/google-translation/README.md +++ b/integrations/google-translation/README.md @@ -77,7 +77,7 @@ npm install @nhost/google-translation ### Serverless Function Setup -Create a new [Serverless Function](https://docs.nhost.io/platform/serverless-functions) `functions/graphql/google-translation.ts`: +Create a new [Serverless Function](https://docs.nhost.io/products/functions/overview) `functions/graphql/google-translation.ts`: ```js import { createGoogleTranslationGraphQLServer } from '@nhost/google-translation' @@ -104,7 +104,7 @@ Learn more about [Google Projects and API keys](https://cloud.google.com/transla nhost up ``` -Learn more about the [Nhost CLI](https://docs.nhost.io/platform/cli). +Learn more about the [Nhost CLI](https://docs.nhost.io/platform/cli/local-development). ### Test diff --git a/observability/grafana/dashboard_graphql.json b/observability/grafana/dashboard_graphql.json index 30a152dee..5faeca0ac 100644 --- a/observability/grafana/dashboard_graphql.json +++ b/observability/grafana/dashboard_graphql.json @@ -47,7 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "This dashboard is part of our \"Advanced GraphQL\" product. You can refer to our [documentation](https://docs.nhost.io/guides/api/advanced_features) for further details.", + "content": "This dashboard is part of our \"Advanced GraphQL\" product. You can refer to our [documentation](https://docs.nhost.io/products/graphql/advanced-features) for further details.", "mode": "markdown" }, "pluginVersion": "9.2.0", diff --git a/observability/grafana/dashboard_project_metrics.json b/observability/grafana/dashboard_project_metrics.json index a50ff608d..0ae2ee440 100644 --- a/observability/grafana/dashboard_project_metrics.json +++ b/observability/grafana/dashboard_project_metrics.json @@ -59,7 +59,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "This dashboard shows the overall resources used by every service in your project.\n\nMetrics service is currently in **beta** so things may change.\n\nKeep in mind that while you might be change settings, edit the dashboard or even create new ones these changes are not persisted. If you want to have different settings or even your own dashboards, please, contact us as we are looking for use cases to build the feature.\n\nDocumentation about our platform:\n\n- [Compute Resources](https://docs.nhost.io/platform/compute)\n- [Service Replicas](https://docs.nhost.io/platform/service-replicas)", + "content": "This dashboard shows the overall resources used by every service in your project.\n\nMetrics service is currently in **beta** so things may change.\n\nKeep in mind that while you might be change settings, edit the dashboard or even create new ones these changes are not persisted. If you want to have different settings or even your own dashboards, please, contact us as we are looking for use cases to build the feature.\n\nDocumentation about our platform:\n\n- [Compute Resources](https://docs.nhost.io/platform/cloud/compute-resources)\n- [Service Replicas](https://docs.nhost.io/platform/cloud/service-replicas)", "mode": "markdown" }, "pluginVersion": "11.2.0", @@ -83,7 +83,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "#### Pods\n\nEach service is comprised by at least one \"pod\" and, in the case of [replicas](https://docs.nhost.io/platform/service-replicas), you should see as many pods as replicas configured. Each pod is identified by the sevice name + some unique identifier, for instance, `\nhasura-auth-7995bfd767-mvthp`.\n\nPods can come and go for various reasons:\n\n1. When there is a configuration change. When this happens a new pod is created witht he new configuration. After the new pod is ready the old one is decommissioned. This means changes in configuration are hitless. The exception is postgres, when postgres configuration changes we need to bring it down cleanly before we start a new one so there is a short donwtime while this occurrs (1-2 min).\n2. When the process crashes due to an unexpected error. In this case the platform should detect the event and create a new pod immediately.\n3. When the process exceeds its allotted memory the pod is terminated and a new one is created.\n\n#### Throttling\n\nAs pro projects have shared CPUs services can throttle when they attempt to use more resources than they have available. Throttling metrics are hard to grasp but it is important to understand they can have a big impact on response times. Thottling happens in internvals of time (100ms) so it is important to look at both the throttling time and throttling % metrics. If the % is low throttling time might not be very impactful but the higher the percentage gets the higher the impact it can have.\n\nTo avoid throttling consider using [dedicated compute resources](https://docs.nhost.io/platform/compute#dedicated-compute)", + "content": "#### Pods\n\nEach service is comprised by at least one \"pod\" and, in the case of [replicas](https://docs.nhost.io/platform/cloud/service-replicas), you should see as many pods as replicas configured. Each pod is identified by the sevice name + some unique identifier, for instance, `\nhasura-auth-7995bfd767-mvthp`.\n\nPods can come and go for various reasons:\n\n1. When there is a configuration change. When this happens a new pod is created witht he new configuration. After the new pod is ready the old one is decommissioned. This means changes in configuration are hitless. The exception is postgres, when postgres configuration changes we need to bring it down cleanly before we start a new one so there is a short donwtime while this occurrs (1-2 min).\n2. When the process crashes due to an unexpected error. In this case the platform should detect the event and create a new pod immediately.\n3. When the process exceeds its allotted memory the pod is terminated and a new one is created.\n\n#### Throttling\n\nAs pro projects have shared CPUs services can throttle when they attempt to use more resources than they have available. Throttling metrics are hard to grasp but it is important to understand they can have a big impact on response times. Thottling happens in internvals of time (100ms) so it is important to look at both the throttling time and throttling % metrics. If the % is low throttling time might not be very impactful but the higher the percentage gets the higher the impact it can have.\n\nTo avoid throttling consider using [dedicated compute resources](https://docs.nhost.io/platform/cloud/compute-resources#dedicated-compute)", "mode": "markdown" }, "pluginVersion": "11.2.0", @@ -607,7 +607,7 @@ "type": "prometheus", "uid": "nhost" }, - "description": "This graph shows when a service was restarted. There are two main reasons why a service may be restarted:\n\n- OOMKilled - This means the service tried to use more memory than it has available and had to be restarted. For more information on resources you can check the [documentation](https://docs.nhost.io/platform/compute).\n- Error - This can show for mainly two reasons; when new configuration needs to be applied the service is terminated and due to limitations this shows as \"Error\" but it is, in fact, part of normal operations. This can also show if your service is misconfigured and/or can't start correctly for some reason. If this error doesn't show constantly it is safe to ignore this error.", + "description": "This graph shows when a service was restarted. There are two main reasons why a service may be restarted:\n\n- OOMKilled - This means the service tried to use more memory than it has available and had to be restarted. For more information on resources you can check the [documentation](https://docs.nhost.io/platform/cloud/compute-resources).\n- Error - This can show for mainly two reasons; when new configuration needs to be applied the service is terminated and due to limitations this shows as \"Error\" but it is, in fact, part of normal operations. This can also show if your service is misconfigured and/or can't start correctly for some reason. If this error doesn't show constantly it is safe to ignore this error.", "fieldConfig": { "defaults": { "color": { @@ -927,7 +927,7 @@ "type": "prometheus", "uid": "nhost" }, - "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/compute) this line should match the amount of resources configured.", + "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/cloud/compute-resources) this line should match the amount of resources configured.", "fieldConfig": { "defaults": { "color": { @@ -1362,7 +1362,7 @@ "type": "prometheus", "uid": "nhost" }, - "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/compute) this line should match the amount of resources configured.", + "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/cloud/compute-resources) this line should match the amount of resources configured.", "fieldConfig": { "defaults": { "color": { @@ -1586,7 +1586,7 @@ "type": "prometheus", "uid": "nhost" }, - "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/compute) this line should match the amount of resources configured.", + "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/cloud/compute-resources) this line should match the amount of resources configured.", "fieldConfig": { "defaults": { "color": { @@ -1810,7 +1810,7 @@ "type": "prometheus", "uid": "nhost" }, - "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/compute) this line should match the amount of resources configured.", + "description": "CPU utilization is calculated by calculating the average usage between two datapoints. At maximum granularity this is a 1 minute average, but when selecting longer periods of time granularity can decrease.\n\nGiven that the graph shows average usage it might be difficult to detect very sudden spikes.\n\nThe allotted line indicates how many CPU cycles are dedicated for the service. As free and pro projects have only shared CPU this line should show only a symbolic number. For projects with [dedicated compute resources](https://docs.nhost.io/platform/cloud/compute-resources) this line should match the amount of resources configured.", "fieldConfig": { "defaults": { "color": { diff --git a/observability/grafana/rules_nhost.yaml b/observability/grafana/rules_nhost.yaml index 14bb3825b..ec218e7ae 100644 --- a/observability/grafana/rules_nhost.yaml +++ b/observability/grafana/rules_nhost.yaml @@ -55,7 +55,7 @@ groups: execErrState: Error for: 5m annotations: - runbook_url: https://docs.nhost.io/platform/compute-resources + runbook_url: https://docs.nhost.io/platform/cloud/compute-resources Project Subdomain: {{ .Subdomain }} Project Name: {{ .ProjectName }} description: | @@ -71,7 +71,7 @@ groups: High CPU usage can lead to service instability, increased latency and downtime. - For more information, see the [Nhost documentation](https://docs.nhost.io/platform/compute-resources) + For more information, see the [Nhost documentation](https://docs.nhost.io/platform/cloud/compute-resources) summary: | The service replica {{ print "{{ index $labels \"pod\" }}" }} is experiencing, or has experienced, high CPU usage. Current usage is at {{ print "{{ index $values \"A\" }}" }}%. labels: {} @@ -127,7 +127,7 @@ groups: execErrState: Error for: 5m annotations: - runbook_url: https://docs.nhost.io/guides/database/configuring-postgres + runbook_url: https://docs.nhost.io/products/database/configuring-postgres Subdomain: {{ .Subdomain }} Project Name: {{ .ProjectName }} description: | @@ -143,7 +143,7 @@ groups: Running out of disk space can lead to service downtime and potential data loss. - For more information, see the [Nhost documentation](https://docs.nhost.io/guides/database/configuring-postgres) + For more information, see the [Nhost documentation](https://docs.nhost.io/products/database/configuring-postgres) summary: | The persistent volume claim {{ print "{{ index $labels \"persistentvolumeclaim\" }}" }} current usage is at {{ print "{{ index $values \"A\" }}" }}%. labels: {} @@ -199,7 +199,7 @@ groups: execErrState: Error for: 5m annotations: - runbook_url: https://docs.nhost.io/platform/compute-resources + runbook_url: https://docs.nhost.io/platform/cloud/compute-resources Subdomain: {{ .Subdomain }} Project Name: {{ .ProjectName }} description: | @@ -214,7 +214,7 @@ groups: Running out of memory can lead to service instability, increased latency and downtime. - For more information, see the [Nhost documentation](https://docs.nhost.io/platform/compute-resources) + For more information, see the [Nhost documentation](https://docs.nhost.io/platform/cloud/compute-resources) summary: | The service replica {{ print "{{ index $labels \"pod\" }}" }} is experiencing, or has experienced, low memory. Current usage is at {{ print "{{ index $values \"A\" }}" }}%. @@ -289,8 +289,8 @@ groups: This can lead to service instability, increased latency and downtime. - For more information, see the [Nhost documentation](https://docs.nhost.io/platform/compute-resources) - runbook_url: https://docs.nhost.io/platform/compute-resources + For more information, see the [Nhost documentation](https://docs.nhost.io/platform/cloud/compute-resources) + runbook_url: https://docs.nhost.io/platform/cloud/compute-resources Subdomain: {{ .Subdomain }} Project Name: {{ .ProjectName }} labels: {} @@ -364,6 +364,6 @@ groups: A high error rate means there is something fundamentally wrong with the service or your application. It can lead to service instability, increased latency and downtime. - For more information, see the [Nhost documentation](https://docs.nhost.io/platform/compute-resources) + For more information, see the [Nhost documentation](https://docs.nhost.io/platform/cloud/compute-resources) labels: {} isPaused: false diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d1667ada..f27592877 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -719,8 +719,8 @@ importers: docs: devDependencies: mintlify: - specifier: ^4.0.136 - version: 4.0.136(openapi-types@12.1.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^4.0.445 + version: 4.0.445(@types/node@22.13.9)(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) examples/cli: dependencies: @@ -1642,7 +1642,7 @@ importers: version: 4.6.2(vite@5.4.15(@types/node@22.13.9)(sass@1.32.0)(terser@5.37.0))(vue@3.5.13(typescript@4.9.4)) '@xstate/inspect': specifier: ^0.6.5 - version: 0.6.5(@types/ws@8.5.10)(ws@8.17.1)(xstate@4.38.3) + version: 0.6.5(@types/ws@8.5.10)(ws@8.18.1)(xstate@4.38.3) sass: specifier: 1.32.0 version: 1.32.0 @@ -2160,7 +2160,7 @@ importers: version: 3.11.4(@types/react@18.3.4)(graphql-ws@5.16.0(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@craco/craco': specifier: ^7.1.0 - version: 7.1.0(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(postcss@8.4.49)(react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@2.19.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1))(typescript@4.9.5) + version: 7.1.0(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(postcss@8.4.49)(react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@4.38.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1))(typescript@4.9.5) '@hookform/resolvers': specifier: ^3.9.0 version: 3.9.0(react-hook-form@7.54.1(react@18.2.0)) @@ -2253,7 +2253,7 @@ importers: version: 6.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@2.19.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1) + version: 5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@4.38.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1) react-syntax-highlighter: specifier: ^15.5.0 version: 15.6.1(react@18.2.0) @@ -2470,21 +2470,6 @@ packages: peerDependencies: ajv: '>=8' - '@apidevtools/json-schema-ref-parser@9.0.6': - resolution: {integrity: sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==} - - '@apidevtools/openapi-schemas@2.1.0': - resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} - engines: {node: '>=10'} - - '@apidevtools/swagger-methods@3.0.2': - resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} - - '@apidevtools/swagger-parser@10.1.0': - resolution: {integrity: sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==} - peerDependencies: - openapi-types: '>=7' - '@apollo/client@3.11.4': resolution: {integrity: sha512-bmgYKkULpym8wt8aXlAZ1heaYo0skLJ5ru0qJ+JCRoo03Pe+yIDbBCnqlDw6Mjj76hFkDw3HwFMgZC2Hxp30Mg==} peerDependencies: @@ -2513,6 +2498,12 @@ packages: resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} engines: {node: '>=14'} + '@asyncapi/parser@3.4.0': + resolution: {integrity: sha512-Sxn74oHiZSU6+cVeZy62iPZMFMvKp4jupMFHelSICCMw1qELmUHPvuZSr+ZHDmNGgHcEpzJM5HN02kR7T4g+PQ==} + + '@asyncapi/specs@6.8.1': + resolution: {integrity: sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA==} + '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -4645,6 +4636,127 @@ packages: cpu: [x64] os: [win32] + '@inquirer/checkbox@4.1.4': + resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.8': + resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.1.9': + resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.9': + resolution: {integrity: sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.11': + resolution: {integrity: sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.11': + resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} + engines: {node: '>=18'} + + '@inquirer/input@4.1.8': + resolution: {integrity: sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.11': + resolution: {integrity: sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.11': + resolution: {integrity: sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.4.0': + resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.0.11': + resolution: {integrity: sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.0.11': + resolution: {integrity: sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.1.0': + resolution: {integrity: sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.5': + resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@invertase/react-native-apple-authentication@2.4.0': resolution: {integrity: sha512-H29XdL/4JmMMA/b7CCEHpSKvyg3LdCJKMydE7ont01IAnDIW//uPuRMdL2RkxJKJtw449c/PY2K9ijWLxQAMIQ==} engines: {node: '>=14'} @@ -4844,8 +4956,23 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/ternary@1.1.4': + resolution: {integrity: sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} @@ -4950,17 +5077,18 @@ packages: '@mdx-js/mdx@1.6.22': resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} - '@mdx-js/mdx@2.3.0': - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + '@mdx-js/mdx@3.1.0': + resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} '@mdx-js/react@1.6.22': resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} peerDependencies: react: 18.2.0 - '@mdx-js/react@2.3.0': - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: + '@types/react': '>=16' react: 18.2.0 '@mdx-js/util@1.6.22': @@ -4979,34 +5107,46 @@ packages: '@microsoft/tsdoc@0.14.2': resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - '@mintlify/cli@4.0.136': - resolution: {integrity: sha512-5J/hvy+tdLsRpAUJvk+uMleqm+T/jMORnYEkVa+n0JTiDrTbr3MiXO/mpOPNkW0ArDpnwLQB7P6r5MYJayawFQ==} + '@mintlify/cli@4.0.444': + resolution: {integrity: sha512-zmV6pdRtUuAb33fYxwtyXhp5qGCZOtV3goMDIr9rSZpiu5wd9HWG2cQAp/fC0VRgOonHp3NBbijoS3cI9Ip5CQ==} engines: {node: '>=18.0.0'} hasBin: true - '@mintlify/common@1.0.78': - resolution: {integrity: sha512-EmJ2iDJMK1Sl0sherljcG4vnm7Ok9Fu7MG8r5VQQnbmnysy2YAGG4DurwaOn1rOg2erW8jsdFGVBvTpITxsSKA==} + '@mintlify/common@1.0.313': + resolution: {integrity: sha512-msoLYGpX3Ou5nrUp2Qt6uujTebqZBm/5QOdOAfvF2TtIzSkZfY9JkxV5ZJc62vg56GRfXz8lCzQOy8Hbu9wYPw==} - '@mintlify/link-rot@3.0.146': - resolution: {integrity: sha512-Z/TshivahUr8t4uxvmkVfAjSnEfES9oaTSs/98SVgXOdu+YGtnQSDn0lj260hrW/E4GfDgJ6FZKaN8HZmo4dvw==} + '@mintlify/link-rot@3.0.416': + resolution: {integrity: sha512-nYIAdMIZ/ZThAKdJFWtd7f9V0ky7ZMcVGwoYDlPr4zx+G1TClGW7F6ug1ccHvOrTgU5Zm9UzNSLAe8RxJbo3GA==} engines: {node: '>=18.0.0'} - '@mintlify/mdx@0.0.44': - resolution: {integrity: sha512-lvgadIgVxvqJUC4OeRugQGDfbNE7WnxoVaJk4Wvd2EFSB+3o9b1/XvXLrsOcD9uwyFgK94YhpmZQbftHu8ol0A==} + '@mintlify/mdx@1.0.1': + resolution: {integrity: sha512-zrzt8nxoIgJeSUeuJaC8pbd5EHKjCq30qV2HMoqIHLjeE0l7hkMgjBPNWNde7CYDPig1ODS1kPuE5Bnt+/+PIg==} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 - '@mintlify/models@0.0.74': - resolution: {integrity: sha512-MMAdhT6DrylDg1doi2oK2Zw0b7gMspr3Cq8stFGTLl8qOGJo9RT8KCNEWUDzR5eurSGcwE1660rq3Qibe4bOag==} + '@mintlify/models@0.0.179': + resolution: {integrity: sha512-PmvSEn+5wkFveeAq4FeES49AuoNCYUL9rFlDbAjle5mn0oUuqN4AB91LrVOgv1Fi5gV/G6OfZDb6QW6QUZn2EA==} engines: {node: '>=18.0.0'} - '@mintlify/prebuild@1.0.146': - resolution: {integrity: sha512-jS+3wFSh91JOeFeNyewB4lnWJlTysvh84LE8pMcPjBeBAn43syw1goISam4rLLSmtmT2oW4A/VZGEPxpgcc5yw==} + '@mintlify/openapi-parser@0.0.7': + resolution: {integrity: sha512-3ecbkzPbsnkKVZJypVL0H5pCTR7a4iLv4cP7zbffzAwy+vpH70JmPxNVpPPP62yLrdZlfNcMxu5xKeT7fllgMg==} + engines: {node: '>=18'} - '@mintlify/previewing@4.0.133': - resolution: {integrity: sha512-7Zck2ol/2vDY67kqZTAaYzwMqibyXW7+oRpILKKZNOaC3wvZhhjCF5LDKe7mo65VWyRR2T3UR6UsfNscnzO9Sg==} + '@mintlify/prebuild@1.0.413': + resolution: {integrity: sha512-o8i9mkc7LU8n2e/8OuJ5aKMWc+xf5u1NcXEX6i5Ibw5sbYfLh07c84BFM11ir6nVd2WV3jJCPCBbts6UBXyWfA==} + + '@mintlify/previewing@4.0.435': + resolution: {integrity: sha512-HkIPFR+BcDbFjearwCHzW1ujKORXFTkH9ECP6c5O6OaXCdJv3Z6mChrztFswl74meEY+zLTy6Ppz/6M0X6WPsQ==} engines: {node: '>=18.0.0'} - '@mintlify/validation@0.1.131': - resolution: {integrity: sha512-WSMwk+7cA975B6rxEQx9EjUn8gB4ucLqn7yYGGIr4aH3W7uC7Mpkdpx2rCt2iclfUiChGvvTaFuqYgElbyZfWQ==} + '@mintlify/scraping@4.0.164': + resolution: {integrity: sha512-AcXw96fff/baEIDDNB3GMWX9++UikjkxA1s7MaWOtN2m6D3YcJHZQ3WcvQu8tXMRlEnJ77Witq+e+CqDwfcQZw==} + engines: {node: '>=18.0.0'} + hasBin: true + + '@mintlify/validation@0.1.324': + resolution: {integrity: sha512-vrwcCR7AljltgfMo2HR803GVbz3TvlL23nMYE7L2r4NIKs1VBLrfApbPtWUz5Lzo0z1syHzDtoS6XRWkPHrpsQ==} '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -5328,72 +5468,15 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@octokit/auth-token@3.0.4': - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} - - '@octokit/core@4.2.4': - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} - - '@octokit/endpoint@10.1.3': - resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==} - engines: {node: '>= 18'} - - '@octokit/graphql@5.0.6': - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} - - '@octokit/openapi-types@18.1.1': - resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} - - '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} - - '@octokit/plugin-paginate-rest@11.4.2': - resolution: {integrity: sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-rest-endpoint-methods@7.2.3': - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@6.1.7': - resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==} - engines: {node: '>= 18'} - - '@octokit/request@9.2.2': - resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==} - engines: {node: '>= 18'} - - '@octokit/rest@19.0.13': - resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} - engines: {node: '>= 14'} - - '@octokit/types@10.0.0': - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} - - '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} - - '@octokit/types@9.3.2': - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} '@open-draft/until@1.0.3': resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + '@openapi-contrib/openapi-schema-to-json-schema@3.2.0': + resolution: {integrity: sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw==} + '@peculiar/asn1-schema@2.3.13': resolution: {integrity: sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==} @@ -5493,6 +5576,11 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@puppeteer/browsers@2.3.0': + resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} + engines: {node: '>=18'} + hasBin: true + '@radix-ui/number@0.1.0': resolution: {integrity: sha512-rpf6QiOWLHAkM4FEMYu9i+5Jr8cKT893+R4mPpcdsy4LD7omr9JfdOqj/h/xPA5+EcVrpMMlU6rrRYpUB5UI8g==} @@ -6817,6 +6905,75 @@ packages: '@socket.io/component-emitter@3.1.0': resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + '@stoplight/better-ajv-errors@1.0.3': + resolution: {integrity: sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==} + engines: {node: ^12.20 || >= 14.13} + peerDependencies: + ajv: '>=8' + + '@stoplight/json-ref-readers@1.2.2': + resolution: {integrity: sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==} + engines: {node: '>=8.3.0'} + + '@stoplight/json-ref-resolver@3.1.6': + resolution: {integrity: sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==} + engines: {node: '>=8.3.0'} + + '@stoplight/json@3.21.0': + resolution: {integrity: sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==} + engines: {node: '>=8.3.0'} + + '@stoplight/ordered-object-literal@1.0.5': + resolution: {integrity: sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==} + engines: {node: '>=8'} + + '@stoplight/path@1.3.2': + resolution: {integrity: sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==} + engines: {node: '>=8'} + + '@stoplight/spectral-core@1.19.5': + resolution: {integrity: sha512-i+njdliW7bAHGsHEgDvH0To/9IxiYiBELltkZ7ASVy4i+WXtZ40lQXpeRQRwePrBcSgQl0gcZFuKX10nmSHtbw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-formats@1.8.2': + resolution: {integrity: sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-functions@1.9.4': + resolution: {integrity: sha512-+dgu7QQ1JIZFsNLhNbQLPA9tniIT3KjOc9ORv0LYSCLvZjkWT2bN7vgmathbXsbmhnmhvl15H9sRqUIqzi+qoQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-parsers@1.0.5': + resolution: {integrity: sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-ref-resolver@1.0.5': + resolution: {integrity: sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-runtime@1.1.4': + resolution: {integrity: sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/types@13.20.0': + resolution: {integrity: sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@13.6.0': + resolution: {integrity: sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@14.1.1': + resolution: {integrity: sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/yaml-ast-parser@0.0.50': + resolution: {integrity: sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==} + + '@stoplight/yaml@4.3.0': + resolution: {integrity: sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==} + engines: {node: '>=10.8'} + '@storybook/addon-actions@6.5.16': resolution: {integrity: sha512-aADjilFmuD6TNGz2CRPSupnyiA/IGkPJHDBTqMpsDXTUr8xnuD122xkIhg6UxmCM2y1c+ncwYXy3WPK2xXK57g==} peerDependencies: @@ -7487,6 +7644,9 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -7506,9 +7666,6 @@ packages: '@types/ace@0.0.48': resolution: {integrity: sha512-esV6hOWiDOZ6d7w5S11iLu6LQsPGe/9RPzhri7gNNLdrK1LFpO9/m7IZhQL6dat0JHICJ7l51zvHAiCgnPLLHA==} - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -7575,6 +7732,9 @@ packages: '@types/doctrine@0.0.3': resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} + '@types/es-aggregate-error@1.0.6': + resolution: {integrity: sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==} + '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} @@ -7674,9 +7834,6 @@ packages: '@types/jsonwebtoken@9.0.6': resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} - '@types/katex@0.14.0': - resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} - '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} @@ -7711,8 +7868,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/nlcst@1.0.4': - resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} @@ -7759,9 +7916,6 @@ packages: '@types/parse5@5.0.3': resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/pluralize@0.0.30': resolution: {integrity: sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA==} @@ -7864,6 +8018,12 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/urijs@1.19.25': + resolution: {integrity: sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==} + '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} @@ -7897,6 +8057,9 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@5.62.0': resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8592,9 +8755,17 @@ packages: ajv: optional: true + ajv-errors@3.0.0: + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} + peerDependencies: + ajv: ^8.0.1 + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -8611,6 +8782,9 @@ packages: ajv@8.15.0: resolution: {integrity: sha512-15BTtQUOsSrmHCy+B4VnAiJAJxJ8IFgu6fcjFQF3jQYZ78nLSQthlFg4ehp+NLIyfvFgOlxNsjKIEhydtFPVHQ==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -8726,6 +8900,10 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -8795,6 +8973,10 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} @@ -8862,6 +9044,10 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + avsc@5.7.7: + resolution: {integrity: sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==} + engines: {node: '>=0.11'} + axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} @@ -8876,6 +9062,9 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + babel-core@7.0.0-bridge.0: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: @@ -9010,6 +9199,36 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + bare-fs@4.0.2: + resolution: {integrity: sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.6.5: + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} @@ -9020,14 +9239,19 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} @@ -9093,6 +9317,9 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -9150,6 +9377,10 @@ packages: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} @@ -9158,8 +9389,9 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} @@ -9310,6 +9542,11 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} + chromium-bidi@0.6.3: + resolution: {integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==} + peerDependencies: + devtools-protocol: '*' + chromium-edge-launcher@1.0.0: resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} @@ -9366,6 +9603,10 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -9433,6 +9674,9 @@ packages: collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} @@ -9647,6 +9891,15 @@ packages: typescript: optional: true + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9841,6 +10094,10 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -9857,14 +10114,26 @@ packages: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} engines: {node: '>= 0.4'} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} @@ -9998,6 +10267,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -10076,6 +10349,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devtools-protocol@0.0.1312386: + resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -10091,10 +10367,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -10206,6 +10478,10 @@ packages: resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} engines: {node: '>= 0.4'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} @@ -10309,6 +10585,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + envinfo@7.13.0: resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} @@ -10328,6 +10608,14 @@ packages: resolution: {integrity: sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==} engines: {node: '>= 0.4'} + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-aggregate-error@1.0.13: + resolution: {integrity: sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==} + engines: {node: '>= 0.4'} + es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} @@ -10353,10 +10641,18 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -10840,27 +11136,21 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - estree-util-build-jsx@2.2.2: - resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} - - estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} - estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -10957,8 +11247,10 @@ packages: resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} engines: {node: ^12.20 || >= 14.13} - fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -10969,6 +11261,9 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -10979,6 +11274,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} @@ -10992,6 +11290,9 @@ packages: fast-uri@2.3.0: resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} @@ -11025,6 +11326,9 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -11160,6 +11464,10 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -11297,6 +11605,10 @@ packages: resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} engines: {node: '>= 0.4'} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -11338,6 +11650,10 @@ packages: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -11349,10 +11665,18 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -11365,9 +11689,17 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.7.3: resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + get-uri@6.0.4: + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} + engines: {node: '>= 14'} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -11615,39 +11947,39 @@ packages: hast-to-hyperscript@9.0.1: resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} - hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} hast-util-from-dom@5.0.0: resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} - hast-util-from-html-isomorphic@1.0.0: - resolution: {integrity: sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==} - hast-util-from-html-isomorphic@2.0.0: resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} - hast-util-from-html@1.0.2: - resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} - hast-util-from-html@2.0.1: resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + hast-util-from-parse5@6.0.1: resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-body-ok-link@3.0.1: + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-minify-whitespace@1.0.1: + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} + hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} @@ -11657,39 +11989,33 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + hast-util-raw@6.0.1: resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} - hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - hast-util-to-estree@2.3.3: - resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} - - hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-mdast@10.1.2: + resolution: {integrity: sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==} + hast-util-to-parse5@6.0.0: resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} - hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - - hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} - - hast-util-to-text@3.1.2: - resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} hast-util-to-text@4.0.2: resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -11795,8 +12121,8 @@ packages: html-void-elements@1.0.5: resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} - html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} html-webpack-plugin@5.6.3: resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} @@ -12002,6 +12328,15 @@ packages: react: 18.2.0 react-dom: 18.2.0 + inquirer@12.5.0: + resolution: {integrity: sha512-aiBBq5aKF1k87MTxXDylLfwpRwToShiHrSv4EmB07EYyLgmnjEz5B3rn0aGw1X3JA/64Ngf2T54oGwc+BCsPIQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -12017,6 +12352,10 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + ip-regex@4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} @@ -12061,6 +12400,10 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -12265,9 +12608,6 @@ packages: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} engines: {node: '>=0.10.0'} - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -12295,6 +12635,10 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} @@ -12323,6 +12667,10 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -12803,6 +13151,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsc-android@250231.0.0: resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} @@ -12842,6 +13193,10 @@ packages: canvas: optional: true + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -12901,6 +13256,9 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonc-parser@2.2.1: + resolution: {integrity: sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==} + jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} @@ -12920,6 +13278,11 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + jsonpath-plus@10.3.0: + resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} + engines: {node: '>=18.0.0'} + hasBin: true + jsonpath@1.1.1: resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} @@ -13014,6 +13377,10 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} + leven@4.0.0: + resolution: {integrity: sha512-puehA3YKku3osqPlNuzGDUHq8WpwXupUg1V6NXdV38G+gr+gkBwFC8g1b/+YcIvp8gnqVIus+eJCH/eGsRmJNw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} @@ -13157,6 +13524,9 @@ packages: lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} + lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -13288,9 +13658,9 @@ packages: markdown-escapes@1.0.4: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - markdown-extensions@1.1.1: - resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} - engines: {node: '>=0.10.0'} + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} @@ -13311,111 +13681,76 @@ packages: resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} engines: {node: '>= 0.4'} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + mdast-squeeze-paragraphs@4.0.0: resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} mdast-util-definitions@4.0.0: resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - - mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} - mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - mdast-util-from-markdown@2.0.1: resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - mdast-util-frontmatter@1.0.1: - resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} mdast-util-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} - mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} - mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} - mdast-util-gfm-table@2.0.0: resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} - mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - mdast-util-math@2.0.2: - resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} - - mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} mdast-util-mdx-expression@2.0.0: resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - mdast-util-mdx-jsx@2.1.4: - resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} - mdast-util-mdx-jsx@3.1.2: resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} - mdast-util-mdx@2.0.1: - resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} mdast-util-to-hast@10.0.1: resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} - mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - mdast-util-to-hast@13.1.0: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -13425,16 +13760,9 @@ packages: mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdast@3.0.0: - resolution: {integrity: sha512-xySmf8g4fPKMeC07jXGz971EkLbWAJ83s4US2Tj9lEdnZ142UP5grN73H1Xd3HzrdbU5o9GYYP/y8F9ZSwLE9g==} - deprecated: '`mdast` was renamed to `remark`' - mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -13557,201 +13885,117 @@ packages: engines: {node: '>=18'} hasBin: true - micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - micromark-core-commonmark@2.0.1: resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - micromark-extension-frontmatter@1.1.1: - resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} - - micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} micromark-extension-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - micromark-extension-gfm-footnote@2.0.0: resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - micromark-extension-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} - micromark-extension-gfm-table@2.0.0: resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - micromark-extension-gfm-task-list-item@2.0.1: resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - micromark-extension-math@2.1.2: - resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} - micromark-extension-mdx-expression@1.0.8: - resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - micromark-extension-mdx-jsx@1.0.5: - resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - micromark-extension-mdx-md@1.0.1: - resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - micromark-extension-mdxjs-esm@1.0.5: - resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - micromark-extension-mdxjs@1.0.1: - resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} - - micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - micromark-factory-mdx-expression@1.0.9: - resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} - - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - micromark-factory-title@2.0.0: resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - micromark-factory-whitespace@2.0.0: resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - micromark-util-character@2.1.0: resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - micromark-util-chunked@2.0.0: resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - micromark-util-classify-character@2.0.0: resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - micromark-util-combine-extensions@2.0.0: resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - micromark-util-decode-numeric-character-reference@2.0.1: resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - micromark-util-decode-string@2.0.0: resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - micromark-util-events-to-acorn@1.2.3: - resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} - - micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - micromark-util-normalize-identifier@2.0.0: resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - micromark-util-resolve-all@2.0.0: resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - micromark-util-subtokenize@2.0.1: resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - micromark-util-symbol@2.0.0: resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - micromark-util-types@2.0.0: resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} @@ -13875,11 +14119,14 @@ packages: resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} engines: {node: '>= 18'} - mintlify@4.0.136: - resolution: {integrity: sha512-Hq7JTXGGQKH+TfkQx2xnWOz9UyZb8g0+OneZkfmWExSaw/2AhZ4txppEHjl4HFz3s/na0H0/oPFGHDMju8BsbQ==} + mintlify@4.0.445: + resolution: {integrity: sha512-/ahPd5R0lZA23GvvgfvmBNeuUzjPywOysy8GZPEP1aeIs/F9jwIHzh/jr/U9+tqMk1nihlnVtxjViQ2agJub+Q==} engines: {node: '>=18.0.0'} hasBin: true + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -13946,6 +14193,10 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -13967,12 +14218,16 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + new-date@1.0.3: resolution: {integrity: sha512-0fsVvQPbo2I18DT2zVHpezmeeNYV2JaJSrseiHLc17GNOxJzUdx5mvSigPu8LtIfZSij5i1wXnXFspEs2CD6hA==} - next-mdx-remote@4.4.1: - resolution: {integrity: sha512-1BvyXaIou6xy3XoNF4yaMZUCb6vD2GTAa5ciOa6WoO+gAUTYsb1K4rI/HSC2ogAWLrb/7VSV52skz07vOzmqIQ==} - engines: {node: '>=14', npm: '>=7'} + next-mdx-remote-client@1.1.0: + resolution: {integrity: sha512-RuKP5Xe/cdgpeQOw1OqY6/t29DgjPQxvSUXpjr5OXB6gZpCnXrrruT6c+OwF2sskOA2jGjUbxVoavrB8CbGmQQ==} + engines: {node: '>=18.18.0'} peerDependencies: react: 18.2.0 react-dom: 18.2.0 @@ -14011,8 +14266,12 @@ packages: sass: optional: true - nlcst-to-string@3.1.1: - resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} + nimma@0.2.3: + resolution: {integrity: sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==} + engines: {node: ^12.20 || >=14.13} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -14044,6 +14303,24 @@ packages: encoding: optional: true + node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -14178,6 +14455,10 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + object.entries@1.1.8: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} @@ -14292,6 +14573,10 @@ packages: outvariant@1.4.2: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-any@4.0.0: resolution: {integrity: sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==} engines: {node: '>=12.20'} @@ -14356,6 +14641,14 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -14388,8 +14681,8 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-latin@5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} @@ -14478,15 +14771,15 @@ packages: pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@0.1.3: resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -14583,6 +14876,10 @@ packages: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} + pony-cause@1.1.1: + resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==} + engines: {node: '>=12.0.0'} + popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} @@ -15218,6 +15515,10 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + promise.allsettled@1.0.7: resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} engines: {node: '>= 0.4'} @@ -15248,6 +15549,9 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -15263,6 +15567,10 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + proxy-compare@2.6.0: resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} @@ -15287,6 +15595,15 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + puppeteer-core@22.15.0: + resolution: {integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==} + engines: {node: '>=18'} + + puppeteer@22.15.0: + resolution: {integrity: sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==} + engines: {node: '>=18'} + hasBin: true + pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} @@ -15763,6 +16080,18 @@ packages: resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} engines: {node: '>= 4'} + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.0: + resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + recoil-persist@5.1.0: resolution: {integrity: sha512-sew4k3uBVJjRWKCSFuBw07Y1p1pBOb0UxLJPxn4G2bX/9xNj+r2xlqYy/BRfyofR/ANfqBU04MIvulppU4ZC0w==} peerDependencies: @@ -15788,6 +16117,10 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.8: resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} engines: {node: '>= 0.4'} @@ -15851,8 +16184,17 @@ packages: rehype-highlight@7.0.1: resolution: {integrity: sha512-dB/vVGFsbm7xPglqnYbg0ABg6rAuIWKycTvuXaOO27SgLoOFNoTlniTBtAxp3n5ZyMioW1a3KwiNqgjkb6Skjg==} - rehype-katex@6.0.3: - resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} + rehype-katex@7.0.1: + resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} + + rehype-minify-whitespace@6.0.2: + resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} @@ -15867,26 +16209,23 @@ packages: remark-footnotes@2.0.0: resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} - remark-frontmatter@4.0.1: - resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} - - remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - remark-math@5.1.1: - resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} + remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + + remark-mdx-remove-esm@1.1.0: + resolution: {integrity: sha512-oN3F9QRuPKSdzZi+wvEodBVjKwya63sl403pWzJvm0+c503iUjCDR+JAnP3Ho/4205IWbQ2NujPQi/B9kU6ZrA==} remark-mdx@1.6.22: resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} - remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} - - remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -15894,30 +16233,24 @@ packages: remark-parse@8.0.3: resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} - remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} remark-slug@6.1.0: resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} - remark-smartypants@2.1.0: - resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} remark-squeeze-paragraphs@4.0.0: resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} - remark-stringify@10.0.3: - resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} - remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - remark@14.0.3: - resolution: {integrity: sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==} + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} remedial@1.0.8: resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} @@ -16024,17 +16357,17 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - retext-latin@3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} - retext-stringify@3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - retext@8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} retry-request@7.0.2: resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} @@ -16105,12 +16438,19 @@ packages: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -16125,6 +16465,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -16132,6 +16476,9 @@ packages: safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + safe-stable-stringify@1.1.1: + resolution: {integrity: sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==} + safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -16249,6 +16596,10 @@ packages: sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + serialize-error@12.0.0: + resolution: {integrity: sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==} + engines: {node: '>=18'} + serialize-error@2.1.0: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} @@ -16278,6 +16629,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + set-value@4.1.0: resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} engines: {node: '>=11.0'} @@ -16343,6 +16698,10 @@ packages: signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + simple-eval@1.0.1: + resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} + engines: {node: '>=12'} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -16396,6 +16755,10 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -16413,6 +16776,14 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sonic-boom@3.8.1: resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} @@ -16516,6 +16887,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -16586,6 +16960,9 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + streamx@2.22.0: + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} @@ -16765,9 +17142,6 @@ packages: style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} @@ -16949,6 +17323,12 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@3.0.8: + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -17012,6 +17392,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -17148,6 +17531,10 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} + traverse@0.6.11: + resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==} + engines: {node: '>= 0.4'} + tree-dump@1.0.2: resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} @@ -17164,6 +17551,9 @@ packages: trim-trailing-lines@1.1.4: resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + trim-trailing-lines@2.1.0: + resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==} + trim@1.0.1: resolution: {integrity: sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==} deprecated: Use String.prototype.trim() instead @@ -17356,6 +17746,10 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + type-fest@4.38.0: + resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -17364,14 +17758,26 @@ packages: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.3: resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.7: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} @@ -17379,6 +17785,10 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedarray.prototype.slice@1.0.5: + resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==} + engines: {node: '>= 0.4'} + typedoc@0.22.18: resolution: {integrity: sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==} engines: {node: '>= 12.10.0'} @@ -17445,6 +17855,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} @@ -17477,9 +17890,6 @@ packages: unherit@1.1.3: resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - unherit@3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} - unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -17496,9 +17906,6 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -17515,11 +17922,8 @@ packages: unist-builder@2.0.3: resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - unist-builder@3.0.1: - resolution: {integrity: sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==} - - unist-util-find-after@4.0.1: - resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} + unist-builder@4.0.0: + resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -17527,9 +17931,6 @@ packages: unist-util-generated@1.1.6: resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} @@ -17539,14 +17940,11 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-map@3.1.3: - resolution: {integrity: sha512-4/mDauoxqZ6geK97lJ6n2kDk6JK88Vh+hWMSJqyaaP/7eqN1dDhjcjnNxKNm3YU6Sw7PVJtcFMUbnmHvYzb6Vg==} + unist-util-map@4.0.0: + resolution: {integrity: sha512-HJs1tpkSmRJUzj6fskQrS5oYhBYlmtcvy4SepdDEEsL04FjBrgF0Mgggvxc1/qGBGgW7hRh9+UBK1aqTEnBpIA==} - unist-util-modify-children@3.1.1: - resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} - - unist-util-position-from-estree@1.1.2: - resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} @@ -17554,38 +17952,29 @@ packages: unist-util-position@3.1.0: resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} unist-util-remove-position@2.0.1: resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} - unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} - unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} unist-util-remove@2.1.0: resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} - unist-util-remove@3.1.1: - resolution: {integrity: sha512-kfCqZK5YVY5yEa89tvpl7KnBBHu2c6CzMkqHUrlOqaRgGOMp0sMvwWOVrbAtj03KhovQB7i96Gda72v/EFE0vw==} + unist-util-remove@4.0.0: + resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-children@2.0.2: - resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} @@ -17605,12 +17994,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - - universal-user-agent@7.0.2: - resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} - universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -17686,6 +18069,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + urlpattern-polyfill@10.0.0: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} @@ -17792,11 +18178,6 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -17838,30 +18219,21 @@ packages: vfile-location@3.2.0: resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-matter@3.0.1: - resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} + vfile-matter@5.0.1: + resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} vfile-message@2.0.4: resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -18363,6 +18735,10 @@ packages: resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} engines: {node: '>= 0.4'} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -18514,6 +18890,18 @@ packages: utf-8-validate: optional: true + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} @@ -18605,6 +18993,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -18617,6 +19008,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + yup-password@0.2.2: resolution: {integrity: sha512-2PHfqGWtbXg4OfDV7VKFIb3hyEaYgTYpEORnFqgGAYqzENWmGzWMoeGvJg2Ohmq6maTRxhJzLZpNTITrqlZTrA==} @@ -18642,6 +19037,9 @@ packages: peerDependencies: zod: ^3.24.1 + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.24.1: resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} @@ -18762,27 +19160,6 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 - '@apidevtools/json-schema-ref-parser@9.0.6': - dependencies: - '@jsdevtools/ono': 7.1.3 - call-me-maybe: 1.0.2 - js-yaml: 3.14.1 - - '@apidevtools/openapi-schemas@2.1.0': {} - - '@apidevtools/swagger-methods@3.0.2': {} - - '@apidevtools/swagger-parser@10.1.0(openapi-types@12.1.3)': - dependencies: - '@apidevtools/json-schema-ref-parser': 9.0.6 - '@apidevtools/openapi-schemas': 2.1.0 - '@apidevtools/swagger-methods': 3.0.2 - '@jsdevtools/ono': 7.1.3 - ajv: 8.15.0 - ajv-draft-04: 1.0.0(ajv@8.15.0) - call-me-maybe: 1.0.2 - openapi-types: 12.1.3 - '@apollo/client@3.11.4(@types/react@18.3.4)(graphql-ws@5.16.0(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) @@ -18837,6 +19214,34 @@ snapshots: transitivePeerDependencies: - encoding + '@asyncapi/parser@3.4.0(encoding@0.1.13)': + dependencies: + '@asyncapi/specs': 6.8.1 + '@openapi-contrib/openapi-schema-to-json-schema': 3.2.0 + '@stoplight/json': 3.21.0 + '@stoplight/json-ref-readers': 1.2.2(encoding@0.1.13) + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-core': 1.19.5(encoding@0.1.13) + '@stoplight/spectral-functions': 1.9.4(encoding@0.1.13) + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5(encoding@0.1.13) + '@stoplight/types': 13.20.0 + '@types/json-schema': 7.0.15 + '@types/urijs': 1.19.25 + ajv: 8.17.1 + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1 + avsc: 5.7.7 + js-yaml: 4.1.0 + jsonpath-plus: 10.3.0 + node-fetch: 2.6.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@asyncapi/specs@6.8.1': + dependencies: + '@types/json-schema': 7.0.15 + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 @@ -21039,14 +21444,14 @@ snapshots: style-mod: 4.1.2 w3c-keyname: 2.2.8 - '@craco/craco@7.1.0(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(postcss@8.4.49)(react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@2.19.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1))(typescript@4.9.5)': + '@craco/craco@7.1.0(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(postcss@8.4.49)(react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@4.38.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1))(typescript@4.9.5)': dependencies: autoprefixer: 10.4.20(postcss@8.4.49) cosmiconfig: 7.1.0 cosmiconfig-typescript-loader: 1.0.9(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5) cross-spawn: 7.0.6 lodash: 4.17.21 - react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@2.19.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1) + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@4.38.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1) semver: 7.6.3 webpack-merge: 5.10.0 transitivePeerDependencies: @@ -22760,6 +23165,122 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@inquirer/checkbox@4.1.4(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.5(@types/node@22.13.9) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/confirm@5.1.8(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/core@10.1.9(@types/node@22.13.9)': + dependencies: + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.5(@types/node@22.13.9) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/editor@4.2.9(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + external-editor: 3.1.0 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/expand@4.0.11(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/figures@1.0.11': {} + + '@inquirer/input@4.1.8(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/number@3.0.11(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/password@4.0.11(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + ansi-escapes: 4.3.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/prompts@7.4.0(@types/node@22.13.9)': + dependencies: + '@inquirer/checkbox': 4.1.4(@types/node@22.13.9) + '@inquirer/confirm': 5.1.8(@types/node@22.13.9) + '@inquirer/editor': 4.2.9(@types/node@22.13.9) + '@inquirer/expand': 4.0.11(@types/node@22.13.9) + '@inquirer/input': 4.1.8(@types/node@22.13.9) + '@inquirer/number': 3.0.11(@types/node@22.13.9) + '@inquirer/password': 4.0.11(@types/node@22.13.9) + '@inquirer/rawlist': 4.0.11(@types/node@22.13.9) + '@inquirer/search': 3.0.11(@types/node@22.13.9) + '@inquirer/select': 4.1.0(@types/node@22.13.9) + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/rawlist@4.0.11(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/search@3.0.11(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.5(@types/node@22.13.9) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/select@4.1.0(@types/node@22.13.9)': + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.5(@types/node@22.13.9) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.13.9 + + '@inquirer/type@3.0.5(@types/node@22.13.9)': + optionalDependencies: + '@types/node': 22.13.9 + '@invertase/react-native-apple-authentication@2.4.0': {} '@isaacs/cliui@8.0.2': @@ -23187,7 +23708,17 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@jsdevtools/ono@7.1.3': {} + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/ternary@1.1.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: @@ -23353,33 +23884,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/mdx@2.3.0': + '@mdx-js/mdx@3.1.0(acorn@8.14.0)': dependencies: + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 '@types/mdx': 2.0.12 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-util-to-js: 1.2.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-estree: 2.3.3 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.7 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.0(acorn@8.14.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 transitivePeerDependencies: + - acorn - supports-color '@mdx-js/react@1.6.22(react@18.2.0)': dependencies: react: 18.2.0 - '@mdx-js/react@2.3.0(react@18.2.0)': + '@mdx-js/react@3.1.0(@types/react@18.3.4)(react@18.2.0)': dependencies: '@types/mdx': 2.0.12 '@types/react': 18.3.4 @@ -23422,121 +23961,141 @@ snapshots: '@microsoft/tsdoc@0.14.2': {} - '@mintlify/cli@4.0.136(openapi-types@12.1.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/cli@4.0.444(@types/node@22.13.9)(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2)': dependencies: - '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@mintlify/link-rot': 3.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/models': 0.0.74 - '@mintlify/prebuild': 1.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/previewing': 4.0.133(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/validation': 0.1.131 + '@mintlify/common': 1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/link-rot': 3.0.416(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) + '@mintlify/models': 0.0.179 + '@mintlify/prebuild': 1.0.413(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) + '@mintlify/previewing': 4.0.435(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) + '@mintlify/validation': 0.1.324 chalk: 5.3.0 detect-port: 1.5.1 fs-extra: 11.2.0 - gray-matter: 4.0.3 + inquirer: 12.5.0(@types/node@22.13.9) + js-yaml: 4.1.0 ora: 6.3.1 - unist-util-visit: 4.1.2 yargs: 17.7.2 transitivePeerDependencies: + - '@types/node' + - '@types/react' + - bare-buffer - bufferutil - debug - - openapi-types + - encoding - react - react-dom - supports-color + - typescript - utf-8-validate - '@mintlify/common@1.0.78(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/common@1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@mintlify/mdx': 0.0.44(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/models': 0.0.74 - '@mintlify/validation': 0.1.131 + '@asyncapi/parser': 3.4.0(encoding@0.1.13) + '@mintlify/mdx': 1.0.1(@types/react@18.3.4)(acorn@8.14.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/models': 0.0.179 + '@mintlify/openapi-parser': 0.0.7 + '@mintlify/validation': 0.1.324 '@sindresorhus/slugify': 2.2.1 acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - esast-util-from-js: 2.0.1 estree-util-to-js: 2.0.0 estree-walker: 3.0.3 gray-matter: 4.0.3 - hast-util-from-html: 1.0.2 - hast-util-from-html-isomorphic: 2.0.0 - hast-util-to-html: 8.0.4 + hast-util-from-html: 2.0.3 + hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 is-absolute-url: 4.0.1 + js-yaml: 4.1.0 lodash: 4.17.21 - mdast: 3.0.0 - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm: 2.0.2 - mdast-util-mdx: 2.0.1 - mdast-util-mdx-jsx: 2.1.4 - mdast-util-mdxjs-esm: 1.3.1 - micromark-extension-mdx-jsx: 1.0.5 - micromark-extension-mdxjs: 1.0.1 - micromark-extension-mdxjs-esm: 1.0.5 + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx: 3.0.0 + mdast-util-mdx-jsx: 3.2.0 + micromark-extension-mdx-jsx: 3.0.2 openapi-types: 12.1.3 - remark: 14.0.3 - remark-frontmatter: 4.0.1 - remark-gfm: 3.0.1 - remark-math: 5.1.1 - remark-mdx: 2.3.0 - unist-builder: 3.0.1 - unist-util-map: 3.1.3 - unist-util-remove: 3.1.1 - unist-util-remove-position: 4.0.2 - unist-util-visit: 4.1.2 - unist-util-visit-parents: 5.1.3 - vfile: 5.3.7 + remark: 15.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + remark-math: 6.0.0 + remark-mdx: 3.1.0 + unified: 11.0.5 + unist-builder: 4.0.0 + unist-util-map: 4.0.0 + unist-util-remove: 4.0.0 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: + - '@types/react' - debug + - encoding - react - react-dom - supports-color - '@mintlify/link-rot@3.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/link-rot@3.0.416(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2)': dependencies: - '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@mintlify/common': 1.0.78(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/prebuild': 1.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - chalk: 5.3.0 + '@mintlify/common': 1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/prebuild': 1.0.413(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) fs-extra: 11.2.0 - gray-matter: 4.0.3 is-absolute-url: 4.0.1 - openapi-types: 12.1.3 unist-util-visit: 4.1.2 transitivePeerDependencies: + - '@types/react' + - bare-buffer + - bufferutil - debug + - encoding - react - react-dom - supports-color + - typescript + - utf-8-validate - '@mintlify/mdx@0.0.44(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/mdx@1.0.1(@types/react@18.3.4)(acorn@8.14.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - hast-util-to-string: 2.0.0 - next-mdx-remote: 4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-to-string: 3.0.1 + next-mdx-remote-client: 1.1.0(@types/react@18.3.4)(acorn@8.14.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) refractor: 4.8.1 - rehype-katex: 6.0.3 - remark-gfm: 3.0.1 - remark-math: 5.1.1 - remark-smartypants: 2.1.0 - unist-util-visit: 4.1.2 + rehype-katex: 7.0.1 + remark-gfm: 4.0.0 + remark-math: 6.0.0 + remark-smartypants: 3.0.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 transitivePeerDependencies: - - react - - react-dom + - '@types/react' + - acorn - supports-color - '@mintlify/models@0.0.74': + '@mintlify/models@0.0.179': dependencies: axios: 1.8.2 openapi-types: 12.1.3 transitivePeerDependencies: - debug - '@mintlify/prebuild@1.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/openapi-parser@0.0.7': dependencies: - '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@mintlify/common': 1.0.78(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/validation': 0.1.131 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv-formats: 3.0.1 + jsonpointer: 5.0.1 + leven: 4.0.0 + yaml: 2.6.1 + + '@mintlify/prebuild@1.0.413(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2)': + dependencies: + '@mintlify/common': 1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/openapi-parser': 0.0.7 + '@mintlify/scraping': 4.0.164(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) + '@mintlify/validation': 0.1.324 + axios: 1.8.2 + chalk: 5.3.0 favicons: 7.2.0 fs-extra: 11.2.0 gray-matter: 4.0.3 @@ -23545,18 +24104,23 @@ snapshots: openapi-types: 12.1.3 unist-util-visit: 4.1.2 transitivePeerDependencies: + - '@types/react' + - bare-buffer + - bufferutil - debug + - encoding - react - react-dom - supports-color + - typescript + - utf-8-validate - '@mintlify/previewing@4.0.133(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mintlify/previewing@4.0.435(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2)': dependencies: - '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@mintlify/common': 1.0.78(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/prebuild': 1.0.146(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@mintlify/validation': 0.1.131 - '@octokit/rest': 19.0.13 + '@mintlify/common': 1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/prebuild': 1.0.413(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) + '@mintlify/validation': 0.1.324 + better-opn: 3.0.2 chalk: 5.3.0 chokidar: 3.6.0 express: 4.21.2 @@ -23565,7 +24129,7 @@ snapshots: gray-matter: 4.0.3 is-absolute-url: 4.0.1 is-online: 10.0.0 - open: 8.4.2 + js-yaml: 4.1.0 openapi-types: 12.1.3 ora: 6.3.1 socket.io: 4.8.1 @@ -23573,16 +24137,52 @@ snapshots: unist-util-visit: 4.1.2 yargs: 17.7.2 transitivePeerDependencies: + - '@types/react' + - bare-buffer - bufferutil - debug + - encoding - react - react-dom - supports-color + - typescript - utf-8-validate - '@mintlify/validation@0.1.131': + '@mintlify/scraping@4.0.164(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2)': dependencies: - '@mintlify/models': 0.0.74 + '@mintlify/common': 1.0.313(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/openapi-parser': 0.0.7 + fs-extra: 11.2.0 + hast-util-to-mdast: 10.1.2 + js-yaml: 4.1.0 + mdast-util-mdx-jsx: 3.2.0 + puppeteer: 22.15.0(typescript@5.7.2) + rehype-parse: 9.0.1 + remark-gfm: 4.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + traverse: 0.6.11 + unified: 11.0.5 + unist-util-visit: 5.0.0 + yargs: 17.7.2 + zod: 3.24.1 + transitivePeerDependencies: + - '@types/react' + - bare-buffer + - bufferutil + - debug + - encoding + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + + '@mintlify/validation@0.1.324': + dependencies: + '@mintlify/models': 0.0.179 + is-absolute-url: 4.0.1 lcm: 0.0.3 lodash: 4.17.21 openapi-types: 12.1.3 @@ -23991,82 +24591,14 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@octokit/auth-token@3.0.4': {} - - '@octokit/core@4.2.4': - dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6 - '@octokit/request': 9.2.2 - '@octokit/request-error': 6.1.7 - '@octokit/types': 9.3.2 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - - '@octokit/endpoint@10.1.3': - dependencies: - '@octokit/types': 13.8.0 - universal-user-agent: 7.0.2 - - '@octokit/graphql@5.0.6': - dependencies: - '@octokit/request': 9.2.2 - '@octokit/types': 9.3.2 - universal-user-agent: 6.0.1 - - '@octokit/openapi-types@18.1.1': {} - - '@octokit/openapi-types@23.0.1': {} - - '@octokit/plugin-paginate-rest@11.4.2(@octokit/core@4.2.4)': - dependencies: - '@octokit/core': 4.2.4 - '@octokit/types': 13.8.0 - - '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4)': - dependencies: - '@octokit/core': 4.2.4 - - '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4)': - dependencies: - '@octokit/core': 4.2.4 - '@octokit/types': 10.0.0 - - '@octokit/request-error@6.1.7': - dependencies: - '@octokit/types': 13.8.0 - - '@octokit/request@9.2.2': - dependencies: - '@octokit/endpoint': 10.1.3 - '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 - fast-content-type-parse: 2.0.1 - universal-user-agent: 7.0.2 - - '@octokit/rest@19.0.13': - dependencies: - '@octokit/core': 4.2.4 - '@octokit/plugin-paginate-rest': 11.4.2(@octokit/core@4.2.4) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) - - '@octokit/types@10.0.0': - dependencies: - '@octokit/openapi-types': 18.1.1 - - '@octokit/types@13.8.0': - dependencies: - '@octokit/openapi-types': 23.0.1 - - '@octokit/types@9.3.2': - dependencies: - '@octokit/openapi-types': 18.1.1 - '@one-ini/wasm@0.1.1': {} '@open-draft/until@1.0.3': {} + '@openapi-contrib/openapi-schema-to-json-schema@3.2.0': + dependencies: + fast-deep-equal: 3.1.3 + '@peculiar/asn1-schema@2.3.13': dependencies: asn1js: 3.0.5 @@ -24092,7 +24624,7 @@ snapshots: dependencies: playwright: 1.47.0 - '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))))(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5)))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(type-fest@4.38.0)(webpack-dev-server@4.15.2(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))))(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5)))': dependencies: ansi-html: 0.0.9 core-js-pure: 3.38.1 @@ -24104,7 +24636,7 @@ snapshots: source-map: 0.7.4 webpack: 5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5)) optionalDependencies: - type-fest: 2.19.0 + type-fest: 4.38.0 webpack-dev-server: 4.15.2(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))) webpack-hot-middleware: 2.26.1 @@ -24150,6 +24682,20 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@puppeteer/browsers@2.3.0': + dependencies: + debug: 4.4.0 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.6.3 + tar-fs: 3.0.8 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - supports-color + '@radix-ui/number@0.1.0': dependencies: '@babel/runtime': 7.26.10 @@ -25800,6 +26346,149 @@ snapshots: '@socket.io/component-emitter@3.1.0': {} + '@stoplight/better-ajv-errors@1.0.3(ajv@8.17.1)': + dependencies: + ajv: 8.17.1 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@stoplight/json-ref-readers@1.2.2(encoding@0.1.13)': + dependencies: + node-fetch: 2.6.13(encoding@0.1.13) + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + + '@stoplight/json-ref-resolver@3.1.6': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + '@types/urijs': 1.19.25 + dependency-graph: 0.11.0 + fast-memoize: 2.5.2 + immer: 9.0.21 + lodash: 4.17.21 + tslib: 2.8.1 + urijs: 1.19.11 + + '@stoplight/json@3.21.0': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + jsonc-parser: 2.2.1 + lodash: 4.17.21 + safe-stable-stringify: 1.1.1 + + '@stoplight/ordered-object-literal@1.0.5': {} + + '@stoplight/path@1.3.2': {} + + '@stoplight/spectral-core@1.19.5(encoding@0.1.13)': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5(encoding@0.1.13) + '@stoplight/spectral-runtime': 1.1.4(encoding@0.1.13) + '@stoplight/types': 13.6.0 + '@types/es-aggregate-error': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1 + es-aggregate-error: 1.0.13 + jsonpath-plus: 10.3.0 + lodash: 4.17.21 + lodash.topath: 4.5.2 + minimatch: 3.1.2 + nimma: 0.2.3 + pony-cause: 1.1.1 + simple-eval: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-formats@1.8.2(encoding@0.1.13)': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/spectral-core': 1.19.5(encoding@0.1.13) + '@types/json-schema': 7.0.15 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-functions@1.9.4(encoding@0.1.13)': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.0 + '@stoplight/spectral-core': 1.19.5(encoding@0.1.13) + '@stoplight/spectral-formats': 1.8.2(encoding@0.1.13) + '@stoplight/spectral-runtime': 1.1.4(encoding@0.1.13) + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1 + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-parsers@1.0.5': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/types': 14.1.1 + '@stoplight/yaml': 4.3.0 + tslib: 2.8.1 + + '@stoplight/spectral-ref-resolver@1.0.5(encoding@0.1.13)': + dependencies: + '@stoplight/json-ref-readers': 1.2.2(encoding@0.1.13) + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-runtime': 1.1.4(encoding@0.1.13) + dependency-graph: 0.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-runtime@1.1.4(encoding@0.1.13)': + dependencies: + '@stoplight/json': 3.21.0 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + abort-controller: 3.0.0 + lodash: 4.17.21 + node-fetch: 2.7.0(encoding@0.1.13) + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/types@13.20.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@13.6.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@14.1.1': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/yaml-ast-parser@0.0.50': {} + + '@stoplight/yaml@4.3.0': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/types': 14.1.1 + '@stoplight/yaml-ast-parser': 0.0.50 + tslib: 2.8.1 + '@storybook/addon-actions@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -27034,6 +27723,8 @@ snapshots: '@tootallnate/once@2.0.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} + '@trysound/sax@0.2.0': {} '@tsconfig/node10@1.0.11': {} @@ -27046,10 +27737,6 @@ snapshots: '@types/ace@0.0.48': {} - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.6 - '@types/argparse@1.0.38': {} '@types/aria-query@5.0.4': {} @@ -27119,7 +27806,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.13.9 + '@types/node': 16.18.126 '@types/debug@4.1.12': dependencies: @@ -27127,6 +27814,10 @@ snapshots: '@types/doctrine@0.0.3': {} + '@types/es-aggregate-error@1.0.6': + dependencies: + '@types/node': 16.18.126 + '@types/escodegen@0.0.6': {} '@types/eslint-scope@3.7.7': @@ -27237,8 +27928,6 @@ snapshots: dependencies: '@types/node': 18.19.34 - '@types/katex@0.14.0': {} - '@types/katex@0.16.7': {} '@types/lodash.debounce@4.0.9': @@ -27269,9 +27958,9 @@ snapshots: '@types/ms@0.7.34': {} - '@types/nlcst@1.0.4': + '@types/nlcst@2.0.3': dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 '@types/node-fetch@2.6.11': dependencies: @@ -27318,8 +28007,6 @@ snapshots: '@types/parse5@5.0.3': {} - '@types/parse5@6.0.3': {} - '@types/pluralize@0.0.30': {} '@types/prettier@2.7.3': {} @@ -27428,6 +28115,10 @@ snapshots: '@types/unist@3.0.2': {} + '@types/unist@3.0.3': {} + + '@types/urijs@1.19.25': {} + '@types/uuid@9.0.8': {} '@types/validator@13.11.10': {} @@ -27458,6 +28149,11 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 16.18.126 + optional: true + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.11.0 @@ -28475,6 +29171,14 @@ snapshots: optionalDependencies: '@types/ws': 8.5.10 + '@xstate/inspect@0.6.5(@types/ws@8.5.10)(ws@8.18.1)(xstate@4.38.3)': + dependencies: + fast-safe-stringify: 2.1.1 + ws: 8.18.1 + xstate: 4.38.3 + optionalDependencies: + '@types/ws': 8.5.10 + '@xstate/inspect@0.8.0(@types/ws@8.5.10)(ws@8.17.1)(xstate@4.38.3)': dependencies: fast-safe-stringify: 2.1.1 @@ -28608,14 +29312,22 @@ snapshots: string.prototype.padstart: 3.1.6 symbol.prototype.description: 1.0.6 - ajv-draft-04@1.0.0(ajv@8.15.0): + ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: - ajv: 8.15.0 + ajv: 8.17.1 + + ajv-errors@3.0.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 ajv-formats@2.1.1: dependencies: ajv: 8.15.0 + ajv-formats@3.0.1: + dependencies: + ajv: 8.17.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -28639,6 +29351,13 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + anser@1.4.10: {} ansi-colors@4.1.3: {} @@ -28733,6 +29452,11 @@ snapshots: call-bind: 1.0.8 is-array-buffer: 3.0.4 + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + array-flatten@1.1.1: {} array-includes@3.1.8: @@ -28846,6 +29570,10 @@ snapshots: ast-types-flow@0.0.8: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + ast-types@0.15.2: dependencies: tslib: 2.8.1 @@ -28907,6 +29635,8 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 + avsc@5.7.7: {} + axe-core@4.7.0: {} axios@1.8.2: @@ -28923,6 +29653,8 @@ snapshots: axobject-query@4.1.0: {} + b4a@1.6.7: {} + babel-core@7.0.0-bridge.0(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 @@ -29268,17 +30000,46 @@ snapshots: balanced-match@1.0.2: {} + bare-events@2.5.4: + optional: true + + bare-fs@4.0.2: + dependencies: + bare-events: 2.5.4 + bare-path: 3.0.0 + bare-stream: 2.6.5(bare-events@2.5.4) + optional: true + + bare-os@3.6.1: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.1 + optional: true + + bare-stream@2.6.5(bare-events@2.5.4): + dependencies: + streamx: 2.22.0 + optionalDependencies: + bare-events: 2.5.4 + optional: true + base-64@1.0.0: {} base64-js@1.5.1: {} base64id@2.0.0: {} + basic-ftp@5.0.5: {} + batch@0.6.1: {} bcryptjs@2.4.3: {} - before-after-hook@2.2.3: {} + better-opn@3.0.2: + dependencies: + open: 8.4.2 better-path-resolve@1.0.0: dependencies: @@ -29368,6 +30129,8 @@ snapshots: dependencies: node-int64: 0.4.0 + buffer-crc32@0.2.13: {} + buffer-crc32@1.0.0: {} buffer-equal-constant-time@1.0.1: {} @@ -29425,6 +30188,11 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 @@ -29437,7 +30205,10 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.6 - call-me-maybe@1.0.2: {} + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 caller-callsite@2.0.0: dependencies: @@ -29628,6 +30399,13 @@ snapshots: chrome-trace-event@1.0.4: {} + chromium-bidi@0.6.3(devtools-protocol@0.0.1312386): + dependencies: + devtools-protocol: 0.0.1312386 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + chromium-edge-launcher@1.0.0: dependencies: '@types/node': 22.13.9 @@ -29685,6 +30463,8 @@ snapshots: cli-width@3.0.0: {} + cli-width@4.1.0: {} + client-only@0.0.1: {} cliui@6.0.0: @@ -29761,6 +30541,8 @@ snapshots: collapse-white-space@1.0.6: {} + collapse-white-space@2.1.0: {} + collect-v8-coverage@1.0.2: {} color-convert@1.9.3: @@ -29973,6 +30755,15 @@ snapshots: optionalDependencies: typescript: 5.7.2 + cosmiconfig@9.0.0(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + create-jest@29.7.0(@types/node@22.13.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@22.13.9)(typescript@5.0.4)): dependencies: '@jest/types': 29.6.3 @@ -30204,6 +30995,8 @@ snapshots: data-uri-to-buffer@4.0.1: {} + data-uri-to-buffer@6.0.2: {} + data-urls@2.0.0: dependencies: abab: 2.0.6 @@ -30228,18 +31021,36 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.2 + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.2 + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + dataloader@2.2.2: {} date-fns-jalali@4.1.0-0: {} @@ -30358,6 +31169,12 @@ snapshots: defu@6.1.4: {} + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + delayed-stream@1.0.0: {} delegates@1.0.0: {} @@ -30420,6 +31237,8 @@ snapshots: dependencies: dequal: 2.0.3 + devtools-protocol@0.0.1312386: {} + didyoumean@1.2.2: {} diff-sequences@27.5.1: {} @@ -30428,8 +31247,6 @@ snapshots: diff@4.0.2: {} - diff@5.2.0: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -30546,6 +31363,12 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -30616,7 +31439,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.13.9 + '@types/node': 16.18.126 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -30647,6 +31470,8 @@ snapshots: entities@4.5.0: {} + env-paths@2.2.1: {} + envinfo@7.13.0: {} error-ex@1.3.2: @@ -30713,6 +31538,71 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.16 + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-aggregate-error@1.0.13: + dependencies: + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.6 + es-errors: 1.3.0 + function-bind: 1.1.2 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + set-function-name: 2.0.2 + es-array-method-boxes-properly@1.0.0: {} es-define-property@1.0.1: {} @@ -30754,12 +31644,23 @@ snapshots: dependencies: es-errors: 1.3.0 + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 hasown: 2.0.2 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 @@ -31738,25 +32639,23 @@ snapshots: estraverse@5.3.0: {} - estree-util-attach-comments@2.1.1: + estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.6 - estree-util-build-jsx@2.2.2: + estree-util-build-jsx@3.0.1: dependencies: '@types/estree-jsx': 1.0.5 - estree-util-is-identifier-name: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 - estree-util-is-identifier-name@2.1.0: {} - estree-util-is-identifier-name@3.0.0: {} - estree-util-to-js@1.2.0: + estree-util-scope@1.0.0: dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.8.6 - source-map: 0.7.4 + '@types/estree': 1.0.6 + devlop: 1.1.0 estree-util-to-js@2.0.0: dependencies: @@ -31764,11 +32663,6 @@ snapshots: astring: 1.8.6 source-map: 0.7.4 - estree-util-visit@1.2.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 2.0.10 - estree-util-visit@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -31920,7 +32814,15 @@ snapshots: extract-files@11.0.0: {} - fast-content-type-parse@2.0.1: {} + extract-zip@2.0.1: + dependencies: + debug: 4.4.0 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color fast-decode-uri-component@1.0.1: {} @@ -31928,6 +32830,8 @@ snapshots: fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -31940,6 +32844,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-memoize@2.5.2: {} + fast-querystring@1.1.2: dependencies: fast-decode-uri-component: 1.0.1 @@ -31950,6 +32856,8 @@ snapshots: fast-uri@2.3.0: {} + fast-uri@3.0.6: {} + fast-url-parser@1.1.3: dependencies: punycode: 1.4.1 @@ -31998,6 +32906,10 @@ snapshots: transitivePeerDependencies: - encoding + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -32152,6 +33064,10 @@ snapshots: dependencies: is-callable: 1.2.7 + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.6 @@ -32332,6 +33248,15 @@ snapshots: hasown: 2.0.2 is-callable: 1.2.7 + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + functions-have-names@1.2.3: {} gauge@3.0.2: @@ -32390,16 +33315,38 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.0.0 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} get-own-enumerable-property-symbols@3.0.2: {} get-package-type@0.1.0: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 + get-stream@4.1.0: dependencies: pump: 3.0.2 + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -32410,10 +33357,24 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.6 + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + get-tsconfig@4.7.3: dependencies: resolve-pkg-maps: 1.0.0 + get-uri@6.0.4: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + github-slugger@1.5.0: {} glob-parent@5.1.2: @@ -32796,10 +33757,10 @@ snapshots: unist-util-is: 4.1.0 web-namespaces: 1.1.4 - hast-util-from-dom@4.2.0: + hast-util-embedded@3.0.0: dependencies: - hastscript: 7.2.0 - web-namespaces: 2.0.1 + '@types/hast': 3.0.4 + hast-util-is-element: 3.0.0 hast-util-from-dom@5.0.0: dependencies: @@ -32807,28 +33768,13 @@ snapshots: hastscript: 8.0.0 web-namespaces: 2.0.1 - hast-util-from-html-isomorphic@1.0.0: - dependencies: - '@types/hast': 2.3.10 - hast-util-from-dom: 4.2.0 - hast-util-from-html: 1.0.2 - unist-util-remove-position: 4.0.2 - hast-util-from-html-isomorphic@2.0.0: dependencies: '@types/hast': 3.0.4 hast-util-from-dom: 5.0.0 - hast-util-from-html: 2.0.1 + hast-util-from-html: 2.0.3 unist-util-remove-position: 5.0.0 - hast-util-from-html@1.0.2: - dependencies: - '@types/hast': 2.3.10 - hast-util-from-parse5: 7.1.2 - parse5: 7.1.2 - vfile: 5.3.7 - vfile-message: 3.1.4 - hast-util-from-html@2.0.1: dependencies: '@types/hast': 3.0.4 @@ -32838,6 +33784,15 @@ snapshots: vfile: 6.0.3 vfile-message: 4.0.2 + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.3 + vfile-message: 4.0.2 + hast-util-from-parse5@6.0.1: dependencies: '@types/parse5': 5.0.3 @@ -32847,16 +33802,6 @@ snapshots: vfile-location: 3.2.0 web-namespaces: 1.1.4 - hast-util-from-parse5@7.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - hastscript: 7.2.0 - property-information: 6.5.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 @@ -32868,15 +33813,26 @@ snapshots: vfile-location: 5.0.3 web-namespaces: 2.0.1 - hast-util-is-element@2.1.3: + hast-util-has-property@3.0.0: dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 + '@types/hast': 3.0.4 + + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.4 hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.4 + hast-util-minify-whitespace@1.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.0 + hast-util-parse-selector@2.2.5: {} hast-util-parse-selector@3.1.1: @@ -32887,6 +33843,14 @@ snapshots: dependencies: '@types/hast': 3.0.4 + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-has-property: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 + hast-util-is-element: 3.0.0 + hast-util-raw@6.0.1: dependencies: '@types/hast': 2.3.10 @@ -32900,50 +33864,37 @@ snapshots: xtend: 4.0.2 zwitch: 1.0.5 - hast-util-raw@7.2.3: - dependencies: - '@types/hast': 2.3.10 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-estree@2.3.3: + hast-util-to-estree@3.1.3: dependencies: '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 - estree-util-attach-comments: 2.1.1 - estree-util-is-identifier-name: 2.1.0 - hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.5.0 + devlop: 1.1.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.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.0.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 4.0.4 + style-to-js: 1.1.0 + unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: - supports-color - hast-util-to-html@8.0.4: + hast-util-to-html@9.0.5: dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.5.0 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + property-information: 7.0.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -32968,6 +33919,23 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-mdast@10.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-phrasing: 3.0.1 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hast-util-whitespace: 3.0.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-hast: 13.1.0 + mdast-util-to-string: 4.0.0 + rehype-minify-whitespace: 6.0.2 + trim-trailing-lines: 2.1.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + hast-util-to-parse5@6.0.0: dependencies: hast-to-hyperscript: 9.0.1 @@ -32976,25 +33944,9 @@ snapshots: xtend: 4.0.2 zwitch: 1.0.5 - hast-util-to-parse5@7.1.0: + hast-util-to-string@3.0.1: dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-string@2.0.0: - dependencies: - '@types/hast': 2.3.10 - - hast-util-to-text@3.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 + '@types/hast': 3.0.4 hast-util-to-text@4.0.2: dependencies: @@ -33003,8 +33955,6 @@ snapshots: hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 - hast-util-whitespace@2.0.1: {} - hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -33130,7 +34080,7 @@ snapshots: html-void-elements@1.0.5: {} - html-void-elements@2.0.1: {} + html-void-elements@3.0.0: {} html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))): dependencies: @@ -33348,6 +34298,18 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + inquirer@12.5.0(@types/node@22.13.9): + dependencies: + '@inquirer/core': 10.1.9(@types/node@22.13.9) + '@inquirer/prompts': 7.4.0(@types/node@22.13.9) + '@inquirer/type': 3.0.5(@types/node@22.13.9) + ansi-escapes: 4.3.2 + mute-stream: 2.0.0 + run-async: 3.0.0 + rxjs: 7.8.2 + optionalDependencies: + '@types/node': 22.13.9 + inquirer@8.2.6: dependencies: ansi-escapes: 4.3.2 @@ -33378,6 +34340,11 @@ snapshots: dependencies: loose-envify: 1.4.0 + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + ip-regex@4.3.0: {} ipaddr.js@1.9.1: {} @@ -33417,6 +34384,12 @@ snapshots: call-bind: 1.0.8 get-intrinsic: 1.2.6 + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} @@ -33577,10 +34550,6 @@ snapshots: is-primitive@3.0.1: {} - is-reference@3.0.2: - dependencies: - '@types/estree': 1.0.6 - is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -33606,6 +34575,10 @@ snapshots: dependencies: call-bind: 1.0.8 + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 + is-stream@1.1.0: {} is-stream@2.0.1: {} @@ -33631,6 +34604,10 @@ snapshots: dependencies: which-typed-array: 1.1.16 + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + is-typedarray@1.0.0: {} is-unc-path@1.0.0: @@ -34568,6 +35545,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + jsc-android@250231.0.0: {} jsc-safe-url@0.2.4: {} @@ -34721,6 +35700,8 @@ snapshots: - supports-color - utf-8-validate + jsep@1.4.0: {} + jsesc@0.5.0: {} jsesc@2.5.2: {} @@ -34770,6 +35751,8 @@ snapshots: espree: 9.6.1 semver: 7.6.3 + jsonc-parser@2.2.1: {} + jsonc-parser@3.2.1: {} jsonfile@2.4.0: @@ -34790,6 +35773,12 @@ snapshots: jsonparse@1.3.1: {} + jsonpath-plus@10.3.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + jsonpath@1.1.1: dependencies: esprima: 1.2.2 @@ -34899,6 +35888,8 @@ snapshots: leven@3.1.0: {} + leven@4.0.0: {} + levn@0.3.0: dependencies: prelude-ls: 1.1.2 @@ -35049,6 +36040,8 @@ snapshots: lodash.throttle@4.1.1: {} + lodash.topath@4.5.2: {} + lodash.uniq@4.5.0: {} lodash@4.17.21: {} @@ -35184,7 +36177,7 @@ snapshots: markdown-escapes@1.0.4: {} - markdown-extensions@1.1.1: {} + markdown-extensions@2.0.0: {} markdown-it@14.1.0: dependencies: @@ -35203,6 +36196,8 @@ snapshots: math-intrinsics@1.0.0: {} + math-intrinsics@1.1.0: {} + mdast-squeeze-paragraphs@4.0.0: dependencies: unist-util-remove: 2.1.0 @@ -35211,19 +36206,6 @@ snapshots: dependencies: unist-util-visit: 2.0.3 - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - unist-util-visit: 4.1.2 - - mdast-util-find-and-replace@2.2.2: - dependencies: - '@types/mdast': 3.0.15 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.4 @@ -35241,23 +36223,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - mdast-util-from-markdown@2.0.1: dependencies: '@types/mdast': 4.0.4 @@ -35275,18 +36240,33 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-frontmatter@1.0.1: + mdast-util-from-markdown@2.0.2: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-extension-frontmatter: 1.1.1 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + 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 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-autolink-literal@1.0.3: + mdast-util-frontmatter@2.0.1: dependencies: - '@types/mdast': 3.0.15 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color mdast-util-gfm-autolink-literal@2.0.0: dependencies: @@ -35296,12 +36276,6 @@ snapshots: mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.1.0 - mdast-util-gfm-footnote@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 - mdast-util-gfm-footnote@2.0.0: dependencies: '@types/mdast': 4.0.4 @@ -35312,11 +36286,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-strikethrough@1.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 @@ -35325,15 +36294,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-table@1.0.7: - dependencies: - '@types/mdast': 3.0.15 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - mdast-util-gfm-table@2.0.0: dependencies: '@types/mdast': 4.0.4 @@ -35344,11 +36304,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - mdast-util-gfm-task-list-item@2.0.0: dependencies: '@types/mdast': 4.0.4 @@ -35358,18 +36313,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm@2.0.2: - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - mdast-util-gfm@3.0.0: dependencies: mdast-util-from-markdown: 2.0.1 @@ -35382,19 +36325,15 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-math@2.0.2: + mdast-util-math@3.0.0: dependencies: - '@types/mdast': 3.0.15 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-to-markdown: 1.5.0 - - mdast-util-mdx-expression@1.3.2: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 transitivePeerDependencies: - supports-color @@ -35409,23 +36348,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@2.1.4: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - ccount: 2.0.1 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-remove-position: 4.0.2 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - transitivePeerDependencies: - - supports-color - mdast-util-mdx-jsx@3.1.2: dependencies: '@types/estree-jsx': 1.0.5 @@ -35444,23 +36366,30 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx@2.0.1: + mdast-util-mdx-jsx@3.2.0: dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.4 - mdast-util-mdxjs-esm: 1.3.1 - mdast-util-to-markdown: 1.5.0 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@1.3.1: + mdast-util-mdx@3.0.0: dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -35475,11 +36404,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-phrasing@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 - mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 @@ -35496,17 +36420,6 @@ snapshots: unist-util-position: 3.1.0 unist-util-visit: 2.0.3 - mdast-util-to-hast@12.3.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - mdast-util-to-hast@13.1.0: dependencies: '@types/hast': 3.0.4 @@ -35519,17 +36432,6 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 - mdast-util-to-markdown@1.5.0: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.4 @@ -35545,16 +36447,10 @@ snapshots: mdast-util-to-string@2.0.0: {} - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 - mdast@3.0.0: {} - mdn-data@2.0.14: {} mdn-data@2.0.30: {} @@ -35773,25 +36669,6 @@ snapshots: - supports-color - utf-8-validate - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-core-commonmark@2.0.1: dependencies: decode-named-character-reference: 1.0.2 @@ -35811,19 +36688,12 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-frontmatter@1.1.1: + micromark-extension-frontmatter@2.0.0: dependencies: fault: 2.0.1 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm-autolink-literal@1.0.5: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 micromark-extension-gfm-autolink-literal@2.0.0: dependencies: @@ -35832,17 +36702,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-footnote@1.1.2: - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-extension-gfm-footnote@2.0.0: dependencies: devlop: 1.1.0 @@ -35854,15 +36713,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-strikethrough@1.0.7: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-extension-gfm-strikethrough@2.0.0: dependencies: devlop: 1.1.0 @@ -35872,14 +36722,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-table@1.0.7: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-extension-gfm-table@2.0.0: dependencies: devlop: 1.1.0 @@ -35888,22 +36730,10 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-tagfilter@1.0.2: - dependencies: - micromark-util-types: 1.1.0 - micromark-extension-gfm-tagfilter@2.0.0: dependencies: micromark-util-types: 2.0.0 - micromark-extension-gfm-task-list-item@1.0.5: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-extension-gfm-task-list-item@2.0.1: dependencies: devlop: 1.1.0 @@ -35912,17 +36742,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm@2.0.3: - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - micromark-extension-gfm@3.0.0: dependencies: micromark-extension-gfm-autolink-literal: 2.0.0 @@ -35934,72 +36753,66 @@ snapshots: micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-math@2.1.2: + micromark-extension-math@3.1.0: dependencies: '@types/katex': 0.16.7 + devlop: 1.1.0 katex: 0.16.21 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-extension-mdx-expression@1.0.8: + micromark-extension-mdx-expression@3.0.1: dependencies: '@types/estree': 1.0.6 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-extension-mdx-jsx@1.0.5: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - - micromark-extension-mdx-md@1.0.1: - dependencies: - micromark-util-types: 1.1.0 - - micromark-extension-mdxjs-esm@1.0.5: + micromark-extension-mdx-jsx@3.0.2: dependencies: '@types/estree': 1.0.6 - micromark-core-commonmark: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 - micromark-extension-mdxjs@1.0.1: + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.6 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdxjs@3.0.0: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) - micromark-extension-mdx-expression: 1.0.8 - micromark-extension-mdx-jsx: 1.0.5 - micromark-extension-mdx-md: 1.0.1 - micromark-extension-mdxjs-esm: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-destination@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + 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: dependencies: @@ -36007,13 +36820,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 @@ -36021,34 +36827,23 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-factory-mdx-expression@1.0.9: + micromark-factory-mdx-expression@2.0.3: dependencies: '@types/estree': 1.0.6 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 @@ -36056,13 +36851,6 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 @@ -36070,61 +36858,30 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-character@2.1.0: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 @@ -36132,60 +36889,34 @@ snapshots: micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - micromark-util-encode@1.1.0: {} - micromark-util-encode@2.0.0: {} - micromark-util-events-to-acorn@1.2.3: + micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/acorn': 4.0.6 '@types/estree': 1.0.6 - '@types/unist': 2.0.10 - estree-util-visit: 1.2.1 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - - micromark-util-html-tag-name@1.2.0: {} + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 micromark-util-html-tag-name@2.0.0: {} - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-util-subtokenize@2.0.1: dependencies: devlop: 1.1.0 @@ -36193,12 +36924,8 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-util-symbol@1.1.0: {} - micromark-util-symbol@2.0.0: {} - micromark-util-types@1.1.0: {} - micromark-util-types@2.0.0: {} micromark@2.11.4: @@ -36208,28 +36935,6 @@ snapshots: transitivePeerDependencies: - supports-color - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - micromark@4.0.0: dependencies: '@types/debug': 4.1.12 @@ -36347,18 +37052,24 @@ snapshots: minipass: 7.1.2 rimraf: 5.0.5 - mintlify@4.0.136(openapi-types@12.1.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + mintlify@4.0.445(@types/node@22.13.9)(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2): dependencies: - '@mintlify/cli': 4.0.136(openapi-types@12.1.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mintlify/cli': 4.0.444(@types/node@22.13.9)(@types/react@18.3.4)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.7.2) transitivePeerDependencies: + - '@types/node' + - '@types/react' + - bare-buffer - bufferutil - debug - - openapi-types + - encoding - react - react-dom - supports-color + - typescript - utf-8-validate + mitt@3.0.1: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -36432,6 +37143,8 @@ snapshots: mute-stream@0.0.8: {} + mute-stream@2.0.0: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -36448,19 +37161,26 @@ snapshots: neo-async@2.6.2: {} + netmask@2.0.2: {} + new-date@1.0.3: dependencies: '@segment/isodate': 1.0.3 - next-mdx-remote@4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-mdx-remote-client@1.1.0(@types/react@18.3.4)(acorn@8.14.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@mdx-js/mdx': 2.3.0 - '@mdx-js/react': 2.3.0(react@18.2.0) + '@babel/code-frame': 7.26.2 + '@mdx-js/mdx': 3.1.0(acorn@8.14.0) + '@mdx-js/react': 3.1.0(@types/react@18.3.4)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - vfile: 5.3.7 - vfile-matter: 3.0.1 + remark-mdx-remove-esm: 1.1.0 + serialize-error: 12.0.0 + vfile: 6.0.3 + vfile-matter: 5.0.1 transitivePeerDependencies: + - '@types/react' + - acorn - supports-color next-nprogress-bar@2.4.2: @@ -36532,9 +37252,19 @@ snapshots: - '@babel/core' - babel-plugin-macros - nlcst-to-string@3.1.1: + nimma@0.2.3: dependencies: - '@types/nlcst': 1.0.4 + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + '@jsep-plugin/ternary': 1.1.4(jsep@1.4.0) + astring: 1.8.6 + jsep: 1.4.0 + optionalDependencies: + jsonpath-plus: 10.3.0 + lodash.topath: 4.5.2 + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 no-case@3.0.4: dependencies: @@ -36559,6 +37289,18 @@ snapshots: optionalDependencies: encoding: 0.1.13 + node-fetch@2.6.7(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + node-fetch@3.3.2: dependencies: data-uri-to-buffer: 4.0.1 @@ -36675,6 +37417,15 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + object.entries@1.1.8: dependencies: call-bind: 1.0.8 @@ -36829,6 +37580,12 @@ snapshots: outvariant@1.4.2: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-any@4.0.0: dependencies: p-cancelable: 3.0.0 @@ -36886,6 +37643,24 @@ snapshots: p-try@2.2.0: {} + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.3 + debug: 4.4.0 + get-uri: 6.0.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + package-json-from-dist@1.0.1: {} param-case@3.0.4: @@ -36937,11 +37712,14 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-latin@5.0.1: + parse-latin@7.0.0: dependencies: - nlcst-to-string: 3.1.1 - unist-util-modify-children: 3.1.1 - unist-util-visit-children: 2.0.2 + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 parse5-htmlparser2-tree-adapter@7.0.0: dependencies: @@ -37013,16 +37791,12 @@ snapshots: dependencies: through: 2.3.8 + pend@1.2.0: {} + perfect-debounce@0.1.3: {} performance-now@2.1.0: {} - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.6 - estree-walker: 3.0.3 - is-reference: 3.0.2 - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -37106,6 +37880,8 @@ snapshots: dependencies: '@babel/runtime': 7.26.10 + pony-cause@1.1.1: {} + popmotion@11.0.3: dependencies: framesync: 6.0.1 @@ -37765,6 +38541,8 @@ snapshots: process@0.11.10: {} + progress@2.0.3: {} + promise.allsettled@1.0.7: dependencies: array.prototype.map: 1.0.7 @@ -37809,6 +38587,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.0.0: {} + proto-list@1.2.4: {} proto3-json-serializer@2.0.2: @@ -37835,6 +38615,19 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + proxy-compare@2.6.0: {} proxy-from-env@1.1.0: {} @@ -37856,6 +38649,32 @@ snapshots: punycode@2.3.1: {} + puppeteer-core@22.15.0: + dependencies: + '@puppeteer/browsers': 2.3.0 + chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) + debug: 4.4.0 + devtools-protocol: 0.0.1312386 + ws: 8.18.1 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - utf-8-validate + + puppeteer@22.15.0(typescript@5.7.2): + dependencies: + '@puppeteer/browsers': 2.3.0 + cosmiconfig: 9.0.0(typescript@5.7.2) + devtools-protocol: 0.0.1312386 + puppeteer-core: 22.15.0 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - typescript + - utf-8-validate + pure-rand@6.1.0: {} pvtsutils@1.3.6: @@ -38341,10 +39160,10 @@ snapshots: '@remix-run/router': 1.21.0 react: 18.2.0 - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@2.19.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1): + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.10))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10))(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/babel__core@7.20.5)(react@18.2.0)(sass@1.32.0)(ts-node@10.9.2(@swc/core@1.4.11(@swc/helpers@0.5.5))(@types/node@16.18.105)(typescript@4.9.5))(type-fest@4.38.0)(typescript@4.9.5)(vue-template-compiler@2.7.16)(webpack-hot-middleware@2.26.1): dependencies: '@babel/core': 7.24.7 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.11.0)(type-fest@2.19.0)(webpack-dev-server@4.15.2(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))))(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.11.0)(type-fest@4.38.0)(webpack-dev-server@4.15.2(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))))(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))) '@svgr/webpack': 5.5.0 babel-jest: 27.5.1(@babel/core@7.24.7) babel-loader: 8.3.0(@babel/core@7.24.7)(webpack@5.97.1(@swc/core@1.4.11(@swc/helpers@0.5.5))) @@ -38567,6 +39386,36 @@ snapshots: source-map: 0.6.1 tslib: 2.8.1 + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.6 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.0(acorn@8.14.0): + dependencies: + acorn-jsx: 5.3.2(acorn@8.14.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - acorn + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.6 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.6 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + recoil-persist@5.1.0(recoil@0.7.7(react-dom@18.2.0(react@18.2.0))(react-native@0.73.7(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react@18.2.0))(react@18.2.0)): dependencies: recoil: 0.7.7(react-dom@18.2.0(react@18.2.0))(react-native@0.73.7(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react@18.2.0))(react@18.2.0) @@ -38588,6 +39437,17 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + reflect.getprototypeof@1.0.8: dependencies: call-bind: 1.0.8 @@ -38665,14 +39525,34 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 - rehype-katex@6.0.3: + rehype-katex@7.0.1: dependencies: - '@types/hast': 2.3.10 - '@types/katex': 0.14.0 - hast-util-from-html-isomorphic: 1.0.0 - hast-util-to-text: 3.1.2 + '@types/hast': 3.0.4 + '@types/katex': 0.16.7 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 katex: 0.16.21 - unist-util-visit: 4.1.2 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + + rehype-minify-whitespace@6.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-minify-whitespace: 1.0.1 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.1 + unified: 11.0.5 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.6 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color relateurl@0.2.7: {} @@ -38694,19 +39574,12 @@ snapshots: remark-footnotes@2.0.0: {} - remark-frontmatter@4.0.1: + remark-frontmatter@5.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-frontmatter: 1.0.1 - micromark-extension-frontmatter: 1.1.1 - unified: 10.1.2 - - remark-gfm@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -38721,12 +39594,22 @@ snapshots: transitivePeerDependencies: - supports-color - remark-math@5.1.1: + remark-math@6.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-math: 2.0.2 - micromark-extension-math: 2.1.2 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.1.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx-remove-esm@1.1.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-mdxjs-esm: 2.0.1 + unist-util-remove: 4.0.0 + transitivePeerDependencies: + - supports-color remark-mdx@1.6.22: dependencies: @@ -38741,18 +39624,10 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@2.3.0: + remark-mdx@3.1.0: dependencies: - mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.1 - transitivePeerDependencies: - - supports-color - - remark-parse@10.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color @@ -38784,13 +39659,6 @@ snapshots: vfile-location: 3.2.0 xtend: 4.0.2 - remark-rehype@10.1.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 @@ -38805,34 +39673,29 @@ snapshots: mdast-util-to-string: 1.1.0 unist-util-visit: 2.0.3 - remark-smartypants@2.1.0: + remark-smartypants@3.0.2: dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 unist-util-visit: 5.0.0 remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs: 4.0.0 - remark-stringify@10.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - unified: 10.1.2 - remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.5 - remark@14.0.3: + remark@15.0.1: dependencies: - '@types/mdast': 3.0.15 - remark-parse: 10.0.2 - remark-stringify: 10.0.3 - unified: 10.1.2 + '@types/mdast': 4.0.4 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -38923,32 +39786,30 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - retext-latin@3.1.0: + retext-latin@4.0.0: dependencies: - '@types/nlcst': 1.0.4 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 - retext-smartypants@5.2.0: + retext-smartypants@6.2.0: dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 - retext-stringify@3.1.0: + retext-stringify@4.0.0: dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 - retext@8.1.0: + retext@9.0.0: dependencies: - '@types/nlcst': 1.0.4 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 retry-request@7.0.2(encoding@0.1.13): dependencies: @@ -39038,6 +39899,8 @@ snapshots: run-async@2.4.1: {} + run-async@3.0.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -39046,6 +39909,10 @@ snapshots: dependencies: tslib: 2.8.1 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + sade@1.8.1: dependencies: mri: 1.2.0 @@ -39062,6 +39929,11 @@ snapshots: safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + safe-regex-test@1.1.0: dependencies: call-bound: 1.0.3 @@ -39072,6 +39944,8 @@ snapshots: dependencies: regexp-tree: 0.1.27 + safe-stable-stringify@1.1.1: {} + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} @@ -39202,6 +40076,10 @@ snapshots: tslib: 2.8.1 upper-case-first: 2.0.2 + serialize-error@12.0.0: + dependencies: + type-fest: 4.38.0 + serialize-error@2.1.0: {} serialize-javascript@6.0.2: @@ -39249,6 +40127,12 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + set-value@4.1.0: dependencies: is-plain-object: 2.0.4 @@ -39340,6 +40224,10 @@ snapshots: signedsource@1.0.0: {} + simple-eval@1.0.1: + dependencies: + jsep: 1.4.0 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -39400,6 +40288,8 @@ snapshots: slugify@1.6.6: {} + smart-buffer@4.2.0: {} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -39441,6 +40331,19 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + socks: 2.8.4 + transitivePeerDependencies: + - supports-color + + socks@2.8.4: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + sonic-boom@3.8.1: dependencies: atomic-sleep: 1.0.0 @@ -39553,6 +40456,8 @@ snapshots: sprintf-js@1.0.3: {} + sprintf-js@1.1.3: {} + stable@0.1.8: {} stack-utils@2.0.6: @@ -39613,6 +40518,13 @@ snapshots: streamsearch@1.1.0: {} + streamx@2.22.0: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + strict-event-emitter@0.2.8: dependencies: events: 3.3.0 @@ -39810,10 +40722,6 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - style-to-object@0.4.4: - dependencies: - inline-style-parser: 0.1.1 - style-to-object@1.0.8: dependencies: inline-style-parser: 0.2.4 @@ -40169,6 +41077,22 @@ snapshots: tapable@2.2.1: {} + tar-fs@3.0.8: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.0.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.0 + tar@6.2.1: dependencies: chownr: 2.0.0 @@ -40257,6 +41181,10 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + text-table@0.2.0: {} thenify-all@1.6.0: @@ -40372,6 +41300,12 @@ snapshots: dependencies: punycode: 2.3.1 + traverse@0.6.11: + dependencies: + gopd: 1.2.0 + typedarray.prototype.slice: 1.0.5 + which-typed-array: 1.1.19 + tree-dump@1.0.2(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -40382,6 +41316,8 @@ snapshots: trim-trailing-lines@1.1.4: {} + trim-trailing-lines@2.1.0: {} + trim@1.0.1: {} trough@1.0.5: {} @@ -40688,6 +41624,8 @@ snapshots: type-fest@2.19.0: {} + type-fest@4.38.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -40699,6 +41637,12 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.13 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.8 @@ -40707,6 +41651,14 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.13 + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + typed-array-byte-offset@1.0.3: dependencies: available-typed-arrays: 1.0.7 @@ -40717,6 +41669,16 @@ snapshots: is-typed-array: 1.1.13 reflect.getprototypeof: 1.0.8 + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 @@ -40730,6 +41692,17 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typedarray.prototype.slice@1.0.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-proto: 1.0.1 + math-intrinsics: 1.1.0 + typed-array-buffer: 1.0.3 + typed-array-byte-offset: 1.0.4 + typedoc@0.22.18(typescript@4.9.5): dependencies: glob: 8.1.0 @@ -40779,6 +41752,11 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + unc-path-regex@0.1.2: {} unconfig@0.3.13: @@ -40808,8 +41786,6 @@ snapshots: inherits: 2.0.4 xtend: 4.0.2 - unherit@3.0.1: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -40821,16 +41797,6 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unified@10.1.2: - dependencies: - '@types/unist': 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -40876,14 +41842,9 @@ snapshots: unist-builder@2.0.3: {} - unist-builder@3.0.1: + unist-builder@4.0.0: dependencies: - '@types/unist': 2.0.10 - - unist-util-find-after@4.0.1: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 + '@types/unist': 3.0.2 unist-util-find-after@5.0.0: dependencies: @@ -40892,8 +41853,6 @@ snapshots: unist-util-generated@1.1.6: {} - unist-util-generated@2.0.1: {} - unist-util-is@4.1.0: {} unist-util-is@5.2.1: @@ -40904,29 +41863,21 @@ snapshots: dependencies: '@types/unist': 3.0.2 - unist-util-map@3.1.3: + unist-util-map@4.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.2 - unist-util-modify-children@3.1.1: + unist-util-modify-children@4.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 array-iterate: 2.0.1 - unist-util-position-from-estree@1.1.2: - dependencies: - '@types/unist': 2.0.10 - unist-util-position-from-estree@2.0.0: dependencies: '@types/unist': 3.0.2 unist-util-position@3.1.0: {} - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -40935,11 +41886,6 @@ snapshots: dependencies: unist-util-visit: 2.0.3 - unist-util-remove-position@4.0.2: - dependencies: - '@types/unist': 2.0.10 - unist-util-visit: 4.1.2 - unist-util-remove-position@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -40949,27 +41895,23 @@ snapshots: dependencies: unist-util-is: 4.1.0 - unist-util-remove@3.1.1: + unist-util-remove@4.0.0: dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 unist-util-stringify-position@2.0.3: dependencies: '@types/unist': 2.0.10 - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.2 - unist-util-visit-children@2.0.2: + unist-util-visit-children@3.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 unist-util-visit-parents@3.1.1: dependencies: @@ -41004,10 +41946,6 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universal-user-agent@6.0.1: {} - - universal-user-agent@7.0.2: {} - universalify@0.1.2: {} universalify@2.0.1: {} @@ -41101,6 +42039,8 @@ snapshots: dependencies: punycode: 2.3.1 + urijs@1.19.11: {} + urlpattern-polyfill@10.0.0: {} urlpattern-polyfill@8.0.2: {} @@ -41187,13 +42127,6 @@ snapshots: uuid@9.0.1: {} - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@8.1.1: @@ -41230,32 +42163,21 @@ snapshots: vfile-location@3.2.0: {} - vfile-location@4.1.0: - dependencies: - '@types/unist': 2.0.10 - vfile: 5.3.7 - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.2 vfile: 6.0.3 - vfile-matter@3.0.1: + vfile-matter@5.0.1: dependencies: - '@types/js-yaml': 4.0.9 - is-buffer: 2.0.5 - js-yaml: 4.1.0 + vfile: 6.0.3 + yaml: 2.6.1 vfile-message@2.0.4: dependencies: '@types/unist': 2.0.10 unist-util-stringify-position: 2.0.3 - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 3.0.3 - vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 @@ -41268,13 +42190,6 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - vfile@6.0.3: dependencies: '@types/unist': 3.0.2 @@ -41963,6 +42878,16 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@1.3.1: dependencies: isexe: 2.0.0 @@ -42165,6 +43090,8 @@ snapshots: ws@8.17.1: {} + ws@8.18.1: {} + xml-name-validator@3.0.0: {} xml-name-validator@4.0.0: {} @@ -42253,12 +43180,19 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yn@3.1.1: {} yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} + yoctocolors-cjs@2.1.2: {} + yup-password@0.2.2: {} yup@1.5.0: @@ -42288,6 +43222,8 @@ snapshots: dependencies: zod: 3.24.1 + zod@3.23.8: {} + zod@3.24.1: {} zwitch@1.0.5: {} diff --git a/templates/cra-template-nhost-react-apollo-template/README.md b/templates/cra-template-nhost-react-apollo-template/README.md index 0fcd145e5..575267021 100644 --- a/templates/cra-template-nhost-react-apollo-template/README.md +++ b/templates/cra-template-nhost-react-apollo-template/README.md @@ -21,4 +21,4 @@ For more information, check out these resources: - [Nhost](https://nhost.io) - [Documentation](https://docs.nhost.io) -- [React Quickstart Guide](https://docs.nhost.io/guides/quickstarts/react) \ No newline at end of file +- [React Quickstart Guide](https://docs.nhost.io/getting-started/quickstart/react) \ No newline at end of file diff --git a/templates/cra-template-nhost-react-apollo-template/template/README.md b/templates/cra-template-nhost-react-apollo-template/template/README.md index bdf852ebd..ea1a0d8d6 100644 --- a/templates/cra-template-nhost-react-apollo-template/template/README.md +++ b/templates/cra-template-nhost-react-apollo-template/template/README.md @@ -1,9 +1,9 @@ # Nhost React Apollo Template -This template, bootstrapped with [`create-react-app`](https://create-react-app.dev), offers a robust starting point for your React project using [Nhost](https://nhost.io) as the backend,complete with essential features to accelerate your development process. For a step-by-step guide on how to build on top of this template, refer to the [quickstart guide](https://docs.nhost.io/guides/quickstarts/react). +This template, bootstrapped with [`create-react-app`](https://create-react-app.dev), offers a robust starting point for your React project using [Nhost](https://nhost.io) as the backend,complete with essential features to accelerate your development process. For a step-by-step guide on how to build on top of this template, refer to the [quickstart guide](https://docs.nhost.io/getting-started/quickstart/react). For more information, check out these resources: - [Nhost](https://nhost.io) - [Documentation](https://docs.nhost.io) -- [React Quickstart Guide](https://docs.nhost.io/guides/quickstarts/react) \ No newline at end of file +- [React Quickstart Guide](https://docs.nhost.io/getting-started/quickstart/react) \ No newline at end of file diff --git a/templates/react-native/template/README.md b/templates/react-native/template/README.md index 54dbaac3a..c607c4fe0 100644 --- a/templates/react-native/template/README.md +++ b/templates/react-native/template/README.md @@ -6,4 +6,4 @@ For comprehensive guidance on using Nhost with React Native, check out these res - [Nhost](https://nhost.io) - [Documentation](https://docs.nhost.io) -- [React Native Quickstart Guide](https://docs.nhost.io/guides/quickstarts/react-native) \ No newline at end of file +- [React Native Quickstart Guide](https://docs.nhost.io/getting-started/quickstart/reactnative) \ No newline at end of file