sst 3.0.0 → 3.0.1-1
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 +7 -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
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import * as kinesis from "aws-cdk-lib/aws-kinesis";
|
|
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 `KinesisStream` construct is a higher level CDK construct that makes it easy to create a Kinesis Data Stream and add a list of consumers to it.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
*
|
|
15
|
-
* ```js
|
|
16
|
-
* import { KinesisStream } from "sst/constructs";
|
|
17
|
-
*
|
|
18
|
-
* new KinesisStream(stack, "Stream", {
|
|
19
|
-
* consumers: {
|
|
20
|
-
* myConsumer: "src/lambda.main",
|
|
21
|
-
* }
|
|
22
|
-
* });
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export class KinesisStream extends Construct {
|
|
26
|
-
id;
|
|
27
|
-
cdk;
|
|
28
|
-
functions = {};
|
|
29
|
-
bindingForAllConsumers = [];
|
|
30
|
-
permissionsAttachedForAllConsumers = [];
|
|
31
|
-
props;
|
|
32
|
-
constructor(scope, id, props) {
|
|
33
|
-
super(scope, props?.cdk?.id || id);
|
|
34
|
-
this.id = id;
|
|
35
|
-
this.props = props || {};
|
|
36
|
-
this.cdk = {};
|
|
37
|
-
this.createStream();
|
|
38
|
-
// Create Consumers
|
|
39
|
-
if (props?.consumers) {
|
|
40
|
-
for (const consumerName in props.consumers) {
|
|
41
|
-
this.addConsumer(this, consumerName, props.consumers[consumerName]);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* The ARN of the internally created Kinesis Stream
|
|
47
|
-
*/
|
|
48
|
-
get streamArn() {
|
|
49
|
-
return this.cdk.stream.streamArn;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* The name of the internally created Kinesis Stream
|
|
53
|
-
*/
|
|
54
|
-
get streamName() {
|
|
55
|
-
return this.cdk.stream.streamName;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Add consumers to a stream after creating it
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```js
|
|
62
|
-
* stream.addConsumers(stack, {
|
|
63
|
-
* consumer1: "src/function.handler"
|
|
64
|
-
* })
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
addConsumers(scope, consumers) {
|
|
68
|
-
Object.keys(consumers).forEach((consumerName) => {
|
|
69
|
-
this.addConsumer(scope, consumerName, consumers[consumerName]);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Binds the given list of resources to all the consumers.
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
*
|
|
77
|
-
* ```js
|
|
78
|
-
* stream.bind([STRIPE_KEY, bucket]]);
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
bind(constructs) {
|
|
82
|
-
Object.values(this.functions).forEach((fn) => fn.bind(constructs));
|
|
83
|
-
this.bindingForAllConsumers.push(...constructs);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Binds the given list of resources to a specific consumer.
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```js
|
|
90
|
-
* stream.bindToConsumer("consumer1", [STRIPE_KEY, bucket]);
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
bindToConsumer(consumerName, constructs) {
|
|
94
|
-
if (!this.functions[consumerName]) {
|
|
95
|
-
throw new Error(`The "${consumerName}" consumer was not found in the "${this.node.id}" KinesisStream.`);
|
|
96
|
-
}
|
|
97
|
-
this.functions[consumerName].bind(constructs);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Attaches the given list of permissions to all the consumers. This allows the functions to access other AWS resources.
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
*
|
|
104
|
-
* ```js
|
|
105
|
-
* stream.attachPermissions(["s3"]);
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
|
-
attachPermissions(permissions) {
|
|
109
|
-
Object.values(this.functions).forEach((fn) => fn.attachPermissions(permissions));
|
|
110
|
-
this.permissionsAttachedForAllConsumers.push(permissions);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Attaches the given list of permissions to a specific consumer. This allows that function to access other AWS resources.
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```js
|
|
117
|
-
* stream.attachPermissionsToConsumer("consumer1", ["s3"]);
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
attachPermissionsToConsumer(consumerName, permissions) {
|
|
121
|
-
if (!this.functions[consumerName]) {
|
|
122
|
-
throw new Error(`The "${consumerName}" consumer was not found in the "${this.node.id}" KinesisStream.`);
|
|
123
|
-
}
|
|
124
|
-
this.functions[consumerName].attachPermissions(permissions);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Get the function for a specific consumer
|
|
128
|
-
*
|
|
129
|
-
* @example
|
|
130
|
-
* ```js
|
|
131
|
-
* stream.getFunction("consumer1");
|
|
132
|
-
* ```
|
|
133
|
-
*/
|
|
134
|
-
getFunction(consumerName) {
|
|
135
|
-
return this.functions[consumerName];
|
|
136
|
-
}
|
|
137
|
-
getConstructMetadata() {
|
|
138
|
-
return {
|
|
139
|
-
type: "KinesisStream",
|
|
140
|
-
data: {
|
|
141
|
-
streamName: this.cdk.stream.streamName,
|
|
142
|
-
consumers: Object.entries(this.functions).map(([name, fn]) => ({
|
|
143
|
-
name,
|
|
144
|
-
fn: getFunctionRef(fn),
|
|
145
|
-
})),
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
/** @internal */
|
|
150
|
-
getFunctionBinding() {
|
|
151
|
-
return {
|
|
152
|
-
clientPackage: "kinesis-stream",
|
|
153
|
-
variables: {
|
|
154
|
-
streamName: {
|
|
155
|
-
type: "plain",
|
|
156
|
-
value: this.streamName,
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
permissions: {
|
|
160
|
-
"kinesis:*": [this.streamArn],
|
|
161
|
-
},
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
createStream() {
|
|
165
|
-
const { cdk } = this.props;
|
|
166
|
-
const app = this.node.root;
|
|
167
|
-
const id = this.node.id;
|
|
168
|
-
if (isCDKConstruct(cdk?.stream)) {
|
|
169
|
-
this.cdk.stream = cdk?.stream;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
const kinesisStreamProps = (cdk?.stream || {});
|
|
173
|
-
this.cdk.stream = new kinesis.Stream(this, "Stream", {
|
|
174
|
-
streamName: app.logicalPrefixedName(id),
|
|
175
|
-
...kinesisStreamProps,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
addConsumer(scope, consumerName, consumer) {
|
|
180
|
-
// normalize consumer
|
|
181
|
-
let consumerFunction, consumerProps;
|
|
182
|
-
if (consumer.function) {
|
|
183
|
-
consumer = consumer;
|
|
184
|
-
consumerFunction = consumer.function;
|
|
185
|
-
consumerProps = consumer.cdk?.eventSource;
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
consumerFunction = consumer;
|
|
189
|
-
}
|
|
190
|
-
consumerProps = {
|
|
191
|
-
startingPosition: lambda.StartingPosition.LATEST,
|
|
192
|
-
...(consumerProps || {}),
|
|
193
|
-
};
|
|
194
|
-
// create function
|
|
195
|
-
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 KinesisStream construct can apply the "defaults.function" to them.`);
|
|
196
|
-
this.functions[consumerName] = fn;
|
|
197
|
-
// create event source
|
|
198
|
-
const eventSource = new lambdaEventSources.KinesisEventSource(this.cdk.stream, consumerProps);
|
|
199
|
-
fn.addEventSource(eventSource);
|
|
200
|
-
// attach permissions
|
|
201
|
-
this.permissionsAttachedForAllConsumers.forEach((permissions) => {
|
|
202
|
-
fn.attachPermissions(permissions);
|
|
203
|
-
});
|
|
204
|
-
fn.bind(this.bindingForAllConsumers);
|
|
205
|
-
return fn;
|
|
206
|
-
}
|
|
207
|
-
}
|
package/constructs/Metadata.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { SSTConstruct } from "./Construct.js";
|
|
2
|
-
type ExtractMetadata<T extends SSTConstruct> = ReturnType<T["getConstructMetadata"]> & {
|
|
3
|
-
id: string;
|
|
4
|
-
addr: string;
|
|
5
|
-
stack: string;
|
|
6
|
-
};
|
|
7
|
-
import type { Api } from "./Api.js";
|
|
8
|
-
export type ApiMetadata = ExtractMetadata<Api<any>>;
|
|
9
|
-
import type { ApiGatewayV1Api } from "./ApiGatewayV1Api.js";
|
|
10
|
-
export type ApiGatewayV1ApiMetadata = ExtractMetadata<ApiGatewayV1Api<any>>;
|
|
11
|
-
import type { Cognito } from "./Cognito.js";
|
|
12
|
-
export type CognitoMetadata = ExtractMetadata<Cognito>;
|
|
13
|
-
import type { AppSyncApi } from "./AppSyncApi.js";
|
|
14
|
-
export type AppSyncApiMetadata = ExtractMetadata<AppSyncApi>;
|
|
15
|
-
import type { Bucket } from "./Bucket.js";
|
|
16
|
-
export type BucketMetadata = ExtractMetadata<Bucket>;
|
|
17
|
-
import type { Cron } from "./Cron.js";
|
|
18
|
-
export type CronMetadata = ExtractMetadata<Cron>;
|
|
19
|
-
import type { EventBus } from "./EventBus.js";
|
|
20
|
-
export type EventBusMetadata = ExtractMetadata<EventBus>;
|
|
21
|
-
import type { Function as Fn } from "./Function.js";
|
|
22
|
-
import type { SsrFunction } from "./SsrFunction.js";
|
|
23
|
-
export type FunctionMetadata = ExtractMetadata<Fn> | ExtractMetadata<SsrFunction>;
|
|
24
|
-
import type { KinesisStream } from "./KinesisStream.js";
|
|
25
|
-
export type KinesisStreamMetadata = ExtractMetadata<KinesisStream>;
|
|
26
|
-
import type { NextjsSite as SlsNextjsSite } from "./deprecated/NextjsSite.js";
|
|
27
|
-
export type SlsNextjsMetadata = ExtractMetadata<SlsNextjsSite>;
|
|
28
|
-
import type { Queue } from "./Queue.js";
|
|
29
|
-
export type QueueMetadata = ExtractMetadata<Queue>;
|
|
30
|
-
import type { Service } from "./Service.js";
|
|
31
|
-
export type ServiceMetadata = ExtractMetadata<Service>;
|
|
32
|
-
import type { StaticSite } from "./StaticSite.js";
|
|
33
|
-
export type StaticSiteMetadata = ExtractMetadata<StaticSite>;
|
|
34
|
-
import type { Table } from "./Table.js";
|
|
35
|
-
export type TableMetadata = ExtractMetadata<Table>;
|
|
36
|
-
import type { Topic } from "./Topic.js";
|
|
37
|
-
export type TopicMetadata = ExtractMetadata<Topic>;
|
|
38
|
-
import type { WebSocketApi } from "./WebSocketApi.js";
|
|
39
|
-
export type WebSocketApiMetadata = ExtractMetadata<WebSocketApi>;
|
|
40
|
-
import type { RDS } from "./RDS.js";
|
|
41
|
-
export type RDSMetadata = ExtractMetadata<RDS>;
|
|
42
|
-
import type { Auth } from "./future/Auth.js";
|
|
43
|
-
export type AuthMetadata = ExtractMetadata<Auth>;
|
|
44
|
-
import type { Script } from "./Script.js";
|
|
45
|
-
export type ScriptMetadata = ExtractMetadata<Script>;
|
|
46
|
-
import type { Job } from "./Job.js";
|
|
47
|
-
export type JobMetadata = ExtractMetadata<Job>;
|
|
48
|
-
import type { NextjsSite } from "./NextjsSite.js";
|
|
49
|
-
export type NextjsSiteMetadata = ExtractMetadata<NextjsSite>;
|
|
50
|
-
import type { AstroSite } from "./AstroSite.js";
|
|
51
|
-
export type AstroSiteMetadata = ExtractMetadata<AstroSite>;
|
|
52
|
-
import type { RemixSite } from "./RemixSite.js";
|
|
53
|
-
export type RemixSiteMetadata = ExtractMetadata<RemixSite>;
|
|
54
|
-
import type { SvelteKitSite } from "./SvelteKitSite.js";
|
|
55
|
-
export type SvelteKitSiteMetadata = ExtractMetadata<SvelteKitSite>;
|
|
56
|
-
import type { SolidStartSite } from "./SolidStartSite.js";
|
|
57
|
-
export type SolidStartSiteMetadata = ExtractMetadata<SolidStartSite>;
|
|
58
|
-
export type SSRSiteMetadata = NextjsSiteMetadata | AstroSiteMetadata | RemixSiteMetadata | SolidStartSiteMetadata | SvelteKitSiteMetadata;
|
|
59
|
-
export type Metadata = ApiMetadata | ApiGatewayV1ApiMetadata | CognitoMetadata | AppSyncApiMetadata | BucketMetadata | CronMetadata | EventBusMetadata | FunctionMetadata | KinesisStreamMetadata | SlsNextjsMetadata | QueueMetadata | StaticSiteMetadata | TableMetadata | TopicMetadata | WebSocketApiMetadata | RDSMetadata | AuthMetadata | ScriptMetadata | JobMetadata | SSRSiteMetadata | ServiceMetadata;
|
|
60
|
-
export {};
|
package/constructs/Metadata.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { FunctionProps } from "aws-cdk-lib/aws-lambda";
|
|
3
|
-
import { Distribution } from "./Distribution.js";
|
|
4
|
-
import { SsrFunction } from "./SsrFunction.js";
|
|
5
|
-
import { EdgeFunction } from "./EdgeFunction.js";
|
|
6
|
-
import { SsrSite, SsrSiteProps } from "./SsrSite.js";
|
|
7
|
-
import { Size } from "./util/size.js";
|
|
8
|
-
export interface NextjsSiteProps extends Omit<SsrSiteProps, "nodejs"> {
|
|
9
|
-
imageOptimization?: {
|
|
10
|
-
/**
|
|
11
|
-
* The amount of memory in MB allocated for image optimization function.
|
|
12
|
-
* @default 1024 MB
|
|
13
|
-
* @example
|
|
14
|
-
* ```js
|
|
15
|
-
* memorySize: "512 MB",
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
memorySize?: number | Size;
|
|
19
|
-
};
|
|
20
|
-
cdk?: SsrSiteProps["cdk"] & {
|
|
21
|
-
revalidation?: Pick<FunctionProps, "vpc" | "vpcSubnets">;
|
|
22
|
-
/**
|
|
23
|
-
* Override the CloudFront cache policy properties for responses from the
|
|
24
|
-
* server rendering Lambda.
|
|
25
|
-
*
|
|
26
|
-
* @default
|
|
27
|
-
* By default, the cache policy is configured to cache all responses from
|
|
28
|
-
* the server rendering Lambda based on the query-key only. If you're using
|
|
29
|
-
* cookie or header based authentication, you'll need to override the
|
|
30
|
-
* cache policy to cache based on those values as well.
|
|
31
|
-
*
|
|
32
|
-
* ```js
|
|
33
|
-
* serverCachePolicy: new CachePolicy(this, "ServerCache", {
|
|
34
|
-
* queryStringBehavior: CacheQueryStringBehavior.all()
|
|
35
|
-
* headerBehavior: CacheHeaderBehavior.allowList(
|
|
36
|
-
* "accept",
|
|
37
|
-
* "rsc",
|
|
38
|
-
* "next-router-prefetch",
|
|
39
|
-
* "next-router-state-tree",
|
|
40
|
-
* "next-url",
|
|
41
|
-
* ),
|
|
42
|
-
* cookieBehavior: CacheCookieBehavior.none()
|
|
43
|
-
* defaultTtl: Duration.days(0)
|
|
44
|
-
* maxTtl: Duration.days(365)
|
|
45
|
-
* minTtl: Duration.days(0)
|
|
46
|
-
* })
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
serverCachePolicy?: NonNullable<SsrSiteProps["cdk"]>["serverCachePolicy"];
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* The `NextjsSite` construct is a higher level CDK construct that makes it easy to create a Next.js app.
|
|
54
|
-
* @example
|
|
55
|
-
* Deploys a Next.js app in the `my-next-app` directory.
|
|
56
|
-
*
|
|
57
|
-
* ```js
|
|
58
|
-
* new NextjsSite(stack, "web", {
|
|
59
|
-
* path: "my-next-app/",
|
|
60
|
-
* });
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
export declare class NextjsSite extends SsrSite {
|
|
64
|
-
protected props: NextjsSiteProps & {
|
|
65
|
-
path: Exclude<NextjsSiteProps["path"], undefined>;
|
|
66
|
-
runtime: Exclude<NextjsSiteProps["runtime"], undefined>;
|
|
67
|
-
timeout: Exclude<NextjsSiteProps["timeout"], undefined>;
|
|
68
|
-
memorySize: Exclude<NextjsSiteProps["memorySize"], undefined>;
|
|
69
|
-
waitForInvalidation: Exclude<NextjsSiteProps["waitForInvalidation"], undefined>;
|
|
70
|
-
};
|
|
71
|
-
constructor(scope: Construct, id: string, props?: NextjsSiteProps);
|
|
72
|
-
protected createRevalidation(): void;
|
|
73
|
-
protected initBuildConfig(): {
|
|
74
|
-
typesPath: string;
|
|
75
|
-
serverBuildOutputFile: string;
|
|
76
|
-
clientBuildOutputDir: string;
|
|
77
|
-
clientBuildVersionedSubDir: string;
|
|
78
|
-
clientBuildS3KeyPrefix: string;
|
|
79
|
-
prerenderedBuildOutputDir: string;
|
|
80
|
-
prerenderedBuildS3KeyPrefix: string;
|
|
81
|
-
warmerFunctionAssetPath: string;
|
|
82
|
-
};
|
|
83
|
-
protected createFunctionForRegional(): SsrFunction;
|
|
84
|
-
protected createFunctionForEdge(): EdgeFunction;
|
|
85
|
-
private createImageOptimizationFunction;
|
|
86
|
-
protected createCloudFrontDistributionForRegional(): Distribution;
|
|
87
|
-
protected createCloudFrontDistributionForEdge(): Distribution;
|
|
88
|
-
protected useServerBehaviorCachePolicy(): import("aws-cdk-lib/aws-cloudfront").CachePolicy;
|
|
89
|
-
private buildImageBehavior;
|
|
90
|
-
protected generateBuildId(): string;
|
|
91
|
-
getConstructMetadata(): {
|
|
92
|
-
data: {
|
|
93
|
-
mode: "placeholder" | "deployed";
|
|
94
|
-
path: string;
|
|
95
|
-
runtime: "nodejs14.x" | "nodejs16.x" | "nodejs18.x";
|
|
96
|
-
customDomainUrl: string | undefined;
|
|
97
|
-
url: string | undefined;
|
|
98
|
-
edge: boolean | undefined;
|
|
99
|
-
server: string;
|
|
100
|
-
secrets: string[];
|
|
101
|
-
};
|
|
102
|
-
type: "NextjsSite";
|
|
103
|
-
};
|
|
104
|
-
}
|
package/constructs/NextjsSite.js
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { Fn, Duration as CdkDuration, RemovalPolicy } from "aws-cdk-lib/core";
|
|
4
|
-
import { PolicyStatement } from "aws-cdk-lib/aws-iam";
|
|
5
|
-
import { RetentionDays } from "aws-cdk-lib/aws-logs";
|
|
6
|
-
import { Code, Runtime, Architecture, Function as CdkFunction, FunctionUrlAuthType, } from "aws-cdk-lib/aws-lambda";
|
|
7
|
-
import { ViewerProtocolPolicy, AllowedMethods, CachedMethods, LambdaEdgeEventType, } from "aws-cdk-lib/aws-cloudfront";
|
|
8
|
-
import { HttpOrigin } from "aws-cdk-lib/aws-cloudfront-origins";
|
|
9
|
-
import { Queue } from "aws-cdk-lib/aws-sqs";
|
|
10
|
-
import { SqsEventSource } from "aws-cdk-lib/aws-lambda-event-sources";
|
|
11
|
-
import { Stack } from "./Stack.js";
|
|
12
|
-
import { Distribution } from "./Distribution.js";
|
|
13
|
-
import { SsrFunction } from "./SsrFunction.js";
|
|
14
|
-
import { EdgeFunction } from "./EdgeFunction.js";
|
|
15
|
-
import { SsrSite } from "./SsrSite.js";
|
|
16
|
-
import { toCdkSize } from "./util/size.js";
|
|
17
|
-
/**
|
|
18
|
-
* The `NextjsSite` construct is a higher level CDK construct that makes it easy to create a Next.js app.
|
|
19
|
-
* @example
|
|
20
|
-
* Deploys a Next.js app in the `my-next-app` directory.
|
|
21
|
-
*
|
|
22
|
-
* ```js
|
|
23
|
-
* new NextjsSite(stack, "web", {
|
|
24
|
-
* path: "my-next-app/",
|
|
25
|
-
* });
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export class NextjsSite extends SsrSite {
|
|
29
|
-
constructor(scope, id, props) {
|
|
30
|
-
super(scope, id, {
|
|
31
|
-
buildCommand: "npx --yes open-next@2.1.5 build",
|
|
32
|
-
...props,
|
|
33
|
-
});
|
|
34
|
-
this.deferredTaskCallbacks.push(() => {
|
|
35
|
-
this.createRevalidation();
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
createRevalidation() {
|
|
39
|
-
if (!this.serverLambdaForRegional && !this.serverLambdaForEdge)
|
|
40
|
-
return;
|
|
41
|
-
const { cdk } = this.props;
|
|
42
|
-
const queue = new Queue(this, "RevalidationQueue", {
|
|
43
|
-
fifo: true,
|
|
44
|
-
receiveMessageWaitTime: CdkDuration.seconds(20),
|
|
45
|
-
});
|
|
46
|
-
const consumer = new CdkFunction(this, "RevalidationFunction", {
|
|
47
|
-
description: "Next.js revalidator",
|
|
48
|
-
handler: "index.handler",
|
|
49
|
-
code: Code.fromAsset(path.join(this.props.path, ".open-next", "revalidation-function")),
|
|
50
|
-
runtime: Runtime.NODEJS_18_X,
|
|
51
|
-
timeout: CdkDuration.seconds(30),
|
|
52
|
-
...cdk?.revalidation,
|
|
53
|
-
});
|
|
54
|
-
consumer.addEventSource(new SqsEventSource(queue, { batchSize: 5 }));
|
|
55
|
-
// Allow server to send messages to the queue
|
|
56
|
-
const server = this.serverLambdaForRegional || this.serverLambdaForEdge;
|
|
57
|
-
server?.addEnvironment("REVALIDATION_QUEUE_URL", queue.queueUrl);
|
|
58
|
-
server?.addEnvironment("REVALIDATION_QUEUE_REGION", Stack.of(this).region);
|
|
59
|
-
queue.grantSendMessages(server?.role);
|
|
60
|
-
}
|
|
61
|
-
initBuildConfig() {
|
|
62
|
-
return {
|
|
63
|
-
typesPath: ".",
|
|
64
|
-
serverBuildOutputFile: ".open-next/server-function/index.mjs",
|
|
65
|
-
clientBuildOutputDir: ".open-next/assets",
|
|
66
|
-
clientBuildVersionedSubDir: "_next",
|
|
67
|
-
clientBuildS3KeyPrefix: "_assets",
|
|
68
|
-
prerenderedBuildOutputDir: ".open-next/cache",
|
|
69
|
-
prerenderedBuildS3KeyPrefix: "_cache",
|
|
70
|
-
warmerFunctionAssetPath: path.join(this.props.path, ".open-next/warmer-function"),
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
createFunctionForRegional() {
|
|
74
|
-
const { runtime, timeout, memorySize, bind, permissions, environment, cdk, } = this.props;
|
|
75
|
-
return new SsrFunction(this, `ServerFunction`, {
|
|
76
|
-
description: "Next.js server",
|
|
77
|
-
bundle: path.join(this.props.path, ".open-next", "server-function"),
|
|
78
|
-
handler: "index.handler",
|
|
79
|
-
runtime,
|
|
80
|
-
timeout,
|
|
81
|
-
memorySize,
|
|
82
|
-
bind,
|
|
83
|
-
permissions,
|
|
84
|
-
environment: {
|
|
85
|
-
...environment,
|
|
86
|
-
CACHE_BUCKET_NAME: this.bucket.bucketName,
|
|
87
|
-
CACHE_BUCKET_KEY_PREFIX: "_cache",
|
|
88
|
-
CACHE_BUCKET_REGION: Stack.of(this).region,
|
|
89
|
-
},
|
|
90
|
-
...cdk?.server,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
createFunctionForEdge() {
|
|
94
|
-
const { runtime, timeout, memorySize, bind, permissions, environment } = this.props;
|
|
95
|
-
return new EdgeFunction(this, "ServerFunction", {
|
|
96
|
-
bundle: path.join(this.props.path, ".open-next", "server-function"),
|
|
97
|
-
handler: "index.handler",
|
|
98
|
-
runtime,
|
|
99
|
-
timeout,
|
|
100
|
-
memorySize,
|
|
101
|
-
bind,
|
|
102
|
-
permissions,
|
|
103
|
-
environment: {
|
|
104
|
-
...environment,
|
|
105
|
-
CACHE_BUCKET_NAME: this.bucket.bucketName,
|
|
106
|
-
CACHE_BUCKET_KEY_PREFIX: "_cache",
|
|
107
|
-
CACHE_BUCKET_REGION: Stack.of(this).region,
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
createImageOptimizationFunction() {
|
|
112
|
-
const { imageOptimization, path: sitePath } = this.props;
|
|
113
|
-
const fn = new CdkFunction(this, `ImageFunction`, {
|
|
114
|
-
description: "Next.js image optimizer",
|
|
115
|
-
handler: "index.handler",
|
|
116
|
-
currentVersionOptions: {
|
|
117
|
-
removalPolicy: RemovalPolicy.DESTROY,
|
|
118
|
-
},
|
|
119
|
-
logRetention: RetentionDays.THREE_DAYS,
|
|
120
|
-
code: Code.fromInline("export function handler() {}"),
|
|
121
|
-
runtime: Runtime.NODEJS_18_X,
|
|
122
|
-
memorySize: imageOptimization?.memorySize
|
|
123
|
-
? typeof imageOptimization.memorySize === "string"
|
|
124
|
-
? toCdkSize(imageOptimization.memorySize).toMebibytes()
|
|
125
|
-
: imageOptimization.memorySize
|
|
126
|
-
: 1536,
|
|
127
|
-
timeout: CdkDuration.seconds(25),
|
|
128
|
-
architecture: Architecture.ARM_64,
|
|
129
|
-
environment: {
|
|
130
|
-
BUCKET_NAME: this.bucket.bucketName,
|
|
131
|
-
BUCKET_KEY_PREFIX: "_assets",
|
|
132
|
-
},
|
|
133
|
-
initialPolicy: [
|
|
134
|
-
new PolicyStatement({
|
|
135
|
-
actions: ["s3:GetObject"],
|
|
136
|
-
resources: [this.bucket.arnForObjects("*")],
|
|
137
|
-
}),
|
|
138
|
-
],
|
|
139
|
-
});
|
|
140
|
-
// update code after build
|
|
141
|
-
this.deferredTaskCallbacks.push(() => {
|
|
142
|
-
const cfnFunction = fn.node.defaultChild;
|
|
143
|
-
const code = Code.fromAsset(path.join(sitePath, ".open-next/image-optimization-function"));
|
|
144
|
-
const codeConfig = code.bind(fn);
|
|
145
|
-
cfnFunction.code = {
|
|
146
|
-
s3Bucket: codeConfig.s3Location?.bucketName,
|
|
147
|
-
s3Key: codeConfig.s3Location?.objectKey,
|
|
148
|
-
s3ObjectVersion: codeConfig.s3Location?.objectVersion,
|
|
149
|
-
};
|
|
150
|
-
code.bindToResource(cfnFunction);
|
|
151
|
-
});
|
|
152
|
-
return fn;
|
|
153
|
-
}
|
|
154
|
-
createCloudFrontDistributionForRegional() {
|
|
155
|
-
/**
|
|
156
|
-
* Next.js requests
|
|
157
|
-
*
|
|
158
|
-
* - Public asset
|
|
159
|
-
* Use case: When you request an asset in /public
|
|
160
|
-
* Request: /myImage.png
|
|
161
|
-
* Response cache:
|
|
162
|
-
* - Cache-Control: public, max-age=0, must-revalidate
|
|
163
|
-
* - x-vercel-cache: MISS (1st request)
|
|
164
|
-
* - x-vercel-cache: HIT (2nd request)
|
|
165
|
-
*
|
|
166
|
-
* - SSG page
|
|
167
|
-
* Use case: When you request an SSG page directly
|
|
168
|
-
* Request: /myPage
|
|
169
|
-
* Response cache:
|
|
170
|
-
* - Cache-Control: public, max-age=0, must-revalidate
|
|
171
|
-
* - Content-Encoding: br
|
|
172
|
-
* - x-vercel-cache: HIT (2nd request, not set for 1st request)
|
|
173
|
-
*
|
|
174
|
-
* - SSR page (directly)
|
|
175
|
-
* Use case: When you request an SSR page directly
|
|
176
|
-
* Request: /myPage
|
|
177
|
-
* Response cache:
|
|
178
|
-
* - Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate
|
|
179
|
-
* - x-vercel-cache: MISS
|
|
180
|
-
*
|
|
181
|
-
* - SSR pages (user transition)
|
|
182
|
-
* Use case: When the page uses getServerSideProps(), and you request this page on
|
|
183
|
-
* client-side page trasitions. Next.js sends an API request to the server,
|
|
184
|
-
* which runs getServerSideProps()
|
|
185
|
-
* Request: /_next/data/_-fpIB1rqWyRD-EJO59pO/myPage.json
|
|
186
|
-
* Response cache:
|
|
187
|
-
* - Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate
|
|
188
|
-
* - x-vercel-cache: MISS
|
|
189
|
-
*
|
|
190
|
-
* - Image optimization
|
|
191
|
-
* Use case: when you request an image
|
|
192
|
-
* Request: /_next/image?url=%2F_next%2Fstatic%2Fmedia%2F4600x4600.ce39e3d6.jpg&w=256&q=75
|
|
193
|
-
* Response cache:
|
|
194
|
-
* - Cache-Control: public, max-age=31536000, immutable
|
|
195
|
-
* - x-vercel-cache: HIT
|
|
196
|
-
*
|
|
197
|
-
* - API
|
|
198
|
-
* Use case: when you request an API endpoint
|
|
199
|
-
* Request: /api/hello
|
|
200
|
-
* Response cache:
|
|
201
|
-
* - Cache-Control: public, max-age=0, must-revalidate
|
|
202
|
-
* - x-vercel-cache: MISS
|
|
203
|
-
*/
|
|
204
|
-
const { customDomain, cdk } = this.props;
|
|
205
|
-
const cfDistributionProps = cdk?.distribution || {};
|
|
206
|
-
const serverBehavior = this.buildDefaultBehaviorForRegional();
|
|
207
|
-
return new Distribution(this, "CDN", {
|
|
208
|
-
scopeOverride: this,
|
|
209
|
-
customDomain,
|
|
210
|
-
cdk: {
|
|
211
|
-
distribution: {
|
|
212
|
-
// these values can be overwritten by cfDistributionProps
|
|
213
|
-
defaultRootObject: "",
|
|
214
|
-
// Override props.
|
|
215
|
-
...cfDistributionProps,
|
|
216
|
-
// these values can NOT be overwritten by cfDistributionProps
|
|
217
|
-
defaultBehavior: serverBehavior,
|
|
218
|
-
additionalBehaviors: {
|
|
219
|
-
"api/*": serverBehavior,
|
|
220
|
-
"_next/data/*": serverBehavior,
|
|
221
|
-
"_next/image*": this.buildImageBehavior(),
|
|
222
|
-
...(cfDistributionProps.additionalBehaviors || {}),
|
|
223
|
-
},
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
createCloudFrontDistributionForEdge() {
|
|
229
|
-
const { customDomain, cdk } = this.props;
|
|
230
|
-
const cfDistributionProps = cdk?.distribution || {};
|
|
231
|
-
const serverBehavior = this.buildDefaultBehaviorForEdge();
|
|
232
|
-
return new Distribution(this, "CDN", {
|
|
233
|
-
scopeOverride: this,
|
|
234
|
-
customDomain,
|
|
235
|
-
cdk: {
|
|
236
|
-
distribution: {
|
|
237
|
-
// these values can be overwritten by cfDistributionProps
|
|
238
|
-
defaultRootObject: "",
|
|
239
|
-
// Override props.
|
|
240
|
-
...cfDistributionProps,
|
|
241
|
-
// these values can NOT be overwritten by cfDistributionProps
|
|
242
|
-
defaultBehavior: serverBehavior,
|
|
243
|
-
additionalBehaviors: {
|
|
244
|
-
"api/*": serverBehavior,
|
|
245
|
-
"_next/data/*": serverBehavior,
|
|
246
|
-
"_next/image*": this.buildImageBehavior(),
|
|
247
|
-
...(cfDistributionProps.additionalBehaviors || {}),
|
|
248
|
-
},
|
|
249
|
-
},
|
|
250
|
-
},
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
useServerBehaviorCachePolicy() {
|
|
254
|
-
return super.useServerBehaviorCachePolicy([
|
|
255
|
-
"accept",
|
|
256
|
-
"rsc",
|
|
257
|
-
"next-router-prefetch",
|
|
258
|
-
"next-router-state-tree",
|
|
259
|
-
"next-url",
|
|
260
|
-
]);
|
|
261
|
-
}
|
|
262
|
-
buildImageBehavior() {
|
|
263
|
-
const { cdk, regional } = this.props;
|
|
264
|
-
const imageFn = this.createImageOptimizationFunction();
|
|
265
|
-
const imageFnUrl = imageFn.addFunctionUrl({
|
|
266
|
-
authType: regional?.enableServerUrlIamAuth
|
|
267
|
-
? FunctionUrlAuthType.AWS_IAM
|
|
268
|
-
: FunctionUrlAuthType.NONE,
|
|
269
|
-
});
|
|
270
|
-
return {
|
|
271
|
-
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
272
|
-
origin: new HttpOrigin(Fn.parseDomainName(imageFnUrl.url)),
|
|
273
|
-
allowedMethods: AllowedMethods.ALLOW_ALL,
|
|
274
|
-
cachedMethods: CachedMethods.CACHE_GET_HEAD_OPTIONS,
|
|
275
|
-
compress: true,
|
|
276
|
-
cachePolicy: cdk?.serverCachePolicy ?? this.useServerBehaviorCachePolicy(),
|
|
277
|
-
responseHeadersPolicy: cdk?.responseHeadersPolicy,
|
|
278
|
-
edgeLambdas: regional?.enableServerUrlIamAuth
|
|
279
|
-
? [
|
|
280
|
-
(() => {
|
|
281
|
-
const fn = this.useServerUrlSigningFunction();
|
|
282
|
-
fn.attachPermissions([
|
|
283
|
-
new PolicyStatement({
|
|
284
|
-
actions: ["lambda:InvokeFunctionUrl"],
|
|
285
|
-
resources: [imageFn.functionArn],
|
|
286
|
-
}),
|
|
287
|
-
]);
|
|
288
|
-
return {
|
|
289
|
-
includeBody: true,
|
|
290
|
-
eventType: LambdaEdgeEventType.ORIGIN_REQUEST,
|
|
291
|
-
functionVersion: fn.currentVersion,
|
|
292
|
-
};
|
|
293
|
-
})(),
|
|
294
|
-
]
|
|
295
|
-
: [],
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
generateBuildId() {
|
|
299
|
-
const filePath = path.join(this.props.path, ".next/BUILD_ID");
|
|
300
|
-
return fs.readFileSync(filePath).toString();
|
|
301
|
-
}
|
|
302
|
-
getConstructMetadata() {
|
|
303
|
-
return {
|
|
304
|
-
type: "NextjsSite",
|
|
305
|
-
...this.getConstructMetadataBase(),
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
}
|