@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.
@@ -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, withRoute } from "awsless";
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.split(":")[1] === "cron") {
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.split(":")[1] === "function") {
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.split(":")[1] === "icon") {
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.split(":")[1] === "icon") {
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.split(":")[1] === "image") {
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.split(":")[1] === "image") {
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.split(":")[1] === "on-error-log") {
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(`${process.env.APP}:on-error-log:handler`, event);
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.slice(process.env.APP.length + 2).split("--").join(":");
102
- if (route.split(":")[1] === "metric") {
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
- if (route.split(":")[1] === "on-failure") {
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.split(":")[1] === "pubsub") {
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.split(":")[1] === "queue") {
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 resourceName = record.eventSourceARN.split(":").at(-1);
186
- const route2 = resourceName.replace(/\.fifo$/, "").slice(process.env.APP.length + 2).split("--").join(":");
187
- if (route2.split(":")[1] === "queue") {
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.split(":")[1] === "rest") {
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.split(":")[1] === "rpc") {
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.split(":")[1] === "rpc") {
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.split(":")[1] === "site") {
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.split(":")[1] === "store") {
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.split(":")[1] === "store") {
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.slice(process.env.APP.length + 2).split("--").join(":");
266
- if (route.split(":")[1] === "table") {
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.split(":")[1] === "task") {
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.split(":")[1] === "topic") {
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
- const route = event?.["$awsless-route"] ?? event?.headers?.["x-awsless-route"];
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 withRoute(match2.key, invokeRoute, async () => {
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 invokeRoute = async (key, payload) => {
364
+ const internalInvoke = async (key, payload) => {
358
365
  const caller = getCurrentRoute();
359
366
  const throwExpectedErrors = process.env.THROW_EXPECTED_ERRORS;
360
367
  let result;