@intelligems/sst 2.49.3 → 2.49.6-ig.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/commands/dev.js +69 -3
- package/cli/sst.js +0 -1
- package/constructs/Function.d.ts +2 -1
- package/constructs/Function.js +4 -3
- package/credentials.js +4 -3
- package/iot.d.ts +31 -0
- package/iot.js +171 -10
- package/package.json +2 -2
- package/runtime/debug-bridge-logging.d.ts +24 -0
- package/runtime/debug-bridge-logging.js +98 -0
- package/runtime/debug-file-logger.d.ts +80 -0
- package/runtime/debug-file-logger.js +148 -0
- package/runtime/event-trace-logging.d.ts +27 -0
- package/runtime/event-trace-logging.js +69 -0
- package/runtime/handlers/node.js +62 -21
- package/runtime/handlers.d.ts +6 -2
- package/runtime/handlers.js +130 -59
- package/runtime/iot.js +31 -4
- package/runtime/mono-build-config.d.ts +58 -0
- package/runtime/mono-build-config.js +104 -0
- package/runtime/request-utils.d.ts +21 -0
- package/runtime/request-utils.js +102 -0
- package/runtime/runtime.d.ts +1 -0
- package/runtime/server.d.ts +4 -1
- package/runtime/server.js +122 -29
- package/runtime/worker-pool-logging.d.ts +29 -0
- package/runtime/worker-pool-logging.js +185 -0
- package/runtime/workers.d.ts +39 -7
- package/runtime/workers.js +831 -38
- package/stacks/deploy.js +14 -10
- package/stacks/synth.js +5 -4
- package/support/bridge/live-lambda.mjs +38 -38
- package/support/nodejs-runtime/index.mjs +44 -11
- package/support/python-runtime/runtime.py +116 -45
- package/util/user-configuration.js +19 -7
- package/README.md +0 -43
- package/package.json.bak +0 -156
|
@@ -6,11 +6,32 @@ import path from "path";
|
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import http from "http";
|
|
8
8
|
import url from "url";
|
|
9
|
+
import os from "os";
|
|
10
|
+
try {
|
|
11
|
+
const mod = await import("node:module");
|
|
12
|
+
if (typeof mod.enableCompileCache === "function") {
|
|
13
|
+
const cacheDir = path.join(os.tmpdir(), "sst-compile-cache");
|
|
14
|
+
mod.enableCompileCache(cacheDir);
|
|
15
|
+
}
|
|
16
|
+
} catch {
|
|
17
|
+
}
|
|
9
18
|
var input = workerData;
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
19
|
+
var monoBundlePath = path.join(input.out, "index.mjs");
|
|
20
|
+
var useMonoBundle = input.isMonoBuild ?? (input.handler === "index.handler" && fs.existsSync(monoBundlePath));
|
|
21
|
+
var file;
|
|
22
|
+
var handlerName;
|
|
23
|
+
if (useMonoBundle) {
|
|
24
|
+
file = monoBundlePath;
|
|
25
|
+
handlerName = "handler";
|
|
26
|
+
} else {
|
|
27
|
+
const parsed = path.parse(input.handler);
|
|
28
|
+
const foundFile = [".js", ".jsx", ".mjs", ".cjs"].map((ext) => path.join(input.out, parsed.dir, parsed.name + ext)).find((f) => fs.existsSync(f));
|
|
29
|
+
if (!foundFile) {
|
|
30
|
+
throw new Error(`Could not find handler file for "${input.handler}"`);
|
|
31
|
+
}
|
|
32
|
+
file = foundFile;
|
|
33
|
+
handlerName = parsed.ext.substring(1);
|
|
34
|
+
}
|
|
14
35
|
var fn;
|
|
15
36
|
function fetch(req) {
|
|
16
37
|
return new Promise((resolve, reject) => {
|
|
@@ -44,13 +65,15 @@ function fetch(req) {
|
|
|
44
65
|
try {
|
|
45
66
|
const { href } = url.pathToFileURL(file);
|
|
46
67
|
const mod = await import(href);
|
|
47
|
-
|
|
48
|
-
fn = mod[handler];
|
|
68
|
+
fn = mod[handlerName];
|
|
49
69
|
if (!fn) {
|
|
50
70
|
throw new Error(
|
|
51
|
-
`Function "${
|
|
71
|
+
useMonoBundle ? `Mono-bundle handler "${handlerName}" not found in "${file}". Found: ${Object.keys(mod).join(", ")}` : `Function "${handlerName}" not found in "${input.handler}". Found: ${Object.keys(mod).join(", ")}`
|
|
52
72
|
);
|
|
53
73
|
}
|
|
74
|
+
if (useMonoBundle && mod.warmUp) {
|
|
75
|
+
await mod.warmUp();
|
|
76
|
+
}
|
|
54
77
|
} catch (ex) {
|
|
55
78
|
await fetch({
|
|
56
79
|
path: `/runtime/init/error`,
|
|
@@ -97,6 +120,15 @@ while (true) {
|
|
|
97
120
|
method: "GET",
|
|
98
121
|
headers: {}
|
|
99
122
|
});
|
|
123
|
+
const sstFunctionId = result.headers["lambda-runtime-sst-function-id"];
|
|
124
|
+
if (sstFunctionId) {
|
|
125
|
+
process.env.SST_FUNCTION_ID = sstFunctionId;
|
|
126
|
+
}
|
|
127
|
+
const parsed = JSON.parse(result.body);
|
|
128
|
+
const invocationEnv = parsed.env;
|
|
129
|
+
if (invocationEnv && typeof invocationEnv === "object") {
|
|
130
|
+
Object.assign(process.env, invocationEnv);
|
|
131
|
+
}
|
|
100
132
|
context = {
|
|
101
133
|
awsRequestId: result.headers["lambda-runtime-aws-request-id"],
|
|
102
134
|
invokedFunctionArn: result.headers["lambda-runtime-invoked-function-arn"],
|
|
@@ -108,9 +140,10 @@ while (true) {
|
|
|
108
140
|
identity: JSON.parse(result.headers["lambda-runtime-cognito-identity"]) ?? void 0,
|
|
109
141
|
// If clientContext is null, we want to mimick AWS behavior and return undefined
|
|
110
142
|
clientContext: JSON.parse(result.headers["lambda-runtime-client-context"]) ?? void 0,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
143
|
+
// Per-invocation function context from headers (essential for mono-build shared workers)
|
|
144
|
+
functionName: result.headers["lambda-runtime-function-name"] || process.env.AWS_LAMBDA_FUNCTION_NAME,
|
|
145
|
+
functionVersion: result.headers["lambda-runtime-function-version"] || process.env.AWS_LAMBDA_FUNCTION_VERSION,
|
|
146
|
+
memoryLimitInMB: result.headers["lambda-runtime-function-memory-size"] || process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
|
|
114
147
|
logGroupName: result.headers["lambda-runtime-log-group-name"],
|
|
115
148
|
logStreamName: result.headers["lambda-runtime-log-stream-name"],
|
|
116
149
|
callbackWaitsForEmptyEventLoop: {
|
|
@@ -139,7 +172,7 @@ while (true) {
|
|
|
139
172
|
);
|
|
140
173
|
}
|
|
141
174
|
};
|
|
142
|
-
request =
|
|
175
|
+
request = parsed.event;
|
|
143
176
|
} catch {
|
|
144
177
|
continue;
|
|
145
178
|
}
|
|
@@ -4,8 +4,9 @@ import json
|
|
|
4
4
|
import logging
|
|
5
5
|
import argparse
|
|
6
6
|
import traceback
|
|
7
|
-
|
|
8
|
-
from
|
|
7
|
+
import signal
|
|
8
|
+
from urllib import request
|
|
9
|
+
from time import time
|
|
9
10
|
from importlib import import_module
|
|
10
11
|
|
|
11
12
|
class Identity(object):
|
|
@@ -22,15 +23,15 @@ class ClientContext(object):
|
|
|
22
23
|
|
|
23
24
|
class Context(object):
|
|
24
25
|
def __init__(self, invoked_function_arn, aws_request_id, deadline_ms, identity, client_context, log_group_name, log_stream_name):
|
|
25
|
-
self.function_name = os.environ
|
|
26
|
+
self.function_name = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'local')
|
|
26
27
|
self.invoked_function_arn = invoked_function_arn
|
|
27
28
|
self.aws_request_id = aws_request_id
|
|
28
|
-
self.memory_limit_in_mb = os.environ
|
|
29
|
+
self.memory_limit_in_mb = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '128')
|
|
29
30
|
self.deadline_ms = deadline_ms
|
|
30
31
|
# If identity is null, we want to mimick AWS behavior and return an object with None values
|
|
31
|
-
self.identity = Identity(**json.loads(identity)) if identity != 'null' else Identity(cognito_identity_id
|
|
32
|
+
self.identity = Identity(**json.loads(identity)) if identity and identity != 'null' else Identity(cognito_identity_id=None, cognito_identity_pool_id=None)
|
|
32
33
|
# If client_context is null, we want to mimick AWS behavior and return None
|
|
33
|
-
self.client_context = ClientContext(**json.loads(client_context)) if client_context != 'null' else None
|
|
34
|
+
self.client_context = ClientContext(**json.loads(client_context)) if client_context and client_context != 'null' else None
|
|
34
35
|
self.log_group_name = log_group_name
|
|
35
36
|
self.log_stream_name = log_stream_name
|
|
36
37
|
|
|
@@ -42,15 +43,17 @@ class Context(object):
|
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
def handleUnserializable(obj):
|
|
45
|
-
print(
|
|
46
|
-
"Unserializable {}: {} when returning result {!r}".format(
|
|
47
|
-
type(obj), repr(obj), result
|
|
48
|
-
)
|
|
49
|
-
)
|
|
50
|
-
|
|
51
46
|
raise TypeError("Unserializable {}: {!r}".format(type(obj), obj))
|
|
52
47
|
|
|
53
48
|
|
|
49
|
+
# Idle timeout handler
|
|
50
|
+
class IdleTimeoutError(Exception):
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
def idle_timeout_handler(signum, frame):
|
|
54
|
+
raise IdleTimeoutError("Worker idle timeout")
|
|
55
|
+
|
|
56
|
+
|
|
54
57
|
logging.basicConfig()
|
|
55
58
|
|
|
56
59
|
parser = argparse.ArgumentParser(
|
|
@@ -64,15 +67,69 @@ parser.add_argument('handler_module',
|
|
|
64
67
|
parser.add_argument('src_path', help='SrcPath of the handler function')
|
|
65
68
|
parser.add_argument('handler_name', help='Name of the handler function')
|
|
66
69
|
|
|
70
|
+
# Idle timeout in seconds (15 minutes, matching Node.js runtime)
|
|
71
|
+
IDLE_TIMEOUT = 15 * 60
|
|
72
|
+
|
|
67
73
|
if __name__ == '__main__':
|
|
68
74
|
args = parser.parse_args()
|
|
69
75
|
|
|
70
76
|
# this is needed because you need to import from where you've executed sst
|
|
71
77
|
sys.path.append('.')
|
|
72
78
|
|
|
73
|
-
#
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
# set the sys.path to the src_path. Otherwise importing a local file
|
|
80
|
+
# would fail with error ModuleNotFoundError
|
|
81
|
+
sys.path.append(args.src_path)
|
|
82
|
+
|
|
83
|
+
# Import handler module once at startup (warm start optimization)
|
|
84
|
+
handler = None
|
|
85
|
+
try:
|
|
86
|
+
# remove leading zeros for relative imports
|
|
87
|
+
if args.handler_module.startswith('.'):
|
|
88
|
+
module = import_module(args.handler_module[1:])
|
|
89
|
+
else:
|
|
90
|
+
module = import_module(args.handler_module)
|
|
91
|
+
|
|
92
|
+
handler = getattr(module, args.handler_name)
|
|
93
|
+
except Exception as e:
|
|
94
|
+
# Report init error and exit
|
|
95
|
+
traceback.print_exc()
|
|
96
|
+
try:
|
|
97
|
+
init_error_url = "http://{}/2018-06-01/runtime/init/error".format(
|
|
98
|
+
os.environ['AWS_LAMBDA_RUNTIME_API']
|
|
99
|
+
)
|
|
100
|
+
ex_type, ex_value, ex_traceback = sys.exc_info()
|
|
101
|
+
error_data = json.dumps({
|
|
102
|
+
"errorType": ex_type.__name__ if ex_type else "ImportError",
|
|
103
|
+
"errorMessage": str(ex_value),
|
|
104
|
+
"trace": traceback.format_tb(ex_traceback) if ex_traceback else [],
|
|
105
|
+
}).encode("utf-8")
|
|
106
|
+
req = request.Request(init_error_url, method="POST", data=error_data)
|
|
107
|
+
req.add_header('Content-Type', 'application/json')
|
|
108
|
+
request.urlopen(req)
|
|
109
|
+
except Exception:
|
|
110
|
+
pass
|
|
111
|
+
sys.exit(1)
|
|
112
|
+
|
|
113
|
+
# Main event loop - handle multiple invocations
|
|
114
|
+
while True:
|
|
115
|
+
context = None
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
# Set up idle timeout using SIGALRM (Unix only)
|
|
119
|
+
if hasattr(signal, 'SIGALRM'):
|
|
120
|
+
signal.signal(signal.SIGALRM, idle_timeout_handler)
|
|
121
|
+
signal.alarm(IDLE_TIMEOUT)
|
|
122
|
+
|
|
123
|
+
# Fetch next invocation (blocks until one is available)
|
|
124
|
+
next_url = "http://{}/2018-06-01/runtime/invocation/next".format(
|
|
125
|
+
os.environ['AWS_LAMBDA_RUNTIME_API']
|
|
126
|
+
)
|
|
127
|
+
r = request.urlopen(next_url)
|
|
128
|
+
|
|
129
|
+
# Cancel idle timeout once we have work
|
|
130
|
+
if hasattr(signal, 'SIGALRM'):
|
|
131
|
+
signal.alarm(0)
|
|
132
|
+
|
|
76
133
|
event = json.loads(r.read())
|
|
77
134
|
context = Context(
|
|
78
135
|
r.getheader('Lambda-Runtime-Invoked-Function-Arn'),
|
|
@@ -84,44 +141,58 @@ if __name__ == '__main__':
|
|
|
84
141
|
r.getheader('Lambda-Runtime-Log-Stream-Name')
|
|
85
142
|
)
|
|
86
143
|
|
|
87
|
-
|
|
88
|
-
has_error = False
|
|
144
|
+
# Invoke handler
|
|
89
145
|
try:
|
|
90
|
-
# set the sys.path to the src_path. Other wise importing a local file
|
|
91
|
-
# would fail with error ModuleNotFoundError
|
|
92
|
-
sys.path.append(args.src_path)
|
|
93
|
-
|
|
94
|
-
# remove leading zeros for relative imports
|
|
95
|
-
if args.handler_module.startswith('.'):
|
|
96
|
-
module = import_module(args.handler_module[1:])
|
|
97
|
-
else:
|
|
98
|
-
module = import_module(args.handler_module)
|
|
99
|
-
|
|
100
|
-
handler = getattr(module, args.handler_name)
|
|
101
146
|
result = handler(event, context)
|
|
102
147
|
data = json.dumps(result, default=handleUnserializable).encode("utf-8")
|
|
103
|
-
|
|
148
|
+
url_destination = '/response'
|
|
104
149
|
except Exception as e:
|
|
105
|
-
|
|
106
|
-
# print error in bootstrap because we won't be able to print the Python
|
|
107
|
-
# stack trace in the correct format in NodeJS
|
|
150
|
+
# Handler error - report but keep worker alive
|
|
108
151
|
traceback.print_exc()
|
|
109
|
-
# build error response
|
|
110
152
|
ex_type, ex_value, ex_traceback = sys.exc_info()
|
|
111
|
-
|
|
112
|
-
|
|
153
|
+
error_result = {
|
|
154
|
+
"errorType": ex_type.__name__ if ex_type else "Error",
|
|
113
155
|
"errorMessage": str(ex_value),
|
|
114
|
-
|
|
156
|
+
"trace": traceback.format_tb(ex_traceback) if ex_traceback else [],
|
|
115
157
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
# send response
|
|
119
|
-
if has_error == False:
|
|
120
|
-
url_destination = '/response'
|
|
121
|
-
else:
|
|
158
|
+
data = json.dumps(error_result).encode("utf-8")
|
|
122
159
|
url_destination = '/error'
|
|
123
|
-
|
|
124
|
-
|
|
160
|
+
|
|
161
|
+
# Send response
|
|
162
|
+
response_url = "http://{}/2018-06-01/runtime/invocation/{}{}".format(
|
|
163
|
+
os.environ['AWS_LAMBDA_RUNTIME_API'],
|
|
164
|
+
context.aws_request_id,
|
|
165
|
+
url_destination
|
|
166
|
+
)
|
|
167
|
+
req = request.Request(response_url, method="POST", data=data)
|
|
125
168
|
req.add_header('Content-Type', 'application/json')
|
|
126
|
-
r = request.urlopen(req, data=data)
|
|
127
169
|
|
|
170
|
+
# Retry sending response (matching Node.js behavior)
|
|
171
|
+
max_retries = 3
|
|
172
|
+
for attempt in range(max_retries):
|
|
173
|
+
try:
|
|
174
|
+
request.urlopen(req)
|
|
175
|
+
break
|
|
176
|
+
except Exception as e:
|
|
177
|
+
if attempt < max_retries - 1:
|
|
178
|
+
import time as time_module
|
|
179
|
+
time_module.sleep(0.5)
|
|
180
|
+
else:
|
|
181
|
+
print(f"Failed to send response after {max_retries} attempts: {e}", file=sys.stderr)
|
|
182
|
+
|
|
183
|
+
except IdleTimeoutError:
|
|
184
|
+
# Idle timeout - exit gracefully
|
|
185
|
+
print("Worker idle timeout, exiting", file=sys.stderr)
|
|
186
|
+
sys.exit(0)
|
|
187
|
+
|
|
188
|
+
except KeyboardInterrupt:
|
|
189
|
+
# Graceful shutdown
|
|
190
|
+
print("Worker interrupted, exiting", file=sys.stderr)
|
|
191
|
+
sys.exit(0)
|
|
192
|
+
|
|
193
|
+
except Exception as e:
|
|
194
|
+
# Unexpected error in the runtime loop itself
|
|
195
|
+
print(f"Runtime error: {e}", file=sys.stderr)
|
|
196
|
+
traceback.print_exc()
|
|
197
|
+
# Continue to next iteration - don't crash the worker
|
|
198
|
+
continue
|
|
@@ -1,16 +1,28 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import * as os from "os";
|
|
3
2
|
import * as fs_path from "path";
|
|
4
3
|
import * as fs from "fs";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
5
5
|
export const PROJECT_CONFIG = "cdk.json";
|
|
6
6
|
export const USER_DEFAULTS = "~/.cdk.json";
|
|
7
7
|
const CONTEXT_KEY = "context";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
let cdkToolkitPath = "";
|
|
9
|
+
let cdkToolkitUrl = "";
|
|
10
|
+
try {
|
|
11
|
+
cdkToolkitUrl = await import.meta.resolve("@aws-cdk/toolkit-lib");
|
|
12
|
+
cdkToolkitPath = fileURLToPath(cdkToolkitUrl);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
// Fallback for test environment where import.meta.resolve is not available
|
|
16
|
+
const module = await import("module");
|
|
17
|
+
const require = module.createRequire(import.meta.url);
|
|
18
|
+
cdkToolkitPath = require.resolve("@aws-cdk/toolkit-lib");
|
|
19
|
+
cdkToolkitUrl = pathToFileURL(cdkToolkitPath).href;
|
|
20
|
+
}
|
|
21
|
+
const { ToolkitError } = await import(cdkToolkitUrl);
|
|
22
|
+
const { Context, PROJECT_CONTEXT } = await import(pathToFileURL(fs_path.resolve(cdkToolkitPath, "..", "api", "context.js")).href);
|
|
23
|
+
const { Settings } = await import(pathToFileURL(fs_path.resolve(cdkToolkitPath, "..", "api", "settings.js"))
|
|
24
|
+
.href);
|
|
25
|
+
const { Tags } = await import(pathToFileURL(fs_path.resolve(cdkToolkitPath, "..", "api", "tags", "index.js")).href);
|
|
14
26
|
export var Command;
|
|
15
27
|
(function (Command) {
|
|
16
28
|
Command["LS"] = "ls";
|
package/README.md
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# sst
|
|
2
|
-
|
|
3
|
-
[SST](https://sst.dev) makes it easy to build modern full-stack applications on AWS.
|
|
4
|
-
|
|
5
|
-
The `sst` package is made up of the following.
|
|
6
|
-
|
|
7
|
-
- [`sst`](https://docs.sst.dev/packages/sst) CLI
|
|
8
|
-
- [`sst/node`](https://docs.sst.dev/clients) Node.js client
|
|
9
|
-
- [`sst/constructs`](https://docs.sst.dev/constructs) CDK constructs
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
Install the `sst` package in your project root.
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install sst --save-exact
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
Once installed, you can run the CLI commands using.
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npx sst <command>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Import the Node.js client in your functions. For example, you can import the `Bucket` client.
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { Bucket } from "sst/node/bucket";
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
And import the constructs you need in your stacks code. For example, you can add an API.
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
import { Api } from "sst/constructs";
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
For more details, [head over to our docs](https://docs.sst.dev).
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
**Join our community** [Discord](https://sst.dev/discord) | [YouTube](https://www.youtube.com/c/sst-dev) | [Twitter](https://twitter.com/SST_dev)
|
package/package.json.bak
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"publishConfig": {
|
|
3
|
-
"directory": "dist",
|
|
4
|
-
"access": "public"
|
|
5
|
-
},
|
|
6
|
-
"sideEffects": false,
|
|
7
|
-
"name": "@intelligems/sst",
|
|
8
|
-
"version": "2.49.3",
|
|
9
|
-
"bin": {
|
|
10
|
-
"sst": "cli/sst.js"
|
|
11
|
-
},
|
|
12
|
-
"description": "A CLI to help deploy SST apps.",
|
|
13
|
-
"type": "module",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"scripts": {
|
|
16
|
-
"prepare": "",
|
|
17
|
-
"build": "node build.mjs && tsc",
|
|
18
|
-
"test": "vitest run",
|
|
19
|
-
"dev": "source .env && tsc-watch --onSuccess \"rsync -av dist/* ${TO} --checksum\""
|
|
20
|
-
},
|
|
21
|
-
"repository": {
|
|
22
|
-
"type": "git",
|
|
23
|
-
"url": "git+https://github.com/sst/v2.git",
|
|
24
|
-
"directory": "packages/cli"
|
|
25
|
-
},
|
|
26
|
-
"exports": {
|
|
27
|
-
"./constructs/deprecated": "./constructs/deprecated/index.js",
|
|
28
|
-
"./constructs/future": "./constructs/future/index.js",
|
|
29
|
-
"./constructs": "./constructs/index.js",
|
|
30
|
-
"./context": "./context/index.js",
|
|
31
|
-
"./node/future/*": "./node/future/*/index.js",
|
|
32
|
-
"./node/*": "./node/*/index.js",
|
|
33
|
-
".": "./index.js",
|
|
34
|
-
"./*": "./*"
|
|
35
|
-
},
|
|
36
|
-
"homepage": "https://sst.dev",
|
|
37
|
-
"dependencies": {
|
|
38
|
-
"@aws-cdk/aws-lambda-python-alpha": "2.201.0-alpha.0",
|
|
39
|
-
"@aws-cdk/cloud-assembly-schema": "44.5.0",
|
|
40
|
-
"@aws-cdk/cloudformation-diff": "2.182.0",
|
|
41
|
-
"@aws-cdk/cx-api": "2.201.0",
|
|
42
|
-
"@aws-cdk/toolkit-lib": "1.1.1",
|
|
43
|
-
"@aws-crypto/sha256-js": "^5.2.0",
|
|
44
|
-
"@aws-sdk/client-cloudformation": "3.699.0",
|
|
45
|
-
"@aws-sdk/client-ecs": "3.699.0",
|
|
46
|
-
"@aws-sdk/client-eventbridge": "3.699.0",
|
|
47
|
-
"@aws-sdk/client-iam": "3.699.0",
|
|
48
|
-
"@aws-sdk/client-iot": "3.699.0",
|
|
49
|
-
"@aws-sdk/client-iot-data-plane": "3.699.0",
|
|
50
|
-
"@aws-sdk/client-lambda": "3.699.0",
|
|
51
|
-
"@aws-sdk/client-rds-data": "3.699.0",
|
|
52
|
-
"@aws-sdk/client-s3": "3.699.0",
|
|
53
|
-
"@aws-sdk/client-ssm": "3.699.0",
|
|
54
|
-
"@aws-sdk/client-sts": "3.699.0",
|
|
55
|
-
"@aws-sdk/config-resolver": "3.374.0",
|
|
56
|
-
"@aws-sdk/credential-providers": "3.699.0",
|
|
57
|
-
"@aws-sdk/middleware-retry": "3.374.0",
|
|
58
|
-
"@aws-sdk/middleware-signing": "3.451.0",
|
|
59
|
-
"@aws-sdk/signature-v4-crt": "3.451.0",
|
|
60
|
-
"@aws-sdk/smithy-client": "3.374.0",
|
|
61
|
-
"@babel/core": "^7.0.0-0",
|
|
62
|
-
"@babel/generator": "^7.20.5",
|
|
63
|
-
"@babel/plugin-syntax-typescript": "^7.21.4",
|
|
64
|
-
"@smithy/signature-v4": "2.0.16",
|
|
65
|
-
"@trpc/server": "9.18.0",
|
|
66
|
-
"adm-zip": "0.5.14",
|
|
67
|
-
"aws-cdk-lib": "2.201.0",
|
|
68
|
-
"aws-iot-device-sdk": "^2.2.13",
|
|
69
|
-
"aws-sdk": "^2.1501.0",
|
|
70
|
-
"builtin-modules": "3.2.0",
|
|
71
|
-
"cdk-assets": "3.3.1",
|
|
72
|
-
"chalk": "^5.2.0",
|
|
73
|
-
"chokidar": "^3.5.3",
|
|
74
|
-
"ci-info": "^3.7.0",
|
|
75
|
-
"colorette": "^2.0.19",
|
|
76
|
-
"conf": "^10.2.0",
|
|
77
|
-
"constructs": "10.3.0",
|
|
78
|
-
"cross-spawn": "^7.0.3",
|
|
79
|
-
"dendriform-immer-patch-optimiser": "^2.1.0",
|
|
80
|
-
"dotenv": "^16.0.3",
|
|
81
|
-
"esbuild": "0.18.13",
|
|
82
|
-
"express": "^4.18.2",
|
|
83
|
-
"fast-jwt": "^5.0.5",
|
|
84
|
-
"get-port": "^6.1.2",
|
|
85
|
-
"glob": "^10.0.0",
|
|
86
|
-
"graphql": "*",
|
|
87
|
-
"graphql-yoga": "^3.9.0",
|
|
88
|
-
"immer": "9",
|
|
89
|
-
"ink": "^4.0.0",
|
|
90
|
-
"ink-spinner": "^5.0.0",
|
|
91
|
-
"kysely": "^0.25.0",
|
|
92
|
-
"kysely-codegen": "^0.10.1",
|
|
93
|
-
"kysely-data-api": "^0.2.1",
|
|
94
|
-
"minimatch": "^6.1.6",
|
|
95
|
-
"openid-client": "^5.1.8",
|
|
96
|
-
"ora": "^6.1.2",
|
|
97
|
-
"react": "^18.0.0",
|
|
98
|
-
"remeda": "^1.3.0",
|
|
99
|
-
"tree-kill": "^1.2.2",
|
|
100
|
-
"undici": "^5.12.0",
|
|
101
|
-
"uuid": "^9.0.0",
|
|
102
|
-
"ws": "^8.11.0",
|
|
103
|
-
"yargs": "^17.6.2",
|
|
104
|
-
"zod": "^3.21.4"
|
|
105
|
-
},
|
|
106
|
-
"devDependencies": {
|
|
107
|
-
"dotenv-cli": "^8.0.0",
|
|
108
|
-
"@aws-sdk/client-api-gateway": "3.699.0",
|
|
109
|
-
"@aws-sdk/client-cloudfront": "3.699.0",
|
|
110
|
-
"@aws-sdk/client-codebuild": "3.699.0",
|
|
111
|
-
"@aws-sdk/client-sqs": "3.699.0",
|
|
112
|
-
"@aws-sdk/types": "3.451.0",
|
|
113
|
-
"@graphql-tools/merge": "^8.3.16",
|
|
114
|
-
"@sls-next/lambda-at-edge": "^3.7.0",
|
|
115
|
-
"@smithy/types": "4.1.0",
|
|
116
|
-
"@tsconfig/node16": "^1.0.3",
|
|
117
|
-
"@tsconfig/node18": "^18.2.2",
|
|
118
|
-
"@types/adm-zip": "^0.5.0",
|
|
119
|
-
"@types/async": "^3.2.24",
|
|
120
|
-
"@types/aws-iot-device-sdk": "^2.2.8",
|
|
121
|
-
"@types/aws-lambda": "^8.10.128",
|
|
122
|
-
"@types/babel__core": "^7.1.20",
|
|
123
|
-
"@types/babel__generator": "^7.6.4",
|
|
124
|
-
"@types/cross-spawn": "^6.0.2",
|
|
125
|
-
"@types/express": "^4.17.14",
|
|
126
|
-
"@types/node": "18.11.9",
|
|
127
|
-
"@types/react": "^18.0.28",
|
|
128
|
-
"@types/uuid": "^8.3.4",
|
|
129
|
-
"@types/ws": "8.5.3",
|
|
130
|
-
"@types/yargs": "^17.0.13",
|
|
131
|
-
"archiver": "^5.3.1",
|
|
132
|
-
"astro-sst": "2.45.1",
|
|
133
|
-
"async": "^3.2.4",
|
|
134
|
-
"tsx": "^3.12.1",
|
|
135
|
-
"typescript": "5.2.2",
|
|
136
|
-
"vitest": "^0.33.0",
|
|
137
|
-
"tsc-watch": "^6.2.1"
|
|
138
|
-
},
|
|
139
|
-
"peerDependencies": {
|
|
140
|
-
"@sls-next/lambda-at-edge": "^3.7.0"
|
|
141
|
-
},
|
|
142
|
-
"peerDependenciesMeta": {
|
|
143
|
-
"@sls-next/lambda-at-edge": {
|
|
144
|
-
"optional": true
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
"bugs": {
|
|
148
|
-
"url": "https://github.com/sst/v2/issues"
|
|
149
|
-
},
|
|
150
|
-
"main": "index.js",
|
|
151
|
-
"directories": {
|
|
152
|
-
"test": "test"
|
|
153
|
-
},
|
|
154
|
-
"keywords": [],
|
|
155
|
-
"author": ""
|
|
156
|
-
}
|