@intelligems/sst 2.49.6-ig.9 → 2.49.8-ig.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/cli/commands/dev.js +10 -6
  2. package/constructs/AstroSite.d.ts +1 -1
  3. package/constructs/EdgeFunction.d.ts +1 -1
  4. package/constructs/EdgeFunction.js +8 -6
  5. package/constructs/Function.d.ts +3 -2
  6. package/constructs/Function.js +2 -1
  7. package/constructs/Job.d.ts +2 -2
  8. package/constructs/Job.js +4 -2
  9. package/constructs/NextjsSite.d.ts +1 -1
  10. package/constructs/NextjsSite.js +2 -2
  11. package/constructs/RemixSite.d.ts +1 -1
  12. package/constructs/SolidStartSite.d.ts +1 -1
  13. package/constructs/SsrFunction.d.ts +2 -2
  14. package/constructs/SsrFunction.js +7 -5
  15. package/constructs/SsrSite.d.ts +2 -2
  16. package/constructs/SsrSite.js +1 -1
  17. package/constructs/Stack.d.ts +1 -1
  18. package/constructs/Stack.js +1 -1
  19. package/constructs/SvelteKitSite.d.ts +1 -1
  20. package/constructs/deprecated/NextjsSite.d.ts +3 -3
  21. package/constructs/deprecated/NextjsSite.js +4 -1
  22. package/constructs/deprecated/cross-region-helper.js +3 -3
  23. package/package.json +3 -3
  24. package/runtime/handlers/node.js +24 -2
  25. package/runtime/handlers.d.ts +4 -0
  26. package/runtime/memory-logging.d.ts +26 -0
  27. package/runtime/memory-logging.js +112 -0
  28. package/runtime/mono-build-config.d.ts +6 -3
  29. package/runtime/mono-build-config.js +34 -10
  30. package/runtime/server.js +35 -44
  31. package/runtime/stdout-attribution.d.ts +18 -0
  32. package/runtime/stdout-attribution.js +43 -0
  33. package/runtime/worker-config.d.ts +19 -0
  34. package/runtime/worker-config.js +26 -0
  35. package/runtime/worker-pool-logging.d.ts +2 -2
  36. package/runtime/worker-pool-logging.js +5 -5
  37. package/runtime/worker-pool.d.ts +77 -0
  38. package/runtime/worker-pool.js +162 -0
  39. package/runtime/workers.d.ts +33 -11
  40. package/runtime/workers.js +405 -513
  41. package/support/nodejs-runtime/index.mjs +214 -100
  42. package/watcher.js +2 -0
  43. package/README.md +0 -43
  44. package/package.json.bak +0 -156
@@ -1,12 +1,21 @@
1
1
  import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url);
2
2
 
3
3
  // support/nodejs-runtime/index.ts
4
- import { workerData } from "node:worker_threads";
4
+ import { workerData, parentPort } from "node:worker_threads";
5
+ import { AsyncLocalStorage } from "node:async_hooks";
5
6
  import path from "path";
6
7
  import fs from "fs";
7
8
  import http from "http";
8
9
  import url from "url";
9
10
  import os from "os";
11
+
12
+ // src/runtime/stdout-attribution.ts
13
+ var MARK = "";
14
+ function tagLine(requestID, line) {
15
+ return `${MARK}${requestID}${MARK}${line}`;
16
+ }
17
+
18
+ // support/nodejs-runtime/index.ts
10
19
  try {
11
20
  const mod = await import("node:module");
12
21
  if (typeof mod.enableCompileCache === "function") {
@@ -16,6 +25,97 @@ try {
16
25
  } catch {
17
26
  }
18
27
  var input = workerData;
28
+ var concurrency = Math.max(1, input.concurrency ?? 1);
29
+ var invocation = new AsyncLocalStorage();
30
+ var baseEnv = { ...process.env };
31
+ function currentEnv() {
32
+ return invocation.getStore()?.env ?? baseEnv;
33
+ }
34
+ process.env = new Proxy(baseEnv, {
35
+ get(_, key) {
36
+ if (typeof key !== "string")
37
+ return void 0;
38
+ const store = invocation.getStore();
39
+ if (store && key in store.env)
40
+ return store.env[key];
41
+ return baseEnv[key];
42
+ },
43
+ set(_, key, value) {
44
+ if (typeof key !== "string")
45
+ return false;
46
+ currentEnv()[key] = value === void 0 ? void 0 : String(value);
47
+ return true;
48
+ },
49
+ has(_, key) {
50
+ if (typeof key !== "string")
51
+ return false;
52
+ const store = invocation.getStore();
53
+ return store !== void 0 && key in store.env || key in baseEnv;
54
+ },
55
+ deleteProperty(_, key) {
56
+ if (typeof key !== "string")
57
+ return false;
58
+ delete currentEnv()[key];
59
+ return true;
60
+ },
61
+ ownKeys() {
62
+ const store = invocation.getStore();
63
+ return [.../* @__PURE__ */ new Set([...Object.keys(baseEnv), ...store ? Object.keys(store.env) : []])];
64
+ },
65
+ getOwnPropertyDescriptor(_, key) {
66
+ if (typeof key !== "string")
67
+ return void 0;
68
+ const store = invocation.getStore();
69
+ const value = store && key in store.env ? store.env[key] : baseEnv[key];
70
+ if (value === void 0 && !(store && key in store.env) && !(key in baseEnv))
71
+ return void 0;
72
+ return { value, writable: true, enumerable: true, configurable: true };
73
+ }
74
+ });
75
+ for (const method of ["log", "info", "warn", "error", "debug", "trace"]) {
76
+ const original = console[method].bind(console);
77
+ console[method] = (...args) => {
78
+ const store = invocation.getStore();
79
+ if (!store)
80
+ return original(...args);
81
+ const text = args.map((a) => typeof a === "string" ? a : safeFormat(a)).join(" ");
82
+ const tagged = text.split("\n").map((line) => tagLine(store.requestID, line)).join("\n");
83
+ return original(tagged);
84
+ };
85
+ }
86
+ function safeFormat(value) {
87
+ if (value instanceof Error)
88
+ return value.stack ?? value.message;
89
+ if (typeof value === "object" && value !== null) {
90
+ try {
91
+ return JSON.stringify(value);
92
+ } catch {
93
+ return String(value);
94
+ }
95
+ }
96
+ return String(value);
97
+ }
98
+ var lastMemoryReport = 0;
99
+ function reportMemory(phase, loadMs) {
100
+ if (!input.debugMemory || !parentPort)
101
+ return;
102
+ const now = Date.now();
103
+ if (phase === "response" && now - lastMemoryReport < 5e3)
104
+ return;
105
+ lastMemoryReport = now;
106
+ const usage = process.memoryUsage();
107
+ parentPort.postMessage({
108
+ type: "sst.memory",
109
+ report: {
110
+ rss: usage.rss,
111
+ heapUsed: usage.heapUsed,
112
+ heapTotal: usage.heapTotal,
113
+ external: usage.external,
114
+ phase,
115
+ loadMs
116
+ }
117
+ });
118
+ }
19
119
  var monoBundlePath = path.join(input.out, "index.mjs");
20
120
  var useMonoBundle = input.isMonoBuild ?? (input.handler === "index.handler" && fs.existsSync(monoBundlePath));
21
121
  var file;
@@ -35,7 +135,7 @@ if (useMonoBundle) {
35
135
  var fn;
36
136
  function fetch(req) {
37
137
  return new Promise((resolve, reject) => {
38
- const request2 = http.request(
138
+ const request = http.request(
39
139
  input.url + req.path,
40
140
  {
41
141
  headers: req.headers,
@@ -56,12 +156,13 @@ function fetch(req) {
56
156
  });
57
157
  }
58
158
  );
59
- request2.on("error", reject);
159
+ request.on("error", reject);
60
160
  if (req.body)
61
- request2.write(req.body);
62
- request2.end();
161
+ request.write(req.body);
162
+ request.end();
63
163
  });
64
164
  }
165
+ var loadStart = Date.now();
65
166
  try {
66
167
  const { href } = url.pathToFileURL(file);
67
168
  const mod = await import(href);
@@ -71,9 +172,6 @@ try {
71
172
  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(", ")}`
72
173
  );
73
174
  }
74
- if (useMonoBundle && mod.warmUp) {
75
- await mod.warmUp();
76
- }
77
175
  } catch (ex) {
78
176
  await fetch({
79
177
  path: `/runtime/init/error`,
@@ -89,11 +187,19 @@ try {
89
187
  });
90
188
  process.exit(1);
91
189
  }
92
- var timeout;
93
- var request;
94
- var response;
95
- var context;
96
- async function error(ex) {
190
+ reportMemory("loaded", Date.now() - loadStart);
191
+ var idleTimer;
192
+ function armIdleExit() {
193
+ if (idleTimer)
194
+ clearTimeout(idleTimer);
195
+ idleTimer = setTimeout(() => {
196
+ process.exit(0);
197
+ }, 1e3 * 60 * 15);
198
+ }
199
+ var lastContext;
200
+ async function postError(context, ex) {
201
+ if (!context)
202
+ return;
97
203
  await fetch({
98
204
  path: `/runtime/invocation/${context.awsRequestId}/error`,
99
205
  method: "POST",
@@ -101,102 +207,110 @@ async function error(ex) {
101
207
  "Content-Type": "application/json"
102
208
  },
103
209
  body: JSON.stringify({
104
- errorType: ex.name ?? "Error",
105
- errorMessage: ex.message,
106
- trace: ex.stack?.split("\n")
210
+ errorType: ex?.name ?? "Error",
211
+ errorMessage: ex?.message ?? String(ex),
212
+ trace: ex?.stack?.split("\n")
107
213
  })
108
214
  });
109
215
  }
110
- process.on("unhandledRejection", error);
111
- while (true) {
112
- if (timeout)
113
- clearTimeout(timeout);
114
- timeout = setTimeout(() => {
115
- process.exit(0);
116
- }, 1e3 * 60 * 15);
117
- try {
118
- const result = await fetch({
119
- path: `/runtime/invocation/next`,
120
- method: "GET",
121
- headers: {}
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
- }
132
- context = {
133
- awsRequestId: result.headers["lambda-runtime-aws-request-id"],
134
- invokedFunctionArn: result.headers["lambda-runtime-invoked-function-arn"],
135
- getRemainingTimeInMillis: () => Math.max(
136
- Number(result.headers["lambda-runtime-deadline-ms"]) - Date.now(),
137
- 0
138
- ),
139
- // If identity is null, we want to mimick AWS behavior and return undefined
140
- identity: JSON.parse(result.headers["lambda-runtime-cognito-identity"]) ?? void 0,
141
- // If clientContext is null, we want to mimick AWS behavior and return undefined
142
- clientContext: JSON.parse(result.headers["lambda-runtime-client-context"]) ?? void 0,
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,
147
- logGroupName: result.headers["lambda-runtime-log-group-name"],
148
- logStreamName: result.headers["lambda-runtime-log-stream-name"],
149
- callbackWaitsForEmptyEventLoop: {
150
- set value(_value) {
216
+ process.on("unhandledRejection", (ex) => {
217
+ void postError(lastContext, ex);
218
+ });
219
+ async function runLoop() {
220
+ while (true) {
221
+ armIdleExit();
222
+ let context;
223
+ let event;
224
+ let env = {};
225
+ try {
226
+ const result = await fetch({
227
+ path: `/runtime/invocation/next`,
228
+ method: "GET",
229
+ headers: {}
230
+ });
231
+ const parsed = JSON.parse(result.body);
232
+ if (parsed.env && typeof parsed.env === "object") {
233
+ env = { ...parsed.env };
234
+ }
235
+ const sstFunctionId = result.headers["lambda-runtime-sst-function-id"];
236
+ if (sstFunctionId) {
237
+ env.SST_FUNCTION_ID = sstFunctionId;
238
+ }
239
+ context = {
240
+ awsRequestId: result.headers["lambda-runtime-aws-request-id"],
241
+ invokedFunctionArn: result.headers["lambda-runtime-invoked-function-arn"],
242
+ getRemainingTimeInMillis: () => Math.max(
243
+ Number(result.headers["lambda-runtime-deadline-ms"]) - Date.now(),
244
+ 0
245
+ ),
246
+ // If identity is null, we want to mimick AWS behavior and return undefined
247
+ identity: JSON.parse(result.headers["lambda-runtime-cognito-identity"]) ?? void 0,
248
+ // If clientContext is null, we want to mimick AWS behavior and return undefined
249
+ clientContext: JSON.parse(result.headers["lambda-runtime-client-context"]) ?? void 0,
250
+ // Per-invocation function context from headers (essential for mono-build shared workers)
251
+ functionName: result.headers["lambda-runtime-function-name"] || env.AWS_LAMBDA_FUNCTION_NAME,
252
+ functionVersion: result.headers["lambda-runtime-function-version"] || env.AWS_LAMBDA_FUNCTION_VERSION,
253
+ memoryLimitInMB: result.headers["lambda-runtime-function-memory-size"] || env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
254
+ logGroupName: result.headers["lambda-runtime-log-group-name"],
255
+ logStreamName: result.headers["lambda-runtime-log-stream-name"],
256
+ callbackWaitsForEmptyEventLoop: {
257
+ set value(_value) {
258
+ throw new Error(
259
+ "`callbackWaitsForEmptyEventLoop` on lambda Context is not implemented by SST Live Lambda Development."
260
+ );
261
+ },
262
+ get value() {
263
+ return true;
264
+ }
265
+ }.value,
266
+ done() {
151
267
  throw new Error(
152
- "`callbackWaitsForEmptyEventLoop` on lambda Context is not implemented by SST Live Lambda Development."
268
+ "`done` on lambda Context is not implemented by SST Live Lambda Development."
153
269
  );
154
270
  },
155
- get value() {
156
- return true;
271
+ fail() {
272
+ throw new Error(
273
+ "`fail` on lambda Context is not implemented by SST Live Lambda Development."
274
+ );
275
+ },
276
+ succeed() {
277
+ throw new Error(
278
+ "`succeed` on lambda Context is not implemented by SST Live Lambda Development."
279
+ );
157
280
  }
158
- }.value,
159
- done() {
160
- throw new Error(
161
- "`done` on lambda Context is not implemented by SST Live Lambda Development."
162
- );
163
- },
164
- fail() {
165
- throw new Error(
166
- "`fail` on lambda Context is not implemented by SST Live Lambda Development."
167
- );
168
- },
169
- succeed() {
170
- throw new Error(
171
- "`succeed` on lambda Context is not implemented by SST Live Lambda Development."
172
- );
173
- }
174
- };
175
- request = parsed.event;
176
- } catch {
177
- continue;
178
- }
179
- global[Symbol.for("aws.lambda.runtime.requestId")] = context.awsRequestId;
180
- try {
181
- response = await fn(request, context);
182
- } catch (ex) {
183
- error(ex);
184
- continue;
185
- }
186
- while (true) {
281
+ };
282
+ event = parsed.event;
283
+ } catch {
284
+ continue;
285
+ }
286
+ Object.assign(baseEnv, env);
287
+ lastContext = context;
288
+ global[Symbol.for("aws.lambda.runtime.requestId")] = context.awsRequestId;
289
+ const store = { requestID: context.awsRequestId, env };
290
+ let response;
187
291
  try {
188
- await fetch({
189
- path: `/runtime/invocation/${context.awsRequestId}/response`,
190
- method: "POST",
191
- headers: {
192
- "Content-Type": "application/json"
193
- },
194
- body: JSON.stringify(response)
195
- });
196
- break;
292
+ response = await invocation.run(store, () => fn(event, context));
197
293
  } catch (ex) {
198
- console.error(ex);
199
- await new Promise((resolve) => setTimeout(resolve, 500));
294
+ await postError(context, ex);
295
+ continue;
296
+ }
297
+ while (true) {
298
+ try {
299
+ await fetch({
300
+ path: `/runtime/invocation/${context.awsRequestId}/response`,
301
+ method: "POST",
302
+ headers: {
303
+ "Content-Type": "application/json"
304
+ },
305
+ body: JSON.stringify(response)
306
+ });
307
+ break;
308
+ } catch (ex) {
309
+ console.error(ex);
310
+ await new Promise((resolve) => setTimeout(resolve, 500));
311
+ }
200
312
  }
313
+ reportMemory("response");
201
314
  }
202
315
  }
316
+ await Promise.all(Array.from({ length: concurrency }, () => runLoop()));
package/watcher.js CHANGED
@@ -15,6 +15,8 @@ export const useWatcher = lazy(() => {
15
15
  "**/node_modules/**",
16
16
  "**/.build/**",
17
17
  "**/.sst/**",
18
+ "**/.mono-build/**",
19
+ "**/cdk.out/**",
18
20
  "**/.git/**",
19
21
  "**/debug.log",
20
22
  ],
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.6-ig.9",
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": "22.13.14",
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
- }