sst 3.0.0 → 3.0.1-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -139
- package/src/index.ts +1 -0
- package/src/resource.ts +15 -0
- package/tsconfig.json +11 -0
- package/LICENSE +0 -21
- package/README.md +0 -43
- package/bootstrap.d.ts +0 -5
- package/bootstrap.js +0 -318
- package/bus.d.ts +0 -20
- package/bus.js +0 -52
- package/cache.d.ts +0 -4
- package/cache.js +0 -31
- package/cdk/deploy-stack.d.ts +0 -223
- package/cdk/deploy-stack.js +0 -562
- package/cdk/deployments-wrapper.d.ts +0 -3
- package/cdk/deployments-wrapper.js +0 -135
- package/cdk/deployments.d.ts +0 -327
- package/cdk/deployments.js +0 -360
- package/cdk/util.d.ts +0 -1
- package/cdk/util.js +0 -17
- package/cli/ci-info.d.ts +0 -4
- package/cli/ci-info.js +0 -8
- package/cli/colors.d.ts +0 -17
- package/cli/colors.js +0 -27
- package/cli/commands/bind.d.ts +0 -19
- package/cli/commands/bind.js +0 -360
- package/cli/commands/bootstrap.d.ts +0 -15
- package/cli/commands/bootstrap.js +0 -11
- package/cli/commands/build.d.ts +0 -17
- package/cli/commands/build.js +0 -25
- package/cli/commands/connect.d.ts +0 -17
- package/cli/commands/connect.js +0 -55
- package/cli/commands/console.d.ts +0 -15
- package/cli/commands/console.js +0 -22
- package/cli/commands/deploy.d.ts +0 -19
- package/cli/commands/deploy.js +0 -112
- package/cli/commands/dev.d.ts +0 -25
- package/cli/commands/dev.js +0 -351
- package/cli/commands/diff.d.ts +0 -19
- package/cli/commands/diff.js +0 -89
- package/cli/commands/plugins/kysely.d.ts +0 -1
- package/cli/commands/plugins/kysely.js +0 -87
- package/cli/commands/plugins/pothos.d.ts +0 -1
- package/cli/commands/plugins/pothos.js +0 -58
- package/cli/commands/plugins/warmer.d.ts +0 -1
- package/cli/commands/plugins/warmer.js +0 -33
- package/cli/commands/remove.d.ts +0 -19
- package/cli/commands/remove.js +0 -62
- package/cli/commands/secrets/get.d.ts +0 -19
- package/cli/commands/secrets/get.js +0 -27
- package/cli/commands/secrets/list.d.ts +0 -19
- package/cli/commands/secrets/list.js +0 -69
- package/cli/commands/secrets/load.d.ts +0 -17
- package/cli/commands/secrets/load.js +0 -47
- package/cli/commands/secrets/remove.d.ts +0 -19
- package/cli/commands/secrets/remove.js +0 -27
- package/cli/commands/secrets/secrets.d.ts +0 -2
- package/cli/commands/secrets/secrets.js +0 -16
- package/cli/commands/secrets/set.d.ts +0 -21
- package/cli/commands/secrets/set.js +0 -54
- package/cli/commands/telemetry.d.ts +0 -17
- package/cli/commands/telemetry.js +0 -24
- package/cli/commands/transform.d.ts +0 -17
- package/cli/commands/transform.js +0 -62
- package/cli/commands/types.d.ts +0 -15
- package/cli/commands/types.js +0 -25
- package/cli/commands/update.d.ts +0 -17
- package/cli/commands/update.js +0 -116
- package/cli/commands/version.d.ts +0 -15
- package/cli/commands/version.js +0 -15
- package/cli/local/router.d.ts +0 -44
- package/cli/local/router.js +0 -43
- package/cli/local/server.d.ts +0 -22
- package/cli/local/server.js +0 -319
- package/cli/program.d.ts +0 -19
- package/cli/program.js +0 -87
- package/cli/spinner.d.ts +0 -3
- package/cli/spinner.js +0 -14
- package/cli/sst.d.ts +0 -2
- package/cli/sst.js +0 -74
- package/cli/telemetry/environment.d.ts +0 -15
- package/cli/telemetry/environment.js +0 -27
- package/cli/telemetry/post-payload.d.ts +0 -1
- package/cli/telemetry/post-payload.js +0 -27
- package/cli/telemetry/project-id.d.ts +0 -2
- package/cli/telemetry/project-id.js +0 -47
- package/cli/telemetry/telemetry.d.ts +0 -19
- package/cli/telemetry/telemetry.js +0 -103
- package/cli/terminal.d.ts +0 -1
- package/cli/terminal.js +0 -8
- package/cli/ui/deploy.d.ts +0 -10
- package/cli/ui/deploy.js +0 -172
- package/cli/ui/functions.d.ts +0 -2
- package/cli/ui/functions.js +0 -130
- package/cli/ui/header.d.ts +0 -5
- package/cli/ui/header.js +0 -16
- package/cli/ui/stack.d.ts +0 -1
- package/cli/ui/stack.js +0 -6
- package/config.d.ts +0 -56
- package/config.js +0 -244
- package/constructs/Api.d.ts +0 -814
- package/constructs/Api.js +0 -743
- package/constructs/ApiGatewayV1Api.d.ts +0 -642
- package/constructs/ApiGatewayV1Api.js +0 -767
- package/constructs/App.d.ts +0 -168
- package/constructs/App.js +0 -493
- package/constructs/AppSyncApi.d.ts +0 -550
- package/constructs/AppSyncApi.js +0 -493
- package/constructs/AstroSite.d.ts +0 -39
- package/constructs/AstroSite.js +0 -78
- package/constructs/AstroSite.tsdoc.d.ts +0 -2
- package/constructs/AstroSite.tsdoc.js +0 -2
- package/constructs/Auth.d.ts +0 -100
- package/constructs/Auth.js +0 -177
- package/constructs/BaseSite.d.ts +0 -29
- package/constructs/BaseSite.js +0 -43
- package/constructs/Bucket.d.ts +0 -364
- package/constructs/Bucket.js +0 -327
- package/constructs/Cognito.d.ts +0 -232
- package/constructs/Cognito.js +0 -370
- package/constructs/Config.d.ts +0 -3
- package/constructs/Config.js +0 -3
- package/constructs/Construct.d.ts +0 -23
- package/constructs/Construct.js +0 -46
- package/constructs/Cron.d.ts +0 -164
- package/constructs/Cron.js +0 -114
- package/constructs/Distribution.d.ts +0 -143
- package/constructs/Distribution.js +0 -260
- package/constructs/EdgeFunction.d.ts +0 -49
- package/constructs/EdgeFunction.js +0 -442
- package/constructs/EventBus.d.ts +0 -444
- package/constructs/EventBus.js +0 -440
- package/constructs/Function.d.ts +0 -690
- package/constructs/Function.js +0 -583
- package/constructs/FunctionalStack.d.ts +0 -13
- package/constructs/FunctionalStack.js +0 -62
- package/constructs/Job.d.ts +0 -337
- package/constructs/Job.js +0 -404
- package/constructs/KinesisStream.d.ts +0 -224
- package/constructs/KinesisStream.js +0 -207
- package/constructs/Metadata.d.ts +0 -60
- package/constructs/Metadata.js +0 -1
- package/constructs/NextjsSite.d.ts +0 -104
- package/constructs/NextjsSite.js +0 -308
- package/constructs/Parameter.d.ts +0 -37
- package/constructs/Parameter.js +0 -53
- package/constructs/Queue.d.ts +0 -194
- package/constructs/Queue.js +0 -204
- package/constructs/RDS.d.ts +0 -221
- package/constructs/RDS.js +0 -363
- package/constructs/RemixSite.d.ts +0 -42
- package/constructs/RemixSite.js +0 -158
- package/constructs/RemixSite.tsdoc.d.ts +0 -2
- package/constructs/RemixSite.tsdoc.js +0 -2
- package/constructs/Script.d.ts +0 -160
- package/constructs/Script.js +0 -179
- package/constructs/Secret.d.ts +0 -30
- package/constructs/Secret.js +0 -59
- package/constructs/Service.d.ts +0 -487
- package/constructs/Service.js +0 -655
- package/constructs/SolidStartSite.d.ts +0 -37
- package/constructs/SolidStartSite.js +0 -66
- package/constructs/SolidStartSite.tsdoc.d.ts +0 -2
- package/constructs/SolidStartSite.tsdoc.js +0 -2
- package/constructs/SsrFunction.d.ts +0 -60
- package/constructs/SsrFunction.js +0 -226
- package/constructs/SsrSite.d.ts +0 -407
- package/constructs/SsrSite.js +0 -850
- package/constructs/Stack.d.ts +0 -127
- package/constructs/Stack.js +0 -243
- package/constructs/StaticSite.d.ts +0 -348
- package/constructs/StaticSite.js +0 -468
- package/constructs/SvelteKitSite.d.ts +0 -40
- package/constructs/SvelteKitSite.js +0 -106
- package/constructs/SvelteKitSite.tsdoc.d.ts +0 -2
- package/constructs/SvelteKitSite.tsdoc.js +0 -2
- package/constructs/Table.d.ts +0 -410
- package/constructs/Table.js +0 -425
- package/constructs/Topic.d.ts +0 -257
- package/constructs/Topic.js +0 -273
- package/constructs/WebSocketApi.d.ts +0 -355
- package/constructs/WebSocketApi.js +0 -404
- package/constructs/cdk/HttpAwsIntegration.d.ts +0 -32
- package/constructs/cdk/HttpAwsIntegration.js +0 -24
- package/constructs/cdk/certificate-base.d.ts +0 -18
- package/constructs/cdk/certificate-base.js +0 -26
- package/constructs/cdk/dns-validated-certificate.d.ts +0 -77
- package/constructs/cdk/dns-validated-certificate.js +0 -125
- package/constructs/cdk/website-redirect.d.ts +0 -53
- package/constructs/cdk/website-redirect.js +0 -77
- package/constructs/context.d.ts +0 -3
- package/constructs/context.js +0 -27
- package/constructs/deferred_task.d.ts +0 -6
- package/constructs/deferred_task.js +0 -45
- package/constructs/deprecated/NextjsSite.d.ts +0 -309
- package/constructs/deprecated/NextjsSite.js +0 -1074
- package/constructs/deprecated/cross-region-helper.d.ts +0 -7
- package/constructs/deprecated/cross-region-helper.js +0 -152
- package/constructs/deprecated/index.d.ts +0 -1
- package/constructs/deprecated/index.js +0 -1
- package/constructs/future/Auth.d.ts +0 -80
- package/constructs/future/Auth.js +0 -122
- package/constructs/future/index.d.ts +0 -1
- package/constructs/future/index.js +0 -1
- package/constructs/index.d.ts +0 -32
- package/constructs/index.js +0 -32
- package/constructs/static-file-list.d.ts +0 -1
- package/constructs/static-file-list.js +0 -51
- package/constructs/util/apiGatewayV1AccessLog.d.ts +0 -15
- package/constructs/util/apiGatewayV1AccessLog.js +0 -76
- package/constructs/util/apiGatewayV2AccessLog.d.ts +0 -10
- package/constructs/util/apiGatewayV2AccessLog.js +0 -107
- package/constructs/util/apiGatewayV2Cors.d.ts +0 -67
- package/constructs/util/apiGatewayV2Cors.js +0 -21
- package/constructs/util/apiGatewayV2Domain.d.ts +0 -47
- package/constructs/util/apiGatewayV2Domain.js +0 -208
- package/constructs/util/appSyncApiDomain.d.ts +0 -41
- package/constructs/util/appSyncApiDomain.js +0 -176
- package/constructs/util/builder.d.ts +0 -3
- package/constructs/util/builder.js +0 -9
- package/constructs/util/duration.d.ts +0 -3
- package/constructs/util/duration.js +0 -19
- package/constructs/util/functionBinding.d.ts +0 -31
- package/constructs/util/functionBinding.js +0 -104
- package/constructs/util/functionUrlCors.d.ts +0 -67
- package/constructs/util/functionUrlCors.js +0 -23
- package/constructs/util/permission.d.ts +0 -8
- package/constructs/util/permission.js +0 -228
- package/constructs/util/size.d.ts +0 -3
- package/constructs/util/size.js +0 -12
- package/constructs/util/warning.d.ts +0 -11
- package/constructs/util/warning.js +0 -21
- package/context/context.d.ts +0 -13
- package/context/context.js +0 -69
- package/context/context2.d.ts +0 -16
- package/context/context2.js +0 -108
- package/context/handler.d.ts +0 -25
- package/context/handler.js +0 -21
- package/context/index.d.ts +0 -2
- package/context/index.js +0 -2
- package/credentials.d.ts +0 -9
- package/credentials.js +0 -145
- package/error.d.ts +0 -6
- package/error.js +0 -10
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/iot.d.ts +0 -6
- package/iot.js +0 -163
- package/logger.d.ts +0 -3
- package/logger.js +0 -32
- package/node/actor/index.d.ts +0 -29
- package/node/actor/index.js +0 -17
- package/node/api/index.d.ts +0 -64
- package/node/api/index.js +0 -179
- package/node/auth/adapter/adapter.d.ts +0 -3
- package/node/auth/adapter/adapter.js +0 -3
- package/node/auth/adapter/facebook.d.ts +0 -2
- package/node/auth/adapter/facebook.js +0 -26
- package/node/auth/adapter/github.d.ts +0 -2
- package/node/auth/adapter/github.js +0 -21
- package/node/auth/adapter/google.d.ts +0 -9
- package/node/auth/adapter/google.js +0 -18
- package/node/auth/adapter/link.d.ts +0 -8
- package/node/auth/adapter/link.js +0 -39
- package/node/auth/adapter/oauth.d.ts +0 -25
- package/node/auth/adapter/oauth.js +0 -52
- package/node/auth/adapter/oidc.d.ts +0 -17
- package/node/auth/adapter/oidc.js +0 -50
- package/node/auth/adapter/twitch.d.ts +0 -2
- package/node/auth/adapter/twitch.js +0 -11
- package/node/auth/auth.d.ts +0 -24
- package/node/auth/auth.js +0 -74
- package/node/auth/index.d.ts +0 -13
- package/node/auth/index.js +0 -12
- package/node/auth/session.d.ts +0 -76
- package/node/auth/session.js +0 -121
- package/node/bucket/index.d.ts +0 -3
- package/node/bucket/index.js +0 -2
- package/node/config/index.d.ts +0 -13
- package/node/config/index.js +0 -22
- package/node/event-bus/index.d.ts +0 -51
- package/node/event-bus/index.js +0 -76
- package/node/function/index.d.ts +0 -3
- package/node/function/index.js +0 -3
- package/node/future/auth/adapter/adapter.d.ts +0 -10
- package/node/future/auth/adapter/adapter.js +0 -1
- package/node/future/auth/adapter/code.d.ts +0 -17
- package/node/future/auth/adapter/code.js +0 -68
- package/node/future/auth/adapter/facebook.d.ts +0 -16
- package/node/future/auth/adapter/facebook.js +0 -27
- package/node/future/auth/adapter/github.d.ts +0 -23
- package/node/future/auth/adapter/github.js +0 -23
- package/node/future/auth/adapter/google.d.ts +0 -28
- package/node/future/auth/adapter/google.js +0 -22
- package/node/future/auth/adapter/link.d.ts +0 -13
- package/node/future/auth/adapter/link.js +0 -47
- package/node/future/auth/adapter/microsoft.d.ts +0 -22
- package/node/future/auth/adapter/microsoft.js +0 -16
- package/node/future/auth/adapter/oauth.d.ts +0 -41
- package/node/future/auth/adapter/oauth.js +0 -67
- package/node/future/auth/adapter/oidc.d.ts +0 -30
- package/node/future/auth/adapter/oidc.js +0 -63
- package/node/future/auth/adapter/spotify.d.ts +0 -23
- package/node/future/auth/adapter/spotify.js +0 -22
- package/node/future/auth/encryption.d.ts +0 -2
- package/node/future/auth/encryption.js +0 -30
- package/node/future/auth/handler.d.ts +0 -46
- package/node/future/auth/handler.js +0 -280
- package/node/future/auth/index.d.ts +0 -17
- package/node/future/auth/index.js +0 -15
- package/node/future/auth/session.d.ts +0 -71
- package/node/future/auth/session.js +0 -146
- package/node/graphql/index.d.ts +0 -15
- package/node/graphql/index.js +0 -32
- package/node/job/index.d.ts +0 -37
- package/node/job/index.js +0 -64
- package/node/kinesis-stream/index.d.ts +0 -3
- package/node/kinesis-stream/index.js +0 -3
- package/node/queue/index.d.ts +0 -3
- package/node/queue/index.js +0 -2
- package/node/rds/index.d.ts +0 -3
- package/node/rds/index.js +0 -2
- package/node/service/index.d.ts +0 -3
- package/node/service/index.js +0 -4
- package/node/site/index.d.ts +0 -18
- package/node/site/index.js +0 -18
- package/node/table/index.d.ts +0 -3
- package/node/table/index.js +0 -4
- package/node/topic/index.d.ts +0 -3
- package/node/topic/index.js +0 -4
- package/node/util/index.d.ts +0 -2
- package/node/util/index.js +0 -196
- package/node/util/loader.d.ts +0 -2
- package/node/util/loader.js +0 -51
- package/node/websocket-api/index.d.ts +0 -23
- package/node/websocket-api/index.js +0 -48
- package/pothos.d.ts +0 -7
- package/pothos.js +0 -160
- package/project.d.ts +0 -75
- package/project.js +0 -188
- package/runtime/handlers/container.d.ts +0 -2
- package/runtime/handlers/container.js +0 -263
- package/runtime/handlers/dotnet.d.ts +0 -2
- package/runtime/handlers/dotnet.js +0 -115
- package/runtime/handlers/go.d.ts +0 -2
- package/runtime/handlers/go.js +0 -126
- package/runtime/handlers/java.d.ts +0 -2
- package/runtime/handlers/java.js +0 -103
- package/runtime/handlers/node.d.ts +0 -2
- package/runtime/handlers/node.js +0 -269
- package/runtime/handlers/python.d.ts +0 -2
- package/runtime/handlers/python.js +0 -141
- package/runtime/handlers/pythonBundling.d.ts +0 -82
- package/runtime/handlers/pythonBundling.js +0 -80
- package/runtime/handlers/rust.d.ts +0 -2
- package/runtime/handlers/rust.js +0 -110
- package/runtime/handlers.d.ts +0 -74
- package/runtime/handlers.js +0 -151
- package/runtime/iot.d.ts +0 -1
- package/runtime/iot.js +0 -17
- package/runtime/runtime.d.ts +0 -32
- package/runtime/runtime.js +0 -1
- package/runtime/server.d.ts +0 -6
- package/runtime/server.js +0 -150
- package/runtime/workers.d.ts +0 -37
- package/runtime/workers.js +0 -85
- package/stacks/app-metadata.d.ts +0 -7
- package/stacks/app-metadata.js +0 -75
- package/stacks/assembly.d.ts +0 -1
- package/stacks/assembly.js +0 -4
- package/stacks/build.d.ts +0 -9
- package/stacks/build.js +0 -110
- package/stacks/deploy.d.ts +0 -9
- package/stacks/deploy.js +0 -240
- package/stacks/diff.d.ts +0 -8
- package/stacks/diff.js +0 -62
- package/stacks/index.d.ts +0 -10
- package/stacks/index.js +0 -10
- package/stacks/metadata.d.ts +0 -11
- package/stacks/metadata.js +0 -83
- package/stacks/monitor.d.ts +0 -32
- package/stacks/monitor.js +0 -151
- package/stacks/remove.d.ts +0 -8
- package/stacks/remove.js +0 -76
- package/stacks/synth.d.ts +0 -12
- package/stacks/synth.js +0 -94
- package/support/base-site-archiver.mjs +0 -99
- package/support/base-site-custom-resource/s3-handler.py +0 -195
- package/support/base-site-custom-resource/s3-upload.py +0 -89
- package/support/bootstrap-metadata-function/index.mjs +0 -58011
- package/support/bridge/Dockerfile +0 -3
- package/support/bridge/bridge.mjs +0 -146
- package/support/certificate-requestor/index.js +0 -549
- package/support/custom-resources/index.mjs +0 -180627
- package/support/dotnet31-bootstrap/Program.cs +0 -17
- package/support/dotnet31-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Encodings.Web.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Json.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.deps.json +0 -230
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -9
- package/support/dotnet6-bootstrap/Program.cs +0 -17
- package/support/dotnet6-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.deps.json +0 -59
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -12
- package/support/edge-function/edge-lambda-version.mjs +0 -3
- package/support/edge-function/edge-lambda.mjs +0 -3
- package/support/edge-function/s3-bucket.mjs +0 -3
- package/support/event-bus-retrier/index.mjs +0 -75
- package/support/java-runtime/install.sh +0 -25
- package/support/java-runtime/pom.xml +0 -39
- package/support/java-runtime/release/aws-lambda-java-core-1.2.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-runtime-interface-client-1.1.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-serialization-1.0.0.jar +0 -0
- package/support/job-manager/index.mjs +0 -57679
- package/support/nixpacks/Dockerfile +0 -6
- package/support/nodejs-runtime/index.mjs +0 -169
- package/support/python-runtime/Dockerfile +0 -9
- package/support/python-runtime/Dockerfile.custom +0 -21
- package/support/python-runtime/Dockerfile.dependencies +0 -26
- package/support/python-runtime/runtime.py +0 -127
- package/support/rds-migrator/index.mjs +0 -49
- package/support/remix-site-function/edge-server.js +0 -161
- package/support/remix-site-function/polyfill.js +0 -24
- package/support/remix-site-function/regional-server.js +0 -164
- package/support/script-function/index.mjs +0 -48760
- package/support/service-dev-function/index.js +0 -1
- package/support/signing-function/index.mjs +0 -3769
- package/support/sls-nextjs-site-build-helper/build.cjs +0 -91
- package/support/sls-nextjs-site-build-helper/index-wrapper.js +0 -19
- package/support/sls-nextjs-site-function-code-replacer/lambda-code-updater.py +0 -156
- package/support/sls-nextjs-site-stub/index.html +0 -99
- package/support/ssr-site-function-archiver.mjs +0 -96
- package/support/ssr-site-function-stub/index.js +0 -5
- package/support/ssr-warmer/index.mjs +0 -34235
- package/util/error.d.ts +0 -3
- package/util/error.js +0 -6
- package/util/fs.d.ts +0 -4
- package/util/fs.js +0 -46
- package/util/lazy.d.ts +0 -1
- package/util/lazy.js +0 -11
- package/util/module.d.ts +0 -1
- package/util/module.js +0 -5
- package/util/process.d.ts +0 -2
- package/util/process.js +0 -3
- package/watcher.d.ts +0 -14
- package/watcher.js +0 -35
package/constructs/Topic.js
DELETED
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import { Topic as AWSTopic, } from "aws-cdk-lib/aws-sns";
|
|
2
|
-
import { LambdaSubscription, SqsSubscription, } from "aws-cdk-lib/aws-sns-subscriptions";
|
|
3
|
-
import { Construct } from "constructs";
|
|
4
|
-
import { getFunctionRef, isCDKConstruct, isCDKConstructOf, } from "./Construct.js";
|
|
5
|
-
import { Function as Fn, } from "./Function.js";
|
|
6
|
-
import { Queue } from "./Queue.js";
|
|
7
|
-
/////////////////////
|
|
8
|
-
// Construct
|
|
9
|
-
/////////////////////
|
|
10
|
-
/**
|
|
11
|
-
* The `Topic` construct is a higher level CDK construct that makes it easy to create an SNS Topic and configure a list of subscriber functions.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
*
|
|
15
|
-
* ```js
|
|
16
|
-
* import { Topic } from "sst/constructs";
|
|
17
|
-
*
|
|
18
|
-
* new Topic(stack, "Topic", {
|
|
19
|
-
* subscribers: {
|
|
20
|
-
* subscriber1: "src/function1.handler",
|
|
21
|
-
* subscriber2: "src/function2.handler"
|
|
22
|
-
* },
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export class Topic extends Construct {
|
|
27
|
-
id;
|
|
28
|
-
cdk;
|
|
29
|
-
subscribers = {};
|
|
30
|
-
bindingForAllSubscribers = [];
|
|
31
|
-
permissionsAttachedForAllSubscribers = [];
|
|
32
|
-
props;
|
|
33
|
-
constructor(scope, id, props) {
|
|
34
|
-
super(scope, props?.cdk?.id || id);
|
|
35
|
-
this.id = id;
|
|
36
|
-
this.props = props || {};
|
|
37
|
-
this.cdk = {};
|
|
38
|
-
this.createTopic();
|
|
39
|
-
this.addSubscribers(this, props?.subscribers || {});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* The ARN of the internally created SNS Topic.
|
|
43
|
-
*/
|
|
44
|
-
get topicArn() {
|
|
45
|
-
return this.cdk.topic.topicArn;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* The name of the internally created SNS Topic.
|
|
49
|
-
*/
|
|
50
|
-
get topicName() {
|
|
51
|
-
return this.cdk.topic.topicName;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get a list of subscriptions for this topic
|
|
55
|
-
*/
|
|
56
|
-
get subscriptions() {
|
|
57
|
-
return Object.values(this.subscribers).map((sub) => {
|
|
58
|
-
let children;
|
|
59
|
-
// look for sns.Subscription inside Queue.sqsQueue
|
|
60
|
-
if (sub instanceof Queue) {
|
|
61
|
-
children = sub.cdk.queue.node.children;
|
|
62
|
-
}
|
|
63
|
-
// look for sns.Subscription inside Function
|
|
64
|
-
else {
|
|
65
|
-
children = sub.node.children;
|
|
66
|
-
}
|
|
67
|
-
const child = children.find((child) => {
|
|
68
|
-
return isCDKConstructOf(child, "aws-cdk-lib.aws_sns.Subscription");
|
|
69
|
-
});
|
|
70
|
-
return child;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* A list of the internally created function instances for the subscribers.
|
|
75
|
-
*/
|
|
76
|
-
get subscriberFunctions() {
|
|
77
|
-
return Object.values(this.subscribers).filter((subscriber) => subscriber instanceof Fn);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Add subscribers to the topic.
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```js
|
|
84
|
-
* const topic = new Topic(stack, "Topic", {
|
|
85
|
-
* subscribers: {
|
|
86
|
-
* subscriber1: "src/function1.handler",
|
|
87
|
-
* subscriber2: "src/function2.handler"
|
|
88
|
-
* },
|
|
89
|
-
* });
|
|
90
|
-
* topic.addSubscribers(stack, {
|
|
91
|
-
* subscriber3: "src/function3.handler"
|
|
92
|
-
* });
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
addSubscribers(scope, subscribers) {
|
|
96
|
-
Object.entries(subscribers).forEach(([subscriberName, subscriber]) => {
|
|
97
|
-
this.addSubscriber(scope, subscriberName, subscriber);
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Binds the given list of resources to all the subscriber functions.
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
*
|
|
105
|
-
* ```js
|
|
106
|
-
* const topic = new Topic(stack, "Topic", {
|
|
107
|
-
* subscribers: {
|
|
108
|
-
* subscriber1: "src/function1.handler",
|
|
109
|
-
* subscriber2: "src/function2.handler"
|
|
110
|
-
* },
|
|
111
|
-
* });
|
|
112
|
-
* topic.bind([STRIPE_KEY, bucket]);
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
bind(constructs) {
|
|
116
|
-
Object.values(this.subscribers)
|
|
117
|
-
.filter((subscriber) => subscriber instanceof Fn)
|
|
118
|
-
.forEach((subscriber) => subscriber.bind(constructs));
|
|
119
|
-
this.bindingForAllSubscribers.push(...constructs);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Binds the given list of resources to a specific subscriber.
|
|
123
|
-
* @example
|
|
124
|
-
* ```js {8}
|
|
125
|
-
* const topic = new Topic(stack, "Topic", {
|
|
126
|
-
* subscribers: {
|
|
127
|
-
* subscriber1: "src/function1.handler",
|
|
128
|
-
* subscriber2: "src/function2.handler"
|
|
129
|
-
* },
|
|
130
|
-
* });
|
|
131
|
-
*
|
|
132
|
-
* topic.bindToSubscriber("subscriber1", [STRIPE_KEY, bucket]);
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
bindToSubscriber(subscriberName, constructs) {
|
|
136
|
-
const subscriber = this.subscribers[subscriberName];
|
|
137
|
-
if (!(subscriber instanceof Fn)) {
|
|
138
|
-
throw new Error(`Cannot bind to the "${this.node.id}" Topic subscriber because it's not a Lambda function`);
|
|
139
|
-
}
|
|
140
|
-
subscriber.bind(constructs);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Attaches the given list of permissions to all the subscriber functions. This allows the subscribers to access other AWS resources.
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
*
|
|
147
|
-
* ```js
|
|
148
|
-
* const topic = new Topic(stack, "Topic", {
|
|
149
|
-
* subscribers: {
|
|
150
|
-
* subscriber1: "src/function1.handler",
|
|
151
|
-
* subscriber2: "src/function2.handler"
|
|
152
|
-
* },
|
|
153
|
-
* });
|
|
154
|
-
* topic.attachPermissions(["s3"]);
|
|
155
|
-
* ```
|
|
156
|
-
*/
|
|
157
|
-
attachPermissions(permissions) {
|
|
158
|
-
Object.values(this.subscribers)
|
|
159
|
-
.filter((subscriber) => subscriber instanceof Fn)
|
|
160
|
-
.forEach((subscriber) => subscriber.attachPermissions(permissions));
|
|
161
|
-
this.permissionsAttachedForAllSubscribers.push(permissions);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Attaches the list of permissions to a specific subscriber.
|
|
165
|
-
* @example
|
|
166
|
-
* ```js {8}
|
|
167
|
-
* const topic = new Topic(stack, "Topic", {
|
|
168
|
-
* subscribers: {
|
|
169
|
-
* subscriber1: "src/function1.handler",
|
|
170
|
-
* subscriber2: "src/function2.handler"
|
|
171
|
-
* },
|
|
172
|
-
* });
|
|
173
|
-
*
|
|
174
|
-
* topic.attachPermissionsToSubscriber("subscriber1", ["s3"]);
|
|
175
|
-
* ```
|
|
176
|
-
*/
|
|
177
|
-
attachPermissionsToSubscriber(subscriberName, permissions) {
|
|
178
|
-
const subscriber = this.subscribers[subscriberName];
|
|
179
|
-
if (!(subscriber instanceof Fn)) {
|
|
180
|
-
throw new Error(`Cannot attach permissions to the "${this.node.id}" Topic subscriber because it's not a Lambda function`);
|
|
181
|
-
}
|
|
182
|
-
subscriber.attachPermissions(permissions);
|
|
183
|
-
}
|
|
184
|
-
getConstructMetadata() {
|
|
185
|
-
return {
|
|
186
|
-
type: "Topic",
|
|
187
|
-
data: {
|
|
188
|
-
topicArn: this.cdk.topic.topicArn,
|
|
189
|
-
// TODO: Deprecate eventually and mirror KinesisStream
|
|
190
|
-
subscribers: Object.values(this.subscribers).map(getFunctionRef),
|
|
191
|
-
subscriberNames: Object.keys(this.subscribers),
|
|
192
|
-
},
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
/** @internal */
|
|
196
|
-
getFunctionBinding() {
|
|
197
|
-
return {
|
|
198
|
-
clientPackage: "topic",
|
|
199
|
-
variables: {
|
|
200
|
-
topicArn: {
|
|
201
|
-
type: "plain",
|
|
202
|
-
value: this.topicArn,
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
permissions: {
|
|
206
|
-
"sns:*": [this.topicArn],
|
|
207
|
-
},
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
createTopic() {
|
|
211
|
-
const app = this.node.root;
|
|
212
|
-
const { cdk } = this.props;
|
|
213
|
-
if (isCDKConstruct(cdk?.topic)) {
|
|
214
|
-
this.cdk.topic = cdk?.topic;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
const snsTopicProps = (cdk?.topic || {});
|
|
218
|
-
this.cdk.topic = new AWSTopic(this, "Topic", {
|
|
219
|
-
topicName: app.logicalPrefixedName(this.node.id),
|
|
220
|
-
...snsTopicProps,
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
addSubscriber(scope, subscriberName, subscriber) {
|
|
225
|
-
if (subscriber instanceof Queue ||
|
|
226
|
-
subscriber.queue) {
|
|
227
|
-
subscriber = subscriber;
|
|
228
|
-
this.addQueueSubscriber(scope, subscriberName, subscriber);
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
subscriber = subscriber;
|
|
232
|
-
this.addFunctionSubscriber(scope, subscriberName, subscriber);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
addQueueSubscriber(_scope, subscriberName, subscriber) {
|
|
236
|
-
// Parse subscriber props
|
|
237
|
-
let subscriptionProps;
|
|
238
|
-
let queue;
|
|
239
|
-
if (subscriber instanceof Queue) {
|
|
240
|
-
subscriber = subscriber;
|
|
241
|
-
queue = subscriber;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
subscriber = subscriber;
|
|
245
|
-
subscriptionProps = subscriber.cdk?.subscription;
|
|
246
|
-
queue = subscriber.queue;
|
|
247
|
-
}
|
|
248
|
-
this.subscribers[subscriberName] = queue;
|
|
249
|
-
// Create Subscription
|
|
250
|
-
this.cdk.topic.addSubscription(new SqsSubscription(queue.cdk.queue, subscriptionProps));
|
|
251
|
-
}
|
|
252
|
-
addFunctionSubscriber(scope, subscriberName, subscriber) {
|
|
253
|
-
// Parse subscriber props
|
|
254
|
-
let subscriptionProps;
|
|
255
|
-
let functionDefinition;
|
|
256
|
-
if (typeof subscriber !== "string" && "function" in subscriber) {
|
|
257
|
-
subscriptionProps = subscriber.cdk?.subscription;
|
|
258
|
-
functionDefinition = subscriber.function;
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
subscriber = subscriber;
|
|
262
|
-
functionDefinition = subscriber;
|
|
263
|
-
}
|
|
264
|
-
// Create function
|
|
265
|
-
const fn = Fn.fromDefinition(scope, `Subscriber_${this.node.id}_${subscriberName}`, functionDefinition, this.props.defaults?.function, `The "defaults.function" cannot be applied if an instance of a Function construct is passed in. Make sure to define all the subscribers using FunctionProps, so the Topic construct can apply the "defaults.function" to them.`);
|
|
266
|
-
this.subscribers[subscriberName] = fn;
|
|
267
|
-
// Create Subscription
|
|
268
|
-
this.cdk.topic.addSubscription(new LambdaSubscription(fn, subscriptionProps));
|
|
269
|
-
// Attach existing permissions
|
|
270
|
-
this.permissionsAttachedForAllSubscribers.forEach((permissions) => fn.attachPermissions(permissions));
|
|
271
|
-
fn.bind(this.bindingForAllSubscribers);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import * as logs from "aws-cdk-lib/aws-logs";
|
|
3
|
-
import * as acm from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
-
import * as apig from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
5
|
-
import * as apigAuthorizers from "@aws-cdk/aws-apigatewayv2-authorizers-alpha";
|
|
6
|
-
import { SSTConstruct } from "./Construct.js";
|
|
7
|
-
import { Function as Fn, FunctionProps, FunctionInlineDefinition, FunctionDefinition } from "./Function.js";
|
|
8
|
-
import { FunctionBindingProps } from "./util/functionBinding.js";
|
|
9
|
-
import { Permissions } from "./util/permission.js";
|
|
10
|
-
import * as apigV2Domain from "./util/apiGatewayV2Domain.js";
|
|
11
|
-
import * as apigV2AccessLog from "./util/apiGatewayV2AccessLog.js";
|
|
12
|
-
export interface WebSocketApiDomainProps extends apigV2Domain.CustomDomainProps {
|
|
13
|
-
}
|
|
14
|
-
export interface WebSocketApiAccessLogProps extends apigV2AccessLog.AccessLogProps {
|
|
15
|
-
}
|
|
16
|
-
export interface WebSocketApiProps {
|
|
17
|
-
/**
|
|
18
|
-
* The routes for the WebSocket API
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```js
|
|
22
|
-
* new WebSocketApi(stack, "Api", {
|
|
23
|
-
* routes: {
|
|
24
|
-
* $connect : "src/connect.main",
|
|
25
|
-
* $default : "src/default.main",
|
|
26
|
-
* $disconnect : "src/disconnect.main",
|
|
27
|
-
* sendMessage : "src/sendMessage.main",
|
|
28
|
-
* }
|
|
29
|
-
* })
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
routes?: Record<string, FunctionInlineDefinition | WebSocketApiFunctionRouteProps>;
|
|
33
|
-
/**
|
|
34
|
-
* Enable CloudWatch access logs for this API
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```js
|
|
38
|
-
* new WebSocketApi(stack, "Api", {
|
|
39
|
-
* accessLog: true
|
|
40
|
-
* });
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```js
|
|
45
|
-
* new WebSocketApi(stack, "Api", {
|
|
46
|
-
* accessLog: {
|
|
47
|
-
* retention: "one_week",
|
|
48
|
-
* },
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
accessLog?: boolean | string | WebSocketApiAccessLogProps;
|
|
53
|
-
/**
|
|
54
|
-
* Specify a custom domain to use in addition to the automatically generated one. SST currently supports domains that are configured using [Route 53](https://aws.amazon.com/route53/)
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```js
|
|
58
|
-
* new WebSocketApi(stack, "Api", {
|
|
59
|
-
* customDomain: "api.example.com"
|
|
60
|
-
* })
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```js
|
|
65
|
-
* new WebSocketApi(stack, "Api", {
|
|
66
|
-
* customDomain: {
|
|
67
|
-
* domainName: "api.example.com",
|
|
68
|
-
* hostedZone: "domain.com",
|
|
69
|
-
* path: "v1"
|
|
70
|
-
* }
|
|
71
|
-
* })
|
|
72
|
-
* ```
|
|
73
|
-
*/
|
|
74
|
-
customDomain?: string | WebSocketApiDomainProps;
|
|
75
|
-
/**
|
|
76
|
-
* The default authorizer for the API.
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```js
|
|
80
|
-
* new WebSocketApi(stack, "Api", {
|
|
81
|
-
* authorizer: "iam",
|
|
82
|
-
* });
|
|
83
|
-
* ```
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```js
|
|
87
|
-
* new WebSocketApi(stack, "Api", {
|
|
88
|
-
* authorizer: {
|
|
89
|
-
* type: "lambda",
|
|
90
|
-
* function: new Function(stack, "Authorizer", {
|
|
91
|
-
* handler: "test/lambda.handler",
|
|
92
|
-
* }),
|
|
93
|
-
* },
|
|
94
|
-
* });
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
authorizer?: "none" | "iam" | WebSocketApiLambdaAuthorizer;
|
|
98
|
-
defaults?: {
|
|
99
|
-
/**
|
|
100
|
-
* The default function props to be applied to all the Lambda functions in the API. The `environment`, `permissions` and `layers` properties will be merged with per route definitions if they are defined.
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
* ```js
|
|
104
|
-
* new WebSocketApi(stack, "Api", {
|
|
105
|
-
* defaults: {
|
|
106
|
-
* function: {
|
|
107
|
-
* timeout: 20,
|
|
108
|
-
* environment: { tableName: table.tableName },
|
|
109
|
-
* permissions: [table],
|
|
110
|
-
* }
|
|
111
|
-
* },
|
|
112
|
-
* });
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
function?: FunctionProps;
|
|
116
|
-
};
|
|
117
|
-
cdk?: {
|
|
118
|
-
/**
|
|
119
|
-
* Allows you to override default id for this construct.
|
|
120
|
-
*/
|
|
121
|
-
id?: string;
|
|
122
|
-
/**
|
|
123
|
-
* Override the internally created WebSocket API
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* ```js
|
|
127
|
-
* new WebSocketApi(stack, "WebSocketApi", {
|
|
128
|
-
* cdk: {
|
|
129
|
-
* webSocketApi: {
|
|
130
|
-
* apiName: "my-websocket-api"
|
|
131
|
-
* }
|
|
132
|
-
* }
|
|
133
|
-
* })
|
|
134
|
-
* ```
|
|
135
|
-
*/
|
|
136
|
-
webSocketApi?: apig.IWebSocketApi | apig.WebSocketApiProps;
|
|
137
|
-
/**
|
|
138
|
-
* Override the internally created WebSocket Stage
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* ```js
|
|
142
|
-
* new WebSocketApi(stack, "WebSocketApi", {
|
|
143
|
-
* cdk: {
|
|
144
|
-
* webSocketStage: {
|
|
145
|
-
* autoDeploy: false
|
|
146
|
-
* }
|
|
147
|
-
* }
|
|
148
|
-
* })
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
|
-
webSocketStage?: apig.IWebSocketStage | WebSocketApiCdkStageProps;
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Specify a function route handler and configure additional options
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* ```js
|
|
159
|
-
* api.addRoutes(stack, {
|
|
160
|
-
* sendMessage : {
|
|
161
|
-
* function: "src/sendMessage.main",
|
|
162
|
-
* }
|
|
163
|
-
* });
|
|
164
|
-
* ```
|
|
165
|
-
*/
|
|
166
|
-
export interface WebSocketApiFunctionRouteProps {
|
|
167
|
-
type?: "function";
|
|
168
|
-
/**
|
|
169
|
-
*The function definition used to create the function for this route.
|
|
170
|
-
*/
|
|
171
|
-
function: FunctionDefinition;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Specify a Lambda authorizer and configure additional options.
|
|
175
|
-
*
|
|
176
|
-
* @example
|
|
177
|
-
* ```js
|
|
178
|
-
* new WebSocketApi(stack, "Api", {
|
|
179
|
-
* authorizer: {
|
|
180
|
-
* type: "lambda",
|
|
181
|
-
* function: new Function(stack, "Authorizer", {
|
|
182
|
-
* handler: "test/lambda.handler",
|
|
183
|
-
* }),
|
|
184
|
-
* },
|
|
185
|
-
* });
|
|
186
|
-
* ```
|
|
187
|
-
*/
|
|
188
|
-
export interface WebSocketApiLambdaAuthorizer {
|
|
189
|
-
type: "lambda";
|
|
190
|
-
name?: string;
|
|
191
|
-
identitySource?: string[];
|
|
192
|
-
function?: Fn;
|
|
193
|
-
cdk?: {
|
|
194
|
-
authorizer: apigAuthorizers.WebSocketLambdaAuthorizer;
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
export interface WebSocketApiCdkStageProps extends Omit<apig.WebSocketStageProps, "webSocketApi" | "stageName"> {
|
|
198
|
-
stageName?: string;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* The `WebSocketApi` construct is a higher level CDK construct that makes it easy to create a WebSocket API.
|
|
202
|
-
*
|
|
203
|
-
* @example
|
|
204
|
-
* ```js
|
|
205
|
-
* import { WebSocketApi } from "sst/constructs";
|
|
206
|
-
*
|
|
207
|
-
* new WebSocketApi(stack, "Api", {
|
|
208
|
-
* routes: {
|
|
209
|
-
* $connect: "src/connect.main",
|
|
210
|
-
* $default: "src/default.main",
|
|
211
|
-
* $disconnect: "src/disconnect.main",
|
|
212
|
-
* sendMessage: "src/sendMessage.main",
|
|
213
|
-
* },
|
|
214
|
-
* });
|
|
215
|
-
* ```
|
|
216
|
-
*/
|
|
217
|
-
export declare class WebSocketApi extends Construct implements SSTConstruct {
|
|
218
|
-
readonly id: string;
|
|
219
|
-
readonly cdk: {
|
|
220
|
-
/**
|
|
221
|
-
* The internally created websocket api
|
|
222
|
-
*/
|
|
223
|
-
webSocketApi: apig.WebSocketApi;
|
|
224
|
-
/**
|
|
225
|
-
* The internally created websocket stage
|
|
226
|
-
*/
|
|
227
|
-
webSocketStage: apig.WebSocketStage;
|
|
228
|
-
/**
|
|
229
|
-
* The internally created log group
|
|
230
|
-
*/
|
|
231
|
-
accessLogGroup?: logs.LogGroup;
|
|
232
|
-
/**
|
|
233
|
-
* The internally created domain name
|
|
234
|
-
*/
|
|
235
|
-
domainName?: apig.DomainName;
|
|
236
|
-
/**
|
|
237
|
-
* The internally created certificate
|
|
238
|
-
*/
|
|
239
|
-
certificate?: acm.Certificate;
|
|
240
|
-
};
|
|
241
|
-
private _customDomainUrl?;
|
|
242
|
-
private functions;
|
|
243
|
-
private apigRoutes;
|
|
244
|
-
private bindingForAllRoutes;
|
|
245
|
-
private permissionsAttachedForAllRoutes;
|
|
246
|
-
private authorizer?;
|
|
247
|
-
private props;
|
|
248
|
-
constructor(scope: Construct, id: string, props?: WebSocketApiProps);
|
|
249
|
-
/**
|
|
250
|
-
* Url of the WebSocket API
|
|
251
|
-
*/
|
|
252
|
-
get url(): string;
|
|
253
|
-
/**
|
|
254
|
-
* Custom domain url if it's configured
|
|
255
|
-
*/
|
|
256
|
-
get customDomainUrl(): string | undefined;
|
|
257
|
-
/**
|
|
258
|
-
* List of routes of the websocket api
|
|
259
|
-
*/
|
|
260
|
-
get routes(): string[];
|
|
261
|
-
get _connectionsArn(): string;
|
|
262
|
-
/**
|
|
263
|
-
* Add routes to an already created WebSocket API
|
|
264
|
-
*
|
|
265
|
-
* @example
|
|
266
|
-
* ```js
|
|
267
|
-
* api.addRoutes(stack, {
|
|
268
|
-
* "$connect": "src/connect.main",
|
|
269
|
-
* })
|
|
270
|
-
* ```
|
|
271
|
-
*/
|
|
272
|
-
addRoutes(scope: Construct, routes: Record<string, FunctionInlineDefinition | WebSocketApiFunctionRouteProps>): void;
|
|
273
|
-
/**
|
|
274
|
-
* Get the instance of the internally created Function, for a given route key where the `routeKey` is the key used to define a route. For example, `$connect`.
|
|
275
|
-
*
|
|
276
|
-
* @example
|
|
277
|
-
* ```js
|
|
278
|
-
* const fn = api.getFunction("$connect");
|
|
279
|
-
* ```
|
|
280
|
-
*/
|
|
281
|
-
getFunction(routeKey: string): Fn | undefined;
|
|
282
|
-
/**
|
|
283
|
-
* Get the instance of the internally created Route, for a given route key where the `routeKey` is the key used to define a route. For example, `$connect`.
|
|
284
|
-
*
|
|
285
|
-
* @example
|
|
286
|
-
* ```js
|
|
287
|
-
* const route = api.getRoute("$connect");
|
|
288
|
-
* ```
|
|
289
|
-
*/
|
|
290
|
-
getRoute(routeKey: string): apig.WebSocketRoute | undefined;
|
|
291
|
-
/**
|
|
292
|
-
* Binds the given list of resources to all the routes.
|
|
293
|
-
*
|
|
294
|
-
* @example
|
|
295
|
-
*
|
|
296
|
-
* ```js
|
|
297
|
-
* api.bind([STRIPE_KEY, bucket]);
|
|
298
|
-
* ```
|
|
299
|
-
*/
|
|
300
|
-
bind(constructs: SSTConstruct[]): void;
|
|
301
|
-
/**
|
|
302
|
-
* Binds the given list of resources to a specific route.
|
|
303
|
-
*
|
|
304
|
-
* @example
|
|
305
|
-
* ```js
|
|
306
|
-
* api.bindToRoute("$connect", [STRIPE_KEY, bucket]);
|
|
307
|
-
* ```
|
|
308
|
-
*
|
|
309
|
-
*/
|
|
310
|
-
bindToRoute(routeKey: string, constructs: SSTConstruct[]): void;
|
|
311
|
-
/**
|
|
312
|
-
* Attaches the given list of permissions to all the routes. This allows the functions to access other AWS resources.
|
|
313
|
-
*
|
|
314
|
-
* @example
|
|
315
|
-
*
|
|
316
|
-
* ```js
|
|
317
|
-
* api.attachPermissions(["s3"]);
|
|
318
|
-
* ```
|
|
319
|
-
*/
|
|
320
|
-
attachPermissions(permissions: Permissions): void;
|
|
321
|
-
/**
|
|
322
|
-
* Attaches the given list of permissions to a specific route. This allows that function to access other AWS resources.
|
|
323
|
-
*
|
|
324
|
-
* @example
|
|
325
|
-
* ```js
|
|
326
|
-
* api.attachPermissionsToRoute("$connect", ["s3"]);
|
|
327
|
-
* ```
|
|
328
|
-
*
|
|
329
|
-
*/
|
|
330
|
-
attachPermissionsToRoute(routeKey: string, permissions: Permissions): void;
|
|
331
|
-
getConstructMetadata(): {
|
|
332
|
-
type: "WebSocketApi";
|
|
333
|
-
data: {
|
|
334
|
-
url: string;
|
|
335
|
-
httpApiId: string;
|
|
336
|
-
customDomainUrl: string | undefined;
|
|
337
|
-
routes: {
|
|
338
|
-
route: string;
|
|
339
|
-
fn: {
|
|
340
|
-
node: string;
|
|
341
|
-
stack: string;
|
|
342
|
-
} | undefined;
|
|
343
|
-
}[];
|
|
344
|
-
};
|
|
345
|
-
};
|
|
346
|
-
/** @internal */
|
|
347
|
-
getFunctionBinding(): FunctionBindingProps;
|
|
348
|
-
private createWebSocketApi;
|
|
349
|
-
private createWebSocketStage;
|
|
350
|
-
private createCloudWatchRole;
|
|
351
|
-
private addAuthorizer;
|
|
352
|
-
private addRoute;
|
|
353
|
-
private buildRouteAuth;
|
|
354
|
-
private normalizeRouteKey;
|
|
355
|
-
}
|