├── .github ├── FUNDING.yml ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── deploy-docs.yaml │ ├── publish-aws.yaml │ ├── publish-awstf.yaml │ ├── publish-azure.yaml │ ├── publish-azuretf.yaml │ ├── publish-contracts.yaml │ ├── publish-gcp.yaml │ ├── publish-gcptf.yaml │ ├── release-prod.yaml │ ├── test-docs.yaml │ └── test.yaml ├── .gitignore ├── .releaserc.json ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DEVELOPERS.md ├── LICENSE ├── Makefile ├── README.md ├── cloud ├── aws │ ├── .gitignore │ ├── .golangci.yml │ ├── .goreleaser.tf.yaml │ ├── .goreleaser.yaml │ ├── Makefile │ ├── cmd │ │ ├── deploy │ │ │ └── main.go │ │ ├── deploytf │ │ │ └── main.go │ │ └── runtime │ │ │ ├── README.md │ │ │ └── main.go │ ├── common │ │ ├── batch.go │ │ ├── config.go │ │ ├── const.go │ │ ├── index.go │ │ ├── resources │ │ │ └── domain.go │ │ └── runtime │ │ │ └── runtime.go │ ├── deploy │ │ ├── api.go │ │ ├── batch.go │ │ ├── bucket.go │ │ ├── cron.go │ │ ├── deploy.go │ │ ├── domain.go │ │ ├── embeds │ │ │ ├── api-url-rewrite.js │ │ │ ├── cloudfront.go │ │ │ ├── codebuild-create-db.yaml │ │ │ ├── codebuild-migrate-db.yaml │ │ │ ├── codebuild.go │ │ │ ├── schedule.go │ │ │ ├── scheduler-execution-permissions.json │ │ │ ├── scheduler-execution-role.json │ │ │ ├── scheduler-input.json │ │ │ ├── url-rewrite.tmpl.js │ │ │ └── ws-url-rewrite.js │ │ ├── httpproxy.go │ │ ├── keyvalue.go │ │ ├── policy.go │ │ ├── queue.go │ │ ├── resources.go │ │ ├── schedule.go │ │ ├── secret.go │ │ ├── service.go │ │ ├── sql.go │ │ ├── topic.go │ │ ├── vpc.go │ │ ├── website.go │ │ └── websocket.go │ ├── deploytf │ │ ├── .nitric │ │ │ └── modules │ │ │ │ ├── api │ │ │ │ ├── domain.tf │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── bucket │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── cdn │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ ├── scripts │ │ │ │ │ ├── api-url-rewrite.js │ │ │ │ │ └── url-rewrite.tmpl.js │ │ │ │ └── variables.tf │ │ │ │ ├── http_proxy │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── keyvalue │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── parameter │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── policy │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── queue │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── rds │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── schedule │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── secret │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── service │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── sql │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── stack │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── topic │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── vpc │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── website │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ └── websocket │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ ├── README.md │ │ ├── api.go │ │ ├── bucket.go │ │ ├── cdktf.json │ │ ├── cdn.go │ │ ├── deploy.go │ │ ├── domain.go │ │ ├── generated │ │ │ ├── api │ │ │ │ ├── Api.go │ │ │ │ ├── ApiConfig.go │ │ │ │ ├── Api__checks.go │ │ │ │ ├── Api__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── api-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── bucket │ │ │ │ ├── Bucket.go │ │ │ │ ├── BucketConfig.go │ │ │ │ ├── Bucket__checks.go │ │ │ │ ├── Bucket__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── bucket-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── cdn │ │ │ │ ├── Cdn.go │ │ │ │ ├── CdnConfig.go │ │ │ │ ├── Cdn__checks.go │ │ │ │ ├── Cdn__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── cdn-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── constraints.json │ │ │ ├── domain │ │ │ │ ├── Domain.go │ │ │ │ ├── DomainConfig.go │ │ │ │ ├── Domain__checks.go │ │ │ │ ├── Domain__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── domain-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── http_proxy │ │ │ │ ├── HttpProxy.go │ │ │ │ ├── HttpProxyConfig.go │ │ │ │ ├── HttpProxy__checks.go │ │ │ │ ├── HttpProxy__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── http_proxy-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── keyvalue │ │ │ │ ├── Keyvalue.go │ │ │ │ ├── KeyvalueConfig.go │ │ │ │ ├── Keyvalue__checks.go │ │ │ │ ├── Keyvalue__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── keyvalue-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── parameter │ │ │ │ ├── Parameter.go │ │ │ │ ├── ParameterConfig.go │ │ │ │ ├── Parameter__checks.go │ │ │ │ ├── Parameter__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── parameter-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── policy │ │ │ │ ├── Policy.go │ │ │ │ ├── PolicyConfig.go │ │ │ │ ├── Policy__checks.go │ │ │ │ ├── Policy__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── policy-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── queue │ │ │ │ ├── Queue.go │ │ │ │ ├── QueueConfig.go │ │ │ │ ├── Queue__checks.go │ │ │ │ ├── Queue__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── queue-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── rds │ │ │ │ ├── Rds.go │ │ │ │ ├── RdsConfig.go │ │ │ │ ├── Rds__checks.go │ │ │ │ ├── Rds__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── rds-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── schedule │ │ │ │ ├── Schedule.go │ │ │ │ ├── ScheduleConfig.go │ │ │ │ ├── Schedule__checks.go │ │ │ │ ├── Schedule__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── schedule-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── secret │ │ │ │ ├── Secret.go │ │ │ │ ├── SecretConfig.go │ │ │ │ ├── Secret__checks.go │ │ │ │ ├── Secret__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── secret-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── service │ │ │ │ ├── Service.go │ │ │ │ ├── ServiceConfig.go │ │ │ │ ├── Service__checks.go │ │ │ │ ├── Service__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── service-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── sql │ │ │ │ ├── Sql.go │ │ │ │ ├── SqlConfig.go │ │ │ │ ├── Sql__checks.go │ │ │ │ ├── Sql__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── sql-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── stack │ │ │ │ ├── Stack.go │ │ │ │ ├── StackConfig.go │ │ │ │ ├── Stack__checks.go │ │ │ │ ├── Stack__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── stack-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── topic │ │ │ │ ├── Topic.go │ │ │ │ ├── TopicConfig.go │ │ │ │ ├── Topic__checks.go │ │ │ │ ├── Topic__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── topic-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── versions.json │ │ │ ├── vpc │ │ │ │ ├── Vpc.go │ │ │ │ ├── VpcConfig.go │ │ │ │ ├── Vpc__checks.go │ │ │ │ ├── Vpc__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── vpc-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── website │ │ │ │ ├── Website.go │ │ │ │ ├── WebsiteConfig.go │ │ │ │ ├── Website__checks.go │ │ │ │ ├── Website__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── website-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ └── websocket │ │ │ │ ├── Websocket.go │ │ │ │ ├── WebsocketConfig.go │ │ │ │ ├── Websocket__checks.go │ │ │ │ ├── Websocket__no_checks.go │ │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── websocket-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ ├── http.go │ │ ├── keyvalue.go │ │ ├── policy.go │ │ ├── queue.go │ │ ├── resources.go │ │ ├── schedule.go │ │ ├── secret.go │ │ ├── service.go │ │ ├── sql.go │ │ ├── topic.go │ │ ├── website.go │ │ └── websocket.go │ ├── go.mod │ ├── go.sum │ ├── ifaces │ │ ├── apigatewayv2iface │ │ │ └── apigatewayv2.go │ │ ├── dynamodbiface │ │ │ └── dynamodb.go │ │ ├── resourcegroupstaggingapiiface │ │ │ └── resourcegroupstagging.go │ │ ├── s3iface │ │ │ └── s3.go │ │ ├── secretsmanageriface │ │ │ └── secretmanager.go │ │ ├── sfniface │ │ │ └── sfn.go │ │ ├── snsiface │ │ │ └── sns.go │ │ └── sqsiface │ │ │ └── sqs.go │ ├── lichen.yaml │ ├── mocks │ │ ├── provider │ │ │ └── aws.go │ │ ├── resourcetaggingapi │ │ │ └── mock.go │ │ ├── s3 │ │ │ └── mock.go │ │ ├── secrets_manager │ │ │ └── mock.go │ │ ├── sfn │ │ │ └── mock.go │ │ ├── sns │ │ │ └── mock.go │ │ └── sqs │ │ │ └── mock.go │ ├── runtime │ │ ├── api │ │ │ └── api.go │ │ ├── batch │ │ │ └── batch.go │ │ ├── env │ │ │ └── variables.go │ │ ├── gateway │ │ │ ├── errors.go │ │ │ ├── event.go │ │ │ ├── lambda.go │ │ │ ├── lambda_suite_test.go │ │ │ ├── lambda_test.go │ │ │ ├── options.go │ │ │ └── router.go │ │ ├── keyvalue │ │ │ └── dynamodb.go │ │ ├── queue │ │ │ ├── sqs.go │ │ │ ├── sqs_suite_test.go │ │ │ └── sqs_test.go │ │ ├── resource │ │ │ ├── resource.go │ │ │ ├── resource_suite_test.go │ │ │ ├── resource_test.go │ │ │ └── ssm.go │ │ ├── secret │ │ │ ├── secrets_manager.go │ │ │ ├── secrets_manager_suite_test.go │ │ │ └── secrets_manager_test.go │ │ ├── server.go │ │ ├── sql │ │ │ └── rds.go │ │ ├── storage │ │ │ ├── option.go │ │ │ ├── s3.go │ │ │ ├── s3_suite_test.go │ │ │ └── s3_test.go │ │ ├── topic │ │ │ ├── sns.go │ │ │ └── sns_test.go │ │ └── websocket │ │ │ └── apigateway.go │ └── tools │ │ └── tools.go ├── azure │ ├── .gitattributes │ ├── .gitignore │ ├── .golangci.yml │ ├── .goreleaser.tf.yaml │ ├── .goreleaser.yaml │ ├── Makefile │ ├── cmd │ │ ├── deploy │ │ │ └── main.go │ │ ├── deploytf │ │ │ └── main.go │ │ └── runtime │ │ │ └── main.go │ ├── common │ │ ├── config.go │ │ ├── deploy │ │ │ └── cron.go │ │ └── runtime │ │ │ └── runtime.go │ ├── deploy │ │ ├── api.go │ │ ├── batch.go │ │ ├── bucket.go │ │ ├── containerenv.go │ │ ├── deploy.go │ │ ├── embeds │ │ │ ├── api-jwt-template.xml │ │ │ ├── api-policy-template.xml │ │ │ └── embeds.go │ │ ├── httpproxy.go │ │ ├── keyvalue.go │ │ ├── policy.go │ │ ├── queue.go │ │ ├── resourcename.go │ │ ├── roles.go │ │ ├── schedule.go │ │ ├── secret.go │ │ ├── service.go │ │ ├── serviceprinciple.go │ │ ├── sql.go │ │ ├── strings.go │ │ ├── topic.go │ │ ├── website.go │ │ └── websocket.go │ ├── deploytf │ │ ├── .gitignore │ │ ├── .nitric │ │ │ └── modules │ │ │ │ ├── api │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── bucket │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── cdn │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── cdn_api_rewrites │ │ │ │ ├── main.tf │ │ │ │ └── variables.tf │ │ │ │ ├── cdn_subsites │ │ │ │ ├── main.tf │ │ │ │ └── variables.tf │ │ │ │ ├── http_proxy │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── keyvalue │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── policy │ │ │ │ ├── main.tf │ │ │ │ └── variables.tf │ │ │ │ ├── queue │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── roles │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── schedule │ │ │ │ ├── main.tf │ │ │ │ └── variables.tf │ │ │ │ ├── service │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── sql │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── stack │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ │ │ ├── topic │ │ │ │ ├── main.tf │ │ │ │ └── variables.tf │ │ │ │ └── website │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ └── variables.tf │ │ ├── api.go │ │ ├── bucket.go │ │ ├── cdktf.json │ │ ├── cdn.go │ │ ├── deploy.go │ │ ├── eventgrid.go │ │ ├── generated │ │ │ ├── api │ │ │ │ ├── Api.go │ │ │ │ ├── ApiConfig.go │ │ │ │ ├── Api__checks.go │ │ │ │ ├── Api__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── api-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── bucket │ │ │ │ ├── Bucket.go │ │ │ │ ├── BucketConfig.go │ │ │ │ ├── Bucket__checks.go │ │ │ │ ├── Bucket__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── bucket-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── cdn │ │ │ │ ├── Cdn.go │ │ │ │ ├── CdnConfig.go │ │ │ │ ├── Cdn__checks.go │ │ │ │ ├── Cdn__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── cdn-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── cdn_api_rewrites │ │ │ │ ├── CdnApiRewrites.go │ │ │ │ ├── CdnApiRewritesConfig.go │ │ │ │ ├── CdnApiRewrites__checks.go │ │ │ │ ├── CdnApiRewrites__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── cdn_api_rewrites-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── cdn_subsites │ │ │ │ ├── CdnSubsites.go │ │ │ │ ├── CdnSubsitesConfig.go │ │ │ │ ├── CdnSubsites__checks.go │ │ │ │ ├── CdnSubsites__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── cdn_subsites-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── constraints.json │ │ │ ├── http_proxy │ │ │ │ ├── HttpProxy.go │ │ │ │ ├── HttpProxyConfig.go │ │ │ │ ├── HttpProxy__checks.go │ │ │ │ ├── HttpProxy__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── http_proxy-0.0.0.tgz │ │ │ │ │ └── jsii.go │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── keyvalue │ │ │ │ ├── Keyvalue.go │ │ │ │ ├── KeyvalueConfig.go │ │ │ │ ├── Keyvalue__checks.go │ │ │ │ ├── Keyvalue__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── keyvalue-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── policy │ │ │ │ ├── Policy.go │ │ │ │ ├── PolicyConfig.go │ │ │ │ ├── Policy__checks.go │ │ │ │ ├── Policy__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── policy-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── queue │ │ │ │ ├── Queue.go │ │ │ │ ├── QueueConfig.go │ │ │ │ ├── Queue__checks.go │ │ │ │ ├── Queue__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── queue-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── roles │ │ │ │ ├── Roles.go │ │ │ │ ├── RolesConfig.go │ │ │ │ ├── Roles__checks.go │ │ │ │ ├── Roles__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── roles-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── schedule │ │ │ │ ├── Schedule.go │ │ │ │ ├── ScheduleConfig.go │ │ │ │ ├── Schedule__checks.go │ │ │ │ ├── Schedule__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── schedule-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── service │ │ │ │ ├── Service.go │ │ │ │ ├── ServiceConfig.go │ │ │ │ ├── Service__checks.go │ │ │ │ ├── Service__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── service-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── sql │ │ │ │ ├── Sql.go │ │ │ │ ├── SqlConfig.go │ │ │ │ ├── Sql__checks.go │ │ │ │ ├── Sql__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── sql-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── stack │ │ │ │ ├── Stack.go │ │ │ │ ├── StackConfig.go │ │ │ │ ├── Stack__checks.go │ │ │ │ ├── Stack__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── stack-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── topic │ │ │ │ ├── Topic.go │ │ │ │ ├── TopicConfig.go │ │ │ │ ├── Topic__checks.go │ │ │ │ ├── Topic__no_checks.go │ │ │ │ ├── internal │ │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ │ ├── jsii.go │ │ │ │ │ └── topic-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ │ ├── versions.json │ │ │ └── website │ │ │ │ ├── Website.go │ │ │ │ ├── WebsiteConfig.go │ │ │ │ ├── Website__checks.go │ │ │ │ ├── Website__no_checks.go │ │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── website-0.0.0.tgz │ │ │ │ ├── main.go │ │ │ │ └── version │ │ ├── httpproxy.go │ │ ├── keyvalue.go │ │ ├── policy.go │ │ ├── queue.go │ │ ├── schedule.go │ │ ├── secret.go │ │ ├── service.go │ │ ├── sql.go │ │ ├── topic.go │ │ ├── website.go │ │ └── websocket.go │ ├── go.mod │ ├── go.sum │ ├── lichen.yaml │ ├── mocks │ │ ├── azblob │ │ │ ├── error.go │ │ │ └── mock.go │ │ ├── azqueue │ │ │ └── mock.go │ │ ├── key_vault │ │ │ └── mock.go │ │ ├── mock_event_grid │ │ │ ├── mock.go │ │ │ └── topic.go │ │ └── provider │ │ │ └── azure.go │ ├── runtime │ │ ├── api │ │ │ └── api.go │ │ ├── env │ │ │ └── variables.go │ │ ├── gateway │ │ │ ├── http.go │ │ │ ├── http_suite_test.go │ │ │ └── http_test.go │ │ ├── keyvalue │ │ │ └── keyvalue.go │ │ ├── queue │ │ │ ├── azqueue.go │ │ │ ├── azqueue_suite_test.go │ │ │ ├── azqueue_test.go │ │ │ └── iface │ │ │ │ ├── adapters.go │ │ │ │ └── iface.go │ │ ├── resource │ │ │ ├── const.go │ │ │ └── resource.go │ │ ├── secret │ │ │ ├── key_vault.go │ │ │ ├── key_vault_suite_test.go │ │ │ └── key_vault_test.go │ │ ├── server.go │ │ ├── sql │ │ │ └── sql.go │ │ ├── storage │ │ │ ├── azblob.go │ │ │ ├── azblob_suite_test.go │ │ │ ├── azblob_test.go │ │ │ └── iface │ │ │ │ ├── adapters.go │ │ │ │ └── iface.go │ │ ├── topic │ │ │ ├── eventgrid.go │ │ │ ├── eventgrid_suite_test.go │ │ │ └── eventgrid_test.go │ │ └── utils │ │ │ ├── auth.go │ │ │ └── const.go │ └── tools │ │ └── tools.go ├── common │ ├── .golangci.yml │ ├── Makefile │ ├── deploy │ │ ├── attributes.go │ │ ├── config │ │ │ ├── config.go │ │ │ └── tags.go │ │ ├── env │ │ │ └── variables.go │ │ ├── image │ │ │ ├── dummy.dockerfile │ │ │ ├── image.go │ │ │ ├── inline.go │ │ │ ├── wrapper-telemetry.dockerfile │ │ │ └── wrapper.dockerfile │ │ ├── provider │ │ │ ├── dependencies.go │ │ │ ├── options.go │ │ │ ├── provider.go │ │ │ ├── pulumi.go │ │ │ ├── runtime.go │ │ │ └── terraform.go │ │ ├── pulumiversions.go │ │ ├── pulumix │ │ │ ├── clistream.go │ │ │ ├── resource.go │ │ │ ├── stream.go │ │ │ ├── tree.go │ │ │ └── urn.go │ │ ├── resources │ │ │ ├── api │ │ │ │ └── api.go │ │ │ └── resources.go │ │ ├── tags │ │ │ ├── tags.go │ │ │ ├── tags_suite_test.go │ │ │ └── tags_test.go │ │ ├── telemetry │ │ │ ├── otel-collector.yaml │ │ │ └── telemetry.go │ │ └── utils │ │ │ └── utils.go │ ├── go.mod │ ├── go.sum │ ├── runtime │ │ ├── env │ │ │ └── variables.go │ │ ├── gateway │ │ │ ├── http.go │ │ │ └── jobs │ │ │ │ └── jobs.go │ │ └── storage │ │ │ └── storage.go │ └── tools │ │ └── tools.go └── gcp │ ├── .gitignore │ ├── .golangci.yml │ ├── .goreleaser.tf.yaml │ ├── .goreleaser.yaml │ ├── Makefile │ ├── cmd │ ├── deploy │ │ └── main.go │ ├── deploytf │ │ └── main.go │ └── runtime │ │ ├── README.md │ │ └── main.go │ ├── common │ ├── config.go │ └── runtime │ │ └── runtime.go │ ├── deploy │ ├── api.go │ ├── batch.go │ ├── bucket.go │ ├── deploy.go │ ├── httpproxy.go │ ├── iam.go │ ├── keyvalue.go │ ├── policy.go │ ├── project.go │ ├── queue.go │ ├── schedule.go │ ├── secret.go │ ├── service.go │ ├── sql.go │ ├── topic.go │ ├── website.go │ └── websocket.go │ ├── deploytf │ ├── .nitric │ │ └── modules │ │ │ ├── api │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── bucket │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── cdn │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── http_proxy │ │ │ ├── main.tf │ │ │ ├── openapi_template.json │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── keyvalue │ │ │ └── readme.md │ │ │ ├── policy │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── queue │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── roles │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ └── variables.tf │ │ │ ├── schedule │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── secret │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── service │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── stack │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ ├── topic │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ │ │ └── website │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ └── variables.tf │ ├── README.md │ ├── api.go │ ├── bucket.go │ ├── cdktf.json │ ├── deploy.go │ ├── generated │ │ ├── api │ │ │ ├── Api.go │ │ │ ├── ApiConfig.go │ │ │ ├── Api__checks.go │ │ │ ├── Api__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── api-0.0.0.tgz │ │ │ │ └── jsii.go │ │ │ ├── main.go │ │ │ └── version │ │ ├── bucket │ │ │ ├── Bucket.go │ │ │ ├── BucketConfig.go │ │ │ ├── Bucket__checks.go │ │ │ ├── Bucket__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── bucket-0.0.0.tgz │ │ │ │ └── jsii.go │ │ │ ├── main.go │ │ │ └── version │ │ ├── cdn │ │ │ ├── Cdn.go │ │ │ ├── CdnConfig.go │ │ │ ├── Cdn__checks.go │ │ │ ├── Cdn__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── cdn-0.0.0.tgz │ │ │ │ └── jsii.go │ │ │ ├── main.go │ │ │ └── version │ │ ├── constraints.json │ │ ├── http_proxy │ │ │ ├── HttpProxy.go │ │ │ ├── HttpProxyConfig.go │ │ │ ├── HttpProxy__checks.go │ │ │ ├── HttpProxy__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── http_proxy-0.0.0.tgz │ │ │ │ └── jsii.go │ │ │ ├── main.go │ │ │ └── version │ │ ├── keyvalue │ │ │ ├── Keyvalue.go │ │ │ ├── KeyvalueConfig.go │ │ │ ├── Keyvalue__checks.go │ │ │ ├── Keyvalue__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── keyvalue-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── policy │ │ │ ├── Policy.go │ │ │ ├── PolicyConfig.go │ │ │ ├── Policy__checks.go │ │ │ ├── Policy__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── policy-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── queue │ │ │ ├── Queue.go │ │ │ ├── QueueConfig.go │ │ │ ├── Queue__checks.go │ │ │ ├── Queue__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── queue-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── schedule │ │ │ ├── Schedule.go │ │ │ ├── ScheduleConfig.go │ │ │ ├── Schedule__checks.go │ │ │ ├── Schedule__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── schedule-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── secret │ │ │ ├── Secret.go │ │ │ ├── SecretConfig.go │ │ │ ├── Secret__checks.go │ │ │ ├── Secret__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── secret-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── service │ │ │ ├── Service.go │ │ │ ├── ServiceConfig.go │ │ │ ├── Service__checks.go │ │ │ ├── Service__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── service-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── stack │ │ │ ├── Stack.go │ │ │ ├── StackConfig.go │ │ │ ├── Stack__checks.go │ │ │ ├── Stack__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── stack-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── topic │ │ │ ├── Topic.go │ │ │ ├── TopicConfig.go │ │ │ ├── Topic__checks.go │ │ │ ├── Topic__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── topic-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ ├── versions.json │ │ ├── website │ │ │ ├── Website.go │ │ │ ├── WebsiteConfig.go │ │ │ ├── Website__checks.go │ │ │ ├── Website__no_checks.go │ │ │ ├── internal │ │ │ │ └── types.go │ │ │ ├── jsii │ │ │ │ ├── jsii.go │ │ │ │ └── website-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ │ └── websocket │ │ │ ├── Websocket.go │ │ │ ├── WebsocketConfig.go │ │ │ ├── Websocket__checks.go │ │ │ ├── Websocket__no_checks.go │ │ │ ├── internal │ │ │ └── types.go │ │ │ ├── jsii │ │ │ ├── jsii.go │ │ │ └── websocket-0.0.0.tgz │ │ │ ├── main.go │ │ │ └── version │ ├── http.go │ ├── keyvalue.go │ ├── policy.go │ ├── queue.go │ ├── schedule.go │ ├── secret.go │ ├── service.go │ ├── sql.go │ ├── topic.go │ ├── website.go │ └── websocket.go │ ├── go.mod │ ├── go.sum │ ├── ifaces │ ├── cloudtasks │ │ └── ifaces.go │ ├── gcloud_secret │ │ ├── adapter.go │ │ └── iface.go │ ├── gcloud_storage │ │ ├── adapter.go │ │ └── iface.go │ └── pubsub │ │ ├── adapters.go │ │ └── ifaces.go │ ├── lichen.yaml │ ├── mocks │ ├── cloudtasks │ │ └── mock.go │ ├── gcp_secret │ │ └── mock.go │ ├── gcp_storage │ │ └── mock.go │ ├── provider │ │ └── gcp.go │ └── pubsub │ │ └── mock.go │ ├── runtime │ ├── api │ │ └── api.go │ ├── batch │ │ └── batch.go │ ├── env │ │ ├── env.go │ │ └── variables.go │ ├── gateway │ │ ├── http.go │ │ ├── http_suite_test.go │ │ └── http_test.go │ ├── keyvalue │ │ └── firestore.go │ ├── queue │ │ ├── pubsub.go │ │ ├── pubsub_suite_test.go │ │ └── pubsub_test.go │ ├── resource │ │ └── resource.go │ ├── secret │ │ ├── secret_manager.go │ │ ├── secret_manager_suite_test.go │ │ └── secret_manager_test.go │ ├── server.go │ ├── sql │ │ └── cloud_sql.go │ ├── storage │ │ ├── storage.go │ │ ├── storage_suite_test.go │ │ └── storage_test.go │ └── topic │ │ ├── pubsub.go │ │ ├── pubsub_suite_test.go │ │ └── pubsub_test.go │ └── tools │ └── tools.go ├── codecov.yml ├── core ├── .gitignore ├── .golangci.yml ├── Makefile ├── contracts │ └── validate │ │ └── validate.proto ├── go.mod ├── go.sum ├── launch.json ├── lichen.yaml ├── mocks │ ├── gateway │ │ └── mock.go │ ├── sync │ │ └── mock.go │ └── workers │ │ ├── apis │ │ └── mock.go │ │ ├── http │ │ └── mock.go │ │ ├── schedules │ │ └── mock.go │ │ ├── storage │ │ └── mock.go │ │ ├── topics │ │ └── mock.go │ │ └── websockets │ │ └── mock.go ├── pkg │ ├── decorators │ │ ├── keyvalue │ │ │ ├── keyvalue.go │ │ │ ├── keyvalue_suite_test.go │ │ │ └── validate_test.go │ │ ├── keyvalue_compat.go │ │ └── secrets_validator.go │ ├── env │ │ ├── env.go │ │ ├── env_suite_test.go │ │ ├── env_test.go │ │ └── variables.go │ ├── gateway │ │ ├── gateway_suite_test.go │ │ ├── plugin.go │ │ └── plugin_test.go │ ├── grpc │ │ └── errors │ │ │ └── errors.go │ ├── help │ │ └── help.go │ ├── logger │ │ └── logger.go │ ├── process │ │ └── manager.go │ ├── proto │ │ ├── apis │ │ │ └── v1 │ │ │ │ ├── apis.pb.go │ │ │ │ └── apis_grpc.pb.go │ │ ├── batch │ │ │ └── v1 │ │ │ │ ├── batch.pb.go │ │ │ │ └── batch_grpc.pb.go │ │ ├── deployments │ │ │ └── v1 │ │ │ │ ├── deployments.pb.go │ │ │ │ └── deployments_grpc.pb.go │ │ ├── http │ │ │ └── v1 │ │ │ │ ├── http.pb.go │ │ │ │ └── http_grpc.pb.go │ │ ├── keyvalue │ │ │ └── v1 │ │ │ │ ├── keyvalue.pb.go │ │ │ │ └── keyvalue_grpc.pb.go │ │ ├── kvstore │ │ │ └── v1 │ │ │ │ ├── kvstore.pb.go │ │ │ │ └── kvstore_grpc.pb.go │ │ ├── queues │ │ │ └── v1 │ │ │ │ ├── queues.pb.go │ │ │ │ └── queues_grpc.pb.go │ │ ├── resources │ │ │ └── v1 │ │ │ │ ├── resources.pb.go │ │ │ │ └── resources_grpc.pb.go │ │ ├── schedules │ │ │ └── v1 │ │ │ │ ├── schedules.pb.go │ │ │ │ └── schedules_grpc.pb.go │ │ ├── secrets │ │ │ └── v1 │ │ │ │ ├── secrets.pb.go │ │ │ │ └── secrets_grpc.pb.go │ │ ├── sql │ │ │ └── v1 │ │ │ │ ├── sql.pb.go │ │ │ │ └── sql_grpc.pb.go │ │ ├── storage │ │ │ └── v1 │ │ │ │ ├── storage.pb.go │ │ │ │ └── storage_grpc.pb.go │ │ ├── topics │ │ │ └── v1 │ │ │ │ ├── topics.pb.go │ │ │ │ └── topics_grpc.pb.go │ │ └── websockets │ │ │ └── v1 │ │ │ ├── websockets.pb.go │ │ │ └── websockets_grpc.pb.go │ ├── server │ │ ├── job │ │ │ ├── options.go │ │ │ └── server.go │ │ ├── options.go │ │ ├── run.go │ │ ├── runtime │ │ │ └── resource.go │ │ ├── server.go │ │ ├── server_suite_test.go │ │ └── server_test.go │ └── workers │ │ ├── apis │ │ └── apis.go │ │ ├── http │ │ └── http.go │ │ ├── id.go │ │ ├── jobs │ │ └── jobs.go │ │ ├── request_broker.go │ │ ├── schedules │ │ └── schedules.go │ │ ├── storage │ │ └── storage.go │ │ ├── topics │ │ └── topics.go │ │ └── websockets │ │ └── websockets.go ├── protolint.yaml └── tools │ ├── tools.go │ └── tools.mk ├── docs ├── .eslintrc.json ├── .gitignore ├── .husky │ └── pre-commit ├── .prettierignore ├── .puppeteerrc.cjs ├── .spellcheckerrc.yml ├── README.md ├── assets │ └── nitric-logo.svg ├── chrome-dependencies.txt ├── components.json ├── contentlayer.config.ts ├── cypress.config.ts ├── cypress │ ├── e2e │ │ ├── a11y.cy.ts │ │ ├── broken-links.cy.ts │ │ └── seo.cy.ts │ ├── fixtures │ │ └── pages.json │ ├── support │ │ ├── commands.ts │ │ └── e2e.ts │ └── tsconfig.json ├── dictionary.txt ├── docs │ ├── apis.mdx │ ├── architecture │ │ ├── apis.mdx │ │ ├── buckets.mdx │ │ ├── index.mdx │ │ ├── keyvalue.mdx │ │ ├── queues.mdx │ │ ├── schedules.mdx │ │ ├── secrets.mdx │ │ ├── services.mdx │ │ ├── sql.mdx │ │ ├── topics.mdx │ │ ├── websites.mdx │ │ └── websockets.mdx │ ├── batch.mdx │ ├── get-started │ │ ├── foundations │ │ │ ├── deployment │ │ │ │ └── index.mdx │ │ │ ├── infrastructure │ │ │ │ ├── index.mdx │ │ │ │ ├── resources.mdx │ │ │ │ ├── security.mdx │ │ │ │ └── services.mdx │ │ │ ├── projects │ │ │ │ ├── configuration.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── local-development.mdx │ │ │ └── why-nitric.mdx │ │ ├── installation.mdx │ │ └── quickstart.mdx │ ├── guides │ │ ├── dart │ │ │ ├── flutter.mdx │ │ │ └── serverless-rest-api-example.mdx │ │ ├── deno │ │ │ ├── byo-deep-research.mdx │ │ │ └── serverless-rest-api-example.mdx │ │ ├── deploying │ │ │ ├── azure-pipelines.mdx │ │ │ ├── github-actions.mdx │ │ │ ├── gitlab-ci.mdx │ │ │ └── google-cloud-build.mdx │ │ ├── go │ │ │ ├── realtime-messaging.mdx │ │ │ ├── serverless-rest-api-example.mdx │ │ │ └── url-shortner.mdx │ │ ├── jvm │ │ │ └── serverless-rest-api-example.mdx │ │ ├── nodejs │ │ │ ├── amazon-cognito.mdx │ │ │ ├── api-with-nextjs.mdx │ │ │ ├── byo-database.mdx │ │ │ ├── debugging.mdx │ │ │ ├── expressjs.mdx │ │ │ ├── fastify.mdx │ │ │ ├── graphql.mdx │ │ │ ├── nestjs.mdx │ │ │ ├── nitric-and-drizzle.mdx │ │ │ ├── nitric-and-pgsql.mdx │ │ │ ├── nitric-and-prisma.mdx │ │ │ ├── nitric-and-supabase.mdx │ │ │ ├── secure-api-auth0.mdx │ │ │ ├── serverless-api-with-planetscale-and-prisma.mdx │ │ │ ├── serverless-rest-api-example.mdx │ │ │ ├── stripe.mdx │ │ │ ├── survey-application.mdx │ │ │ ├── survey-website.mdx │ │ │ ├── testing.mdx │ │ │ ├── twilio.mdx │ │ │ ├── uptime.mdx │ │ │ ├── websites-vite-react.mdx │ │ │ ├── websockets.mdx │ │ │ └── zod.mdx │ │ ├── python │ │ │ ├── ai-podcast-part-1.mdx │ │ │ ├── ai-podcast-part-2.mdx │ │ │ ├── blender-render.mdx │ │ │ ├── create-histogram.mdx │ │ │ ├── debugging.mdx │ │ │ ├── graphql.mdx │ │ │ ├── llama-rag.mdx │ │ │ ├── podcast-transcription.mdx │ │ │ ├── scheduled-report.mdx │ │ │ ├── serverless-ai-api.mdx │ │ │ ├── serverless-llama.mdx │ │ │ ├── serverless-rest-api-example.mdx │ │ │ └── text-prediction.mdx │ │ └── terraform │ │ │ ├── api-gateway-throttle.mdx │ │ │ ├── checkov.mdx │ │ │ ├── s3-encryption.mdx │ │ │ ├── s3-replicate.mdx │ │ │ ├── terratest.mdx │ │ │ └── trivy.mdx │ ├── http.mdx │ ├── index.mdx │ ├── keyvalue.mdx │ ├── messaging.mdx │ ├── misc │ │ ├── comparison │ │ │ ├── ampt.mdx │ │ │ ├── aws-cdk.mdx │ │ │ ├── aws-sam.mdx │ │ │ ├── bicep.mdx │ │ │ ├── encore.mdx │ │ │ ├── gcp-deployment-manager.mdx │ │ │ ├── pulumi.mdx │ │ │ ├── sst.mdx │ │ │ └── terraform.mdx │ │ ├── contributions.mdx │ │ ├── faq.mdx │ │ ├── support.mdx │ │ └── support │ │ │ └── upgrade │ │ │ └── index.mdx │ ├── providers │ │ ├── custom │ │ │ ├── create.mdx │ │ │ ├── docker.mdx │ │ │ ├── extend.mdx │ │ │ └── index.mdx │ │ ├── index.mdx │ │ ├── mappings │ │ │ ├── aws │ │ │ │ ├── apis.mdx │ │ │ │ ├── batch.mdx │ │ │ │ ├── keyvalue.mdx │ │ │ │ ├── queues.mdx │ │ │ │ ├── schedules.mdx │ │ │ │ ├── secrets.mdx │ │ │ │ ├── sql.mdx │ │ │ │ ├── storage.mdx │ │ │ │ ├── topics.mdx │ │ │ │ ├── websites.mdx │ │ │ │ └── websockets.mdx │ │ │ ├── azure │ │ │ │ ├── apis.mdx │ │ │ │ ├── keyvalue.mdx │ │ │ │ ├── queues.mdx │ │ │ │ ├── schedules.mdx │ │ │ │ ├── secrets.mdx │ │ │ │ ├── sql.mdx │ │ │ │ ├── storage.mdx │ │ │ │ ├── topics.mdx │ │ │ │ └── websites.mdx │ │ │ └── gcp │ │ │ │ ├── apis.mdx │ │ │ │ ├── batch.mdx │ │ │ │ ├── keyvalue.mdx │ │ │ │ ├── queues.mdx │ │ │ │ ├── schedules.mdx │ │ │ │ ├── secrets.mdx │ │ │ │ ├── sql.mdx │ │ │ │ ├── storage.mdx │ │ │ │ ├── topics.mdx │ │ │ │ └── websites.mdx │ │ ├── pulumi │ │ │ ├── aws.mdx │ │ │ ├── azure.mdx │ │ │ ├── gcp.mdx │ │ │ └── index.mdx │ │ └── terraform │ │ │ ├── aws.mdx │ │ │ ├── azure.mdx │ │ │ ├── gcp.mdx │ │ │ └── index.mdx │ ├── reference │ │ ├── cli.mdx │ │ ├── csharp │ │ │ ├── v0.mdx │ │ │ └── v0 │ │ │ │ ├── api │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ ├── api-route-all.mdx │ │ │ │ ├── api-route-delete.mdx │ │ │ │ ├── api-route-get.mdx │ │ │ │ ├── api-route-patch.mdx │ │ │ │ ├── api-route-post.mdx │ │ │ │ ├── api-route-put.mdx │ │ │ │ ├── api-route.mdx │ │ │ │ └── api.mdx │ │ │ │ ├── collection │ │ │ │ ├── collection-collection.mdx │ │ │ │ ├── collection-doc-collection.mdx │ │ │ │ ├── collection-doc-delete.mdx │ │ │ │ ├── collection-doc-get.mdx │ │ │ │ ├── collection-doc-set.mdx │ │ │ │ ├── collection-doc.mdx │ │ │ │ ├── collection-query-fetch.mdx │ │ │ │ ├── collection-query-limit.mdx │ │ │ │ ├── collection-query-pagingfrom.mdx │ │ │ │ ├── collection-query-where.mdx │ │ │ │ ├── collection-query.mdx │ │ │ │ └── collection.mdx │ │ │ │ ├── queues │ │ │ │ ├── queue-receive.mdx │ │ │ │ ├── queue-send.mdx │ │ │ │ └── queue.mdx │ │ │ │ ├── schedule │ │ │ │ ├── schedule-cron.mdx │ │ │ │ ├── schedule-every.mdx │ │ │ │ └── schedule.mdx │ │ │ │ ├── secrets │ │ │ │ ├── secret-latest.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ ├── secret-version-access.mdx │ │ │ │ ├── secret-version.mdx │ │ │ │ └── secret.mdx │ │ │ │ ├── storage │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ ├── bucket-file.mdx │ │ │ │ ├── bucket-files.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ └── bucket.mdx │ │ │ │ ├── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ │ │ └── websocket │ │ │ │ ├── connection-close.mdx │ │ │ │ ├── connection-send.mdx │ │ │ │ ├── websocket-connection.mdx │ │ │ │ ├── websocket-on.mdx │ │ │ │ └── websocket.mdx │ │ ├── custom-containers.mdx │ │ ├── dart │ │ │ ├── api │ │ │ │ ├── api-all.mdx │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ ├── api-route-all.mdx │ │ │ │ ├── api-route-delete.mdx │ │ │ │ ├── api-route-get.mdx │ │ │ │ ├── api-route-patch.mdx │ │ │ │ ├── api-route-post.mdx │ │ │ │ ├── api-route-put.mdx │ │ │ │ ├── api-route.mdx │ │ │ │ └── api.mdx │ │ │ ├── batch │ │ │ │ ├── job-handler.mdx │ │ │ │ ├── job-submit.mdx │ │ │ │ └── job.mdx │ │ │ ├── index.mdx │ │ │ ├── keyvalue │ │ │ │ ├── keyvalue-delete.mdx │ │ │ │ ├── keyvalue-get.mdx │ │ │ │ ├── keyvalue-keys.mdx │ │ │ │ ├── keyvalue-set.mdx │ │ │ │ └── keyvalue.mdx │ │ │ ├── queues │ │ │ │ ├── queue-dequeue.mdx │ │ │ │ ├── queue-enqueue.mdx │ │ │ │ └── queue.mdx │ │ │ ├── schedule │ │ │ │ ├── schedule-cron.mdx │ │ │ │ ├── schedule-every.mdx │ │ │ │ └── schedule.mdx │ │ │ ├── secrets │ │ │ │ ├── secret-latest.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ ├── secret-version-access.mdx │ │ │ │ ├── secret-version.mdx │ │ │ │ └── secret.mdx │ │ │ ├── sql │ │ │ │ ├── sql-connection-string.mdx │ │ │ │ └── sql.mdx │ │ │ ├── storage │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ ├── bucket-file-exists.mdx │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ ├── bucket-file.mdx │ │ │ │ ├── bucket-files.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ └── bucket.mdx │ │ │ ├── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ │ └── websocket │ │ │ │ ├── websocket-close.mdx │ │ │ │ ├── websocket-on.mdx │ │ │ │ ├── websocket-send.mdx │ │ │ │ └── websocket.mdx │ │ ├── env.mdx │ │ ├── go │ │ │ ├── api │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ ├── api-route-all.mdx │ │ │ │ ├── api-route-delete.mdx │ │ │ │ ├── api-route-get.mdx │ │ │ │ ├── api-route-patch.mdx │ │ │ │ ├── api-route-post.mdx │ │ │ │ ├── api-route-put.mdx │ │ │ │ ├── api-route.mdx │ │ │ │ └── api.mdx │ │ │ ├── batch │ │ │ │ ├── job-handler.mdx │ │ │ │ ├── job-submit.mdx │ │ │ │ └── job.mdx │ │ │ ├── index.mdx │ │ │ ├── keyvalue │ │ │ │ ├── keyvalue-delete.mdx │ │ │ │ ├── keyvalue-get.mdx │ │ │ │ ├── keyvalue-keys.mdx │ │ │ │ ├── keyvalue-set.mdx │ │ │ │ └── keyvalue.mdx │ │ │ ├── queues │ │ │ │ ├── queue-dequeue.mdx │ │ │ │ ├── queue-enqueue.mdx │ │ │ │ └── queue.mdx │ │ │ ├── schedule │ │ │ │ ├── schedule-cron.mdx │ │ │ │ ├── schedule-every.mdx │ │ │ │ └── schedule.mdx │ │ │ ├── secrets │ │ │ │ ├── secret-access-version.mdx │ │ │ │ ├── secret-access.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ └── secret.mdx │ │ │ ├── sql │ │ │ │ ├── sql-connection-string.mdx │ │ │ │ └── sql.mdx │ │ │ ├── storage │ │ │ │ ├── bucket-delete.mdx │ │ │ │ ├── bucket-downloadurl.mdx │ │ │ │ ├── bucket-listfiles.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ ├── bucket-read.mdx │ │ │ │ ├── bucket-uploadurl.mdx │ │ │ │ ├── bucket-write.mdx │ │ │ │ └── bucket.mdx │ │ │ ├── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ │ ├── v0.mdx │ │ │ ├── v0 │ │ │ │ ├── api │ │ │ │ │ ├── api-delete.mdx │ │ │ │ │ ├── api-details.mdx │ │ │ │ │ ├── api-get.mdx │ │ │ │ │ ├── api-patch.mdx │ │ │ │ │ ├── api-post.mdx │ │ │ │ │ ├── api-put.mdx │ │ │ │ │ ├── api-route-all.mdx │ │ │ │ │ ├── api-route-delete.mdx │ │ │ │ │ ├── api-route-get.mdx │ │ │ │ │ ├── api-route-patch.mdx │ │ │ │ │ ├── api-route-post.mdx │ │ │ │ │ ├── api-route-put.mdx │ │ │ │ │ ├── api-route.mdx │ │ │ │ │ └── api.mdx │ │ │ │ ├── collection │ │ │ │ │ ├── collection-collection.mdx │ │ │ │ │ ├── collection-doc-collection.mdx │ │ │ │ │ ├── collection-doc-delete.mdx │ │ │ │ │ ├── collection-doc-get.mdx │ │ │ │ │ ├── collection-doc-set.mdx │ │ │ │ │ ├── collection-doc.mdx │ │ │ │ │ ├── collection-query-fetch.mdx │ │ │ │ │ ├── collection-query-limit.mdx │ │ │ │ │ ├── collection-query-pagingfrom.mdx │ │ │ │ │ ├── collection-query-stream.mdx │ │ │ │ │ ├── collection-query-where.mdx │ │ │ │ │ ├── collection-query.mdx │ │ │ │ │ └── collection.mdx │ │ │ │ ├── queues │ │ │ │ │ ├── queue-receive.mdx │ │ │ │ │ ├── queue-send.mdx │ │ │ │ │ └── queue.mdx │ │ │ │ ├── schedule │ │ │ │ │ ├── schedule-cron.mdx │ │ │ │ │ ├── schedule-every.mdx │ │ │ │ │ └── schedule.mdx │ │ │ │ ├── secrets │ │ │ │ │ ├── secret-latest.mdx │ │ │ │ │ ├── secret-put.mdx │ │ │ │ │ ├── secret-version-access.mdx │ │ │ │ │ ├── secret-version.mdx │ │ │ │ │ └── secret.mdx │ │ │ │ ├── storage │ │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ │ ├── bucket-file.mdx │ │ │ │ │ ├── bucket-files.mdx │ │ │ │ │ ├── bucket-on.mdx │ │ │ │ │ └── bucket.mdx │ │ │ │ ├── topic │ │ │ │ │ ├── topic-publish.mdx │ │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ │ └── topic.mdx │ │ │ │ └── websocket │ │ │ │ │ ├── websocket-close.mdx │ │ │ │ │ ├── websocket-details.mdx │ │ │ │ │ ├── websocket-on.mdx │ │ │ │ │ ├── websocket-send.mdx │ │ │ │ │ └── websocket.mdx │ │ │ └── websocket │ │ │ │ ├── websocket-close.mdx │ │ │ │ ├── websocket-on.mdx │ │ │ │ ├── websocket-send.mdx │ │ │ │ └── websocket.mdx │ │ ├── jvm │ │ │ ├── v0.mdx │ │ │ └── v0 │ │ │ │ ├── api │ │ │ │ ├── api-all.mdx │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ ├── api-route-all.mdx │ │ │ │ ├── api-route-delete.mdx │ │ │ │ ├── api-route-get.mdx │ │ │ │ ├── api-route-patch.mdx │ │ │ │ ├── api-route-post.mdx │ │ │ │ ├── api-route-put.mdx │ │ │ │ ├── api-route.mdx │ │ │ │ └── api.mdx │ │ │ │ ├── collection │ │ │ │ ├── collection-collection.mdx │ │ │ │ ├── collection-doc-collection.mdx │ │ │ │ ├── collection-doc-delete.mdx │ │ │ │ ├── collection-doc-get.mdx │ │ │ │ ├── collection-doc-set.mdx │ │ │ │ ├── collection-doc.mdx │ │ │ │ ├── collection-query-fetch.mdx │ │ │ │ ├── collection-query-limit.mdx │ │ │ │ ├── collection-query-pagingfrom.mdx │ │ │ │ ├── collection-query-stream.mdx │ │ │ │ ├── collection-query-where.mdx │ │ │ │ ├── collection-query.mdx │ │ │ │ └── collection.mdx │ │ │ │ ├── queues │ │ │ │ ├── queue-receive.mdx │ │ │ │ ├── queue-send.mdx │ │ │ │ └── queue.mdx │ │ │ │ ├── schedule │ │ │ │ ├── schedule-cron.mdx │ │ │ │ ├── schedule-every.mdx │ │ │ │ └── schedule.mdx │ │ │ │ ├── secrets │ │ │ │ ├── secret-latest.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ ├── secret-version-access.mdx │ │ │ │ ├── secret-version.mdx │ │ │ │ └── secret.mdx │ │ │ │ ├── storage │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ ├── bucket-file.mdx │ │ │ │ ├── bucket-files.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ └── bucket.mdx │ │ │ │ └── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ ├── languages.mdx │ │ ├── nodejs │ │ │ ├── api │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ ├── api-route-all.mdx │ │ │ │ ├── api-route-delete.mdx │ │ │ │ ├── api-route-get.mdx │ │ │ │ ├── api-route-patch.mdx │ │ │ │ ├── api-route-post.mdx │ │ │ │ ├── api-route-put.mdx │ │ │ │ ├── api-route.mdx │ │ │ │ └── api.mdx │ │ │ ├── batch │ │ │ │ ├── job-handler.mdx │ │ │ │ ├── job-submit.mdx │ │ │ │ └── job.mdx │ │ │ ├── http │ │ │ │ └── http.mdx │ │ │ ├── index.mdx │ │ │ ├── keyvalue │ │ │ │ ├── keyvalue-delete.mdx │ │ │ │ ├── keyvalue-get.mdx │ │ │ │ ├── keyvalue-keys.mdx │ │ │ │ ├── keyvalue-set.mdx │ │ │ │ └── keyvalue.mdx │ │ │ ├── queues │ │ │ │ ├── queue-dequeue.mdx │ │ │ │ ├── queue-enqueue.mdx │ │ │ │ └── queue.mdx │ │ │ ├── schedule │ │ │ │ ├── schedule-cron.mdx │ │ │ │ ├── schedule-every.mdx │ │ │ │ └── schedule.mdx │ │ │ ├── secrets │ │ │ │ ├── secret-latest.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ ├── secret-version-access.mdx │ │ │ │ ├── secret-version.mdx │ │ │ │ └── secret.mdx │ │ │ ├── sql │ │ │ │ ├── sql-connection-string.mdx │ │ │ │ └── sql.mdx │ │ │ ├── storage │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ ├── bucket-file-exists.mdx │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ ├── bucket-file.mdx │ │ │ │ ├── bucket-files.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ └── bucket.mdx │ │ │ ├── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ │ ├── v0.mdx │ │ │ ├── v0 │ │ │ │ ├── api │ │ │ │ │ ├── api-delete.mdx │ │ │ │ │ ├── api-get.mdx │ │ │ │ │ ├── api-patch.mdx │ │ │ │ │ ├── api-post.mdx │ │ │ │ │ ├── api-put.mdx │ │ │ │ │ ├── api-route-all.mdx │ │ │ │ │ ├── api-route-delete.mdx │ │ │ │ │ ├── api-route-get.mdx │ │ │ │ │ ├── api-route-patch.mdx │ │ │ │ │ ├── api-route-post.mdx │ │ │ │ │ ├── api-route-put.mdx │ │ │ │ │ ├── api-route.mdx │ │ │ │ │ └── api.mdx │ │ │ │ ├── collection │ │ │ │ │ ├── collection-collection.mdx │ │ │ │ │ ├── collection-doc-collection.mdx │ │ │ │ │ ├── collection-doc-delete.mdx │ │ │ │ │ ├── collection-doc-get.mdx │ │ │ │ │ ├── collection-doc-set.mdx │ │ │ │ │ ├── collection-doc.mdx │ │ │ │ │ ├── collection-query-fetch.mdx │ │ │ │ │ ├── collection-query-limit.mdx │ │ │ │ │ ├── collection-query-pagingfrom.mdx │ │ │ │ │ ├── collection-query-stream.mdx │ │ │ │ │ ├── collection-query-where.mdx │ │ │ │ │ ├── collection-query.mdx │ │ │ │ │ └── collection.mdx │ │ │ │ ├── http │ │ │ │ │ └── http.mdx │ │ │ │ ├── queues │ │ │ │ │ ├── queue-receive.mdx │ │ │ │ │ ├── queue-send.mdx │ │ │ │ │ └── queue.mdx │ │ │ │ ├── schedule │ │ │ │ │ ├── schedule-cron.mdx │ │ │ │ │ ├── schedule-every.mdx │ │ │ │ │ └── schedule.mdx │ │ │ │ ├── secrets │ │ │ │ │ ├── secret-latest.mdx │ │ │ │ │ ├── secret-put.mdx │ │ │ │ │ ├── secret-version-access.mdx │ │ │ │ │ ├── secret-version.mdx │ │ │ │ │ └── secret.mdx │ │ │ │ ├── storage │ │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ │ ├── bucket-file-exists.mdx │ │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ │ ├── bucket-file.mdx │ │ │ │ │ ├── bucket-files.mdx │ │ │ │ │ ├── bucket-on.mdx │ │ │ │ │ └── bucket.mdx │ │ │ │ ├── topic │ │ │ │ │ ├── topic-publish.mdx │ │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ │ └── topic.mdx │ │ │ │ └── websocket │ │ │ │ │ ├── websocket-close.mdx │ │ │ │ │ ├── websocket-on.mdx │ │ │ │ │ ├── websocket-send.mdx │ │ │ │ │ └── websocket.mdx │ │ │ └── websocket │ │ │ │ ├── websocket-close.mdx │ │ │ │ ├── websocket-on.mdx │ │ │ │ ├── websocket-send.mdx │ │ │ │ └── websocket.mdx │ │ ├── preview-features │ │ │ └── index.mdx │ │ └── python │ │ │ ├── api │ │ │ ├── api-all.mdx │ │ │ ├── api-delete.mdx │ │ │ ├── api-get.mdx │ │ │ ├── api-methods.mdx │ │ │ ├── api-patch.mdx │ │ │ ├── api-post.mdx │ │ │ ├── api-put.mdx │ │ │ └── api.mdx │ │ │ ├── batch │ │ │ ├── job-handler.mdx │ │ │ ├── job-submit.mdx │ │ │ └── job.mdx │ │ │ ├── index.mdx │ │ │ ├── keyvalue │ │ │ ├── keyvalue-delete.mdx │ │ │ ├── keyvalue-get.mdx │ │ │ ├── keyvalue-keys.mdx │ │ │ ├── keyvalue-set.mdx │ │ │ └── keyvalue.mdx │ │ │ ├── queues │ │ │ ├── queue-dequeue.mdx │ │ │ ├── queue-enqueue.mdx │ │ │ └── queue.mdx │ │ │ ├── schedule │ │ │ └── schedule.mdx │ │ │ ├── secrets │ │ │ ├── secret-latest.mdx │ │ │ ├── secret-put.mdx │ │ │ ├── secret-version-access.mdx │ │ │ ├── secret-version.mdx │ │ │ └── secret.mdx │ │ │ ├── sql │ │ │ ├── sql-connection-string.mdx │ │ │ └── sql.mdx │ │ │ ├── storage │ │ │ ├── bucket-file-delete.mdx │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ ├── bucket-file-read.mdx │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ ├── bucket-file-write.mdx │ │ │ ├── bucket-file.mdx │ │ │ ├── bucket-files.mdx │ │ │ ├── bucket-on.mdx │ │ │ └── bucket.mdx │ │ │ ├── topic │ │ │ ├── topic-publish.mdx │ │ │ ├── topic-subscribe.mdx │ │ │ └── topic.mdx │ │ │ ├── v0.mdx │ │ │ ├── v0 │ │ │ ├── api │ │ │ │ ├── api-all.mdx │ │ │ │ ├── api-delete.mdx │ │ │ │ ├── api-get.mdx │ │ │ │ ├── api-methods.mdx │ │ │ │ ├── api-patch.mdx │ │ │ │ ├── api-post.mdx │ │ │ │ ├── api-put.mdx │ │ │ │ └── api.mdx │ │ │ ├── collection │ │ │ │ ├── collection-collection.mdx │ │ │ │ ├── collection-doc-collection.mdx │ │ │ │ ├── collection-doc-delete.mdx │ │ │ │ ├── collection-doc-get.mdx │ │ │ │ ├── collection-doc-set.mdx │ │ │ │ ├── collection-doc.mdx │ │ │ │ ├── collection-query-fetch.mdx │ │ │ │ ├── collection-query-limit.mdx │ │ │ │ ├── collection-query-pagingfrom.mdx │ │ │ │ ├── collection-query-stream.mdx │ │ │ │ ├── collection-query-where.mdx │ │ │ │ ├── collection-query.mdx │ │ │ │ └── collection.mdx │ │ │ ├── queues │ │ │ │ ├── queue-receive.mdx │ │ │ │ ├── queue-send.mdx │ │ │ │ └── queue.mdx │ │ │ ├── schedules │ │ │ │ └── schedule.mdx │ │ │ ├── secrets │ │ │ │ ├── secret-latest.mdx │ │ │ │ ├── secret-put.mdx │ │ │ │ ├── secret-version-access.mdx │ │ │ │ ├── secret-version.mdx │ │ │ │ └── secret.mdx │ │ │ ├── storage │ │ │ │ ├── bucket-file-delete.mdx │ │ │ │ ├── bucket-file-downloadurl.mdx │ │ │ │ ├── bucket-file-read.mdx │ │ │ │ ├── bucket-file-uploadurl.mdx │ │ │ │ ├── bucket-file-write.mdx │ │ │ │ ├── bucket-file.mdx │ │ │ │ ├── bucket-files.mdx │ │ │ │ ├── bucket-on.mdx │ │ │ │ └── bucket.mdx │ │ │ ├── topic │ │ │ │ ├── topic-publish.mdx │ │ │ │ ├── topic-subscribe.mdx │ │ │ │ └── topic.mdx │ │ │ └── websocket │ │ │ │ ├── websocket-on.mdx │ │ │ │ ├── websocket-send.mdx │ │ │ │ └── websocket.mdx │ │ │ └── websocket │ │ │ ├── websocket-on.mdx │ │ │ ├── websocket-send.mdx │ │ │ └── websocket.mdx │ ├── schedules.mdx │ ├── secrets.mdx │ ├── sql.mdx │ ├── storage.mdx │ ├── websites.mdx │ └── websockets.mdx ├── lint-staged.config.mjs ├── mdx-components.tsx ├── next.config.mjs ├── package.json ├── postcss.config.js ├── prettier.config.js ├── prisma │ ├── migrations │ │ ├── 20230622003153_init │ │ │ └── migration.sql │ │ ├── 20231115050520_add_comment │ │ │ └── migration.sql │ │ └── migration_lock.toml │ └── schema.prisma ├── public │ ├── audio │ │ └── guides │ │ │ └── ai-podcast │ │ │ ├── dead-internet-podcast.m4a │ │ │ └── sample-output.m4a │ └── images │ │ ├── docs │ │ ├── aws-rg-screen.png │ │ ├── aws-rg.png │ │ ├── az-rg.png │ │ ├── dashboard-architecture.png │ │ ├── nitric-deployment-container-arch.png │ │ └── nitric-runtime-container-arch.png │ │ ├── guides │ │ ├── ai-podcast │ │ │ ├── part-1 │ │ │ │ ├── banner.png │ │ │ │ ├── dashboard-storage.png │ │ │ │ ├── dashboard.png │ │ │ │ ├── featured.png │ │ │ │ └── g-instance-quota-increase.png │ │ │ └── part-2 │ │ │ │ ├── banner.png │ │ │ │ └── featured.png │ │ ├── amazon-cognito │ │ │ └── new_project_cognito.gif │ │ ├── api-gateway-throttle │ │ │ └── throttle.png │ │ ├── auth0 │ │ │ ├── auth0-create-api.png │ │ │ ├── auth0-get-audience.png │ │ │ ├── auth0-get-issuer.png │ │ │ ├── auth0-get-jwt.png │ │ │ └── auth0-navigate-apis.png │ │ ├── blender-render │ │ │ └── featured.png │ │ ├── create-histogram │ │ │ └── histogram.png │ │ ├── debugging │ │ │ └── run-debug.png │ │ ├── deploy │ │ │ ├── add-connection.png │ │ │ ├── add-org.png │ │ │ ├── add-project-existing.png │ │ │ ├── add-project-new.png │ │ │ ├── add-project.png │ │ │ ├── deploy-logs.png │ │ │ ├── deployed-stack.png │ │ │ ├── new-environment-2.png │ │ │ ├── new-environment-variable.png │ │ │ ├── new-environment.png │ │ │ └── sign-in.png │ │ ├── flutter │ │ │ ├── favorites_page_final.png │ │ │ ├── featured.png │ │ │ ├── main_page_1.png │ │ │ ├── main_page_2.png │ │ │ └── main_page_final.png │ │ ├── google-cloud-build │ │ │ └── trigger-config.png │ │ ├── llama-rag │ │ │ └── featured.png │ │ ├── nitric-and-drizzle │ │ │ ├── step-1.png │ │ │ ├── step-2.png │ │ │ ├── step-3.png │ │ │ ├── step-4.png │ │ │ └── step-5.png │ │ ├── nitric-and-pgsql │ │ │ ├── step-1.png │ │ │ ├── step-2.png │ │ │ ├── step-3.png │ │ │ ├── step-4.png │ │ │ └── step-5.png │ │ ├── nitric-and-prisma │ │ │ ├── step-1.png │ │ │ ├── step-2.png │ │ │ ├── step-3.png │ │ │ ├── step-4.png │ │ │ └── step-5.png │ │ ├── nitric-and-supabase │ │ │ ├── project_structure.png │ │ │ ├── sendgrid_createapikey.png │ │ │ ├── sendgrid_newsenderdetails.png │ │ │ ├── supabase_createfunctionhook.png │ │ │ ├── supabase_createfunctionhook_step1.png │ │ │ ├── supabase_createfunctionhook_step2.png │ │ │ ├── supabase_createfunctionhook_step3.png │ │ │ ├── supabase_createnewtable.png │ │ │ ├── supabase_createprofilestable.png │ │ │ └── supabase_insertrow.png │ │ ├── planetscale │ │ │ └── connect-with-prisma.png │ │ ├── podcast-transcription │ │ │ └── featured.png │ │ ├── python-debugging │ │ │ ├── attachboth.png │ │ │ ├── breakpoint.png │ │ │ ├── debug.png │ │ │ └── terminal.png │ │ ├── realtime-messaging │ │ │ ├── dashboard.png │ │ │ └── featured.png │ │ ├── s3-encryption │ │ │ └── encrypt.png │ │ ├── s3-replicate │ │ │ └── replication.png │ │ ├── scheduled-report │ │ │ └── trigger.png │ │ ├── serverless-ai-api │ │ │ ├── banner.png │ │ │ └── featured.png │ │ ├── serverless-llama │ │ │ ├── banner.png │ │ │ ├── dashboard.png │ │ │ └── featured.png │ │ ├── survey-application │ │ │ ├── pdf.png │ │ │ ├── receipt.png │ │ │ └── submit.png │ │ ├── twilio │ │ │ └── twilio-credentials.png │ │ ├── uptime │ │ │ ├── arch-diagram.png │ │ │ ├── called-post.png │ │ │ ├── frontend.png │ │ │ ├── nitric-uptime-1.png │ │ │ └── nitric-uptime-2.png │ │ ├── websites-vite-react │ │ │ └── preview.png │ │ └── websocket-starter │ │ │ ├── first-test.png │ │ │ └── second-test.png │ │ ├── og_home.png │ │ └── open_graph.png ├── scripts │ ├── build-sitemap.js │ ├── collect-assets.js │ └── cypress-fixtures.mjs ├── src │ ├── actions │ │ └── sendFeedback.ts │ ├── app │ │ ├── (sitemaps) │ │ │ ├── sitemap-0.xml │ │ │ │ └── route.ts │ │ │ └── sitemap.xml │ │ │ │ └── route.ts │ │ ├── Fathom.tsx │ │ ├── [[...slug]] │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── apple-icon.png │ │ ├── favicon.ico │ │ ├── guides │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── not-found.tsx │ │ ├── og │ │ │ └── route.tsx │ │ ├── providers.tsx │ │ └── robots.ts │ ├── assets │ │ ├── Sora-Bold.ttf │ │ ├── cli-usage.txt │ │ └── snippets │ │ │ ├── sql-drizzle-snippet.js │ │ │ └── sql-prisma-snippet.js │ ├── components │ │ ├── Breadcrumbs.tsx │ │ ├── Button.tsx │ │ ├── Feedback.tsx │ │ ├── FeedbackForm.tsx │ │ ├── Footer.tsx │ │ ├── GitHubStarCount.tsx │ │ ├── GridPattern.tsx │ │ ├── Guides.tsx │ │ ├── HeroPattern.tsx │ │ ├── HomeHeader.tsx │ │ ├── LanguageSwitch │ │ │ ├── LanguageSwitch.client.tsx │ │ │ ├── LanguageSwitch.tsx │ │ │ └── index.ts │ │ ├── Libraries.tsx │ │ ├── Logo.tsx │ │ ├── MDXContent.tsx │ │ ├── MermaidZoom.tsx │ │ ├── OSTabs.tsx │ │ ├── Properties.tsx │ │ ├── Prose.tsx │ │ ├── Resources.tsx │ │ ├── ShowIfLang.tsx │ │ ├── Tag.tsx │ │ ├── ThemeToggle.tsx │ │ ├── code │ │ │ ├── Code.tsx │ │ │ ├── CodeContainer.tsx │ │ │ ├── CodeSwitcher.tsx │ │ │ ├── CodeSwitcherSelect.tsx │ │ │ ├── CodeTabs.client.tsx │ │ │ ├── CodeTabs.tsx │ │ │ ├── CopyButton.tsx │ │ │ ├── Diff.tsx │ │ │ ├── ImportCode.tsx │ │ │ ├── Mark.tsx │ │ │ ├── Pre.tsx │ │ │ ├── annotations │ │ │ │ ├── callout.tsx │ │ │ │ ├── classname.tsx │ │ │ │ ├── collapse.tsx │ │ │ │ ├── fold.tsx │ │ │ │ ├── token-transitions.client.tsx │ │ │ │ └── token-transitions.tsx │ │ │ ├── highlight.ts │ │ │ ├── meta.ts │ │ │ └── theme.ts │ │ ├── guides │ │ │ ├── GuideFilterCheckbox.tsx │ │ │ ├── GuideFilters.tsx │ │ │ ├── GuideItem.tsx │ │ │ ├── GuideList.tsx │ │ │ ├── GuideMobileFilters.tsx │ │ │ ├── GuidePage.tsx │ │ │ └── GuidesFeatured.tsx │ │ ├── icons │ │ │ ├── BellIcon.tsx │ │ │ ├── BoltIcon.tsx │ │ │ ├── BookIcon.tsx │ │ │ ├── CalendarIcon.tsx │ │ │ ├── CartIcon.tsx │ │ │ ├── ChatBubbleIcon.tsx │ │ │ ├── CheckIcon.tsx │ │ │ ├── ChevronRightLeftIcon.tsx │ │ │ ├── ClipboardIcon.tsx │ │ │ ├── CogIcon.tsx │ │ │ ├── CopyIcon.tsx │ │ │ ├── DartLogoNoTextColour.tsx │ │ │ ├── DocumentIcon.tsx │ │ │ ├── EnvelopeIcon.tsx │ │ │ ├── FaceSmileIcon.tsx │ │ │ ├── FolderIcon.tsx │ │ │ ├── GitHubIcon.tsx │ │ │ ├── GoLogoColour.tsx │ │ │ ├── JavaScriptLogoColour.tsx │ │ │ ├── LanguageIcon.tsx │ │ │ ├── LinkIcon.tsx │ │ │ ├── ListIcon.tsx │ │ │ ├── MagnifyingGlassIcon.tsx │ │ │ ├── MapPinIcon.tsx │ │ │ ├── PackageIcon.tsx │ │ │ ├── PaperAirplaneIcon.tsx │ │ │ ├── PaperClipIcon.tsx │ │ │ ├── PythonLogoColour.tsx │ │ │ ├── ShapesIcon.tsx │ │ │ ├── ShirtIcon.tsx │ │ │ ├── SquaresPlusIcon.tsx │ │ │ ├── TagIcon.tsx │ │ │ ├── TypeScriptLogoColour.tsx │ │ │ ├── UserIcon.tsx │ │ │ └── UsersIcon.tsx │ │ ├── layout │ │ │ ├── BaseLayout.tsx │ │ │ ├── DocToC.tsx │ │ │ ├── DocTracingBeam.tsx │ │ │ ├── Header.tsx │ │ │ └── Search.tsx │ │ ├── mdx.tsx │ │ ├── nav │ │ │ ├── CollapsibleNavItem.tsx │ │ │ ├── MobileNavigation.tsx │ │ │ ├── NavLink.tsx │ │ │ ├── Navigation.tsx │ │ │ └── NavigationGroup.tsx │ │ ├── tabs │ │ │ ├── Tabs.tsx │ │ │ └── TabsContext.tsx │ │ └── ui │ │ │ ├── accordion.tsx │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── breadcrumb.tsx │ │ │ ├── button.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── dialog.tsx │ │ │ ├── heading.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── pagination.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── subheading.tsx │ │ │ ├── table.tsx │ │ │ └── tabs.tsx │ ├── config │ │ ├── index.ts │ │ ├── reference │ │ │ ├── dart.ts │ │ │ ├── go.ts │ │ │ ├── node.ts │ │ │ └── python.ts │ │ └── types.ts │ ├── hooks │ │ ├── useLang.ts │ │ └── useParams.ts │ ├── images │ │ └── logos │ │ │ ├── aws-dark-text.svg │ │ │ ├── aws.svg │ │ │ ├── azure.svg │ │ │ ├── csharp.svg │ │ │ ├── dart.svg │ │ │ ├── gcp.svg │ │ │ ├── go copy.svg │ │ │ ├── go.svg │ │ │ ├── java.svg │ │ │ ├── node copy.svg │ │ │ ├── node.svg │ │ │ ├── php copy.svg │ │ │ ├── php.svg │ │ │ ├── python copy.svg │ │ │ ├── python.svg │ │ │ ├── ruby copy.svg │ │ │ ├── ruby.svg │ │ │ └── x.svg │ ├── lib │ │ ├── constants.ts │ │ ├── getNavInfo.ts │ │ ├── remToPx.ts │ │ ├── stargazers.ts │ │ └── utils.ts │ ├── mdx │ │ ├── mdx-options.mjs │ │ ├── recma.mjs │ │ ├── rehype.mjs │ │ ├── remark-toc-headings.mjs │ │ ├── remark.mjs │ │ └── search.mjs │ └── styles │ │ ├── codeTheme.css │ │ ├── docsearch.css │ │ ├── mermaid.css │ │ └── tailwind.css ├── tailwind.config.ts ├── tsconfig.json ├── types.d.ts ├── typography.ts ├── vercel.json └── yarn.lock ├── examples └── README.md ├── go.work ├── go.work.sum ├── nitric └── proto │ ├── apis │ └── v1 │ │ └── apis.proto │ ├── batch │ └── v1 │ │ └── batch.proto │ ├── deployments │ └── v1 │ │ └── deployments.proto │ ├── http │ └── v1 │ │ └── http.proto │ ├── keyvalue │ └── v1 │ │ └── keyvalue.proto │ ├── kvstore │ └── v1 │ │ └── kvstore.proto │ ├── queues │ └── v1 │ │ └── queues.proto │ ├── resources │ └── v1 │ │ └── resources.proto │ ├── schedules │ └── v1 │ │ └── schedules.proto │ ├── secrets │ └── v1 │ │ └── secrets.proto │ ├── sql │ └── v1 │ │ └── sql.proto │ ├── storage │ └── v1 │ │ └── storage.proto │ ├── topics │ └── v1 │ │ └── topics.proto │ └── websockets │ └── v1 │ └── websockets.proto └── test ├── go.mod ├── go.sum └── matcher.go /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: nitrictech -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | # Description 6 | 7 | Include a summary of the change or which issue is fixed. Please also include any relevant context including any dependencies that are required for this change. 8 | 9 | Fixes # (issue) 10 | 11 | ## Type of change 12 | 13 | - [ ] Bug fix (non-breaking change which fixes an issue) 14 | - [ ] New feature (non-breaking change which adds functionality) 15 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 16 | - [ ] This change requires a documentation update 17 | 18 | # Testing 19 | 20 | Describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. 21 | -------------------------------------------------------------------------------- /.github/workflows/release-prod.yaml: -------------------------------------------------------------------------------- 1 | name: Production Release 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | # Bump the version 8 | version_bump: 9 | name: Bump Version and Create Release 10 | runs-on: ubuntu-latest 11 | outputs: 12 | version_id: ${{ steps.tag_version.outputs.new_tag }} 13 | upload_url: ${{ steps.create_release.outputs.upload_url }} 14 | steps: 15 | - uses: actions/checkout@v4 16 | with: 17 | fetch-depth: 0 18 | persist-credentials: false 19 | - id: semantic-release 20 | uses: cycjimmy/semantic-release-action@v4 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.NITRIC_BOT_TOKEN }} 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # IDE files 9 | .idea/ 10 | .vscode/ 11 | 12 | # Test binary, built with `go test -c` 13 | *.test 14 | 15 | # Output of the go coverage tool, specifically when used with LiteIDE 16 | *.out 17 | 18 | # Dependency directories (remove the comment below to include it) 19 | # vendor/ 20 | bin/ 21 | 22 | tools/bin 23 | tools/include 24 | tools/protoc*.zip 25 | tools/readme.txt 26 | 27 | *.coverprofile -------------------------------------------------------------------------------- /.releaserc.json: -------------------------------------------------------------------------------- 1 | { 2 | "branches": ["main"], 3 | "plugins": [ 4 | "@semantic-release/commit-analyzer", 5 | "@semantic-release/release-notes-generator", 6 | "@semantic-release/github" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Nitric Framework Code Owners 2 | 3 | # One of the following users are required to approve changes to the core nitric framework. 4 | 5 | * @jyecusch @tjholm -------------------------------------------------------------------------------- /cloud/aws/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | deploy/runtime-aws 3 | deploytf/runtime/runtime-aws 4 | common/runtime/runtime-aws -------------------------------------------------------------------------------- /cloud/aws/.golangci.yml: -------------------------------------------------------------------------------- 1 | run: 2 | timeout: "5m" 3 | go: 1.21 4 | 5 | linters: 6 | disable-all: true 7 | enable: 8 | - goimports 9 | - gofmt 10 | - govet 11 | - gofumpt 12 | - whitespace 13 | - staticcheck 14 | - ineffassign 15 | - unused 16 | - misspell 17 | - unconvert 18 | - errcheck 19 | - errorlint 20 | 21 | issues: 22 | exclude-dirs: 23 | - deploytf/generated 24 | - tools 25 | exclude-files: 26 | - tools/tools.go 27 | max-issues-per-linter: 0 28 | max-same-issues: 0 29 | 30 | linters-settings: 31 | govet: 32 | check-shadowing: false 33 | disable: 34 | # lambda gateway requires struct tag shadowing 35 | # for deserializing typed lambda events 36 | - structtag 37 | -------------------------------------------------------------------------------- /cloud/aws/cmd/runtime/README.md: -------------------------------------------------------------------------------- 1 | # Nitric plugins for AWS 2 | 3 | ## Development 4 | 5 | ### Requirements 6 | - Git 7 | - Nitric Project 8 | - Golang 9 | - Make 10 | - Docker 11 | 12 | ### Getting Started 13 | 14 | ### Building Static Server Image 15 | From the repository root run 16 | ```bash 17 | make aws-docker-static 18 | ``` 19 | 20 | ### Building Plugin Images 21 | 22 | > __Note:__ Prior to building these plugins, the nitric pluggable server image must be built for local development 23 | 24 | 25 | Alpine Linux 26 | ```bash 27 | make aws-docker-alpine 28 | ``` 29 | 30 | Debian 31 | ```bash 32 | make aws-docker-debian 33 | ``` 34 | 35 | > __Note:__ Separate distributions required between glibc/musl as dynamic linker is used for golang plugin support 36 | 37 | 38 | -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/api-url-rewrite.js: -------------------------------------------------------------------------------- 1 | function handler(event) { 2 | var request = event.request; 3 | var uri = request.uri; 4 | // Strip off the "/{api-type}/{name}" part of the path 5 | request.uri = uri.replace(/^\/[^\/]+\/[^\/]+/, ""); 6 | return request; 7 | } 8 | -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/codebuild-create-db.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | phases: 3 | build: 4 | commands: 5 | - echo "Creating database ${DB_NAME}" 6 | - export PGPASSWORD=${DB_MASTER_PASSWORD} 7 | - psql -h ${DB_CLUSTER_ENDPOINT} -U ${DB_MASTER_USERNAME} -d nitric -c "CREATE DATABASE \"${DB_NAME}\"" || echo "database ${DB_NAME} already exists" 8 | -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/codebuild-migrate-db.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | phases: 3 | build: 4 | commands: 5 | - cd %s 6 | - %s 7 | -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/scheduler-execution-permissions.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Action": [ 6 | "lambda:InvokeFunction" 7 | ], 8 | "Effect": "Allow", 9 | "Resource": "%s" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/scheduler-execution-role.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Effect": "Allow", 6 | "Principal": { 7 | "Service": "scheduler.amazonaws.com" 8 | }, 9 | "Action": "sts:AssumeRole" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/scheduler-input.json: -------------------------------------------------------------------------------- 1 | { 2 | "x-nitric-schedule": "%s" 3 | } -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/url-rewrite.tmpl.js: -------------------------------------------------------------------------------- 1 | function handler(event) { 2 | var request = event.request; 3 | var uri = request.uri; 4 | var basePath = "{{.BasePath}}"; 5 | 6 | // First apply base path removal if needed 7 | if ( 8 | basePath !== "/" && 9 | (uri === basePath || uri.startsWith(basePath + "/")) 10 | ) { 11 | // Inject a custom header to isolate cache keys 12 | request.headers["x-nitric-cache-key"] = { value: basePath }; 13 | 14 | uri = uri.replace(new RegExp("^" + basePath + "[/]*"), "/"); 15 | } 16 | 17 | // Then append index.html to the uri if it is a directory 18 | if (!uri.includes(".")) { 19 | // TODO inject root document value instead of hardcoding 20 | uri = uri.endsWith("/") ? uri + "index.html" : uri + "/index.html"; 21 | } 22 | 23 | request.uri = uri; 24 | 25 | return request; 26 | } 27 | -------------------------------------------------------------------------------- /cloud/aws/deploy/embeds/ws-url-rewrite.js: -------------------------------------------------------------------------------- 1 | function handler(event) { 2 | var request = event.request; 3 | 4 | request.uri = "/ws"; 5 | 6 | return request; 7 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/api/outputs.tf: -------------------------------------------------------------------------------- 1 | output "endpoint" { 2 | value = aws_apigatewayv2_api.api_gateway.api_endpoint 3 | } 4 | 5 | output "arn" { 6 | value = aws_apigatewayv2_api.api_gateway.arn 7 | } 8 | 9 | output "id" { 10 | value = aws_apigatewayv2_api.api_gateway.id 11 | } 12 | 13 | output "stage_name" { 14 | value = aws_apigatewayv2_stage.stage.name 15 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/api/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the API Gateway" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the stack" 8 | type = string 9 | } 10 | 11 | variable "spec" { 12 | description = "Open API spec" 13 | type = string 14 | } 15 | 16 | variable "target_lambda_functions" { 17 | description = "The names of the target lambda functions" 18 | type = map(string) 19 | } 20 | 21 | variable "domain_names" { 22 | description = "A set of each domain name." 23 | type = set(string) 24 | } 25 | 26 | variable "zone_ids" { 27 | description = "The id of the hosted zone mapped to the domain name." 28 | type = map(string) 29 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/bucket/outputs.tf: -------------------------------------------------------------------------------- 1 | output "bucket_arn" { 2 | description = "The ARN of the deployed bucket" 3 | value = aws_s3_bucket.bucket.arn 4 | } 5 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/bucket/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "The name of the bucket. This must be globally unique." 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } 10 | 11 | variable "notification_targets" { 12 | description = "The notification target configurations" 13 | type = map(object({ 14 | arn = string 15 | prefix = string 16 | events = list(string) 17 | })) 18 | } 19 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/cdn/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/aws/deploytf/.nitric/modules/cdn/outputs.tf -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/cdn/scripts/api-url-rewrite.js: -------------------------------------------------------------------------------- 1 | function handler(event) { 2 | var request = event.request; 3 | var uri = request.uri; 4 | // Strip off the "/{api-type}/{name}" part of the path 5 | request.uri = uri.replace(/^\/[^\/]+\/[^\/]+/, ""); 6 | return request; 7 | } 8 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/http_proxy/outputs.tf: -------------------------------------------------------------------------------- 1 | output "arn" { 2 | value = aws_apigatewayv2_api.api_gateway.arn 3 | } 4 | 5 | output "endpoint" { 6 | value = aws_apigatewayv2_api.api_gateway.api_endpoint 7 | } 8 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/http_proxy/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the HTTP proxy gateway" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the stack" 8 | type = string 9 | } 10 | 11 | variable "target_lambda_function" { 12 | description = "The name or arn of the lambda function being proxied" 13 | type = string 14 | } 15 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/keyvalue/main.tf: -------------------------------------------------------------------------------- 1 | 2 | # Deploy an aws dynamodb table 3 | resource "aws_dynamodb_table" "table" { 4 | name = var.kvstore_name 5 | attribute { 6 | name = "_pk" 7 | type = "S" 8 | } 9 | attribute { 10 | name = "_sk" 11 | type = "S" 12 | } 13 | hash_key = "_pk" 14 | range_key = "_sk" 15 | billing_mode = "PAY_PER_REQUEST" 16 | tags = { 17 | "x-nitric-${var.stack_id}-name" = var.kvstore_name 18 | "x-nitric-${var.stack_id}-type" = "kvstore" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/keyvalue/outputs.tf: -------------------------------------------------------------------------------- 1 | output "kv_arn" { 2 | description = "The ARN of the deployed dynamodb table." 3 | value = aws_dynamodb_table.table.arn 4 | } 5 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/keyvalue/variables.tf: -------------------------------------------------------------------------------- 1 | variable "kvstore_name" { 2 | description = "The name of the kv store." 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } 10 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/parameter/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/aws/deploytf/.nitric/modules/parameter/outputs.tf -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/parameter/variables.tf: -------------------------------------------------------------------------------- 1 | variable "parameter_name" { 2 | description = "The name of the parameter" 3 | type = string 4 | } 5 | 6 | variable "access_role_names" { 7 | description = "The names of the roles that can access the parameter" 8 | type = set(string) 9 | } 10 | 11 | variable "parameter_value" { 12 | description = "The text value of the parameter" 13 | type = string 14 | } 15 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/policy/main.tf: -------------------------------------------------------------------------------- 1 | # Create a role policy attachment for each provided principal 2 | 3 | resource "aws_iam_role_policy" "policy" { 4 | for_each = var.principals 5 | role = each.value 6 | policy = jsonencode({ 7 | Version = "2012-10-17" 8 | Statement = { 9 | Effect = "Allow" 10 | Action = var.actions 11 | Resource = var.resources 12 | } 13 | }) 14 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/policy/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/aws/deploytf/.nitric/modules/policy/outputs.tf -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/policy/variables.tf: -------------------------------------------------------------------------------- 1 | variable "principals" { 2 | description = "principals (roles) to apply the policies to" 3 | type = map(string) 4 | } 5 | 6 | variable "actions" { 7 | description = "actions to allow" 8 | type = set(string) 9 | } 10 | 11 | variable "resources" { 12 | description = "resources to apply the policies to" 13 | type = set(string) 14 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/queue/main.tf: -------------------------------------------------------------------------------- 1 | 2 | # Deploy an SQS queue 3 | resource "aws_sqs_queue" "queue" { 4 | name = var.queue_name 5 | tags = { 6 | "x-nitric-${var.stack_id}-name" = var.queue_name 7 | "x-nitric-${var.stack_id}-type" = "queue" 8 | } 9 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/queue/outputs.tf: -------------------------------------------------------------------------------- 1 | output "queue_arn" { 2 | description = "The ARN of the deployed queue" 3 | value = aws_sqs_queue.queue.arn 4 | } 5 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/queue/variables.tf: -------------------------------------------------------------------------------- 1 | variable "queue_name" { 2 | description = "The name of the queue" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } 10 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/rds/variables.tf: -------------------------------------------------------------------------------- 1 | variable "vpc_id" { 2 | type = string 3 | description = "the VPC to assign to the RDS cluster" 4 | } 5 | 6 | variable "private_subnet_ids" { 7 | type = list(string) 8 | description = "private subnets to assign to the RDS cluster" 9 | } 10 | 11 | variable "min_capacity" { 12 | type = number 13 | description = "the minimum capacity of the RDS cluster" 14 | } 15 | 16 | variable "max_capacity" { 17 | type = number 18 | description = "the maximum capacity of the RDS cluster" 19 | } 20 | 21 | variable "stack_id" { 22 | type = string 23 | description = "The nitric stack ID" 24 | } 25 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/schedule/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/aws/deploytf/.nitric/modules/schedule/outputs.tf -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/schedule/variables.tf: -------------------------------------------------------------------------------- 1 | variable "schedule_name" { 2 | description = "The name of the schedule" 3 | type = string 4 | } 5 | 6 | variable "target_lambda_arn" { 7 | description = "The ARN of the target lambda function" 8 | type = string 9 | } 10 | 11 | variable "schedule_expression" { 12 | description = "The schedule expression" 13 | type = string 14 | } 15 | 16 | variable "schedule_timezone" { 17 | description = "The timezone for the schedule" 18 | type = string 19 | } 20 | 21 | variable "stack_id" { 22 | description = "The ID of the Nitric stack" 23 | type = string 24 | } 25 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/secret/main.tf: -------------------------------------------------------------------------------- 1 | 2 | # Create a new AWS secret manager secret 3 | resource "aws_secretsmanager_secret" "secret" { 4 | # Only create a new secret if we're not reusing an existing one 5 | count = var.existing_secret_arn == "" ? 1 : 0 6 | 7 | name = var.secret_name 8 | tags = { 9 | "x-nitric-${var.stack_id}-name" = var.secret_name 10 | "x-nitric-${var.stack_id}-type" = "secret" 11 | } 12 | } -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/secret/outputs.tf: -------------------------------------------------------------------------------- 1 | output "secret_arn" { 2 | description = "The ARN of the secret" 3 | value = var.existing_secret_arn == "" ? one(aws_secretsmanager_secret.secret).arn : var.existing_secret_arn 4 | } 5 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/secret/variables.tf: -------------------------------------------------------------------------------- 1 | variable "secret_name" { 2 | description = "The name of the secret." 3 | type = string 4 | } 5 | 6 | variable "existing_secret_arn" { 7 | description = "The ARN of the existing secret to import" 8 | type = string 9 | default = "" 10 | } 11 | 12 | variable "stack_id" { 13 | description = "The ID of the Nitric stack" 14 | type = string 15 | } 16 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/service/outputs.tf: -------------------------------------------------------------------------------- 1 | output "lambda_arn" { 2 | value = aws_lambda_function.function.arn 3 | } 4 | 5 | output "lambda_function_name" { 6 | value = aws_lambda_function.function.function_name 7 | } 8 | 9 | output "invoke_arn" { 10 | value = aws_lambda_function.function.invoke_arn 11 | } 12 | 13 | output "role_arn" { 14 | value = aws_iam_role.role.arn 15 | } 16 | 17 | output "role_name" { 18 | value = aws_iam_role.role.name 19 | } 20 | -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/sql/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/aws/deploytf/.nitric/modules/sql/outputs.tf -------------------------------------------------------------------------------- /cloud/aws/deploytf/.nitric/modules/stack/main.tf: -------------------------------------------------------------------------------- 1 | resource "random_string" "id" { 2 | length = 8 3 | special = false 4 | upper = false 5 | } 6 | 7 | resource "aws_resourcegroups_group" "group" { 8 | name = "${var.project_name}-${var.stack_name}-${random_string.id.result}" 9 | 10 | resource_query { 11 | query = < 2 | 3 | 4 | 5 | {{.RequiredClaim}} 6 | 7 | 8 | -------------------------------------------------------------------------------- /cloud/azure/deploy/embeds/api-policy-template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | @(context.Request.Headers.GetValueOrDefault("Authorization", "")) 6 | 7 | 8 | {{.ExtraPolicies}} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # cdktf and terraform ignores 3 | .terraform 4 | cdktf.out 5 | cdktf.log 6 | *terraform.*.tfstate* 7 | 8 | # src https://github.com/github/gitignore/blob/master/Go.gitignore 9 | # Binaries for programs and plugins 10 | *.exe 11 | *.exe~ 12 | *.dll 13 | *.so 14 | *.dylib 15 | 16 | # Test binary, built with `go test -c` 17 | *.test 18 | 19 | # Output of the go coverage tool, specifically when used with LiteIDE 20 | *.out 21 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/api/outputs.tf: -------------------------------------------------------------------------------- 1 | output "api_gateway_url" { 2 | value = azurerm_api_management.api.gateway_url 3 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/bucket/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/.nitric/modules/bucket/outputs.tf -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/bucket/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the bucket" 3 | type = string 4 | } 5 | 6 | variable "storage_account_id" { 7 | description = "The id of the storage account" 8 | type = string 9 | } 10 | 11 | variable "listeners" { 12 | description = "The list of listeners to notify" 13 | type = map(object({ 14 | url = string 15 | active_directory_app_id_or_uri = string 16 | active_directory_tenant_id = string 17 | event_token = string 18 | event_type = list(string) 19 | })) 20 | } 21 | 22 | variable "tags" { 23 | description = "The tags to apply to the bucket" 24 | type = map(string) 25 | nullable = true 26 | } 27 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/cdn/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cdn_url" { 2 | description = "The URL of the endpoint" 3 | value = "https://${azurerm_cdn_frontdoor_endpoint.cdn_endpoint.host_name}" 4 | } 5 | 6 | output "cdn_frontdoor_profile_id" { 7 | description = "The ID of the CDN profile" 8 | value = azurerm_cdn_frontdoor_profile.cdn_profile.id 9 | } 10 | 11 | output "cdn_frontdoor_api_rule_set_id" { 12 | description = "The ID of the API rewrite rule set" 13 | value = one(azurerm_cdn_frontdoor_rule_set.api_ruleset) != null ? one(azurerm_cdn_frontdoor_rule_set.api_ruleset).id : null 14 | } 15 | 16 | output "cdn_frontdoor_default_rule_set_id" { 17 | description = "The ID of the default rule set" 18 | value = azurerm_cdn_frontdoor_rule_set.default_ruleset.id 19 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/cdn_api_rewrites/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the api" 3 | type = string 4 | } 5 | 6 | variable "api_host_name" { 7 | description = "The host name of the api" 8 | type = string 9 | } 10 | 11 | variable "cdn_frontdoor_profile_id" { 12 | description = "The id of the cdn frontdoor profile to use for the cdn" 13 | type = string 14 | } 15 | 16 | variable "cdn_frontdoor_rule_set_id" { 17 | description = "The id of the default cdn frontdoor rule set to use for the cdn" 18 | type = string 19 | } 20 | 21 | variable "rule_order" { 22 | description = "The order of the rule to use for the cdn" 23 | type = number 24 | default = 1 25 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/http_proxy/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/.nitric/modules/http_proxy/outputs.tf -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/keyvalue/main.tf: -------------------------------------------------------------------------------- 1 | # Create a new azure storage table 2 | resource "azurerm_storage_table" "table" { 3 | # Normalize the name by removing hyphens 4 | name = replace(var.name, "-", "") 5 | storage_account_name = var.storage_account_name 6 | } 7 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/keyvalue/outputs.tf: -------------------------------------------------------------------------------- 1 | output "table_id" { 2 | value = azurerm_storage_table.table.id 3 | } 4 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/keyvalue/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the kv store" 3 | type = string 4 | } 5 | 6 | variable "storage_account_name" { 7 | description = "The name of the storage account" 8 | type = string 9 | } 10 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/policy/main.tf: -------------------------------------------------------------------------------- 1 | # Create a new Azure role assignment 2 | 3 | resource "azurerm_role_assignment" "role_assignment" { 4 | principal_id = var.service_principal_id 5 | principal_type = "ServicePrincipal" 6 | role_definition_id = var.role_definition_id 7 | scope = var.scope 8 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/policy/variables.tf: -------------------------------------------------------------------------------- 1 | variable "service_principal_id" { 2 | description = "The service principal id" 3 | type = string 4 | } 5 | 6 | variable "role_definition_id" { 7 | description = "The role definition id" 8 | type = string 9 | } 10 | 11 | variable "scope" { 12 | description = "The scope of the role assignment" 13 | type = string 14 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/queue/main.tf: -------------------------------------------------------------------------------- 1 | # Create a new azure storage queue 2 | resource "azurerm_storage_queue" "queue" { 3 | name = var.name 4 | storage_account_name = var.storage_account_name 5 | 6 | # metadata = var.tags 7 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/queue/outputs.tf: -------------------------------------------------------------------------------- 1 | output "queue_id" { 2 | value = azurerm_storage_queue.queue.id 3 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/queue/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "the name of the queue" 3 | type = string 4 | } 5 | 6 | variable "storage_account_name" { 7 | description = "the name of the storage account" 8 | type = string 9 | } 10 | 11 | variable "tags" { 12 | description = "the tags to apply to the queue" 13 | type = map(string) 14 | nullable = true 15 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/roles/variables.tf: -------------------------------------------------------------------------------- 1 | variable "resource_group_name" { 2 | type = string 3 | description = "The name of the resource group" 4 | } 5 | 6 | variable "stack_id" { 7 | type = string 8 | description = "The id of the stack" 9 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/schedule/main.tf: -------------------------------------------------------------------------------- 1 | # Create a new dapr component for a cron binding 2 | resource "azurerm_container_app_environment_dapr_component" "schedule" { 3 | name = var.name 4 | container_app_environment_id = var.container_app_environment_id 5 | component_type = "bindings.cron" 6 | version = "v1" 7 | 8 | metadata { 9 | name = "schedule" 10 | value = var.cron_expression 11 | } 12 | 13 | metadata { 14 | name = "route" 15 | value = "${var.target_event_token}/x-nitric-schedule/${var.name}" 16 | } 17 | 18 | scopes = [ var.target_app_id ] 19 | } 20 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/schedule/variables.tf: -------------------------------------------------------------------------------- 1 | variable "cron_expression" { 2 | description = "The cron expression for the schedule" 3 | type = string 4 | } 5 | 6 | variable "name" { 7 | description = "The name of the schedule" 8 | type = string 9 | } 10 | 11 | variable "container_app_environment_id" { 12 | description = "The container app environment id" 13 | type = string 14 | } 15 | 16 | variable "target_app_id" { 17 | description = "The target app id for the schedule" 18 | type = string 19 | } 20 | 21 | variable "target_event_token" { 22 | description = "The target event token for the schedule" 23 | type = string 24 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/sql/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/.nitric/modules/sql/outputs.tf -------------------------------------------------------------------------------- /cloud/azure/deploytf/.nitric/modules/website/outputs.tf: -------------------------------------------------------------------------------- 1 | 2 | output "uploaded_files" { 3 | description = "Map of uploaded files with their MD5 hashes" 4 | value = local.uploaded_files_md5 5 | } 6 | 7 | output "storage_account_web_host" { 8 | value = azurerm_storage_account.storage_website_account.primary_web_host 9 | } -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/api/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/api/jsii/api-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/api/jsii/api-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/api/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/bucket/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/bucket/jsii/bucket-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/bucket/jsii/bucket-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/bucket/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn/jsii/cdn-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/cdn/jsii/cdn-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_api_rewrites/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_api_rewrites/jsii/cdn_api_rewrites-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/cdn_api_rewrites/jsii/cdn_api_rewrites-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_api_rewrites/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_subsites/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_subsites/jsii/cdn_subsites-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/cdn_subsites/jsii/cdn_subsites-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/cdn_subsites/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/constraints.json: -------------------------------------------------------------------------------- 1 | { 2 | "cdktf": "0.20.8", 3 | "providers": {} 4 | } 5 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/http_proxy/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/http_proxy/jsii/http_proxy-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/http_proxy/jsii/http_proxy-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/http_proxy/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/keyvalue/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/keyvalue/jsii/keyvalue-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/keyvalue/jsii/keyvalue-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/keyvalue/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/policy/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/policy/jsii/policy-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/policy/jsii/policy-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/policy/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/queue/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/queue/jsii/queue-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/queue/jsii/queue-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/queue/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/roles/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/roles/jsii/roles-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/roles/jsii/roles-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/roles/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/schedule/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/schedule/jsii/schedule-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/schedule/jsii/schedule-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/schedule/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/service/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/service/jsii/service-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/service/jsii/service-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/service/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/sql/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/sql/jsii/sql-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/sql/jsii/sql-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/sql/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/stack/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/stack/jsii/stack-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/stack/jsii/stack-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/stack/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/topic/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/topic/jsii/topic-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/topic/jsii/topic-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/topic/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/versions.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/website/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/website/jsii/website-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/azure/deploytf/generated/website/jsii/website-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/azure/deploytf/generated/website/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/azure/lichen.yaml: -------------------------------------------------------------------------------- 1 | threshold: .90 2 | 3 | allow: 4 | - "MIT" 5 | - "Apache-2.0" 6 | - "BSD-2-Clause" 7 | - "BSD-3-Clause" 8 | -------------------------------------------------------------------------------- /cloud/common/.golangci.yml: -------------------------------------------------------------------------------- 1 | run: 2 | timeout: "5m" 3 | go: 1.21 4 | 5 | linters: 6 | disable-all: true 7 | enable: 8 | - goimports 9 | - gofmt 10 | - govet 11 | - gofumpt 12 | - whitespace 13 | - staticcheck 14 | - ineffassign 15 | - unused 16 | - misspell 17 | - unconvert 18 | - errcheck 19 | - errorlint 20 | 21 | issues: 22 | exclude-files: 23 | - tools/tools.go 24 | max-issues-per-linter: 0 25 | max-same-issues: 0 26 | 27 | linters-settings: 28 | govet: 29 | check-shadowing: false 30 | -------------------------------------------------------------------------------- /cloud/common/deploy/env/variables.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Nitric Technologies Pty Ltd. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package env 16 | 17 | import "github.com/nitrictech/nitric/core/pkg/env" 18 | 19 | var PORT = env.GetEnv("PORT", "50051") 20 | -------------------------------------------------------------------------------- /cloud/common/deploy/image/dummy.dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Nitric Technologies Pty Ltd. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ARG SOURCE_IMAGE 16 | 17 | FROM ${SOURCE_IMAGE} -------------------------------------------------------------------------------- /cloud/common/deploy/provider/runtime.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Nitric Technologies Pty Ltd. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package provider 16 | 17 | // A function that returns the runtime for a nitric provider 18 | type RuntimeProvider func() []byte 19 | -------------------------------------------------------------------------------- /cloud/common/deploy/pulumiversions.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Nitric Technologies Pty Ltd. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package deploy 16 | 17 | const ( 18 | PulumiDockerVersion = "4.5.6" 19 | PulumiRandomVersion = "4.14.0" 20 | ) 21 | -------------------------------------------------------------------------------- /cloud/common/deploy/telemetry/otel-collector.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | 6 | processors: 7 | 8 | extensions:{{range $val := .Extensions}} 9 | {{$val}}:{{end}} 10 | 11 | service: 12 | extensions:{{range $val := .Extensions}} 13 | - {{$val}}:{{end}} 14 | 15 | pipelines: 16 | traces: 17 | receivers: [otlp] 18 | exporters: [{{.TraceName}}] 19 | metrics: 20 | receivers: [otlp] 21 | exporters: [{{.MetricName}}] 22 | 23 | exporters: 24 | {{ .TraceName }}: {{ .TraceExporterConfig }} 25 | {{ if ne .MetricName .TraceName }}{{ .MetricName }}: {{ .MetricExporterConfig }}{{ end }} -------------------------------------------------------------------------------- /cloud/gcp/.gitignore: -------------------------------------------------------------------------------- 1 | deploy/runtime-gcp 2 | dist/ 3 | 4 | common/runtime/runtime-gcp -------------------------------------------------------------------------------- /cloud/gcp/.golangci.yml: -------------------------------------------------------------------------------- 1 | run: 2 | timeout: "5m" 3 | go: 1.21 4 | 5 | linters: 6 | disable-all: true 7 | enable: 8 | - goimports 9 | - gofmt 10 | - govet 11 | - gofumpt 12 | - whitespace 13 | # - staticcheck 14 | - ineffassign 15 | - unused 16 | - misspell 17 | - unconvert 18 | - errcheck 19 | - errorlint 20 | 21 | issues: 22 | exclude-files: 23 | - tools/tools.go 24 | exclude-dirs: 25 | - deploytf/generated 26 | max-issues-per-linter: 0 27 | max-same-issues: 0 28 | 29 | linters-settings: 30 | govet: 31 | check-shadowing: false 32 | -------------------------------------------------------------------------------- /cloud/gcp/.goreleaser.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | project_name: gcp 3 | release: 4 | prerelease: auto 5 | before: 6 | hooks: 7 | - go work sync 8 | - make predeploybin 9 | builds: 10 | - id: gcp 11 | env: 12 | - CGO_ENABLED=0 13 | binary: gcp 14 | main: ./cmd/deploy 15 | goos: 16 | - linux 17 | - windows 18 | - darwin 19 | goarch: 20 | - amd64 21 | - arm64 22 | archives: 23 | - name_template: >- 24 | {{ .ProjectName }}_ 25 | {{- tolower .Os }}_ 26 | {{- if eq .Arch "amd64" }}x86_64 27 | {{- else }}{{ tolower .Arch }}{{ end }} 28 | builds: 29 | - gcp 30 | format_overrides: 31 | - goos: windows 32 | format: zip 33 | checksum: 34 | name_template: "gcp_checksums.txt" 35 | snapshot: 36 | name_template: "{{ incpatch .Version }}-next" 37 | changelog: 38 | disable: true 39 | -------------------------------------------------------------------------------- /cloud/gcp/cmd/runtime/README.md: -------------------------------------------------------------------------------- 1 | # Nitric plugins for GCP 2 | 3 | ## Development 4 | 5 | ### Requirements 6 | - Git 7 | - Nitric Project 8 | - Golang 9 | - Make 10 | - Docker 11 | 12 | ### Getting Started 13 | 14 | ### Building Static Image 15 | From the repository root run 16 | ```bash 17 | make gcp-docker-static 18 | ``` 19 | 20 | ### Building Plugin Images 21 | 22 | 23 | > __Note:__ Prior to building these plugins, the nitric pluggable server image must be built for local development 24 | 25 | 26 | Alpine Linux 27 | ```bash 28 | make gcp-docker-alpine 29 | ``` 30 | 31 | Debian 32 | ```bash 33 | make gcp-docker-debian 34 | ``` 35 | 36 | > __Note:__ Separate distributions required between glibc/musl as dynamic linker is used for golang plugin support 37 | 38 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/api/outputs.tf: -------------------------------------------------------------------------------- 1 | output "endpoint" { 2 | value = "https://${google_api_gateway_gateway.gateway.default_hostname}" 3 | } 4 | 5 | output "region" { 6 | value = var.region 7 | } 8 | 9 | output gateway_id { 10 | value = google_api_gateway_gateway.gateway.gateway_id 11 | } 12 | 13 | output default_host { 14 | value = google_api_gateway_gateway.gateway.default_hostname 15 | } 16 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/api/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the API Gateway" 3 | type = string 4 | } 5 | 6 | variable "region" { 7 | description = "The region where the API Gateway will be created" 8 | type = string 9 | } 10 | 11 | variable "stack_id" { 12 | description = "The ID of the stack" 13 | type = string 14 | } 15 | 16 | variable "openapi_spec" { 17 | description = "The OpenAPI spec as a JSON string" 18 | type = string 19 | } 20 | 21 | variable "target_services" { 22 | description = "The map of target service names" 23 | type = map(string) 24 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/bucket/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | description = "The name of the deployed bucket" 3 | value = google_storage_bucket.bucket.name 4 | } 5 | 6 | output "bucket_location" { 7 | description = "The location of the bucket" 8 | value = google_storage_bucket.bucket.location 9 | } 10 | 11 | output "bucket_storage_class" { 12 | description = "The storage class of the bucket" 13 | value = google_storage_bucket.bucket.storage_class 14 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/bucket/variables.tf: -------------------------------------------------------------------------------- 1 | variable "bucket_name" { 2 | description = "The name of the bucket" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } 10 | 11 | variable "notification_targets" { 12 | description = "The notification target configurations" 13 | type = map(object({ 14 | name = string 15 | url = string 16 | event_token = string 17 | invoker_service_account_email = string 18 | prefix = string 19 | events = list(string) 20 | })) 21 | } 22 | 23 | variable "storage_class" { 24 | description = "The class of storage used to store the bucket's contents. This can be STANDARD, NEARLINE, COLDLINE, ARCHIVE, or MULTI_REGIONAL." 25 | type = string 26 | default = "STANDARD" 27 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/cdn/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/.nitric/modules/cdn/outputs.tf -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/http_proxy/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/.nitric/modules/http_proxy/outputs.tf -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/http_proxy/variables.tf: -------------------------------------------------------------------------------- 1 | variable "name" { 2 | description = "The name of the HTTP proxy gateway" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the stack" 8 | type = string 9 | } 10 | 11 | variable "target_service_url" { 12 | description = "The URL of the service being proxied" 13 | type = string 14 | } 15 | 16 | variable "invoker_email" { 17 | description = "The email of the service account that will invoke the API" 18 | type = string 19 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/keyvalue/readme.md: -------------------------------------------------------------------------------- 1 | KeyValue stores are created at runtime in GCP, so no Terraform module is required. -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/policy/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/.nitric/modules/policy/outputs.tf -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/queue/main.tf: -------------------------------------------------------------------------------- 1 | 2 | # Deploy a PubSub topic to serve as the queue 3 | resource "google_pubsub_topic" "queue" { 4 | name = "queue" 5 | labels = { 6 | "x-nitric-${var.stack_id}-name" = var.queue_name 7 | "x-nitric-${var.stack_id}-type" = "queue" 8 | } 9 | } 10 | 11 | # Create a pull subscription for the topic to emulate a queue 12 | resource "google_pubsub_subscription" "queue_subscription" { 13 | name = "${var.queue_name}-nitricqueue" 14 | topic = google_pubsub_topic.queue.name 15 | expiration_policy { 16 | # TODO: this is blank in the Pulumi provider - verify this is still correct 17 | ttl = "" 18 | } 19 | 20 | labels = { 21 | "x-nitric-${var.stack_id}-name" = var.queue_name 22 | "x-nitric-${var.stack_id}-type" = "queue" 23 | } 24 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/queue/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | description = "The name of the deployed queue." 3 | value = google_pubsub_subscription.queue_subscription.name 4 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/queue/variables.tf: -------------------------------------------------------------------------------- 1 | variable "queue_name" { 2 | description = "The name of the queue" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/roles/variables.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/.nitric/modules/roles/variables.tf -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/schedule/main.tf: -------------------------------------------------------------------------------- 1 | # Create a new cloud scheduler job 2 | resource "google_cloud_scheduler_job" "schedule" { 3 | name = var.schedule_name 4 | time_zone = var.schedule_timezone 5 | schedule = var.schedule_expression 6 | 7 | http_target { 8 | uri = "${var.target_service_url}/x-nitric-schedule/${var.schedule_name}?token=${var.service_token}" 9 | http_method = "POST" 10 | headers = { 11 | "Content-Type" = "application/json" 12 | } 13 | body = base64encode(jsonencode({ 14 | "schedule": var.schedule_name 15 | })) 16 | oidc_token { 17 | service_account_email = var.target_service_invoker_email 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/schedule/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/.nitric/modules/schedule/outputs.tf -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/secret/main.tf: -------------------------------------------------------------------------------- 1 | # Create a GCP Secret Manager secret 2 | resource "google_secret_manager_secret" "secret" { 3 | # project = var.project_id 4 | secret_id = "${var.stack_id}-${var.secret_name}" 5 | labels = { 6 | "x-nitric-${var.stack_id}-name" = var.secret_name 7 | "x-nitric-${var.stack_id}-type" = "secret" 8 | } 9 | 10 | replication { 11 | auto { 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/secret/outputs.tf: -------------------------------------------------------------------------------- 1 | output "name" { 2 | description = "The name of the deployed secret." 3 | value = google_secret_manager_secret.secret.name 4 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/secret/variables.tf: -------------------------------------------------------------------------------- 1 | variable "secret_name" { 2 | description = "The name of the secret." 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/service/outputs.tf: -------------------------------------------------------------------------------- 1 | output "service_endpoint" { 2 | value = google_cloud_run_v2_service.service.uri 3 | } 4 | 5 | output "service_account_email" { 6 | value = google_service_account.service_account.email 7 | } 8 | 9 | output "invoker_service_account_email" { 10 | value = google_service_account.invoker_service_account.email 11 | } 12 | 13 | output "event_token" { 14 | value = random_password.event_token.result 15 | } 16 | 17 | output "service_name" { 18 | value = google_cloud_run_v2_service.service.name 19 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/stack/outputs.tf: -------------------------------------------------------------------------------- 1 | output "stack_id" { 2 | value = random_id.stack_id.hex 3 | description = "A unique id for this deployment" 4 | } 5 | 6 | output "base_compute_role" { 7 | value = google_project_iam_custom_role.base_role.id 8 | description = "The base compute role to use for the service" 9 | } 10 | 11 | output "iam_roles" { 12 | value = module.iam_roles 13 | } 14 | 15 | output "container_registry_uri" { 16 | value = "${var.location}-docker.pkg.dev/${data.google_project.project.project_id}/${google_artifact_registry_repository.service-image-repo.name}" 17 | description = "The name of the container registry repository" 18 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/stack/variables.tf: -------------------------------------------------------------------------------- 1 | variable "stack_name" { 2 | description = "The name of the nitric stack" 3 | type = string 4 | } 5 | 6 | variable "location" { 7 | description = "The location to deploy the stack" 8 | type = string 9 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/topic/outputs.tf: -------------------------------------------------------------------------------- 1 | output "topic_name" { 2 | description = "The name of the topic." 3 | value = google_pubsub_topic.topic.name 4 | } 5 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/topic/variables.tf: -------------------------------------------------------------------------------- 1 | variable "topic_name" { 2 | description = "The name of the topic" 3 | type = string 4 | } 5 | 6 | variable "stack_id" { 7 | description = "The ID of the Nitric stack" 8 | type = string 9 | } 10 | 11 | variable "subscriber_services" { 12 | description = "The services to create subscriptions for" 13 | type = list(object({ 14 | name = string 15 | url = string 16 | invoker_service_account_email = string 17 | event_token = string 18 | })) 19 | } 20 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/.nitric/modules/website/outputs.tf: -------------------------------------------------------------------------------- 1 | output "bucket_name" { 2 | description = "The name of the bucket." 3 | value = google_storage_bucket.website_bucket.name 4 | } 5 | 6 | output "index_document" { 7 | description = "The index document for the bucket." 8 | value = one(google_storage_bucket.website_bucket.website).main_page_suffix 9 | } 10 | 11 | output "error_document" { 12 | description = "The error document for the bucket." 13 | value = one(google_storage_bucket.website_bucket.website).not_found_page 14 | } 15 | 16 | output "file_md5s" { 17 | description = "md5 values of the uploaded websites files" 18 | value = local.uploaded_files_md5 19 | } 20 | 21 | output "local_directory" { 22 | description = "The local directory to sync with the bucket." 23 | value = var.local_directory 24 | } -------------------------------------------------------------------------------- /cloud/gcp/deploytf/README.md: -------------------------------------------------------------------------------- 1 | # Nitric GCP Terraform Provider -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/api/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/api/jsii/api-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/api/jsii/api-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/api/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/bucket/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/bucket/jsii/bucket-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/bucket/jsii/bucket-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/bucket/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/cdn/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/cdn/jsii/cdn-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/cdn/jsii/cdn-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/cdn/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/constraints.json: -------------------------------------------------------------------------------- 1 | { 2 | "cdktf": "0.20.10", 3 | "providers": {} 4 | } 5 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/http_proxy/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/http_proxy/jsii/http_proxy-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/http_proxy/jsii/http_proxy-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/http_proxy/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/keyvalue/internal/types.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Nitric Technologies Pty Ltd. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package internal 16 | 17 | import ( 18 | "github.com/hashicorp/terraform-cdk-go/cdktf" 19 | ) 20 | 21 | type Type__cdktfTerraformModule = cdktf.TerraformModule 22 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/keyvalue/jsii/keyvalue-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/keyvalue/jsii/keyvalue-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/keyvalue/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/policy/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/policy/jsii/policy-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/policy/jsii/policy-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/policy/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/queue/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/queue/jsii/queue-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/queue/jsii/queue-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/queue/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/schedule/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/schedule/jsii/schedule-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/schedule/jsii/schedule-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/schedule/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/secret/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/secret/jsii/secret-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/secret/jsii/secret-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/secret/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/service/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/service/jsii/service-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/service/jsii/service-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/service/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/stack/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/stack/jsii/stack-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/stack/jsii/stack-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/stack/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/topic/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/topic/jsii/topic-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/topic/jsii/topic-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/topic/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/versions.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/website/internal/types.go: -------------------------------------------------------------------------------- 1 | package internal 2 | import ( 3 | "github.com/hashicorp/terraform-cdk-go/cdktf" 4 | ) 5 | type Type__cdktfTerraformModule = cdktf.TerraformModule 6 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/website/jsii/website-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/website/jsii/website-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/website/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/websocket/jsii/websocket-0.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/cloud/gcp/deploytf/generated/websocket/jsii/websocket-0.0.0.tgz -------------------------------------------------------------------------------- /cloud/gcp/deploytf/generated/websocket/version: -------------------------------------------------------------------------------- 1 | 0.0.0 2 | -------------------------------------------------------------------------------- /cloud/gcp/lichen.yaml: -------------------------------------------------------------------------------- 1 | threshold: .90 2 | 3 | allow: 4 | - "MIT" 5 | - "Apache-2.0" 6 | - "BSD-2-Clause" 7 | - "BSD-3-Clause" 8 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | status: 3 | project: 4 | default: 5 | target: auto 6 | threshold: 0.1% 7 | base: auto 8 | patch: 9 | default: 10 | target: 0% -------------------------------------------------------------------------------- /core/.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # IDE files 9 | .idea/ 10 | .vscode/ 11 | 12 | # Test binary, built with `go test -c` 13 | *.test 14 | 15 | # Output of the go coverage tool, specifically when used with LiteIDE 16 | *.out 17 | 18 | # Dependency directories (remove the comment below to include it) 19 | # vendor/ 20 | bin/ 21 | 22 | tools/bin 23 | tools/include 24 | tools/protoc*.zip 25 | tools/readme.txt 26 | 27 | *.coverprofile -------------------------------------------------------------------------------- /core/.golangci.yml: -------------------------------------------------------------------------------- 1 | run: 2 | timeout: "5m" 3 | go: 1.21 4 | 5 | linters: 6 | disable-all: true 7 | enable: 8 | - goimports 9 | - gofmt 10 | - govet 11 | - gofumpt 12 | - whitespace 13 | - staticcheck 14 | - ineffassign 15 | - unused 16 | - misspell 17 | - unconvert 18 | - errcheck 19 | - errorlint 20 | 21 | issues: 22 | exclude-files: 23 | - tools/tools.go 24 | max-issues-per-linter: 0 25 | max-same-issues: 0 26 | 27 | linters-settings: 28 | govet: 29 | check-shadowing: false 30 | -------------------------------------------------------------------------------- /core/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Launch", 6 | "type": "go", 7 | "request": "launch", 8 | "mode": "auto", 9 | "program": "${fileDirname}", 10 | "env": {}, 11 | "args": [] 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /core/lichen.yaml: -------------------------------------------------------------------------------- 1 | threshold: .90 2 | 3 | allow: 4 | - "MIT" 5 | - "Apache-2.0" 6 | - "BSD-2-Clause" 7 | - "BSD-3-Clause" 8 | -------------------------------------------------------------------------------- /core/pkg/workers/id.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Nitric Technologies Pty Ltd. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package workers 16 | 17 | import "github.com/google/uuid" 18 | 19 | func GenerateUniqueId() string { 20 | return uuid.New().String() 21 | } 22 | -------------------------------------------------------------------------------- /docs/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | 37 | .contentlayer 38 | 39 | old 40 | -------------------------------------------------------------------------------- /docs/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | yarn lint-staged 2 | -------------------------------------------------------------------------------- /docs/.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore build artifacts 2 | dist/ 3 | build/ 4 | out/ 5 | 6 | # Exclude third-party code 7 | node_modules/ 8 | vendor/ 9 | 10 | # Exclude configuration files 11 | .eslintrc 12 | .eslintignore 13 | 14 | # Skip binary files 15 | *.png 16 | *.jpg 17 | *.gif 18 | 19 | # Exclude version control directories 20 | .git/ 21 | .svn/ 22 | .hg/ 23 | -------------------------------------------------------------------------------- /docs/.puppeteerrc.cjs: -------------------------------------------------------------------------------- 1 | const isCI = !!process.env.VERCEL_ENV 2 | 3 | if (!isCI) { 4 | // just use the default configuration on non vercel CI environments 5 | return {} 6 | } 7 | 8 | /** 9 | * @type {import("puppeteer").Configuration} 10 | */ 11 | module.exports = { 12 | cacheDirectory: '/vercel/.cache/puppeteer', 13 | executablePath: 14 | '/vercel/.cache/puppeteer/chrome/linux-131.0.6778.204/chrome-linux64/chrome', 15 | chrome: { 16 | skipDownload: true, 17 | }, 18 | args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'], 19 | } 20 | -------------------------------------------------------------------------------- /docs/.spellcheckerrc.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - 'docs/**/*.{md,mdx}' 3 | dictionaries: 4 | - dictionary.txt 5 | quiet: true 6 | language: en-US 7 | frontmatter-keys: 8 | - description 9 | - title_seo 10 | plugins: 11 | - spell 12 | - syntax-urls 13 | - syntax-mentions 14 | - repeated-words 15 | - frontmatter 16 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | ## Nitric documentation 4 | 5 | Documentation for the [Nitric framework](https://github.com/nitrictech/nitric). 6 | 7 | Updates to the documentation will be included in the Nitric doc website located [here](https://nitric.io/docs). 8 | 9 | ## Generated CLI Command Docs 10 | 11 | Output for the CLI commands are automatically generated into `/src/assets` via the [collect-assets.js script](./scripts/collect-assets.js) and can be referenced in the mdx pages as seen [here](./docs/reference/cli.mdx). 12 | -------------------------------------------------------------------------------- /docs/chrome-dependencies.txt: -------------------------------------------------------------------------------- 1 | mesa-libgbm 2 | nss 3 | nspr 4 | at-spi2-atk 5 | cups-libs 6 | libdrm 7 | libXcomposite 8 | libXdamage 9 | libXext 10 | libXrandr 11 | libgbm 12 | libxcb 13 | alsa-lib 14 | atk 15 | gtk3 16 | pango 17 | libxkbcommon -------------------------------------------------------------------------------- /docs/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "src/styles/tailwind.css", 9 | "baseColor": "zinc", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /docs/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress' 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | baseUrl: 'http://localhost:3000', 6 | setupNodeEvents(on, config) { 7 | on('task', { 8 | log(message) { 9 | console.log(message) 10 | 11 | return null 12 | }, 13 | table(message) { 14 | console.table(message) 15 | 16 | return null 17 | }, 18 | }) 19 | }, 20 | experimentalMemoryManagement: true, 21 | }, 22 | }) 23 | -------------------------------------------------------------------------------- /docs/cypress/e2e/seo.cy.ts: -------------------------------------------------------------------------------- 1 | import * as pages from '../fixtures/pages.json' 2 | 3 | // redirects can go here 4 | const redirects = {} 5 | 6 | describe('canonical urls', () => { 7 | pages.forEach((page) => { 8 | it(`Should test page ${page} for correct canonical url`, () => { 9 | cy.visit(page) 10 | 11 | cy.get('link[rel="canonical"]').should('exist') 12 | 13 | cy.get('meta[property="og:url"]') 14 | .invoke('attr', 'content') 15 | .should('equal', `http://localhost:3000${redirects[page] || page}`) 16 | }) 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /docs/cypress/fixtures/pages.json: -------------------------------------------------------------------------------- 1 | ["/"] -------------------------------------------------------------------------------- /docs/cypress/support/e2e.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/e2e.ts is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | //import "cypress-fail-fast"; 19 | import 'cypress-axe' 20 | 21 | // Alternatively you can use CommonJS syntax: 22 | // require('./commands') 23 | -------------------------------------------------------------------------------- /docs/cypress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "target": "es5", 5 | "lib": ["esnext", "dom"], 6 | "types": ["cypress", "cypress-axe"], 7 | "resolveJsonModule": true 8 | }, 9 | "include": ["."] 10 | } -------------------------------------------------------------------------------- /docs/docs/providers/mappings/aws/keyvalue.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Key Value Stores to AWS' 3 | --- 4 | 5 | # AWS Resources - Key Value Store 6 | 7 | Nitric KV Stores are deployed to AWS using [Amazon DynamoDB](https://aws.amazon.com/dynamodb). 8 | 9 | ## AWS Resources 10 | 11 | Each Nitric Key Value Store will result in the creation of a DynamoDB Table. 12 | 13 | ## Deployment 14 | 15 | During deployment the Nitric CLI deploys your key/value stores: 16 | 17 | - Declared stores are deployed as DynamoDB tables 18 | - Appropriate partition and sort keys are set on the table to enable setting and retrieval features 19 | - IAM policies are setup enabling declared access by your Lambda Functions 20 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/aws/queues.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Queues to AWS' 3 | --- 4 | 5 | # AWS Resources - Queues 6 | 7 | Nitric Queues are deployed using [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/). 8 | 9 | ## AWS Resources 10 | 11 | The following resources are created when deploying queues to AWS: 12 | 13 | - SQS queues 14 | - IAM Policies 15 | 16 | ## Deployment 17 | 18 | During deployment the Nitric CLI creates your queues: 19 | 20 | - Each uniquely named queue declaration will be setup as a new SQS queue 21 | - Services provided with access to the queues will assigned policies using IAM to enable that access. 22 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/aws/secrets.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Secrets to AWS' 3 | --- 4 | 5 | # AWS Resources - Secrets 6 | 7 | Nitric Secrets are implemented in AWS using [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/). 8 | 9 | ## AWS Resources 10 | 11 | - Secrets Manager Secrets (at runtime) 12 | - IAM Policies 13 | 14 | ## Deployment 15 | 16 | AWS Secrets Manager is a service offered by AWS, there are no instances to deploy. As a result, the Nitric CLI only ensures the appropriate IAM policies and roles are in place to allow your Lambda Functions to access and store secrets. 17 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/aws/storage.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Storage to AWS' 3 | --- 4 | 5 | # AWS Resources - Storage 6 | 7 | Nitric Storage is deployed to AWS using [Amazon S3](https://aws.amazon.com/s3/). 8 | 9 | ## AWS Resources 10 | 11 | The following resources are created when deploying Storage Buckets to AWS: 12 | 13 | - S3 Buckets 14 | - IAM Policies and Permissions 15 | 16 | ## Deployment 17 | 18 | During deployment the Nitric CLI creates buckets for your stack: 19 | 20 | - Declared Buckets are created in S3 21 | - IAM policies are created enabling your Lambda Functions to access S3 objects 22 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/azure/keyvalue.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Key Value Stores to Azure' 3 | --- 4 | 5 | # Azure Resources - Key Value Stores 6 | 7 | Nitric Key Value Stores are deployed to Azure using [Azure Cosmos DB](https://azure.microsoft.com/en-us/services/cosmos-db/). 8 | 9 | ## Azure Resources 10 | 11 | The following resources are created when deploying Key Value Stores to Azure: 12 | 13 | - Azure Table storage 14 | - Azure Resource Group 15 | 16 | ## Deployment 17 | 18 | During deployment the Nitric CLI builds your Key Value Stores as follows: 19 | 20 | - The key value store definition and resource group are deployed using Azure Table storage. 21 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/azure/queues.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Queues to Azure' 3 | --- 4 | 5 | # Azure Resources - Queues 6 | 7 | Nitric Queues are deployed to Azure using [Azure Storage Queues](https://azure.microsoft.com/en-us/services/storage/queues/). 8 | 9 | ## Azure Resources 10 | 11 | The following resources are created when deploying Queues to Azure: 12 | 13 | - Storage Queue 14 | - Azure Resource Group 15 | 16 | ## Deployment 17 | 18 | During deployment the Nitric CLI builds your Queues will be built as follows: 19 | 20 | - The queue definition and resource group are deployed as a Storage Queue. 21 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/azure/schedules.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Schedules to Azure' 3 | --- 4 | 5 | # Azure Resources - Schedules 6 | 7 | Nitric schedules are deployed to Azure using a [Dapr schedule binding](https://docs.dapr.io/reference/components-reference/supported-bindings/cron/). 8 | 9 | ## Azure Resources 10 | 11 | The following resources are created when deploying Schedules to Azure: 12 | 13 | - Schedule Dapr Binding 14 | - Container App 15 | 16 | ## Deployment 17 | 18 | During deployment, your schedules will be provisioned as follows: 19 | 20 | - A dapr schedule binding will be configured for the container app. 21 | 22 | 23 | A minimum replication of 1 is set to the container app as there must be an 24 | active instance to receive events. 25 | 26 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/azure/storage.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Storage with Azure' 3 | --- 4 | 5 | # Azure Resources - Storage 6 | 7 | Nitric Storage are deployed to Azure using [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/). 8 | 9 | ## Azure Resources 10 | 11 | The following resources are created when deploying Storage to Azure: 12 | 13 | - Blob Container 14 | - Azure Resource Group 15 | 16 | ## Deployment 17 | 18 | 19 | Note: Azure Storage 'Containers' are synonymous with 'Buckets' in other cloud 20 | platforms. 21 | 22 | 23 | During deployment the Nitric CLI creates your Storage Containers: 24 | 25 | - Each Bucket declaration in your services are deployed as a Blob Container in Azure 26 | - Container Apps are configured to enable access to Storage Containers 27 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/keyvalue.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Key Value Stores to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Key Value Stores 6 | 7 | Nitric Key Value Stores are deployed to Google Cloud using [Firestore](https://cloud.google.com/firestore). 8 | 9 | ## Google Cloud Resources 10 | 11 | No resources are provisioned at deploy time, key value stores will be created as needed at runtime. 12 | 13 | ## Deployment 14 | 15 | During deployment, Nitric may deploy an App Engine application to your project if one does not already exist, this ensures the App Engine region of your Google Cloud project is set. 16 | 17 | This is required for firestore to operate. 18 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/queues.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Queues to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Queues 6 | 7 | Nitric queues are deployed using [PubSub](https://cloud.google.com/pubsub) topics with a single pull subscription when deploying to Google Cloud. 8 | 9 | ## Google Cloud Resources 10 | 11 | The following resources are created when deploying queues to Google Cloud: 12 | 13 | - PubSub topic 14 | - PubSub topic subscription (pull) 15 | 16 | ## Deployment 17 | 18 | During deployment, your queues will be provisioned as follows: 19 | 20 | - The queue is deployed as a PubSub topic. 21 | - The queue will have a single pull subscription created for it. 22 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/schedules.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Schedules to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Schedules 6 | 7 | Nitric schedules are deployed to Google Cloud using [Cloud Scheduler](https://cloud.google.com/scheduler). 8 | 9 | ## Google Cloud Resources 10 | 11 | The following resources are created when deploying Schedules to Google Cloud: 12 | 13 | - Cloud Schedule 14 | - Cloud Run 15 | 16 | ## Deployment 17 | 18 | During deployment, your schedules will be provisioned as follows: 19 | 20 | - A cloud run schedule will be setup to trigger the cloud run service that hosts your schedule. 21 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/secrets.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Secrets to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Secrets 6 | 7 | Nitric Secrets are deployed to Google Cloud using [Secret Manager](https://cloud.google.com/secret-manager). 8 | 9 | ## Google Cloud Resources 10 | 11 | - Secret Manager Secrets (at runtime) 12 | - IAM Policies 13 | 14 | ## Deployment 15 | 16 | Secret Manager is a service offered by Google Cloud, there are no instances to deploy. As a result, the Nitric CLI only ensures the appropriate IAM policies and roles are in place to allow your Cloud Run Functions to access and store secrets. 17 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/storage.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Storage to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Storage 6 | 7 | Nitric Storage is deployed to Google Cloud using [Cloud Storage](https://cloud.google.com/storage). 8 | 9 | ## Google Cloud Resources 10 | 11 | The following resources are created when deploying Storage to Google Cloud: 12 | 13 | - Storage Bucket 14 | 15 | ## Deployment 16 | 17 | During deployment, your buckets will be provisioned as follows: 18 | 19 | - Your bucket definitions will be deployed individually as storage buckets. 20 | -------------------------------------------------------------------------------- /docs/docs/providers/mappings/gcp/topics.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'How Nitric deploys Topics to Google Cloud' 3 | --- 4 | 5 | # Google Cloud Resources - Topics 6 | 7 | Nitric Topics are deployed to Google Cloud using [PubSub](https://cloud.google.com/pubsub). 8 | 9 | ## Google Cloud Resources 10 | 11 | The following resources are created when deploying Topics to Google Cloud: 12 | 13 | - PubSub Topic 14 | - PubSub Subscription (push) 15 | - Cloud Run (subscribers) 16 | 17 | ## Deployment 18 | 19 | During deployment, your topics will be provisioned as follows: 20 | 21 | - The topic definition and resource group are deployed as a PubSub topic 22 | - Cloud Run applications that subscribe will have a push subscription deployed for them 23 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/collection/collection-doc-delete.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Delete a document from a collection" 3 | --- 4 | 5 | # .NET - Collection.Doc.Delete() 6 | 7 | Delete a document from a collection. 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | using Nitric.Sdk.Resources; 12 | 13 | var profiles = Nitric.Collection("profiles").With(CollectionPermission.Reading); 14 | 15 | var drakesProfile = profiles.Doc("Drake Mallard"); 16 | 17 | drakesProfile.Delete(); 18 | 19 | Nitric.Run(); 20 | ``` 21 | 22 | ### See also 23 | 24 | - [Doc.Set()](./collection-doc-set) 25 | - [Doc.Get()](./collection-doc-get) 26 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/collection/collection-query-limit.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Limit the number of results returned by a query." 3 | --- 4 | 5 | # .NET - Collection.Query.Limit() 6 | 7 | Limit the number of results returned by a query. 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | using Nitric.Sdk.Resources; 12 | 13 | var profiles = Nitric.Collection("profiles").With(CollectionPermission.Reading); 14 | 15 | var profileQuery = profiles.Query().Limit(10); 16 | 17 | Nitric.Run(); 18 | ``` 19 | 20 | ## Parameters 21 | 22 | 23 | 24 | The limit to apply to the query. 25 | 26 | 27 | 28 | ### See also 29 | 30 | - [Query.PagingFrom()](./collection-query-pagingfrom) 31 | - [Query.Where()](./collection-query-where) 32 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/storage/bucket-file-delete.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Delete a file from a bucket." 3 | --- 4 | 5 | # .NET - Bucket.File.Delete() 6 | 7 | Delete a file from a bucket. 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | using Nitric.Sdk.Storage; 12 | 13 | var assets = Nitric.Bucket('assets').With(BucketPermission.Deleting); 14 | 15 | var logo = assets.File('images/logo.png'); 16 | 17 | logo.Delete(); 18 | 19 | Nitric.Run(); 20 | ``` 21 | 22 | ## Examples 23 | 24 | ### Delete a file 25 | 26 | ```csharp 27 | using Nitric.Sdk; 28 | using Nitric.Sdk.Storage; 29 | 30 | var assets = Nitric.Bucket('assets').With(BucketPermission.Deleting); 31 | 32 | var logo = assets.File('images/logo.png'); 33 | 34 | logo.Delete(); 35 | 36 | Nitric.Run(); 37 | ``` 38 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/storage/bucket-file-read.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Read the contents of a file from a bucket." 3 | --- 4 | 5 | # .NET - Bucket.File.Read() 6 | 7 | Read the contents of a file from a bucket. 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | using Nitric.Sdk.Storage; 12 | 13 | var assets = Nitric.Bucket('assets').With(BucketPermission.Reading); 14 | 15 | var logo = assets.File('images/logo.png'); 16 | 17 | var logoData = logo.Read(); 18 | 19 | Nitric.Run(); 20 | ``` 21 | 22 | ## Examples 23 | 24 | ### Read a file 25 | 26 | ```csharp 27 | using Nitric.Sdk; 28 | using Nitric.Sdk.Storage; 29 | 30 | var assets = Nitric.Bucket('assets').With(BucketPermission.Reading); 31 | 32 | var logo = assets.File('images/logo.png'); 33 | 34 | var logoData = logo.Read(); 35 | 36 | Nitric.Run(); 37 | ``` 38 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/topic/topic.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Creates a new Topic." 3 | --- 4 | 5 | # .NET - Topic() 6 | 7 | Creates a new Topic. 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | 12 | var updates = Nitric.Topic("updates"); 13 | 14 | Nitric.Run(); 15 | ``` 16 | 17 | ## Parameters 18 | 19 | 20 | 21 | The name of the topic to create. 22 | 23 | 24 | 25 | ## Examples 26 | 27 | ### Create a new topic 28 | 29 | ```csharp 30 | using Nitric.Sdk; 31 | 32 | var updates = Nitric.Topic("updates"); 33 | 34 | Nitric.Run(); 35 | ``` 36 | 37 | ## See also 38 | 39 | - [topic.Subscribe()](./topic-subscribe) 40 | - [topic.Publish()](./topic-publish) 41 | -------------------------------------------------------------------------------- /docs/docs/reference/csharp/v0/websocket/websocket-connection.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 .NET library - Get a reference to a websocket connection" 3 | --- 4 | 5 | # .NET - Websocket.Connection() 6 | 7 | Get a reference to a websocket connection 8 | 9 | ```csharp 10 | using Nitric.Sdk; 11 | 12 | var websocket = Nitric.Websocket("public"); 13 | 14 | websocket.Connection("D28BA458-BFF4-404A"); 15 | 16 | Nitric.Run(); 17 | ``` 18 | 19 | ## Parameters 20 | 21 | 22 | 23 | The ID of the connection. 24 | 25 | 26 | 27 | ### See also 28 | 29 | - [Connection().Send()](./connection-send) 30 | - [Connection().Close()](./connection-close) 31 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/collection/collection-doc-delete.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Delete a document from a collection" 3 | --- 4 | 5 | # Node.js - collection.doc.delete() 6 | 7 | Delete a document from a collection. 8 | 9 | ```javascript 10 | import { collection } from '@nitric/sdk' 11 | 12 | const profiles = collection('profiles').for('deleting') 13 | 14 | const drakesProfile = profiles.doc('Drake Mallard') 15 | 16 | await drakesProfile.delete() 17 | ``` 18 | 19 | ### See also 20 | 21 | - [doc.set()](./collection-doc-set) 22 | - [doc.get()](./collection-doc-get) 23 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/collection/collection-query-limit.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Limit the number of results returned by a query." 3 | --- 4 | 5 | # Node.js - collection.query.limit() 6 | 7 | Limit the number of results returned by a query. 8 | 9 | ```javascript 10 | import { collection } from '@nitric/sdk' 11 | 12 | const profiles = collection('profiles').for('reading') 13 | 14 | const profileQuery = profiles.query().limit(10) 15 | ``` 16 | 17 | ## Parameters 18 | 19 | 20 | 21 | The limit to apply to the query. 22 | 23 | 24 | 25 | ### See also 26 | 27 | - [query().pagingFrom()](./collection-query-pagingfrom) 28 | - [query().where()](./collection-query-where) 29 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/collection/collection-query.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Begins a new query on a Collection." 3 | --- 4 | 5 | # Node.js - collection.query() 6 | 7 | Begins a new query on a Collection. 8 | 9 | ```javascript 10 | import { collection } from '@nitric/sdk' 11 | 12 | const profiles = collection('profiles').for('reading') 13 | 14 | const profileQuery = profiles.query() 15 | ``` 16 | 17 | ### See also 18 | 19 | - Adding filters: [query().where()](./collection-query-where) 20 | - Limiting the results: [query().limit()](./collection-query-limit) 21 | - Streaming results: [query().stream()](./collection-query-stream) 22 | - Fetching results: [query().fetch()](./collection-query-fetch) 23 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/storage/bucket-file-delete.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Delete a file from a bucket." 3 | --- 4 | 5 | # Node.js - bucket.file.delete() 6 | 7 | Delete a file from a bucket. 8 | 9 | ```javascript 10 | import { bucket } from '@nitric/sdk' 11 | 12 | const assets = bucket('assets').for('deleting') 13 | 14 | const logo = assets.file('images/logo.png') 15 | 16 | await logo.delete() 17 | ``` 18 | 19 | ## Examples 20 | 21 | ### Delete a file 22 | 23 | ```javascript 24 | import { bucket } from '@nitric/sdk' 25 | 26 | const assets = bucket('assets').for('deleting') 27 | 28 | const logo = assets.file('images/logo.png') 29 | 30 | await logo.delete() 31 | ``` 32 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/storage/bucket-file-exists.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Determine if a file exists in a bucket." 3 | --- 4 | 5 | # Node.js - bucket.file.exists() 6 | 7 | Determine if a file exists in a bucket. 8 | 9 | This API method is available from Release v0.16.0 and later. 10 | 11 | ```javascript 12 | import { bucket } from '@nitric/sdk' 13 | 14 | const assets = bucket('assets').for('reading') 15 | 16 | const exists = await assets.file('images/logo.png').exists() 17 | ``` 18 | 19 | ## Examples 20 | 21 | ### Determine if a file exists 22 | 23 | ```javascript 24 | import { bucket } from '@nitric/sdk' 25 | 26 | const assets = bucket('assets').for('reading') 27 | 28 | const exists = await assets.file('images/logo.png').exists() 29 | ``` 30 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/storage/bucket-file-read.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Read the contents of a file from a bucket." 3 | --- 4 | 5 | # Node.js - bucket.file.read() 6 | 7 | Read the contents of a file from a bucket. 8 | 9 | ```javascript 10 | import { bucket } from '@nitric/sdk' 11 | 12 | const assets = bucket('assets').for('reading') 13 | 14 | const logo = assets.file('images/logo.png') 15 | 16 | const logoData = await logo.read() 17 | ``` 18 | 19 | ## Examples 20 | 21 | ### Read a file 22 | 23 | ```javascript 24 | import { bucket } from '@nitric/sdk' 25 | 26 | const assets = bucket('assets').for('reading') 27 | 28 | const logo = assets.file('images/logo.png') 29 | 30 | const logoData = await logo.read() 31 | ``` 32 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/topic/topic.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Creates a new Topic." 3 | --- 4 | 5 | # Node.js - topic() 6 | 7 | Creates a new Topic. 8 | 9 | ```javascript 10 | import { topic } from '@nitric/sdk' 11 | 12 | const updates = topic('updates') 13 | ``` 14 | 15 | ## Parameters 16 | 17 | 18 | 19 | The name of the topic to create. 20 | 21 | 22 | 23 | ## Examples 24 | 25 | ### Create a new topic 26 | 27 | ```javascript 28 | import { topic } from '@nitric/sdk' 29 | 30 | const updates = topic('updates') 31 | ``` 32 | 33 | ### See also 34 | 35 | - [topic.subscribe()](./topic-subscribe) 36 | - [topic.publish()](./topic-publish) 37 | -------------------------------------------------------------------------------- /docs/docs/reference/nodejs/v0/websocket/websocket.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Node.js library - Create Websockets with the Nitric Node.js SDK" 3 | --- 4 | 5 | # Node.js - websocket() 6 | 7 | Creates a new Websocket. 8 | 9 | ```javascript 10 | import { websocket } from '@nitric/sdk' 11 | 12 | const socket = websocket('socket') 13 | ``` 14 | 15 | ## Parameters 16 | 17 | 18 | 19 | The unique name of this Websocket within the app. Subsequent calls to 20 | `websocket()` with the same name will return the same object. 21 | 22 | 23 | 24 | ## Examples 25 | 26 | ### Create a Websocket 27 | 28 | ```javascript 29 | import { websocket } from '@nitric/sdk' 30 | 31 | const socket = websocket('socket') 32 | ``` 33 | -------------------------------------------------------------------------------- /docs/docs/reference/python/v0/collection/collection-doc-delete.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Python library - Delete a document from a collection." 3 | --- 4 | 5 | # Python - collection.doc.delete() 6 | 7 | Delete a document from a collection. 8 | 9 | ```python 10 | from nitric.resources import collection 11 | 12 | profiles = collection('profiles').allow('deleting') 13 | drakes_profile = profiles.doc('Drake Mallard') 14 | 15 | await drakes_profile.delete() 16 | ``` 17 | 18 | ## See also 19 | 20 | - [doc().set()](./collection-doc-set) 21 | - [doc().get()](./collection-doc-get) 22 | -------------------------------------------------------------------------------- /docs/docs/reference/python/v0/collection/collection-doc.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Python library - Get a reference to a document in the collection." 3 | --- 4 | 5 | # Python - collection.doc() 6 | 7 | Get a reference to a document in the collection. 8 | 9 | ```python 10 | from nitric.resources import collection 11 | 12 | profiles = collection('profiles').allow('reading','writing') 13 | drakes_profile = profiles.doc('Drake Mallard') 14 | ``` 15 | 16 | ## Parameters 17 | 18 | 19 | 20 | The key of the document to reference. 21 | 22 | 23 | 24 | ## See also 25 | 26 | - [doc().get()](./collection-doc-get) 27 | - [doc().set()](./collection-doc-set) 28 | - [doc().delete()](./collection-doc-delete) 29 | - [doc().collection()](./collection-doc-collection) 30 | -------------------------------------------------------------------------------- /docs/docs/reference/python/v0/collection/collection-query-limit.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Python library - Limit the number of results returned by a query." 3 | --- 4 | 5 | # Python - collection.query.limit() 6 | 7 | Limit the number of results returned by a query. 8 | 9 | ```python 10 | from nitric.resources import collection 11 | 12 | query = collection("profiles").allow('reading').query().limit(1000) 13 | ``` 14 | 15 | ## Parameters 16 | 17 | 18 | 19 | The limit to apply to the query. 20 | 21 | 22 | 23 | ## See also 24 | 25 | - [query().pagingFrom()](./collection-query-pagingfrom) 26 | - [query().where()](./collection-query-where) 27 | -------------------------------------------------------------------------------- /docs/docs/reference/python/v0/collection/collection-query.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Reference for Nitric's v0 Python library - Begins a new query on a Collection." 3 | --- 4 | 5 | # Python - collection.query() 6 | 7 | Begins a new query on a Collection. 8 | 9 | ```python 10 | from nitric.resources import collection 11 | 12 | profiles = collection('profiles').allow('reading') 13 | 14 | query = profiles.query() 15 | ``` 16 | 17 | ## See also 18 | 19 | - Adding filters: [query().where()](./collection-query-where) 20 | - Limiting the results: [query().limit()](./collection-query-limit) 21 | - Streaming results: [query().stream()](./collection-query-stream) 22 | - Fetching results: [query().fetch()](./collection-query-fetch) 23 | -------------------------------------------------------------------------------- /docs/lint-staged.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | '*.{js,jsx,mjs,ts,tsx,mts}': [ 3 | 'prettier --with-node-modules --ignore-path .prettierignore --write', 4 | 'eslint --fix', 5 | ], 6 | '*.{json,md,mdx,css,html,yml,yaml,scss}': [ 7 | 'prettier --with-node-modules --ignore-path .prettierignore --write', 8 | ], 9 | } 10 | -------------------------------------------------------------------------------- /docs/mdx-components.tsx: -------------------------------------------------------------------------------- 1 | import { type MDXComponents } from 'mdx/types' 2 | 3 | import * as mdxComponents from '@/components/mdx' 4 | 5 | export function useMDXComponents(components: MDXComponents) { 6 | return { 7 | ...components, 8 | ...mdxComponents, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docs/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /docs/prettier.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('prettier').Options} */ 2 | module.exports = { 3 | singleQuote: true, 4 | semi: false, 5 | plugins: ['prettier-plugin-tailwindcss'], 6 | } 7 | -------------------------------------------------------------------------------- /docs/prisma/migrations/20230622003153_init/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "Feedback" ( 3 | "id" SERIAL NOT NULL, 4 | "url" TEXT NOT NULL, 5 | "answer" TEXT NOT NULL, 6 | "label" TEXT NOT NULL, 7 | "ua" TEXT NOT NULL, 8 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 9 | 10 | CONSTRAINT "Feedback_pkey" PRIMARY KEY ("id") 11 | ); 12 | -------------------------------------------------------------------------------- /docs/prisma/migrations/20231115050520_add_comment/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Feedback" ADD COLUMN "comment" TEXT NOT NULL DEFAULT ''; 3 | -------------------------------------------------------------------------------- /docs/prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (i.e. Git) 3 | provider = "postgresql" -------------------------------------------------------------------------------- /docs/prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | // This is your Prisma schema file, 2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema 3 | 4 | generator client { 5 | provider = "prisma-client-js" 6 | } 7 | 8 | datasource db { 9 | provider = "postgresql" 10 | url = env("POSTGRES_PRISMA_URL") // uses connection pooling 11 | directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection 12 | } 13 | 14 | model Feedback { 15 | id Int @id @default(autoincrement()) 16 | url String 17 | answer String 18 | comment String @default("") 19 | label String 20 | ua String 21 | createdAt DateTime @default(now()) 22 | } 23 | -------------------------------------------------------------------------------- /docs/public/audio/guides/ai-podcast/dead-internet-podcast.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/audio/guides/ai-podcast/dead-internet-podcast.m4a -------------------------------------------------------------------------------- /docs/public/audio/guides/ai-podcast/sample-output.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/audio/guides/ai-podcast/sample-output.m4a -------------------------------------------------------------------------------- /docs/public/images/docs/aws-rg-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/aws-rg-screen.png -------------------------------------------------------------------------------- /docs/public/images/docs/aws-rg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/aws-rg.png -------------------------------------------------------------------------------- /docs/public/images/docs/az-rg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/az-rg.png -------------------------------------------------------------------------------- /docs/public/images/docs/dashboard-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/dashboard-architecture.png -------------------------------------------------------------------------------- /docs/public/images/docs/nitric-deployment-container-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/nitric-deployment-container-arch.png -------------------------------------------------------------------------------- /docs/public/images/docs/nitric-runtime-container-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/docs/nitric-runtime-container-arch.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-1/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-1/banner.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-1/dashboard-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-1/dashboard-storage.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-1/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-1/dashboard.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-1/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-1/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-1/g-instance-quota-increase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-1/g-instance-quota-increase.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-2/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-2/banner.png -------------------------------------------------------------------------------- /docs/public/images/guides/ai-podcast/part-2/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/ai-podcast/part-2/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/amazon-cognito/new_project_cognito.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/amazon-cognito/new_project_cognito.gif -------------------------------------------------------------------------------- /docs/public/images/guides/api-gateway-throttle/throttle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/api-gateway-throttle/throttle.png -------------------------------------------------------------------------------- /docs/public/images/guides/auth0/auth0-create-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/auth0/auth0-create-api.png -------------------------------------------------------------------------------- /docs/public/images/guides/auth0/auth0-get-audience.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/auth0/auth0-get-audience.png -------------------------------------------------------------------------------- /docs/public/images/guides/auth0/auth0-get-issuer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/auth0/auth0-get-issuer.png -------------------------------------------------------------------------------- /docs/public/images/guides/auth0/auth0-get-jwt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/auth0/auth0-get-jwt.png -------------------------------------------------------------------------------- /docs/public/images/guides/auth0/auth0-navigate-apis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/auth0/auth0-navigate-apis.png -------------------------------------------------------------------------------- /docs/public/images/guides/blender-render/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/blender-render/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/create-histogram/histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/create-histogram/histogram.png -------------------------------------------------------------------------------- /docs/public/images/guides/debugging/run-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/debugging/run-debug.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/add-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/add-connection.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/add-org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/add-org.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/add-project-existing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/add-project-existing.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/add-project-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/add-project-new.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/add-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/add-project.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/deploy-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/deploy-logs.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/deployed-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/deployed-stack.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/new-environment-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/new-environment-2.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/new-environment-variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/new-environment-variable.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/new-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/new-environment.png -------------------------------------------------------------------------------- /docs/public/images/guides/deploy/sign-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/deploy/sign-in.png -------------------------------------------------------------------------------- /docs/public/images/guides/flutter/favorites_page_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/flutter/favorites_page_final.png -------------------------------------------------------------------------------- /docs/public/images/guides/flutter/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/flutter/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/flutter/main_page_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/flutter/main_page_1.png -------------------------------------------------------------------------------- /docs/public/images/guides/flutter/main_page_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/flutter/main_page_2.png -------------------------------------------------------------------------------- /docs/public/images/guides/flutter/main_page_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/flutter/main_page_final.png -------------------------------------------------------------------------------- /docs/public/images/guides/google-cloud-build/trigger-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/google-cloud-build/trigger-config.png -------------------------------------------------------------------------------- /docs/public/images/guides/llama-rag/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/llama-rag/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-drizzle/step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-drizzle/step-1.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-drizzle/step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-drizzle/step-2.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-drizzle/step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-drizzle/step-3.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-drizzle/step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-drizzle/step-4.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-drizzle/step-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-drizzle/step-5.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-pgsql/step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-pgsql/step-1.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-pgsql/step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-pgsql/step-2.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-pgsql/step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-pgsql/step-3.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-pgsql/step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-pgsql/step-4.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-pgsql/step-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-pgsql/step-5.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-prisma/step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-prisma/step-1.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-prisma/step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-prisma/step-2.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-prisma/step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-prisma/step-3.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-prisma/step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-prisma/step-4.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-prisma/step-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-prisma/step-5.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/project_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/project_structure.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/sendgrid_createapikey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/sendgrid_createapikey.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/sendgrid_newsenderdetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/sendgrid_newsenderdetails.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step1.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step2.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createfunctionhook_step3.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createnewtable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createnewtable.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_createprofilestable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_createprofilestable.png -------------------------------------------------------------------------------- /docs/public/images/guides/nitric-and-supabase/supabase_insertrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/nitric-and-supabase/supabase_insertrow.png -------------------------------------------------------------------------------- /docs/public/images/guides/planetscale/connect-with-prisma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/planetscale/connect-with-prisma.png -------------------------------------------------------------------------------- /docs/public/images/guides/podcast-transcription/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/podcast-transcription/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/python-debugging/attachboth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/python-debugging/attachboth.png -------------------------------------------------------------------------------- /docs/public/images/guides/python-debugging/breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/python-debugging/breakpoint.png -------------------------------------------------------------------------------- /docs/public/images/guides/python-debugging/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/python-debugging/debug.png -------------------------------------------------------------------------------- /docs/public/images/guides/python-debugging/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/python-debugging/terminal.png -------------------------------------------------------------------------------- /docs/public/images/guides/realtime-messaging/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/realtime-messaging/dashboard.png -------------------------------------------------------------------------------- /docs/public/images/guides/realtime-messaging/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/realtime-messaging/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/s3-encryption/encrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/s3-encryption/encrypt.png -------------------------------------------------------------------------------- /docs/public/images/guides/s3-replicate/replication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/s3-replicate/replication.png -------------------------------------------------------------------------------- /docs/public/images/guides/scheduled-report/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/scheduled-report/trigger.png -------------------------------------------------------------------------------- /docs/public/images/guides/serverless-ai-api/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/serverless-ai-api/banner.png -------------------------------------------------------------------------------- /docs/public/images/guides/serverless-ai-api/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/serverless-ai-api/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/serverless-llama/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/serverless-llama/banner.png -------------------------------------------------------------------------------- /docs/public/images/guides/serverless-llama/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/serverless-llama/dashboard.png -------------------------------------------------------------------------------- /docs/public/images/guides/serverless-llama/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/serverless-llama/featured.png -------------------------------------------------------------------------------- /docs/public/images/guides/survey-application/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/survey-application/pdf.png -------------------------------------------------------------------------------- /docs/public/images/guides/survey-application/receipt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/survey-application/receipt.png -------------------------------------------------------------------------------- /docs/public/images/guides/survey-application/submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/survey-application/submit.png -------------------------------------------------------------------------------- /docs/public/images/guides/twilio/twilio-credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/twilio/twilio-credentials.png -------------------------------------------------------------------------------- /docs/public/images/guides/uptime/arch-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/uptime/arch-diagram.png -------------------------------------------------------------------------------- /docs/public/images/guides/uptime/called-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/uptime/called-post.png -------------------------------------------------------------------------------- /docs/public/images/guides/uptime/frontend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/uptime/frontend.png -------------------------------------------------------------------------------- /docs/public/images/guides/uptime/nitric-uptime-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/uptime/nitric-uptime-1.png -------------------------------------------------------------------------------- /docs/public/images/guides/uptime/nitric-uptime-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/uptime/nitric-uptime-2.png -------------------------------------------------------------------------------- /docs/public/images/guides/websites-vite-react/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/websites-vite-react/preview.png -------------------------------------------------------------------------------- /docs/public/images/guides/websocket-starter/first-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/websocket-starter/first-test.png -------------------------------------------------------------------------------- /docs/public/images/guides/websocket-starter/second-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/guides/websocket-starter/second-test.png -------------------------------------------------------------------------------- /docs/public/images/og_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/og_home.png -------------------------------------------------------------------------------- /docs/public/images/open_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/public/images/open_graph.png -------------------------------------------------------------------------------- /docs/src/app/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/src/app/apple-icon.png -------------------------------------------------------------------------------- /docs/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/src/app/favicon.ico -------------------------------------------------------------------------------- /docs/src/app/robots.ts: -------------------------------------------------------------------------------- 1 | import type { MetadataRoute } from 'next' 2 | 3 | export default function robots(): MetadataRoute.Robots { 4 | // staging robots.txt 5 | if (process.env.NEXT_PUBLIC_VERCEL_ENV !== 'production') { 6 | return { 7 | rules: { 8 | userAgent: '*', 9 | disallow: '/', 10 | }, 11 | } 12 | } 13 | 14 | // production robots.txt 15 | return { 16 | rules: { 17 | userAgent: '*', 18 | allow: '/', 19 | }, 20 | host: 'https://nitric.io/docs', 21 | sitemap: 'https://nitric.io/docs/sitemap.xml', 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /docs/src/assets/Sora-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nitrictech/nitric/9febb5bcc876f2f0d7e1c14daff06dab49ba658d/docs/src/assets/Sora-Bold.ttf -------------------------------------------------------------------------------- /docs/src/components/HomeHeader.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export const HomeHeader = ({ 4 | title, 5 | description, 6 | }: { 7 | title: string 8 | description: string 9 | }) => { 10 | return ( 11 | <> 12 |

{title}

13 |

{description}

14 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /docs/src/components/LanguageSwitch/index.ts: -------------------------------------------------------------------------------- 1 | export { LanguageSwitch } from './LanguageSwitch' 2 | -------------------------------------------------------------------------------- /docs/src/components/Prose.tsx: -------------------------------------------------------------------------------- 1 | import clsx from 'clsx' 2 | 3 | export function Prose({ 4 | as, 5 | className, 6 | ...props 7 | }: Omit, 'as' | 'className'> & { 8 | as?: T 9 | className?: string 10 | }) { 11 | let Component = as ?? 'div' 12 | 13 | return ( 14 | *)` is used to select all direct children without an increase in specificity like you'd get from just `& > *` 19 | // '[html_:where(&>*)]:mx-auto [html_:where(&>*)]:max-w-2xl [html_:where(&>*)]:lg:mx-[calc(50%-min(50%,theme(maxWidth.lg)))] [html_:where(&>*)]:lg:max-w-3xl', 20 | )} 21 | {...props} 22 | /> 23 | ) 24 | } 25 | -------------------------------------------------------------------------------- /docs/src/components/ShowIfLang.tsx: -------------------------------------------------------------------------------- 1 | import { cn } from '@/lib/utils' 2 | 3 | const classes: Record = { 4 | javascript: 'group-data-[current-lang="javascript"]/body:block', 5 | typescript: 'group-data-[current-lang="typescript"]/body:block', 6 | dart: 'group-data-[current-lang="dart"]/body:block', 7 | python: 'group-data-[current-lang="python"]/body:block', 8 | go: 'group-data-[current-lang="go"]/body:block', 9 | } 10 | 11 | export function ShowIfLang({ 12 | children, 13 | lang, 14 | }: { 15 | children: React.ReactNode 16 | lang: string 17 | }) { 18 | if (!classes[lang]) { 19 | console.error(`No class found for language in ShowIfLang: ${lang}`) 20 | return null 21 | } 22 | 23 | return
{children}
24 | } 25 | -------------------------------------------------------------------------------- /docs/src/components/code/Code.tsx: -------------------------------------------------------------------------------- 1 | import { RawCode } from 'codehike/code' 2 | import Pre from './Pre' 3 | import CodeContainer from './CodeContainer' 4 | import { meta } from './meta' 5 | import { highlight } from './highlight' 6 | 7 | export async function Code({ 8 | codeblock, 9 | hideBashPanel, 10 | }: { 11 | codeblock: RawCode 12 | isPanel?: boolean 13 | hideBashPanel?: boolean 14 | }) { 15 | const highlighted = await highlight(codeblock) 16 | 17 | const { title } = meta(codeblock) 18 | 19 | const isPanel = !!title 20 | 21 | return ( 22 | 23 |
28 |     
29 |   )
30 | }
31 | 


--------------------------------------------------------------------------------
/docs/src/components/code/CodeContainer.tsx:
--------------------------------------------------------------------------------
 1 | import React from 'react'
 2 | 
 3 | const CodeContainer: React.FC = ({ children }) => {
 4 |   return (
 5 |     
6 |
12 | {children} 13 |
14 |
15 | ) 16 | } 17 | 18 | export default CodeContainer 19 | -------------------------------------------------------------------------------- /docs/src/components/code/CodeTabs.client.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import React from 'react' 4 | import { TabProps, Tabs } from '../tabs/Tabs' 5 | import useLang from '@/hooks/useLang' 6 | import { Language, LANGUAGE_LABEL_MAP } from '@/lib/constants' 7 | 8 | export const CodeTabsClient = React.forwardRef( 9 | ({ children }, ref) => { 10 | const { currentLanguage, setCurrentLanguage } = useLang() 11 | 12 | return ( 13 | 16 | setCurrentLanguage(value.toLowerCase() as Language) 17 | } 18 | ref={ref} 19 | > 20 | {children} 21 | 22 | ) 23 | }, 24 | ) 25 | 26 | CodeTabsClient.displayName = 'CodeTabs' 27 | -------------------------------------------------------------------------------- /docs/src/components/code/CodeTabs.tsx: -------------------------------------------------------------------------------- 1 | import React, { Suspense } from 'react' 2 | import { TabProps, Tabs } from '../tabs/Tabs' 3 | import { CodeTabsClient } from './CodeTabs.client' 4 | 5 | export const CodeTabs: React.FC = ({ 6 | children, 7 | fallback, 8 | ...props 9 | }) => { 10 | return ( 11 | 12 | {children} 13 | 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/components/code/Diff.tsx: -------------------------------------------------------------------------------- 1 | import { AnnotationHandler, InnerLine, BlockAnnotation } from 'codehike/code' 2 | 3 | export const diff: AnnotationHandler = { 4 | name: 'diff', 5 | onlyIfAnnotated: true, 6 | transform: (annotation: BlockAnnotation) => { 7 | const color = annotation.query == '-' ? '#f85149' : '#3fb950' 8 | return [annotation, { ...annotation, name: 'mark', query: color }] 9 | }, 10 | Line: ({ annotation, ...props }) => ( 11 | <> 12 |
13 | {annotation?.query} 14 |
15 | 16 | 17 | ), 18 | } 19 | -------------------------------------------------------------------------------- /docs/src/components/code/ImportCode.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Code } from './Code' 3 | import type { RawCode } from 'codehike/code' 4 | import path from 'path' 5 | import fs from 'fs/promises' 6 | 7 | export const ImportCode: React.FC<{ file: string; meta: string }> = async ({ 8 | file, 9 | meta = '', 10 | }) => { 11 | try { 12 | const contents = await fs.readFile(path.join(process.cwd(), file), 'utf-8') 13 | 14 | const lang = path.extname(file).replace('.', '') 15 | 16 | const codeBlock: RawCode = { 17 | value: contents.trim(), 18 | lang, 19 | meta, 20 | } 21 | 22 | return 23 | } catch (error) { 24 | console.error('Error reading file for ImportCode:', error) 25 | return
Error reading file {file} for ImportCode
26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docs/src/components/code/annotations/classname.tsx: -------------------------------------------------------------------------------- 1 | import { AnnotationHandler } from 'codehike/code' 2 | 3 | export const className: AnnotationHandler = { 4 | name: 'className', 5 | Block: ({ annotation, children }) => ( 6 |
{children}
7 | ), 8 | Inline: ({ annotation, children }) => ( 9 | {children} 10 | ), 11 | } 12 | -------------------------------------------------------------------------------- /docs/src/components/code/annotations/fold.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | import { AnnotationHandler } from 'codehike/code' 3 | import { useState } from 'react' 4 | 5 | export const InlineFold: AnnotationHandler['Inline'] = ({ children }) => { 6 | const [folded, setFolded] = useState(true) 7 | if (!folded) { 8 | return children 9 | } 10 | return ( 11 | 14 | ) 15 | } 16 | 17 | export const fold: AnnotationHandler = { 18 | name: 'fold', 19 | Inline: InlineFold, 20 | } 21 | -------------------------------------------------------------------------------- /docs/src/components/code/annotations/token-transitions.tsx: -------------------------------------------------------------------------------- 1 | // from: https://codehike.org/docs/code/token-transitions 2 | 3 | import { AnnotationHandler, InnerToken } from 'codehike/code' 4 | import { SmoothPre } from './token-transitions.client' 5 | 6 | export const tokenTransitions: AnnotationHandler = { 7 | name: 'token-transitions', 8 | PreWithRef: SmoothPre, 9 | Token: (props) => ( 10 | 11 | ), 12 | } 13 | -------------------------------------------------------------------------------- /docs/src/components/code/highlight.ts: -------------------------------------------------------------------------------- 1 | import { highlight as codehikeHighlight, RawCode } from 'codehike/code' 2 | import CODE_THEME from './theme' 3 | 4 | const cleanCode = (code: RawCode) => { 5 | // Replace tabs with two spaces 6 | code.value = code.value.replace(/\t/g, ' ') 7 | 8 | return code 9 | } 10 | 11 | export const highlight = (data: RawCode) => 12 | codehikeHighlight(cleanCode(data), CODE_THEME) 13 | -------------------------------------------------------------------------------- /docs/src/components/code/meta.ts: -------------------------------------------------------------------------------- 1 | import { RawCode } from 'codehike/code' 2 | 3 | // extract meta from code block meta 4 | export const meta = (code: RawCode) => { 5 | const [base, title] = code.meta.trim().split('title:') 6 | 7 | return { 8 | base: base.trim(), 9 | title: title ? title.trim() : null, 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/src/components/guides/GuideFilters.tsx: -------------------------------------------------------------------------------- 1 | import React, { Suspense } from 'react' 2 | import { LanguageSwitch } from '../LanguageSwitch' 3 | import GuideFilterCheckbox from './GuideFilterCheckbox' 4 | 5 | interface Props { 6 | allTags: string[] 7 | } 8 | 9 | export const GuideFilters: React.FC = ({ allTags }) => { 10 | return ( 11 | <> 12 | 13 |
    14 | {allTags.map((tag) => ( 15 |
  • 16 | 17 | 18 | 19 |
  • 20 | ))} 21 |
22 | 23 | ) 24 | } 25 | -------------------------------------------------------------------------------- /docs/src/components/icons/BellIcon.tsx: -------------------------------------------------------------------------------- 1 | export function BellIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/BoltIcon.tsx: -------------------------------------------------------------------------------- 1 | export function BoltIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /docs/src/components/icons/BookIcon.tsx: -------------------------------------------------------------------------------- 1 | export function BookIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/CalendarIcon.tsx: -------------------------------------------------------------------------------- 1 | export function CalendarIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 22 | ) 23 | } 24 | -------------------------------------------------------------------------------- /docs/src/components/icons/CartIcon.tsx: -------------------------------------------------------------------------------- 1 | export function CartIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/components/icons/ChatBubbleIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ChatBubbleIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/CheckIcon.tsx: -------------------------------------------------------------------------------- 1 | export function CheckIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/ChevronRightLeftIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ChevronRightLeftIcon( 2 | props: React.ComponentPropsWithoutRef<'svg'>, 3 | ) { 4 | return ( 5 | 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /docs/src/components/icons/ClipboardIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ClipboardIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/CopyIcon.tsx: -------------------------------------------------------------------------------- 1 | export function CopyIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/DocumentIcon.tsx: -------------------------------------------------------------------------------- 1 | export function DocumentIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/EnvelopeIcon.tsx: -------------------------------------------------------------------------------- 1 | export function EnvelopeIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/FaceSmileIcon.tsx: -------------------------------------------------------------------------------- 1 | export function FaceSmileIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/FolderIcon.tsx: -------------------------------------------------------------------------------- 1 | export function FolderIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /docs/src/components/icons/LinkIcon.tsx: -------------------------------------------------------------------------------- 1 | export function LinkIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /docs/src/components/icons/ListIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ListIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/MagnifyingGlassIcon.tsx: -------------------------------------------------------------------------------- 1 | export function MagnifyingGlassIcon( 2 | props: React.ComponentPropsWithoutRef<'svg'>, 3 | ) { 4 | return ( 5 | 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/components/icons/MapPinIcon.tsx: -------------------------------------------------------------------------------- 1 | export function MapPinIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /docs/src/components/icons/PackageIcon.tsx: -------------------------------------------------------------------------------- 1 | export function PackageIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /docs/src/components/icons/PaperAirplaneIcon.tsx: -------------------------------------------------------------------------------- 1 | export function PaperAirplaneIcon( 2 | props: React.ComponentPropsWithoutRef<'svg'>, 3 | ) { 4 | return ( 5 | 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /docs/src/components/icons/PaperClipIcon.tsx: -------------------------------------------------------------------------------- 1 | export function PaperClipIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /docs/src/components/icons/ShapesIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ShapesIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/icons/ShirtIcon.tsx: -------------------------------------------------------------------------------- 1 | export function ShirtIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /docs/src/components/icons/SquaresPlusIcon.tsx: -------------------------------------------------------------------------------- 1 | export function SquaresPlusIcon(props: React.ComponentPropsWithoutRef<'svg'>) { 2 | return ( 3 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /docs/src/components/ui/collapsible.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import * as CollapsiblePrimitive from '@radix-ui/react-collapsible' 4 | 5 | const Collapsible = CollapsiblePrimitive.Root 6 | 7 | const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger 8 | 9 | const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent 10 | 11 | export { Collapsible, CollapsibleTrigger, CollapsibleContent } 12 | -------------------------------------------------------------------------------- /docs/src/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import * as React from 'react' 4 | import * as LabelPrimitive from '@radix-ui/react-label' 5 | import { cva, type VariantProps } from 'class-variance-authority' 6 | 7 | import { cn } from '@/lib/utils' 8 | 9 | const labelVariants = cva( 10 | 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', 11 | ) 12 | 13 | const Label = React.forwardRef< 14 | React.ElementRef, 15 | React.ComponentPropsWithoutRef & 16 | VariantProps 17 | >(({ className, ...props }, ref) => ( 18 | 23 | )) 24 | Label.displayName = LabelPrimitive.Root.displayName 25 | 26 | export { Label } 27 | -------------------------------------------------------------------------------- /docs/src/components/ui/subheading.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { cn } from '@/lib/utils' 3 | 4 | type HeadingProps = React.HTMLAttributes 5 | 6 | export const Subheading: React.FC = ({ 7 | className, 8 | children, 9 | ...props 10 | }) => { 11 | return ( 12 |

16 | {children} 17 |

18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /docs/src/config/types.ts: -------------------------------------------------------------------------------- 1 | export interface BaseNavItem { 2 | title: string 3 | icon?: React.ComponentType<{ className?: string }> 4 | } 5 | 6 | export interface NavItem extends BaseNavItem { 7 | href: string 8 | items?: NavItem[] 9 | breadcrumbRoot?: boolean 10 | } 11 | 12 | export interface NavGroup extends BaseNavItem { 13 | items: NavEntry[] 14 | } 15 | 16 | export type NavEntry = NavItem | NavGroup 17 | -------------------------------------------------------------------------------- /docs/src/images/logos/dart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/images/logos/ruby copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /docs/src/images/logos/ruby.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /docs/src/images/logos/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/src/lib/remToPx.ts: -------------------------------------------------------------------------------- 1 | export function remToPx(remValue: number) { 2 | let rootFontSize = 3 | typeof window === 'undefined' 4 | ? 16 5 | : parseFloat(window.getComputedStyle(document.documentElement).fontSize) 6 | 7 | return remValue * rootFontSize 8 | } 9 | -------------------------------------------------------------------------------- /docs/src/lib/stargazers.ts: -------------------------------------------------------------------------------- 1 | const DEFAULT_STARGAZERS = 1250 2 | 3 | export const getStarGazers = async (): Promise => { 4 | try { 5 | // on next < 15.x fetch will force-cache by default 6 | const response = await fetch( 7 | 'https://api.github.com/repos/nitrictech/nitric', 8 | ) 9 | if (!response.ok) { 10 | console.error('Error fetching star count:', response.statusText) 11 | 12 | return DEFAULT_STARGAZERS 13 | } 14 | 15 | const repoData = await response.json() 16 | return repoData.stargazers_count 17 | } catch (e) { 18 | console.error('Error fetching star count:', e) 19 | return DEFAULT_STARGAZERS 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /docs/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from 'clsx' 2 | import { twMerge } from 'tailwind-merge' 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /docs/src/mdx/mdx-options.mjs: -------------------------------------------------------------------------------- 1 | import { recmaPlugins } from './recma.mjs' 2 | import { rehypePlugins } from './rehype.mjs' 3 | import { remarkPlugins } from './remark.mjs' 4 | import { recmaCodeHike, remarkCodeHike } from 'codehike/mdx' 5 | 6 | /** @type {import('codehike/mdx').CodeHikeConfig} */ 7 | const chConfig = { 8 | components: { code: 'Code' }, 9 | } 10 | 11 | export const mdxOptions = { 12 | remarkPlugins: [...remarkPlugins, [remarkCodeHike, chConfig]], 13 | rehypePlugins, 14 | recmaPlugins: [...recmaPlugins, [recmaCodeHike, chConfig]], 15 | jsx: true, 16 | } 17 | -------------------------------------------------------------------------------- /docs/src/mdx/recma.mjs: -------------------------------------------------------------------------------- 1 | import { mdxAnnotations } from 'mdx-annotations' 2 | 3 | export const recmaPlugins = [mdxAnnotations.recma] 4 | -------------------------------------------------------------------------------- /docs/src/styles/mermaid.css: -------------------------------------------------------------------------------- 1 | svg[id^='mermaid-svg-'] .nodeLabel, 2 | svg[id^='mermaid-svg-'] .edgeLabel, 3 | svg[id^='mermaid-svg-'] tspan { 4 | @apply text-base; 5 | } 6 | 7 | svg[id^='mermaid-svg-'] .edgeLabel { 8 | @apply py-1; 9 | } 10 | -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "bundler", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [ 18 | { 19 | "name": "next" 20 | } 21 | ], 22 | "baseUrl": ".", 23 | "paths": { 24 | "@/*": ["./src/*"], 25 | "@/content": ["./.contentlayer/generated"] 26 | } 27 | }, 28 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 29 | "exclude": ["node_modules", "cypress"] 30 | } 31 | -------------------------------------------------------------------------------- /docs/types.d.ts: -------------------------------------------------------------------------------- 1 | import { type SearchOptions } from 'flexsearch' 2 | 3 | declare module '@/mdx/search.mjs' { 4 | export type Result = { 5 | url: string 6 | title: string 7 | pageTitle?: string 8 | } 9 | 10 | export function search(query: string, options?: SearchOptions): Array 11 | } 12 | -------------------------------------------------------------------------------- /docs/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildCommand": "yarn build", 3 | "installCommand": "dnf install -y $(cat chrome-dependencies.txt) && yarn install && npx browsers install chrome@131.0.6778.204 --path /vercel/.cache/puppeteer", 4 | "framework": "nextjs" 5 | } 6 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # Nitric Examples 2 | 3 | 👉 View examples at https://github.com/nitrictech/examples 4 | -------------------------------------------------------------------------------- /go.work: -------------------------------------------------------------------------------- 1 | go 1.23.1 2 | 3 | toolchain go1.23.5 4 | 5 | use ( 6 | ./cloud/aws 7 | ./cloud/azure 8 | ./cloud/common 9 | ./cloud/gcp 10 | ./core 11 | ./test 12 | ) 13 | -------------------------------------------------------------------------------- /test/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/nitrictech/nitric/test 2 | 3 | go 1.21.3 4 | 5 | require ( 6 | github.com/golang/mock v1.6.0 7 | google.golang.org/protobuf v1.36.3 8 | ) 9 | 10 | require github.com/google/go-cmp v0.6.0 // indirect 11 | -------------------------------------------------------------------------------- /test/go.sum: -------------------------------------------------------------------------------- 1 | github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= 2 | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 3 | google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= 4 | --------------------------------------------------------------------------------