sst 3.0.0 → 3.0.1-10
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/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/resource.d.ts +4 -0
- package/dist/resource.js +15 -0
- package/dist/vector-client.d.ts +126 -0
- package/dist/vector-client.js +38 -0
- package/package.json +16 -137
- 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/Table.js
DELETED
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import * as dynamodb from "aws-cdk-lib/aws-dynamodb";
|
|
3
|
-
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
4
|
-
import * as lambdaEventSources from "aws-cdk-lib/aws-lambda-event-sources";
|
|
5
|
-
import { getFunctionRef, isCDKConstruct } from "./Construct.js";
|
|
6
|
-
import { Function as Fn, } from "./Function.js";
|
|
7
|
-
/////////////////////
|
|
8
|
-
// Construct
|
|
9
|
-
/////////////////////
|
|
10
|
-
/**
|
|
11
|
-
* The `Table` construct is a higher level CDK construct that makes it easy to create a DynamoDB table.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
*
|
|
15
|
-
* Deploys a plain HTML website in the `path/to/src` directory.
|
|
16
|
-
*
|
|
17
|
-
* ```js
|
|
18
|
-
* import { Table } from "sst/constructs";
|
|
19
|
-
*
|
|
20
|
-
* new Table(stack, "Notes", {
|
|
21
|
-
* fields: {
|
|
22
|
-
* userId: "string",
|
|
23
|
-
* noteId: "string",
|
|
24
|
-
* },
|
|
25
|
-
* primaryIndex: { partitionKey: "noteId", sortKey: "userId" },
|
|
26
|
-
* });
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export class Table extends Construct {
|
|
30
|
-
id;
|
|
31
|
-
cdk;
|
|
32
|
-
dynamodbTableType;
|
|
33
|
-
functions = {};
|
|
34
|
-
bindingForAllConsumers = [];
|
|
35
|
-
permissionsAttachedForAllConsumers = [];
|
|
36
|
-
props;
|
|
37
|
-
stream;
|
|
38
|
-
fields;
|
|
39
|
-
constructor(scope, id, props) {
|
|
40
|
-
super(scope, props.cdk?.id || id);
|
|
41
|
-
this.id = id;
|
|
42
|
-
this.props = props;
|
|
43
|
-
const { fields, globalIndexes, localIndexes, kinesisStream } = this.props;
|
|
44
|
-
this.cdk = {};
|
|
45
|
-
this.fields = fields;
|
|
46
|
-
// Input Validation
|
|
47
|
-
this.validateFieldsAndIndexes(id, props);
|
|
48
|
-
// Create Table
|
|
49
|
-
this.createTable();
|
|
50
|
-
// Create Secondary Indexes
|
|
51
|
-
if (globalIndexes)
|
|
52
|
-
this.addGlobalIndexes(globalIndexes);
|
|
53
|
-
if (localIndexes)
|
|
54
|
-
this.addLocalIndexes(localIndexes);
|
|
55
|
-
// Create Consumers
|
|
56
|
-
if (props.consumers) {
|
|
57
|
-
for (const consumerName in props.consumers) {
|
|
58
|
-
this.addConsumer(this, consumerName, props.consumers[consumerName]);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Create Kinesis Stream
|
|
62
|
-
this.buildKinesisStreamSpec(kinesisStream);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* The ARN of the internally created DynamoDB Table.
|
|
66
|
-
*/
|
|
67
|
-
get tableArn() {
|
|
68
|
-
return this.cdk.table.tableArn;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* The name of the internally created DynamoDB Table.
|
|
72
|
-
*/
|
|
73
|
-
get tableName() {
|
|
74
|
-
return this.cdk.table.tableName;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Add additional global secondary indexes where the `key` is the name of the global secondary index
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```js
|
|
81
|
-
* table.addGlobalIndexes({
|
|
82
|
-
* gsi1: {
|
|
83
|
-
* partitionKey: "pk",
|
|
84
|
-
* sortKey: "sk",
|
|
85
|
-
* }
|
|
86
|
-
* })
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
addGlobalIndexes(secondaryIndexes) {
|
|
90
|
-
if (!this.fields)
|
|
91
|
-
throw new Error(`Cannot add secondary indexes to "${this.node.id}" Table without defining "fields"`);
|
|
92
|
-
for (const [indexName, { partitionKey, sortKey, projection, cdk },] of Object.entries(secondaryIndexes)) {
|
|
93
|
-
// Validate index does not contain "indexName", "partitionKey" and "sortKey"
|
|
94
|
-
if (cdk?.index?.indexName) {
|
|
95
|
-
throw new Error(`Cannot configure the "cdk.index.indexName" in the "${indexName}" index of the "${this.node.id}" Table`);
|
|
96
|
-
}
|
|
97
|
-
if (cdk?.index?.partitionKey) {
|
|
98
|
-
throw new Error(`Cannot configure the "cdk.index.partitionKey" in the "${indexName}" index of the "${this.node.id}" Table`);
|
|
99
|
-
}
|
|
100
|
-
if (cdk?.index?.sortKey) {
|
|
101
|
-
throw new Error(`Cannot configure the "cdk.index.sortKey" in the "${indexName}" index of the "${this.node.id}" Table`);
|
|
102
|
-
}
|
|
103
|
-
this.cdk.table.addGlobalSecondaryIndex({
|
|
104
|
-
indexName,
|
|
105
|
-
partitionKey: this.buildAttribute(this.fields, partitionKey),
|
|
106
|
-
sortKey: sortKey
|
|
107
|
-
? this.buildAttribute(this.fields, sortKey)
|
|
108
|
-
: undefined,
|
|
109
|
-
...(() => {
|
|
110
|
-
if (!projection) {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
else if (Array.isArray(projection)) {
|
|
114
|
-
return {
|
|
115
|
-
projectionType: dynamodb.ProjectionType.INCLUDE,
|
|
116
|
-
nonKeyAttributes: projection,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
projectionType: dynamodb.ProjectionType[projection.toUpperCase()],
|
|
121
|
-
};
|
|
122
|
-
})(),
|
|
123
|
-
...cdk?.index,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Add additional local secondary indexes where the `key` is the name of the local secondary index
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```js
|
|
132
|
-
* table.addLocalIndexes({
|
|
133
|
-
* lsi1: {
|
|
134
|
-
* sortKey: "sk",
|
|
135
|
-
* }
|
|
136
|
-
* })
|
|
137
|
-
* ```
|
|
138
|
-
*/
|
|
139
|
-
addLocalIndexes(secondaryIndexes) {
|
|
140
|
-
if (!this.fields)
|
|
141
|
-
throw new Error(`Cannot add local secondary indexes to "${this.node.id}" Table without defining "fields"`);
|
|
142
|
-
for (const [indexName, { sortKey, projection, cdk }] of Object.entries(secondaryIndexes)) {
|
|
143
|
-
// Validate index does not contain "indexName", "partitionKey" and "sortKey"
|
|
144
|
-
if (cdk?.index?.indexName) {
|
|
145
|
-
throw new Error(`Cannot configure the "cdk.index.indexName" in the "${indexName}" index of the "${this.node.id}" Table`);
|
|
146
|
-
}
|
|
147
|
-
if (cdk?.index?.sortKey) {
|
|
148
|
-
throw new Error(`Cannot configure the "cdk.index.sortKey" in the "${indexName}" index of the "${this.node.id}" Table`);
|
|
149
|
-
}
|
|
150
|
-
this.cdk.table.addLocalSecondaryIndex({
|
|
151
|
-
indexName,
|
|
152
|
-
sortKey: this.buildAttribute(this.fields, sortKey),
|
|
153
|
-
...(() => {
|
|
154
|
-
if (!projection) {
|
|
155
|
-
return undefined;
|
|
156
|
-
}
|
|
157
|
-
else if (Array.isArray(projection)) {
|
|
158
|
-
return {
|
|
159
|
-
projectionType: dynamodb.ProjectionType.INCLUDE,
|
|
160
|
-
nonKeyAttributes: projection,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
projectionType: dynamodb.ProjectionType[projection.toUpperCase()],
|
|
165
|
-
};
|
|
166
|
-
})(),
|
|
167
|
-
...cdk?.index,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Define additional consumers for table events
|
|
173
|
-
*
|
|
174
|
-
* @example
|
|
175
|
-
* ```js
|
|
176
|
-
* table.addConsumers(stack, {
|
|
177
|
-
* consumer1: "src/consumer1.main",
|
|
178
|
-
* consumer2: "src/consumer2.main",
|
|
179
|
-
* });
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
addConsumers(scope, consumers) {
|
|
183
|
-
Object.keys(consumers).forEach((consumerName) => {
|
|
184
|
-
this.addConsumer(scope, consumerName, consumers[consumerName]);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Binds the given list of resources to all consumers of this table.
|
|
189
|
-
*
|
|
190
|
-
* @example
|
|
191
|
-
* ```js
|
|
192
|
-
* table.bind([STRIPE_KEY, bucket]);
|
|
193
|
-
* ```
|
|
194
|
-
*/
|
|
195
|
-
bind(constructs) {
|
|
196
|
-
Object.values(this.functions).forEach((fn) => fn.bind(constructs));
|
|
197
|
-
this.bindingForAllConsumers.push(...constructs);
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Binds the given list of resources to a specific consumer of this table.
|
|
201
|
-
*
|
|
202
|
-
* @example
|
|
203
|
-
* ```js
|
|
204
|
-
* table.bindToConsumer("consumer1", [STRIPE_KEY, bucket]);
|
|
205
|
-
* ```
|
|
206
|
-
*/
|
|
207
|
-
bindToConsumer(consumerName, constructs) {
|
|
208
|
-
if (!this.functions[consumerName]) {
|
|
209
|
-
throw new Error(`The "${consumerName}" consumer was not found in the "${this.node.id}" Table.`);
|
|
210
|
-
}
|
|
211
|
-
this.functions[consumerName].bind(constructs);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Grant permissions to all consumers of this table.
|
|
215
|
-
*
|
|
216
|
-
* @example
|
|
217
|
-
* ```js
|
|
218
|
-
* table.attachPermissions(["s3"]);
|
|
219
|
-
* ```
|
|
220
|
-
*/
|
|
221
|
-
attachPermissions(permissions) {
|
|
222
|
-
Object.values(this.functions).forEach((fn) => fn.attachPermissions(permissions));
|
|
223
|
-
this.permissionsAttachedForAllConsumers.push(permissions);
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Grant permissions to a specific consumer of this table.
|
|
227
|
-
*
|
|
228
|
-
* @example
|
|
229
|
-
* ```js
|
|
230
|
-
* table.attachPermissionsToConsumer("consumer1", ["s3"]);
|
|
231
|
-
* ```
|
|
232
|
-
*/
|
|
233
|
-
attachPermissionsToConsumer(consumerName, permissions) {
|
|
234
|
-
if (!this.functions[consumerName]) {
|
|
235
|
-
throw new Error(`The "${consumerName}" consumer was not found in the "${this.node.id}" Table.`);
|
|
236
|
-
}
|
|
237
|
-
this.functions[consumerName].attachPermissions(permissions);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Get the instance of the internally created Function, for a given consumer.
|
|
241
|
-
*
|
|
242
|
-
* ```js
|
|
243
|
-
* const table = new Table(stack, "Table", {
|
|
244
|
-
* consumers: {
|
|
245
|
-
* consumer1: "./src/function.handler",
|
|
246
|
-
* }
|
|
247
|
-
* })
|
|
248
|
-
* table.getFunction("consumer1");
|
|
249
|
-
* ```
|
|
250
|
-
*/
|
|
251
|
-
getFunction(consumerName) {
|
|
252
|
-
return this.functions[consumerName];
|
|
253
|
-
}
|
|
254
|
-
/** @internal */
|
|
255
|
-
getConstructMetadata() {
|
|
256
|
-
return {
|
|
257
|
-
type: "Table",
|
|
258
|
-
data: {
|
|
259
|
-
tableName: this.cdk.table.tableName,
|
|
260
|
-
consumers: Object.entries(this.functions).map(([name, fun]) => ({
|
|
261
|
-
name,
|
|
262
|
-
fn: getFunctionRef(fun),
|
|
263
|
-
})),
|
|
264
|
-
},
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
/** @internal */
|
|
268
|
-
getFunctionBinding() {
|
|
269
|
-
return {
|
|
270
|
-
clientPackage: "table",
|
|
271
|
-
variables: {
|
|
272
|
-
tableName: {
|
|
273
|
-
type: "plain",
|
|
274
|
-
value: this.tableName,
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
permissions: {
|
|
278
|
-
"dynamodb:*": [this.tableArn, `${this.tableArn}/*`],
|
|
279
|
-
},
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
createTable() {
|
|
283
|
-
const { fields, primaryIndex, stream, timeToLiveAttribute, cdk } = this.props;
|
|
284
|
-
const app = this.node.root;
|
|
285
|
-
const id = this.node.id;
|
|
286
|
-
if (isCDKConstruct(cdk?.table)) {
|
|
287
|
-
// Validate "fields" is not configured
|
|
288
|
-
if (fields !== undefined) {
|
|
289
|
-
throw new Error(`Cannot configure the "fields" when "cdk.table" is a construct in the "${id}" Table`);
|
|
290
|
-
}
|
|
291
|
-
// Validate "stream" is not configured
|
|
292
|
-
if (stream !== undefined) {
|
|
293
|
-
throw new Error(`Cannot configure the "stream" when "cdk.table" is a construct in the "${id}" Table`);
|
|
294
|
-
}
|
|
295
|
-
this.dynamodbTableType = "IMPORTED";
|
|
296
|
-
this.cdk.table = cdk?.table;
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
let dynamodbTableProps = (cdk?.table || {});
|
|
300
|
-
// Validate "fields" is configured
|
|
301
|
-
if (fields === undefined) {
|
|
302
|
-
throw new Error(`Missing "fields" in the "${id}" Table`);
|
|
303
|
-
}
|
|
304
|
-
// Validate dynamodbTableProps does not contain "partitionKey", "sortKey" and "stream"
|
|
305
|
-
if (dynamodbTableProps.partitionKey) {
|
|
306
|
-
throw new Error(`Cannot configure the "cdk.table.partitionKey" in the "${id}" Table`);
|
|
307
|
-
}
|
|
308
|
-
if (dynamodbTableProps.sortKey) {
|
|
309
|
-
throw new Error(`Cannot configure the "cdk.table.sortKey" in the "${id}" Table`);
|
|
310
|
-
}
|
|
311
|
-
if (dynamodbTableProps.stream) {
|
|
312
|
-
throw new Error(`Cannot configure the "cdk.table.stream" in the "${id}" Table`);
|
|
313
|
-
}
|
|
314
|
-
if (fields && primaryIndex) {
|
|
315
|
-
dynamodbTableProps = {
|
|
316
|
-
...dynamodbTableProps,
|
|
317
|
-
partitionKey: this.buildAttribute(fields, primaryIndex.partitionKey),
|
|
318
|
-
sortKey: primaryIndex.sortKey
|
|
319
|
-
? this.buildAttribute(fields, primaryIndex.sortKey)
|
|
320
|
-
: undefined,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
this.dynamodbTableType = "CREATED";
|
|
324
|
-
this.cdk.table = new dynamodb.Table(this, "Table", {
|
|
325
|
-
tableName: app.logicalPrefixedName(id),
|
|
326
|
-
pointInTimeRecovery: true,
|
|
327
|
-
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
|
|
328
|
-
stream: this.buildStreamConfig(stream),
|
|
329
|
-
timeToLiveAttribute,
|
|
330
|
-
...dynamodbTableProps,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
addConsumer(scope, consumerName, consumer) {
|
|
335
|
-
// validate stream enabled
|
|
336
|
-
// note: if table is imported, do not check because we want to allow ppl to
|
|
337
|
-
// import without specifying the "tableStreamArn". And let them add
|
|
338
|
-
// consumers to it.
|
|
339
|
-
if (!this.cdk.table.tableStreamArn) {
|
|
340
|
-
const errorMsgs = [
|
|
341
|
-
`Please enable the "stream" option to add consumers to the "${this.node.id}" Table.`,
|
|
342
|
-
];
|
|
343
|
-
if (this.dynamodbTableType === "IMPORTED") {
|
|
344
|
-
errorMsgs.push(`To import a table with stream enabled, use the "Table.fromTableAttributes()" method, and set the "tableStreamArn" in the attributes.`);
|
|
345
|
-
}
|
|
346
|
-
throw new Error(errorMsgs.join(" "));
|
|
347
|
-
}
|
|
348
|
-
// parse consumer
|
|
349
|
-
let consumerFunction, eventSourceProps, filters;
|
|
350
|
-
if (consumer.function) {
|
|
351
|
-
consumer = consumer;
|
|
352
|
-
consumerFunction = consumer.function;
|
|
353
|
-
eventSourceProps = consumer.cdk?.eventSource;
|
|
354
|
-
filters = consumer.filters;
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
consumerFunction = consumer;
|
|
358
|
-
}
|
|
359
|
-
// create function
|
|
360
|
-
const fn = Fn.fromDefinition(scope, `Consumer_${this.node.id}_${consumerName}`, consumerFunction, 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 consumers using FunctionProps, so the Table construct can apply the "defaults.function" to them.`);
|
|
361
|
-
this.functions[consumerName] = fn;
|
|
362
|
-
// create event source
|
|
363
|
-
fn.addEventSource(new lambdaEventSources.DynamoEventSource(this.cdk.table, {
|
|
364
|
-
startingPosition: lambda.StartingPosition.LATEST,
|
|
365
|
-
filters: filters?.map((filter) => ({
|
|
366
|
-
pattern: JSON.stringify(filter),
|
|
367
|
-
})),
|
|
368
|
-
...(eventSourceProps || {}),
|
|
369
|
-
}));
|
|
370
|
-
// attach permissions
|
|
371
|
-
this.permissionsAttachedForAllConsumers.forEach((permissions) => {
|
|
372
|
-
fn.attachPermissions(permissions);
|
|
373
|
-
});
|
|
374
|
-
fn.bind(this.bindingForAllConsumers);
|
|
375
|
-
return fn;
|
|
376
|
-
}
|
|
377
|
-
buildAttribute(fields, name) {
|
|
378
|
-
// Ensure the key is specified in "fields"
|
|
379
|
-
if (!fields[name]) {
|
|
380
|
-
throw new Error(`Please define "${name}" in "fields" to create the index in the "${this.node.id}" Table.`);
|
|
381
|
-
}
|
|
382
|
-
return {
|
|
383
|
-
name,
|
|
384
|
-
type: dynamodb.AttributeType[fields[name].toUpperCase()],
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
buildStreamConfig(stream) {
|
|
388
|
-
if (stream === true) {
|
|
389
|
-
return dynamodb.StreamViewType.NEW_AND_OLD_IMAGES;
|
|
390
|
-
}
|
|
391
|
-
else if (stream === false || stream === undefined) {
|
|
392
|
-
return undefined;
|
|
393
|
-
}
|
|
394
|
-
return dynamodb.StreamViewType[stream.toUpperCase()];
|
|
395
|
-
}
|
|
396
|
-
buildKinesisStreamSpec(kinesisStream) {
|
|
397
|
-
if (!kinesisStream) {
|
|
398
|
-
return;
|
|
399
|
-
}
|
|
400
|
-
const cfTable = this.cdk.table.node.defaultChild;
|
|
401
|
-
cfTable.addPropertyOverride("KinesisStreamSpecification.StreamArn", kinesisStream.streamArn);
|
|
402
|
-
}
|
|
403
|
-
validateFieldsAndIndexes(id, props) {
|
|
404
|
-
const { fields, primaryIndex } = props;
|
|
405
|
-
// Validate "fields"
|
|
406
|
-
if (fields && Object.keys(fields).length === 0) {
|
|
407
|
-
throw new Error(`No fields defined for the "${id}" Table`);
|
|
408
|
-
}
|
|
409
|
-
// Validate "primaryIndex"
|
|
410
|
-
if (primaryIndex && !primaryIndex.partitionKey) {
|
|
411
|
-
throw new Error(`Missing "partitionKey" in primary index for the "${id}" Table`);
|
|
412
|
-
}
|
|
413
|
-
// Validate "fields" and "primaryIndex" co-exists
|
|
414
|
-
if (fields) {
|
|
415
|
-
if (!primaryIndex) {
|
|
416
|
-
throw new Error(`Missing "primaryIndex" in "${id}" Table`);
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
if (primaryIndex) {
|
|
421
|
-
throw new Error(`Cannot configure the "primaryIndex" without setting the "fields" in "${id}" Table`);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
package/constructs/Topic.d.ts
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { ITopic, Subscription, TopicProps as AWSTopicProps } from "aws-cdk-lib/aws-sns";
|
|
2
|
-
import { LambdaSubscriptionProps, SqsSubscriptionProps } from "aws-cdk-lib/aws-sns-subscriptions";
|
|
3
|
-
import { Construct } from "constructs";
|
|
4
|
-
import { SSTConstruct } from "./Construct.js";
|
|
5
|
-
import { Function as Fn, FunctionProps, FunctionInlineDefinition, FunctionDefinition } from "./Function.js";
|
|
6
|
-
import { Queue } from "./Queue.js";
|
|
7
|
-
import { FunctionBindingProps } from "./util/functionBinding.js";
|
|
8
|
-
import { Permissions } from "./util/permission.js";
|
|
9
|
-
/**
|
|
10
|
-
* Used to define a queue subscriber for a topic
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```js
|
|
14
|
-
* new Topic(stack, "Topic", {
|
|
15
|
-
* subscribers: {
|
|
16
|
-
* subscriber: {
|
|
17
|
-
* type: "queue",
|
|
18
|
-
* queue: new Queue(stack, "Queue", {
|
|
19
|
-
* consumer: "src/function.handler"
|
|
20
|
-
* })
|
|
21
|
-
* }
|
|
22
|
-
* }
|
|
23
|
-
* })
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export interface TopicQueueSubscriberProps {
|
|
27
|
-
/**
|
|
28
|
-
* String literal to signify that the subscriber is a queue
|
|
29
|
-
*/
|
|
30
|
-
type: "queue";
|
|
31
|
-
/**
|
|
32
|
-
* The queue that'll be added as a subscriber to the topic.
|
|
33
|
-
*/
|
|
34
|
-
queue: Queue;
|
|
35
|
-
cdk?: {
|
|
36
|
-
/**
|
|
37
|
-
* This allows you to override the default settings this construct uses internally to create the subscriber.
|
|
38
|
-
*/
|
|
39
|
-
subscription?: SqsSubscriptionProps;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Used to define a function subscriber for a topic
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```js
|
|
47
|
-
* new Topic(stack, "Topic", {
|
|
48
|
-
* subscribers: {
|
|
49
|
-
* subscriber: "src/function.handler"
|
|
50
|
-
* }
|
|
51
|
-
* })
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
export interface TopicFunctionSubscriberProps {
|
|
55
|
-
/**
|
|
56
|
-
* String literal to signify that the subscriber is a function
|
|
57
|
-
*/
|
|
58
|
-
type?: "function";
|
|
59
|
-
/**
|
|
60
|
-
* Used to create the subscriber function for the topic
|
|
61
|
-
*/
|
|
62
|
-
function: FunctionDefinition;
|
|
63
|
-
cdk?: {
|
|
64
|
-
/**
|
|
65
|
-
* This allows you to override the default settings this construct uses internally to create the subscriber.
|
|
66
|
-
*/
|
|
67
|
-
subscription?: LambdaSubscriptionProps;
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
export interface TopicProps {
|
|
71
|
-
defaults?: {
|
|
72
|
-
/**
|
|
73
|
-
* The default function props to be applied to all the consumers in the Topic. The `environment`, `permissions` and `layers` properties will be merged with per route definitions if they are defined.
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
*
|
|
77
|
-
* ```js
|
|
78
|
-
* new Topic(stack, "Topic", {
|
|
79
|
-
* defaults: {
|
|
80
|
-
* function: {
|
|
81
|
-
* timeout: 20,
|
|
82
|
-
* }
|
|
83
|
-
* },
|
|
84
|
-
* });
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
function?: FunctionProps;
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* Configure subscribers for this topic
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```js
|
|
94
|
-
* new Topic(stack, "Topic", {
|
|
95
|
-
* subscribers: {
|
|
96
|
-
* subscriber1: "src/function1.handler",
|
|
97
|
-
* subscriber2: "src/function2.handler"
|
|
98
|
-
* },
|
|
99
|
-
* });
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
subscribers?: Record<string, FunctionInlineDefinition | TopicFunctionSubscriberProps | Queue | TopicQueueSubscriberProps>;
|
|
103
|
-
cdk?: {
|
|
104
|
-
/**
|
|
105
|
-
* Allows you to override default id for this construct.
|
|
106
|
-
*/
|
|
107
|
-
id?: string;
|
|
108
|
-
/**
|
|
109
|
-
* Override the default settings this construct uses internally to create the topic.
|
|
110
|
-
*/
|
|
111
|
-
topic?: ITopic | AWSTopicProps;
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 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.
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
*
|
|
119
|
-
* ```js
|
|
120
|
-
* import { Topic } from "sst/constructs";
|
|
121
|
-
*
|
|
122
|
-
* new Topic(stack, "Topic", {
|
|
123
|
-
* subscribers: {
|
|
124
|
-
* subscriber1: "src/function1.handler",
|
|
125
|
-
* subscriber2: "src/function2.handler"
|
|
126
|
-
* },
|
|
127
|
-
* });
|
|
128
|
-
* ```
|
|
129
|
-
*/
|
|
130
|
-
export declare class Topic extends Construct implements SSTConstruct {
|
|
131
|
-
readonly id: string;
|
|
132
|
-
readonly cdk: {
|
|
133
|
-
/**
|
|
134
|
-
* The internally created CDK `Topic` instance.
|
|
135
|
-
*/
|
|
136
|
-
topic: ITopic;
|
|
137
|
-
};
|
|
138
|
-
private subscribers;
|
|
139
|
-
private bindingForAllSubscribers;
|
|
140
|
-
private permissionsAttachedForAllSubscribers;
|
|
141
|
-
private props;
|
|
142
|
-
constructor(scope: Construct, id: string, props?: TopicProps);
|
|
143
|
-
/**
|
|
144
|
-
* The ARN of the internally created SNS Topic.
|
|
145
|
-
*/
|
|
146
|
-
get topicArn(): string;
|
|
147
|
-
/**
|
|
148
|
-
* The name of the internally created SNS Topic.
|
|
149
|
-
*/
|
|
150
|
-
get topicName(): string;
|
|
151
|
-
/**
|
|
152
|
-
* Get a list of subscriptions for this topic
|
|
153
|
-
*/
|
|
154
|
-
get subscriptions(): Subscription[];
|
|
155
|
-
/**
|
|
156
|
-
* A list of the internally created function instances for the subscribers.
|
|
157
|
-
*/
|
|
158
|
-
get subscriberFunctions(): Fn[];
|
|
159
|
-
/**
|
|
160
|
-
* Add subscribers to the topic.
|
|
161
|
-
*
|
|
162
|
-
* @example
|
|
163
|
-
* ```js
|
|
164
|
-
* const topic = new Topic(stack, "Topic", {
|
|
165
|
-
* subscribers: {
|
|
166
|
-
* subscriber1: "src/function1.handler",
|
|
167
|
-
* subscriber2: "src/function2.handler"
|
|
168
|
-
* },
|
|
169
|
-
* });
|
|
170
|
-
* topic.addSubscribers(stack, {
|
|
171
|
-
* subscriber3: "src/function3.handler"
|
|
172
|
-
* });
|
|
173
|
-
* ```
|
|
174
|
-
*/
|
|
175
|
-
addSubscribers(scope: Construct, subscribers: {
|
|
176
|
-
[subscriberName: string]: FunctionInlineDefinition | TopicFunctionSubscriberProps | Queue | TopicQueueSubscriberProps;
|
|
177
|
-
}): void;
|
|
178
|
-
/**
|
|
179
|
-
* Binds the given list of resources to all the subscriber functions.
|
|
180
|
-
*
|
|
181
|
-
* @example
|
|
182
|
-
*
|
|
183
|
-
* ```js
|
|
184
|
-
* const topic = new Topic(stack, "Topic", {
|
|
185
|
-
* subscribers: {
|
|
186
|
-
* subscriber1: "src/function1.handler",
|
|
187
|
-
* subscriber2: "src/function2.handler"
|
|
188
|
-
* },
|
|
189
|
-
* });
|
|
190
|
-
* topic.bind([STRIPE_KEY, bucket]);
|
|
191
|
-
* ```
|
|
192
|
-
*/
|
|
193
|
-
bind(constructs: SSTConstruct[]): void;
|
|
194
|
-
/**
|
|
195
|
-
* Binds the given list of resources to a specific subscriber.
|
|
196
|
-
* @example
|
|
197
|
-
* ```js {8}
|
|
198
|
-
* const topic = new Topic(stack, "Topic", {
|
|
199
|
-
* subscribers: {
|
|
200
|
-
* subscriber1: "src/function1.handler",
|
|
201
|
-
* subscriber2: "src/function2.handler"
|
|
202
|
-
* },
|
|
203
|
-
* });
|
|
204
|
-
*
|
|
205
|
-
* topic.bindToSubscriber("subscriber1", [STRIPE_KEY, bucket]);
|
|
206
|
-
* ```
|
|
207
|
-
*/
|
|
208
|
-
bindToSubscriber(subscriberName: string, constructs: SSTConstruct[]): void;
|
|
209
|
-
/**
|
|
210
|
-
* Attaches the given list of permissions to all the subscriber functions. This allows the subscribers to access other AWS resources.
|
|
211
|
-
*
|
|
212
|
-
* @example
|
|
213
|
-
*
|
|
214
|
-
* ```js
|
|
215
|
-
* const topic = new Topic(stack, "Topic", {
|
|
216
|
-
* subscribers: {
|
|
217
|
-
* subscriber1: "src/function1.handler",
|
|
218
|
-
* subscriber2: "src/function2.handler"
|
|
219
|
-
* },
|
|
220
|
-
* });
|
|
221
|
-
* topic.attachPermissions(["s3"]);
|
|
222
|
-
* ```
|
|
223
|
-
*/
|
|
224
|
-
attachPermissions(permissions: Permissions): void;
|
|
225
|
-
/**
|
|
226
|
-
* Attaches the list of permissions to a specific subscriber.
|
|
227
|
-
* @example
|
|
228
|
-
* ```js {8}
|
|
229
|
-
* const topic = new Topic(stack, "Topic", {
|
|
230
|
-
* subscribers: {
|
|
231
|
-
* subscriber1: "src/function1.handler",
|
|
232
|
-
* subscriber2: "src/function2.handler"
|
|
233
|
-
* },
|
|
234
|
-
* });
|
|
235
|
-
*
|
|
236
|
-
* topic.attachPermissionsToSubscriber("subscriber1", ["s3"]);
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
attachPermissionsToSubscriber(subscriberName: string, permissions: Permissions): void;
|
|
240
|
-
getConstructMetadata(): {
|
|
241
|
-
type: "Topic";
|
|
242
|
-
data: {
|
|
243
|
-
topicArn: string;
|
|
244
|
-
subscribers: ({
|
|
245
|
-
node: string;
|
|
246
|
-
stack: string;
|
|
247
|
-
} | undefined)[];
|
|
248
|
-
subscriberNames: string[];
|
|
249
|
-
};
|
|
250
|
-
};
|
|
251
|
-
/** @internal */
|
|
252
|
-
getFunctionBinding(): FunctionBindingProps;
|
|
253
|
-
private createTopic;
|
|
254
|
-
private addSubscriber;
|
|
255
|
-
private addQueueSubscriber;
|
|
256
|
-
private addFunctionSubscriber;
|
|
257
|
-
}
|