@aspan-corporation/ac-shared 1.0.21 → 1.0.22
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/lib/index.d.ts +1 -1
- package/lib/index.js +138 -140
- package/lib/index.js.map +4 -4
- package/lib/services/dynamoDB.d.ts +1 -1
- package/lib/services/location.d.ts +1 -1
- package/lib/services/s3.d.ts +1 -1
- package/lib/services/sqs.d.ts +1 -1
- package/lib/services/ssm.d.ts +1 -1
- package/lib/services/sts.d.ts +1 -1
- package/lib/utils/helpers.d.ts +14 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +1 -1
- /package/lib/{services → utils}/types.d.ts +0 -0
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -8,7 +8,94 @@ import {
|
|
|
8
8
|
} from "@aws-sdk/client-s3";
|
|
9
9
|
import { Upload } from "@aws-sdk/lib-storage";
|
|
10
10
|
import { PassThrough } from "node:stream";
|
|
11
|
+
import assert2 from "node:assert/strict";
|
|
12
|
+
|
|
13
|
+
// src/utils/assertUtils.ts
|
|
11
14
|
import assert from "node:assert/strict";
|
|
15
|
+
var assertEnvVar = (envVar) => {
|
|
16
|
+
assert(process.env[envVar], `${envVar} is not set`);
|
|
17
|
+
return process.env[envVar];
|
|
18
|
+
};
|
|
19
|
+
var assertString = (value) => {
|
|
20
|
+
assert(typeof value === "string", "Value is not a string");
|
|
21
|
+
assert(value.length > 0, "Value is empty");
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// src/utils/logger.ts
|
|
26
|
+
import { Logger } from "@aws-lambda-powertools/logger";
|
|
27
|
+
var rootLogger = new Logger({
|
|
28
|
+
serviceName: process.env.POWERTOOLS_SERVICE_NAME ?? process.env.AWS_LAMBDA_FUNCTION_NAME ?? "ac-shared"
|
|
29
|
+
});
|
|
30
|
+
var getLoggerWithScope = (scope, logger = rootLogger) => {
|
|
31
|
+
const childLogger = logger.createChild();
|
|
32
|
+
childLogger.appendKeys({ scope });
|
|
33
|
+
return childLogger;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// src/utils/normalizeErrorMessage.ts
|
|
37
|
+
var normalizeErrorMessage = (error) => {
|
|
38
|
+
if (error instanceof Error) {
|
|
39
|
+
return error.message;
|
|
40
|
+
} else if (typeof error === "string") {
|
|
41
|
+
return error;
|
|
42
|
+
} else if (typeof error === "object" && error !== null) {
|
|
43
|
+
return JSON.stringify(error);
|
|
44
|
+
} else {
|
|
45
|
+
return String(error);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/utils/thumbsKey.ts
|
|
50
|
+
import { extname } from "node:path";
|
|
51
|
+
var JPEG_EXTENSION = "jpeg";
|
|
52
|
+
var JPG_EXTENSION = "jpg";
|
|
53
|
+
var HEIC_EXTENSION = "heic";
|
|
54
|
+
var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
|
|
55
|
+
var ALLOWED_EXTENSIONS = [
|
|
56
|
+
JPEG_EXTENSION,
|
|
57
|
+
JPG_EXTENSION,
|
|
58
|
+
HEIC_EXTENSION
|
|
59
|
+
];
|
|
60
|
+
var THUMBNAIL_RESOLUTIONS = [
|
|
61
|
+
[200, 200],
|
|
62
|
+
[1180, 820]
|
|
63
|
+
];
|
|
64
|
+
var getThumbsKey = ({
|
|
65
|
+
key,
|
|
66
|
+
prefix,
|
|
67
|
+
width,
|
|
68
|
+
height
|
|
69
|
+
}) => {
|
|
70
|
+
const ext = getKeyExtension(key);
|
|
71
|
+
const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext) ? key : `${key.split(".").slice(0, -1).join(".")}.${DEFAULT_THUMBS_EXTENSION}`;
|
|
72
|
+
return `${prefix}/${width}x${height}/${destinationKey}`;
|
|
73
|
+
};
|
|
74
|
+
var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
|
|
75
|
+
var isAllowedExtension = (key) => {
|
|
76
|
+
const ext = getKeyExtension(key);
|
|
77
|
+
return ALLOWED_EXTENSIONS.includes(ext);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/utils/helpers.ts
|
|
81
|
+
var getObjectWithAttribute = (value, attributeName) => {
|
|
82
|
+
const resultingObject = {};
|
|
83
|
+
if (value !== void 0 && value !== null) {
|
|
84
|
+
resultingObject[attributeName] = value;
|
|
85
|
+
}
|
|
86
|
+
return resultingObject;
|
|
87
|
+
};
|
|
88
|
+
var getObjectWithAssumeRoleCommandOutputAttribute = (assumeRoleCommandOutput) => assumeRoleCommandOutput ? {
|
|
89
|
+
credentials: {
|
|
90
|
+
accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
|
|
91
|
+
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
92
|
+
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
93
|
+
}
|
|
94
|
+
} : {};
|
|
95
|
+
var getObjectWithStackAttribute = (error) => getObjectWithAttribute(error.stack, "stack");
|
|
96
|
+
var getObjectWithLoggerAttribute = (logger) => getObjectWithAttribute(logger, "logger");
|
|
97
|
+
|
|
98
|
+
// src/services/s3.ts
|
|
12
99
|
var S3Service = class {
|
|
13
100
|
logger;
|
|
14
101
|
client;
|
|
@@ -22,17 +109,13 @@ var S3Service = class {
|
|
|
22
109
|
if (client) {
|
|
23
110
|
this.client = client;
|
|
24
111
|
} else {
|
|
25
|
-
|
|
112
|
+
assert2(region, "Region must be provided if client is not passed");
|
|
26
113
|
this.client = new S3Client({
|
|
27
114
|
region,
|
|
28
|
-
|
|
29
|
-
...
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
33
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
34
|
-
}
|
|
35
|
-
} : {}
|
|
115
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
116
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
117
|
+
assumeRoleCommandOutput
|
|
118
|
+
)
|
|
36
119
|
});
|
|
37
120
|
}
|
|
38
121
|
}
|
|
@@ -99,7 +182,7 @@ import {
|
|
|
99
182
|
QueryCommand,
|
|
100
183
|
UpdateCommand
|
|
101
184
|
} from "@aws-sdk/lib-dynamodb";
|
|
102
|
-
import
|
|
185
|
+
import assert3 from "node:assert/strict";
|
|
103
186
|
var DynamoDBService = class {
|
|
104
187
|
logger;
|
|
105
188
|
client;
|
|
@@ -114,17 +197,13 @@ var DynamoDBService = class {
|
|
|
114
197
|
if (client) {
|
|
115
198
|
this.client = client;
|
|
116
199
|
} else {
|
|
117
|
-
|
|
200
|
+
assert3(region, "Region must be provided if client is not passed");
|
|
118
201
|
this.client = new DynamoDBClient({
|
|
119
202
|
region,
|
|
120
|
-
|
|
121
|
-
...
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
125
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
126
|
-
}
|
|
127
|
-
} : {}
|
|
203
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
204
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
205
|
+
assumeRoleCommandOutput
|
|
206
|
+
)
|
|
128
207
|
});
|
|
129
208
|
}
|
|
130
209
|
this.documentClient = DynamoDBDocumentClient.from(this.client);
|
|
@@ -155,7 +234,7 @@ import {
|
|
|
155
234
|
PutParameterCommand,
|
|
156
235
|
SSMClient
|
|
157
236
|
} from "@aws-sdk/client-ssm";
|
|
158
|
-
import
|
|
237
|
+
import assert4 from "node:assert/strict";
|
|
159
238
|
var SSMService = class {
|
|
160
239
|
logger;
|
|
161
240
|
client;
|
|
@@ -169,17 +248,13 @@ var SSMService = class {
|
|
|
169
248
|
if (client) {
|
|
170
249
|
this.client = client;
|
|
171
250
|
} else {
|
|
172
|
-
|
|
251
|
+
assert4(region, "Region must be provided if client is not passed");
|
|
173
252
|
this.client = new SSMClient({
|
|
174
253
|
region,
|
|
175
|
-
|
|
176
|
-
...
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
180
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
181
|
-
}
|
|
182
|
-
} : {}
|
|
254
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
255
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
256
|
+
assumeRoleCommandOutput
|
|
257
|
+
)
|
|
183
258
|
});
|
|
184
259
|
}
|
|
185
260
|
}
|
|
@@ -199,7 +274,7 @@ import {
|
|
|
199
274
|
SendMessageBatchCommand,
|
|
200
275
|
SendMessageCommand
|
|
201
276
|
} from "@aws-sdk/client-sqs";
|
|
202
|
-
import
|
|
277
|
+
import assert5 from "node:assert/strict";
|
|
203
278
|
var SQSService = class {
|
|
204
279
|
logger;
|
|
205
280
|
client;
|
|
@@ -213,17 +288,13 @@ var SQSService = class {
|
|
|
213
288
|
if (client) {
|
|
214
289
|
this.client = client;
|
|
215
290
|
} else {
|
|
216
|
-
|
|
291
|
+
assert5(region, "Region must be provided if client is not passed");
|
|
217
292
|
this.client = new SQSClient({
|
|
218
293
|
region,
|
|
219
|
-
|
|
220
|
-
...
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
224
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
225
|
-
}
|
|
226
|
-
} : {}
|
|
294
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
295
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
296
|
+
assumeRoleCommandOutput
|
|
297
|
+
)
|
|
227
298
|
});
|
|
228
299
|
}
|
|
229
300
|
}
|
|
@@ -247,7 +318,7 @@ import {
|
|
|
247
318
|
GetCallerIdentityCommand,
|
|
248
319
|
STSClient
|
|
249
320
|
} from "@aws-sdk/client-sts";
|
|
250
|
-
import
|
|
321
|
+
import assert6 from "node:assert/strict";
|
|
251
322
|
var STSService = class {
|
|
252
323
|
logger;
|
|
253
324
|
client;
|
|
@@ -260,10 +331,10 @@ var STSService = class {
|
|
|
260
331
|
if (client) {
|
|
261
332
|
this.client = client;
|
|
262
333
|
} else {
|
|
263
|
-
|
|
334
|
+
assert6(region, "Region must be provided if client is not passed");
|
|
264
335
|
this.client = new STSClient({
|
|
265
336
|
region,
|
|
266
|
-
|
|
337
|
+
...getObjectWithLoggerAttribute(this.logger)
|
|
267
338
|
});
|
|
268
339
|
}
|
|
269
340
|
}
|
|
@@ -282,7 +353,7 @@ import {
|
|
|
282
353
|
LocationClient,
|
|
283
354
|
SearchPlaceIndexForPositionCommand
|
|
284
355
|
} from "@aws-sdk/client-location";
|
|
285
|
-
import
|
|
356
|
+
import assert7 from "node:assert/strict";
|
|
286
357
|
var LocationService = class {
|
|
287
358
|
logger;
|
|
288
359
|
client;
|
|
@@ -296,17 +367,13 @@ var LocationService = class {
|
|
|
296
367
|
if (client) {
|
|
297
368
|
this.client = client;
|
|
298
369
|
} else {
|
|
299
|
-
|
|
370
|
+
assert7(region, "Region must be provided if client is not passed");
|
|
300
371
|
this.client = new LocationClient({
|
|
301
372
|
region,
|
|
302
|
-
|
|
303
|
-
...
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
|
|
307
|
-
sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
|
|
308
|
-
}
|
|
309
|
-
} : {}
|
|
373
|
+
...getObjectWithLoggerAttribute(this.logger),
|
|
374
|
+
...getObjectWithAssumeRoleCommandOutputAttribute(
|
|
375
|
+
assumeRoleCommandOutput
|
|
376
|
+
)
|
|
310
377
|
});
|
|
311
378
|
}
|
|
312
379
|
}
|
|
@@ -320,35 +387,32 @@ var LocationService = class {
|
|
|
320
387
|
};
|
|
321
388
|
|
|
322
389
|
// src/lambda/plumbingMiddleware.ts
|
|
323
|
-
import { Logger } from "@aws-lambda-powertools/logger";
|
|
390
|
+
import { Logger as Logger2 } from "@aws-lambda-powertools/logger";
|
|
324
391
|
import { Metrics } from "@aws-lambda-powertools/metrics";
|
|
325
392
|
import { Tracer } from "@aws-lambda-powertools/tracer";
|
|
326
|
-
import
|
|
393
|
+
import assert8 from "node:assert";
|
|
327
394
|
var plumbingMiddleware = () => {
|
|
328
|
-
|
|
395
|
+
assert8(
|
|
329
396
|
process.env.POWERTOOLS_METRICS_NAMESPACE,
|
|
330
397
|
"POWERTOOLS_METRICS_NAMESPACE is not configured"
|
|
331
398
|
);
|
|
332
|
-
|
|
399
|
+
assert8(
|
|
333
400
|
process.env.POWERTOOLS_SERVICE_NAME,
|
|
334
401
|
"POWERTOOLS_SERVICE_NAME is not configured"
|
|
335
402
|
);
|
|
336
403
|
const metrics = new Metrics();
|
|
337
|
-
const
|
|
404
|
+
const rootlogger = new Logger2();
|
|
338
405
|
const tracer = new Tracer();
|
|
339
406
|
let segment;
|
|
340
407
|
let subsegment;
|
|
341
408
|
let handlerSegment;
|
|
342
409
|
const before = async ({ context, event }) => {
|
|
343
|
-
logger.
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
const localLogger = logger.createChild();
|
|
347
|
-
localLogger.appendKeys({ function: "plumbingMiddleware.before" });
|
|
348
|
-
localLogger.info("incoming", { event });
|
|
410
|
+
const logger = getLoggerWithScope("plumbingMiddleware.before", rootlogger);
|
|
411
|
+
logger.addContext(context);
|
|
412
|
+
logger.logEventIfEnabled(event);
|
|
349
413
|
segment = tracer.getSegment();
|
|
350
414
|
if (!segment) {
|
|
351
|
-
|
|
415
|
+
logger.error("Failed to get segment");
|
|
352
416
|
return;
|
|
353
417
|
}
|
|
354
418
|
metrics.captureColdStartMetric();
|
|
@@ -378,17 +442,16 @@ var plumbingMiddleware = () => {
|
|
|
378
442
|
};
|
|
379
443
|
};
|
|
380
444
|
const after = async () => {
|
|
381
|
-
const
|
|
382
|
-
localLogger.appendKeys({ function: "plumbingMiddleware.after" });
|
|
445
|
+
const logger = getLoggerWithScope("plumbingMiddleware.after", rootlogger);
|
|
383
446
|
try {
|
|
384
|
-
|
|
447
|
+
logger.debug("started closing in after");
|
|
385
448
|
subsegment.close();
|
|
386
449
|
handlerSegment.close();
|
|
387
450
|
tracer.setSegment(segment);
|
|
388
451
|
metrics.publishStoredMetrics();
|
|
389
|
-
|
|
452
|
+
logger.debug("finished closing in after");
|
|
390
453
|
} catch (error) {
|
|
391
|
-
|
|
454
|
+
logger.error("error in after", { error });
|
|
392
455
|
throw error;
|
|
393
456
|
}
|
|
394
457
|
};
|
|
@@ -400,83 +463,14 @@ var plumbingMiddleware = () => {
|
|
|
400
463
|
|
|
401
464
|
// src/lambda/sharedUtils.ts
|
|
402
465
|
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
403
|
-
|
|
404
|
-
// src/utils/assertUtils.ts
|
|
405
|
-
import assert8 from "node:assert/strict";
|
|
406
|
-
var assertEnvVar = (envVar) => {
|
|
407
|
-
assert8(process.env[envVar], `${envVar} is not set`);
|
|
408
|
-
return process.env[envVar];
|
|
409
|
-
};
|
|
410
|
-
var assertString = (value) => {
|
|
411
|
-
assert8(typeof value === "string", "Value is not a string");
|
|
412
|
-
assert8(value.length > 0, "Value is empty");
|
|
413
|
-
return value;
|
|
414
|
-
};
|
|
415
|
-
|
|
416
|
-
// src/lambda/sharedUtils.ts
|
|
417
466
|
import { Metrics as Metrics2 } from "@aws-lambda-powertools/metrics";
|
|
418
|
-
import { Logger as
|
|
467
|
+
import { Logger as Logger3 } from "@aws-lambda-powertools/logger";
|
|
419
468
|
import { Tracer as Tracer2 } from "@aws-lambda-powertools/tracer";
|
|
420
469
|
var getPersistenceStore = () => {
|
|
421
470
|
return new DynamoDBPersistenceLayer({
|
|
422
471
|
tableName: assertEnvVar("AC_IDEMPOTENCY_TABLE_NAME")
|
|
423
472
|
});
|
|
424
473
|
};
|
|
425
|
-
|
|
426
|
-
// src/utils/logger.ts
|
|
427
|
-
import { Logger as Logger3 } from "@aws-lambda-powertools/logger";
|
|
428
|
-
var rootLogger = new Logger3({
|
|
429
|
-
serviceName: process.env.POWERTOOLS_SERVICE_NAME ?? process.env.AWS_LAMBDA_FUNCTION_NAME ?? "ac-shared"
|
|
430
|
-
});
|
|
431
|
-
var getLoggerWithScope = (scope, logger = rootLogger) => {
|
|
432
|
-
const childLogger = logger.createChild();
|
|
433
|
-
childLogger.appendKeys({ scope });
|
|
434
|
-
return childLogger;
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
// src/utils/normalizeErrorMessage.ts
|
|
438
|
-
var normalizeErrorMessage = (error) => {
|
|
439
|
-
if (error instanceof Error) {
|
|
440
|
-
return error.message;
|
|
441
|
-
} else if (typeof error === "string") {
|
|
442
|
-
return error;
|
|
443
|
-
} else if (typeof error === "object" && error !== null) {
|
|
444
|
-
return JSON.stringify(error);
|
|
445
|
-
} else {
|
|
446
|
-
return String(error);
|
|
447
|
-
}
|
|
448
|
-
};
|
|
449
|
-
|
|
450
|
-
// src/utils/thumbsKey.ts
|
|
451
|
-
import { extname } from "node:path";
|
|
452
|
-
var JPEG_EXTENSION = "jpeg";
|
|
453
|
-
var JPG_EXTENSION = "jpg";
|
|
454
|
-
var HEIC_EXTENSION = "heic";
|
|
455
|
-
var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
|
|
456
|
-
var ALLOWED_EXTENSIONS = [
|
|
457
|
-
JPEG_EXTENSION,
|
|
458
|
-
JPG_EXTENSION,
|
|
459
|
-
HEIC_EXTENSION
|
|
460
|
-
];
|
|
461
|
-
var THUMBNAIL_RESOLUTIONS = [
|
|
462
|
-
[200, 200],
|
|
463
|
-
[1180, 820]
|
|
464
|
-
];
|
|
465
|
-
var getThumbsKey = ({
|
|
466
|
-
key,
|
|
467
|
-
prefix,
|
|
468
|
-
width,
|
|
469
|
-
height
|
|
470
|
-
}) => {
|
|
471
|
-
const ext = getKeyExtension(key);
|
|
472
|
-
const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext) ? key : `${key.split(".").slice(0, -1).join(".")}.${DEFAULT_THUMBS_EXTENSION}`;
|
|
473
|
-
return `${prefix}/${width}x${height}/${destinationKey}`;
|
|
474
|
-
};
|
|
475
|
-
var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
|
|
476
|
-
var isAllowedExtension = (key) => {
|
|
477
|
-
const ext = getKeyExtension(key);
|
|
478
|
-
return ALLOWED_EXTENSIONS.includes(ext);
|
|
479
|
-
};
|
|
480
474
|
export {
|
|
481
475
|
ALLOWED_EXTENSIONS,
|
|
482
476
|
DEFAULT_THUMBS_EXTENSION,
|
|
@@ -485,7 +479,7 @@ export {
|
|
|
485
479
|
JPEG_EXTENSION,
|
|
486
480
|
JPG_EXTENSION,
|
|
487
481
|
LocationService,
|
|
488
|
-
|
|
482
|
+
Logger3 as Logger,
|
|
489
483
|
Metrics2 as Metrics,
|
|
490
484
|
S3Service,
|
|
491
485
|
SQSService,
|
|
@@ -497,6 +491,10 @@ export {
|
|
|
497
491
|
assertString,
|
|
498
492
|
getKeyExtension,
|
|
499
493
|
getLoggerWithScope,
|
|
494
|
+
getObjectWithAssumeRoleCommandOutputAttribute,
|
|
495
|
+
getObjectWithAttribute,
|
|
496
|
+
getObjectWithLoggerAttribute,
|
|
497
|
+
getObjectWithStackAttribute,
|
|
500
498
|
getPersistenceStore,
|
|
501
499
|
getThumbsKey,
|
|
502
500
|
isAllowedExtension,
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/services/s3.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import {\n GetObjectCommand,\n GetObjectCommandInput,\n HeadObjectCommand,\n HeadObjectCommandInput,\n ListObjectsV2Command,\n ListObjectsV2CommandInput,\n PutObjectCommand,\n PutObjectCommandInput,\n PutObjectCommandOutput,\n S3Client\n} from \"@aws-sdk/client-s3\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { Upload } from \"@aws-sdk/lib-storage\";\nimport { PassThrough } from \"node:stream\";\nimport { GenericLogger } from \"./types.js\";\nimport assert from \"node:assert/strict\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: S3Client;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new S3Client({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\");\n\n const pass = new PassThrough();\n\n const parallelUploads = new Upload({\n client: this.client,\n params: {\n ...putObjectCommandInput,\n Body: pass\n }\n });\n\n const donePromise = parallelUploads\n .done()\n .then(() => this.logger.debug(\"upload stream finished\"))\n .catch((err) => {\n this.logger.error(\"upload stream error\", err);\n pass.destroy(err);\n });\n\n return { stream: pass, done: donePromise };\n }\n\n async createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput) {\n this.logger.debug(\"download stream started\");\n\n const item = await this.client.send(\n new GetObjectCommand(getObjectCommandInput)\n );\n\n this.logger.debug(\"download stream finished\");\n\n return item.Body;\n }\n\n async listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput) {\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n try {\n await this.client.send(new HeadObjectCommand(headObjectCommandInput));\n return true;\n } catch (error) {\n if (error.name === \"NotFound\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import { DynamoDBClient } from \"@aws-sdk/client-dynamodb\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport {\n DynamoDBDocumentClient,\n GetCommand,\n GetCommandInput,\n GetCommandOutput,\n PutCommand,\n PutCommandInput,\n PutCommandOutput,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n UpdateCommand,\n UpdateCommandInput,\n UpdateCommandOutput\n} from \"@aws-sdk/lib-dynamodb\";\nimport { GenericLogger } from \"./types.js\";\nimport assert from \"node:assert/strict\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: DynamoDBClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new DynamoDBClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n\n this.documentClient = DynamoDBDocumentClient.from(this.client);\n }\n\n async getCommand(\n getCommandInput: GetCommandInput\n ): Promise<GetCommandOutput> {\n return await this.documentClient.send(new GetCommand(getCommandInput));\n }\n\n async updateCommand(\n updateCommandInput: UpdateCommandInput\n ): Promise<UpdateCommandOutput> {\n return await this.documentClient.send(\n new UpdateCommand(updateCommandInput)\n );\n }\n\n async queryCommand(\n queryCommandInput: QueryCommandInput\n ): Promise<QueryCommandOutput> {\n return await this.documentClient.send(new QueryCommand(queryCommandInput));\n }\n\n async putCommand(\n putCommandInput: PutCommandInput\n ): Promise<PutCommandOutput> {\n return await this.documentClient.send(new PutCommand(putCommandInput));\n }\n\n async checkIfItemExists(\n checkInput: Pick<GetCommandInput, \"TableName\" | \"Key\">\n ): Promise<boolean> {\n const result = await this.getCommand(checkInput);\n\n return !!result.Item;\n }\n}\n", "import {\n GetParameterCommand,\n GetParameterCommandInput,\n GetParameterCommandOutput,\n PutParameterCommand,\n PutParameterCommandInput,\n PutParameterCommandOutput,\n SSMClient\n} from \"@aws-sdk/client-ssm\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SSMClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n } = {}) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SSMClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n async getParameter(\n params: GetParameterCommandInput\n ): Promise<GetParameterCommandOutput> {\n return await this.client.send(new GetParameterCommand(params));\n }\n\n async putParameter(\n params: PutParameterCommandInput\n ): Promise<PutParameterCommandOutput> {\n return await this.client.send(new PutParameterCommand(params));\n }\n}\n", "import {\n DeleteMessageCommand,\n DeleteMessageCommandInput,\n DeleteMessageCommandOutput,\n ReceiveMessageCommand,\n ReceiveMessageCommandInput,\n ReceiveMessageCommandOutput,\n SQSClient,\n SendMessageBatchCommand,\n SendMessageBatchCommandInput,\n SendMessageBatchCommandOutput,\n SendMessageCommand,\n SendMessageCommandInput,\n SendMessageCommandOutput\n} from \"@aws-sdk/client-sqs\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\nimport assert from \"node:assert/strict\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SQSClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SQSClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n async sendMessage(\n params: SendMessageCommandInput\n ): Promise<SendMessageCommandOutput> {\n return await this.client.send(new SendMessageCommand(params));\n }\n\n async sendMessageBatch(\n params: SendMessageBatchCommandInput\n ): Promise<SendMessageBatchCommandOutput> {\n return await this.client.send(new SendMessageBatchCommand(params));\n }\n\n async receiveMessage(\n params: ReceiveMessageCommandInput\n ): Promise<ReceiveMessageCommandOutput> {\n return await this.client.send(new ReceiveMessageCommand(params));\n }\n\n async deleteMessage(\n params: DeleteMessageCommandInput\n ): Promise<DeleteMessageCommandOutput> {\n return await this.client.send(new DeleteMessageCommand(params));\n }\n}\n", "import {\n AssumeRoleCommand,\n AssumeRoleCommandInput,\n GetCallerIdentityCommand,\n STSClient\n} from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({\n logger,\n region,\n client\n }: {\n logger?: GenericLogger;\n region?: string;\n client?: STSClient;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new STSClient({\n region,\n logger: this.logger\n });\n }\n }\n\n async getCallerIdentity() {\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n return await this.client.send(\n new AssumeRoleCommand(assumeRoleCommandInput)\n );\n }\n}\n", "import {\n LocationClient,\n SearchPlaceIndexForPositionCommand,\n SearchPlaceIndexForPositionCommandInput,\n SearchPlaceIndexForPositionCommandOutput\n} from \"@aws-sdk/client-location\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class LocationService {\n logger: GenericLogger;\n client: LocationClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: LocationClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new LocationClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n async searchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput: SearchPlaceIndexForPositionCommandInput\n ): Promise<SearchPlaceIndexForPositionCommandOutput> {\n return await this.client.send(\n new SearchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput\n )\n );\n }\n}\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\n\nexport const plumbingMiddleware = (): MiddlewareObj => {\n assert(\n process.env.POWERTOOLS_METRICS_NAMESPACE,\n \"POWERTOOLS_METRICS_NAMESPACE is not configured\"\n );\n\n assert(\n process.env.POWERTOOLS_SERVICE_NAME,\n \"POWERTOOLS_SERVICE_NAME is not configured\"\n );\n\n const metrics = new Metrics();\n const logger = new Logger();\n const tracer = new Tracer();\n\n let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n logger.appendKeys({\n awsRequestId: context.awsRequestId,\n });\n\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.before\" });\n\n localLogger.info(\"incoming\", { event });\n\n segment = tracer.getSegment();\n\n if (!segment) {\n localLogger.error(\"Failed to get segment\");\n return;\n }\n\n metrics.captureColdStartMetric();\n\n // Create subsegment for the function & set it as active\n handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);\n tracer.setSegment(handlerSegment);\n tracer.annotateColdStart();\n tracer.addServiceNameAnnotation();\n\n // Add annotation for the awsRequestId\n tracer.putAnnotation(\"awsRequestId\", context.awsRequestId);\n\n // Create another subsegment & set it as active\n subsegment = handlerSegment.addNewSubsegment(\"### MySubSegment\");\n tracer.setSegment(subsegment);\n\n context.clientContext = {\n client: context.clientContext?.client || {\n appPackageName: \"\",\n appTitle: \"\",\n appVersionCode: \"\",\n appVersionName: \"\",\n installationId: \"\",\n },\n env: context.clientContext?.env || {\n platform: \"\",\n platformVersion: \"\",\n make: \"\",\n model: \"\",\n locale: \"\",\n },\n Custom: { tracer, logger, metrics },\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.after\" });\n\n try {\n localLogger.debug(\"started closing in after\");\n subsegment.close(); // (### MySubSegment)\n handlerSegment.close(); // (## index.handler)\n\n // Set the facade segment as active again (the one created by AWS Lambda)\n tracer.setSegment(segment);\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n localLogger.debug(\"finished closing in after\");\n } catch (error) {\n localLogger.error(\"error in after\", { error });\n throw error;\n }\n };\n\n return {\n before,\n after,\n };\n};\n", "import { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { Context } from \"aws-lambda\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport interface ACLambdaContext extends Context {\n clientContext?: {\n Custom?: {\n metrics: Metrics;\n logger: Logger;\n tracer: Tracer;\n };\n client: {\n appPackageName: string;\n appTitle: string;\n appVersionCode: string;\n appVersionName: string;\n installationId: string;\n };\n env: {\n platform: string;\n platformVersion: string;\n make: string;\n model: string;\n locale: string;\n };\n };\n}\n\nexport { Logger, Metrics, Tracer };\n", "import assert from \"node:assert/strict\";\n\nexport const assertEnvVar = (envVar: string): string => {\n assert(process.env[envVar], `${envVar} is not set`);\n return process.env[envVar];\n};\n\nexport const assertString = (value: string | undefined): string => {\n assert(typeof value === \"string\", \"Value is not a string\");\n assert(value.length > 0, \"Value is empty\");\n return value;\n};\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport const rootLogger = new Logger({\n serviceName:\n process.env.POWERTOOLS_SERVICE_NAME ??\n process.env.AWS_LAMBDA_FUNCTION_NAME ??\n \"ac-shared\"\n});\n\nexport const getLoggerWithScope = (\n scope: string,\n logger: Logger = rootLogger\n) => {\n const childLogger = logger.createChild();\n childLogger.appendKeys({ scope });\n return childLogger;\n};\n", "export const normalizeErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n return error.message;\n } else if (typeof error === \"string\") {\n return error;\n } else if (typeof error === \"object\" && error !== null) {\n return JSON.stringify(error);\n } else {\n return String(error);\n }\n};\n", "import { extname } from \"node:path\";\n\nexport const JPEG_EXTENSION = \"jpeg\";\nexport const JPG_EXTENSION = \"jpg\";\nexport const HEIC_EXTENSION = \"heic\";\nexport const DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;\nexport const ALLOWED_EXTENSIONS = [\n JPEG_EXTENSION,\n JPG_EXTENSION,\n HEIC_EXTENSION\n];\n\nexport const THUMBNAIL_RESOLUTIONS = [\n [200, 200],\n [1180, 820]\n];\n\nexport const getThumbsKey = ({\n key,\n prefix,\n width,\n height\n}: {\n key: string;\n prefix: string;\n width: number;\n height: number;\n}) => {\n const ext = getKeyExtension(key);\n\n const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext)\n ? key\n : `${key.split(\".\").slice(0, -1).join(\".\")}.${DEFAULT_THUMBS_EXTENSION}`;\n\n return `${prefix}/${width}x${height}/${destinationKey}`;\n};\n\nexport const getKeyExtension = (key: string) =>\n extname(key).slice(1).toLowerCase();\n\nexport const isAllowedExtension = (key: string) => {\n const ext = getKeyExtension(key);\n return ALLOWED_EXTENSIONS.includes(ext);\n};\n"],
|
|
5
|
-
"mappings": ";AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,OACK;AAEP,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAE5B,OAAO,YAAY;AAEZ,IAAM,
|
|
6
|
-
"names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "
|
|
3
|
+
"sources": ["../src/services/s3.ts", "../src/utils/assertUtils.ts", "../src/utils/logger.ts", "../src/utils/normalizeErrorMessage.ts", "../src/utils/thumbsKey.ts", "../src/utils/helpers.ts", "../src/services/dynamoDB.ts", "../src/services/ssm.ts", "../src/services/sqs.ts", "../src/services/sts.ts", "../src/services/location.ts", "../src/lambda/plumbingMiddleware.ts", "../src/lambda/sharedUtils.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n GetObjectCommand,\n GetObjectCommandInput,\n HeadObjectCommand,\n HeadObjectCommandInput,\n ListObjectsV2Command,\n ListObjectsV2CommandInput,\n PutObjectCommand,\n PutObjectCommandInput,\n PutObjectCommandOutput,\n S3Client\n} from \"@aws-sdk/client-s3\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { Upload } from \"@aws-sdk/lib-storage\";\nimport { PassThrough } from \"node:stream\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: S3Client;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new S3Client({\n region,\n ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\");\n\n const pass = new PassThrough();\n\n const parallelUploads = new Upload({\n client: this.client,\n params: {\n ...putObjectCommandInput,\n Body: pass\n }\n });\n\n const donePromise = parallelUploads\n .done()\n .then(() => this.logger.debug(\"upload stream finished\"))\n .catch((err) => {\n this.logger.error(\"upload stream error\", err);\n pass.destroy(err);\n });\n\n return { stream: pass, done: donePromise };\n }\n\n async createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput) {\n this.logger.debug(\"download stream started\");\n\n const item = await this.client.send(\n new GetObjectCommand(getObjectCommandInput)\n );\n\n this.logger.debug(\"download stream finished\");\n\n return item.Body;\n }\n\n async listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput) {\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n try {\n await this.client.send(new HeadObjectCommand(headObjectCommandInput));\n return true;\n } catch (error) {\n if (error.name === \"NotFound\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import assert from \"node:assert/strict\";\n\nexport const assertEnvVar = (envVar: string): string => {\n assert(process.env[envVar], `${envVar} is not set`);\n return process.env[envVar];\n};\n\nexport const assertString = (value: string | undefined): string => {\n assert(typeof value === \"string\", \"Value is not a string\");\n assert(value.length > 0, \"Value is empty\");\n return value;\n};\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { GenericLogger } from \"./types.js\";\n\nexport const rootLogger = new Logger({\n serviceName:\n process.env.POWERTOOLS_SERVICE_NAME ??\n process.env.AWS_LAMBDA_FUNCTION_NAME ??\n \"ac-shared\"\n});\n\nexport const getLoggerWithScope = (\n scope: string,\n logger: Logger = rootLogger\n) => {\n const childLogger = logger.createChild();\n childLogger.appendKeys({ scope });\n return childLogger;\n};\n", "export const normalizeErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n return error.message;\n } else if (typeof error === \"string\") {\n return error;\n } else if (typeof error === \"object\" && error !== null) {\n return JSON.stringify(error);\n } else {\n return String(error);\n }\n};\n", "import { extname } from \"node:path\";\n\nexport const JPEG_EXTENSION = \"jpeg\";\nexport const JPG_EXTENSION = \"jpg\";\nexport const HEIC_EXTENSION = \"heic\";\nexport const DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;\nexport const ALLOWED_EXTENSIONS = [\n JPEG_EXTENSION,\n JPG_EXTENSION,\n HEIC_EXTENSION\n];\n\nexport const THUMBNAIL_RESOLUTIONS = [\n [200, 200],\n [1180, 820]\n];\n\nexport const getThumbsKey = ({\n key,\n prefix,\n width,\n height\n}: {\n key: string;\n prefix: string;\n width: number;\n height: number;\n}) => {\n const ext = getKeyExtension(key);\n\n const destinationKey = [JPEG_EXTENSION, JPG_EXTENSION].includes(ext)\n ? key\n : `${key.split(\".\").slice(0, -1).join(\".\")}.${DEFAULT_THUMBS_EXTENSION}`;\n\n return `${prefix}/${width}x${height}/${destinationKey}`;\n};\n\nexport const getKeyExtension = (key: string) =>\n extname(key).slice(1).toLowerCase();\n\nexport const isAllowedExtension = (key: string) => {\n const ext = getKeyExtension(key);\n return ALLOWED_EXTENSIONS.includes(ext);\n};\n", "import { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\n\nexport const getObjectWithAttribute = (\n value: unknown,\n attributeName: string\n): object => {\n const resultingObject: Record<string, unknown> = {};\n\n if (value !== undefined && value !== null) {\n resultingObject[attributeName] = value;\n }\n\n return resultingObject;\n};\nexport const getObjectWithAssumeRoleCommandOutputAttribute = (\n assumeRoleCommandOutput?: AssumeRoleCommandOutput\n) =>\n assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {};\n\nexport const getObjectWithStackAttribute = (error: any): object =>\n getObjectWithAttribute(error.stack, \"stack\");\n\nexport const getObjectWithLoggerAttribute = (logger?: GenericLogger) =>\n getObjectWithAttribute(logger, \"logger\");\n", "import { DynamoDBClient } from \"@aws-sdk/client-dynamodb\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport {\n DynamoDBDocumentClient,\n GetCommand,\n GetCommandInput,\n GetCommandOutput,\n PutCommand,\n PutCommandInput,\n PutCommandOutput,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n UpdateCommand,\n UpdateCommandInput,\n UpdateCommandOutput\n} from \"@aws-sdk/lib-dynamodb\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: DynamoDBClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new DynamoDBClient({\n region,\n ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n\n this.documentClient = DynamoDBDocumentClient.from(this.client);\n }\n\n async getCommand(\n getCommandInput: GetCommandInput\n ): Promise<GetCommandOutput> {\n return await this.documentClient.send(new GetCommand(getCommandInput));\n }\n\n async updateCommand(\n updateCommandInput: UpdateCommandInput\n ): Promise<UpdateCommandOutput> {\n return await this.documentClient.send(\n new UpdateCommand(updateCommandInput)\n );\n }\n\n async queryCommand(\n queryCommandInput: QueryCommandInput\n ): Promise<QueryCommandOutput> {\n return await this.documentClient.send(new QueryCommand(queryCommandInput));\n }\n\n async putCommand(\n putCommandInput: PutCommandInput\n ): Promise<PutCommandOutput> {\n return await this.documentClient.send(new PutCommand(putCommandInput));\n }\n\n async checkIfItemExists(\n checkInput: Pick<GetCommandInput, \"TableName\" | \"Key\">\n ): Promise<boolean> {\n const result = await this.getCommand(checkInput);\n\n return !!result.Item;\n }\n}\n", "import {\n GetParameterCommand,\n GetParameterCommandInput,\n GetParameterCommandOutput,\n PutParameterCommand,\n PutParameterCommandInput,\n PutParameterCommandOutput,\n SSMClient\n} from \"@aws-sdk/client-ssm\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SSMClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n } = {}) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SSMClient({\n region,\n ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n async getParameter(\n params: GetParameterCommandInput\n ): Promise<GetParameterCommandOutput> {\n return await this.client.send(new GetParameterCommand(params));\n }\n\n async putParameter(\n params: PutParameterCommandInput\n ): Promise<PutParameterCommandOutput> {\n return await this.client.send(new PutParameterCommand(params));\n }\n}\n", "import {\n DeleteMessageCommand,\n DeleteMessageCommandInput,\n DeleteMessageCommandOutput,\n ReceiveMessageCommand,\n ReceiveMessageCommandInput,\n ReceiveMessageCommandOutput,\n SQSClient,\n SendMessageBatchCommand,\n SendMessageBatchCommandInput,\n SendMessageBatchCommandOutput,\n SendMessageCommand,\n SendMessageCommandInput,\n SendMessageCommandOutput\n} from \"@aws-sdk/client-sqs\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport assert from \"node:assert/strict\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SQSClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SQSClient({\n region,\n ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n async sendMessage(\n params: SendMessageCommandInput\n ): Promise<SendMessageCommandOutput> {\n return await this.client.send(new SendMessageCommand(params));\n }\n\n async sendMessageBatch(\n params: SendMessageBatchCommandInput\n ): Promise<SendMessageBatchCommandOutput> {\n return await this.client.send(new SendMessageBatchCommand(params));\n }\n\n async receiveMessage(\n params: ReceiveMessageCommandInput\n ): Promise<ReceiveMessageCommandOutput> {\n return await this.client.send(new ReceiveMessageCommand(params));\n }\n\n async deleteMessage(\n params: DeleteMessageCommandInput\n ): Promise<DeleteMessageCommandOutput> {\n return await this.client.send(new DeleteMessageCommand(params));\n }\n}\n", "import {\n AssumeRoleCommand,\n AssumeRoleCommandInput,\n GetCallerIdentityCommand,\n STSClient\n} from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport { getObjectWithLoggerAttribute } from \"../utils/index.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({\n logger,\n region,\n client\n }: {\n logger?: GenericLogger;\n region?: string;\n client?: STSClient;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new STSClient({\n region,\n ...getObjectWithLoggerAttribute(this.logger)\n });\n }\n }\n\n async getCallerIdentity() {\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n return await this.client.send(\n new AssumeRoleCommand(assumeRoleCommandInput)\n );\n }\n}\n", "import {\n LocationClient,\n SearchPlaceIndexForPositionCommand,\n SearchPlaceIndexForPositionCommandInput,\n SearchPlaceIndexForPositionCommandOutput\n} from \"@aws-sdk/client-location\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"../utils/types.js\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n getObjectWithLoggerAttribute\n} from \"../utils/index.js\";\n\nexport class LocationService {\n logger: GenericLogger;\n client: LocationClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: LocationClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new LocationClient({\n region,\n ...getObjectWithLoggerAttribute(this.logger),\n ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n async searchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput: SearchPlaceIndexForPositionCommandInput\n ): Promise<SearchPlaceIndexForPositionCommandOutput> {\n return await this.client.send(\n new SearchPlaceIndexForPositionCommand(\n searchPlaceIndexForPositionCommandInput\n )\n );\n }\n}\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\n\nexport const plumbingMiddleware = (): MiddlewareObj => {\n assert(\n process.env.POWERTOOLS_METRICS_NAMESPACE,\n \"POWERTOOLS_METRICS_NAMESPACE is not configured\"\n );\n\n assert(\n process.env.POWERTOOLS_SERVICE_NAME,\n \"POWERTOOLS_SERVICE_NAME is not configured\"\n );\n\n const metrics = new Metrics();\n const rootlogger = new Logger();\n const tracer = new Tracer();\n\n let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n const logger = getLoggerWithScope(\"plumbingMiddleware.before\", rootlogger);\n logger.addContext(context);\n logger.logEventIfEnabled(event);\n\n segment = tracer.getSegment();\n\n if (!segment) {\n logger.error(\"Failed to get segment\");\n return;\n }\n\n metrics.captureColdStartMetric();\n\n // Create subsegment for the function & set it as active\n handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);\n tracer.setSegment(handlerSegment);\n tracer.annotateColdStart();\n tracer.addServiceNameAnnotation();\n\n // Add annotation for the awsRequestId\n tracer.putAnnotation(\"awsRequestId\", context.awsRequestId);\n\n // Create another subsegment & set it as active\n subsegment = handlerSegment.addNewSubsegment(\"### MySubSegment\");\n tracer.setSegment(subsegment);\n\n context.clientContext = {\n client: context.clientContext?.client || {\n appPackageName: \"\",\n appTitle: \"\",\n appVersionCode: \"\",\n appVersionName: \"\",\n installationId: \"\"\n },\n env: context.clientContext?.env || {\n platform: \"\",\n platformVersion: \"\",\n make: \"\",\n model: \"\",\n locale: \"\"\n },\n Custom: { tracer, logger, metrics }\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n const logger = getLoggerWithScope(\"plumbingMiddleware.after\", rootlogger);\n\n try {\n logger.debug(\"started closing in after\");\n subsegment.close(); // (### MySubSegment)\n handlerSegment.close(); // (## index.handler)\n\n // Set the facade segment as active again (the one created by AWS Lambda)\n tracer.setSegment(segment);\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n logger.debug(\"finished closing in after\");\n } catch (error) {\n logger.error(\"error in after\", { error });\n throw error;\n }\n };\n\n return {\n before,\n after\n };\n};\n", "import { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { Context } from \"aws-lambda\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport interface ACLambdaContext extends Context {\n clientContext?: {\n Custom?: {\n metrics: Metrics;\n logger: Logger;\n tracer: Tracer;\n };\n client: {\n appPackageName: string;\n appTitle: string;\n appVersionCode: string;\n appVersionName: string;\n installationId: string;\n };\n env: {\n platform: string;\n platformVersion: string;\n make: string;\n model: string;\n locale: string;\n };\n };\n}\n\nexport { Logger, Metrics, Tracer };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "Logger", "assert", "assert", "Logger", "Metrics", "Logger", "Tracer"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
|
|
2
2
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
3
3
|
import { DynamoDBDocumentClient, GetCommandInput, GetCommandOutput, PutCommandInput, PutCommandOutput, QueryCommandInput, QueryCommandOutput, UpdateCommandInput, UpdateCommandOutput } from "@aws-sdk/lib-dynamodb";
|
|
4
|
-
import { GenericLogger } from "
|
|
4
|
+
import { GenericLogger } from "../utils/types.js";
|
|
5
5
|
export declare class DynamoDBService {
|
|
6
6
|
logger: GenericLogger;
|
|
7
7
|
client: DynamoDBClient;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LocationClient, SearchPlaceIndexForPositionCommandInput, SearchPlaceIndexForPositionCommandOutput } from "@aws-sdk/client-location";
|
|
2
2
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
3
|
-
import { GenericLogger } from "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class LocationService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: LocationClient;
|
package/lib/services/s3.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { GetObjectCommandInput, HeadObjectCommandInput, ListObjectsV2CommandInput, PutObjectCommandInput, PutObjectCommandOutput, S3Client } from "@aws-sdk/client-s3";
|
|
4
4
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
5
5
|
import { PassThrough } from "node:stream";
|
|
6
|
-
import { GenericLogger } from "
|
|
6
|
+
import { GenericLogger } from "../utils/types.js";
|
|
7
7
|
export declare class S3Service {
|
|
8
8
|
logger: GenericLogger;
|
|
9
9
|
client: S3Client;
|
package/lib/services/sqs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DeleteMessageCommandInput, DeleteMessageCommandOutput, ReceiveMessageCommandInput, ReceiveMessageCommandOutput, SQSClient, SendMessageBatchCommandInput, SendMessageBatchCommandOutput, SendMessageCommandInput, SendMessageCommandOutput } from "@aws-sdk/client-sqs";
|
|
2
2
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
3
|
-
import { GenericLogger } from "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class SQSService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: SQSClient;
|
package/lib/services/ssm.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GetParameterCommandInput, GetParameterCommandOutput, PutParameterCommandInput, PutParameterCommandOutput, SSMClient } from "@aws-sdk/client-ssm";
|
|
2
2
|
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
3
|
-
import { GenericLogger } from "
|
|
3
|
+
import { GenericLogger } from "../utils/types.js";
|
|
4
4
|
export declare class SSMService {
|
|
5
5
|
logger: GenericLogger;
|
|
6
6
|
client: SSMClient;
|
package/lib/services/sts.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
|
|
2
|
+
import { GenericLogger } from "./types.js";
|
|
3
|
+
export declare const getObjectWithAttribute: (value: unknown, attributeName: string) => object;
|
|
4
|
+
export declare const getObjectWithAssumeRoleCommandOutputAttribute: (assumeRoleCommandOutput?: AssumeRoleCommandOutput) => {
|
|
5
|
+
credentials: {
|
|
6
|
+
accessKeyId: string;
|
|
7
|
+
secretAccessKey: string;
|
|
8
|
+
sessionToken: string;
|
|
9
|
+
};
|
|
10
|
+
} | {
|
|
11
|
+
credentials?: undefined;
|
|
12
|
+
};
|
|
13
|
+
export declare const getObjectWithStackAttribute: (error: any) => object;
|
|
14
|
+
export declare const getObjectWithLoggerAttribute: (logger?: GenericLogger) => object;
|
package/lib/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
File without changes
|