diff --git a/cmd/sst/main.go b/cmd/sst/main.go
index aea8718d2..aa55ba771 100644
--- a/cmd/sst/main.go
+++ b/cmd/sst/main.go
@@ -237,10 +237,6 @@ func initProject() (*project.Project, error) {
return nil, err
}
- if err := p.GenerateTypes(); err != nil {
- return nil, err
- }
-
if !p.CheckDeps() {
err = p.InstallDeps()
if err != nil {
diff --git a/examples/test/sst.config.ts b/examples/test/sst.config.ts
index 732d60b70..ecc678d05 100644
--- a/examples/test/sst.config.ts
+++ b/examples/test/sst.config.ts
@@ -1,4 +1,4 @@
-///
+///
export default {
config() {
@@ -9,14 +9,10 @@ export default {
};
},
async run() {
- const a = new aws.s3.Bucket("my-bucket", {
- tags: {
- foo: "1123",
- },
- });
-
+ const bucket = new aws.s3.Bucket("my-bucket");
+ new sst.FunctionCodeUpdater("updator");
return {
- url: util.interpolate`https://${a.bucketDomainName}`,
+ url: util.interpolate`https://${bucket.bucketDomainName}`,
};
},
};
diff --git a/examples/test/test.ts b/examples/test/test.ts
new file mode 100644
index 000000000..e69de29bb
diff --git a/internal/components/components.go b/internal/components/components.go
new file mode 100644
index 000000000..f02962794
--- /dev/null
+++ b/internal/components/components.go
@@ -0,0 +1,56 @@
+package components
+
+import (
+ "embed"
+ "io"
+ "os"
+ "path/filepath"
+)
+
+//go:embed src/* package.json
+var files embed.FS
+
+func CopyTo(srcDir, destDir string) error {
+ // Create the destination directory if it doesn't exist
+ if err := os.MkdirAll(destDir, 0755); err != nil {
+ return err
+ }
+
+ // List all files and directories in the embedded FS
+ entries, err := files.ReadDir(srcDir)
+ if err != nil {
+ return err
+ }
+
+ // Loop through each entry (file or directory)
+ for _, entry := range entries {
+ srcPath := filepath.Join(srcDir, entry.Name())
+ destPath := filepath.Join(destDir, entry.Name())
+
+ if entry.IsDir() {
+ // If it's a directory, recursively copy its contents
+ if err := CopyTo(srcPath, destPath); err != nil {
+ return err
+ }
+ } else {
+ // If it's a file, copy it to the destination directory
+ srcFile, err := files.Open(srcPath)
+ if err != nil {
+ return err
+ }
+ defer srcFile.Close()
+
+ destFile, err := os.Create(destPath)
+ if err != nil {
+ return err
+ }
+ defer destFile.Close()
+
+ if _, err := io.Copy(destFile, srcFile); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
diff --git a/pkg/project/components/package.json b/internal/components/package.json
similarity index 80%
rename from pkg/project/components/package.json
rename to internal/components/package.json
index 8123ab65e..6daea0ac3 100644
--- a/pkg/project/components/package.json
+++ b/internal/components/package.json
@@ -2,6 +2,7 @@
"$schema": "https://json.schemastore.org/package.json",
"name": "sst",
"dependencies": {
+ "@aws-sdk/client-sts": "^3.454.0",
"@pulumi/aws": "5.43.0",
"@pulumi/pulumi": "3.94.2"
}
diff --git a/pkg/project/components/pnpm-lock.yaml b/internal/components/pnpm-lock.yaml
similarity index 65%
rename from pkg/project/components/pnpm-lock.yaml
rename to internal/components/pnpm-lock.yaml
index eba279279..022ee1cc4 100644
--- a/pkg/project/components/pnpm-lock.yaml
+++ b/internal/components/pnpm-lock.yaml
@@ -5,6 +5,9 @@ settings:
excludeLinksFromLockfile: false
dependencies:
+ '@aws-sdk/client-sts':
+ specifier: ^3.454.0
+ version: 3.454.0
'@pulumi/aws':
specifier: 5.43.0
version: 5.43.0
@@ -12,13 +15,413 @@ dependencies:
specifier: 3.94.2
version: 3.94.2
-devDependencies:
- '@tsconfig/node18':
- specifier: ^18.2.2
- version: 18.2.2
-
packages:
+ /@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.451.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.451.0
+ '@aws-sdk/util-locate-window': 3.310.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.451.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.451.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/client-sso@3.451.0:
+ resolution: {integrity: sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.451.0
+ '@aws-sdk/middleware-host-header': 3.451.0
+ '@aws-sdk/middleware-logger': 3.451.0
+ '@aws-sdk/middleware-recursion-detection': 3.451.0
+ '@aws-sdk/middleware-user-agent': 3.451.0
+ '@aws-sdk/region-config-resolver': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@aws-sdk/util-endpoints': 3.451.0
+ '@aws-sdk/util-user-agent-browser': 3.451.0
+ '@aws-sdk/util-user-agent-node': 3.451.0
+ '@smithy/config-resolver': 2.0.19
+ '@smithy/fetch-http-handler': 2.2.7
+ '@smithy/hash-node': 2.0.16
+ '@smithy/invalid-dependency': 2.0.14
+ '@smithy/middleware-content-length': 2.0.16
+ '@smithy/middleware-endpoint': 2.2.1
+ '@smithy/middleware-retry': 2.0.21
+ '@smithy/middleware-serde': 2.0.14
+ '@smithy/middleware-stack': 2.0.8
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/node-http-handler': 2.1.10
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/smithy-client': 2.1.16
+ '@smithy/types': 2.6.0
+ '@smithy/url-parser': 2.0.14
+ '@smithy/util-base64': 2.0.1
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.20
+ '@smithy/util-defaults-mode-node': 2.0.26
+ '@smithy/util-endpoints': 1.0.5
+ '@smithy/util-retry': 2.0.7
+ '@smithy/util-utf8': 2.0.2
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts@3.454.0:
+ resolution: {integrity: sha512-0fDvr8WeB6IYO8BUCzcivWmahgGl/zDbaYfakzGnt4mrl5ztYaXE875WI6b7+oFcKMRvN+KLvwu5TtyFuNY+GQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.451.0
+ '@aws-sdk/credential-provider-node': 3.451.0
+ '@aws-sdk/middleware-host-header': 3.451.0
+ '@aws-sdk/middleware-logger': 3.451.0
+ '@aws-sdk/middleware-recursion-detection': 3.451.0
+ '@aws-sdk/middleware-sdk-sts': 3.451.0
+ '@aws-sdk/middleware-signing': 3.451.0
+ '@aws-sdk/middleware-user-agent': 3.451.0
+ '@aws-sdk/region-config-resolver': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@aws-sdk/util-endpoints': 3.451.0
+ '@aws-sdk/util-user-agent-browser': 3.451.0
+ '@aws-sdk/util-user-agent-node': 3.451.0
+ '@smithy/config-resolver': 2.0.19
+ '@smithy/fetch-http-handler': 2.2.7
+ '@smithy/hash-node': 2.0.16
+ '@smithy/invalid-dependency': 2.0.14
+ '@smithy/middleware-content-length': 2.0.16
+ '@smithy/middleware-endpoint': 2.2.1
+ '@smithy/middleware-retry': 2.0.21
+ '@smithy/middleware-serde': 2.0.14
+ '@smithy/middleware-stack': 2.0.8
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/node-http-handler': 2.1.10
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/smithy-client': 2.1.16
+ '@smithy/types': 2.6.0
+ '@smithy/url-parser': 2.0.14
+ '@smithy/util-base64': 2.0.1
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.20
+ '@smithy/util-defaults-mode-node': 2.0.26
+ '@smithy/util-endpoints': 1.0.5
+ '@smithy/util-retry': 2.0.7
+ '@smithy/util-utf8': 2.0.2
+ fast-xml-parser: 4.2.5
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/core@3.451.0:
+ resolution: {integrity: sha512-SamWW2zHEf1ZKe3j1w0Piauryl8BQIlej0TBS18A4ACzhjhWXhCs13bO1S88LvPR5mBFXok3XOT6zPOnKDFktw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/smithy-client': 2.1.16
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-env@3.451.0:
+ resolution: {integrity: sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/property-provider': 2.0.15
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-ini@3.451.0:
+ resolution: {integrity: sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.451.0
+ '@aws-sdk/credential-provider-process': 3.451.0
+ '@aws-sdk/credential-provider-sso': 3.451.0
+ '@aws-sdk/credential-provider-web-identity': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@smithy/credential-provider-imds': 2.1.2
+ '@smithy/property-provider': 2.0.15
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node@3.451.0:
+ resolution: {integrity: sha512-AEwM1WPyxUdKrKyUsKyFqqRFGU70e4qlDyrtBxJnSU9NRLZI8tfEZ67bN7fHSxBUBODgDXpMSlSvJiBLh5/3pw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.451.0
+ '@aws-sdk/credential-provider-ini': 3.451.0
+ '@aws-sdk/credential-provider-process': 3.451.0
+ '@aws-sdk/credential-provider-sso': 3.451.0
+ '@aws-sdk/credential-provider-web-identity': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@smithy/credential-provider-imds': 2.1.2
+ '@smithy/property-provider': 2.0.15
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process@3.451.0:
+ resolution: {integrity: sha512-HQywSdKeD5PErcLLnZfSyCJO+6T+ZyzF+Lm/QgscSC+CbSUSIPi//s15qhBRVely/3KBV6AywxwNH+5eYgt4lQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/property-provider': 2.0.15
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-sso@3.451.0:
+ resolution: {integrity: sha512-Usm/N51+unOt8ID4HnQzxIjUJDrkAQ1vyTOC0gSEEJ7h64NSSPGD5yhN7il5WcErtRd3EEtT1a8/GTC5TdBctg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.451.0
+ '@aws-sdk/token-providers': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@smithy/property-provider': 2.0.15
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity@3.451.0:
+ resolution: {integrity: sha512-Xtg3Qw65EfDjWNG7o2xD6sEmumPfsy3WDGjk2phEzVg8s7hcZGxf5wYwe6UY7RJvlEKrU0rFA+AMn6Hfj5oOzg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/property-provider': 2.0.15
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-host-header@3.451.0:
+ resolution: {integrity: sha512-j8a5jAfhWmsK99i2k8oR8zzQgXrsJtgrLxc3js6U+525mcZytoiDndkWTmD5fjJ1byU1U2E5TaPq+QJeDip05Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-logger@3.451.0:
+ resolution: {integrity: sha512-0kHrYEyVeB2QBfP6TfbI240aRtatLZtcErJbhpiNUb+CQPgEL3crIjgVE8yYiJumZ7f0jyjo8HLPkwD1/2APaw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection@3.451.0:
+ resolution: {integrity: sha512-J6jL6gJ7orjHGM70KDRcCP7so/J2SnkN4vZ9YRLTeeZY6zvBuHDjX8GCIgSqPn/nXFXckZO8XSnA7u6+3TAT0w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-sts@3.451.0:
+ resolution: {integrity: sha512-UJ6UfVUEgp0KIztxpAeelPXI5MLj9wUtUCqYeIMP7C1ZhoEMNm3G39VLkGN43dNhBf1LqjsV9jkKMZbVfYXuwg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-signing': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-signing@3.451.0:
+ resolution: {integrity: sha512-s5ZlcIoLNg1Huj4Qp06iKniE8nJt/Pj1B/fjhWc6cCPCM7XJYUCejCnRh6C5ZJoBEYodjuwZBejPc1Wh3j+znA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/property-provider': 2.0.15
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/signature-v4': 2.0.16
+ '@smithy/types': 2.6.0
+ '@smithy/util-middleware': 2.0.7
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-user-agent@3.451.0:
+ resolution: {integrity: sha512-8NM/0JiKLNvT9wtAQVl1DFW0cEO7OvZyLSUBLNLTHqyvOZxKaZ8YFk7d8PL6l76LeUKRxq4NMxfZQlUIRe0eSA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@aws-sdk/util-endpoints': 3.451.0
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/region-config-resolver@3.451.0:
+ resolution: {integrity: sha512-3iMf4OwzrFb4tAAmoROXaiORUk2FvSejnHIw/XHvf/jjR4EqGGF95NZP/n/MeFZMizJWVssrwS412GmoEyoqhg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/types': 2.6.0
+ '@smithy/util-config-provider': 2.0.0
+ '@smithy/util-middleware': 2.0.7
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/token-providers@3.451.0:
+ resolution: {integrity: sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==}
+ 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.451.0
+ '@aws-sdk/middleware-logger': 3.451.0
+ '@aws-sdk/middleware-recursion-detection': 3.451.0
+ '@aws-sdk/middleware-user-agent': 3.451.0
+ '@aws-sdk/region-config-resolver': 3.451.0
+ '@aws-sdk/types': 3.451.0
+ '@aws-sdk/util-endpoints': 3.451.0
+ '@aws-sdk/util-user-agent-browser': 3.451.0
+ '@aws-sdk/util-user-agent-node': 3.451.0
+ '@smithy/config-resolver': 2.0.19
+ '@smithy/fetch-http-handler': 2.2.7
+ '@smithy/hash-node': 2.0.16
+ '@smithy/invalid-dependency': 2.0.14
+ '@smithy/middleware-content-length': 2.0.16
+ '@smithy/middleware-endpoint': 2.2.1
+ '@smithy/middleware-retry': 2.0.21
+ '@smithy/middleware-serde': 2.0.14
+ '@smithy/middleware-stack': 2.0.8
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/node-http-handler': 2.1.10
+ '@smithy/property-provider': 2.0.15
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/smithy-client': 2.1.16
+ '@smithy/types': 2.6.0
+ '@smithy/url-parser': 2.0.14
+ '@smithy/util-base64': 2.0.1
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.20
+ '@smithy/util-defaults-mode-node': 2.0.26
+ '@smithy/util-endpoints': 1.0.5
+ '@smithy/util-retry': 2.0.7
+ '@smithy/util-utf8': 2.0.2
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types@3.451.0:
+ resolution: {integrity: sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-endpoints@3.451.0:
+ resolution: {integrity: sha512-giqLGBTnRIcKkDqwU7+GQhKbtJ5Ku35cjGQIfMyOga6pwTBUbaK0xW1Sdd8sBQ1GhApscnChzI9o/R9x0368vw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/util-endpoints': 1.0.5
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-locate-window@3.310.0:
+ resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser@3.451.0:
+ resolution: {integrity: sha512-Ws5mG3J0TQifH7OTcMrCTexo7HeSAc3cBgjfhS/ofzPUzVCtsyg0G7I6T7wl7vJJETix2Kst2cpOsxygPgPD9w==}
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/types': 2.6.0
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-node@3.451.0:
+ resolution: {integrity: sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/types': 3.451.0
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/types': 2.6.0
+ 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
+
/@grpc/grpc-js@1.9.6:
resolution: {integrity: sha512-yq3qTy23u++8zdvf+h4mz4ohDFi681JAkMZZPTKh8zmUVh0AKLisFlgxcn22FMNowXz15oJ6pqgwT7DJ+PdJvg==}
engines: {node: ^8.13.0 || >=10.10.0}
@@ -279,9 +682,360 @@ packages:
resolution: {integrity: sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==}
dev: false
- /@tsconfig/node18@18.2.2:
- resolution: {integrity: sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==}
- dev: true
+ /@smithy/abort-controller@2.0.14:
+ resolution: {integrity: sha512-zXtteuYLWbSXnzI3O6xq3FYvigYZFW8mdytGibfarLL2lxHto9L3ILtGVnVGmFZa7SDh62l39EnU5hesLN87Fw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/config-resolver@2.0.19:
+ resolution: {integrity: sha512-JsghnQ5zjWmjEVY8TFOulLdEOCj09SjRLugrHlkPZTIBBm7PQitCFVLThbsKPZQOP7N3ME1DU1nKUc1UaVnBog==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/types': 2.6.0
+ '@smithy/util-config-provider': 2.0.0
+ '@smithy/util-middleware': 2.0.7
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/credential-provider-imds@2.1.2:
+ resolution: {integrity: sha512-Y62jBWdoLPSYjr9fFvJf+KwTa1EunjVr6NryTEWCnwIY93OJxwV4t0qxjwdPl/XMsUkq79ppNJSEQN6Ohnhxjw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/property-provider': 2.0.15
+ '@smithy/types': 2.6.0
+ '@smithy/url-parser': 2.0.14
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-codec@2.0.14:
+ resolution: {integrity: sha512-g/OU/MeWGfHDygoXgMWfG/Xb0QqDnAGcM9t2FRrVAhleXYRddGOEnfanR5cmHgB9ue52MJsyorqFjckzXsylaA==}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@smithy/types': 2.6.0
+ '@smithy/util-hex-encoding': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/fetch-http-handler@2.2.7:
+ resolution: {integrity: sha512-iSDBjxuH9TgrtMYAr7j5evjvkvgwLY3y+9D547uep+JNkZ1ZT+BaeU20j6I/bO/i26ilCWFImrlXTPsfQtZdIQ==}
+ dependencies:
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/querystring-builder': 2.0.14
+ '@smithy/types': 2.6.0
+ '@smithy/util-base64': 2.0.1
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-node@2.0.16:
+ resolution: {integrity: sha512-Wbi9A0PacMYUOwjAulQP90Wl3mQ6NDwnyrZQzFjDz+UzjXOSyQMgBrTkUBz+pVoYVlX3DUu24gWMZBcit+wOGg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ '@smithy/util-buffer-from': 2.0.0
+ '@smithy/util-utf8': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/invalid-dependency@2.0.14:
+ resolution: {integrity: sha512-d8ohpwZo9RzTpGlAfsWtfm1SHBSU7+N4iuZ6MzR10xDTujJJWtmXYHK1uzcr7rggbpUTaWyHpPFgnf91q0EFqQ==}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/is-array-buffer@2.0.0:
+ resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-content-length@2.0.16:
+ resolution: {integrity: sha512-9ddDia3pp1d3XzLXKcm7QebGxLq9iwKf+J1LapvlSOhpF8EM9SjMeSrMOOFgG+2TfW5K3+qz4IAJYYm7INYCng==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-endpoint@2.2.1:
+ resolution: {integrity: sha512-dVDS7HNJl/wb0lpByXor6whqDbb1YlLoaoWYoelyYzLHioXOE7y/0iDwJWtDcN36/tVCw9EPBFZ3aans84jLpg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-serde': 2.0.14
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ '@smithy/url-parser': 2.0.14
+ '@smithy/util-middleware': 2.0.7
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-retry@2.0.21:
+ resolution: {integrity: sha512-EZS1EXv1k6IJX6hyu/0yNQuPcPaXwG8SWljQHYueyRbOxmqYgoWMWPtfZj0xRRQ4YtLawQSpBgAeiJltq8/MPw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/service-error-classification': 2.0.7
+ '@smithy/types': 2.6.0
+ '@smithy/util-middleware': 2.0.7
+ '@smithy/util-retry': 2.0.7
+ tslib: 2.6.2
+ uuid: 8.3.2
+ dev: false
+
+ /@smithy/middleware-serde@2.0.14:
+ resolution: {integrity: sha512-hFi3FqoYWDntCYA2IGY6gJ6FKjq2gye+1tfxF2HnIJB5uW8y2DhpRNBSUMoqP+qvYzRqZ6ntv4kgbG+o3pX57g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-stack@2.0.8:
+ resolution: {integrity: sha512-7/N59j0zWqVEKExJcA14MrLDZ/IeN+d6nbkN8ucs+eURyaDUXWYlZrQmMOd/TyptcQv0+RDlgag/zSTTV62y/Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-config-provider@2.1.6:
+ resolution: {integrity: sha512-HLqTs6O78m3M3z1cPLFxddxhEPv5MkVatfPuxoVO3A+cHZanNd/H5I6btcdHy6N2CB1MJ/lihJC92h30SESsBA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.0.15
+ '@smithy/shared-ini-file-loader': 2.2.5
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-http-handler@2.1.10:
+ resolution: {integrity: sha512-lkALAwtN6odygIM4nB8aHDahINM6WXXjNrZmWQAh0RSossySRT2qa31cFv0ZBuAYVWeprskRk13AFvvLmf1WLw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.0.14
+ '@smithy/protocol-http': 3.0.10
+ '@smithy/querystring-builder': 2.0.14
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/property-provider@2.0.15:
+ resolution: {integrity: sha512-YbRFBn8oiiC3o1Kn3a4KjGa6k47rCM9++5W9cWqYn9WnkyH+hBWgfJAckuxpyA2Hq6Ys4eFrWzXq6fqHEw7iew==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/protocol-http@3.0.10:
+ resolution: {integrity: sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-builder@2.0.14:
+ resolution: {integrity: sha512-lQ4pm9vTv9nIhl5jt6uVMPludr6syE2FyJmHsIJJuOD7QPIJnrf9HhUGf1iHh9KJ4CUv21tpOU3X6s0rB6uJ0g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ '@smithy/util-uri-escape': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-parser@2.0.14:
+ resolution: {integrity: sha512-+cbtXWI9tNtQjlgQg3CA+pvL3zKTAxPnG3Pj6MP89CR3vi3QMmD0SOWoq84tqZDnJCxlsusbgIXk1ngMReXo+A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/service-error-classification@2.0.7:
+ resolution: {integrity: sha512-LLxgW12qGz8doYto15kZ4x1rHjtXl0BnCG6T6Wb8z2DI4PT9cJfOSvzbuLzy7+5I24PAepKgFeWHRd9GYy3Z9w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ dev: false
+
+ /@smithy/shared-ini-file-loader@2.2.5:
+ resolution: {integrity: sha512-LHA68Iu7SmNwfAVe8egmjDCy648/7iJR/fK1UnVw+iAOUJoEYhX2DLgVd5pWllqdDiRbQQzgaHLcRokM+UFR1w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/signature-v4@2.0.16:
+ resolution: {integrity: sha512-ilLY85xS2kZZzTb83diQKYLIYALvart0KnBaKnIRnMBHAGEio5aHSlANQoxVn0VsonwmQ3CnWhnCT0sERD8uTg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.0.14
+ '@smithy/is-array-buffer': 2.0.0
+ '@smithy/types': 2.6.0
+ '@smithy/util-hex-encoding': 2.0.0
+ '@smithy/util-middleware': 2.0.7
+ '@smithy/util-uri-escape': 2.0.0
+ '@smithy/util-utf8': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/smithy-client@2.1.16:
+ resolution: {integrity: sha512-Lw67+yQSpLl4YkDLUzI2KgS8TXclXmbzSeOJUmRFS4ueT56B4pw3RZRF/SRzvgyxM/HxgkUan8oSHXCujPDafQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-stack': 2.0.8
+ '@smithy/types': 2.6.0
+ '@smithy/util-stream': 2.0.21
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/types@2.6.0:
+ resolution: {integrity: sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/url-parser@2.0.14:
+ resolution: {integrity: sha512-kbu17Y1AFXi5lNlySdDj7ZzmvupyWKCX/0jNZ8ffquRyGdbDZb+eBh0QnWqsSmnZa/ctyWaTf7n4l/pXLExrnw==}
+ dependencies:
+ '@smithy/querystring-parser': 2.0.14
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-base64@2.0.1:
+ resolution: {integrity: sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-browser@2.0.0:
+ resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-node@2.1.0:
+ resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-buffer-from@2.0.0:
+ resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/is-array-buffer': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-config-provider@2.0.0:
+ resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-browser@2.0.20:
+ resolution: {integrity: sha512-QJtnbTIl0/BbEASkx1MUFf6EaoWqWW1/IM90N++8NNscePvPf77GheYfpoPis6CBQawUWq8QepTP2QUSAdrVkw==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.0.15
+ '@smithy/smithy-client': 2.1.16
+ '@smithy/types': 2.6.0
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-node@2.0.26:
+ resolution: {integrity: sha512-lGFPOFCHv1ql019oegYqa54BZH7HREw6EBqjDLbAr0wquMX0BDi2sg8TJ6Eq+JGLijkZbJB73m4+aK8OFAapMg==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/config-resolver': 2.0.19
+ '@smithy/credential-provider-imds': 2.1.2
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/property-provider': 2.0.15
+ '@smithy/smithy-client': 2.1.16
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-endpoints@1.0.5:
+ resolution: {integrity: sha512-K7qNuCOD5K/90MjHvHm9kJldrfm40UxWYQxNEShMFxV/lCCCRIg8R4uu1PFAxRvPxNpIdcrh1uK6I1ISjDXZJw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.1.6
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-hex-encoding@2.0.0:
+ resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-middleware@2.0.7:
+ resolution: {integrity: sha512-tRINOTlf1G9B0ECarFQAtTgMhpnrMPSa+5j4ZEwEawCLfTFTavk6757sxhE4RY5RMlD/I3x+DCS8ZUiR8ho9Pw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-retry@2.0.7:
+ resolution: {integrity: sha512-fIe5yARaF0+xVT1XKcrdnHKTJ1Vc4+3e3tLDjCuIcE9b6fkBzzGFY7AFiX4M+vj6yM98DrwkuZeHf7/hmtVp0Q==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/service-error-classification': 2.0.7
+ '@smithy/types': 2.6.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-stream@2.0.21:
+ resolution: {integrity: sha512-0BUE16d7n1x7pi1YluXJdB33jOTyBChT0j/BlOkFa9uxfg6YqXieHxjHNuCdJRARa7AZEj32LLLEPJ1fSa4inA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/fetch-http-handler': 2.2.7
+ '@smithy/node-http-handler': 2.1.10
+ '@smithy/types': 2.6.0
+ '@smithy/util-base64': 2.0.1
+ '@smithy/util-buffer-from': 2.0.0
+ '@smithy/util-hex-encoding': 2.0.0
+ '@smithy/util-utf8': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-uri-escape@2.0.0:
+ resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-utf8@2.0.2:
+ resolution: {integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.0.0
+ tslib: 2.6.2
+ dev: false
/@types/node@20.9.4:
resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==}
@@ -376,6 +1130,10 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: false
+ /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:
@@ -590,6 +1348,13 @@ packages:
strip-final-newline: 2.0.0
dev: false
+ /fast-xml-parser@4.2.5:
+ resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/find-up@6.3.0:
resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1352,6 +2117,10 @@ packages:
engines: {node: '>=6'}
dev: false
+ /strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
@@ -1372,6 +2141,14 @@ packages:
yn: 2.0.0
dev: false
+ /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
+
/typed-array-buffer@1.0.0:
resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
engines: {node: '>= 0.4'}
@@ -1462,6 +2239,11 @@ packages:
hasBin: true
dev: false
+ /uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+ dev: false
+
/validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
dependencies:
diff --git a/internal/components/src/components/index.ts b/internal/components/src/components/index.ts
new file mode 100644
index 000000000..5a234d716
--- /dev/null
+++ b/internal/components/src/components/index.ts
@@ -0,0 +1,20 @@
+export * from "./nextjs";
+
+import * as pulumi from "@pulumi/pulumi";
+import * as aws from "@pulumi/aws";
+import { STSClient, GetCallerIdentityCommand } from "@aws-sdk/client-sts";
+
+class Provider implements pulumi.dynamic.ResourceProvider {
+ async create(): Promise {
+ const client = new STSClient();
+ const identity = await client.send(new GetCallerIdentityCommand({}));
+ return { id: "foo", outs: { account: identity.Account } };
+ }
+}
+
+export class FunctionCodeUpdater extends pulumi.dynamic.Resource {
+ account!: pulumi.Output;
+ constructor(name: string) {
+ super(new Provider(), name, { account: undefined });
+ }
+}
diff --git a/internal/components/src/components/nextjs.ts b/internal/components/src/components/nextjs.ts
new file mode 100644
index 000000000..65ea9a1b9
--- /dev/null
+++ b/internal/components/src/components/nextjs.ts
@@ -0,0 +1 @@
+export class Nextjs {}
diff --git a/internal/components/src/global.d.ts b/internal/components/src/global.d.ts
new file mode 100644
index 000000000..5bd9752b3
--- /dev/null
+++ b/internal/components/src/global.d.ts
@@ -0,0 +1,35 @@
+import "@types/node";
+import "@pulumi/aws";
+import "@pulumi/pulumi";
+import "./components/index";
+
+declare global {
+ // @ts-expect-error
+ export import aws = require("@pulumi/aws");
+
+ // @ts-expect-error
+ export import util = require("@pulumi/pulumi");
+
+ // @ts-expect-error
+ export import sst = require("./components/index");
+
+ export const app: {
+ region: string;
+ stage: string;
+ name: string;
+ mode: "deploy" | "remove";
+ paths: {
+ root: string;
+ temp: string;
+ home: string;
+ };
+ aws: {
+ AWS_ACCESS_KEY_ID: string;
+ AWS_SECRET_ACCESS_KEY: string;
+ AWS_SESSION_TOKEN: string;
+ };
+ bootstrap: {
+ bucket: string;
+ };
+ };
+}
diff --git a/internal/components/src/runtime/index.ts b/internal/components/src/runtime/index.ts
new file mode 100644
index 000000000..6c5303774
--- /dev/null
+++ b/internal/components/src/runtime/index.ts
@@ -0,0 +1,7 @@
+import * as _aws from "@pulumi/aws";
+import * as _util from "@pulumi/pulumi";
+import * as _sst from "../components/index";
+
+globalThis.aws = _aws;
+globalThis.util = _util;
+globalThis.sst = _sst;
diff --git a/pkg/js/js.go b/pkg/js/js.go
index da906a6e1..c40b5f361 100644
--- a/pkg/js/js.go
+++ b/pkg/js/js.go
@@ -151,8 +151,8 @@ func (p *Process) Eval(input EvalOptions) error {
`,
},
External: []string{
- "@pulumi/pulumi",
- "@pulumi/aws",
+ "@pulumi/*",
+ "@aws-sdk/*",
},
Format: esbuild.FormatESModule,
Platform: esbuild.PlatformNode,
diff --git a/pkg/project/components/src/index.ts b/pkg/project/components/src/index.ts
deleted file mode 100644
index ce8bfdafa..000000000
--- a/pkg/project/components/src/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const TEST = "lol";
diff --git a/pkg/project/deps.go b/pkg/project/deps.go
index c00972bf1..55ec3d0f4 100644
--- a/pkg/project/deps.go
+++ b/pkg/project/deps.go
@@ -1,23 +1,14 @@
package project
import (
- "embed"
"encoding/json"
- "io"
"log/slog"
"os"
"os/exec"
"path/filepath"
-)
-
-//go:embed components/src/* components/package.json
-var sstFiles embed.FS
-var VERSIONS = [][]string{
- {"sst-ion", "0.0.2"},
- {"@pulumi/aws", "~"},
- {"@pulumi/pulumi", "~"},
-}
+ "github.com/sst/ion/internal/components"
+)
func (p *Project) CheckDeps() bool {
if p.version == "dev" {
@@ -36,7 +27,7 @@ func (p *Project) CheckDeps() bool {
func (p *Project) InstallDeps() error {
slog.Info("installing dependencies")
- err := copyEmbeddedFiles("components", p.PathTemp())
+ err := components.CopyTo(".", p.PathTemp())
if err != nil {
return err
}
@@ -85,48 +76,3 @@ func getPackageJson(proj *Project, pkg string) (*PackageJson, error) {
}
return &parsed, nil
}
-
-func copyEmbeddedFiles(srcDir, destDir string) error {
- // Create the destination directory if it doesn't exist
- if err := os.MkdirAll(destDir, 0755); err != nil {
- return err
- }
-
- // List all files and directories in the embedded FS
- entries, err := sstFiles.ReadDir(srcDir)
- if err != nil {
- return err
- }
-
- // Loop through each entry (file or directory)
- for _, entry := range entries {
- srcPath := filepath.Join(srcDir, entry.Name())
- destPath := filepath.Join(destDir, entry.Name())
-
- if entry.IsDir() {
- // If it's a directory, recursively copy its contents
- if err := copyEmbeddedFiles(srcPath, destPath); err != nil {
- return err
- }
- } else {
- // If it's a file, copy it to the destination directory
- srcFile, err := sstFiles.Open(srcPath)
- if err != nil {
- return err
- }
- defer srcFile.Close()
-
- destFile, err := os.Create(destPath)
- if err != nil {
- return err
- }
- defer destFile.Close()
-
- if _, err := io.Copy(destFile, srcFile); err != nil {
- return err
- }
- }
- }
-
- return nil
-}
diff --git a/pkg/project/stack.go b/pkg/project/stack.go
index c22cd4a1e..eaf9461f8 100644
--- a/pkg/project/stack.go
+++ b/pkg/project/stack.go
@@ -24,62 +24,60 @@ func (s *stack) runtime() (string, error) {
if err != nil {
return "", err
}
+ inject := map[string]interface{}{
+ "region": s.project.Region(),
+ "stage": s.project.Stage(),
+ "name": s.project.Name(),
+ "paths": map[string]string{
+ "root": s.project.PathRoot(),
+ "temp": s.project.PathTemp(),
+ "home": global.ConfigDir(),
+ },
+ "aws": map[string]string{
+ "AWS_ACCESS_KEY_ID": credentials.AccessKeyID,
+ "AWS_SECRET_ACCESS_KEY": credentials.SecretAccessKey,
+ "AWS_SESSION_TOKEN": credentials.SessionToken,
+ },
+ "bootstrap": map[string]string{
+ "bucket": bootstrap,
+ },
+ }
+ injectBytes, err := json.Marshal(inject)
+ if err != nil {
+ return "", err
+ }
return fmt.Sprintf(`
+ globalThis.app = %v
+ import "./src/runtime"
+
import { LocalWorkspace } from "@pulumi/pulumi/automation/index.js";
import mod from '%s';
- import * as _aws from "@pulumi/aws";
- import * as _util from "@pulumi/pulumi";
- import * as _sst from "./src/index"
-
- globalThis.aws = _aws
- globalThis.util = _util
- globalThis.sst = _sst
- globalThis.app = {
- region: "%s",
- stage: "%s",
- name: "%s",
- bootstrap: {
- bucket: "%s"
- }
- }
-
- const stack = await LocalWorkspace.createOrSelectStack({
- program: mod.run,
- projectName: "%s",
- stackName: "%s",
- }, {
- pulumiHome: "%s",
- projectSettings: {
- main: "%s",
- name: "%v",
- runtime: "nodejs",
- backend: {
- url: "%v"
+ const stack = await LocalWorkspace.createOrSelectStack(
+ {
+ program: mod.run,
+ projectName: app.name,
+ stackName: app.stage,
+ },
+ {
+ pulumiHome: app.paths.home,
+ projectSettings: {
+ main: app.paths.root,
+ name: app.name,
+ runtime: "nodejs",
+ backend: {
+ url: "s3://" + app.bootstrap.bucket,
+ },
+ },
+ envVars: {
+ PULUMI_CONFIG_PASSPHRASE: "",
+ PULUMI_EXPERIMENTAL: "1",
+ PULUMI_SKIP_CHECKPOINTS: "true",
+ ...app.aws,
},
},
- envVars: {
- PULUMI_CONFIG_PASSPHRASE: "",
- PULUMI_EXPERIMENTAL: "1",
- PULUMI_SKIP_CHECKPOINTS: "true",
- AWS_ACCESS_KEY_ID: "%s",
- AWS_SECRET_ACCESS_KEY: "%s",
- AWS_SESSION_TOKEN: "%s",
- }
- })
- `,
- s.project.PathConfig(),
- s.project.Region(),
- s.project.Stage(),
- s.project.Name(),
- bootstrap,
- s.project.Name(),
- s.project.Stage(),
- global.ConfigDir(),
- s.project.PathRoot(),
- s.project.Name(),
- "s3://"+bootstrap,
- credentials.AccessKeyID, credentials.SecretAccessKey, credentials.SessionToken,
+ );
+ `, string(injectBytes), s.project.PathConfig(),
), nil
}
@@ -95,7 +93,7 @@ func (s *stack) run(cmd string) (StackEventStream, error) {
Code: fmt.Sprintf(`
%v
await stack.%v({
- // onOutput: (line) => console.log(new Date().toISOString(), line),
+ onOutput: (line) => console.log(new Date().toISOString(), line),
onEvent: (evt) => {
console.log("~e" + JSON.stringify(evt))
// console.log(JSON.stringify(evt, null, 4))
diff --git a/pkg/project/types.go b/pkg/project/types.go
deleted file mode 100644
index c2ee081db..000000000
--- a/pkg/project/types.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package project
-
-import (
- "log/slog"
- "os"
- "path/filepath"
-)
-
-const TYPES_DATA = `
-import "../src/index";
-import "@types/node";
-import "@pulumi/aws";
-import "@pulumi/pulumi";
-
-declare global {
- // @ts-expect-error
- export import aws = require("@pulumi/aws");
-
- // @ts-expect-error
- export import util = require("@pulumi/pulumi");
-
- // @ts-expect-error
- export import sst = require("../src/index");
-
-
- export const app: {
- region: string;
- bootstrap: {
- bucket: string;
- };
- };
-}
-`
-
-func (p *Project) GenerateTypes() error {
- path := filepath.Join(
- p.PathTemp(),
- "types",
- "global.d.ts",
- )
- slog.Info("generating types", "path", path)
- err := os.MkdirAll(filepath.Dir(path), 0755)
- if err != nil {
- return err
- }
- err = os.WriteFile(
- path,
- []byte(TYPES_DATA),
- 0644,
- )
- if err != nil {
- return err
- }
-
- return nil
-
-}