@awsless/cli 0.0.46-next.2 → 0.0.46-next.21
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/dist/app.json +1 -1
- package/dist/app.stage.json +1 -1
- package/dist/bin.js +134740 -12057
- package/dist/handlers/{bundle.mjs → bundle.js} +50 -43
- package/dist/handlers/icon.js +33391 -0
- package/dist/handlers/{image.mjs → image.js} +2 -2
- package/dist/handlers/{on-error-log.mjs → on-error-log.js} +2 -2
- package/dist/handlers/pubsub-publisher.js +9987 -0
- package/dist/handlers/{pubsub-server.mjs → pubsub-server.js} +31772 -37941
- package/dist/handlers/{rpc.mjs → rpc.js} +50 -14
- package/dist/prebuild/on-failure/HASH +1 -0
- package/dist/prebuild/on-failure/bundle.zip +0 -0
- package/dist/prebuild/sandbox-proxy/HASH +1 -0
- package/dist/prebuild/sandbox-proxy/bundle.zip +0 -0
- package/dist/stack.json +1 -1
- package/dist/stack.stage.json +1 -1
- package/dist/test-global-setup.js +1 -1
- package/package.json +38 -32
- package/README.MD +0 -487
- package/dist/bin.d.ts +0 -1
- package/dist/build-json-schema.js +0 -1963
- package/dist/handlers/icon.mjs +0 -104
- package/dist/handlers/on-failure.mjs +0 -216
- package/dist/handlers/pubsub-publisher.mjs +0 -43
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
// src/feature/bundle/server/handle.ts
|
|
2
2
|
import { patch, unpatch } from "@awsless/json";
|
|
3
3
|
import { ExpectedError, invoke, isErrorResponse } from "@awsless/lambda";
|
|
4
|
-
import { formatRoutePayload, getCurrentRoute,
|
|
4
|
+
import { formatRoutePayload, getCurrentRoute, withBundleRouteContext } from "awsless";
|
|
5
5
|
|
|
6
6
|
// src/feature/bundle/server/resource/util.ts
|
|
7
|
+
var routeType = (route) => {
|
|
8
|
+
return route.split(":")[1];
|
|
9
|
+
};
|
|
10
|
+
var routeFromResourceName = (name) => {
|
|
11
|
+
return name.slice(process.env.APP.length + 2).split("--").join(":");
|
|
12
|
+
};
|
|
7
13
|
var asyncRoute = (key, payload) => {
|
|
8
14
|
process.env.THROW_EXPECTED_ERRORS = "1";
|
|
9
15
|
return { key, payload };
|
|
@@ -20,7 +26,7 @@ var webRoute = (key, event) => {
|
|
|
20
26
|
// src/feature/bundle/server/resource/cron.ts
|
|
21
27
|
var cronHandler = (event) => {
|
|
22
28
|
const route = event?.["$awsless-route"];
|
|
23
|
-
if (typeof route === "string" && route
|
|
29
|
+
if (typeof route === "string" && routeType(route) === "cron") {
|
|
24
30
|
return asyncRoute(route, event.event);
|
|
25
31
|
}
|
|
26
32
|
return;
|
|
@@ -29,7 +35,7 @@ var cronHandler = (event) => {
|
|
|
29
35
|
// src/feature/bundle/server/resource/function.ts
|
|
30
36
|
var functionHandler = (event) => {
|
|
31
37
|
const route = event?.["$awsless-route"];
|
|
32
|
-
if (typeof route === "string" && route
|
|
38
|
+
if (typeof route === "string" && routeType(route) === "function") {
|
|
33
39
|
return {
|
|
34
40
|
key: route,
|
|
35
41
|
payload: event.event
|
|
@@ -42,7 +48,7 @@ var functionHandler = (event) => {
|
|
|
42
48
|
var iconHandler = (event) => {
|
|
43
49
|
const route = event?.["$awsless-route"];
|
|
44
50
|
if (typeof route === "string") {
|
|
45
|
-
if (route
|
|
51
|
+
if (routeType(route) === "icon") {
|
|
46
52
|
return {
|
|
47
53
|
key: route,
|
|
48
54
|
payload: event.event
|
|
@@ -51,7 +57,7 @@ var iconHandler = (event) => {
|
|
|
51
57
|
return;
|
|
52
58
|
}
|
|
53
59
|
const requestRoute = event?.headers?.["x-awsless-route"];
|
|
54
|
-
if (typeof requestRoute === "string" && requestRoute
|
|
60
|
+
if (typeof requestRoute === "string" && routeType(requestRoute) === "icon") {
|
|
55
61
|
return webRoute(requestRoute, event);
|
|
56
62
|
}
|
|
57
63
|
return;
|
|
@@ -61,7 +67,7 @@ var iconHandler = (event) => {
|
|
|
61
67
|
var imageHandler = (event) => {
|
|
62
68
|
const route = event?.["$awsless-route"];
|
|
63
69
|
if (typeof route === "string") {
|
|
64
|
-
if (route
|
|
70
|
+
if (routeType(route) === "image") {
|
|
65
71
|
return {
|
|
66
72
|
key: route,
|
|
67
73
|
payload: event.event
|
|
@@ -70,7 +76,7 @@ var imageHandler = (event) => {
|
|
|
70
76
|
return;
|
|
71
77
|
}
|
|
72
78
|
const requestRoute = event?.headers?.["x-awsless-route"];
|
|
73
|
-
if (typeof requestRoute === "string" && requestRoute
|
|
79
|
+
if (typeof requestRoute === "string" && routeType(requestRoute) === "image") {
|
|
74
80
|
return webRoute(requestRoute, event);
|
|
75
81
|
}
|
|
76
82
|
return;
|
|
@@ -80,13 +86,13 @@ var imageHandler = (event) => {
|
|
|
80
86
|
var logHandler = (event) => {
|
|
81
87
|
const route = event?.["$awsless-route"];
|
|
82
88
|
if (typeof route === "string") {
|
|
83
|
-
if (route
|
|
89
|
+
if (routeType(route) === "on-error-log") {
|
|
84
90
|
return asyncRoute(route, event.event);
|
|
85
91
|
}
|
|
86
92
|
return;
|
|
87
93
|
}
|
|
88
94
|
if (typeof event?.awslogs?.data === "string") {
|
|
89
|
-
return asyncRoute(
|
|
95
|
+
return asyncRoute("base:on-error-log:handler", event);
|
|
90
96
|
}
|
|
91
97
|
return;
|
|
92
98
|
};
|
|
@@ -98,8 +104,8 @@ var metricHandler = (event) => {
|
|
|
98
104
|
}
|
|
99
105
|
if (event?.source === "aws.cloudwatch" && typeof event.alarmArn === "string") {
|
|
100
106
|
const alarmName = event.alarmArn.split(":alarm:").at(-1);
|
|
101
|
-
const route = alarmName
|
|
102
|
-
if (route
|
|
107
|
+
const route = routeFromResourceName(alarmName);
|
|
108
|
+
if (routeType(route) === "metric") {
|
|
103
109
|
return asyncRoute(route, event);
|
|
104
110
|
}
|
|
105
111
|
}
|
|
@@ -109,19 +115,8 @@ var metricHandler = (event) => {
|
|
|
109
115
|
// src/feature/bundle/server/resource/on-failure.ts
|
|
110
116
|
var onFailureHandler = (event) => {
|
|
111
117
|
const route = event?.["$awsless-route"];
|
|
112
|
-
if (typeof route === "string") {
|
|
113
|
-
|
|
114
|
-
return asyncRoute(route, event.event);
|
|
115
|
-
}
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
if (typeof event?.headers?.["x-awsless-route"] === "string") {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
const record = event?.Records?.[0];
|
|
122
|
-
const eventSourceArn = record?.eventSourceARN;
|
|
123
|
-
if (record?.eventSource === "aws:sqs" && typeof eventSourceArn === "string" && eventSourceArn.endsWith(":" + process.env.APP + "--on-failure--failure")) {
|
|
124
|
-
return asyncRoute(`${process.env.APP}:on-failure:normalizer`, event);
|
|
118
|
+
if (typeof route === "string" && routeType(route) === "on-failure") {
|
|
119
|
+
return asyncRoute(route, event.event);
|
|
125
120
|
}
|
|
126
121
|
return;
|
|
127
122
|
};
|
|
@@ -131,7 +126,7 @@ var eventTypes = ["connected", "disconnected", "subscribed", "unsubscribed"];
|
|
|
131
126
|
var pubsubHandler = (event, routes) => {
|
|
132
127
|
const route = event?.["$awsless-route"];
|
|
133
128
|
if (typeof route === "string") {
|
|
134
|
-
if (route
|
|
129
|
+
if (routeType(route) === "pubsub") {
|
|
135
130
|
if (eventTypes.some((type) => route.endsWith(`-${type}`))) {
|
|
136
131
|
return asyncRoute(route, event.event);
|
|
137
132
|
}
|
|
@@ -172,7 +167,7 @@ var pubsubHandler = (event, routes) => {
|
|
|
172
167
|
var queueHandler = (event) => {
|
|
173
168
|
const route = event?.["$awsless-route"];
|
|
174
169
|
if (typeof route === "string") {
|
|
175
|
-
if (route
|
|
170
|
+
if (routeType(route) === "queue") {
|
|
176
171
|
return asyncRoute(route, event.event);
|
|
177
172
|
}
|
|
178
173
|
return;
|
|
@@ -182,9 +177,9 @@ var queueHandler = (event) => {
|
|
|
182
177
|
}
|
|
183
178
|
const record = event?.Records?.[0];
|
|
184
179
|
if (record?.eventSource === "aws:sqs" && typeof record.eventSourceARN === "string") {
|
|
185
|
-
const
|
|
186
|
-
const route2 =
|
|
187
|
-
if (route2
|
|
180
|
+
const queueName = record.eventSourceARN.split(":").at(-1);
|
|
181
|
+
const route2 = routeFromResourceName(queueName.replace(/\.fifo$/, ""));
|
|
182
|
+
if (routeType(route2) === "queue") {
|
|
188
183
|
return asyncRoute(route2, event);
|
|
189
184
|
}
|
|
190
185
|
}
|
|
@@ -197,7 +192,19 @@ var restHandler = (event) => {
|
|
|
197
192
|
return;
|
|
198
193
|
}
|
|
199
194
|
const route = event?.headers?.["x-awsless-route"];
|
|
200
|
-
if (typeof route === "string" && route
|
|
195
|
+
if (typeof route === "string" && routeType(route) === "rest") {
|
|
196
|
+
return webRoute(route, event);
|
|
197
|
+
}
|
|
198
|
+
return;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// src/feature/bundle/server/resource/route.ts
|
|
202
|
+
var routeHandler = (event) => {
|
|
203
|
+
if (typeof event?.["$awsless-route"] === "string") {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const route = event?.headers?.["x-awsless-route"];
|
|
207
|
+
if (typeof route === "string" && routeType(route) === "route") {
|
|
201
208
|
return webRoute(route, event);
|
|
202
209
|
}
|
|
203
210
|
return;
|
|
@@ -207,7 +214,7 @@ var restHandler = (event) => {
|
|
|
207
214
|
var rpcHandler = (event) => {
|
|
208
215
|
const route = event?.["$awsless-route"];
|
|
209
216
|
if (typeof route === "string") {
|
|
210
|
-
if (route
|
|
217
|
+
if (routeType(route) === "rpc") {
|
|
211
218
|
return {
|
|
212
219
|
key: route,
|
|
213
220
|
payload: event.event
|
|
@@ -216,7 +223,7 @@ var rpcHandler = (event) => {
|
|
|
216
223
|
return;
|
|
217
224
|
}
|
|
218
225
|
const requestRoute = event?.headers?.["x-awsless-route"];
|
|
219
|
-
if (typeof requestRoute === "string" && requestRoute
|
|
226
|
+
if (typeof requestRoute === "string" && routeType(requestRoute) === "rpc") {
|
|
220
227
|
return webRoute(requestRoute, event);
|
|
221
228
|
}
|
|
222
229
|
return;
|
|
@@ -228,7 +235,7 @@ var siteHandler = (event) => {
|
|
|
228
235
|
return;
|
|
229
236
|
}
|
|
230
237
|
const route = event?.headers?.["x-awsless-route"];
|
|
231
|
-
if (typeof route === "string" && route
|
|
238
|
+
if (typeof route === "string" && routeType(route) === "site") {
|
|
232
239
|
return webRoute(route, event);
|
|
233
240
|
}
|
|
234
241
|
return;
|
|
@@ -238,7 +245,7 @@ var siteHandler = (event) => {
|
|
|
238
245
|
var storeHandler = (event) => {
|
|
239
246
|
const requestedRoute = event?.["$awsless-route"];
|
|
240
247
|
if (typeof requestedRoute === "string") {
|
|
241
|
-
if (requestedRoute
|
|
248
|
+
if (routeType(requestedRoute) === "store") {
|
|
242
249
|
return asyncRoute(requestedRoute, event.event);
|
|
243
250
|
}
|
|
244
251
|
return;
|
|
@@ -248,7 +255,7 @@ var storeHandler = (event) => {
|
|
|
248
255
|
}
|
|
249
256
|
const record = event?.Records?.[0];
|
|
250
257
|
const route = record?.s3?.configurationId;
|
|
251
|
-
if (record?.eventSource === "aws:s3" && typeof route === "string" && route
|
|
258
|
+
if (record?.eventSource === "aws:s3" && typeof route === "string" && routeType(route) === "store") {
|
|
252
259
|
return asyncRoute(route, event);
|
|
253
260
|
}
|
|
254
261
|
return;
|
|
@@ -262,8 +269,8 @@ var tableHandler = (event) => {
|
|
|
262
269
|
const record = event?.Records?.[0];
|
|
263
270
|
if (record?.eventSource === "aws:dynamodb" && typeof record.eventSourceARN === "string") {
|
|
264
271
|
const tableName = record.eventSourceARN.split("/")[1];
|
|
265
|
-
const route = tableName
|
|
266
|
-
if (route
|
|
272
|
+
const route = routeFromResourceName(tableName);
|
|
273
|
+
if (routeType(route) === "table") {
|
|
267
274
|
return asyncRoute(route, event);
|
|
268
275
|
}
|
|
269
276
|
}
|
|
@@ -273,7 +280,7 @@ var tableHandler = (event) => {
|
|
|
273
280
|
// src/feature/bundle/server/resource/task.ts
|
|
274
281
|
var taskHandler = (event) => {
|
|
275
282
|
const route = event?.["$awsless-route"];
|
|
276
|
-
if (typeof route === "string" && route
|
|
283
|
+
if (typeof route === "string" && routeType(route) === "task") {
|
|
277
284
|
return asyncRoute(route, event.event);
|
|
278
285
|
}
|
|
279
286
|
return;
|
|
@@ -283,7 +290,7 @@ var taskHandler = (event) => {
|
|
|
283
290
|
var topicHandler = (event, routes) => {
|
|
284
291
|
const route = event?.["$awsless-route"];
|
|
285
292
|
if (typeof route === "string") {
|
|
286
|
-
if (route
|
|
293
|
+
if (routeType(route) === "topic") {
|
|
287
294
|
return asyncRoute(route, event.event);
|
|
288
295
|
}
|
|
289
296
|
return;
|
|
@@ -325,6 +332,7 @@ var createBundle = (handlers) => {
|
|
|
325
332
|
topicHandler,
|
|
326
333
|
taskHandler,
|
|
327
334
|
restHandler,
|
|
335
|
+
routeHandler,
|
|
328
336
|
rpcHandler,
|
|
329
337
|
siteHandler,
|
|
330
338
|
storeHandler,
|
|
@@ -338,8 +346,7 @@ var createBundle = (handlers) => {
|
|
|
338
346
|
return match;
|
|
339
347
|
}
|
|
340
348
|
}
|
|
341
|
-
|
|
342
|
-
throw new Error("Unknown bundle route: " + route);
|
|
349
|
+
throw new Error(`Unknown bundle route: ${event?.["$awsless-route"] ?? event?.headers?.["x-awsless-route"]} `);
|
|
343
350
|
};
|
|
344
351
|
return async (event, context) => {
|
|
345
352
|
const handleRoute = (match2) => {
|
|
@@ -348,13 +355,13 @@ var createBundle = (handlers) => {
|
|
|
348
355
|
throw new Error("Unknown bundle route: " + match2.key);
|
|
349
356
|
}
|
|
350
357
|
process.env.AWSLESS_ROUTE = match2.key;
|
|
351
|
-
return
|
|
358
|
+
return withBundleRouteContext(match2.key, internalInvoke, async () => {
|
|
352
359
|
const handle = await load();
|
|
353
360
|
const routedContext = { ...context, route: match2.key };
|
|
354
361
|
return handle(match2.payload ?? {}, routedContext);
|
|
355
362
|
});
|
|
356
363
|
};
|
|
357
|
-
const
|
|
364
|
+
const internalInvoke = async (key, payload) => {
|
|
358
365
|
const caller = getCurrentRoute();
|
|
359
366
|
const throwExpectedErrors = process.env.THROW_EXPECTED_ERRORS;
|
|
360
367
|
let result;
|