@aspan-corporation/ac-shared 1.2.1 → 1.2.3
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.js +217 -25
- package/lib/index.js.map +4 -4
- package/lib/lambda/index.d.ts +37 -1
- package/package.json +1 -1
- package/lib/lambda/observability.d.ts +0 -6
- package/lib/lambda/sharedUtils.d.ts +0 -19
- package/lib/lambda/withMiddlewares.d.ts +0 -2
package/lib/index.js
CHANGED
|
@@ -90,7 +90,7 @@ var processMeta = async ({
|
|
|
90
90
|
meta,
|
|
91
91
|
metaTableName,
|
|
92
92
|
size,
|
|
93
|
-
logger,
|
|
93
|
+
logger: logger2,
|
|
94
94
|
locationService,
|
|
95
95
|
dynamoDBService
|
|
96
96
|
}) => {
|
|
@@ -109,7 +109,7 @@ var processMeta = async ({
|
|
|
109
109
|
throw Error("Can not resolve geo data");
|
|
110
110
|
}
|
|
111
111
|
} catch (error) {
|
|
112
|
-
|
|
112
|
+
logger2.error("Error fetching geo data", {
|
|
113
113
|
message: error instanceof Error ? error.message : ""
|
|
114
114
|
});
|
|
115
115
|
}
|
|
@@ -131,8 +131,8 @@ var processMeta = async ({
|
|
|
131
131
|
key: "ac:tau:" + tag.key,
|
|
132
132
|
value: tag.value
|
|
133
133
|
}));
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
logger2.debug("metaData", { newTags });
|
|
135
|
+
logger2.debug("trying to read existing metadata");
|
|
136
136
|
const getResponse = await dynamoDBService.getCommand({
|
|
137
137
|
TableName: metaTableName,
|
|
138
138
|
Key: {
|
|
@@ -140,9 +140,9 @@ var processMeta = async ({
|
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
142
|
const oldTags = getResponse.Item?.tags;
|
|
143
|
-
|
|
144
|
-
const reconciledTags = reconcileTags({ newTags, oldTags },
|
|
145
|
-
|
|
143
|
+
logger2.debug("existing tags", { getResponse });
|
|
144
|
+
const reconciledTags = reconcileTags({ newTags, oldTags }, logger2);
|
|
145
|
+
logger2.debug("result", { reconciledTags });
|
|
146
146
|
const updateResponse = await dynamoDBService.updateCommand({
|
|
147
147
|
TableName: metaTableName,
|
|
148
148
|
Key: {
|
|
@@ -154,13 +154,13 @@ var processMeta = async ({
|
|
|
154
154
|
},
|
|
155
155
|
ReturnValues: "ALL_NEW"
|
|
156
156
|
});
|
|
157
|
-
|
|
157
|
+
logger2.debug("sent UpdateCommand", { updateResponse });
|
|
158
158
|
};
|
|
159
|
-
var reconcileTags = ({ oldTags = [], newTags = [] },
|
|
159
|
+
var reconcileTags = ({ oldTags = [], newTags = [] }, logger2) => oldTags.reduce((acc, cur) => {
|
|
160
160
|
if (acc.find((element) => element.key === cur.key)) {
|
|
161
161
|
return acc;
|
|
162
162
|
} else {
|
|
163
|
-
|
|
163
|
+
logger2.debug("added", cur);
|
|
164
164
|
return [...acc, cur];
|
|
165
165
|
}
|
|
166
166
|
}, newTags);
|
|
@@ -202,12 +202,12 @@ var S3Service = class {
|
|
|
202
202
|
logger;
|
|
203
203
|
client;
|
|
204
204
|
constructor({
|
|
205
|
-
logger,
|
|
205
|
+
logger: logger2,
|
|
206
206
|
client,
|
|
207
207
|
assumeRoleCommandOutput,
|
|
208
208
|
region
|
|
209
209
|
}) {
|
|
210
|
-
this.logger =
|
|
210
|
+
this.logger = logger2;
|
|
211
211
|
if (client) {
|
|
212
212
|
this.client = client;
|
|
213
213
|
} else {
|
|
@@ -303,12 +303,12 @@ var DynamoDBService = class {
|
|
|
303
303
|
client;
|
|
304
304
|
documentClient;
|
|
305
305
|
constructor({
|
|
306
|
-
logger,
|
|
306
|
+
logger: logger2,
|
|
307
307
|
client,
|
|
308
308
|
assumeRoleCommandOutput,
|
|
309
309
|
region
|
|
310
310
|
}) {
|
|
311
|
-
this.logger =
|
|
311
|
+
this.logger = logger2;
|
|
312
312
|
if (client) {
|
|
313
313
|
this.client = client;
|
|
314
314
|
} else {
|
|
@@ -353,12 +353,12 @@ var SSMService = class {
|
|
|
353
353
|
logger;
|
|
354
354
|
client;
|
|
355
355
|
constructor({
|
|
356
|
-
logger,
|
|
356
|
+
logger: logger2,
|
|
357
357
|
client,
|
|
358
358
|
assumeRoleCommandOutput,
|
|
359
359
|
region
|
|
360
360
|
}) {
|
|
361
|
-
this.logger =
|
|
361
|
+
this.logger = logger2;
|
|
362
362
|
if (client) {
|
|
363
363
|
this.client = client;
|
|
364
364
|
} else {
|
|
@@ -392,12 +392,12 @@ var SQSService = class {
|
|
|
392
392
|
logger;
|
|
393
393
|
client;
|
|
394
394
|
constructor({
|
|
395
|
-
logger,
|
|
395
|
+
logger: logger2,
|
|
396
396
|
client,
|
|
397
397
|
assumeRoleCommandOutput,
|
|
398
398
|
region
|
|
399
399
|
}) {
|
|
400
|
-
this.logger =
|
|
400
|
+
this.logger = logger2;
|
|
401
401
|
if (client) {
|
|
402
402
|
this.client = client;
|
|
403
403
|
} else {
|
|
@@ -436,12 +436,12 @@ var STSService = class {
|
|
|
436
436
|
logger;
|
|
437
437
|
client;
|
|
438
438
|
constructor({
|
|
439
|
-
logger,
|
|
439
|
+
logger: logger2,
|
|
440
440
|
region,
|
|
441
441
|
client
|
|
442
442
|
}) {
|
|
443
|
-
if (
|
|
444
|
-
this.logger =
|
|
443
|
+
if (logger2) {
|
|
444
|
+
this.logger = logger2;
|
|
445
445
|
} else {
|
|
446
446
|
this.logger = new Logger();
|
|
447
447
|
this.logger.appendKeys({ scope: "STSService" });
|
|
@@ -477,12 +477,12 @@ var LocationService = class {
|
|
|
477
477
|
logger;
|
|
478
478
|
client;
|
|
479
479
|
constructor({
|
|
480
|
-
logger,
|
|
480
|
+
logger: logger2,
|
|
481
481
|
client,
|
|
482
482
|
assumeRoleCommandOutput,
|
|
483
483
|
region
|
|
484
484
|
}) {
|
|
485
|
-
this.logger =
|
|
485
|
+
this.logger = logger2;
|
|
486
486
|
if (client) {
|
|
487
487
|
this.client = client;
|
|
488
488
|
} else {
|
|
@@ -504,9 +504,197 @@ var LocationService = class {
|
|
|
504
504
|
}
|
|
505
505
|
};
|
|
506
506
|
|
|
507
|
-
// src/lambda/
|
|
507
|
+
// src/lambda/index.ts
|
|
508
508
|
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
509
509
|
import { IdempotencyConfig } from "@aws-lambda-powertools/idempotency";
|
|
510
|
+
|
|
511
|
+
// node_modules/@middy/core/index.js
|
|
512
|
+
import { Readable } from "node:stream";
|
|
513
|
+
import { pipeline } from "node:stream/promises";
|
|
514
|
+
import { setTimeout } from "node:timers/promises";
|
|
515
|
+
var defaultLambdaHandler = () => {
|
|
516
|
+
};
|
|
517
|
+
var defaultPlugin = {
|
|
518
|
+
timeoutEarlyInMillis: 5,
|
|
519
|
+
timeoutEarlyResponse: () => {
|
|
520
|
+
throw new Error("Timeout");
|
|
521
|
+
},
|
|
522
|
+
streamifyResponse: false
|
|
523
|
+
// Deprecate need for this when AWS provides a flag for when it's looking for it
|
|
524
|
+
};
|
|
525
|
+
var middy = (lambdaHandler = defaultLambdaHandler, plugin = {}) => {
|
|
526
|
+
if (typeof lambdaHandler !== "function") {
|
|
527
|
+
plugin = lambdaHandler;
|
|
528
|
+
lambdaHandler = defaultLambdaHandler;
|
|
529
|
+
}
|
|
530
|
+
plugin = {
|
|
531
|
+
...defaultPlugin,
|
|
532
|
+
...plugin
|
|
533
|
+
};
|
|
534
|
+
plugin.timeoutEarly = plugin.timeoutEarlyInMillis > 0;
|
|
535
|
+
plugin.beforePrefetch?.();
|
|
536
|
+
const beforeMiddlewares = [];
|
|
537
|
+
const afterMiddlewares = [];
|
|
538
|
+
const onErrorMiddlewares = [];
|
|
539
|
+
const middyHandler = (event = {}, context = {}) => {
|
|
540
|
+
plugin.requestStart?.();
|
|
541
|
+
const request = {
|
|
542
|
+
event,
|
|
543
|
+
context,
|
|
544
|
+
response: void 0,
|
|
545
|
+
error: void 0,
|
|
546
|
+
internal: plugin.internal ?? {}
|
|
547
|
+
};
|
|
548
|
+
return runRequest(request, [
|
|
549
|
+
...beforeMiddlewares
|
|
550
|
+
], lambdaHandler, [
|
|
551
|
+
...afterMiddlewares
|
|
552
|
+
], [
|
|
553
|
+
...onErrorMiddlewares
|
|
554
|
+
], plugin);
|
|
555
|
+
};
|
|
556
|
+
const middy2 = plugin.streamifyResponse ? awslambda.streamifyResponse(async (event, responseStream, context) => {
|
|
557
|
+
const handlerResponse = await middyHandler(event, context);
|
|
558
|
+
let handlerBody = handlerResponse;
|
|
559
|
+
if (handlerResponse.statusCode) {
|
|
560
|
+
handlerBody = handlerResponse.body ?? "";
|
|
561
|
+
responseStream = awslambda.HttpResponseStream.from(responseStream, handlerResponse);
|
|
562
|
+
}
|
|
563
|
+
let handlerStream;
|
|
564
|
+
if (handlerBody._readableState) {
|
|
565
|
+
handlerStream = handlerBody;
|
|
566
|
+
} else if (typeof handlerBody === "string") {
|
|
567
|
+
function* iterator(input) {
|
|
568
|
+
const size = 16384;
|
|
569
|
+
let position = 0;
|
|
570
|
+
const length = input.length;
|
|
571
|
+
while (position < length) {
|
|
572
|
+
yield input.substring(position, position + size);
|
|
573
|
+
position += size;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
handlerStream = Readable.from(iterator(handlerBody));
|
|
577
|
+
}
|
|
578
|
+
if (!handlerStream) {
|
|
579
|
+
throw new Error("handler response not a ReadableStream");
|
|
580
|
+
}
|
|
581
|
+
await pipeline(handlerStream, responseStream);
|
|
582
|
+
}) : middyHandler;
|
|
583
|
+
middy2.use = (middlewares) => {
|
|
584
|
+
if (!Array.isArray(middlewares)) {
|
|
585
|
+
middlewares = [
|
|
586
|
+
middlewares
|
|
587
|
+
];
|
|
588
|
+
}
|
|
589
|
+
for (const middleware of middlewares) {
|
|
590
|
+
const { before, after, onError } = middleware;
|
|
591
|
+
if (!before && !after && !onError) {
|
|
592
|
+
throw new Error('Middleware must be an object containing at least one key among "before", "after", "onError"');
|
|
593
|
+
}
|
|
594
|
+
if (before)
|
|
595
|
+
middy2.before(before);
|
|
596
|
+
if (after)
|
|
597
|
+
middy2.after(after);
|
|
598
|
+
if (onError)
|
|
599
|
+
middy2.onError(onError);
|
|
600
|
+
}
|
|
601
|
+
return middy2;
|
|
602
|
+
};
|
|
603
|
+
middy2.before = (beforeMiddleware) => {
|
|
604
|
+
beforeMiddlewares.push(beforeMiddleware);
|
|
605
|
+
return middy2;
|
|
606
|
+
};
|
|
607
|
+
middy2.after = (afterMiddleware) => {
|
|
608
|
+
afterMiddlewares.unshift(afterMiddleware);
|
|
609
|
+
return middy2;
|
|
610
|
+
};
|
|
611
|
+
middy2.onError = (onErrorMiddleware) => {
|
|
612
|
+
onErrorMiddlewares.unshift(onErrorMiddleware);
|
|
613
|
+
return middy2;
|
|
614
|
+
};
|
|
615
|
+
middy2.handler = (replaceLambdaHandler) => {
|
|
616
|
+
lambdaHandler = replaceLambdaHandler;
|
|
617
|
+
return middy2;
|
|
618
|
+
};
|
|
619
|
+
return middy2;
|
|
620
|
+
};
|
|
621
|
+
var runRequest = async (request, beforeMiddlewares, lambdaHandler, afterMiddlewares, onErrorMiddlewares, plugin) => {
|
|
622
|
+
let timeoutAbort;
|
|
623
|
+
const timeoutEarly = plugin.timeoutEarly && request.context.getRemainingTimeInMillis;
|
|
624
|
+
try {
|
|
625
|
+
await runMiddlewares(request, beforeMiddlewares, plugin);
|
|
626
|
+
if (typeof request.response === "undefined") {
|
|
627
|
+
plugin.beforeHandler?.();
|
|
628
|
+
const handlerAbort = new AbortController();
|
|
629
|
+
if (timeoutEarly)
|
|
630
|
+
timeoutAbort = new AbortController();
|
|
631
|
+
request.response = await Promise.race([
|
|
632
|
+
lambdaHandler(request.event, request.context, {
|
|
633
|
+
signal: handlerAbort.signal
|
|
634
|
+
}),
|
|
635
|
+
timeoutEarly ? setTimeout(request.context.getRemainingTimeInMillis() - plugin.timeoutEarlyInMillis, void 0, {
|
|
636
|
+
signal: timeoutAbort.signal
|
|
637
|
+
}).then(() => {
|
|
638
|
+
handlerAbort.abort();
|
|
639
|
+
return plugin.timeoutEarlyResponse();
|
|
640
|
+
}) : Promise.race([])
|
|
641
|
+
]);
|
|
642
|
+
timeoutAbort?.abort();
|
|
643
|
+
plugin.afterHandler?.();
|
|
644
|
+
await runMiddlewares(request, afterMiddlewares, plugin);
|
|
645
|
+
}
|
|
646
|
+
} catch (e) {
|
|
647
|
+
timeoutAbort?.abort();
|
|
648
|
+
request.response = void 0;
|
|
649
|
+
request.error = e;
|
|
650
|
+
try {
|
|
651
|
+
await runMiddlewares(request, onErrorMiddlewares, plugin);
|
|
652
|
+
} catch (e2) {
|
|
653
|
+
e2.originalError = request.error;
|
|
654
|
+
request.error = e2;
|
|
655
|
+
throw request.error;
|
|
656
|
+
}
|
|
657
|
+
if (typeof request.response === "undefined")
|
|
658
|
+
throw request.error;
|
|
659
|
+
} finally {
|
|
660
|
+
await plugin.requestEnd?.(request);
|
|
661
|
+
}
|
|
662
|
+
return request.response;
|
|
663
|
+
};
|
|
664
|
+
var runMiddlewares = async (request, middlewares, plugin) => {
|
|
665
|
+
for (const nextMiddleware of middlewares) {
|
|
666
|
+
plugin.beforeMiddleware?.(nextMiddleware.name);
|
|
667
|
+
const res = await nextMiddleware(request);
|
|
668
|
+
plugin.afterMiddleware?.(nextMiddleware.name);
|
|
669
|
+
if (typeof res !== "undefined") {
|
|
670
|
+
request.response = res;
|
|
671
|
+
return;
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
var core_default = middy;
|
|
676
|
+
|
|
677
|
+
// src/lambda/index.ts
|
|
678
|
+
import { Logger as Logger2 } from "@aws-lambda-powertools/logger";
|
|
679
|
+
import { Tracer } from "@aws-lambda-powertools/tracer";
|
|
680
|
+
import { Metrics } from "@aws-lambda-powertools/metrics";
|
|
681
|
+
import { injectLambdaContext } from "@aws-lambda-powertools/logger/middleware";
|
|
682
|
+
import { captureLambdaHandler } from "@aws-lambda-powertools/tracer/middleware";
|
|
683
|
+
import { logMetrics } from "@aws-lambda-powertools/metrics/middleware";
|
|
684
|
+
var withMiddlewares = (handler) => core_default(handler).use(injectLambdaContext(logger)).use(captureLambdaHandler(tracer)).use(logMetrics(metrics)).use({
|
|
685
|
+
before: async (request) => {
|
|
686
|
+
logger.setCorrelationId(
|
|
687
|
+
request.context.awsRequestId || "no-aws-request-id"
|
|
688
|
+
);
|
|
689
|
+
logger.logEventIfEnabled(request.event);
|
|
690
|
+
request.context.logger = logger;
|
|
691
|
+
request.context.tracer = tracer;
|
|
692
|
+
request.context.metrics = metrics;
|
|
693
|
+
}
|
|
694
|
+
});
|
|
695
|
+
var logger = new Logger2();
|
|
696
|
+
var tracer = new Tracer();
|
|
697
|
+
var metrics = new Metrics();
|
|
510
698
|
var getPersistenceStore = () => {
|
|
511
699
|
return new DynamoDBPersistenceLayer({
|
|
512
700
|
tableName: assertEnvVar("AC_IDEMPOTENCY_TABLE_NAME")
|
|
@@ -549,7 +737,11 @@ export {
|
|
|
549
737
|
getThumbsKey,
|
|
550
738
|
isAllowedExtension,
|
|
551
739
|
isAllowedVideoExtension,
|
|
740
|
+
logger,
|
|
741
|
+
metrics,
|
|
552
742
|
normalizeErrorMessage,
|
|
553
|
-
processMeta
|
|
743
|
+
processMeta,
|
|
744
|
+
tracer,
|
|
745
|
+
withMiddlewares
|
|
554
746
|
};
|
|
555
747
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/services/s3.ts", "../src/utils/assertUtils.ts", "../src/utils/normalizeErrorMessage.ts", "../src/utils/thumbsKey.ts", "../src/utils/helpers.ts", "../src/utils/processMeta.ts", "../src/services/dynamoDB.ts", "../src/services/ssm.ts", "../src/services/sqs.ts", "../src/services/sts.ts", "../src/services/location.ts", "../src/lambda/
|
|
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 assert from \"node:assert/strict\";\nimport { PassThrough } from \"node:stream\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { getSignedUrl } from \"@aws-sdk/s3-request-presigner\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class S3Service {\n logger: Logger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\", { putObjectCommandInput });\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\", { getObjectCommandInput });\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 this.logger.debug(\"listObjectsV2\", { listObjectsV2CommandInput });\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n this.logger.debug(\"getObject\", { getObjectCommandInput });\n\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async getSignedUrl(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<string> {\n this.logger.debug(\"getSignedUrl\", { getObjectCommandInput });\n\n const signedUrl = await getSignedUrl(\n this.client,\n new GetObjectCommand(getObjectCommandInput),\n { expiresIn: 3600 }\n );\n\n return signedUrl;\n }\n\n async putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n this.logger.debug(\"putObject\", { putObjectCommandInput });\n\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n this.logger.debug(\"headObject\", { headObjectCommandInput });\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n this.logger.debug(\"checkIfObjectExists\", { headObjectCommandInput });\n\n try {\n await this.headObject(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", "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 MOV_EXTENSION = \"mov\";\nexport const THUMBS_EXTENSION = JPG_EXTENSION;\nexport const ENCODED_VIDEO_EXTENSION = \"mp4\";\nexport const ALLOWED_EXTENSIONS = [\n JPEG_EXTENSION,\n JPG_EXTENSION,\n HEIC_EXTENSION\n];\nexport const ALLOWED_VIDEO_EXTENSIONS = [MOV_EXTENSION];\n\nexport const THUMBNAIL_RESOLUTIONS = [\n [200, 200],\n [1180, 820]\n];\n\nexport const getThumbsKey = ({\n key,\n width,\n height\n}: {\n key: string;\n width: number;\n height: number;\n}) => {\n return `${key\n .split(\".\")\n .slice(0, -1)\n .join(\".\")}.${width}x${height}.${THUMBS_EXTENSION}`;\n};\n\nexport const getEncodedVideoKey = ({ key }: { key: string }) => {\n return `${key.split(\".\").slice(0, -1).join(\".\")}.${ENCODED_VIDEO_EXTENSION}`;\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\nexport const isAllowedVideoExtension = (key: string) => {\n const ext = getKeyExtension(key);\n return ALLOWED_VIDEO_EXTENSIONS.includes(ext);\n};\n", "import { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\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) =>\n error && error instanceof Error ? { stack: error.stack } : {};\n", "import { DynamoDBService, LocationService } from \"../services/index.js\";\nimport type { SearchForPositionResult } from \"@aws-sdk/client-location\";\nimport assert from \"node:assert/strict\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { getKeyExtension } from \"./thumbsKey.js\";\n\ntype ExtractMetadataParams = {\n id: string;\n meta: Array<{ key: string; value: string }>;\n logger: Logger;\n locationService: LocationService;\n dynamoDBService: DynamoDBService;\n metaTableName: string;\n size: number;\n};\n\ntype Tag = { key: string; value: string };\n\n/**\n * 1. read <id>\n * 2. if <id> doesn't exist then use PutCommand\n * 3. if it does exist then match new tags and old tags\n * 4. add all old tags that are not present in new tags,\n *\n */\nexport const processMeta = async ({\n id,\n meta,\n metaTableName,\n size,\n logger,\n locationService,\n dynamoDBService\n}: ExtractMetadataParams) => {\n // expand location data\n const latitude = Number(meta.find((tag) => tag.key === \"latitude\")?.value);\n const longitude = Number(meta.find((tag) => tag.key === \"longitude\")?.value);\n\n let geoPositionResult: SearchForPositionResult | undefined;\n if (!Number.isNaN(longitude) && !Number.isNaN(latitude)) {\n try {\n const res = await locationService.searchPlaceIndexForPositionCommand({\n IndexName: \"TauPlaceIndex\",\n Position: [longitude, latitude]\n });\n\n if (res?.Results && res?.Results?.length > 0) {\n geoPositionResult = res?.Results[0];\n } else {\n throw Error(\"Can not resolve geo data\");\n }\n } catch (error) {\n logger.error(\"Error fetching geo data\", {\n message: error instanceof Error ? error.message : \"\"\n });\n }\n }\n\n const newTags = [\n ...meta,\n ...(meta.find((tag) => tag.key === \"dateCreated\")\n ? []\n : extractMetaFromKey(id)),\n { key: \"extension\", value: getKeyExtension(id) },\n { key: \"size\", value: String(size) },\n { key: \"sizeMb\", value: String(Math.round(size / 1024 ** 2)) },\n ...(geoPositionResult?.Place?.Label\n ? [{ key: \"label\", value: geoPositionResult?.Place?.Label }]\n : []),\n ...(geoPositionResult?.Place?.Country\n ? [{ key: \"country\", value: geoPositionResult?.Place?.Country }]\n : []),\n ...(geoPositionResult?.Place?.Region\n ? [{ key: \"region\", value: geoPositionResult?.Place?.Region }]\n : []),\n ...(geoPositionResult?.Place?.SubRegion\n ? [{ key: \"subRegion\", value: geoPositionResult?.Place?.SubRegion }]\n : []),\n ...(geoPositionResult?.Place?.Municipality\n ? [{ key: \"municipality\", value: geoPositionResult?.Place?.Municipality }]\n : []),\n ...(geoPositionResult?.Place?.Neighborhood\n ? [{ key: \"neighborhood\", value: geoPositionResult?.Place?.Neighborhood }]\n : []),\n ...(geoPositionResult?.Place?.PostalCode\n ? [{ key: \"postalCode\", value: geoPositionResult?.Place?.PostalCode }]\n : [])\n ].map((tag) => ({\n key: \"ac:tau:\" + tag.key,\n value: tag.value\n }));\n\n logger.debug(\"metaData\", { newTags });\n\n logger.debug(\"trying to read existing metadata\");\n const getResponse = await dynamoDBService.getCommand({\n TableName: metaTableName,\n Key: {\n id\n }\n });\n const oldTags: Tag[] = getResponse.Item?.tags;\n logger.debug(\"existing tags\", { getResponse });\n\n const reconciledTags = reconcileTags({ newTags, oldTags }, logger);\n logger.debug(\"result\", { reconciledTags });\n\n const updateResponse = await dynamoDBService.updateCommand({\n TableName: metaTableName,\n Key: {\n id\n },\n UpdateExpression: \"set tags = :tags\",\n ExpressionAttributeValues: {\n \":tags\": reconciledTags\n },\n ReturnValues: \"ALL_NEW\"\n });\n\n logger.debug(\"sent UpdateCommand\", { updateResponse });\n};\n\nconst reconcileTags = (\n { oldTags = [], newTags = [] }: { newTags: Tag[]; oldTags: Tag[] },\n logger: Logger\n) =>\n oldTags.reduce((acc, cur) => {\n if (acc.find((element) => element.key === cur.key)) {\n return acc;\n } else {\n logger.debug(\"added\", cur);\n\n return [...acc, cur];\n }\n }, newTags);\n\nconst SUBSTRING_ANSI_DATES_BEGIN_WITH = \"20\";\n\nconst extractMetaFromKey = (key: string | undefined | null): Array<Tag> => {\n if (!key) return [];\n\n let firstToken: string | undefined = undefined;\n try {\n const folder = key.split(\"/\").at(-2);\n assert(typeof folder === \"string\");\n firstToken = folder.split(\".\")[0];\n } catch (error) {}\n\n if (\n firstToken === undefined ||\n firstToken.length !== 8 ||\n !firstToken.startsWith(SUBSTRING_ANSI_DATES_BEGIN_WITH)\n )\n return [];\n\n const year = Number(firstToken.substring(0, 4));\n const month = Number(firstToken.substring(4, 6)) - 1;\n const day = Number(firstToken.substring(6));\n\n if (isNaN(year) || isNaN(month) || isNaN(day)) return [];\n\n // mon starts from 0\n // day starts from 1\n if (year < 2000 || month < 1 || month > 11 || day < 1 || day > 31) return [];\n\n const dateCreatedBin = new Date(year, month, day);\n\n return [\n { key: \"dateCreated\", value: dateCreatedBin.toISOString() },\n { key: \"yearCreated\", value: dateCreatedBin.getFullYear().toString() },\n { key: \"dayCreated\", value: dateCreatedBin.getDate().toString() },\n {\n key: \"monthCreated\",\n value: (dateCreatedBin.getMonth() + 1).toString()\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 assert from \"node:assert/strict\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class DynamoDBService {\n logger: Logger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class SSMService {\n logger: Logger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 assert from \"node:assert/strict\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class SQSService {\n logger: Logger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class STSService {\n logger: Logger;\n client: STSClient;\n\n constructor({\n logger,\n region,\n client\n }: {\n logger: Logger;\n region?: string;\n client?: STSClient;\n }) {\n if (logger) {\n this.logger = logger;\n } else {\n this.logger = new Logger();\n this.logger.appendKeys({ scope: \"STSService\" });\n }\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 });\n }\n }\n\n async getCallerIdentity() {\n this.logger.debug(\"getCallerIdentity\");\n\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n this.logger.debug(\"assumeRole\", { assumeRoleCommandInput });\n\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 { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class LocationService {\n logger: Logger;\n client: LocationClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { IdempotencyConfig } from \"@aws-lambda-powertools/idempotency\";\nimport {\n DynamoDBService,\n LocationService,\n S3Service,\n SQSService,\n SSMService,\n STSService\n} from \"../services/index.js\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport const getIdempotencyConfig = (eventKeyJmesPath: string) => {\n return new IdempotencyConfig({\n eventKeyJmesPath\n });\n};\n\nexport const SQS_IDEMPOTENCY_OPTIONS = {\n persistenceStore: getPersistenceStore(),\n config: getIdempotencyConfig(\"messageId\")\n};\n\nexport type AcServicesContext = {\n dynamoDBService?: DynamoDBService;\n locationService?: LocationService;\n s3Service?: S3Service;\n sqsService?: SQSService;\n ssmService?: SSMService;\n stsService?: STSService;\n sourceS3Service?: S3Service;\n destinationS3Service?: S3Service;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert"]
|
|
3
|
+
"sources": ["../src/services/s3.ts", "../src/utils/assertUtils.ts", "../src/utils/normalizeErrorMessage.ts", "../src/utils/thumbsKey.ts", "../src/utils/helpers.ts", "../src/utils/processMeta.ts", "../src/services/dynamoDB.ts", "../src/services/ssm.ts", "../src/services/sqs.ts", "../src/services/sts.ts", "../src/services/location.ts", "../src/lambda/index.ts", "../node_modules/@middy/core/index.js"],
|
|
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 assert from \"node:assert/strict\";\nimport { PassThrough } from \"node:stream\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { getSignedUrl } from \"@aws-sdk/s3-request-presigner\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class S3Service {\n logger: Logger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...getObjectWithAssumeRoleCommandOutputAttribute(\n assumeRoleCommandOutput\n )\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\", { putObjectCommandInput });\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\", { getObjectCommandInput });\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 this.logger.debug(\"listObjectsV2\", { listObjectsV2CommandInput });\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n this.logger.debug(\"getObject\", { getObjectCommandInput });\n\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async getSignedUrl(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<string> {\n this.logger.debug(\"getSignedUrl\", { getObjectCommandInput });\n\n const signedUrl = await getSignedUrl(\n this.client,\n new GetObjectCommand(getObjectCommandInput),\n { expiresIn: 3600 }\n );\n\n return signedUrl;\n }\n\n async putObject(\n putObjectCommandInput: PutObjectCommandInput\n ): Promise<PutObjectCommandOutput> {\n this.logger.debug(\"putObject\", { putObjectCommandInput });\n\n return await this.client.send(new PutObjectCommand(putObjectCommandInput));\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n this.logger.debug(\"headObject\", { headObjectCommandInput });\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n this.logger.debug(\"checkIfObjectExists\", { headObjectCommandInput });\n\n try {\n await this.headObject(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", "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 MOV_EXTENSION = \"mov\";\nexport const THUMBS_EXTENSION = JPG_EXTENSION;\nexport const ENCODED_VIDEO_EXTENSION = \"mp4\";\nexport const ALLOWED_EXTENSIONS = [\n JPEG_EXTENSION,\n JPG_EXTENSION,\n HEIC_EXTENSION\n];\nexport const ALLOWED_VIDEO_EXTENSIONS = [MOV_EXTENSION];\n\nexport const THUMBNAIL_RESOLUTIONS = [\n [200, 200],\n [1180, 820]\n];\n\nexport const getThumbsKey = ({\n key,\n width,\n height\n}: {\n key: string;\n width: number;\n height: number;\n}) => {\n return `${key\n .split(\".\")\n .slice(0, -1)\n .join(\".\")}.${width}x${height}.${THUMBS_EXTENSION}`;\n};\n\nexport const getEncodedVideoKey = ({ key }: { key: string }) => {\n return `${key.split(\".\").slice(0, -1).join(\".\")}.${ENCODED_VIDEO_EXTENSION}`;\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\nexport const isAllowedVideoExtension = (key: string) => {\n const ext = getKeyExtension(key);\n return ALLOWED_VIDEO_EXTENSIONS.includes(ext);\n};\n", "import { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\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) =>\n error && error instanceof Error ? { stack: error.stack } : {};\n", "import { DynamoDBService, LocationService } from \"../services/index.js\";\nimport type { SearchForPositionResult } from \"@aws-sdk/client-location\";\nimport assert from \"node:assert/strict\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { getKeyExtension } from \"./thumbsKey.js\";\n\ntype ExtractMetadataParams = {\n id: string;\n meta: Array<{ key: string; value: string }>;\n logger: Logger;\n locationService: LocationService;\n dynamoDBService: DynamoDBService;\n metaTableName: string;\n size: number;\n};\n\ntype Tag = { key: string; value: string };\n\n/**\n * 1. read <id>\n * 2. if <id> doesn't exist then use PutCommand\n * 3. if it does exist then match new tags and old tags\n * 4. add all old tags that are not present in new tags,\n *\n */\nexport const processMeta = async ({\n id,\n meta,\n metaTableName,\n size,\n logger,\n locationService,\n dynamoDBService\n}: ExtractMetadataParams) => {\n // expand location data\n const latitude = Number(meta.find((tag) => tag.key === \"latitude\")?.value);\n const longitude = Number(meta.find((tag) => tag.key === \"longitude\")?.value);\n\n let geoPositionResult: SearchForPositionResult | undefined;\n if (!Number.isNaN(longitude) && !Number.isNaN(latitude)) {\n try {\n const res = await locationService.searchPlaceIndexForPositionCommand({\n IndexName: \"TauPlaceIndex\",\n Position: [longitude, latitude]\n });\n\n if (res?.Results && res?.Results?.length > 0) {\n geoPositionResult = res?.Results[0];\n } else {\n throw Error(\"Can not resolve geo data\");\n }\n } catch (error) {\n logger.error(\"Error fetching geo data\", {\n message: error instanceof Error ? error.message : \"\"\n });\n }\n }\n\n const newTags = [\n ...meta,\n ...(meta.find((tag) => tag.key === \"dateCreated\")\n ? []\n : extractMetaFromKey(id)),\n { key: \"extension\", value: getKeyExtension(id) },\n { key: \"size\", value: String(size) },\n { key: \"sizeMb\", value: String(Math.round(size / 1024 ** 2)) },\n ...(geoPositionResult?.Place?.Label\n ? [{ key: \"label\", value: geoPositionResult?.Place?.Label }]\n : []),\n ...(geoPositionResult?.Place?.Country\n ? [{ key: \"country\", value: geoPositionResult?.Place?.Country }]\n : []),\n ...(geoPositionResult?.Place?.Region\n ? [{ key: \"region\", value: geoPositionResult?.Place?.Region }]\n : []),\n ...(geoPositionResult?.Place?.SubRegion\n ? [{ key: \"subRegion\", value: geoPositionResult?.Place?.SubRegion }]\n : []),\n ...(geoPositionResult?.Place?.Municipality\n ? [{ key: \"municipality\", value: geoPositionResult?.Place?.Municipality }]\n : []),\n ...(geoPositionResult?.Place?.Neighborhood\n ? [{ key: \"neighborhood\", value: geoPositionResult?.Place?.Neighborhood }]\n : []),\n ...(geoPositionResult?.Place?.PostalCode\n ? [{ key: \"postalCode\", value: geoPositionResult?.Place?.PostalCode }]\n : [])\n ].map((tag) => ({\n key: \"ac:tau:\" + tag.key,\n value: tag.value\n }));\n\n logger.debug(\"metaData\", { newTags });\n\n logger.debug(\"trying to read existing metadata\");\n const getResponse = await dynamoDBService.getCommand({\n TableName: metaTableName,\n Key: {\n id\n }\n });\n const oldTags: Tag[] = getResponse.Item?.tags;\n logger.debug(\"existing tags\", { getResponse });\n\n const reconciledTags = reconcileTags({ newTags, oldTags }, logger);\n logger.debug(\"result\", { reconciledTags });\n\n const updateResponse = await dynamoDBService.updateCommand({\n TableName: metaTableName,\n Key: {\n id\n },\n UpdateExpression: \"set tags = :tags\",\n ExpressionAttributeValues: {\n \":tags\": reconciledTags\n },\n ReturnValues: \"ALL_NEW\"\n });\n\n logger.debug(\"sent UpdateCommand\", { updateResponse });\n};\n\nconst reconcileTags = (\n { oldTags = [], newTags = [] }: { newTags: Tag[]; oldTags: Tag[] },\n logger: Logger\n) =>\n oldTags.reduce((acc, cur) => {\n if (acc.find((element) => element.key === cur.key)) {\n return acc;\n } else {\n logger.debug(\"added\", cur);\n\n return [...acc, cur];\n }\n }, newTags);\n\nconst SUBSTRING_ANSI_DATES_BEGIN_WITH = \"20\";\n\nconst extractMetaFromKey = (key: string | undefined | null): Array<Tag> => {\n if (!key) return [];\n\n let firstToken: string | undefined = undefined;\n try {\n const folder = key.split(\"/\").at(-2);\n assert(typeof folder === \"string\");\n firstToken = folder.split(\".\")[0];\n } catch (error) {}\n\n if (\n firstToken === undefined ||\n firstToken.length !== 8 ||\n !firstToken.startsWith(SUBSTRING_ANSI_DATES_BEGIN_WITH)\n )\n return [];\n\n const year = Number(firstToken.substring(0, 4));\n const month = Number(firstToken.substring(4, 6)) - 1;\n const day = Number(firstToken.substring(6));\n\n if (isNaN(year) || isNaN(month) || isNaN(day)) return [];\n\n // mon starts from 0\n // day starts from 1\n if (year < 2000 || month < 1 || month > 11 || day < 1 || day > 31) return [];\n\n const dateCreatedBin = new Date(year, month, day);\n\n return [\n { key: \"dateCreated\", value: dateCreatedBin.toISOString() },\n { key: \"yearCreated\", value: dateCreatedBin.getFullYear().toString() },\n { key: \"dayCreated\", value: dateCreatedBin.getDate().toString() },\n {\n key: \"monthCreated\",\n value: (dateCreatedBin.getMonth() + 1).toString()\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 assert from \"node:assert/strict\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class DynamoDBService {\n logger: Logger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class SSMService {\n logger: Logger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 assert from \"node:assert/strict\";\nimport { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class SQSService {\n logger: Logger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class STSService {\n logger: Logger;\n client: STSClient;\n\n constructor({\n logger,\n region,\n client\n }: {\n logger: Logger;\n region?: string;\n client?: STSClient;\n }) {\n if (logger) {\n this.logger = logger;\n } else {\n this.logger = new Logger();\n this.logger.appendKeys({ scope: \"STSService\" });\n }\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 });\n }\n }\n\n async getCallerIdentity() {\n this.logger.debug(\"getCallerIdentity\");\n\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n this.logger.debug(\"assumeRole\", { assumeRoleCommandInput });\n\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 { getObjectWithAssumeRoleCommandOutputAttribute } from \"../utils/index.js\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport class LocationService {\n logger: Logger;\n client: LocationClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger: Logger;\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 ...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 { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { IdempotencyConfig } from \"@aws-lambda-powertools/idempotency\";\nimport {\n DynamoDBService,\n LocationService,\n S3Service,\n SQSService,\n SSMService,\n STSService\n} from \"../services/index.js\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport middy from \"@middy/core\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport type { Context } from \"aws-lambda\";\nimport { injectLambdaContext } from \"@aws-lambda-powertools/logger/middleware\";\nimport { captureLambdaHandler } from \"@aws-lambda-powertools/tracer/middleware\";\nimport { logMetrics } from \"@aws-lambda-powertools/metrics/middleware\";\n\nexport const withMiddlewares = (handler: middy.MiddyfiedHandler) =>\n middy(handler)\n .use(injectLambdaContext(logger))\n .use(captureLambdaHandler(tracer))\n .use(logMetrics(metrics))\n .use({\n before: async (request) => {\n logger.setCorrelationId(\n request.context.awsRequestId || \"no-aws-request-id\"\n );\n logger.logEventIfEnabled(request.event);\n\n request.context.logger = logger;\n request.context.tracer = tracer;\n request.context.metrics = metrics;\n }\n });\n\nexport const logger = new Logger();\n\nexport const tracer = new Tracer();\n\nexport const metrics = new Metrics();\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport const getIdempotencyConfig = (eventKeyJmesPath: string) => {\n return new IdempotencyConfig({\n eventKeyJmesPath\n });\n};\n\nexport const SQS_IDEMPOTENCY_OPTIONS = {\n persistenceStore: getPersistenceStore(),\n config: getIdempotencyConfig(\"messageId\")\n};\n\nexport type AcServicesContext = {\n dynamoDBService?: DynamoDBService;\n locationService?: LocationService;\n s3Service?: S3Service;\n sqsService?: SQSService;\n ssmService?: SSMService;\n stsService?: STSService;\n sourceS3Service?: S3Service;\n destinationS3Service?: S3Service;\n};\n\ndeclare module \"@middy/core\" {\n interface MiddyRequest<\n TEvent = unknown,\n TResult = unknown,\n TContext extends Context = Context\n > {\n context: TContext & {\n logger: Logger;\n tracer: Tracer;\n metrics: Metrics;\n };\n }\n}\n", "/* global awslambda */ import { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { setTimeout } from 'node:timers/promises';\nconst defaultLambdaHandler = ()=>{};\nconst defaultPlugin = {\n timeoutEarlyInMillis: 5,\n timeoutEarlyResponse: ()=>{\n throw new Error('Timeout');\n },\n streamifyResponse: false // Deprecate need for this when AWS provides a flag for when it's looking for it\n};\nconst middy = (lambdaHandler = defaultLambdaHandler, plugin = {})=>{\n // Allow base handler to be set using .handler()\n if (typeof lambdaHandler !== 'function') {\n plugin = lambdaHandler;\n lambdaHandler = defaultLambdaHandler;\n }\n plugin = {\n ...defaultPlugin,\n ...plugin\n };\n plugin.timeoutEarly = plugin.timeoutEarlyInMillis > 0;\n plugin.beforePrefetch?.();\n const beforeMiddlewares = [];\n const afterMiddlewares = [];\n const onErrorMiddlewares = [];\n const middyHandler = (event = {}, context = {})=>{\n plugin.requestStart?.();\n const request = {\n event,\n context,\n response: undefined,\n error: undefined,\n internal: plugin.internal ?? {}\n };\n return runRequest(request, [\n ...beforeMiddlewares\n ], lambdaHandler, [\n ...afterMiddlewares\n ], [\n ...onErrorMiddlewares\n ], plugin);\n };\n const middy = plugin.streamifyResponse ? awslambda.streamifyResponse(async (event, responseStream, context)=>{\n const handlerResponse = await middyHandler(event, context);\n let handlerBody = handlerResponse;\n if (handlerResponse.statusCode) {\n handlerBody = handlerResponse.body ?? '';\n responseStream = awslambda.HttpResponseStream.from(responseStream, handlerResponse);\n }\n // Source @datastream/core (MIT)\n let handlerStream;\n if (handlerBody._readableState) {\n handlerStream = handlerBody;\n } else if (typeof handlerBody === 'string') {\n function* iterator(input) {\n const size = 16384 // 16 * 1024 // Node.js default\n ;\n let position = 0;\n const length = input.length;\n while(position < length){\n yield input.substring(position, position + size);\n position += size;\n }\n }\n handlerStream = Readable.from(iterator(handlerBody));\n }\n if (!handlerStream) {\n throw new Error('handler response not a ReadableStream');\n }\n await pipeline(handlerStream, responseStream);\n }) : middyHandler;\n middy.use = (middlewares)=>{\n if (!Array.isArray(middlewares)) {\n middlewares = [\n middlewares\n ];\n }\n for (const middleware of middlewares){\n const { before, after, onError } = middleware;\n if (!before && !after && !onError) {\n throw new Error('Middleware must be an object containing at least one key among \"before\", \"after\", \"onError\"');\n }\n if (before) middy.before(before);\n if (after) middy.after(after);\n if (onError) middy.onError(onError);\n }\n return middy;\n };\n // Inline Middlewares\n middy.before = (beforeMiddleware)=>{\n beforeMiddlewares.push(beforeMiddleware);\n return middy;\n };\n middy.after = (afterMiddleware)=>{\n afterMiddlewares.unshift(afterMiddleware);\n return middy;\n };\n middy.onError = (onErrorMiddleware)=>{\n onErrorMiddlewares.unshift(onErrorMiddleware);\n return middy;\n };\n middy.handler = (replaceLambdaHandler)=>{\n lambdaHandler = replaceLambdaHandler;\n return middy;\n };\n return middy;\n};\nconst runRequest = async (request, beforeMiddlewares, lambdaHandler, afterMiddlewares, onErrorMiddlewares, plugin)=>{\n let timeoutAbort;\n const timeoutEarly = plugin.timeoutEarly && request.context.getRemainingTimeInMillis // disable when AWS context missing (tests, containers)\n ;\n try {\n await runMiddlewares(request, beforeMiddlewares, plugin);\n // Check if before stack hasn't exit early\n if (typeof request.response === 'undefined') {\n plugin.beforeHandler?.();\n const handlerAbort = new AbortController();\n if (timeoutEarly) timeoutAbort = new AbortController();\n request.response = await Promise.race([\n lambdaHandler(request.event, request.context, {\n signal: handlerAbort.signal\n }),\n timeoutEarly ? setTimeout(request.context.getRemainingTimeInMillis() - plugin.timeoutEarlyInMillis, undefined, {\n signal: timeoutAbort.signal\n }).then(()=>{\n handlerAbort.abort();\n return plugin.timeoutEarlyResponse();\n }) : Promise.race([])\n ]);\n timeoutAbort?.abort() // lambdaHandler may not be a promise\n ;\n plugin.afterHandler?.();\n await runMiddlewares(request, afterMiddlewares, plugin);\n }\n } catch (e) {\n timeoutAbort?.abort() // timeout should be aborted on errors\n ;\n // Reset response changes made by after stack before error thrown\n request.response = undefined;\n request.error = e;\n try {\n await runMiddlewares(request, onErrorMiddlewares, plugin);\n } catch (e) {\n // Save error that wasn't handled\n e.originalError = request.error;\n request.error = e;\n throw request.error;\n }\n // Catch if onError stack hasn't handled the error\n if (typeof request.response === 'undefined') throw request.error;\n } finally{\n await plugin.requestEnd?.(request);\n }\n return request.response;\n};\nconst runMiddlewares = async (request, middlewares, plugin)=>{\n for (const nextMiddleware of middlewares){\n plugin.beforeMiddleware?.(nextMiddleware.name);\n const res = await nextMiddleware(request);\n plugin.afterMiddleware?.(nextMiddleware.name);\n // short circuit chaining and respond early\n if (typeof res !== 'undefined') {\n request.response = res;\n return;\n }\n }\n};\nexport default middy;\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["assert", "assert", "logger", "assert", "logger", "assert", "assert", "logger", "assert", "assert", "logger", "assert", "assert", "logger", "assert", "assert", "logger", "assert", "logger", "assert", "middy", "e", "Logger"]
|
|
7
7
|
}
|
package/lib/lambda/index.d.ts
CHANGED
|
@@ -1 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
2
|
+
import { IdempotencyConfig } from "@aws-lambda-powertools/idempotency";
|
|
3
|
+
import { DynamoDBService, LocationService, S3Service, SQSService, SSMService, STSService } from "../services/index.js";
|
|
4
|
+
import middy from "@middy/core";
|
|
5
|
+
import { Logger } from "@aws-lambda-powertools/logger";
|
|
6
|
+
import { Tracer } from "@aws-lambda-powertools/tracer";
|
|
7
|
+
import { Metrics } from "@aws-lambda-powertools/metrics";
|
|
8
|
+
import type { Context } from "aws-lambda";
|
|
9
|
+
export declare const withMiddlewares: (handler: middy.MiddyfiedHandler) => middy.MiddyfiedHandler<any, any, Error, any>;
|
|
10
|
+
export declare const logger: Logger;
|
|
11
|
+
export declare const tracer: Tracer;
|
|
12
|
+
export declare const metrics: Metrics;
|
|
13
|
+
export declare const getPersistenceStore: () => DynamoDBPersistenceLayer;
|
|
14
|
+
export declare const getIdempotencyConfig: (eventKeyJmesPath: string) => IdempotencyConfig;
|
|
15
|
+
export declare const SQS_IDEMPOTENCY_OPTIONS: {
|
|
16
|
+
persistenceStore: DynamoDBPersistenceLayer;
|
|
17
|
+
config: IdempotencyConfig;
|
|
18
|
+
};
|
|
19
|
+
export type AcServicesContext = {
|
|
20
|
+
dynamoDBService?: DynamoDBService;
|
|
21
|
+
locationService?: LocationService;
|
|
22
|
+
s3Service?: S3Service;
|
|
23
|
+
sqsService?: SQSService;
|
|
24
|
+
ssmService?: SSMService;
|
|
25
|
+
stsService?: STSService;
|
|
26
|
+
sourceS3Service?: S3Service;
|
|
27
|
+
destinationS3Service?: S3Service;
|
|
28
|
+
};
|
|
29
|
+
declare module "@middy/core" {
|
|
30
|
+
interface MiddyRequest<TEvent = unknown, TResult = unknown, TContext extends Context = Context> {
|
|
31
|
+
context: TContext & {
|
|
32
|
+
logger: Logger;
|
|
33
|
+
tracer: Tracer;
|
|
34
|
+
metrics: Metrics;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Metrics } from "@aws-lambda-powertools/metrics";
|
|
2
|
-
import { Tracer } from "@aws-lambda-powertools/tracer";
|
|
3
|
-
import { Logger } from "@aws-lambda-powertools/logger";
|
|
4
|
-
export declare const logger: Logger;
|
|
5
|
-
export declare const tracer: Tracer;
|
|
6
|
-
export declare const metrics: Metrics;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
2
|
-
import { IdempotencyConfig } from "@aws-lambda-powertools/idempotency";
|
|
3
|
-
import { DynamoDBService, LocationService, S3Service, SQSService, SSMService, STSService } from "../services/index.js";
|
|
4
|
-
export declare const getPersistenceStore: () => DynamoDBPersistenceLayer;
|
|
5
|
-
export declare const getIdempotencyConfig: (eventKeyJmesPath: string) => IdempotencyConfig;
|
|
6
|
-
export declare const SQS_IDEMPOTENCY_OPTIONS: {
|
|
7
|
-
persistenceStore: DynamoDBPersistenceLayer;
|
|
8
|
-
config: IdempotencyConfig;
|
|
9
|
-
};
|
|
10
|
-
export type AcServicesContext = {
|
|
11
|
-
dynamoDBService?: DynamoDBService;
|
|
12
|
-
locationService?: LocationService;
|
|
13
|
-
s3Service?: S3Service;
|
|
14
|
-
sqsService?: SQSService;
|
|
15
|
-
ssmService?: SSMService;
|
|
16
|
-
stsService?: STSService;
|
|
17
|
-
sourceS3Service?: S3Service;
|
|
18
|
-
destinationS3Service?: S3Service;
|
|
19
|
-
};
|