From d046699b53fd0818908de2eb7f8e095f139c7209 Mon Sep 17 00:00:00 2001 From: David Moore Date: Fri, 13 Dec 2024 12:11:48 +1100 Subject: [PATCH 1/9] add link to each resource page to cloud services matrix --- docs/apis.mdx | 4 ++++ docs/batch.mdx | 4 ++++ docs/http.mdx | 4 ++++ docs/keyvalue.mdx | 4 ++++ docs/messaging.mdx | 4 ++++ docs/schedules.mdx | 4 ++++ docs/secrets.mdx | 4 ++++ docs/sql.mdx | 4 ++++ docs/storage.mdx | 4 ++++ docs/websockets.mdx | 4 ++++ 10 files changed, 40 insertions(+) diff --git a/docs/apis.mdx b/docs/apis.mdx index 7d8514b71..0276ce035 100644 --- a/docs/apis.mdx +++ b/docs/apis.mdx @@ -1308,3 +1308,7 @@ accountsApi.get("/orgs/:id", (ctx) async { ``` + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/batch.mdx b/docs/batch.mdx index f495f0904..078d04b1d 100644 --- a/docs/batch.mdx +++ b/docs/batch.mdx @@ -239,3 +239,7 @@ void main() { ``` + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/http.mdx b/docs/http.mdx index ae568e257..eaca522b6 100644 --- a/docs/http.mdx +++ b/docs/http.mdx @@ -53,3 +53,7 @@ http(bootstrap) + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/keyvalue.mdx b/docs/keyvalue.mdx index 74e6b13da..ffb57c69e 100644 --- a/docs/keyvalue.mdx +++ b/docs/keyvalue.mdx @@ -437,3 +437,7 @@ keys.forEach((String key) { ``` + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/messaging.mdx b/docs/messaging.mdx index 4738d9fc4..a6b855755 100644 --- a/docs/messaging.mdx +++ b/docs/messaging.mdx @@ -702,3 +702,7 @@ await Future.wait(messages.map((message) async { It's common to ask when to use a queue or a topic. From a publisher's point of view, both queues and topics are almost identical. The difference is primarily on the receiver/subscriber side. Topics push new messages to their subscribers, immediately spinning up workers to process them, while queues rely on the receiver to ask for new messages to process. For these reasons, we usually default to Topics. Queues are more suitable for batch workloads or situations where there are occasional surges of requests that can be processed at a later time. + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/schedules.mdx b/docs/schedules.mdx index b080b77f0..262a52860 100644 --- a/docs/schedules.mdx +++ b/docs/schedules.mdx @@ -398,3 +398,7 @@ If you're using schedules on Azure you will be charged for at least 1 container This may change in the future as Nitric's Azure provider evolves, allowing for scale to zero as is the case with other providers. + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/secrets.mdx b/docs/secrets.mdx index 874eabc82..1269b69b3 100644 --- a/docs/secrets.mdx +++ b/docs/secrets.mdx @@ -312,3 +312,7 @@ final value = latest.value; ``` + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/sql.mdx b/docs/sql.mdx index fff3cd0d5..94b299d52 100644 --- a/docs/sql.mdx +++ b/docs/sql.mdx @@ -336,3 +336,7 @@ Here are a few alternatives that work well with Nitric: - [PlanetScale](https://planetscale.com/) (MySQL) Guides are available for some of these alternatives in the [guides section](/guides). + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/storage.mdx b/docs/storage.mdx index b9aa3e3b6..8a3f7c791 100644 --- a/docs/storage.mdx +++ b/docs/storage.mdx @@ -675,3 +675,7 @@ profiles.on(BlobEventType.delete, "*", (ctx) async { ``` + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/websockets.mdx b/docs/websockets.mdx index bd7875afb..23b5828da 100644 --- a/docs/websockets.mdx +++ b/docs/websockets.mdx @@ -459,3 +459,7 @@ socket.onMessage((ctx) async { Do not send messages to a connection during it's `connect` callback, if you need to acknowledge connection, do so by using a [topic](./messaging) + +## Cloud Service Mapping + +Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). From ae6314e21d62d649fadfe8cf9234f3e46b8215d9 Mon Sep 17 00:00:00 2001 From: David Moore Date: Fri, 13 Dec 2024 12:12:21 +1100 Subject: [PATCH 2/9] remove old aws pulumi config page --- docs/providers/pulumi/aws/configuration.mdx | 171 -------------------- next.config.mjs | 6 + 2 files changed, 6 insertions(+), 171 deletions(-) delete mode 100644 docs/providers/pulumi/aws/configuration.mdx diff --git a/docs/providers/pulumi/aws/configuration.mdx b/docs/providers/pulumi/aws/configuration.mdx deleted file mode 100644 index 4e457a753..000000000 --- a/docs/providers/pulumi/aws/configuration.mdx +++ /dev/null @@ -1,171 +0,0 @@ ---- -description: 'Configuring your AWS stacks' ---- - -# AWS Configuration - -## Complete Example with comments - - - - - -```yaml Pulumi -# The provider to use and it's published version -# See releases: -# https://github.com/nitrictech/nitric/tags -provider: nitric/aws@1.12.4 - -# The target aws region to deploy to -# See available regions: -# https://docs.aws.amazon.com/general/latest/gr/lambda-service.html -region: my-aws-stack-region - -# The timezone that deployed schedules will run with -# Format is in tz identifiers: -# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones -schedule-timezone: Australia/Sydney # Available since v0.27.0 - -# Import existing AWS Resources -# Currently only secrets are supported -# Available since v0.28.0 -import: - # A name ARN map of buckets, where the name matches the nitric name of the bucket you would like to import - buckets: # Available since v1.10.0 - # NOTE: Imported S3 buckets must exist in the same AWS account and region as the Nitric project - my-bucket: arn:... - # A name ARN map of secrets, where the name matches the nitric name of the secret you would like to import - secrets: # Available since v0.28.0 - # In typescript this would import the provided secret reference for a secret declared as - # const mySecret = secret('my-secret'); - my-secret: arn:... - -# Apply configuration to nitric APIs -apis: - # The nitric name of the API to configure - my-api: - # Array of domains to apply to the API - # The domain or parent domain must have a hosted zone already in Route53 - domains: - - api.example.com - description: An AWS API - -# Configure your deployed services -config: - # How services without a type will be deployed - default: - # configure a sample rate for telemetry (between 0 and 1) e.g. 0.5 is 50% - telemetry: 0 - # configure services to deploy to AWS lambda - lambda: # Available since v0.26.0 - # set the memory in MB - # See lambda configuration docs here: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console - memory: 128 - # set a timeout in seconds - # See lambda timeout values here: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-timeout-console - timeout: 15 - # set the amount of ephemeral-storage in MB - # For info on ephemeral-storage for AWS Lambda see: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-ephemeral-storage.html - ephemeral-storage: 512 - # set a provisioned concurrency value - # For info on provisioned concurrency for AWS Lambda see: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html - provisioned-concurrency: 0 - # Configure VPCs that the lambda can access - vpc: - # Array of existing security group ids to apply - security-group-ids: - - sg-xxx - # Array of existing subnet ids to apply - subnet-ids: - - subnet-xxx - # Additional deployment types - # You can target these types by setting a `type` in your project configuration - big-service: - telemetry: 0 - lambda: - memory: 1024 - timeout: 60 - provisioned-concurrency: 1 -``` - - - - - -```yaml Terraform (Preview) -# The name of your AWS stack -name: my-aws-stack-name - -# The provider to use and it's published version -# See releases: -# https://github.com/nitrictech/nitric/tags -provider: nitric/awstf@1.5.1 - -# The target aws region to deploy to -# See available regions: -# https://docs.aws.amazon.com/general/latest/gr/lambda-service.html -region: my-aws-stack-region - -# Optional outdir -# outdir: ./tf-output - -# config: -# Config (same as base AWS provider except for VPC/Secret imports) - -# The timezone that deployed schedules will run with -# Format is in tz identifiers: -# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones -schedule-timezone: Australia/Sydney # Available since v0.27.0 - -# Apply configuration to nitric APIs -apis: - # The nitric name of the API to configure - my-api: - # Array of domains to apply to the API - # The domain or parent domain must have a hosted zone already in Route53 - domains: - - api.example.com - -# Configure your deployed services -config: - # How services without a type will be deployed - default: - # configure a sample rate for telemetry (between 0 and 1) e.g. 0.5 is 50% - telemetry: 0 - # configure services to deploy to AWS lambda - lambda: # Available since v0.26.0 - # set the memory in MB - # See lambda configuration docs here: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console - memory: 128 - # set a timeout in seconds - # See lambda timeout values here: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-timeout-console - timeout: 15 - # set the amount of ephemeral-storage in MB - # For info on ephemeral-storage for AWS Lambda see: - # https://docs.aws.amazon.com/lambda/latest/dg/configuration-ephemeral-storage.html - ephemeral-storage: 512 - # Additional deployment types - # You can target these types by setting a `type` in your project configuration - big-service: - telemetry: 0 - lambda: - memory: 1024 - timeout: 60 - provisioned-concurrency: 1 -``` - - - - - - - Missing something? Let us know by raising an issue in - [GitHub](https://github.com/nitrictech/nitric) or by dropping us a line on - [Discord](https://nitric.io/chat) - diff --git a/next.config.mjs b/next.config.mjs index 3646e8425..00756a2ee 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -495,6 +495,12 @@ const nextConfig = { basePath: false, permanent: true, }, + { + source: '/docs/reference/providers/pulumi/aws/configuration', + destination: '/docs/providers/pulumi/aws#stack-configuration', + basePath: false, + permanent: true, + }, { source: '/docs/reference/providers/aws/:slug((?!configuration).*)', destination: '/docs/providers/pulumi/aws/:slug*', From 029f291f714b77825defb05ca3bc9a98ce968b4f Mon Sep 17 00:00:00 2001 From: David Moore Date: Fri, 13 Dec 2024 12:17:04 +1100 Subject: [PATCH 3/9] add some missing breadcrumbs --- src/config/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/index.ts b/src/config/index.ts index 6a7070f2e..c7b3162f5 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -58,6 +58,7 @@ export const navigation: NavEntry[] = [ { title: 'Overview', href: '/get-started/foundations/projects', + breadcrumbRoot: true, }, { title: 'Configuration', @@ -71,6 +72,7 @@ export const navigation: NavEntry[] = [ { title: 'Overview', href: '/get-started/foundations/infrastructure', + breadcrumbRoot: true, }, { title: 'Services', @@ -162,6 +164,7 @@ export const navigation: NavEntry[] = [ { title: 'Overview', href: '/providers/pulumi', + breadcrumbRoot: true, }, { title: 'AWS', @@ -187,6 +190,7 @@ export const navigation: NavEntry[] = [ { title: 'Overview', href: '/providers/terraform', + breadcrumbRoot: true, }, { title: 'AWS', @@ -207,6 +211,7 @@ export const navigation: NavEntry[] = [ { title: 'Overview', href: '/providers/custom', + breadcrumbRoot: true, }, { title: 'Provider Extension', From 8f526657cd23badadc2a7a488c9831058a0191ec Mon Sep 17 00:00:00 2001 From: David Moore Date: Fri, 13 Dec 2024 12:23:14 +1100 Subject: [PATCH 4/9] delete old nav config --- src/nav.config.ts | 3506 --------------------------------------------- 1 file changed, 3506 deletions(-) delete mode 100644 src/nav.config.ts diff --git a/src/nav.config.ts b/src/nav.config.ts deleted file mode 100644 index f95937561..000000000 --- a/src/nav.config.ts +++ /dev/null @@ -1,3506 +0,0 @@ -import { - ArchiveBoxIcon, - CircleStackIcon, - ClockIcon, - CloudIcon, - CommandLineIcon, - CpuChipIcon, - GlobeAltIcon, - HomeIcon, - LockClosedIcon, - MegaphoneIcon, - ServerIcon, - ChatBubbleLeftRightIcon, - QuestionMarkCircleIcon, - Square3Stack3DIcon, - BookOpenIcon, - WrenchScrewdriverIcon, - LifebuoyIcon, - CloudArrowUpIcon, - RocketLaunchIcon, - CubeIcon, - Cog6ToothIcon, - BoltIcon, -} from '@heroicons/react/24/outline' -import { FaNodeJs, FaPython, FaJava, FaAws, FaGithub } from 'react-icons/fa' -import { - SiCsharp, - SiPulumi, - SiDart, - SiGooglecloud, - SiMicrosoftazure, - SiTerraform, -} from 'react-icons/si' -import { BiLogoGoLang } from 'react-icons/bi' -import { useRouter } from 'next/router' -import { RefreshCcwIcon, ToggleLeftIcon } from 'lucide-react' - -export const topLevelNavigation = [ - { text: 'Nitric.io', href: 'https://nitric.io' }, -] - -export type Version = 'v0' | 'v1' - -export interface DocNavGroup { - title?: string - showDividerAbove?: boolean - disableAutoPrefix?: boolean - links: { - title: string - href: string - badge?: string - icon?: any - versions?: Version[] - }[] -} - -interface FullNav { - [startsWithPath: string]: DocNavGroup[] -} - -const buildingBlockLinks = [ - { - title: 'APIs', - href: '/apis', - icon: GlobeAltIcon, - }, - { - title: 'HTTP', - href: '/http', - icon: ServerIcon, - }, - { - title: 'AI & Batch', - href: '/batch', - icon: CpuChipIcon, - }, - { - title: 'Key Value Stores', - href: '/keyvalue', - icon: ArchiveBoxIcon, - }, - { - title: 'SQL Databases', - href: '/sql', - icon: CircleStackIcon, - }, - { - title: 'Schedules', - href: '/schedules', - icon: ClockIcon, - }, - { - title: 'Storage', - href: '/storage', - icon: CircleStackIcon, - }, - { - title: 'Messages', - href: '/messaging', - icon: MegaphoneIcon, - }, - { - title: 'Secrets', - href: '/secrets', - icon: LockClosedIcon, - }, - { - title: 'Websockets', - href: '/websockets', - icon: ChatBubbleLeftRightIcon, - }, -] - -/** - * RULES: - * 1. put older version of reference docs higher in the array. - */ - -const fullNav: FullNav = { - docs: [ - { - links: [ - { - title: 'Home', - href: '/', - icon: HomeIcon, - }, - { - title: 'Concepts', - href: '/concepts/introduction', - icon: Square3Stack3DIcon, - }, - { - title: 'Get Started', - href: '/getting-started/quickstart', - icon: RocketLaunchIcon, - }, - { - title: 'Guides', - href: '/guides', - icon: BookOpenIcon, - }, - ], - }, - { - title: 'Using Nitric', - links: [ - { - title: 'Nitric CLI', - href: '/reference/cli', - icon: CommandLineIcon, - }, - ], - }, - { - showDividerAbove: true, - links: buildingBlockLinks, - }, - { - showDividerAbove: true, - links: [ - { - title: 'Custom Container Builds', - href: '/reference/custom-containers', - icon: CubeIcon, - }, - { - title: 'Environment Variables', - href: '/reference/env', - icon: Cog6ToothIcon, - }, - { - title: 'Preview Features', - href: '/reference/preview-features', - icon: ToggleLeftIcon, - }, - ], - }, - { - title: 'Library Reference', - links: [ - { - title: 'Node.js', - href: '/reference/nodejs', - icon: FaNodeJs, - versions: ['v1', 'v0'], - }, - { - title: 'Python', - href: '/reference/python', - icon: FaPython, - versions: ['v1', 'v0'], - }, - { - title: 'Go', - href: '/reference/go', - badge: 'Experimental ๐Ÿงช', - icon: BiLogoGoLang, - versions: ['v1', 'v0'], - }, - { - title: 'Dart', - badge: 'Experimental ๐Ÿงช', - href: '/reference/dart', - icon: SiDart, - }, - { - title: 'C# .NET', - badge: 'Coming soon ๐Ÿš€', - href: '/reference/csharp/v0', - icon: SiCsharp, - }, - { - title: 'JVM', - badge: 'Coming soon ๐Ÿš€', - href: '/reference/jvm/v0', - icon: FaJava, - }, - ], - }, - { - title: 'Cloud Providers', - links: [ - { - title: 'Overview', - href: '/reference/providers', - icon: CloudIcon, - }, - { - title: 'AWS', - href: '/reference/providers/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/gcp', - icon: SiGooglecloud, - }, - { - title: 'Azure', - href: '/reference/providers/azure', - icon: SiMicrosoftazure, - }, - { - title: 'Custom Providers', - href: '/reference/providers/custom/building-custom-provider', - icon: WrenchScrewdriverIcon, - }, - ], - }, - { - title: 'Integrations', - links: [ - { - title: 'Pulumi', - href: '/reference/providers/pulumi', - icon: SiPulumi, - }, - { - title: 'Terraform', - href: '/reference/providers/terraform', - icon: SiTerraform, - }, - ], - }, - { - title: 'Additional Resources', - links: [ - { - title: 'FAQs', - href: '/faq', - icon: QuestionMarkCircleIcon, - }, - { - title: 'Support', - href: '/support', - icon: LifebuoyIcon, - }, - { - title: 'Contributions', - href: '/contributions', - icon: CloudArrowUpIcon, - }, - { - title: 'Upgrade from v0', - href: '/support/upgrade', - icon: RefreshCcwIcon, - }, - ], - }, - ], - concepts: [ - { - links: [ - { - title: 'What is Nitric?', - href: '/concepts/introduction', - }, - { - title: 'How Nitric works', - href: '/concepts/how-nitric-works', - }, - { - title: 'What You Can Build with Nitric', - href: '/concepts/build-with-nitric', - }, - { - title: 'How Devs Use Nitric', - href: '/concepts/how-devs-use-nitric', - }, - { - title: 'How Ops Use Nitric', - href: '/concepts/how-ops-use-nitric', - }, - { - title: 'Extensibility', - href: '/concepts/extensibility', - }, - { - title: 'IAM and Access Control', - href: '/concepts/access-control', - }, - { - title: 'Languages', - href: '/concepts/language-support', - }, - { - title: 'CI/CD Pipeline', - href: '/concepts/cicd', - }, - { - title: 'Project Structure', - href: '/concepts/project-structure', - }, - ], - }, - { - title: 'Comparisons', - links: [ - { - title: 'Overview', - href: '/concepts/comparison', - }, - { - title: 'AWS CDK', - href: '/concepts/comparison/aws-cdk', - }, - { - title: 'AWS SAM', - href: '/concepts/comparison/aws-sam', - }, - { - title: 'GCP Deployment Manager', - href: '/concepts/comparison/gcp-deployment-manager', - }, - { - title: 'Azure Resource Manager', - href: '/concepts/comparison/bicep', - }, - { - title: 'Pulumi', - href: '/concepts/comparison/pulumi', - }, - { - title: 'Terraform', - href: '/concepts/comparison/terraform', - }, - { - title: 'SST', - href: '/concepts/comparison/sst', - }, - { - title: 'Encore', - href: '/concepts/comparison/encore', - }, - { - title: 'Wing', - href: '/concepts/comparison/winglang', - }, - { - title: 'Ampt', - href: '/concepts/comparison/ampt', - }, - ], - }, - { - title: 'Next steps', - links: [ - { - title: 'Get started with Nitric', - href: '/getting-started/quickstart', - }, - ], - }, - ], - ['getting-started']: [ - { - links: [ - { - title: 'Installation', - href: '/getting-started/installation', - }, - { - title: 'Quickstart', - href: '/getting-started/quickstart', - }, - { - title: 'Local Dashboard', - href: '/getting-started/local-dashboard', - }, - { - title: 'Resource Best Practices', - href: '/getting-started/resources-overview', - }, - { - title: 'Deployment', - href: '/getting-started/deployment', - }, - ], - }, - { - title: 'Next Steps', - links: [ - { - title: 'Check out our Guides', - href: '/guides', - }, - ], - }, - ], - ['guides/nodejs']: [ - { - links: [ - { - title: 'Debugging', - href: '/guides/nodejs/debugging', - }, - { - title: 'Testing', - href: '/guides/nodejs/testing', - }, - { - title: 'REST API', - href: '/guides/nodejs/serverless-rest-api-example', - }, - { - title: 'GraphQL', - href: '/guides/nodejs/graphql', - }, - { - title: 'Express.js', - href: '/guides/nodejs/expressjs', - }, - { - title: 'Fastify', - href: '/guides/nodejs/fastify', - }, - { - title: 'Nest.js', - href: '/guides/nodejs/nestjs', - }, - { - title: 'Next.js', - href: '/guides/nodejs/api-with-nextjs', - }, - { - title: 'Stripe', - href: '/guides/nodejs/stripe', - }, - { - title: 'Twilio', - href: '/guides/nodejs/twilio', - }, - - { - title: 'Uptime Monitor', - href: '/guides/nodejs/uptime', - }, - { - title: 'Websockets', - href: '/guides/nodejs/websockets', - }, - ], - }, - { - title: 'Auth', - links: [ - { - title: 'Secure API with Auth0', - href: '/guides/nodejs/secure-api-auth0', - }, - { - title: 'Secure APIs with AWS Cognito', - href: '/guides/nodejs/amazon-cognito', - }, - ], - }, - { - title: 'Databases', - links: [ - { - title: 'Nitric SQL with Drizzle', - href: '/guides/nodejs/nitric-and-drizzle', - }, - { - title: 'Nitric SQL with Prisma', - href: '/guides/nodejs/nitric-and-prisma', - }, - { - title: 'Using an external Database', - href: '/guides/nodejs/byo-database', - }, - { - title: 'Supabase', - href: '/guides/nodejs/nitric-and-supabase', - }, - { - title: 'PlanetScale and Prisma', - href: '/guides/nodejs/serverless-api-with-planetscale-and-prisma', - }, - ], - }, - ], - ['guides/python']: [ - { - links: [ - { - title: 'REST API', - href: '/guides/python/serverless-rest-api-example', - }, - { - title: 'GraphQL', - href: '/guides/python/graphql', - }, - { - title: 'Visualising Data', - href: '/guides/python/create-histogram', - }, - { - title: 'Predictive Text API using Tensorflow', - href: '/guides/python/text-prediction', - }, - { - title: 'Scheduled reports with Google Sheets and Google Drive', - href: '/guides/python/scheduled-report', - }, - ], - }, - ], - ['guides/dart']: [ - { - links: [ - { - title: 'REST API', - href: '/guides/dart/serverless-rest-api-example', - }, - { - title: 'Flutter Web', - href: '/guides/dart/flutter', - }, - ], - }, - ], - ['guides/jvm']: [ - { - links: [ - { - title: 'REST API', - href: '/guides/jvm/serverless-rest-api-example', - }, - ], - }, - ], - ['guides/go']: [ - { - links: [ - { - title: 'REST API', - href: '/guides/go/serverless-rest-api-example', - }, - ], - }, - ], - ['guides/terraform']: [ - { - links: [ - { - title: 'AWS S3 Server-side Encryption', - href: '/guides/terraform/s3-encryption', - }, - { - title: 'AWS S3 Replication', - href: '/guides/terraform/s3-replicate', - }, - { - title: 'AWS API Gateway Throttle', - href: '/guides/terraform/api-gateway-throttle', - }, - ], - }, - ], - ['guides/deploying']: [ - { - links: [ - { - title: 'Using GitHub Actions', - href: '/guides/deploying/github-actions', - }, - { - title: 'Using GitLab CI', - href: '/guides/deploying/gitlab-ci', - }, - { - title: 'Using Azure Pipelines', - href: '/guides/deploying/azure-pipelines', - }, - { - title: 'Using Google Cloud Build', - href: '/guides/deploying/google-cloud-build', - }, - ], - }, - ], - guides: [ - { - links: [ - { - title: 'Node.js Guides', - href: '/guides/nodejs', - icon: FaNodeJs, - }, - { - title: 'Python Guides', - href: '/guides/python', - icon: FaPython, - }, - { - title: 'Dart Guides', - href: '/guides/dart', - icon: SiDart, - }, - // { - // title: 'C# .NET Guides', - // href: '/guides/csharp', - // icon: SiCsharp, - // }, - { - title: 'Go Guides', - href: '/guides/go', - icon: BiLogoGoLang, - }, - { - title: 'JVM Guides', - href: '/guides/jvm', - icon: FaJava, - }, - { - title: 'CI/CD Guides', - href: '/guides/deploying', - icon: BoltIcon, - }, - { - title: 'Terraform Guides', - href: '/guides/terraform', - icon: SiTerraform, - }, - { - title: 'Examples', - href: '/guides/examples', - icon: FaGithub, - }, - ], - }, - ], - apis: [ - { - links: [ - { - title: 'Overview', - href: '/apis', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/apis'), - }, - ], - http: [ - { - links: [ - { - title: 'Overview', - href: '/http', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/http'), - }, - ], - batch: [ - { - links: [ - { - title: 'Overview', - href: '/batch', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/batch'), - }, - ], - keyvalue: [ - { - links: [ - { - title: 'Overview', - href: '/keyvalue', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/keyvalue'), - }, - ], - schedules: [ - { - links: [ - { - title: 'Overview', - href: '/schedules', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/schedules'), - }, - ], - storage: [ - { - links: [ - { - title: 'Overview', - href: '/storage', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/storage'), - }, - ], - sql: [ - { - links: [ - { - title: 'Overview', - href: '/sql', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/sql'), - }, - ], - messaging: [ - { - links: [ - { - title: 'Overview', - href: '/messaging', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/messaging'), - }, - ], - secrets: [ - { - links: [ - { - title: 'Overview', - href: '/secrets', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/secrets'), - }, - ], - websockets: [ - { - links: [ - { - title: 'Overview', - href: '/websockets', - }, - ], - }, - { - title: 'More Building Blocks', - links: buildingBlockLinks.filter((link) => link.href !== '/websockets'), - }, - ], - support: [ - { - links: [ - { - title: 'Support', - href: '/support', - }, - { - title: 'Upgrade from v0', - href: '/support/upgrade', - }, - ], - }, - ], - ['reference/preview-features']: [ - { - links: [ - { - title: 'Overview', - href: '/reference/preview-features', - }, - ], - }, - { - title: 'Current Preview Features', - links: [ - { - title: 'Docker Providers', - href: '/reference/providers/install/docker', - }, - { - title: 'SQL Databases', - href: '/sql', - }, - ], - }, - ], - ['reference/nodejs/v0']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/nodejs/v0', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/nodejs/v0/api/api', - }, - { - title: 'api.get()', - href: '/reference/nodejs/v0/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/nodejs/v0/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/nodejs/v0/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/nodejs/v0/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/nodejs/v0/api/api-patch', - }, - { - title: 'api.route()', - href: '/reference/nodejs/v0/api/api-route', - }, - { - title: 'api.route.all()', - href: '/reference/nodejs/v0/api/api-route-all', - }, - { - title: 'api.route.get()', - href: '/reference/nodejs/v0/api/api-route-get', - }, - { - title: 'api.route.post()', - href: '/reference/nodejs/v0/api/api-route-post', - }, - { - title: 'api.route.put()', - href: '/reference/nodejs/v0/api/api-route-put', - }, - { - title: 'api.route.delete()', - href: '/reference/nodejs/v0/api/api-route-delete', - }, - { - title: 'api.route.patch()', - href: '/reference/nodejs/v0/api/api-route-patch', - }, - ], - }, - { - title: 'HTTP', - links: [ - { - title: 'http()', - href: '/reference/nodejs/v0/http/http', - }, - ], - }, - { - title: 'Collections', - links: [ - { - title: 'collection()', - href: '/reference/nodejs/v0/collection/collection', - }, - { - title: 'collection.collection()', - href: '/reference/nodejs/v0/collection/collection-collection', - }, - { - title: 'collection.query()', - href: '/reference/nodejs/v0/collection/collection-query', - }, - { - title: 'collection.query.where()', - href: '/reference/nodejs/v0/collection/collection-query-where', - }, - { - title: 'collection.query.limit()', - href: '/reference/nodejs/v0/collection/collection-query-limit', - }, - { - title: 'collection.query.pagingFrom()', - href: '/reference/nodejs/v0/collection/collection-query-pagingfrom', - }, - { - title: 'collection.query.fetch()', - href: '/reference/nodejs/v0/collection/collection-query-fetch', - }, - { - title: 'collection.query.stream()', - href: '/reference/nodejs/v0/collection/collection-query-stream', - }, - { - title: 'collection.doc()', - href: '/reference/nodejs/v0/collection/collection-doc', - }, - { - title: 'collection.doc.get()', - href: '/reference/nodejs/v0/collection/collection-doc-get', - }, - { - title: 'collection.doc.set()', - href: '/reference/nodejs/v0/collection/collection-doc-set', - }, - { - title: 'collection.doc.delete()', - href: '/reference/nodejs/v0/collection/collection-doc-delete', - }, - { - title: 'collection.doc.collection()', - href: '/reference/nodejs/v0/collection/collection-doc-collection', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/nodejs/v0/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/nodejs/v0/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/nodejs/v0/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/nodejs/v0/queues/queue', - }, - { - title: 'queue.send()', - href: '/reference/nodejs/v0/queues/queue-send', - }, - { - title: 'queue.receive()', - href: '/reference/nodejs/v0/queues/queue-receive', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/nodejs/v0/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/nodejs/v0/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/nodejs/v0/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/nodejs/v0/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/nodejs/v0/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/nodejs/v0/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/nodejs/v0/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/nodejs/v0/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/nodejs/v0/storage/bucket-files', - }, - { - title: 'file.exists()', - href: '/reference/nodejs/v0/storage/bucket-file-exists', - }, - { - title: 'file.read()', - href: '/reference/nodejs/v0/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/nodejs/v0/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/nodejs/v0/storage/bucket-file-delete', - }, - { - title: 'file.getDownloadUrl()', - href: '/reference/nodejs/v0/storage/bucket-file-downloadurl', - }, - { - title: 'file.getUploadUrl()', - href: '/reference/nodejs/v0/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/nodejs/v0/schedule/schedule', - }, - { - title: 'schedule.every()', - href: '/reference/nodejs/v0/schedule/schedule-every', - }, - { - title: 'schedule.cron()', - href: '/reference/nodejs/v0/schedule/schedule-cron', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'websocket()', - href: '/reference/nodejs/v0/websocket/websocket', - }, - { - title: 'websocket.on()', - href: '/reference/nodejs/v0/websocket/websocket-on', - }, - { - title: 'websocket.send()', - href: '/reference/nodejs/v0/websocket/websocket-send', - }, - { - title: 'websocket.close()', - href: '/reference/nodejs/v0/websocket/websocket-close', - }, - ], - }, - ], - ['reference/nodejs']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/nodejs', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/nodejs/api/api', - }, - { - title: 'api.get()', - href: '/reference/nodejs/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/nodejs/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/nodejs/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/nodejs/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/nodejs/api/api-patch', - }, - { - title: 'api.route()', - href: '/reference/nodejs/api/api-route', - }, - { - title: 'api.route.all()', - href: '/reference/nodejs/api/api-route-all', - }, - { - title: 'api.route.get()', - href: '/reference/nodejs/api/api-route-get', - }, - { - title: 'api.route.post()', - href: '/reference/nodejs/api/api-route-post', - }, - { - title: 'api.route.put()', - href: '/reference/nodejs/api/api-route-put', - }, - { - title: 'api.route.delete()', - href: '/reference/nodejs/api/api-route-delete', - }, - { - title: 'api.route.patch()', - href: '/reference/nodejs/api/api-route-patch', - }, - ], - }, - { - title: 'Batch Jobs', - links: [ - { - title: 'job()', - href: '/reference/nodejs/batch/job', - }, - { - title: 'job.handler()', - href: '/reference/nodejs/batch/job-handler', - }, - { - title: 'job.send()', - href: '/reference/nodejs/batch/job-submit', - }, - ], - }, - { - title: 'HTTP', - links: [ - { - title: 'http()', - href: '/reference/nodejs/http/http', - }, - ], - }, - { - title: 'Key Value Stores', - links: [ - { - title: 'kv()', - href: '/reference/nodejs/keyvalue/keyvalue', - }, - { - title: 'kv.get()', - href: '/reference/nodejs/keyvalue/keyvalue-get', - }, - { - title: 'kv.set()', - href: '/reference/nodejs/keyvalue/keyvalue-set', - }, - { - title: 'kv.delete()', - href: '/reference/nodejs/keyvalue/keyvalue-delete', - }, - { - title: 'kv.keys()', - href: '/reference/nodejs/keyvalue/keyvalue-keys', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/nodejs/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/nodejs/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/nodejs/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/nodejs/queues/queue', - }, - { - title: 'queue.enqueue()', - href: '/reference/nodejs/queues/queue-enqueue', - }, - { - title: 'queue.dequeue()', - href: '/reference/nodejs/queues/queue-dequeue', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/nodejs/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/nodejs/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/nodejs/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/nodejs/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/nodejs/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/nodejs/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/nodejs/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/nodejs/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/nodejs/storage/bucket-files', - }, - { - title: 'file.exists()', - href: '/reference/nodejs/storage/bucket-file-exists', - }, - { - title: 'file.read()', - href: '/reference/nodejs/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/nodejs/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/nodejs/storage/bucket-file-delete', - }, - { - title: 'file.getDownloadUrl()', - href: '/reference/nodejs/storage/bucket-file-downloadurl', - }, - { - title: 'file.getUploadUrl()', - href: '/reference/nodejs/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'SQL', - links: [ - { - title: 'sql()', - href: '/reference/nodejs/sql/sql', - }, - { - title: 'sql.connectionString()', - href: '/reference/nodejs/sql/sql-connection-string', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/nodejs/schedule/schedule', - }, - { - title: 'schedule.every()', - href: '/reference/nodejs/schedule/schedule-every', - }, - { - title: 'schedule.cron()', - href: '/reference/nodejs/schedule/schedule-cron', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'websocket()', - href: '/reference/nodejs/websocket/websocket', - }, - { - title: 'websocket.on()', - href: '/reference/nodejs/websocket/websocket-on', - }, - { - title: 'websocket.send()', - href: '/reference/nodejs/websocket/websocket-send', - }, - { - title: 'websocket.close()', - href: '/reference/nodejs/websocket/websocket-close', - }, - ], - }, - ], - ['reference/python/v0']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/python/v0', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/python/v0/api/api', - }, - { - title: 'api.get()', - href: '/reference/python/v0/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/python/v0/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/python/v0/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/python/v0/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/python/v0/api/api-patch', - }, - { - title: 'api.methods()', - href: '/reference/python/v0/api/api-methods', - }, - { - title: 'api.all()', - href: '/reference/python/v0/api/api-all', - }, - ], - }, - { - title: 'Collections', - links: [ - { - title: 'collection()', - href: '/reference/python/v0/collection/collection', - }, - { - title: 'collection.collection()', - href: '/reference/python/v0/collection/collection-collection', - }, - { - title: 'collection.query()', - href: '/reference/python/v0/collection/collection-query', - }, - { - title: 'collection.query.where()', - href: '/reference/python/v0/collection/collection-query-where', - }, - { - title: 'collection.query.limit()', - href: '/reference/python/v0/collection/collection-query-limit', - }, - { - title: 'collection.query.pagingFrom()', - href: '/reference/python/v0/collection/collection-query-pagingfrom', - }, - { - title: 'collection.query.fetch()', - href: '/reference/python/v0/collection/collection-query-fetch', - }, - { - title: 'collection.query.stream()', - href: '/reference/python/v0/collection/collection-query-stream', - }, - { - title: 'collection.doc()', - href: '/reference/python/v0/collection/collection-doc', - }, - { - title: 'collection.doc.get()', - href: '/reference/python/v0/collection/collection-doc-get', - }, - { - title: 'collection.doc.set()', - href: '/reference/python/v0/collection/collection-doc-set', - }, - { - title: 'collection.doc.delete()', - href: '/reference/python/v0/collection/collection-doc-delete', - }, - { - title: 'collection.doc.collection()', - href: '/reference/python/v0/collection/collection-doc-collection', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/python/v0/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/python/v0/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/python/v0/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/python/v0/queues/queue', - }, - { - title: 'queue.send()', - href: '/reference/python/v0/queues/queue-send', - }, - { - title: 'queue.receive()', - href: '/reference/python/v0/queues/queue-receive', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/python/v0/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/python/v0/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/python/v0/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/python/v0/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/python/v0/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/python/v0/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/python/v0/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/python/v0/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/python/v0/storage/bucket-files', - }, - { - title: 'file.read()', - href: '/reference/python/v0/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/python/v0/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/python/v0/storage/bucket-file-delete', - }, - { - title: 'file.download_url()', - href: '/reference/python/v0/storage/bucket-file-downloadurl', - }, - { - title: 'file.upload_url()', - href: '/reference/python/v0/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/python/v0/schedules/schedule', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'websocket()', - href: '/reference/python/v0/websocket/websocket', - }, - { - title: 'websocket.on()', - href: '/reference/python/v0/websocket/websocket-on', - }, - { - title: 'websocket.send()', - href: '/reference/python/v0/websocket/websocket-send', - }, - ], - }, - ], - ['reference/python']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/python', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/python/api/api', - }, - { - title: 'api.get()', - href: '/reference/python/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/python/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/python/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/python/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/python/api/api-patch', - }, - { - title: 'api.methods()', - href: '/reference/python/api/api-methods', - }, - { - title: 'api.all()', - href: '/reference/python/api/api-all', - }, - ], - }, - { - title: 'Batch Jobs', - links: [ - { - title: 'job()', - href: '/reference/python/batch/job', - }, - { - title: 'job.handler()', - href: '/reference/python/batch/job-handler', - }, - { - title: 'job.send()', - href: '/reference/python/batch/job-submit', - }, - ], - }, - { - title: 'Key Value Stores', - links: [ - { - title: 'kv()', - href: '/reference/python/keyvalue/keyvalue', - }, - { - title: 'kv.get()', - href: '/reference/python/keyvalue/keyvalue-get', - }, - { - title: 'kv.set()', - href: '/reference/python/keyvalue/keyvalue-set', - }, - { - title: 'kv.delete()', - href: '/reference/python/keyvalue/keyvalue-delete', - }, - { - title: 'kv.keys()', - href: '/reference/python/keyvalue/keyvalue-keys', - }, - ], - }, - { - title: 'Sql', - links: [ - { - title: 'sql()', - href: '/reference/python/sql/sql', - }, - { - title: 'sql.connection_string()', - href: '/reference/python/sql/sql-connection-string', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/python/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/python/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/python/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/python/queues/queue', - }, - { - title: 'queue.enqueue()', - href: '/reference/python/queues/queue-enqueue', - }, - { - title: 'queue.dequeue()', - href: '/reference/python/queues/queue-dequeue', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/python/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/python/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/python/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/python/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/python/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/python/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/python/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/python/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/python/storage/bucket-files', - }, - { - title: 'file.read()', - href: '/reference/python/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/python/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/python/storage/bucket-file-delete', - }, - { - title: 'file.download_url()', - href: '/reference/python/storage/bucket-file-downloadurl', - }, - { - title: 'file.upload_url()', - href: '/reference/python/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/python/schedules/schedule', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'websocket()', - href: '/reference/python/websocket/websocket', - }, - { - title: 'websocket.on()', - href: '/reference/python/websocket/websocket-on', - }, - { - title: 'websocket.send()', - href: '/reference/python/websocket/websocket-send', - }, - ], - }, - ], - ['reference/dart']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/dart', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/dart/api/api', - }, - { - title: 'api.get()', - href: '/reference/dart/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/dart/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/dart/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/dart/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/dart/api/api-patch', - }, - { - title: 'api.route()', - href: '/reference/dart/api/api-route', - }, - { - title: 'api.route.all()', - href: '/reference/dart/api/api-route-all', - }, - { - title: 'api.route.get()', - href: '/reference/dart/api/api-route-get', - }, - { - title: 'api.route.post()', - href: '/reference/dart/api/api-route-post', - }, - { - title: 'api.route.put()', - href: '/reference/dart/api/api-route-put', - }, - { - title: 'api.route.delete()', - href: '/reference/dart/api/api-route-delete', - }, - { - title: 'api.route.patch()', - href: '/reference/dart/api/api-route-patch', - }, - ], - }, - { - title: 'Batch Jobs', - links: [ - { - title: 'job()', - href: '/reference/dart/batch/job', - }, - { - title: 'job.handler()', - href: '/reference/dart/batch/job-handler', - }, - { - title: 'job.send()', - href: '/reference/dart/batch/job-submit', - }, - ], - }, - { - title: 'Key Value Stores', - links: [ - { - title: 'kv()', - href: '/reference/dart/keyvalue/keyvalue', - }, - { - title: 'kv.get()', - href: '/reference/dart/keyvalue/keyvalue-get', - }, - { - title: 'kv.set()', - href: '/reference/dart/keyvalue/keyvalue-set', - }, - { - title: 'kv.delete()', - href: '/reference/dart/keyvalue/keyvalue-delete', - }, - { - title: 'kv.keys()', - href: '/reference/dart/keyvalue/keyvalue-keys', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/dart/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/dart/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/dart/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/dart/queues/queue', - }, - { - title: 'queue.enqueue()', - href: '/reference/dart/queues/queue-enqueue', - }, - { - title: 'queue.dequeue()', - href: '/reference/dart/queues/queue-dequeue', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/dart/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/dart/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/dart/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/dart/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/dart/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/dart/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/dart/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/dart/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/dart/storage/bucket-files', - }, - { - title: 'file.exists()', - href: '/reference/dart/storage/bucket-file-exists', - }, - { - title: 'file.read()', - href: '/reference/dart/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/dart/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/dart/storage/bucket-file-delete', - }, - { - title: 'file.getDownloadUrl()', - href: '/reference/dart/storage/bucket-file-downloadurl', - }, - { - title: 'file.getUploadUrl()', - href: '/reference/dart/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'SQL', - links: [ - { - title: 'sql()', - href: '/reference/dart/sql/sql', - }, - { - title: 'sql.connectionString()', - href: '/reference/dart/sql/sql-connection-string', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/dart/schedule/schedule', - }, - { - title: 'schedule.every()', - href: '/reference/dart/schedule/schedule-every', - }, - { - title: 'schedule.cron()', - href: '/reference/dart/schedule/schedule-cron', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'websocket()', - href: '/reference/dart/websocket/websocket', - }, - { - title: 'websocket.on()', - href: '/reference/dart/websocket/websocket-on', - }, - { - title: 'websocket.send()', - href: '/reference/dart/websocket/websocket-send', - }, - { - title: 'websocket.close()', - href: '/reference/dart/websocket/websocket-close', - }, - ], - }, - ], - ['reference/csharp']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/csharp/v0', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/csharp/v0/api/api', - }, - { - title: 'api.get()', - href: '/reference/csharp/v0/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/csharp/v0/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/csharp/v0/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/csharp/v0/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/csharp/v0/api/api-patch', - }, - { - title: 'api.route()', - href: '/reference/csharp/v0/api/api-route', - }, - { - title: 'api.route.all()', - href: '/reference/csharp/v0/api/api-route-all', - }, - { - title: 'api.route.get()', - href: '/reference/csharp/v0/api/api-route-get', - }, - { - title: 'api.route.post()', - href: '/reference/csharp/v0/api/api-route-post', - }, - { - title: 'api.route.put()', - href: '/reference/csharp/v0/api/api-route-put', - }, - { - title: 'api.route.delete()', - href: '/reference/csharp/v0/api/api-route-delete', - }, - { - title: 'api.route.patch()', - href: '/reference/csharp/v0/api/api-route-patch', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/csharp/v0/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/csharp/v0/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/csharp/v0/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/csharp/v0/queues/queue', - }, - { - title: 'queue.send()', - href: '/reference/csharp/v0/queues/queue-send', - }, - { - title: 'queue.receive()', - href: '/reference/csharp/v0/queues/queue-receive', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/csharp/v0/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/csharp/v0/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/csharp/v0/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/csharp/v0/storage/bucket-files', - }, - { - title: 'file.read()', - href: '/reference/csharp/v0/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/csharp/v0/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/csharp/v0/storage/bucket-file-delete', - }, - { - title: 'file.getDownloadUrl()', - href: '/reference/csharp/v0/storage/bucket-file-downloadurl', - }, - { - title: 'file.getUploadUrl()', - href: '/reference/csharp/v0/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/csharp/v0/schedule/schedule', - }, - { - title: 'schedule.every()', - href: '/reference/csharp/v0/schedule/schedule-every', - }, - { - title: 'schedule.cron()', - href: '/reference/csharp/v0/schedule/schedule-cron', - }, - ], - }, - ], - ['reference/go/v0']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/go/v0', - }, - ], - }, - { - title: 'Resources', - links: [ - { - title: 'NewApi()', - href: '/reference/go/v0/api/api', - }, - { - title: 'NewCollection()', - href: '/reference/go/v0/collection/collection', - }, - { - title: 'NewQueue()', - href: '/reference/go/v0/queues/queue', - }, - { - title: 'NewSecret()', - href: '/reference/go/v0/secrets/secret', - }, - { - title: 'NewBucket()', - href: '/reference/go/v0/storage/bucket', - }, - { - title: 'NewTopic()', - href: '/reference/go/v0/topic/topic', - }, - { - title: 'NewSchedule()', - href: '/reference/go/v0/schedule/schedule', - }, - { - title: 'NewWebsocket()', - href: '/reference/go/v0/websocket/websocket', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'Api.Get()', - href: '/reference/go/v0/api/api-get', - }, - { - title: 'Api.Post()', - href: '/reference/go/v0/api/api-post', - }, - { - title: 'Api.Put()', - href: '/reference/go/v0/api/api-put', - }, - { - title: 'Api.Delete()', - href: '/reference/go/v0/api/api-delete', - }, - { - title: 'Api.Patch()', - href: '/reference/go/v0/api/api-patch', - }, - { - title: 'Api.NewRoute()', - href: '/reference/go/v0/api/api-route', - }, - { - title: 'Api.Route.All()', - href: '/reference/go/v0/api/api-route-all', - }, - { - title: 'Api.Route.Get()', - href: '/reference/go/v0/api/api-route-get', - }, - { - title: 'Api.Route.Post()', - href: '/reference/go/v0/api/api-route-post', - }, - { - title: 'Api.Route.Put()', - href: '/reference/go/v0/api/api-route-put', - }, - { - title: 'Api.Route.Delete()', - href: '/reference/go/v0/api/api-route-delete', - }, - { - title: 'Api.Route.Patch()', - href: '/reference/go/v0/api/api-route-patch', - }, - { - title: 'Api.Details()', - href: '/reference/go/v0/api/api-details', - }, - ], - }, - { - title: 'Collections', - links: [ - { - title: 'Collection.Collection()', - href: '/reference/go/v0/collection/collection-collection', - }, - { - title: 'Collection.Query()', - href: '/reference/go/v0/collection/collection-query', - }, - { - title: 'Collection.Query.Where()', - href: '/reference/go/v0/collection/collection-query-where', - }, - { - title: 'Collection.Query.Limit()', - href: '/reference/go/v0/collection/collection-query-limit', - }, - { - title: 'Collection.Query.FromPagingToken()', - href: '/reference/go/v0/collection/collection-query-pagingfrom', - }, - { - title: 'Collection.Query.Fetch()', - href: '/reference/go/v0/collection/collection-query-fetch', - }, - { - title: 'Collection.Query.Stream()', - href: '/reference/go/v0/collection/collection-query-stream', - }, - { - title: 'Collection.Doc()', - href: '/reference/go/v0/collection/collection-doc', - }, - { - title: 'Collection.Doc.Get()', - href: '/reference/go/v0/collection/collection-doc-get', - }, - { - title: 'Collection.Doc.Set()', - href: '/reference/go/v0/collection/collection-doc-set', - }, - { - title: 'Collection.Doc.Delete()', - href: '/reference/go/v0/collection/collection-doc-delete', - }, - { - title: 'Collection.Doc.Collection()', - href: '/reference/go/v0/collection/collection-doc-collection', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'Topic.Publish()', - href: '/reference/go/v0/topic/topic-publish', - }, - { - title: 'Topic.Subscribe()', - href: '/reference/go/v0/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'Queue.Send()', - href: '/reference/go/v0/queues/queue-send', - }, - { - title: 'Queue.Receive()', - href: '/reference/go/v0/queues/queue-receive', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'Secret.Put()', - href: '/reference/go/v0/secrets/secret-put', - }, - { - title: 'Secret.Version()', - href: '/reference/go/v0/secrets/secret-version', - }, - { - title: 'Secret.Latest()', - href: '/reference/go/v0/secrets/secret-latest', - }, - { - title: 'Secret.Version.Access()', - href: '/reference/go/v0/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'Bucket.On()', - href: '/reference/go/v0/storage/bucket-on', - }, - { - title: 'Bucket.File()', - href: '/reference/go/v0/storage/bucket-file', - }, - { - title: 'Bucket.Files()', - href: '/reference/go/v0/storage/bucket-files', - }, - { - title: 'File.Read()', - href: '/reference/go/v0/storage/bucket-file-read', - }, - { - title: 'File.Write()', - href: '/reference/go/v0/storage/bucket-file-write', - }, - { - title: 'File.Delete()', - href: '/reference/go/v0/storage/bucket-file-delete', - }, - { - title: 'File.DownloadUrl()', - href: '/reference/go/v0/storage/bucket-file-downloadurl', - }, - { - title: 'File.UploadUrl()', - href: '/reference/go/v0/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'Schedule.Every()', - href: '/reference/go/v0/schedule/schedule-every', - }, - { - title: 'Schedule.Cron()', - href: '/reference/go/v0/schedule/schedule-cron', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'Websocket.On()', - href: '/reference/go/v0/websocket/websocket-on', - }, - { - title: 'Websocket.Send()', - href: '/reference/go/v0/websocket/websocket-send', - }, - { - title: 'Websocket.Close()', - href: '/reference/go/v0/websocket/websocket-close', - }, - { - title: 'Websocket.Details()', - href: '/reference/go/v0/websocket/websocket-details', - }, - ], - }, - ], - ['reference/go']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/go', - }, - ], - }, - { - title: 'Resources', - links: [ - { - title: 'NewApi()', - href: '/reference/go/api/api', - }, - { - title: 'NewJob()', - href: '/reference/go/batch/job', - }, - { - title: 'NewKv()', - href: '/reference/go/keyvalue/keyvalue', - }, - { - title: 'NewQueue()', - href: '/reference/go/queues/queue', - }, - { - title: 'NewSecret()', - href: '/reference/go/secrets/secret', - }, - { - title: 'NewBucket()', - href: '/reference/go/storage/bucket', - }, - { - title: 'NewTopic()', - href: '/reference/go/topic/topic', - }, - { - title: 'NewSchedule()', - href: '/reference/go/schedule/schedule', - }, - { - title: 'NewWebsocket()', - href: '/reference/go/websocket/websocket', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'Api.Get()', - href: '/reference/go/api/api-get', - }, - { - title: 'Api.Post()', - href: '/reference/go/api/api-post', - }, - { - title: 'Api.Put()', - href: '/reference/go/api/api-put', - }, - { - title: 'Api.Delete()', - href: '/reference/go/api/api-delete', - }, - { - title: 'Api.Patch()', - href: '/reference/go/api/api-patch', - }, - { - title: 'Api.NewRoute()', - href: '/reference/go/api/api-route', - }, - { - title: 'Api.Route.All()', - href: '/reference/go/api/api-route-all', - }, - { - title: 'Api.Route.Get()', - href: '/reference/go/api/api-route-get', - }, - { - title: 'Api.Route.Post()', - href: '/reference/go/api/api-route-post', - }, - { - title: 'Api.Route.Put()', - href: '/reference/go/api/api-route-put', - }, - { - title: 'Api.Route.Delete()', - href: '/reference/go/api/api-route-delete', - }, - { - title: 'Api.Route.Patch()', - href: '/reference/go/api/api-route-patch', - }, - ], - }, - { - title: 'Batch Jobs', - links: [ - { - title: 'Job.Handler()', - href: '/reference/go/batch/job-handler', - }, - { - title: 'Job.Send()', - href: '/reference/go/batch/job-submit', - }, - ], - }, - { - title: 'Key Value Stores', - links: [ - { - title: 'Kv.Get()', - href: '/reference/go/keyvalue/keyvalue-get', - }, - { - title: 'Kv.Set()', - href: '/reference/go/keyvalue/keyvalue-set', - }, - { - title: 'Kv.Delete()', - href: '/reference/go/keyvalue/keyvalue-delete', - }, - { - title: 'Kv.Keys()', - href: '/reference/go/keyvalue/keyvalue-keys', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'Topic.Publish()', - href: '/reference/go/topic/topic-publish', - }, - { - title: 'Topic.Subscribe()', - href: '/reference/go/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'Queue.Enqueue()', - href: '/reference/go/queues/queue-enqueue', - }, - { - title: 'Queue.Dequeue()', - href: '/reference/go/queues/queue-dequeue', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'Secret.Put()', - href: '/reference/go/secrets/secret-put', - }, - { - title: 'Secret.AccessVersion()', - href: '/reference/go/secrets/secret-access-version', - }, - { - title: 'Secret.Access()', - href: '/reference/go/secrets/secret-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'Bucket.On()', - href: '/reference/go/storage/bucket-on', - }, - { - title: 'Bucket.ListFiles()', - href: '/reference/go/storage/bucket-listfiles', - }, - { - title: 'Bucket.Read()', - href: '/reference/go/storage/bucket-read', - }, - { - title: 'Bucket.Write()', - href: '/reference/go/storage/bucket-write', - }, - { - title: 'Bucket.Delete()', - href: '/reference/go/storage/bucket-delete', - }, - { - title: 'Bucket.DownloadUrl()', - href: '/reference/go/storage/bucket-downloadurl', - }, - { - title: 'Bucket.UploadUrl()', - href: '/reference/go/storage/bucket-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'Schedule.Every()', - href: '/reference/go/schedule/schedule-every', - }, - { - title: 'Schedule.Cron()', - href: '/reference/go/schedule/schedule-cron', - }, - ], - }, - { - title: 'Websockets', - links: [ - { - title: 'Websocket.On()', - href: '/reference/go/websocket/websocket-on', - }, - { - title: 'Websocket.Send()', - href: '/reference/go/websocket/websocket-send', - }, - { - title: 'Websocket.Close()', - href: '/reference/go/websocket/websocket-close', - }, - ], - }, - ], - ['reference/jvm']: [ - { - links: [ - { - title: 'Getting Started', - href: '/reference/jvm/v0', - }, - ], - }, - { - title: 'APIs', - links: [ - { - title: 'api()', - href: '/reference/jvm/v0/api/api', - }, - { - title: 'api.get()', - href: '/reference/jvm/v0/api/api-get', - }, - { - title: 'api.post()', - href: '/reference/jvm/v0/api/api-post', - }, - { - title: 'api.put()', - href: '/reference/jvm/v0/api/api-put', - }, - { - title: 'api.delete()', - href: '/reference/jvm/v0/api/api-delete', - }, - { - title: 'api.patch()', - href: '/reference/jvm/v0/api/api-patch', - }, - { - title: 'api.route()', - href: '/reference/jvm/v0/api/api-route', - }, - { - title: 'api.route.all()', - href: '/reference/jvm/v0/api/api-route-all', - }, - { - title: 'api.route.get()', - href: '/reference/jvm/v0/api/api-route-get', - }, - { - title: 'api.route.post()', - href: '/reference/jvm/v0/api/api-route-post', - }, - { - title: 'api.route.put()', - href: '/reference/jvm/v0/api/api-route-put', - }, - { - title: 'api.route.delete()', - href: '/reference/jvm/v0/api/api-route-delete', - }, - { - title: 'api.route.patch()', - href: '/reference/jvm/v0/api/api-route-patch', - }, - ], - }, - { - title: 'Collections', - links: [ - { - title: 'collection()', - href: '/reference/jvm/v0/collection/collection', - }, - { - title: 'collection.collection()', - href: '/reference/jvm/v0/collection/collection-collection', - }, - { - title: 'collection.query()', - href: '/reference/jvm/v0/collection/collection-query', - }, - { - title: 'collection.query.where()', - href: '/reference/jvm/v0/collection/collection-query-where', - }, - { - title: 'collection.query.limit()', - href: '/reference/jvm/v0/collection/collection-query-limit', - }, - { - title: 'collection.query.pagingFrom()', - href: '/reference/jvm/v0/collection/collection-query-pagingfrom', - }, - { - title: 'collection.query.fetch()', - href: '/reference/jvm/v0/collection/collection-query-fetch', - }, - { - title: 'collection.query.stream()', - href: '/reference/jvm/v0/collection/collection-query-stream', - }, - { - title: 'collection.doc()', - href: '/reference/jvm/v0/collection/collection-doc', - }, - { - title: 'collection.doc.get()', - href: '/reference/jvm/v0/collection/collection-doc-get', - }, - { - title: 'collection.doc.set()', - href: '/reference/jvm/v0/collection/collection-doc-set', - }, - { - title: 'collection.doc.delete()', - href: '/reference/jvm/v0/collection/collection-doc-delete', - }, - { - title: 'collection.doc.collection()', - href: '/reference/jvm/v0/collection/collection-doc-collection', - }, - ], - }, - { - title: 'Topics', - links: [ - { - title: 'topic()', - href: '/reference/jvm/v0/topic/topic', - }, - { - title: 'topic.publish()', - href: '/reference/jvm/v0/topic/topic-publish', - }, - { - title: 'topic.subscribe()', - href: '/reference/jvm/v0/topic/topic-subscribe', - }, - ], - }, - { - title: 'Queues', - links: [ - { - title: 'queue()', - href: '/reference/jvm/v0/queues/queue', - }, - { - title: 'queue.send()', - href: '/reference/jvm/v0/queues/queue-send', - }, - { - title: 'queue.receive()', - href: '/reference/jvm/v0/queues/queue-receive', - }, - ], - }, - { - title: 'Secrets', - links: [ - { - title: 'secret()', - href: '/reference/jvm/v0/secrets/secret', - }, - { - title: 'secret.put()', - href: '/reference/jvm/v0/secrets/secret-put', - }, - { - title: 'secret.version()', - href: '/reference/jvm/v0/secrets/secret-version', - }, - { - title: 'secret.latest()', - href: '/reference/jvm/v0/secrets/secret-latest', - }, - { - title: 'secret.version.access()', - href: '/reference/jvm/v0/secrets/secret-version-access', - }, - ], - }, - { - title: 'Storage', - links: [ - { - title: 'bucket()', - href: '/reference/jvm/v0/storage/bucket', - }, - { - title: 'bucket.on()', - href: '/reference/jvm/v0/storage/bucket-on', - }, - { - title: 'bucket.file()', - href: '/reference/jvm/v0/storage/bucket-file', - }, - { - title: 'bucket.files()', - href: '/reference/jvm/v0/storage/bucket-files', - }, - { - title: 'file.read()', - href: '/reference/jvm/v0/storage/bucket-file-read', - }, - { - title: 'file.write()', - href: '/reference/jvm/v0/storage/bucket-file-write', - }, - { - title: 'file.delete()', - href: '/reference/jvm/v0/storage/bucket-file-delete', - }, - { - title: 'file.getDownloadUrl()', - href: '/reference/jvm/v0/storage/bucket-file-downloadurl', - }, - { - title: 'file.getUploadUrl()', - href: '/reference/jvm/v0/storage/bucket-file-uploadurl', - }, - ], - }, - { - title: 'Schedules', - links: [ - { - title: 'schedule()', - href: '/reference/jvm/v0/schedule/schedule', - }, - { - title: 'schedule.every()', - href: '/reference/jvm/v0/schedule/schedule-every', - }, - { - title: 'schedule.cron()', - href: '/reference/jvm/v0/schedule/schedule-cron', - }, - ], - }, - ], - ['reference/cli']: [ - { - title: 'Nitric CLI', - links: [ - { - title: 'Overview', - href: '/reference/cli', - }, - { - title: 'Installation', - href: '/reference/cli/installation', - }, - { - title: 'Local Development', - href: '/reference/cli/local-development', - }, - { - title: 'Stacks', - href: '/reference/cli/stacks', - }, - ], - }, - ], - ['reference/providers/aws']: [ - { - links: [ - { - title: 'AWS Provider Overview', - href: '/reference/providers/aws', - }, - { - title: 'Configuration', - href: '/reference/providers/aws/configuration', - }, - { - title: 'APIs', - href: '/reference/providers/aws/apis', - }, - { - title: 'Key Value Store', - href: '/reference/providers/aws/keyvalue', - }, - { - title: 'Queues', - href: '/reference/providers/aws/queues', - }, - { - title: 'Schedules', - href: '/reference/providers/aws/schedules', - }, - { - title: 'Secrets', - href: '/reference/providers/aws/secrets', - }, - { - title: 'Storage', - href: '/reference/providers/aws/storage', - }, - { - title: 'Topics', - href: '/reference/providers/aws/topics', - }, - { - title: 'Import Existing Resources', - href: '/reference/providers/aws/imports', - }, - ], - }, - { - title: 'More Standard Providers', - links: [ - { - title: 'GCP', - href: '/reference/providers/gcp', - icon: SiGooglecloud, - }, - { - title: 'Azure', - href: '/reference/providers/azure', - icon: SiMicrosoftazure, - }, - ], - }, - { - title: 'Terraform Providers', - links: [ - { - title: 'Overview', - href: '/reference/providers/terraform', - icon: SiTerraform, - }, - { - title: 'AWS', - href: '/reference/providers/terraform/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/terraform/gcp', - icon: SiGooglecloud, - }, - ], - }, - { - title: 'Custom Providers', - links: [ - { - title: 'Building a Custom Provider', - href: '/reference/providers/custom/building-custom-provider', - }, - { - title: 'Extending a Base Provider', - href: '/reference/providers/custom/extend-standard-provider', - }, - { - title: 'Docker Providers', - href: '/reference/providers/install/docker', - }, - ], - }, - ], - ['reference/providers/gcp']: [ - { - links: [ - { - title: 'GCP Provider Overview', - href: '/reference/providers/gcp', - }, - { - title: 'Configuration', - href: '/reference/providers/gcp/configuration', - }, - { - title: 'APIs', - href: '/reference/providers/gcp/apis', - }, - { - title: 'Key Value Stores', - href: '/reference/providers/gcp/keyvalue', - }, - { - title: 'Queues', - href: '/reference/providers/gcp/queues', - }, - { - title: 'Schedules', - href: '/reference/providers/gcp/schedules', - }, - { - title: 'Secrets', - href: '/reference/providers/gcp/secrets', - }, - { - title: 'Storage', - href: '/reference/providers/gcp/storage', - }, - { - title: 'Topics', - href: '/reference/providers/gcp/topics', - }, - ], - }, - { - title: 'More Standard Providers', - links: [ - { - title: 'AWS', - href: '/reference/providers/aws', - icon: FaAws, - }, - { - title: 'Azure', - href: '/reference/providers/azure', - icon: SiMicrosoftazure, - }, - ], - }, - { - title: 'Terraform Providers', - links: [ - { - title: 'Overview', - href: '/reference/providers/terraform', - icon: SiTerraform, - }, - { - title: 'AWS', - href: '/reference/providers/terraform/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/terraform/gcp', - icon: SiGooglecloud, - }, - ], - }, - { - title: 'Custom Providers', - links: [ - { - title: 'Building a Custom Provider', - href: '/reference/providers/custom/building-custom-provider', - }, - { - title: 'Extending a Base Provider', - href: '/reference/providers/custom/extend-standard-provider', - }, - { - title: 'Docker Providers', - href: '/reference/providers/install/docker', - }, - ], - }, - ], - ['reference/providers/azure']: [ - { - links: [ - { - title: 'Azure Provider Overview', - href: '/reference/providers/azure', - }, - { - title: 'Configuration', - href: '/reference/providers/azure/configuration', - }, - { - title: 'APIs', - href: '/reference/providers/azure/apis', - }, - { - title: 'Key Value Stores', - href: '/reference/providers/azure/keyvalue', - }, - { - title: 'Queues', - href: '/reference/providers/azure/queues', - }, - { - title: 'Schedules', - href: '/reference/providers/azure/schedules', - }, - { - title: 'Secrets', - href: '/reference/providers/azure/secrets', - }, - { - title: 'Storage', - href: '/reference/providers/azure/storage', - }, - { - title: 'Topics', - href: '/reference/providers/azure/topics', - }, - ], - }, - { - title: 'More Standard Providers', - links: [ - { - title: 'AWS', - href: '/reference/providers/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/gcp', - icon: SiGooglecloud, - }, - ], - }, - { - title: 'Terraform Providers', - links: [ - { - title: 'Overview', - href: '/reference/providers/terraform', - icon: SiTerraform, - }, - { - title: 'AWS', - href: '/reference/providers/terraform/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/terraform/gcp', - icon: SiGooglecloud, - }, - ], - }, - { - title: 'Custom Providers', - links: [ - { - title: 'Building a Custom Provider', - href: '/reference/providers/custom/building-custom-provider', - }, - { - title: 'Extending a Base Provider', - href: '/reference/providers/custom/extend-standard-provider', - }, - { - title: 'Docker Providers', - href: '/reference/providers/install/docker', - }, - ], - }, - ], - ['reference/providers']: [ - { - title: 'Standard Providers (Pulumi)', - links: [ - { - title: 'Overview', - href: '/reference/providers/pulumi', - icon: SiPulumi, - }, - { - title: 'AWS', - href: '/reference/providers/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/gcp', - icon: SiGooglecloud, - }, - { - title: 'Azure', - href: '/reference/providers/azure', - icon: SiMicrosoftazure, - }, - { - title: 'Custom', - href: '/reference/providers/pulumi/custom', - icon: WrenchScrewdriverIcon, - }, - ], - }, - { - title: 'Terraform Providers', - links: [ - { - title: 'Overview', - href: '/reference/providers/terraform', - icon: SiTerraform, - }, - { - title: 'AWS', - href: '/reference/providers/terraform/aws', - icon: FaAws, - }, - { - title: 'GCP', - href: '/reference/providers/terraform/gcp', - icon: SiGooglecloud, - }, - ], - }, - { - title: 'Custom Providers', - links: [ - { - title: 'Building a Custom Provider', - href: '/reference/providers/custom/building-custom-provider', - }, - { - title: 'Extending a Base Provider', - href: '/reference/providers/custom/extend-standard-provider', - }, - { - title: 'Docker Providers', - href: '/reference/providers/install/docker', - }, - ], - }, - ], - ['reference/pulumi']: [ - { - links: [ - { - title: 'Overview', - href: '/reference/providers/pulumi', - }, - { - title: 'Using Pulumi Cloud as a Backend', - href: '/reference/pulumi/pulumi-cloud', - }, - { - title: 'Building Nitric providers using Pulumi', - href: '/reference/pulumi/custom-providers', - }, - ], - }, - ], -} - -const SHOW_HOME_NAV_PAGES = [ - '/', - '/support', - '/support/upgrade', - '/contributions', - '/faq', - '/reference/env', - '/reference/custom-containers', -] - -export const useCurrentNav = () => { - const router = useRouter() - - // put any paths that should show the main docs menu - const displayDocsMenu = SHOW_HOME_NAV_PAGES.includes(router.pathname) - - const mainNav = fullNav['docs'] - - if (displayDocsMenu) { - return { - navigation: mainNav, - displayDocsMenu, - } - } - - const current = Object.keys(fullNav).find((navKey) => - router.pathname.startsWith(`/${navKey}`), - ) - - const navigation = current && fullNav[current] ? fullNav[current] : mainNav - - const cleanedCurrent = `/${current}`.replace(/\/[v]\d+$/, '') - - // find main menu item - const parent = mainNav - .flatMap((group) => group.links) - .find((link) => - // clean out any trailing versions /v0 etc - link.href.startsWith(cleanedCurrent), - ) - - let secondLevelParent: DocNavGroup['links'][0] | undefined - - // check if there is a 2nd level nav parent - if (!parent) { - const nav = fullNav[cleanedCurrent.split('/')[1]] - - if (nav) { - for (const group of nav) { - secondLevelParent = group.links.find( - (link) => link.href === cleanedCurrent, - ) - - if (secondLevelParent) { - break - } - } - } - } - - return { - navigation, - isHome: displayDocsMenu, - parent, - secondLevelParent, - pathname: router.pathname, - } -} From 82cc0b0437c628262e157cc1d88755c96079871b Mon Sep 17 00:00:00 2001 From: David Moore Date: Mon, 16 Dec 2024 15:12:34 +1100 Subject: [PATCH 5/9] cloud mapping pages and nav --- docs/apis.mdx | 6 +- docs/batch.mdx | 8 +- docs/http.mdx | 4 - docs/keyvalue.mdx | 6 +- docs/messaging.mdx | 14 +- docs/providers/index.mdx | 27 ++-- .../{pulumi => mappings}/aws/apis.mdx | 0 docs/providers/mappings/aws/batch.mdx | 29 ++++ .../{pulumi => mappings}/aws/keyvalue.mdx | 0 .../{pulumi => mappings}/aws/queues.mdx | 0 .../{pulumi => mappings}/aws/schedules.mdx | 0 .../{pulumi => mappings}/aws/secrets.mdx | 0 docs/providers/mappings/aws/sql.mdx | 35 +++++ .../{pulumi => mappings}/aws/storage.mdx | 0 .../{pulumi => mappings}/aws/topics.mdx | 0 docs/providers/mappings/aws/websockets.mdx | 28 ++++ .../{pulumi => mappings}/azure/apis.mdx | 0 .../{pulumi => mappings}/azure/keyvalue.mdx | 0 .../{pulumi => mappings}/azure/queues.mdx | 0 .../{pulumi => mappings}/azure/schedules.mdx | 0 .../{pulumi => mappings}/azure/secrets.mdx | 0 docs/providers/mappings/azure/sql.mdx | 31 +++++ .../{pulumi => mappings}/azure/storage.mdx | 0 .../{pulumi => mappings}/azure/topics.mdx | 0 .../{pulumi => mappings}/gcp/apis.mdx | 0 docs/providers/mappings/gcp/batch.mdx | 27 ++++ .../{pulumi => mappings}/gcp/keyvalue.mdx | 0 .../{pulumi => mappings}/gcp/queues.mdx | 0 .../{pulumi => mappings}/gcp/schedules.mdx | 0 .../{pulumi => mappings}/gcp/secrets.mdx | 0 docs/providers/mappings/gcp/sql.mdx | 32 +++++ .../{pulumi => mappings}/gcp/storage.mdx | 0 .../{pulumi => mappings}/gcp/topics.mdx | 0 docs/providers/pulumi/aws/index.mdx | 3 +- .../pulumi/{azure/index.mdx => azure.mdx} | 3 +- .../pulumi/{gcp/index.mdx => gcp.mdx} | 0 docs/schedules.mdx | 6 +- docs/secrets.mdx | 6 +- docs/sql.mdx | 8 +- docs/storage.mdx | 6 +- docs/websockets.mdx | 8 +- src/config/index.ts | 131 +++++++++++++++++- 42 files changed, 390 insertions(+), 28 deletions(-) rename docs/providers/{pulumi => mappings}/aws/apis.mdx (100%) create mode 100644 docs/providers/mappings/aws/batch.mdx rename docs/providers/{pulumi => mappings}/aws/keyvalue.mdx (100%) rename docs/providers/{pulumi => mappings}/aws/queues.mdx (100%) rename docs/providers/{pulumi => mappings}/aws/schedules.mdx (100%) rename docs/providers/{pulumi => mappings}/aws/secrets.mdx (100%) create mode 100644 docs/providers/mappings/aws/sql.mdx rename docs/providers/{pulumi => mappings}/aws/storage.mdx (100%) rename docs/providers/{pulumi => mappings}/aws/topics.mdx (100%) create mode 100644 docs/providers/mappings/aws/websockets.mdx rename docs/providers/{pulumi => mappings}/azure/apis.mdx (100%) rename docs/providers/{pulumi => mappings}/azure/keyvalue.mdx (100%) rename docs/providers/{pulumi => mappings}/azure/queues.mdx (100%) rename docs/providers/{pulumi => mappings}/azure/schedules.mdx (100%) rename docs/providers/{pulumi => mappings}/azure/secrets.mdx (100%) create mode 100644 docs/providers/mappings/azure/sql.mdx rename docs/providers/{pulumi => mappings}/azure/storage.mdx (100%) rename docs/providers/{pulumi => mappings}/azure/topics.mdx (100%) rename docs/providers/{pulumi => mappings}/gcp/apis.mdx (100%) create mode 100644 docs/providers/mappings/gcp/batch.mdx rename docs/providers/{pulumi => mappings}/gcp/keyvalue.mdx (100%) rename docs/providers/{pulumi => mappings}/gcp/queues.mdx (100%) rename docs/providers/{pulumi => mappings}/gcp/schedules.mdx (100%) rename docs/providers/{pulumi => mappings}/gcp/secrets.mdx (100%) create mode 100644 docs/providers/mappings/gcp/sql.mdx rename docs/providers/{pulumi => mappings}/gcp/storage.mdx (100%) rename docs/providers/{pulumi => mappings}/gcp/topics.mdx (100%) rename docs/providers/pulumi/{azure/index.mdx => azure.mdx} (98%) rename docs/providers/pulumi/{gcp/index.mdx => gcp.mdx} (100%) diff --git a/docs/apis.mdx b/docs/apis.mdx index 0276ce035..25265206d 100644 --- a/docs/apis.mdx +++ b/docs/apis.mdx @@ -1311,4 +1311,8 @@ accountsApi.get("/orgs/:id", (ctx) async { ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/apis) +- [Azure](/providers/mappings/azure/apis) +- [Google Cloud](/providers/mappings/gcp/apis) diff --git a/docs/batch.mdx b/docs/batch.mdx index 078d04b1d..378f09e60 100644 --- a/docs/batch.mdx +++ b/docs/batch.mdx @@ -242,4 +242,10 @@ void main() { ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/batch) +- Azure - Not implemented +- [Google Cloud](/providers/mappings/gcp/batch) + +If you need support for additional clouds, let us know by [opening an issue](https://github.com/nitrictech/nitric/issues) or joining the conversation on [Discord](https://nitric.io/chat). diff --git a/docs/http.mdx b/docs/http.mdx index eaca522b6..ae568e257 100644 --- a/docs/http.mdx +++ b/docs/http.mdx @@ -53,7 +53,3 @@ http(bootstrap) - -## Cloud Service Mapping - -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). diff --git a/docs/keyvalue.mdx b/docs/keyvalue.mdx index ffb57c69e..8a0818f11 100644 --- a/docs/keyvalue.mdx +++ b/docs/keyvalue.mdx @@ -440,4 +440,8 @@ keys.forEach((String key) { ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/keyvalue) +- [Azure](/providers/mappings/azure/keyvalue) +- [Google Cloud](/providers/mappings/gcp/keyvalue) diff --git a/docs/messaging.mdx b/docs/messaging.mdx index a6b855755..577cf7347 100644 --- a/docs/messaging.mdx +++ b/docs/messaging.mdx @@ -705,4 +705,16 @@ For these reasons, we usually default to Topics. Queues are more suitable for ba ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +### Topics + +- [AWS](/providers/mappings/aws/topics) +- [Azure](/providers/mappings/azure/topics) +- [Google Cloud](/providers/mappings/gcp/topics) + +### Queues + +- [AWS](/providers/mappings/aws/queues) +- [Azure](/providers/mappings/azure/queues) +- [Google Cloud](/providers/mappings/gcp/queues) diff --git a/docs/providers/index.mdx b/docs/providers/index.mdx index 260596d24..9f0ae115e 100644 --- a/docs/providers/index.mdx +++ b/docs/providers/index.mdx @@ -34,18 +34,21 @@ The following is a description of the underlying cloud services that each of the Currently, both the Pulumi and Terraform providers use the same underlying cloud services to deploy your application. The following table shows the cloud services used by default on each cloud: -| **Resource** | **AWS** | **Azure** | **Google Cloud** | **Local** | -| -------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------- | -| [APIs](/apis) | [API Gateway](./providers/pulumi/aws/apis) | [API Management](./providers/pulumi/azure/apis) | [API Gateway](./providers/pulumi/gcp/apis) | [Custom](https://github.com/nitrictech/cli/blob/main/pkg/cloud/gateway/gateway.go) | -| [Key Value Stores ](/keyvalue) | [DynamoDB](./providers/pulumi/aws/keyvalue) | [Table Storage](./providers/pulumi/azure/keyvalue) | [FireStore](./providers/pulumi/gcp/keyvalue) | BoltDB | -| [Messaging: Topics](/messaging#topics) | [SNS](./providers/pulumi/aws/topics) | [Event Grid](./providers/pulumi/azure/topics) | [PubSub](./providers/pulumi/gcp/topics) | Custom | -| [Messaging: Queues](/messaging#queues) | [SQS](./providers/pulumi/aws/queues) | [Storage Queues](./providers/pulumi/azure/queues) | [PubSub](./providers/pulumi/gcp/queues) | Custom | -| [Schedules](/schedules) | [CloudWatch Event Bridge](./providers/pulumi/aws/schedules) | [Dapr Binding](./providers/pulumi/azure/schedules) | [Cloud Scheduler](./providers/pulumi/gcp/schedules) | Custom | -| [Secrets](/secrets) | [Secrets Manager](./providers/pulumi/aws/secrets) | [Key Vault](./providers/pulumi/azure/secrets) | [Secret Manager](./providers/pulumi/gcp/secrets) | Custom | -| [Storage](/storage#buckets) | [S3](./providers/pulumi/aws/storage) | [Blob Storage](./providers/pulumi/azure/storage) | [Cloud Storage](./providers/pulumi/gcp/storage) | SeaweedFS | -| Services | Lambda | Container Apps | CloudRun | Docker | - -The code is open-source on [GitHub](https://github.com/nitrictech/nitric), so you can see exactly how resources are deployed and handled at runtime, then make any changes you see fit. +| **Resource** | **AWS** | **Azure** | **Google Cloud** | **Local** | +| -------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------- | +| [APIs](/apis) | [API Gateway](/providers/mappings/aws/apis) | [API Management](/providers/mappings/azure/apis) | [API Gateway](/providers/mappings/gcp/apis) | [Custom](https://github.com/nitrictech/cli/blob/main/pkg/cloud/gateway/gateway.go) | +| [Batch](/batch) | [AWS Batch](/providers/mappings/aws/batch) | Not implemented | [GCP Batch](/providers/mappings/gcp/batch) | Custom | +| [Schedules](/schedules) | [CloudWatch Event Bridge](/providers/mappings/aws/schedules) | [Dapr Binding](/providers/mappings/azure/schedules) | [Cloud Scheduler](/providers/mappings/gcp/schedules) | Custom | +| [Websockets](/websockets) | [API Gateway](/providers/mappings/aws/websockets) | Not implemented | Not implemented | Custom | +| [Storage](/storage#buckets) | [S3](/providers/mappings/aws/storage) | [Blob Storage](/providers/mappings/azure/storage) | [Cloud Storage](/providers/mappings/gcp/storage) | SeaweedFS | +| [Key Value Stores](/keyvalue) | [DynamoDB](/providers/mappings/aws/keyvalue) | [Table Storage](/providers/mappings/azure/keyvalue) | [FireStore](/providers/mappings/gcp/keyvalue) | BoltDB | +| [SQL Databases](/sql) | [RDS](/providers/mappings/aws/sql) | [Azure Database](/providers/mappings/azure/sql) | [Cloud SQL](/providers/mappings/gcp/sql) | Docker | +| [Messaging: Topics](/messaging#topics) | [SNS](/providers/mappings/aws/topics) | [Event Grid](/providers/mappings/azure/topics) | [PubSub](/providers/mappings/gcp/topics) | Custom | +| [Messaging: Queues](/messaging#queues) | [SQS](/providers/mappings/aws/queues) | [Storage Queues](/providers/mappings/azure/queues) | [PubSub](/providers/mappings/gcp/queues) | Custom | +| [Secrets](/secrets) | [Secrets Manager](/providers/mappings/aws/secrets) | [Key Vault](/providers/mappings/azure/secrets) | [Secret Manager](/providers/mappings/gcp/secrets) | Custom | +| Services | Lambda | Container Apps | CloudRun | Docker | + +The code is open-source on [GitHub](https://github.com/nitrictech/nitric), so you can see exactly how resources are deployed and handled at runtime, then make any changes you see fit. Some features may be unimplemented, but any interest or requests are appreciated. Let us know on [Discord](https://nitric.io/chat) or by creating an issue on our [GitHub repository](https://github.com/nitrictech/nitric/issues). ## Custom Providers diff --git a/docs/providers/pulumi/aws/apis.mdx b/docs/providers/mappings/aws/apis.mdx similarity index 100% rename from docs/providers/pulumi/aws/apis.mdx rename to docs/providers/mappings/aws/apis.mdx diff --git a/docs/providers/mappings/aws/batch.mdx b/docs/providers/mappings/aws/batch.mdx new file mode 100644 index 000000000..2bfcf734c --- /dev/null +++ b/docs/providers/mappings/aws/batch.mdx @@ -0,0 +1,29 @@ +--- +description: 'How Nitric deploys Batch Jobs to AWS' +--- + +# AWS Resources - Batch + +Nitric Batch Jobs are deployed to AWS using [AWS Batch](https://aws.amazon.com/batch/). + +## AWS Resources + +The following resources are created when deploying Batch Jobs to AWS: + +- AWS Batch Compute Environments +- AWS Batch Job Queues +- AWS Batch Job Definitions +- EC2 Instances +- EC2 Security Groups +- ECR Images +- IAM Policies + +## Deployment + +During deployment the Nitric CLI deploys your batch jobs: + +- Built container images are pushed to the [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) as private images +- Files referenced by the `batch-services` key in the `nitric.yaml` file are built into Job Definitions +- IAM roles and policies are created +- AWS Batch Compute Environments are created +- AWS Batch Job Queues are created diff --git a/docs/providers/pulumi/aws/keyvalue.mdx b/docs/providers/mappings/aws/keyvalue.mdx similarity index 100% rename from docs/providers/pulumi/aws/keyvalue.mdx rename to docs/providers/mappings/aws/keyvalue.mdx diff --git a/docs/providers/pulumi/aws/queues.mdx b/docs/providers/mappings/aws/queues.mdx similarity index 100% rename from docs/providers/pulumi/aws/queues.mdx rename to docs/providers/mappings/aws/queues.mdx diff --git a/docs/providers/pulumi/aws/schedules.mdx b/docs/providers/mappings/aws/schedules.mdx similarity index 100% rename from docs/providers/pulumi/aws/schedules.mdx rename to docs/providers/mappings/aws/schedules.mdx diff --git a/docs/providers/pulumi/aws/secrets.mdx b/docs/providers/mappings/aws/secrets.mdx similarity index 100% rename from docs/providers/pulumi/aws/secrets.mdx rename to docs/providers/mappings/aws/secrets.mdx diff --git a/docs/providers/mappings/aws/sql.mdx b/docs/providers/mappings/aws/sql.mdx new file mode 100644 index 000000000..f86c1fba8 --- /dev/null +++ b/docs/providers/mappings/aws/sql.mdx @@ -0,0 +1,35 @@ +--- +description: 'How Nitric deploys SQL Databases to AWS' +--- + +# AWS Resources - SQL Database + +Nitric SQL Databases are deployed to AWS using [Amazon RDS](https://aws.amazon.com/rds). + +## AWS Resources + +The following resources are created when deploying SQL Databases to AWS: + +- Virtual Private Cloud (VPC) +- Security Group +- Aurora PostgreSQL Cluster +- Cluster Instance +- Subnet Group +- CodeBuild Project for migrations + +## Deployment + +During deployment the Nitric CLI deploys your SQL Databases: + +- Virtual Private Cloud (VPC) and Subnets are created +- Declared databases are deployed as Aurora PostgreSQL Clusters +- Creates new Subnet Groups for the Aurora PostgreSQL Cluster +- Appropriate IAM policies are setup enabling VPC access to the database +- Migration images are built and pushed to the [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) as private images +- CodeBuild projects are created to run migrations on the database + +## Other Engine Support + +Currently, Nitric supports only PostgreSQL for AWS RDS databases. Support for other engines like MySQL is not available yet, but you can create a [custom provider](/providers/custom) to add support for your preferred database engine. + +If you'd like to see support for additional engines, please share your [feedback](https://github.com/nitrictech/nitric/issues/684) with the Nitric team! diff --git a/docs/providers/pulumi/aws/storage.mdx b/docs/providers/mappings/aws/storage.mdx similarity index 100% rename from docs/providers/pulumi/aws/storage.mdx rename to docs/providers/mappings/aws/storage.mdx diff --git a/docs/providers/pulumi/aws/topics.mdx b/docs/providers/mappings/aws/topics.mdx similarity index 100% rename from docs/providers/pulumi/aws/topics.mdx rename to docs/providers/mappings/aws/topics.mdx diff --git a/docs/providers/mappings/aws/websockets.mdx b/docs/providers/mappings/aws/websockets.mdx new file mode 100644 index 000000000..c6a8f4cb4 --- /dev/null +++ b/docs/providers/mappings/aws/websockets.mdx @@ -0,0 +1,28 @@ +--- +description: 'How Nitric deploys Websockets to AWS' +--- + +# AWS Resources - Websockets + +Nitric Websockets are deployed to AWS using [Amazon API Gateway](https://aws.amazon.com/api-gateway/). + +## AWS Resources + +The following resources are created when deploying Websockets to AWS: + +- API Gateway v2 Websocket APIs +- API Gateway v2 Stages +- API Gateway Integration +- Lambda Functions +- ECR Images +- IAM Policies + +## Deployment + +During deployment the Nitric CLI builds your Websockets API's routes, methods and handlers: + +- Files referenced by the `services` key in the `nitric.yaml` file are built into container images +- Built container images are pushed to the [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) as private images +- Functions in [AWS Lambda](https://aws.amazon.com/lambda/) are created to run the container images +- IAM policies are created enabling Websocket API Gateway to execute the Lambdas +- `$default`, `$connect`, and `$disconnect` routes are added to the Websocket API Gateway diff --git a/docs/providers/pulumi/azure/apis.mdx b/docs/providers/mappings/azure/apis.mdx similarity index 100% rename from docs/providers/pulumi/azure/apis.mdx rename to docs/providers/mappings/azure/apis.mdx diff --git a/docs/providers/pulumi/azure/keyvalue.mdx b/docs/providers/mappings/azure/keyvalue.mdx similarity index 100% rename from docs/providers/pulumi/azure/keyvalue.mdx rename to docs/providers/mappings/azure/keyvalue.mdx diff --git a/docs/providers/pulumi/azure/queues.mdx b/docs/providers/mappings/azure/queues.mdx similarity index 100% rename from docs/providers/pulumi/azure/queues.mdx rename to docs/providers/mappings/azure/queues.mdx diff --git a/docs/providers/pulumi/azure/schedules.mdx b/docs/providers/mappings/azure/schedules.mdx similarity index 100% rename from docs/providers/pulumi/azure/schedules.mdx rename to docs/providers/mappings/azure/schedules.mdx diff --git a/docs/providers/pulumi/azure/secrets.mdx b/docs/providers/mappings/azure/secrets.mdx similarity index 100% rename from docs/providers/pulumi/azure/secrets.mdx rename to docs/providers/mappings/azure/secrets.mdx diff --git a/docs/providers/mappings/azure/sql.mdx b/docs/providers/mappings/azure/sql.mdx new file mode 100644 index 000000000..4ee6c1e8d --- /dev/null +++ b/docs/providers/mappings/azure/sql.mdx @@ -0,0 +1,31 @@ +--- +description: 'How Nitric deploys SQL Databases to Azure' +--- + +# Azure Resources - SQL Database + +Nitric SQL Databases are deployed to Azure using [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/products/postgresql). + +## Azure Resources + +The following resources are created when deploying SQL Databases to Azure: + +- Virtual Network +- Subnet +- PostgreSQL Databases +- Container Instance Group for migrations + +## Deployment + +During deployment the Nitric CLI deploys your SQL Databases: + +- Virtual Network and Subnet are created +- Declared databases are deployed as PostgreSQL databases +- Container Group Instances are created to run migrations +- Container Apps are setup to run the containers + +## Other Engine Support + +Currently, Nitric supports only PostgreSQL for Azure SQL databases. Support for other engines like MySQL is not available yet, but you can create a [custom provider](/providers/custom) to add support for your preferred database engine. + +If you'd like to see support for additional engines, please share your [feedback](https://github.com/nitrictech/nitric/issues/684) with the Nitric team! diff --git a/docs/providers/pulumi/azure/storage.mdx b/docs/providers/mappings/azure/storage.mdx similarity index 100% rename from docs/providers/pulumi/azure/storage.mdx rename to docs/providers/mappings/azure/storage.mdx diff --git a/docs/providers/pulumi/azure/topics.mdx b/docs/providers/mappings/azure/topics.mdx similarity index 100% rename from docs/providers/pulumi/azure/topics.mdx rename to docs/providers/mappings/azure/topics.mdx diff --git a/docs/providers/pulumi/gcp/apis.mdx b/docs/providers/mappings/gcp/apis.mdx similarity index 100% rename from docs/providers/pulumi/gcp/apis.mdx rename to docs/providers/mappings/gcp/apis.mdx diff --git a/docs/providers/mappings/gcp/batch.mdx b/docs/providers/mappings/gcp/batch.mdx new file mode 100644 index 000000000..38009e970 --- /dev/null +++ b/docs/providers/mappings/gcp/batch.mdx @@ -0,0 +1,27 @@ +--- +description: 'How Nitric deploys Batch Jobs to Google Cloud' +--- + +# Google Cloud Resources - Batch + +Nitric Batch Jobs are deployed to Google Cloud using [Batch](https://cloud.google.com/batch). + +## Google Cloud Resources + +The following resources are created when deploying Batch Jobs to Google Cloud: + +- Google Cloud Batch Compute Environments +- Google Cloud Batch Job Queues +- Google Cloud Batch Job Definitions +- EC2 Instances +- EC2 Security Groups +- ECR Images +- IAM Policies + +## Deployment + +During deployment the Nitric CLI deploys your batch jobs: + +- Built container images are pushed to the [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) as private images +- Files referenced by the `batch-services` key in the `nitric.yaml` file are built into Job Definitions +- IAM policies are created diff --git a/docs/providers/pulumi/gcp/keyvalue.mdx b/docs/providers/mappings/gcp/keyvalue.mdx similarity index 100% rename from docs/providers/pulumi/gcp/keyvalue.mdx rename to docs/providers/mappings/gcp/keyvalue.mdx diff --git a/docs/providers/pulumi/gcp/queues.mdx b/docs/providers/mappings/gcp/queues.mdx similarity index 100% rename from docs/providers/pulumi/gcp/queues.mdx rename to docs/providers/mappings/gcp/queues.mdx diff --git a/docs/providers/pulumi/gcp/schedules.mdx b/docs/providers/mappings/gcp/schedules.mdx similarity index 100% rename from docs/providers/pulumi/gcp/schedules.mdx rename to docs/providers/mappings/gcp/schedules.mdx diff --git a/docs/providers/pulumi/gcp/secrets.mdx b/docs/providers/mappings/gcp/secrets.mdx similarity index 100% rename from docs/providers/pulumi/gcp/secrets.mdx rename to docs/providers/mappings/gcp/secrets.mdx diff --git a/docs/providers/mappings/gcp/sql.mdx b/docs/providers/mappings/gcp/sql.mdx new file mode 100644 index 000000000..e364eb097 --- /dev/null +++ b/docs/providers/mappings/gcp/sql.mdx @@ -0,0 +1,32 @@ +--- +description: 'How Nitric deploys SQL Databases to Google Cloud' +--- + +# Google Cloud Resources - SQL Database + +Nitric SQL Databases are deployed to Google Cloud using [Cloud SQL](https://cloud.google.com/sql). + +## Google Cloud Resources + +The following resources are created when deploying SQL Databases to Google Cloud: + +- Private Network +- Subnet +- PostgreSQL Databases +- Cloud Run Jobs for migrations + +## Deployment + +During deployment the Nitric CLI deploys your SQL Databases: + +- Private Network is created for the Google project +- Subnet is created for the network +- Declared databases are deployed as PostgreSQL databases +- Migration images are built and deployed to the artifact registry +- Migrations are run against the deployed databases using cloud run jobs + +## Other Engine Support + +Currently, Nitric supports only PostgreSQL for Google Cloud SQL databases. Support for other engines like MySQL is not available yet, but you can create a [custom provider](/providers/custom) to add support for your preferred database engine. + +If you'd like to see support for additional engines, please share your [feedback](https://github.com/nitrictech/nitric/issues/684) with the Nitric team! diff --git a/docs/providers/pulumi/gcp/storage.mdx b/docs/providers/mappings/gcp/storage.mdx similarity index 100% rename from docs/providers/pulumi/gcp/storage.mdx rename to docs/providers/mappings/gcp/storage.mdx diff --git a/docs/providers/pulumi/gcp/topics.mdx b/docs/providers/mappings/gcp/topics.mdx similarity index 100% rename from docs/providers/pulumi/gcp/topics.mdx rename to docs/providers/mappings/gcp/topics.mdx diff --git a/docs/providers/pulumi/aws/index.mdx b/docs/providers/pulumi/aws/index.mdx index f0c40412e..310e80a56 100644 --- a/docs/providers/pulumi/aws/index.mdx +++ b/docs/providers/pulumi/aws/index.mdx @@ -68,7 +68,8 @@ Find your stack's resource group in the list and click it: Resource groups are conventionally named `-` - In this example the project name is `api-testing` and the stack name is `aws`. +In this example the project name is `api-testing` and the stack name is `aws`. + ![resource group list image](/docs/images/docs/aws-rg-screen.png) diff --git a/docs/providers/pulumi/azure/index.mdx b/docs/providers/pulumi/azure.mdx similarity index 98% rename from docs/providers/pulumi/azure/index.mdx rename to docs/providers/pulumi/azure.mdx index 449c24192..ad162c59c 100644 --- a/docs/providers/pulumi/azure/index.mdx +++ b/docs/providers/pulumi/azure.mdx @@ -84,7 +84,8 @@ Once a stack has been deployed to Azure it's resource group should be present in Resource groups are conventionally named `--` - In this example the project name is `api-testing` and the stack name is `az`. +In this example the project name is `api-testing` and the stack name is `az`. + ![resource group page screen](/docs/images/docs/az-rg.png) diff --git a/docs/providers/pulumi/gcp/index.mdx b/docs/providers/pulumi/gcp.mdx similarity index 100% rename from docs/providers/pulumi/gcp/index.mdx rename to docs/providers/pulumi/gcp.mdx diff --git a/docs/schedules.mdx b/docs/schedules.mdx index 262a52860..4ddc89489 100644 --- a/docs/schedules.mdx +++ b/docs/schedules.mdx @@ -401,4 +401,8 @@ If you're using schedules on Azure you will be charged for at least 1 container ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/schedules) +- [Azure](/providers/mappings/azure/schedules) +- [Google Cloud](/providers/mappings/gcp/schedules) diff --git a/docs/secrets.mdx b/docs/secrets.mdx index 1269b69b3..fb07bdcbb 100644 --- a/docs/secrets.mdx +++ b/docs/secrets.mdx @@ -315,4 +315,8 @@ final value = latest.value; ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/secrets) +- [Azure](/providers/mappings/azure/secrets) +- [Google Cloud](/providers/mappings/gcp/secrets) diff --git a/docs/sql.mdx b/docs/sql.mdx index 94b299d52..9717fcffa 100644 --- a/docs/sql.mdx +++ b/docs/sql.mdx @@ -339,4 +339,10 @@ Guides are available for some of these alternatives in the [guides section](/gui ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/sql) +- Azure - Not implemented +- [Google Cloud](/providers/mappings/gcp/sql) + +If you need support for additional clouds, let us know by [opening an issue](https://github.com/nitrictech/nitric/issues) or joining the conversation on [Discord](https://nitric.io/chat). diff --git a/docs/storage.mdx b/docs/storage.mdx index 8a3f7c791..867ef4a6f 100644 --- a/docs/storage.mdx +++ b/docs/storage.mdx @@ -678,4 +678,8 @@ profiles.on(BlobEventType.delete, "*", (ctx) async { ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/storage) +- [Azure](/providers/mappings/azure/storage) +- [Google Cloud](/providers/mappings/gcp/storage) diff --git a/docs/websockets.mdx b/docs/websockets.mdx index 23b5828da..ec6eb2bde 100644 --- a/docs/websockets.mdx +++ b/docs/websockets.mdx @@ -462,4 +462,10 @@ socket.onMessage((ctx) async { ## Cloud Service Mapping -Each cloud provider comes with a set of default services used when deploying resources. You can find the full list of these default cloud services in the [Deploy documentation: Default Cloud Services](/providers#default-cloud-services). +Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. + +- [AWS](/providers/mappings/aws/websockets) +- Azure - Not implemented +- Google Cloud - Not implemented + +If you need support for additional clouds, let us know by [opening an issue](https://github.com/nitrictech/nitric/issues) or joining the conversation on [Discord](https://nitric.io/chat). diff --git a/src/config/index.ts b/src/config/index.ts index c7b3162f5..260f54cef 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -23,7 +23,7 @@ import { NodeReference } from './reference/node' import { PyReference } from './reference/python' import { DartReference } from './reference/dart' import { GoReference } from './reference/go' -import { FaAws } from 'react-icons/fa' +import { FaAws, FaSitemap } from 'react-icons/fa' export const navigation: NavEntry[] = [ { @@ -204,6 +204,135 @@ export const navigation: NavEntry[] = [ }, ], }, + { + title: 'Service Mappings', + icon: FaSitemap, + items: [ + { + title: 'AWS', + items: [ + { + title: 'APIs', + href: '/providers/mappings/aws/apis', + }, + { + title: 'Batch', + href: '/providers/mappings/aws/batch', + }, + { + title: 'Schedules', + href: '/providers/mappings/aws/schedules', + }, + { + title: 'Websockets', + href: '/providers/mappings/aws/websockets', + }, + { + title: 'Storage', + href: '/providers/mappings/aws/storage', + }, + { + title: 'Key/Value Stores', + href: '/providers/mappings/aws/keyvalue', + }, + { + title: 'SQL Databases', + href: '/providers/mappings/aws/sql', + }, + { + title: 'Topics', + href: '/providers/mappings/aws/topics', + }, + { + title: 'Queues', + href: '/providers/mappings/aws/queues', + }, + { + title: 'Secrets', + href: '/providers/mappings/aws/secrets', + }, + ], + }, + { + title: 'Azure', + items: [ + { + title: 'APIs', + href: '/providers/mappings/azure/apis', + }, + { + title: 'Schedules', + href: '/providers/mappings/azure/schedules', + }, + { + title: 'Storage', + href: '/providers/mappings/azure/storage', + }, + { + title: 'Key/Value Stores', + href: '/providers/mappings/azure/keyvalue', + }, + { + title: 'SQL Databases', + href: '/providers/mappings/azure/sql', + }, + { + title: 'Topics', + href: '/providers/mappings/azure/topics', + }, + { + title: 'Queues', + href: '/providers/mappings/azure/queues', + }, + { + title: 'Secrets', + href: '/providers/mappings/azure/secrets', + }, + ], + }, + { + title: 'Google Cloud', + items: [ + { + title: 'APIs', + href: '/providers/mappings/gcp/apis', + }, + { + title: 'Batch', + href: '/providers/mappings/gcp/batch', + }, + { + title: 'Schedules', + href: '/providers/mappings/gcp/schedules', + }, + { + title: 'Storage', + href: '/providers/mappings/gcp/storage', + }, + { + title: 'Key/Value Stores', + href: '/providers/mappings/gcp/keyvalue', + }, + { + title: 'SQL Databases', + href: '/providers/mappings/gcp/sql', + }, + { + title: 'Topics', + href: '/providers/mappings/gcp/topics', + }, + { + title: 'Queues', + href: '/providers/mappings/gcp/queues', + }, + { + title: 'Secrets', + href: '/providers/mappings/gcp/secrets', + }, + ], + }, + ], + }, { title: 'Custom', icon: CodeBracketIcon, From ce572f7fb52cb9959756c96d059ab044c73630cd Mon Sep 17 00:00:00 2001 From: David Moore Date: Mon, 16 Dec 2024 15:13:24 +1100 Subject: [PATCH 6/9] cloud mapping redirects --- next.config.mjs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/next.config.mjs b/next.config.mjs index 00756a2ee..39aa70978 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -477,6 +477,34 @@ const nextConfig = { basePath: false, permanent: true, }, + ...[ + 'apis', + 'keyvalue', + 'queues', + 'topics', + 'schedules', + 'secrets', + 'storage', + ].flatMap((page) => [ + { + source: `/docs/providers/pulumi/aws/${page}`, + destination: `/docs/providers/mappings/aws/${page}`, + basePath: false, + permanent: true, + }, + { + source: `/docs/providers/pulumi/azure/${page}`, + destination: `/docs/providers/mappings/azure/${page}`, + basePath: false, + permanent: true, + }, + { + source: `/docs/providers/pulumi/gcp/${page}`, + destination: `/docs/providers/mappings/gcp/${page}`, + basePath: false, + permanent: true, + }, + ]), { source: '/docs/reference/providers', destination: '/docs/providers', From 79bcc3209892d2bdeb11b5906067d110cf62877a Mon Sep 17 00:00:00 2001 From: David Moore Date: Mon, 16 Dec 2024 15:17:01 +1100 Subject: [PATCH 7/9] fix spellcheck --- dictionary.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/dictionary.txt b/dictionary.txt index 1da58214a..aa850cb69 100644 --- a/dictionary.txt +++ b/dictionary.txt @@ -236,6 +236,7 @@ preflight nav MacOS quantized +VPC [0-9]+px ^.+[-:_]\w+$ [a-z]+([A-Z0-9]|[A-Z0-9]\w+) From f035ae6c63b0213f8e8ef7fa95039a86cc12964f Mon Sep 17 00:00:00 2001 From: David Moore Date: Mon, 16 Dec 2024 17:38:50 +1100 Subject: [PATCH 8/9] fix broken links --- docs/providers/custom/extend.mdx | 2 +- next.config.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/providers/custom/extend.mdx b/docs/providers/custom/extend.mdx index 6f5359b85..1bb116004 100644 --- a/docs/providers/custom/extend.mdx +++ b/docs/providers/custom/extend.mdx @@ -135,7 +135,7 @@ You'll notice that we also override the `Bucket` value to use the pulumi spaces ### Config -Now we can create an extension configuration to allow adding digital ocean configuration to our stack file. You can find the base AWS configuration [here](../pulumi/aws/configuration). +Now we can create an extension configuration to allow adding digital ocean configuration to our stack file. You can find the base AWS configuration [here](/providers/pulumi/aws#stack-configuration). Start by defining the type of configuration we want. To deploy to digital ocean we require setting a Digital Ocean token as well as a spaces key, secret, and region. diff --git a/next.config.mjs b/next.config.mjs index 39aa70978..2345b2e30 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -524,7 +524,7 @@ const nextConfig = { permanent: true, }, { - source: '/docs/reference/providers/pulumi/aws/configuration', + source: '/docs/providers/pulumi/aws/configuration', destination: '/docs/providers/pulumi/aws#stack-configuration', basePath: false, permanent: true, From 0f2ae95ccf6cf10d161bb5d90ab6b10bcfc66369 Mon Sep 17 00:00:00 2001 From: David Moore Date: Tue, 17 Dec 2024 14:21:19 +1100 Subject: [PATCH 9/9] change batch to coming soon for azure --- docs/batch.mdx | 2 +- docs/providers/index.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/batch.mdx b/docs/batch.mdx index 378f09e60..cd297465d 100644 --- a/docs/batch.mdx +++ b/docs/batch.mdx @@ -245,7 +245,7 @@ void main() { Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below. - [AWS](/providers/mappings/aws/batch) -- Azure - Not implemented +- Azure - Coming soon - [Google Cloud](/providers/mappings/gcp/batch) If you need support for additional clouds, let us know by [opening an issue](https://github.com/nitrictech/nitric/issues) or joining the conversation on [Discord](https://nitric.io/chat). diff --git a/docs/providers/index.mdx b/docs/providers/index.mdx index 9f0ae115e..3d9014f65 100644 --- a/docs/providers/index.mdx +++ b/docs/providers/index.mdx @@ -37,7 +37,7 @@ Currently, both the Pulumi and Terraform providers use the same underlying cloud | **Resource** | **AWS** | **Azure** | **Google Cloud** | **Local** | | -------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------- | | [APIs](/apis) | [API Gateway](/providers/mappings/aws/apis) | [API Management](/providers/mappings/azure/apis) | [API Gateway](/providers/mappings/gcp/apis) | [Custom](https://github.com/nitrictech/cli/blob/main/pkg/cloud/gateway/gateway.go) | -| [Batch](/batch) | [AWS Batch](/providers/mappings/aws/batch) | Not implemented | [GCP Batch](/providers/mappings/gcp/batch) | Custom | +| [Batch](/batch) | [AWS Batch](/providers/mappings/aws/batch) | Coming soon | [GCP Batch](/providers/mappings/gcp/batch) | Custom | | [Schedules](/schedules) | [CloudWatch Event Bridge](/providers/mappings/aws/schedules) | [Dapr Binding](/providers/mappings/azure/schedules) | [Cloud Scheduler](/providers/mappings/gcp/schedules) | Custom | | [Websockets](/websockets) | [API Gateway](/providers/mappings/aws/websockets) | Not implemented | Not implemented | Custom | | [Storage](/storage#buckets) | [S3](/providers/mappings/aws/storage) | [Blob Storage](/providers/mappings/azure/storage) | [Cloud Storage](/providers/mappings/gcp/storage) | SeaweedFS |