@aspan-corporation/ac-shared 1.1.11 → 1.1.13
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 +24 -39
- package/lib/index.js.map +2 -2
- package/lib/lambda/plumbingMiddleware.d.ts +3 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -511,17 +511,7 @@ var LocationService = class {
|
|
|
511
511
|
|
|
512
512
|
// src/lambda/plumbingMiddleware.ts
|
|
513
513
|
import assert9 from "node:assert";
|
|
514
|
-
var plumbingMiddleware = ({
|
|
515
|
-
logger,
|
|
516
|
-
metrics,
|
|
517
|
-
tracer,
|
|
518
|
-
dynamoDBService,
|
|
519
|
-
locationService,
|
|
520
|
-
s3Service,
|
|
521
|
-
sqsService,
|
|
522
|
-
ssmService,
|
|
523
|
-
stsService
|
|
524
|
-
}) => {
|
|
514
|
+
var plumbingMiddleware = () => {
|
|
525
515
|
assert9(
|
|
526
516
|
process.env.POWERTOOLS_METRICS_NAMESPACE,
|
|
527
517
|
"POWERTOOLS_METRICS_NAMESPACE is not configured"
|
|
@@ -534,6 +524,7 @@ var plumbingMiddleware = ({
|
|
|
534
524
|
let subsegment;
|
|
535
525
|
let handlerSegment;
|
|
536
526
|
const before = async ({ context, event }) => {
|
|
527
|
+
const { logger, tracer, metrics } = context.clientContext?.Custom;
|
|
537
528
|
logger.appendKeys({ scope: "plumbingMiddleware.before" });
|
|
538
529
|
logger.addContext(context);
|
|
539
530
|
logger.setCorrelationId(context.awsRequestId || "no-aws-request-id");
|
|
@@ -554,35 +545,9 @@ var plumbingMiddleware = ({
|
|
|
554
545
|
if (metrics) {
|
|
555
546
|
metrics.captureColdStartMetric();
|
|
556
547
|
}
|
|
557
|
-
context.clientContext = {
|
|
558
|
-
client: context.clientContext?.client || {
|
|
559
|
-
appPackageName: "",
|
|
560
|
-
appTitle: "",
|
|
561
|
-
appVersionCode: "",
|
|
562
|
-
appVersionName: "",
|
|
563
|
-
installationId: ""
|
|
564
|
-
},
|
|
565
|
-
env: context.clientContext?.env || {
|
|
566
|
-
platform: "",
|
|
567
|
-
platformVersion: "",
|
|
568
|
-
make: "",
|
|
569
|
-
model: "",
|
|
570
|
-
locale: ""
|
|
571
|
-
},
|
|
572
|
-
Custom: {
|
|
573
|
-
tracer,
|
|
574
|
-
logger,
|
|
575
|
-
metrics,
|
|
576
|
-
dynamoDBService,
|
|
577
|
-
locationService,
|
|
578
|
-
s3Service,
|
|
579
|
-
sqsService,
|
|
580
|
-
ssmService,
|
|
581
|
-
stsService
|
|
582
|
-
}
|
|
583
|
-
};
|
|
584
548
|
};
|
|
585
|
-
const after = async () => {
|
|
549
|
+
const after = async ({ context }) => {
|
|
550
|
+
const { logger, tracer, metrics } = context.clientContext?.Custom;
|
|
586
551
|
logger.appendKeys({ scope: "plumbingMiddleware.after" });
|
|
587
552
|
try {
|
|
588
553
|
logger.debug("started closing in after");
|
|
@@ -605,6 +570,25 @@ var plumbingMiddleware = ({
|
|
|
605
570
|
after
|
|
606
571
|
};
|
|
607
572
|
};
|
|
573
|
+
function getClientContextWithServices(context, servicesContext) {
|
|
574
|
+
return {
|
|
575
|
+
client: context.clientContext?.client || {
|
|
576
|
+
appPackageName: "",
|
|
577
|
+
appTitle: "",
|
|
578
|
+
appVersionCode: "",
|
|
579
|
+
appVersionName: "",
|
|
580
|
+
installationId: ""
|
|
581
|
+
},
|
|
582
|
+
env: context.clientContext?.env || {
|
|
583
|
+
platform: "",
|
|
584
|
+
platformVersion: "",
|
|
585
|
+
make: "",
|
|
586
|
+
model: "",
|
|
587
|
+
locale: ""
|
|
588
|
+
},
|
|
589
|
+
Custom: servicesContext
|
|
590
|
+
};
|
|
591
|
+
}
|
|
608
592
|
|
|
609
593
|
// src/lambda/sharedUtils.ts
|
|
610
594
|
import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
|
|
@@ -634,6 +618,7 @@ export {
|
|
|
634
618
|
THUMBS_EXTENSION,
|
|
635
619
|
assertEnvVar,
|
|
636
620
|
assertString,
|
|
621
|
+
getClientContextWithServices,
|
|
637
622
|
getEncodedVideoKey,
|
|
638
623
|
getKeyExtension,
|
|
639
624
|
getObjectWithAssumeRoleCommandOutputAttribute,
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/services/s3.ts", "../src/utils/index.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/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 assert from \"node:assert/strict\";\nimport { PassThrough } from \"node:stream\";\nimport {\n getObjectWithAssumeRoleCommandOutputAttribute,\n Logger\n} from \"../utils/index.js\";\nimport { getSignedUrl } from \"@aws-sdk/s3-request-presigner\";\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", "export { Logger } from \"@aws-lambda-powertools/logger\";\nexport { Metrics } from \"@aws-lambda-powertools/metrics\";\nexport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport * from \"./assertUtils.js\";\nexport * from \"./normalizeErrorMessage.js\";\nexport * from \"./thumbsKey.js\";\nexport * from \"./helpers.js\";\nexport * from \"./processMeta.js\";\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 {\n getObjectWithAssumeRoleCommandOutputAttribute,\n Logger\n} from \"../utils/index.js\";\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 {\n Logger,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\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 {\n Logger,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\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 middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\nimport type { ServicesContext } from \"./sharedUtils.js\";\n\nexport const plumbingMiddleware = ({\n logger,\n metrics,\n tracer,\n dynamoDBService,\n locationService,\n s3Service,\n sqsService,\n ssmService,\n stsService\n}: ServicesContext): 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 let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n logger.appendKeys({ scope: \"plumbingMiddleware.before\" });\n logger.addContext(context);\n logger.setCorrelationId(context.awsRequestId || \"no-aws-request-id\");\n logger.logEventIfEnabled(event);\n\n if (tracer) {\n segment = tracer.getSegment();\n\n if (!segment) {\n logger.error(\"Failed to get segment\");\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 }\n\n if (metrics) {\n metrics.captureColdStartMetric();\n }\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: {\n tracer,\n logger,\n metrics,\n dynamoDBService,\n locationService,\n s3Service,\n sqsService,\n ssmService,\n stsService\n }\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n logger.appendKeys({ scope: \"plumbingMiddleware.after\" });\n\n try {\n logger.debug(\"started closing in after\");\n\n if (tracer && subsegment && handlerSegment) {\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 }\n\n if (metrics) {\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n }\n\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\";\nimport {\n DynamoDBService,\n LocationService,\n S3Service,\n SQSService,\n SSMService,\n STSService\n} from \"../services/index.js\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport type ServicesContext = {\n logger: Logger;\n tracer?: Tracer;\n metrics?: Metrics;\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\nexport interface ACLambdaContext extends Context {\n clientContext: {\n Custom: ServicesContext;\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": ";AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,OACK;AAEP,SAAS,cAAc;AACvB,OAAOA,aAAY;AACnB,SAAS,mBAAmB;;;ACf5B,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,cAAc;;;ACFvB,OAAO,YAAY;AAEZ,IAAM,eAAe,CAAC,WAA2B;AACtD,SAAO,QAAQ,IAAI,MAAM,GAAG,GAAG,MAAM,aAAa;AAClD,SAAO,QAAQ,IAAI,MAAM;AAC3B;AAEO,IAAM,eAAe,CAAC,UAAsC;AACjE,SAAO,OAAO,UAAU,UAAU,uBAAuB;AACzD,SAAO,MAAM,SAAS,GAAG,gBAAgB;AACzC,SAAO;AACT;;;ACXO,IAAM,wBAAwB,CAAC,UAA2B;AAC/D,MAAI,iBAAiB,OAAO;AAC1B,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,UAAU,UAAU;AACpC,WAAO;AAAA,EACT,WAAW,OAAO,UAAU,YAAY,UAAU,MAAM;AACtD,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B,OAAO;AACL,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;;;ACVA,SAAS,eAAe;AAEjB,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AACtB,IAAM,mBAAmB;AACzB,IAAM,0BAA0B;AAChC,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF;AACO,IAAM,2BAA2B,CAAC,aAAa;AAE/C,IAAM,wBAAwB;AAAA,EACnC,CAAC,KAAK,GAAG;AAAA,EACT,CAAC,MAAM,GAAG;AACZ;AAEO,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,SAAO,GAAG,IACP,MAAM,GAAG,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,gBAAgB;AACrD;AAEO,IAAM,qBAAqB,CAAC,EAAE,IAAI,MAAuB;AAC9D,SAAO,GAAG,IAAI,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAAI,uBAAuB;AAC5E;AAEO,IAAM,kBAAkB,CAAC,QAC9B,QAAQ,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY;AAE7B,IAAM,qBAAqB,CAAC,QAAgB;AACjD,QAAM,MAAM,gBAAgB,GAAG;AAC/B,SAAO,mBAAmB,SAAS,GAAG;AACxC;AAEO,IAAM,0BAA0B,CAAC,QAAgB;AACtD,QAAM,MAAM,gBAAgB,GAAG;AAC/B,SAAO,yBAAyB,SAAS,GAAG;AAC9C;;;AChDO,IAAM,gDAAgD,CAC3D,4BAEA,0BACI;AAAA,EACE,aAAa;AAAA,IACX,aAAa,yBAAyB,aAAa;AAAA,IACnD,iBACE,yBAAyB,aAAa;AAAA,IACxC,cAAc,yBAAyB,aAAa;AAAA,EACtD;AACF,IACA,CAAC;AAEA,IAAM,8BAA8B,CAAC,UAC1C,SAAS,iBAAiB,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;;;ACf9D,OAAOC,aAAY;AAuBZ,IAAM,cAAc,OAAO;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AAE3B,QAAM,WAAW,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,UAAU,GAAG,KAAK;AACzE,QAAM,YAAY,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,WAAW,GAAG,KAAK;AAE3E,MAAI;AACJ,MAAI,CAAC,OAAO,MAAM,SAAS,KAAK,CAAC,OAAO,MAAM,QAAQ,GAAG;AACvD,QAAI;AACF,YAAM,MAAM,MAAM,gBAAgB,mCAAmC;AAAA,QACnE,WAAW;AAAA,QACX,UAAU,CAAC,WAAW,QAAQ;AAAA,MAChC,CAAC;AAED,UAAI,KAAK,WAAW,KAAK,SAAS,SAAS,GAAG;AAC5C,4BAAoB,KAAK,QAAQ,CAAC;AAAA,MACpC,OAAO;AACL,cAAM,MAAM,0BAA0B;AAAA,MACxC;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,2BAA2B;AAAA,QACtC,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,UAAU;AAAA,IACd,GAAG;AAAA,IACH,GAAI,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,aAAa,IAC5C,CAAC,IACD,mBAAmB,EAAE;AAAA,IACzB,EAAE,KAAK,aAAa,OAAO,gBAAgB,EAAE,EAAE;AAAA,IAC/C,EAAE,KAAK,QAAQ,OAAO,OAAO,IAAI,EAAE;AAAA,IACnC,EAAE,KAAK,UAAU,OAAO,OAAO,KAAK,MAAM,OAAO,QAAQ,CAAC,CAAC,EAAE;AAAA,IAC7D,GAAI,mBAAmB,OAAO,QAC1B,CAAC,EAAE,KAAK,SAAS,OAAO,mBAAmB,OAAO,MAAM,CAAC,IACzD,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,UAC1B,CAAC,EAAE,KAAK,WAAW,OAAO,mBAAmB,OAAO,QAAQ,CAAC,IAC7D,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,SAC1B,CAAC,EAAE,KAAK,UAAU,OAAO,mBAAmB,OAAO,OAAO,CAAC,IAC3D,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,YAC1B,CAAC,EAAE,KAAK,aAAa,OAAO,mBAAmB,OAAO,UAAU,CAAC,IACjE,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,eAC1B,CAAC,EAAE,KAAK,gBAAgB,OAAO,mBAAmB,OAAO,aAAa,CAAC,IACvE,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,eAC1B,CAAC,EAAE,KAAK,gBAAgB,OAAO,mBAAmB,OAAO,aAAa,CAAC,IACvE,CAAC;AAAA,IACL,GAAI,mBAAmB,OAAO,aAC1B,CAAC,EAAE,KAAK,cAAc,OAAO,mBAAmB,OAAO,WAAW,CAAC,IACnE,CAAC;AAAA,EACP,EAAE,IAAI,CAAC,SAAS;AAAA,IACd,KAAK,YAAY,IAAI;AAAA,IACrB,OAAO,IAAI;AAAA,EACb,EAAE;AAEF,SAAO,MAAM,YAAY,EAAE,QAAQ,CAAC;AAEpC,SAAO,MAAM,kCAAkC;AAC/C,QAAM,cAAc,MAAM,gBAAgB,WAAW;AAAA,IACnD,WAAW;AAAA,IACX,KAAK;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,UAAiB,YAAY,MAAM;AACzC,SAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC;AAE7C,QAAM,iBAAiB,cAAc,EAAE,SAAS,QAAQ,GAAG,MAAM;AACjE,SAAO,MAAM,UAAU,EAAE,eAAe,CAAC;AAEzC,QAAM,iBAAiB,MAAM,gBAAgB,cAAc;AAAA,IACzD,WAAW;AAAA,IACX,KAAK;AAAA,MACH;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,2BAA2B;AAAA,MACzB,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AAED,SAAO,MAAM,sBAAsB,EAAE,eAAe,CAAC;AACvD;AAEA,IAAM,gBAAgB,CACpB,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,EAAE,GAC7B,WAEA,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC3B,MAAI,IAAI,KAAK,CAAC,YAAY,QAAQ,QAAQ,IAAI,GAAG,GAAG;AAClD,WAAO;AAAA,EACT,OAAO;AACL,WAAO,MAAM,SAAS,GAAG;AAEzB,WAAO,CAAC,GAAG,KAAK,GAAG;AAAA,EACrB;AACF,GAAG,OAAO;AAEZ,IAAM,kCAAkC;AAExC,IAAM,qBAAqB,CAAC,QAA+C;AACzE,MAAI,CAAC;AAAK,WAAO,CAAC;AAElB,MAAI,aAAiC;AACrC,MAAI;AACF,UAAM,SAAS,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE;AACnC,IAAAC,QAAO,OAAO,WAAW,QAAQ;AACjC,iBAAa,OAAO,MAAM,GAAG,EAAE,CAAC;AAAA,EAClC,SAAS,OAAO;AAAA,EAAC;AAEjB,MACE,eAAe,UACf,WAAW,WAAW,KACtB,CAAC,WAAW,WAAW,+BAA+B;AAEtD,WAAO,CAAC;AAEV,QAAM,OAAO,OAAO,WAAW,UAAU,GAAG,CAAC,CAAC;AAC9C,QAAM,QAAQ,OAAO,WAAW,UAAU,GAAG,CAAC,CAAC,IAAI;AACnD,QAAM,MAAM,OAAO,WAAW,UAAU,CAAC,CAAC;AAE1C,MAAI,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG;AAAG,WAAO,CAAC;AAIvD,MAAI,OAAO,OAAQ,QAAQ,KAAK,QAAQ,MAAM,MAAM,KAAK,MAAM;AAAI,WAAO,CAAC;AAE3E,QAAM,iBAAiB,IAAI,KAAK,MAAM,OAAO,GAAG;AAEhD,SAAO;AAAA,IACL,EAAE,KAAK,eAAe,OAAO,eAAe,YAAY,EAAE;AAAA,IAC1D,EAAE,KAAK,eAAe,OAAO,eAAe,YAAY,EAAE,SAAS,EAAE;AAAA,IACrE,EAAE,KAAK,cAAc,OAAO,eAAe,QAAQ,EAAE,SAAS,EAAE;AAAA,IAChE;AAAA,MACE,KAAK;AAAA,MACL,QAAQ,eAAe,SAAS,IAAI,GAAG,SAAS;AAAA,IAClD;AAAA,EACF;AACF;;;AN5JA,SAAS,oBAAoB;AAEtB,IAAM,YAAN,MAAgB;AAAA,EACrB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,SAAS;AAEd,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAC,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,SAAS;AAAA,QACzB;AAAA,QACA,GAAG;AAAA,UACD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,qBAAqB,uBAA8C;AACjE,SAAK,OAAO,MAAM,yBAAyB,EAAE,sBAAsB,CAAC;AAEpE,UAAM,OAAO,IAAI,YAAY;AAE7B,UAAM,kBAAkB,IAAI,OAAO;AAAA,MACjC,QAAQ,KAAK;AAAA,MACb,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,UAAM,cAAc,gBACjB,KAAK,EACL,KAAK,MAAM,KAAK,OAAO,MAAM,wBAAwB,CAAC,EACtD,MAAM,CAAC,QAAQ;AACd,WAAK,OAAO,MAAM,uBAAuB,GAAG;AAC5C,WAAK,QAAQ,GAAG;AAAA,IAClB,CAAC;AAEH,WAAO,EAAE,QAAQ,MAAM,MAAM,YAAY;AAAA,EAC3C;AAAA,EAEA,MAAM,uBAAuB,uBAA8C;AACzE,SAAK,OAAO,MAAM,2BAA2B,EAAE,sBAAsB,CAAC;AAEtE,UAAM,OAAO,MAAM,KAAK,OAAO;AAAA,MAC7B,IAAI,iBAAiB,qBAAqB;AAAA,IAC5C;AAEA,SAAK,OAAO,MAAM,0BAA0B;AAE5C,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,cAAc,2BAAsD;AACxE,SAAK,OAAO,MAAM,iBAAiB,EAAE,0BAA0B,CAAC;AAChE,WAAO,MAAM,KAAK,OAAO;AAAA,MACvB,IAAI,qBAAqB,yBAAyB;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,UACJ,uBACiB;AACjB,SAAK,OAAO,MAAM,aAAa,EAAE,sBAAsB,CAAC;AAExD,UAAM,SAAS,MAAM,KAAK,uBAAuB,qBAAqB;AAEtE,WAAO,OAAO,KAAK,MAAM,OAAO,qBAAqB,CAAC;AAAA,EACxD;AAAA,EAEA,MAAM,aACJ,uBACiB;AACjB,SAAK,OAAO,MAAM,gBAAgB,EAAE,sBAAsB,CAAC;AAE3D,UAAM,YAAY,MAAM;AAAA,MACtB,KAAK;AAAA,MACL,IAAI,iBAAiB,qBAAqB;AAAA,MAC1C,EAAE,WAAW,KAAK;AAAA,IACpB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UACJ,uBACiC;AACjC,SAAK,OAAO,MAAM,aAAa,EAAE,sBAAsB,CAAC;AAExD,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,iBAAiB,qBAAqB,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,WAAW,wBAAgD;AAC/D,SAAK,OAAO,MAAM,cAAc,EAAE,uBAAuB,CAAC;AAC1D,WAAO,MAAM,KAAK,OAAO;AAAA,MACvB,IAAI,kBAAkB,sBAAsB;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAM,oBACJ,wBACkB;AAClB,SAAK,OAAO,MAAM,uBAAuB,EAAE,uBAAuB,CAAC;AAEnE,QAAI;AACF,YAAM,KAAK,WAAW,sBAAsB;AAC5C,aAAO;AAAA,IACT,SAAS,OAAO;AACd,UAAI,MAAM,SAAS,YAAY;AAC7B,eAAO;AAAA,MACT;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;;;AOpJA,SAAS,sBAAsB;AAE/B;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EAGA;AAAA,EAGA;AAAA,OAGK;AACP,OAAOC,aAAY;AAMZ,IAAM,kBAAN,MAAsB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,SAAS;AAEd,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAC,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,eAAe;AAAA,QAC/B;AAAA,QACA,GAAG;AAAA,UACD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,iBAAiB,uBAAuB,KAAK,KAAK,MAAM;AAAA,EAC/D;AAAA,EAEA,MAAM,WACJ,iBAC2B;AAC3B,WAAO,MAAM,KAAK,eAAe,KAAK,IAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,cACJ,oBAC8B;AAC9B,WAAO,MAAM,KAAK,eAAe;AAAA,MAC/B,IAAI,cAAc,kBAAkB;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,mBAC6B;AAC7B,WAAO,MAAM,KAAK,eAAe,KAAK,IAAI,aAAa,iBAAiB,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,WACJ,iBAC2B;AAC3B,WAAO,MAAM,KAAK,eAAe,KAAK,IAAI,WAAW,eAAe,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,kBACJ,YACkB;AAClB,UAAM,SAAS,MAAM,KAAK,WAAW,UAAU;AAE/C,WAAO,CAAC,CAAC,OAAO;AAAA,EAClB;AACF;;;ACzFA;AAAA,EACE;AAAA,EAGA;AAAA,EAGA;AAAA,OACK;AAEP,OAAOC,aAAY;AAIZ,IAAM,aAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,SAAS;AAEd,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAC,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,UAAU;AAAA,QAC1B;AAAA,QACA,GAAG;AAAA,UACD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QACoC;AACpC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,oBAAoB,MAAM,CAAC;AAAA,EAC/D;AAAA,EAEA,MAAM,aACJ,QACoC;AACpC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,oBAAoB,MAAM,CAAC;AAAA,EAC/D;AACF;;;ACvDA;AAAA,EACE;AAAA,EAGA;AAAA,EAGA;AAAA,EACA;AAAA,EAGA;AAAA,OAGK;AAEP,OAAOC,aAAY;AAMZ,IAAM,aAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,SAAS;AAEd,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAC,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,UAAU;AAAA,QAC1B;AAAA,QACA,GAAG;AAAA,UACD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,QACmC;AACnC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,mBAAmB,MAAM,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,iBACJ,QACwC;AACxC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,wBAAwB,MAAM,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,eACJ,QACsC;AACtC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,sBAAsB,MAAM,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,cACJ,QACqC;AACrC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,qBAAqB,MAAM,CAAC;AAAA,EAChE;AACF;;;AC3EA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,OAAOC,aAAY;AACnB,SAAS,UAAAC,eAAc;AAEhB,IAAM,aAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIG;AACD,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,WAAK,SAAS,IAAIA,QAAO;AACzB,WAAK,OAAO,WAAW,EAAE,OAAO,aAAa,CAAC;AAAA,IAChD;AAEA,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAD,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,UAAU;AAAA,QAC1B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,SAAK,OAAO,MAAM,mBAAmB;AAErC,WAAO,MAAM,KAAK,OAAO,KAAK,IAAI,yBAAyB,CAAC,CAAC,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,WAAW,wBAAgD;AAC/D,SAAK,OAAO,MAAM,cAAc,EAAE,uBAAuB,CAAC;AAE1D,WAAO,MAAM,KAAK,OAAO;AAAA,MACvB,IAAI,kBAAkB,sBAAsB;AAAA,IAC9C;AAAA,EACF;AACF;;;ACpDA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAEP,OAAOE,aAAY;AAMZ,IAAM,kBAAN,MAAsB;AAAA,EAC3B;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,SAAS;AAEd,QAAI,QAAQ;AACV,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAC,QAAO,QAAQ,iDAAiD;AAChE,WAAK,SAAS,IAAI,eAAe;AAAA,QAC/B;AAAA,QACA,GAAG;AAAA,UACD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,mCACJ,yCACmD;AACnD,WAAO,MAAM,KAAK,OAAO;AAAA,MACvB,IAAI;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnDA,OAAOC,aAAY;AAGZ,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAsC;AACpC,EAAAA;AAAA,IACE,QAAQ,IAAI;AAAA,IACZ;AAAA,EACF;AAEA,EAAAA;AAAA,IACE,QAAQ,IAAI;AAAA,IACZ;AAAA,EACF;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,QAAM,SAA6B,OAAO,EAAE,SAAS,MAAM,MAAM;AAC/D,WAAO,WAAW,EAAE,OAAO,4BAA4B,CAAC;AACxD,WAAO,WAAW,OAAO;AACzB,WAAO,iBAAiB,QAAQ,gBAAgB,mBAAmB;AACnE,WAAO,kBAAkB,KAAK;AAE9B,QAAI,QAAQ;AACV,gBAAU,OAAO,WAAW;AAE5B,UAAI,CAAC,SAAS;AACZ,eAAO,MAAM,uBAAuB;AAEpC,yBAAiB,QAAQ,iBAAiB,MAAM,QAAQ,IAAI,QAAQ,EAAE;AACtE,eAAO,WAAW,cAAc;AAChC,eAAO,kBAAkB;AACzB,eAAO,yBAAyB;AAGhC,eAAO,cAAc,gBAAgB,QAAQ,YAAY;AAGzD,qBAAa,eAAe,iBAAiB,kBAAkB;AAC/D,eAAO,WAAW,UAAU;AAAA,MAC9B;AAAA,IACF;AAEA,QAAI,SAAS;AACX,cAAQ,uBAAuB;AAAA,IACjC;AAEA,YAAQ,gBAAgB;AAAA,MACtB,QAAQ,QAAQ,eAAe,UAAU;AAAA,QACvC,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,MACA,KAAK,QAAQ,eAAe,OAAO;AAAA,QACjC,UAAU;AAAA,QACV,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAA4B,YAA2B;AAC3D,WAAO,WAAW,EAAE,OAAO,2BAA2B,CAAC;AAEvD,QAAI;AACF,aAAO,MAAM,0BAA0B;AAEvC,UAAI,UAAU,cAAc,gBAAgB;AAC1C,mBAAW,MAAM;AACjB,uBAAe,MAAM;AAGrB,eAAO,WAAW,OAAO;AAAA,MAC3B;AAEA,UAAI,SAAS;AAEX,gBAAQ,qBAAqB;AAAA,MAC/B;AAEA,aAAO,MAAM,2BAA2B;AAAA,IAC1C,SAAS,OAAO;AACd,aAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC;AACxC,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACtHA,SAAS,gCAAgC;AAGzC,SAAS,WAAAC,gBAAe;AACxB,SAAS,UAAAC,eAAc;AACvB,SAAS,UAAAC,eAAc;AAUhB,IAAM,sBAAsB,MAAM;AACvC,SAAO,IAAI,yBAAyB;AAAA,IAClC,WAAW,aAAa,2BAA2B;AAAA,EACrD,CAAC;AACH;",
|
|
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 {\n getObjectWithAssumeRoleCommandOutputAttribute,\n Logger\n} from \"../utils/index.js\";\nimport { getSignedUrl } from \"@aws-sdk/s3-request-presigner\";\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", "export { Logger } from \"@aws-lambda-powertools/logger\";\nexport { Metrics } from \"@aws-lambda-powertools/metrics\";\nexport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport * from \"./assertUtils.js\";\nexport * from \"./normalizeErrorMessage.js\";\nexport * from \"./thumbsKey.js\";\nexport * from \"./helpers.js\";\nexport * from \"./processMeta.js\";\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 {\n getObjectWithAssumeRoleCommandOutputAttribute,\n Logger\n} from \"../utils/index.js\";\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 {\n Logger,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\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 {\n Logger,\n getObjectWithAssumeRoleCommandOutputAttribute\n} from \"../utils/index.js\";\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 middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\nimport type { ServicesContext } from \"./sharedUtils.js\";\nimport { ClientContext, Context } from \"aws-lambda\";\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 let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n const { logger, tracer, metrics } = context.clientContext\n ?.Custom as ServicesContext;\n\n logger.appendKeys({ scope: \"plumbingMiddleware.before\" });\n logger.addContext(context);\n logger.setCorrelationId(context.awsRequestId || \"no-aws-request-id\");\n logger.logEventIfEnabled(event);\n\n if (tracer) {\n segment = tracer.getSegment();\n\n if (!segment) {\n logger.error(\"Failed to get segment\");\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 }\n\n if (metrics) {\n metrics.captureColdStartMetric();\n }\n };\n\n const after: middy.MiddlewareFn = async ({ context }): Promise<void> => {\n const { logger, tracer, metrics } = context.clientContext\n ?.Custom as ServicesContext;\n\n logger.appendKeys({ scope: \"plumbingMiddleware.after\" });\n\n try {\n logger.debug(\"started closing in after\");\n\n if (tracer && subsegment && handlerSegment) {\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 }\n\n if (metrics) {\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n }\n\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\nexport function getClientContextWithServices(\n context: Context,\n servicesContext: ServicesContext\n): ClientContext {\n return {\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: servicesContext\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\";\nimport {\n DynamoDBService,\n LocationService,\n S3Service,\n SQSService,\n SSMService,\n STSService\n} from \"../services/index.js\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport type ServicesContext = {\n logger: Logger;\n tracer?: Tracer;\n metrics?: Metrics;\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\nexport interface ACLambdaContext extends Context {\n clientContext: {\n Custom: ServicesContext;\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
6
|
"names": ["assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "assert", "Logger", "assert", "assert", "assert", "Metrics", "Logger", "Tracer"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { MiddlewareObj } from "@middy/core";
|
|
2
2
|
import type { ServicesContext } from "./sharedUtils.js";
|
|
3
|
-
|
|
3
|
+
import { ClientContext, Context } from "aws-lambda";
|
|
4
|
+
export declare const plumbingMiddleware: () => MiddlewareObj;
|
|
5
|
+
export declare function getClientContextWithServices(context: Context, servicesContext: ServicesContext): ClientContext;
|