sst 3.0.0 → 3.0.1-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -139
- package/src/index.ts +1 -0
- package/src/resource.ts +15 -0
- package/tsconfig.json +11 -0
- package/LICENSE +0 -21
- package/README.md +0 -43
- package/bootstrap.d.ts +0 -5
- package/bootstrap.js +0 -318
- package/bus.d.ts +0 -20
- package/bus.js +0 -52
- package/cache.d.ts +0 -4
- package/cache.js +0 -31
- package/cdk/deploy-stack.d.ts +0 -223
- package/cdk/deploy-stack.js +0 -562
- package/cdk/deployments-wrapper.d.ts +0 -3
- package/cdk/deployments-wrapper.js +0 -135
- package/cdk/deployments.d.ts +0 -327
- package/cdk/deployments.js +0 -360
- package/cdk/util.d.ts +0 -1
- package/cdk/util.js +0 -17
- package/cli/ci-info.d.ts +0 -4
- package/cli/ci-info.js +0 -8
- package/cli/colors.d.ts +0 -17
- package/cli/colors.js +0 -27
- package/cli/commands/bind.d.ts +0 -19
- package/cli/commands/bind.js +0 -360
- package/cli/commands/bootstrap.d.ts +0 -15
- package/cli/commands/bootstrap.js +0 -11
- package/cli/commands/build.d.ts +0 -17
- package/cli/commands/build.js +0 -25
- package/cli/commands/connect.d.ts +0 -17
- package/cli/commands/connect.js +0 -55
- package/cli/commands/console.d.ts +0 -15
- package/cli/commands/console.js +0 -22
- package/cli/commands/deploy.d.ts +0 -19
- package/cli/commands/deploy.js +0 -112
- package/cli/commands/dev.d.ts +0 -25
- package/cli/commands/dev.js +0 -351
- package/cli/commands/diff.d.ts +0 -19
- package/cli/commands/diff.js +0 -89
- package/cli/commands/plugins/kysely.d.ts +0 -1
- package/cli/commands/plugins/kysely.js +0 -87
- package/cli/commands/plugins/pothos.d.ts +0 -1
- package/cli/commands/plugins/pothos.js +0 -58
- package/cli/commands/plugins/warmer.d.ts +0 -1
- package/cli/commands/plugins/warmer.js +0 -33
- package/cli/commands/remove.d.ts +0 -19
- package/cli/commands/remove.js +0 -62
- package/cli/commands/secrets/get.d.ts +0 -19
- package/cli/commands/secrets/get.js +0 -27
- package/cli/commands/secrets/list.d.ts +0 -19
- package/cli/commands/secrets/list.js +0 -69
- package/cli/commands/secrets/load.d.ts +0 -17
- package/cli/commands/secrets/load.js +0 -47
- package/cli/commands/secrets/remove.d.ts +0 -19
- package/cli/commands/secrets/remove.js +0 -27
- package/cli/commands/secrets/secrets.d.ts +0 -2
- package/cli/commands/secrets/secrets.js +0 -16
- package/cli/commands/secrets/set.d.ts +0 -21
- package/cli/commands/secrets/set.js +0 -54
- package/cli/commands/telemetry.d.ts +0 -17
- package/cli/commands/telemetry.js +0 -24
- package/cli/commands/transform.d.ts +0 -17
- package/cli/commands/transform.js +0 -62
- package/cli/commands/types.d.ts +0 -15
- package/cli/commands/types.js +0 -25
- package/cli/commands/update.d.ts +0 -17
- package/cli/commands/update.js +0 -116
- package/cli/commands/version.d.ts +0 -15
- package/cli/commands/version.js +0 -15
- package/cli/local/router.d.ts +0 -44
- package/cli/local/router.js +0 -43
- package/cli/local/server.d.ts +0 -22
- package/cli/local/server.js +0 -319
- package/cli/program.d.ts +0 -19
- package/cli/program.js +0 -87
- package/cli/spinner.d.ts +0 -3
- package/cli/spinner.js +0 -14
- package/cli/sst.d.ts +0 -2
- package/cli/sst.js +0 -74
- package/cli/telemetry/environment.d.ts +0 -15
- package/cli/telemetry/environment.js +0 -27
- package/cli/telemetry/post-payload.d.ts +0 -1
- package/cli/telemetry/post-payload.js +0 -27
- package/cli/telemetry/project-id.d.ts +0 -2
- package/cli/telemetry/project-id.js +0 -47
- package/cli/telemetry/telemetry.d.ts +0 -19
- package/cli/telemetry/telemetry.js +0 -103
- package/cli/terminal.d.ts +0 -1
- package/cli/terminal.js +0 -8
- package/cli/ui/deploy.d.ts +0 -10
- package/cli/ui/deploy.js +0 -172
- package/cli/ui/functions.d.ts +0 -2
- package/cli/ui/functions.js +0 -130
- package/cli/ui/header.d.ts +0 -5
- package/cli/ui/header.js +0 -16
- package/cli/ui/stack.d.ts +0 -1
- package/cli/ui/stack.js +0 -6
- package/config.d.ts +0 -56
- package/config.js +0 -244
- package/constructs/Api.d.ts +0 -814
- package/constructs/Api.js +0 -743
- package/constructs/ApiGatewayV1Api.d.ts +0 -642
- package/constructs/ApiGatewayV1Api.js +0 -767
- package/constructs/App.d.ts +0 -168
- package/constructs/App.js +0 -493
- package/constructs/AppSyncApi.d.ts +0 -550
- package/constructs/AppSyncApi.js +0 -493
- package/constructs/AstroSite.d.ts +0 -39
- package/constructs/AstroSite.js +0 -78
- package/constructs/AstroSite.tsdoc.d.ts +0 -2
- package/constructs/AstroSite.tsdoc.js +0 -2
- package/constructs/Auth.d.ts +0 -100
- package/constructs/Auth.js +0 -177
- package/constructs/BaseSite.d.ts +0 -29
- package/constructs/BaseSite.js +0 -43
- package/constructs/Bucket.d.ts +0 -364
- package/constructs/Bucket.js +0 -327
- package/constructs/Cognito.d.ts +0 -232
- package/constructs/Cognito.js +0 -370
- package/constructs/Config.d.ts +0 -3
- package/constructs/Config.js +0 -3
- package/constructs/Construct.d.ts +0 -23
- package/constructs/Construct.js +0 -46
- package/constructs/Cron.d.ts +0 -164
- package/constructs/Cron.js +0 -114
- package/constructs/Distribution.d.ts +0 -143
- package/constructs/Distribution.js +0 -260
- package/constructs/EdgeFunction.d.ts +0 -49
- package/constructs/EdgeFunction.js +0 -442
- package/constructs/EventBus.d.ts +0 -444
- package/constructs/EventBus.js +0 -440
- package/constructs/Function.d.ts +0 -690
- package/constructs/Function.js +0 -583
- package/constructs/FunctionalStack.d.ts +0 -13
- package/constructs/FunctionalStack.js +0 -62
- package/constructs/Job.d.ts +0 -337
- package/constructs/Job.js +0 -404
- package/constructs/KinesisStream.d.ts +0 -224
- package/constructs/KinesisStream.js +0 -207
- package/constructs/Metadata.d.ts +0 -60
- package/constructs/Metadata.js +0 -1
- package/constructs/NextjsSite.d.ts +0 -104
- package/constructs/NextjsSite.js +0 -308
- package/constructs/Parameter.d.ts +0 -37
- package/constructs/Parameter.js +0 -53
- package/constructs/Queue.d.ts +0 -194
- package/constructs/Queue.js +0 -204
- package/constructs/RDS.d.ts +0 -221
- package/constructs/RDS.js +0 -363
- package/constructs/RemixSite.d.ts +0 -42
- package/constructs/RemixSite.js +0 -158
- package/constructs/RemixSite.tsdoc.d.ts +0 -2
- package/constructs/RemixSite.tsdoc.js +0 -2
- package/constructs/Script.d.ts +0 -160
- package/constructs/Script.js +0 -179
- package/constructs/Secret.d.ts +0 -30
- package/constructs/Secret.js +0 -59
- package/constructs/Service.d.ts +0 -487
- package/constructs/Service.js +0 -655
- package/constructs/SolidStartSite.d.ts +0 -37
- package/constructs/SolidStartSite.js +0 -66
- package/constructs/SolidStartSite.tsdoc.d.ts +0 -2
- package/constructs/SolidStartSite.tsdoc.js +0 -2
- package/constructs/SsrFunction.d.ts +0 -60
- package/constructs/SsrFunction.js +0 -226
- package/constructs/SsrSite.d.ts +0 -407
- package/constructs/SsrSite.js +0 -850
- package/constructs/Stack.d.ts +0 -127
- package/constructs/Stack.js +0 -243
- package/constructs/StaticSite.d.ts +0 -348
- package/constructs/StaticSite.js +0 -468
- package/constructs/SvelteKitSite.d.ts +0 -40
- package/constructs/SvelteKitSite.js +0 -106
- package/constructs/SvelteKitSite.tsdoc.d.ts +0 -2
- package/constructs/SvelteKitSite.tsdoc.js +0 -2
- package/constructs/Table.d.ts +0 -410
- package/constructs/Table.js +0 -425
- package/constructs/Topic.d.ts +0 -257
- package/constructs/Topic.js +0 -273
- package/constructs/WebSocketApi.d.ts +0 -355
- package/constructs/WebSocketApi.js +0 -404
- package/constructs/cdk/HttpAwsIntegration.d.ts +0 -32
- package/constructs/cdk/HttpAwsIntegration.js +0 -24
- package/constructs/cdk/certificate-base.d.ts +0 -18
- package/constructs/cdk/certificate-base.js +0 -26
- package/constructs/cdk/dns-validated-certificate.d.ts +0 -77
- package/constructs/cdk/dns-validated-certificate.js +0 -125
- package/constructs/cdk/website-redirect.d.ts +0 -53
- package/constructs/cdk/website-redirect.js +0 -77
- package/constructs/context.d.ts +0 -3
- package/constructs/context.js +0 -27
- package/constructs/deferred_task.d.ts +0 -6
- package/constructs/deferred_task.js +0 -45
- package/constructs/deprecated/NextjsSite.d.ts +0 -309
- package/constructs/deprecated/NextjsSite.js +0 -1074
- package/constructs/deprecated/cross-region-helper.d.ts +0 -7
- package/constructs/deprecated/cross-region-helper.js +0 -152
- package/constructs/deprecated/index.d.ts +0 -1
- package/constructs/deprecated/index.js +0 -1
- package/constructs/future/Auth.d.ts +0 -80
- package/constructs/future/Auth.js +0 -122
- package/constructs/future/index.d.ts +0 -1
- package/constructs/future/index.js +0 -1
- package/constructs/index.d.ts +0 -32
- package/constructs/index.js +0 -32
- package/constructs/static-file-list.d.ts +0 -1
- package/constructs/static-file-list.js +0 -51
- package/constructs/util/apiGatewayV1AccessLog.d.ts +0 -15
- package/constructs/util/apiGatewayV1AccessLog.js +0 -76
- package/constructs/util/apiGatewayV2AccessLog.d.ts +0 -10
- package/constructs/util/apiGatewayV2AccessLog.js +0 -107
- package/constructs/util/apiGatewayV2Cors.d.ts +0 -67
- package/constructs/util/apiGatewayV2Cors.js +0 -21
- package/constructs/util/apiGatewayV2Domain.d.ts +0 -47
- package/constructs/util/apiGatewayV2Domain.js +0 -208
- package/constructs/util/appSyncApiDomain.d.ts +0 -41
- package/constructs/util/appSyncApiDomain.js +0 -176
- package/constructs/util/builder.d.ts +0 -3
- package/constructs/util/builder.js +0 -9
- package/constructs/util/duration.d.ts +0 -3
- package/constructs/util/duration.js +0 -19
- package/constructs/util/functionBinding.d.ts +0 -31
- package/constructs/util/functionBinding.js +0 -104
- package/constructs/util/functionUrlCors.d.ts +0 -67
- package/constructs/util/functionUrlCors.js +0 -23
- package/constructs/util/permission.d.ts +0 -8
- package/constructs/util/permission.js +0 -228
- package/constructs/util/size.d.ts +0 -3
- package/constructs/util/size.js +0 -12
- package/constructs/util/warning.d.ts +0 -11
- package/constructs/util/warning.js +0 -21
- package/context/context.d.ts +0 -13
- package/context/context.js +0 -69
- package/context/context2.d.ts +0 -16
- package/context/context2.js +0 -108
- package/context/handler.d.ts +0 -25
- package/context/handler.js +0 -21
- package/context/index.d.ts +0 -2
- package/context/index.js +0 -2
- package/credentials.d.ts +0 -9
- package/credentials.js +0 -145
- package/error.d.ts +0 -6
- package/error.js +0 -10
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/iot.d.ts +0 -6
- package/iot.js +0 -163
- package/logger.d.ts +0 -3
- package/logger.js +0 -32
- package/node/actor/index.d.ts +0 -29
- package/node/actor/index.js +0 -17
- package/node/api/index.d.ts +0 -64
- package/node/api/index.js +0 -179
- package/node/auth/adapter/adapter.d.ts +0 -3
- package/node/auth/adapter/adapter.js +0 -3
- package/node/auth/adapter/facebook.d.ts +0 -2
- package/node/auth/adapter/facebook.js +0 -26
- package/node/auth/adapter/github.d.ts +0 -2
- package/node/auth/adapter/github.js +0 -21
- package/node/auth/adapter/google.d.ts +0 -9
- package/node/auth/adapter/google.js +0 -18
- package/node/auth/adapter/link.d.ts +0 -8
- package/node/auth/adapter/link.js +0 -39
- package/node/auth/adapter/oauth.d.ts +0 -25
- package/node/auth/adapter/oauth.js +0 -52
- package/node/auth/adapter/oidc.d.ts +0 -17
- package/node/auth/adapter/oidc.js +0 -50
- package/node/auth/adapter/twitch.d.ts +0 -2
- package/node/auth/adapter/twitch.js +0 -11
- package/node/auth/auth.d.ts +0 -24
- package/node/auth/auth.js +0 -74
- package/node/auth/index.d.ts +0 -13
- package/node/auth/index.js +0 -12
- package/node/auth/session.d.ts +0 -76
- package/node/auth/session.js +0 -121
- package/node/bucket/index.d.ts +0 -3
- package/node/bucket/index.js +0 -2
- package/node/config/index.d.ts +0 -13
- package/node/config/index.js +0 -22
- package/node/event-bus/index.d.ts +0 -51
- package/node/event-bus/index.js +0 -76
- package/node/function/index.d.ts +0 -3
- package/node/function/index.js +0 -3
- package/node/future/auth/adapter/adapter.d.ts +0 -10
- package/node/future/auth/adapter/adapter.js +0 -1
- package/node/future/auth/adapter/code.d.ts +0 -17
- package/node/future/auth/adapter/code.js +0 -68
- package/node/future/auth/adapter/facebook.d.ts +0 -16
- package/node/future/auth/adapter/facebook.js +0 -27
- package/node/future/auth/adapter/github.d.ts +0 -23
- package/node/future/auth/adapter/github.js +0 -23
- package/node/future/auth/adapter/google.d.ts +0 -28
- package/node/future/auth/adapter/google.js +0 -22
- package/node/future/auth/adapter/link.d.ts +0 -13
- package/node/future/auth/adapter/link.js +0 -47
- package/node/future/auth/adapter/microsoft.d.ts +0 -22
- package/node/future/auth/adapter/microsoft.js +0 -16
- package/node/future/auth/adapter/oauth.d.ts +0 -41
- package/node/future/auth/adapter/oauth.js +0 -67
- package/node/future/auth/adapter/oidc.d.ts +0 -30
- package/node/future/auth/adapter/oidc.js +0 -63
- package/node/future/auth/adapter/spotify.d.ts +0 -23
- package/node/future/auth/adapter/spotify.js +0 -22
- package/node/future/auth/encryption.d.ts +0 -2
- package/node/future/auth/encryption.js +0 -30
- package/node/future/auth/handler.d.ts +0 -46
- package/node/future/auth/handler.js +0 -280
- package/node/future/auth/index.d.ts +0 -17
- package/node/future/auth/index.js +0 -15
- package/node/future/auth/session.d.ts +0 -71
- package/node/future/auth/session.js +0 -146
- package/node/graphql/index.d.ts +0 -15
- package/node/graphql/index.js +0 -32
- package/node/job/index.d.ts +0 -37
- package/node/job/index.js +0 -64
- package/node/kinesis-stream/index.d.ts +0 -3
- package/node/kinesis-stream/index.js +0 -3
- package/node/queue/index.d.ts +0 -3
- package/node/queue/index.js +0 -2
- package/node/rds/index.d.ts +0 -3
- package/node/rds/index.js +0 -2
- package/node/service/index.d.ts +0 -3
- package/node/service/index.js +0 -4
- package/node/site/index.d.ts +0 -18
- package/node/site/index.js +0 -18
- package/node/table/index.d.ts +0 -3
- package/node/table/index.js +0 -4
- package/node/topic/index.d.ts +0 -3
- package/node/topic/index.js +0 -4
- package/node/util/index.d.ts +0 -2
- package/node/util/index.js +0 -196
- package/node/util/loader.d.ts +0 -2
- package/node/util/loader.js +0 -51
- package/node/websocket-api/index.d.ts +0 -23
- package/node/websocket-api/index.js +0 -48
- package/pothos.d.ts +0 -7
- package/pothos.js +0 -160
- package/project.d.ts +0 -75
- package/project.js +0 -188
- package/runtime/handlers/container.d.ts +0 -2
- package/runtime/handlers/container.js +0 -263
- package/runtime/handlers/dotnet.d.ts +0 -2
- package/runtime/handlers/dotnet.js +0 -115
- package/runtime/handlers/go.d.ts +0 -2
- package/runtime/handlers/go.js +0 -126
- package/runtime/handlers/java.d.ts +0 -2
- package/runtime/handlers/java.js +0 -103
- package/runtime/handlers/node.d.ts +0 -2
- package/runtime/handlers/node.js +0 -269
- package/runtime/handlers/python.d.ts +0 -2
- package/runtime/handlers/python.js +0 -141
- package/runtime/handlers/pythonBundling.d.ts +0 -82
- package/runtime/handlers/pythonBundling.js +0 -80
- package/runtime/handlers/rust.d.ts +0 -2
- package/runtime/handlers/rust.js +0 -110
- package/runtime/handlers.d.ts +0 -74
- package/runtime/handlers.js +0 -151
- package/runtime/iot.d.ts +0 -1
- package/runtime/iot.js +0 -17
- package/runtime/runtime.d.ts +0 -32
- package/runtime/runtime.js +0 -1
- package/runtime/server.d.ts +0 -6
- package/runtime/server.js +0 -150
- package/runtime/workers.d.ts +0 -37
- package/runtime/workers.js +0 -85
- package/stacks/app-metadata.d.ts +0 -7
- package/stacks/app-metadata.js +0 -75
- package/stacks/assembly.d.ts +0 -1
- package/stacks/assembly.js +0 -4
- package/stacks/build.d.ts +0 -9
- package/stacks/build.js +0 -110
- package/stacks/deploy.d.ts +0 -9
- package/stacks/deploy.js +0 -240
- package/stacks/diff.d.ts +0 -8
- package/stacks/diff.js +0 -62
- package/stacks/index.d.ts +0 -10
- package/stacks/index.js +0 -10
- package/stacks/metadata.d.ts +0 -11
- package/stacks/metadata.js +0 -83
- package/stacks/monitor.d.ts +0 -32
- package/stacks/monitor.js +0 -151
- package/stacks/remove.d.ts +0 -8
- package/stacks/remove.js +0 -76
- package/stacks/synth.d.ts +0 -12
- package/stacks/synth.js +0 -94
- package/support/base-site-archiver.mjs +0 -99
- package/support/base-site-custom-resource/s3-handler.py +0 -195
- package/support/base-site-custom-resource/s3-upload.py +0 -89
- package/support/bootstrap-metadata-function/index.mjs +0 -58011
- package/support/bridge/Dockerfile +0 -3
- package/support/bridge/bridge.mjs +0 -146
- package/support/certificate-requestor/index.js +0 -549
- package/support/custom-resources/index.mjs +0 -180627
- package/support/dotnet31-bootstrap/Program.cs +0 -17
- package/support/dotnet31-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Encodings.Web.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Json.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.deps.json +0 -230
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -9
- package/support/dotnet6-bootstrap/Program.cs +0 -17
- package/support/dotnet6-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.deps.json +0 -59
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -12
- package/support/edge-function/edge-lambda-version.mjs +0 -3
- package/support/edge-function/edge-lambda.mjs +0 -3
- package/support/edge-function/s3-bucket.mjs +0 -3
- package/support/event-bus-retrier/index.mjs +0 -75
- package/support/java-runtime/install.sh +0 -25
- package/support/java-runtime/pom.xml +0 -39
- package/support/java-runtime/release/aws-lambda-java-core-1.2.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-runtime-interface-client-1.1.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-serialization-1.0.0.jar +0 -0
- package/support/job-manager/index.mjs +0 -57679
- package/support/nixpacks/Dockerfile +0 -6
- package/support/nodejs-runtime/index.mjs +0 -169
- package/support/python-runtime/Dockerfile +0 -9
- package/support/python-runtime/Dockerfile.custom +0 -21
- package/support/python-runtime/Dockerfile.dependencies +0 -26
- package/support/python-runtime/runtime.py +0 -127
- package/support/rds-migrator/index.mjs +0 -49
- package/support/remix-site-function/edge-server.js +0 -161
- package/support/remix-site-function/polyfill.js +0 -24
- package/support/remix-site-function/regional-server.js +0 -164
- package/support/script-function/index.mjs +0 -48760
- package/support/service-dev-function/index.js +0 -1
- package/support/signing-function/index.mjs +0 -3769
- package/support/sls-nextjs-site-build-helper/build.cjs +0 -91
- package/support/sls-nextjs-site-build-helper/index-wrapper.js +0 -19
- package/support/sls-nextjs-site-function-code-replacer/lambda-code-updater.py +0 -156
- package/support/sls-nextjs-site-stub/index.html +0 -99
- package/support/ssr-site-function-archiver.mjs +0 -96
- package/support/ssr-site-function-stub/index.js +0 -5
- package/support/ssr-warmer/index.mjs +0 -34235
- package/util/error.d.ts +0 -3
- package/util/error.js +0 -6
- package/util/fs.d.ts +0 -4
- package/util/fs.js +0 -46
- package/util/lazy.d.ts +0 -1
- package/util/lazy.js +0 -11
- package/util/module.d.ts +0 -1
- package/util/module.js +0 -5
- package/util/process.d.ts +0 -2
- package/util/process.js +0 -3
- package/watcher.d.ts +0 -14
- package/watcher.js +0 -35
package/cli/spinner.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import ora from "ora";
|
|
2
|
-
import { Colors } from "./colors.js";
|
|
3
|
-
import { lazy } from "../util/lazy.js";
|
|
4
|
-
export const useSpinners = lazy(() => {
|
|
5
|
-
const spinners = [];
|
|
6
|
-
return spinners;
|
|
7
|
-
});
|
|
8
|
-
export function createSpinner(options) {
|
|
9
|
-
const spinners = useSpinners();
|
|
10
|
-
const next = ora(options);
|
|
11
|
-
spinners.push(next);
|
|
12
|
-
Colors.mode("line");
|
|
13
|
-
return next;
|
|
14
|
-
}
|
package/cli/sst.d.ts
DELETED
package/cli/sst.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { blue, red } from "colorette";
|
|
3
|
-
import { program } from "./program.js";
|
|
4
|
-
import { SilentError, VisibleError } from "../error.js";
|
|
5
|
-
import { useSpinners } from "./spinner.js";
|
|
6
|
-
import { Logger } from "../logger.js";
|
|
7
|
-
import dotenv from "dotenv";
|
|
8
|
-
dotenv.config({
|
|
9
|
-
override: true,
|
|
10
|
-
});
|
|
11
|
-
dotenv.config({
|
|
12
|
-
path: ".env.local",
|
|
13
|
-
override: true,
|
|
14
|
-
});
|
|
15
|
-
import { bootstrap } from "./commands/bootstrap.js";
|
|
16
|
-
import { dev } from "./commands/dev.js";
|
|
17
|
-
import { bind } from "./commands/bind.js";
|
|
18
|
-
import { build } from "./commands/build.js";
|
|
19
|
-
import { deploy } from "./commands/deploy.js";
|
|
20
|
-
import { remove } from "./commands/remove.js";
|
|
21
|
-
import { consoleCommand } from "./commands/console.js";
|
|
22
|
-
import { secrets } from "./commands/secrets/secrets.js";
|
|
23
|
-
import { update } from "./commands/update.js";
|
|
24
|
-
import { transform } from "./commands/transform.js";
|
|
25
|
-
import { diff } from "./commands/diff.js";
|
|
26
|
-
import { version } from "./commands/version.js";
|
|
27
|
-
import { telemetry } from "./commands/telemetry.js";
|
|
28
|
-
import { types } from "./commands/types.js";
|
|
29
|
-
import { connect } from "./commands/connect.js";
|
|
30
|
-
bootstrap(program);
|
|
31
|
-
dev(program);
|
|
32
|
-
deploy(program);
|
|
33
|
-
build(program);
|
|
34
|
-
bind(program);
|
|
35
|
-
secrets(program);
|
|
36
|
-
remove(program);
|
|
37
|
-
update(program);
|
|
38
|
-
transform(program);
|
|
39
|
-
consoleCommand(program);
|
|
40
|
-
diff(program);
|
|
41
|
-
version(program);
|
|
42
|
-
telemetry(program);
|
|
43
|
-
types(program);
|
|
44
|
-
connect(program);
|
|
45
|
-
if ("setSourceMapsEnabled" in process) {
|
|
46
|
-
// @ts-expect-error
|
|
47
|
-
process.setSourceMapsEnabled(true);
|
|
48
|
-
}
|
|
49
|
-
process.removeAllListeners("uncaughtException");
|
|
50
|
-
process.on("uncaughtException", (err) => {
|
|
51
|
-
Logger.debug(err);
|
|
52
|
-
const spinners = useSpinners();
|
|
53
|
-
for (const spinner of spinners) {
|
|
54
|
-
if (spinner.isSpinning)
|
|
55
|
-
spinner.fail(spinner.text);
|
|
56
|
-
}
|
|
57
|
-
if (!(err instanceof SilentError)) {
|
|
58
|
-
console.log();
|
|
59
|
-
console.log(red("Error:"), err.message);
|
|
60
|
-
if (!(err instanceof VisibleError)) {
|
|
61
|
-
console.log();
|
|
62
|
-
console.trace(err.stack);
|
|
63
|
-
}
|
|
64
|
-
console.log();
|
|
65
|
-
console.log(`Need help with this error? Post it in #help on the SST Discord ${blue(`https://sst.dev/discord`)}`);
|
|
66
|
-
}
|
|
67
|
-
process.exit(1);
|
|
68
|
-
});
|
|
69
|
-
// Check Node version
|
|
70
|
-
const nodeVersion = process.versions.node;
|
|
71
|
-
if (Number(nodeVersion.split(".")[0]) < 16) {
|
|
72
|
-
throw new VisibleError(`Node.js version ${nodeVersion} is not supported by SST. Please upgrade to Node.js 16 or later.`);
|
|
73
|
-
}
|
|
74
|
-
program.parse();
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
type EnvironmentData = {
|
|
3
|
-
systemPlatform: NodeJS.Platform;
|
|
4
|
-
systemRelease: string;
|
|
5
|
-
systemArchitecture: string;
|
|
6
|
-
cpuCount: number;
|
|
7
|
-
cpuModel: string | null;
|
|
8
|
-
cpuSpeed: number | null;
|
|
9
|
-
memoryInMb: number;
|
|
10
|
-
isCI: boolean;
|
|
11
|
-
ciName: string | null;
|
|
12
|
-
sstVersion: string;
|
|
13
|
-
};
|
|
14
|
-
export declare function getEnvironmentData(): EnvironmentData;
|
|
15
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import os from "os";
|
|
2
|
-
import { getCiInfo } from "../ci-info.js";
|
|
3
|
-
import { useProject } from "../../project.js";
|
|
4
|
-
let data;
|
|
5
|
-
export function getEnvironmentData() {
|
|
6
|
-
if (data) {
|
|
7
|
-
return data;
|
|
8
|
-
}
|
|
9
|
-
const cpus = os.cpus() || [];
|
|
10
|
-
const ciInfo = getCiInfo();
|
|
11
|
-
data = {
|
|
12
|
-
// Software information
|
|
13
|
-
systemPlatform: os.platform(),
|
|
14
|
-
systemRelease: os.release(),
|
|
15
|
-
systemArchitecture: os.arch(),
|
|
16
|
-
// Machine information
|
|
17
|
-
cpuCount: cpus.length,
|
|
18
|
-
cpuModel: cpus.length ? cpus[0].model : null,
|
|
19
|
-
cpuSpeed: cpus.length ? cpus[0].speed : null,
|
|
20
|
-
memoryInMb: Math.trunc(os.totalmem() / Math.pow(1024, 2)),
|
|
21
|
-
// Environment information
|
|
22
|
-
isCI: ciInfo.isCI,
|
|
23
|
-
ciName: ciInfo.name,
|
|
24
|
-
sstVersion: useProject().version,
|
|
25
|
-
};
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function postPayload(endpoint: string, body: any): Promise<void>;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import https from "https";
|
|
2
|
-
export function postPayload(endpoint, body) {
|
|
3
|
-
return new Promise((resolve, reject) => {
|
|
4
|
-
try {
|
|
5
|
-
const req = https
|
|
6
|
-
.request(endpoint, {
|
|
7
|
-
method: "POST",
|
|
8
|
-
headers: { "content-type": "application/json" },
|
|
9
|
-
timeout: 5000,
|
|
10
|
-
}, (resp) => {
|
|
11
|
-
if (resp.statusCode !== 200) {
|
|
12
|
-
reject(new Error(`Unexpected status code: ${resp.statusCode}`));
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
resolve();
|
|
16
|
-
})
|
|
17
|
-
.on("error", () => {
|
|
18
|
-
// catches connect ECONNREFUSED while the below catch does not work as expected
|
|
19
|
-
});
|
|
20
|
-
req.write(JSON.stringify(body));
|
|
21
|
-
req.end();
|
|
22
|
-
}
|
|
23
|
-
catch (ex) {
|
|
24
|
-
reject(ex);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
|
-
function getProjectIdByGit() {
|
|
3
|
-
try {
|
|
4
|
-
const originBuffer = execSync(`git config --local --get remote.origin.url`, {
|
|
5
|
-
timeout: 1000,
|
|
6
|
-
stdio: `pipe`,
|
|
7
|
-
});
|
|
8
|
-
return String(originBuffer).trim();
|
|
9
|
-
}
|
|
10
|
-
catch (_) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export function normalizeGitUrl(url) {
|
|
15
|
-
// Normalize url
|
|
16
|
-
// - https://x-access-token:ghs_xxxx@github.com/user/repo.git
|
|
17
|
-
// - https://github.com/user/repo.git
|
|
18
|
-
// - git@github.com:user/repo.git
|
|
19
|
-
// trim
|
|
20
|
-
url = url.trim();
|
|
21
|
-
// clean up ending `.git`
|
|
22
|
-
url = url.endsWith(".git") ? url.substring(0, url.length - 4) : url;
|
|
23
|
-
if (url.startsWith("git@")) {
|
|
24
|
-
const match = url.match(/git@([^:]+):(.*)/);
|
|
25
|
-
if (match && match.length > 2) {
|
|
26
|
-
return `${match[1]}/${match[2]}`;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
30
|
-
const match = url.match(/https?:\/\/([^@]+@)?(.*)/);
|
|
31
|
-
if (match && match.length > 2) {
|
|
32
|
-
return match[2];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return url;
|
|
36
|
-
}
|
|
37
|
-
export function getRawProjectId() {
|
|
38
|
-
const gitUrl = getProjectIdByGit();
|
|
39
|
-
if (gitUrl) {
|
|
40
|
-
return normalizeGitUrl(gitUrl);
|
|
41
|
-
}
|
|
42
|
-
const repoUrl = process.env.REPOSITORY_URL;
|
|
43
|
-
if (repoUrl) {
|
|
44
|
-
return normalizeGitUrl(repoUrl);
|
|
45
|
-
}
|
|
46
|
-
return process.cwd();
|
|
47
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
type CliFailedEvent = {
|
|
2
|
-
rawCommand: string;
|
|
3
|
-
duration: number;
|
|
4
|
-
errorName: string;
|
|
5
|
-
errorMessage: string;
|
|
6
|
-
};
|
|
7
|
-
type CliSucceededEvent = {
|
|
8
|
-
rawCommand: string;
|
|
9
|
-
duration: number;
|
|
10
|
-
};
|
|
11
|
-
export declare function enable(): void;
|
|
12
|
-
export declare function disable(): void;
|
|
13
|
-
export declare function isEnabled(): boolean;
|
|
14
|
-
export declare function trackCli(command: string): Promise<any>;
|
|
15
|
-
export declare function trackCliFailed(event: CliFailedEvent): Promise<any>;
|
|
16
|
-
export declare function trackCliSucceeded(event: CliSucceededEvent): Promise<any>;
|
|
17
|
-
export declare function trackCliDevError(event: CliFailedEvent): Promise<any>;
|
|
18
|
-
export declare function trackCliDevRunning(event: CliSucceededEvent): Promise<any>;
|
|
19
|
-
export {};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import Conf from "conf";
|
|
2
|
-
import { createHash, randomBytes } from "crypto";
|
|
3
|
-
import { postPayload } from "./post-payload.js";
|
|
4
|
-
import { getRawProjectId } from "./project-id.js";
|
|
5
|
-
import { getEnvironmentData } from "./environment.js";
|
|
6
|
-
import { cyan } from "colorette";
|
|
7
|
-
const TELEMETRY_API = "https://telemetry.sst.dev/events";
|
|
8
|
-
const TELEMETRY_KEY_ENABLED = "telemetry.enabled";
|
|
9
|
-
const TELEMETRY_KEY_NOTIFY_DATE = "telemetry.notifiedAt";
|
|
10
|
-
const TELEMETRY_KEY_ID = `telemetry.anonymousId`;
|
|
11
|
-
const conf = initializeConf();
|
|
12
|
-
const sessionId = randomBytes(32).toString("hex");
|
|
13
|
-
const projectId = hash(getRawProjectId());
|
|
14
|
-
const anonymousId = getAnonymousId();
|
|
15
|
-
notify();
|
|
16
|
-
export function enable() {
|
|
17
|
-
conf && conf.set(TELEMETRY_KEY_ENABLED, true);
|
|
18
|
-
}
|
|
19
|
-
export function disable() {
|
|
20
|
-
conf && conf.set(TELEMETRY_KEY_ENABLED, false);
|
|
21
|
-
}
|
|
22
|
-
export function isEnabled() {
|
|
23
|
-
if (!conf) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
return conf.get(TELEMETRY_KEY_ENABLED, true) !== false;
|
|
27
|
-
}
|
|
28
|
-
export function trackCli(command) {
|
|
29
|
-
return record("CLI_COMMAND", { command });
|
|
30
|
-
}
|
|
31
|
-
export function trackCliFailed(event) {
|
|
32
|
-
return record("CLI_COMMAND_FAILED", event);
|
|
33
|
-
}
|
|
34
|
-
export function trackCliSucceeded(event) {
|
|
35
|
-
return record("CLI_COMMAND_SUCCEEDED", event);
|
|
36
|
-
}
|
|
37
|
-
export function trackCliDevError(event) {
|
|
38
|
-
return record("CLI_COMMAND_DEV_ERROR", event);
|
|
39
|
-
}
|
|
40
|
-
export function trackCliDevRunning(event) {
|
|
41
|
-
return record("CLI_COMMAND_DEV_RUNNING", event);
|
|
42
|
-
}
|
|
43
|
-
function initializeConf() {
|
|
44
|
-
try {
|
|
45
|
-
// @ts-expect-error
|
|
46
|
-
return new Conf({ projectName: "sst" });
|
|
47
|
-
}
|
|
48
|
-
catch (_) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function notify() {
|
|
53
|
-
if (!conf || willNotRecord()) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
// Do not notify if user has been notified before.
|
|
57
|
-
if (conf.get(TELEMETRY_KEY_NOTIFY_DATE) !== undefined) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
conf.set(TELEMETRY_KEY_NOTIFY_DATE, Date.now().toString());
|
|
61
|
-
console.log(`${cyan("Attention")}: SST now collects completely anonymous telemetry regarding usage. This is used to guide SST's roadmap.`);
|
|
62
|
-
console.log(`You can learn more, including how to opt-out of this anonymous program, by heading over to:`);
|
|
63
|
-
console.log("https://docs.sst.dev/anonymous-telemetry");
|
|
64
|
-
console.log();
|
|
65
|
-
}
|
|
66
|
-
function willNotRecord() {
|
|
67
|
-
return !isEnabled() || !!process.env.SST_TELEMETRY_DISABLED;
|
|
68
|
-
}
|
|
69
|
-
async function record(name, properties) {
|
|
70
|
-
if (willNotRecord()) {
|
|
71
|
-
return Promise.resolve();
|
|
72
|
-
}
|
|
73
|
-
const context = {
|
|
74
|
-
anonymousId,
|
|
75
|
-
projectId,
|
|
76
|
-
sessionId,
|
|
77
|
-
};
|
|
78
|
-
try {
|
|
79
|
-
await postPayload(TELEMETRY_API, {
|
|
80
|
-
context,
|
|
81
|
-
environment: getEnvironmentData(),
|
|
82
|
-
events: [
|
|
83
|
-
{
|
|
84
|
-
name,
|
|
85
|
-
properties,
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
catch { }
|
|
91
|
-
}
|
|
92
|
-
function getAnonymousId() {
|
|
93
|
-
const val = conf && conf.get(TELEMETRY_KEY_ID);
|
|
94
|
-
if (val) {
|
|
95
|
-
return val;
|
|
96
|
-
}
|
|
97
|
-
const generated = randomBytes(32).toString("hex");
|
|
98
|
-
conf && conf.set(TELEMETRY_KEY_ID, generated);
|
|
99
|
-
return generated;
|
|
100
|
-
}
|
|
101
|
-
function hash(payload) {
|
|
102
|
-
return createHash("sha256").update(payload).digest("hex");
|
|
103
|
-
}
|
package/cli/terminal.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function clear(): void;
|
package/cli/terminal.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function clear() {
|
|
2
|
-
// console.clear() removes the content in the viewport in VSCode
|
|
3
|
-
// and on Windows. This is a workaround to preserve the viewport.
|
|
4
|
-
for (let i = 0, l = process.stdout.rows; i < l - 1; i++) {
|
|
5
|
-
console.log("");
|
|
6
|
-
}
|
|
7
|
-
console.clear();
|
|
8
|
-
}
|
package/cli/ui/deploy.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" resolution-mode="require"/>
|
|
2
|
-
import { Stacks } from "../../stacks/index.js";
|
|
3
|
-
import type { CloudAssembly } from "aws-cdk-lib/cx-api";
|
|
4
|
-
interface Props {
|
|
5
|
-
assembly: CloudAssembly;
|
|
6
|
-
remove?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare const DeploymentUI: (props: Props) => JSX.Element;
|
|
9
|
-
export declare function printDeploymentResults(assembly: CloudAssembly, results: Awaited<ReturnType<typeof Stacks.deployMany>>, remove?: boolean): void;
|
|
10
|
-
export {};
|
package/cli/ui/deploy.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { useBus } from "../../bus.js";
|
|
4
|
-
import { Stacks } from "../../stacks/index.js";
|
|
5
|
-
import Spinner from "ink-spinner";
|
|
6
|
-
import { Colors } from "../colors.js";
|
|
7
|
-
import { useProject } from "../../project.js";
|
|
8
|
-
export const DeploymentUI = (props) => {
|
|
9
|
-
const [statuses, setStatuses] = useState({});
|
|
10
|
-
const [resources, setResources] = useState({});
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
Colors.gap();
|
|
13
|
-
const bus = useBus();
|
|
14
|
-
const status = bus.subscribe("stack.status", (payload) => {
|
|
15
|
-
const { stackID, status } = payload.properties;
|
|
16
|
-
setStatuses((previous) => {
|
|
17
|
-
if (status !== "PUBLISH_ASSETS_IN_PROGRESS") {
|
|
18
|
-
if (previous[stackID]) {
|
|
19
|
-
Colors.line(Colors.warning(Colors.prefix), Colors.dim(stackNameToId(stackID)), Colors.dim("PUBLISH_ASSETS_COMPLETE"), "");
|
|
20
|
-
}
|
|
21
|
-
const { [stackID]: _, ...next } = previous;
|
|
22
|
-
return next;
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
...previous,
|
|
26
|
-
[stackID]: status,
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
const event = bus.subscribe("stack.event", (payload) => {
|
|
31
|
-
const { event } = payload.properties;
|
|
32
|
-
setResources((previous) => {
|
|
33
|
-
if (Stacks.isFinal(event.ResourceStatus)) {
|
|
34
|
-
const readable = logicalIdToCdkPath(props.assembly, event.StackName, event.LogicalResourceId);
|
|
35
|
-
Colors.line(Colors.warning(Colors.prefix), readable
|
|
36
|
-
? Colors.dim(`${stackNameToId(event.StackName)} ${readable} ${event.ResourceType}`)
|
|
37
|
-
: Colors.dim(`${stackNameToId(event.StackName)} ${event.ResourceType}`), Stacks.isFailed(event.ResourceStatus)
|
|
38
|
-
? Colors.danger(event.ResourceStatus)
|
|
39
|
-
: Colors.dim(event.ResourceStatus), Stacks.isFailed(event.ResourceStatus) && event.ResourceStatusReason
|
|
40
|
-
? event.ResourceStatusReason
|
|
41
|
-
: "");
|
|
42
|
-
const { [event.LogicalResourceId]: _, ...next } = previous;
|
|
43
|
-
return next;
|
|
44
|
-
}
|
|
45
|
-
return {
|
|
46
|
-
...previous,
|
|
47
|
-
[payload.properties.event.LogicalResourceId]: payload.properties.event,
|
|
48
|
-
};
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
return () => {
|
|
52
|
-
bus.unsubscribe(event);
|
|
53
|
-
bus.unsubscribe(status);
|
|
54
|
-
};
|
|
55
|
-
}, []);
|
|
56
|
-
function color(status) {
|
|
57
|
-
if (Stacks.isFailed(status))
|
|
58
|
-
return "red";
|
|
59
|
-
if (Stacks.isSuccess(status))
|
|
60
|
-
return "green";
|
|
61
|
-
return "yellow";
|
|
62
|
-
}
|
|
63
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
64
|
-
Object.entries(statuses)
|
|
65
|
-
.slice(0, process.stdout.rows - 2)
|
|
66
|
-
.map(([stack, status], index) => {
|
|
67
|
-
return (React.createElement(Box, { key: index },
|
|
68
|
-
React.createElement(Text, null,
|
|
69
|
-
React.createElement(Spinner, null),
|
|
70
|
-
" ",
|
|
71
|
-
stackNameToId(stack),
|
|
72
|
-
" "),
|
|
73
|
-
React.createElement(Text, { color: color(status) }, status)));
|
|
74
|
-
}),
|
|
75
|
-
Object.entries(resources)
|
|
76
|
-
.slice(0, Math.max(0, process.stdout.rows - Object.entries(statuses).length - 2))
|
|
77
|
-
.map(([_, evt], index) => {
|
|
78
|
-
const readable = logicalIdToCdkPath(props.assembly, evt.StackName, evt.LogicalResourceId);
|
|
79
|
-
return (React.createElement(Box, { key: index },
|
|
80
|
-
React.createElement(Text, null,
|
|
81
|
-
React.createElement(Spinner, null),
|
|
82
|
-
" ",
|
|
83
|
-
readable
|
|
84
|
-
? `${stackNameToId(evt.StackName)} ${readable} ${evt.ResourceType}`
|
|
85
|
-
: `${stackNameToId(evt.StackName)} ${evt.ResourceType}`,
|
|
86
|
-
" "),
|
|
87
|
-
React.createElement(Text, { color: color(evt.ResourceStatus || "") }, evt.ResourceStatus)));
|
|
88
|
-
}),
|
|
89
|
-
Object.entries(resources).length === 0 &&
|
|
90
|
-
Object.entries(statuses).length === 0 && (React.createElement(Box, null,
|
|
91
|
-
React.createElement(Text, null,
|
|
92
|
-
React.createElement(Spinner, null),
|
|
93
|
-
" ",
|
|
94
|
-
React.createElement(Text, { dimColor: true }, props.remove ? "Removing..." : "Deploying..."))))));
|
|
95
|
-
};
|
|
96
|
-
export function printDeploymentResults(assembly, results, remove) {
|
|
97
|
-
// Print success stacks
|
|
98
|
-
const success = Object.entries(results).filter(([_stack, result]) => Stacks.isSuccess(result.status));
|
|
99
|
-
if (success.length) {
|
|
100
|
-
Colors.gap();
|
|
101
|
-
Colors.line(Colors.success(`✔`), Colors.bold(remove ? ` Removed:` : ` Deployed:`));
|
|
102
|
-
for (const [stack, result] of success) {
|
|
103
|
-
Colors.line(` ${Colors.dim(stackNameToId(stack))}`);
|
|
104
|
-
for (const key of Object.keys(result.outputs).sort()) {
|
|
105
|
-
const value = result.outputs[key];
|
|
106
|
-
Colors.line(` ${Colors.bold.dim(key + ":")} ${value}`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
Colors.gap();
|
|
110
|
-
}
|
|
111
|
-
// Print failed stacks
|
|
112
|
-
const failed = Object.entries(results).filter(([_stack, result]) => Stacks.isFailed(result.status));
|
|
113
|
-
if (failed.length) {
|
|
114
|
-
Colors.gap();
|
|
115
|
-
Colors.line(`${Colors.danger(`✖`)} ${Colors.bold.dim(`Errors`)}`);
|
|
116
|
-
for (const [stack, result] of failed) {
|
|
117
|
-
Colors.line(` ${Colors.dim(stackNameToId(stack))} ${Colors.dim(result.status)}`);
|
|
118
|
-
for (const [id, error] of Object.entries(result.errors)) {
|
|
119
|
-
const readable = logicalIdToCdkPath(assembly, stack, id) || id;
|
|
120
|
-
Colors.line(` ${Colors.danger.bold(readable + ":")} ${error}`);
|
|
121
|
-
const helper = getHelper(error);
|
|
122
|
-
if (helper) {
|
|
123
|
-
Colors.line(` ${Colors.warning.bold("⮑ Hint:")} ${helper}`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
Colors.gap();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function stackNameToId(stack) {
|
|
131
|
-
const project = useProject();
|
|
132
|
-
const prefix = `${project.config.stage}-${project.config.name}-`;
|
|
133
|
-
return stack.startsWith(prefix) ? stack.substring(prefix.length) : stack;
|
|
134
|
-
}
|
|
135
|
-
function logicalIdToCdkPath(assembly, stack, logicalId) {
|
|
136
|
-
const found = Object.entries(assembly.manifest.artifacts?.[stack]?.metadata || {}).find(([_key, value]) => value[0]?.type === "aws:cdk:logicalId" && value[0]?.data === logicalId)?.[0];
|
|
137
|
-
if (!found) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
return found.split("/").filter(Boolean).slice(1, -1).join("/");
|
|
141
|
-
}
|
|
142
|
-
function getHelper(error) {
|
|
143
|
-
return (getCloudFrontBehaviorLimitHelper(error) ||
|
|
144
|
-
getApiAccessLogPermissionsHelper(error) ||
|
|
145
|
-
getAppSyncMultiResolverHelper(error) ||
|
|
146
|
-
getApiLogRoleHelper(error));
|
|
147
|
-
}
|
|
148
|
-
function getCloudFrontBehaviorLimitHelper(error) {
|
|
149
|
-
if (error.indexOf("Your request contains more CacheBehaviors than are allowed per distribution.") > -1) {
|
|
150
|
-
return `This error often occurs when deploying a frontend with a large number of top-level files and folders in the assets directory. Check out this doc on how to resolve the issue - https://docs.sst.dev/known-issues#cloudfront-cachebehaviors-limit-exceeded`;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function getApiAccessLogPermissionsHelper(error) {
|
|
154
|
-
// Can run into this issue when enabling access logs for API Gateway
|
|
155
|
-
// note: this should be handled in SST as access log group names are now
|
|
156
|
-
// hardcoded with /aws/vendedlogs/apis prefix.
|
|
157
|
-
if (error.indexOf("Insufficient permissions to enable logging") > -1) {
|
|
158
|
-
return `This is a common deploy error. Check out this GitHub issue for more details - https://github.com/sst/sst/issues/125`;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
function getAppSyncMultiResolverHelper(error) {
|
|
162
|
-
// Can run into this issue when updating an AppSyncApi resolver
|
|
163
|
-
if (error.indexOf("Only one resolver is allowed per field. (Service: AWSAppSync") > -1) {
|
|
164
|
-
return `This is a common error for deploying AppSync APIs. Check out this GitHub issue for more details - https://github.com/aws/aws-cdk/issues/13269`;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function getApiLogRoleHelper(error) {
|
|
168
|
-
// Can run into this issue when enabling access logs for WebSocketApi
|
|
169
|
-
if (error.indexOf("CloudWatch Logs role ARN must be set in account settings to enable logging (Service: AmazonApiGatewayV2") > -1) {
|
|
170
|
-
return `This is a common error when configuring Access Log for WebSocket APIs. The AWS API Gateway service in your AWS account does not have permissions to the CloudWatch logs service. Follow this article to create an IAM role for logging to CloudWatch - https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/`;
|
|
171
|
-
}
|
|
172
|
-
}
|
package/cli/ui/functions.d.ts
DELETED
package/cli/ui/functions.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { dim } from "colorette";
|
|
2
|
-
import { Text } from "ink";
|
|
3
|
-
import Spinner from "ink-spinner";
|
|
4
|
-
import React, { useEffect, useState } from "react";
|
|
5
|
-
import { useBus } from "../../bus.js";
|
|
6
|
-
import { useFunctions } from "../../constructs/Function.js";
|
|
7
|
-
import { Colors } from "../colors.js";
|
|
8
|
-
export function Functions() {
|
|
9
|
-
const [functions, setFunctions] = useState({});
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
const bus = useBus();
|
|
12
|
-
const invoke = bus.subscribe("function.invoked", (evt) => {
|
|
13
|
-
setFunctions((functions) => {
|
|
14
|
-
setTimeout(() => {
|
|
15
|
-
setFunctions((functions) => {
|
|
16
|
-
const existing = functions[evt.properties.requestID];
|
|
17
|
-
if (!existing)
|
|
18
|
-
return functions;
|
|
19
|
-
return { ...functions };
|
|
20
|
-
});
|
|
21
|
-
}, 500);
|
|
22
|
-
return {
|
|
23
|
-
...functions,
|
|
24
|
-
[evt.properties.requestID]: {
|
|
25
|
-
requestID: evt.properties.requestID,
|
|
26
|
-
functionID: evt.properties.functionID,
|
|
27
|
-
started: Date.now(),
|
|
28
|
-
logs: [],
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
const stdout = bus.subscribe("worker.stdout", (evt) => {
|
|
34
|
-
setFunctions((functions) => {
|
|
35
|
-
const existing = functions[evt.properties.requestID];
|
|
36
|
-
if (!existing)
|
|
37
|
-
return functions;
|
|
38
|
-
return {
|
|
39
|
-
...functions,
|
|
40
|
-
[evt.properties.requestID]: {
|
|
41
|
-
...existing,
|
|
42
|
-
logs: [...existing.logs, evt.properties.message],
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
// This is all ugly but the timeouts are for UI smootheness
|
|
48
|
-
const success = bus.subscribe("function.success", (evt) => {
|
|
49
|
-
function print(input, diff) {
|
|
50
|
-
setTimeout(() => {
|
|
51
|
-
console.log(Colors.primary(` ➜ `), useFunctions().fromID(input.functionID)?.handler);
|
|
52
|
-
for (const log of input.logs) {
|
|
53
|
-
console.log(` ${dim(log)}`);
|
|
54
|
-
}
|
|
55
|
-
console.log(` ${dim(`Done in ${diff}ms`)}`);
|
|
56
|
-
console.log();
|
|
57
|
-
}, diff > 500 ? 60 : 0);
|
|
58
|
-
}
|
|
59
|
-
setFunctions((functions) => {
|
|
60
|
-
const { [evt.properties.requestID]: existing, ...next } = functions;
|
|
61
|
-
if (!existing)
|
|
62
|
-
return functions;
|
|
63
|
-
const diff = Date.now() - existing.started;
|
|
64
|
-
if (diff > 500 && diff < 1500) {
|
|
65
|
-
setTimeout(() => {
|
|
66
|
-
setFunctions((functions) => {
|
|
67
|
-
const { [evt.properties.requestID]: existing, ...next } = functions;
|
|
68
|
-
print(existing, diff);
|
|
69
|
-
return next;
|
|
70
|
-
});
|
|
71
|
-
}, 1500 - diff);
|
|
72
|
-
return functions;
|
|
73
|
-
}
|
|
74
|
-
print(existing, diff);
|
|
75
|
-
return next;
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
const error = bus.subscribe("function.error", (evt) => {
|
|
79
|
-
function print(input, diff) {
|
|
80
|
-
setTimeout(() => {
|
|
81
|
-
console.log(Colors.primary(` ➜ `), useFunctions().fromID(input.functionID)?.handler);
|
|
82
|
-
for (const log of input.logs) {
|
|
83
|
-
console.log(` ${dim(log)}`);
|
|
84
|
-
}
|
|
85
|
-
console.log(` ${Colors.danger(evt.properties.errorMessage)}`);
|
|
86
|
-
for (const line of evt.properties.trace || []) {
|
|
87
|
-
console.log(` ${dim(line)}`);
|
|
88
|
-
}
|
|
89
|
-
console.log();
|
|
90
|
-
}, diff > 500 ? 60 : 0);
|
|
91
|
-
}
|
|
92
|
-
setFunctions((functions) => {
|
|
93
|
-
const { [evt.properties.requestID]: existing, ...next } = functions;
|
|
94
|
-
if (!existing)
|
|
95
|
-
return functions;
|
|
96
|
-
const diff = Date.now() - existing.started;
|
|
97
|
-
if (diff > 500 && diff < 1500) {
|
|
98
|
-
setTimeout(() => {
|
|
99
|
-
setFunctions((functions) => {
|
|
100
|
-
const { [evt.properties.requestID]: existing, ...next } = functions;
|
|
101
|
-
print(existing, diff);
|
|
102
|
-
return next;
|
|
103
|
-
});
|
|
104
|
-
}, 1500 - diff);
|
|
105
|
-
return functions;
|
|
106
|
-
}
|
|
107
|
-
print(existing, diff);
|
|
108
|
-
return next;
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
return () => {
|
|
112
|
-
bus.unsubscribe(invoke);
|
|
113
|
-
bus.unsubscribe(success);
|
|
114
|
-
bus.unsubscribe(error);
|
|
115
|
-
bus.unsubscribe(stdout);
|
|
116
|
-
};
|
|
117
|
-
}, []);
|
|
118
|
-
return (React.createElement(React.Fragment, null, Object.values(functions)
|
|
119
|
-
.filter((f) => Date.now() - f.started >= 500)
|
|
120
|
-
.map((evt) => (React.createElement(React.Fragment, { key: evt.requestID },
|
|
121
|
-
React.createElement(Text, null,
|
|
122
|
-
" ",
|
|
123
|
-
React.createElement(Spinner, null),
|
|
124
|
-
" ",
|
|
125
|
-
useFunctions().fromID(evt.functionID)?.handler),
|
|
126
|
-
evt.logs.map((log, index) => (React.createElement(Text, { dimColor: true, key: index },
|
|
127
|
-
" ",
|
|
128
|
-
log))),
|
|
129
|
-
React.createElement(Text, null, " "))))));
|
|
130
|
-
}
|