diff --git a/cmd/sst/main.go b/cmd/sst/main.go
index 8be32472e..b52cef3ca 100644
--- a/cmd/sst/main.go
+++ b/cmd/sst/main.go
@@ -11,8 +11,8 @@ import (
"os/signal"
"os/user"
"path/filepath"
+ "reflect"
"strings"
- "sync"
//"syscall"
"time"
@@ -225,25 +225,65 @@ func main() {
return err
}
- deployWaiter := sync.WaitGroup{}
- deployWaiter.Add(1)
+ restartTarget := make(chan project.Links)
+ runOnce := false
+ go func() {
+ if !hasTarget {
+ return
+ }
+ links := <-restartTarget
- if hasTarget {
- go func() {
- deployWaiter.Wait()
- cmd := exec.CommandContext(
- ctx,
+ for {
+ cmd := exec.Command(
args[0],
args[1:]...,
)
+
+ cmd.Env = append(cmd.Env,
+ os.Environ()...,
+ )
+
+ for resource, value := range links {
+ jsonValue, _ := json.Marshal(value)
+ envVar := fmt.Sprintf("SST_RESOURCE_%s=%s", resource, jsonValue)
+ cmd.Env = append(cmd.Env, envVar)
+ }
+
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Start()
- cmd.Wait()
- cancel()
- }()
- }
+ runOnce = true
+ processExit := make(chan interface{})
+
+ go func() {
+ cmd.Wait()
+ processExit <- true
+ }()
+
+ loop:
+ for {
+ select {
+ case <-ctx.Done():
+ cmd.Process.Signal(os.Interrupt)
+ return
+ case <-processExit:
+ cancel()
+ case nextLinks := <-restartTarget:
+ for key, value := range nextLinks {
+ oldValue := links[key]
+ if !reflect.DeepEqual(oldValue, value) {
+ cmd.Process.Signal(os.Interrupt)
+ cmd.Wait()
+ fmt.Println("Restarting...")
+ break loop
+ }
+ }
+ continue
+ }
+ }
+ }
+ }()
state := &server.State{}
u := ui.New(ui.ProgressModeDev)
@@ -251,7 +291,7 @@ func main() {
CfgPath: cfgPath,
Stage: stage,
OnEvent: func(event server.Event) {
- if state.Deployed == false || !hasTarget {
+ if !hasTarget || !runOnce {
defer u.Trigger(&event.StackEvent)
if event.StackEvent.PreludeEvent != nil {
u.Reset()
@@ -260,27 +300,36 @@ func main() {
}
}
+ if event.PreludeEvent != nil && hasTarget && state.Deployed {
+ fmt.Println()
+ fmt.Println("🔥 SST is deploying, run sst dev to view progress 🔥")
+ return
+ }
+
if event.CompleteEvent != nil {
- if state.Deployed == false {
- if !event.CompleteEvent.Finished || len(event.CompleteEvent.Errors) > 0 {
+ if hasTarget {
+ if !runOnce && (!event.CompleteEvent.Finished || len(event.CompleteEvent.Errors) > 0) {
cancel()
+ return
}
+
+ restartTarget <- event.CompleteEvent.Links
}
}
if event.StateEvent != nil {
next := event.StateEvent.State
- if state.App == "" {
+ defer func() {
+ state = next
+ }()
+
+ if state.App == "" && next.App != "" {
u.Header(
version,
next.App,
next.Stage,
)
}
- if !state.Deployed && next.Deployed && hasTarget {
- deployWaiter.Done()
- }
- state = event.StateEvent.State
}
},
})
diff --git a/examples/nextjs/app/page.tsx b/examples/nextjs/app/page.tsx
index be22af0c4..0840a914a 100644
--- a/examples/nextjs/app/page.tsx
+++ b/examples/nextjs/app/page.tsx
@@ -9,7 +9,9 @@ export default function Home() {
Get started by editing
app/page.tsx
-
cool {headers().get("host")}-{Date.now()}
+
+ cool {headers().get("host")}-{Date.now()}
+
=0.10.0'}
dev: true
+ /@aws-crypto/crc32@3.0.0:
+ resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.468.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/ie11-detection@3.0.0:
+ resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser@3.0.0:
+ resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-locate-window': 3.495.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js@3.0.0:
+ resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.468.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto@3.0.0:
+ resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util@3.0.0:
+ resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/client-lambda@3.478.0:
+ resolution: {integrity: sha512-7+PEE1aV3qVeuswL6cUBfHeljxC/WaXFj+214/W3q71uRdLbX5Z7ZOD15sJbjSu+4VZN9ugMaxEcp+oLiqWl+A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.478.0
+ '@aws-sdk/core': 3.477.0
+ '@aws-sdk/credential-provider-node': 3.478.0
+ '@aws-sdk/middleware-host-header': 3.468.0
+ '@aws-sdk/middleware-logger': 3.468.0
+ '@aws-sdk/middleware-recursion-detection': 3.468.0
+ '@aws-sdk/middleware-signing': 3.468.0
+ '@aws-sdk/middleware-user-agent': 3.478.0
+ '@aws-sdk/region-config-resolver': 3.470.0
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-endpoints': 3.478.0
+ '@aws-sdk/util-user-agent-browser': 3.468.0
+ '@aws-sdk/util-user-agent-node': 3.470.0
+ '@smithy/config-resolver': 2.1.1
+ '@smithy/core': 1.3.1
+ '@smithy/eventstream-serde-browser': 2.1.1
+ '@smithy/eventstream-serde-config-resolver': 2.1.1
+ '@smithy/eventstream-serde-node': 2.1.1
+ '@smithy/fetch-http-handler': 2.4.1
+ '@smithy/hash-node': 2.1.1
+ '@smithy/invalid-dependency': 2.1.1
+ '@smithy/middleware-content-length': 2.1.1
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-retry': 2.1.1
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/middleware-stack': 2.1.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/node-http-handler': 2.3.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ '@smithy/util-base64': 2.1.1
+ '@smithy/util-body-length-browser': 2.1.1
+ '@smithy/util-body-length-node': 2.2.1
+ '@smithy/util-defaults-mode-browser': 2.1.1
+ '@smithy/util-defaults-mode-node': 2.1.1
+ '@smithy/util-endpoints': 1.1.1
+ '@smithy/util-retry': 2.1.1
+ '@smithy/util-stream': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ '@smithy/util-waiter': 2.1.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso@3.478.0:
+ resolution: {integrity: sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.477.0
+ '@aws-sdk/middleware-host-header': 3.468.0
+ '@aws-sdk/middleware-logger': 3.468.0
+ '@aws-sdk/middleware-recursion-detection': 3.468.0
+ '@aws-sdk/middleware-user-agent': 3.478.0
+ '@aws-sdk/region-config-resolver': 3.470.0
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-endpoints': 3.478.0
+ '@aws-sdk/util-user-agent-browser': 3.468.0
+ '@aws-sdk/util-user-agent-node': 3.470.0
+ '@smithy/config-resolver': 2.1.1
+ '@smithy/core': 1.3.1
+ '@smithy/fetch-http-handler': 2.4.1
+ '@smithy/hash-node': 2.1.1
+ '@smithy/invalid-dependency': 2.1.1
+ '@smithy/middleware-content-length': 2.1.1
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-retry': 2.1.1
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/middleware-stack': 2.1.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/node-http-handler': 2.3.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ '@smithy/util-base64': 2.1.1
+ '@smithy/util-body-length-browser': 2.1.1
+ '@smithy/util-body-length-node': 2.2.1
+ '@smithy/util-defaults-mode-browser': 2.1.1
+ '@smithy/util-defaults-mode-node': 2.1.1
+ '@smithy/util-endpoints': 1.1.1
+ '@smithy/util-retry': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts@3.478.0:
+ resolution: {integrity: sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.477.0
+ '@aws-sdk/credential-provider-node': 3.478.0
+ '@aws-sdk/middleware-host-header': 3.468.0
+ '@aws-sdk/middleware-logger': 3.468.0
+ '@aws-sdk/middleware-recursion-detection': 3.468.0
+ '@aws-sdk/middleware-user-agent': 3.478.0
+ '@aws-sdk/region-config-resolver': 3.470.0
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-endpoints': 3.478.0
+ '@aws-sdk/util-user-agent-browser': 3.468.0
+ '@aws-sdk/util-user-agent-node': 3.470.0
+ '@smithy/config-resolver': 2.1.1
+ '@smithy/core': 1.3.1
+ '@smithy/fetch-http-handler': 2.4.1
+ '@smithy/hash-node': 2.1.1
+ '@smithy/invalid-dependency': 2.1.1
+ '@smithy/middleware-content-length': 2.1.1
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-retry': 2.1.1
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/middleware-stack': 2.1.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/node-http-handler': 2.3.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ '@smithy/util-base64': 2.1.1
+ '@smithy/util-body-length-browser': 2.1.1
+ '@smithy/util-body-length-node': 2.2.1
+ '@smithy/util-defaults-mode-browser': 2.1.1
+ '@smithy/util-defaults-mode-node': 2.1.1
+ '@smithy/util-endpoints': 1.1.1
+ '@smithy/util-middleware': 2.1.1
+ '@smithy/util-retry': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ fast-xml-parser: 4.2.5
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/core@3.477.0:
+ resolution: {integrity: sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/core': 1.3.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/signature-v4': 2.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-env@3.468.0:
+ resolution: {integrity: sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/property-provider': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-ini@3.478.0:
+ resolution: {integrity: sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.468.0
+ '@aws-sdk/credential-provider-process': 3.468.0
+ '@aws-sdk/credential-provider-sso': 3.478.0
+ '@aws-sdk/credential-provider-web-identity': 3.468.0
+ '@aws-sdk/types': 3.468.0
+ '@smithy/credential-provider-imds': 2.2.1
+ '@smithy/property-provider': 2.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node@3.478.0:
+ resolution: {integrity: sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.468.0
+ '@aws-sdk/credential-provider-ini': 3.478.0
+ '@aws-sdk/credential-provider-process': 3.468.0
+ '@aws-sdk/credential-provider-sso': 3.478.0
+ '@aws-sdk/credential-provider-web-identity': 3.468.0
+ '@aws-sdk/types': 3.468.0
+ '@smithy/credential-provider-imds': 2.2.1
+ '@smithy/property-provider': 2.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process@3.468.0:
+ resolution: {integrity: sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/property-provider': 2.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-sso@3.478.0:
+ resolution: {integrity: sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.478.0
+ '@aws-sdk/token-providers': 3.478.0
+ '@aws-sdk/types': 3.468.0
+ '@smithy/property-provider': 2.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity@3.468.0:
+ resolution: {integrity: sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/property-provider': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-host-header@3.468.0:
+ resolution: {integrity: sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-logger@3.468.0:
+ resolution: {integrity: sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection@3.468.0:
+ resolution: {integrity: sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-signing@3.468.0:
+ resolution: {integrity: sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/property-provider': 2.1.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/signature-v4': 2.1.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-middleware': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-user-agent@3.478.0:
+ resolution: {integrity: sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-endpoints': 3.478.0
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/region-config-resolver@3.470.0:
+ resolution: {integrity: sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-config-provider': 2.2.1
+ '@smithy/util-middleware': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/token-providers@3.478.0:
+ resolution: {integrity: sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/middleware-host-header': 3.468.0
+ '@aws-sdk/middleware-logger': 3.468.0
+ '@aws-sdk/middleware-recursion-detection': 3.468.0
+ '@aws-sdk/middleware-user-agent': 3.478.0
+ '@aws-sdk/region-config-resolver': 3.470.0
+ '@aws-sdk/types': 3.468.0
+ '@aws-sdk/util-endpoints': 3.478.0
+ '@aws-sdk/util-user-agent-browser': 3.468.0
+ '@aws-sdk/util-user-agent-node': 3.470.0
+ '@smithy/config-resolver': 2.1.1
+ '@smithy/fetch-http-handler': 2.4.1
+ '@smithy/hash-node': 2.1.1
+ '@smithy/invalid-dependency': 2.1.1
+ '@smithy/middleware-content-length': 2.1.1
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-retry': 2.1.1
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/middleware-stack': 2.1.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/node-http-handler': 2.3.1
+ '@smithy/property-provider': 2.1.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ '@smithy/util-base64': 2.1.1
+ '@smithy/util-body-length-browser': 2.1.1
+ '@smithy/util-body-length-node': 2.2.1
+ '@smithy/util-defaults-mode-browser': 2.1.1
+ '@smithy/util-defaults-mode-node': 2.1.1
+ '@smithy/util-endpoints': 1.1.1
+ '@smithy/util-retry': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types@3.468.0:
+ resolution: {integrity: sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-endpoints@3.478.0:
+ resolution: {integrity: sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/util-endpoints': 1.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-locate-window@3.495.0:
+ resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser@3.468.0:
+ resolution: {integrity: sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==}
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/types': 2.9.1
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-node@3.470.0:
+ resolution: {integrity: sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/types': 3.468.0
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-utf8-browser@3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/@babel/runtime@7.23.4:
resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==}
engines: {node: '>=6.9.0'}
@@ -197,6 +653,422 @@ packages:
resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==}
dev: true
+ /@smithy/abort-controller@2.1.1:
+ resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/config-resolver@2.1.1:
+ resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-config-provider': 2.2.1
+ '@smithy/util-middleware': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/core@1.3.1:
+ resolution: {integrity: sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-retry': 2.1.1
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-middleware': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/credential-provider-imds@2.2.1:
+ resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/property-provider': 2.1.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-codec@2.1.1:
+ resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@smithy/types': 2.9.1
+ '@smithy/util-hex-encoding': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-browser@2.1.1:
+ resolution: {integrity: sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-config-resolver@2.1.1:
+ resolution: {integrity: sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-node@2.1.1:
+ resolution: {integrity: sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-universal@2.1.1:
+ resolution: {integrity: sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/fetch-http-handler@2.4.1:
+ resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==}
+ dependencies:
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/querystring-builder': 2.1.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-base64': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-node@2.1.1:
+ resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ '@smithy/util-buffer-from': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/invalid-dependency@2.1.1:
+ resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/is-array-buffer@2.1.1:
+ resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-content-length@2.1.1:
+ resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-endpoint@2.4.1:
+ resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-serde': 2.1.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/url-parser': 2.1.1
+ '@smithy/util-middleware': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-retry@2.1.1:
+ resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/service-error-classification': 2.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-middleware': 2.1.1
+ '@smithy/util-retry': 2.1.1
+ tslib: 2.6.2
+ uuid: 8.3.2
+ dev: false
+
+ /@smithy/middleware-serde@2.1.1:
+ resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-stack@2.1.1:
+ resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-config-provider@2.2.1:
+ resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.1.1
+ '@smithy/shared-ini-file-loader': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-http-handler@2.3.1:
+ resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.1.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/querystring-builder': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/property-provider@2.1.1:
+ resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/protocol-http@3.1.1:
+ resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-builder@2.1.1:
+ resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ '@smithy/util-uri-escape': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-parser@2.1.1:
+ resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/service-error-classification@2.1.1:
+ resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ dev: false
+
+ /@smithy/shared-ini-file-loader@2.3.1:
+ resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/signature-v4@2.1.1:
+ resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.1.1
+ '@smithy/is-array-buffer': 2.1.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-hex-encoding': 2.1.1
+ '@smithy/util-middleware': 2.1.1
+ '@smithy/util-uri-escape': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/smithy-client@2.3.1:
+ resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-endpoint': 2.4.1
+ '@smithy/middleware-stack': 2.1.1
+ '@smithy/protocol-http': 3.1.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-stream': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/types@2.9.1:
+ resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/url-parser@2.1.1:
+ resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==}
+ dependencies:
+ '@smithy/querystring-parser': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-base64@2.1.1:
+ resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-browser@2.1.1:
+ resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-node@2.2.1:
+ resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-buffer-from@2.1.1:
+ resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/is-array-buffer': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-config-provider@2.2.1:
+ resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-browser@2.1.1:
+ resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-node@2.1.1:
+ resolution: {integrity: sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/config-resolver': 2.1.1
+ '@smithy/credential-provider-imds': 2.2.1
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/property-provider': 2.1.1
+ '@smithy/smithy-client': 2.3.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-endpoints@1.1.1:
+ resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.2.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-hex-encoding@2.1.1:
+ resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-middleware@2.1.1:
+ resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-retry@2.1.1:
+ resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/service-error-classification': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-stream@2.1.1:
+ resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/fetch-http-handler': 2.4.1
+ '@smithy/node-http-handler': 2.3.1
+ '@smithy/types': 2.9.1
+ '@smithy/util-base64': 2.1.1
+ '@smithy/util-buffer-from': 2.1.1
+ '@smithy/util-hex-encoding': 2.1.1
+ '@smithy/util-utf8': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-uri-escape@2.1.1:
+ resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-utf8@2.1.1:
+ resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.1.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-waiter@2.1.1:
+ resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.1.1
+ '@smithy/types': 2.9.1
+ tslib: 2.6.2
+ dev: false
+
/@swc/helpers@0.5.2:
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
dependencies:
@@ -453,6 +1325,10 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
+ /bowser@2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
/brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
@@ -1032,6 +1908,13 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
+ /fast-xml-parser@4.2.5:
+ resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
@@ -1943,6 +2826,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /sst@3.0.1-16:
+ resolution: {integrity: sha512-1/oBG+3PFGzK9n6KkApr9Ik/qE4aVUFCfQJPl0o/oS/zRz78wisBKU8iHPOA2wsyy9XXTxBs0Qh4UbURBdkPhg==}
+ dependencies:
+ '@aws-sdk/client-lambda': 3.478.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
@@ -2004,6 +2895,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
/styled-jsx@5.1.1(react@18.0.0):
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
engines: {node: '>= 12.0.0'}
@@ -2067,6 +2962,10 @@ packages:
strip-bom: 3.0.0
dev: true
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
dev: false
@@ -2142,6 +3041,11 @@ packages:
punycode: 2.3.1
dev: true
+ /uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+ dev: false
+
/v8-compile-cache@2.4.0:
resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==}
dev: true
diff --git a/examples/nextjs/sst-env.d.ts b/examples/nextjs/sst-env.d.ts
index 359a38581..1bb2226f2 100644
--- a/examples/nextjs/sst-env.d.ts
+++ b/examples/nextjs/sst-env.d.ts
@@ -1 +1 @@
-///
\ No newline at end of file
+///
diff --git a/examples/test/sst.config.ts b/examples/test/sst.config.ts
index 8d709fa00..0e777018c 100644
--- a/examples/test/sst.config.ts
+++ b/examples/test/sst.config.ts
@@ -27,6 +27,7 @@ export default $config({
const secret = new sst.Secret("StripeKey");
const queue = new aws.sqs.Queue("MyQueue");
+ const bucket = new aws.s3.Bucket("MyBucket", {});
const fn = new sst.Function("MyFunction", {
url: true,
diff --git a/pkg/project/stack.go b/pkg/project/stack.go
index 293eb36bf..8733ca6af 100644
--- a/pkg/project/stack.go
+++ b/pkg/project/stack.go
@@ -50,8 +50,10 @@ type ConcurrentUpdateEvent struct{}
type ConcurrentUpdateError struct{}
+type Links map[string]interface{}
+
type CompleteEvent struct {
- Links map[string]interface{}
+ Links Links
Outputs map[string]interface{}
Hints map[string]string
Errors []Error
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 54254a4a7..117e6ddaa 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -21,21 +21,23 @@ type Server struct {
watchedFiles map[string]bool
subscribers []chan *Event
state *State
+ lastEvent *Event
}
type State struct {
App string
Stage string
+ Links map[string]interface{}
Deployed bool
}
type Event struct {
project.StackEvent
- StateEvent *StateEvent `json:"stateEvent,omitempty"`
+ StateEvent *StateEvent
}
type StateEvent struct {
- State *State `json:"state"`
+ State *State
}
func resolveServerFile(cfgPath, stage string) string {
@@ -94,6 +96,9 @@ func (s *Server) Start(parentContext context.Context) error {
State: s.state,
},
}
+ if s.lastEvent != nil {
+ events <- s.lastEvent
+ }
}()
loop:
for {
@@ -161,6 +166,17 @@ func (s *Server) Start(parentContext context.Context) error {
Dev: true,
OnEvent: func(event *project.StackEvent) {
s.broadcast(&Event{StackEvent: *event})
+
+ if event.CompleteEvent != nil {
+ s.lastEvent = &Event{StackEvent: *event}
+ s.state.Links = event.CompleteEvent.Links
+ s.state.Deployed = true
+ s.broadcast(&Event{
+ StateEvent: &StateEvent{
+ State: s.state,
+ },
+ })
+ }
},
OnFiles: func(files []string) {
for _, file := range files {
@@ -169,13 +185,6 @@ func (s *Server) Start(parentContext context.Context) error {
},
})
- s.state.Deployed = true
- s.broadcast(&Event{
- StateEvent: &StateEvent{
- State: s.state,
- },
- })
-
defer func() {
slog.Info("stopping server")
}()