@aspan-corporation/ac-shared 1.0.14 → 1.0.16
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 +34 -8
- package/lib/index.js.map +2 -2
- package/lib/utils/thumbsKey.d.ts +13 -6
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -382,34 +382,60 @@ var normalizeErrorMessage = (error) => {
|
|
|
382
382
|
};
|
|
383
383
|
|
|
384
384
|
// src/utils/thumbsKey.ts
|
|
385
|
-
|
|
385
|
+
import { extname } from "node:path";
|
|
386
|
+
var JPEG_EXTENSION = "jpeg";
|
|
387
|
+
var JPG_EXTENSION = "jpg";
|
|
388
|
+
var HEIC_EXTENSION = "heic";
|
|
389
|
+
var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
|
|
390
|
+
var ALLOWED_EXTENSIONS = [
|
|
391
|
+
JPEG_EXTENSION,
|
|
392
|
+
JPG_EXTENSION,
|
|
393
|
+
HEIC_EXTENSION
|
|
394
|
+
];
|
|
395
|
+
var THUMBNAIL_RESOLUTIONS = [
|
|
396
|
+
[200, 200],
|
|
397
|
+
[1180, 820]
|
|
398
|
+
];
|
|
386
399
|
var getThumbsKey = ({
|
|
387
|
-
|
|
388
|
-
|
|
400
|
+
key,
|
|
401
|
+
prefix,
|
|
389
402
|
width,
|
|
390
403
|
height
|
|
391
404
|
}) => {
|
|
392
|
-
const
|
|
393
|
-
|
|
405
|
+
const ext = getKeyExtension(key);
|
|
406
|
+
if ([JPEG_EXTENSION, JPG_EXTENSION].includes(ext)) {
|
|
407
|
+
return key;
|
|
408
|
+
}
|
|
409
|
+
const sourceKeyWithoutExtension = key.split(".").slice(0, -1).join(".");
|
|
410
|
+
return `${prefix}/${width}x${height}/${sourceKeyWithoutExtension}.${DEFAULT_THUMBS_EXTENSION}`;
|
|
394
411
|
};
|
|
395
|
-
var
|
|
396
|
-
|
|
412
|
+
var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
|
|
413
|
+
var isAllowedExtension = (key) => {
|
|
414
|
+
const ext = getKeyExtension(key);
|
|
415
|
+
return ALLOWED_EXTENSIONS.includes(ext);
|
|
397
416
|
};
|
|
398
417
|
export {
|
|
418
|
+
ALLOWED_EXTENSIONS,
|
|
419
|
+
DEFAULT_THUMBS_EXTENSION,
|
|
399
420
|
DynamoDBService,
|
|
421
|
+
HEIC_EXTENSION,
|
|
422
|
+
JPEG_EXTENSION,
|
|
423
|
+
JPG_EXTENSION,
|
|
400
424
|
Logger2 as Logger,
|
|
401
425
|
Metrics2 as Metrics,
|
|
402
426
|
S3Service,
|
|
403
427
|
SQSService,
|
|
404
428
|
SSMService,
|
|
405
429
|
STSService,
|
|
430
|
+
THUMBNAIL_RESOLUTIONS,
|
|
406
431
|
Tracer2 as Tracer,
|
|
407
432
|
assertEnvVar,
|
|
408
433
|
assertString,
|
|
434
|
+
getKeyExtension,
|
|
409
435
|
getLoggerWithScope,
|
|
410
436
|
getPersistenceStore,
|
|
411
437
|
getThumbsKey,
|
|
412
|
-
|
|
438
|
+
isAllowedExtension,
|
|
413
439
|
normalizeErrorMessage,
|
|
414
440
|
plumbingMiddleware,
|
|
415
441
|
rootLogger
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/services/s3.ts", "../src/services/dynamoDB.ts", "../src/services/ssm.ts", "../src/services/sqs.ts", "../src/services/sts.ts", "../src/lambda/plumbingMiddleware.ts", "../src/lambda/sharedUtils.ts", "../src/utils/assertUtils.ts", "../src/utils/logger.ts", "../src/utils/normalizeErrorMessage.ts", "../src/utils/thumbsKey.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n GetObjectCommand,\n GetObjectCommandInput,\n HeadObjectCommand,\n HeadObjectCommandInput,\n ListObjectsV2Command,\n ListObjectsV2CommandInput,\n PutObjectCommandInput,\n S3Client\n} from \"@aws-sdk/client-s3\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { Upload } from \"@aws-sdk/lib-storage\";\nimport { PassThrough } from \"node:stream\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: S3Client;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new S3Client({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new S3Client({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\");\n\n const pass = new PassThrough();\n\n const parallelUploads3 = new Upload({\n client: this.client,\n params: {\n ...putObjectCommandInput,\n Body: pass\n }\n });\n\n parallelUploads3.done();\n\n this.logger.debug(\"upload stream finished\");\n return pass;\n }\n\n async createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput) {\n this.logger.debug(\"download stream started\");\n\n const item = await this.client.send(\n new GetObjectCommand(getObjectCommandInput)\n );\n\n this.logger.debug(\"download stream finished\");\n\n return item.Body;\n }\n\n async listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput) {\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n try {\n await this.client.send(new HeadObjectCommand(headObjectCommandInput));\n return true;\n } catch (error) {\n if (error.name === \"NotFound\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import { DynamoDBClient } from \"@aws-sdk/client-dynamodb\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport {\n DynamoDBDocumentClient,\n GetCommand,\n GetCommandInput,\n GetCommandOutput,\n PutCommand,\n PutCommandInput,\n PutCommandOutput,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n UpdateCommand,\n UpdateCommandInput,\n UpdateCommandOutput\n} from \"@aws-sdk/lib-dynamodb\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: DynamoDBClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new DynamoDBClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new DynamoDBClient({\n region: process.env.AWS_REGION,\n logger: this.logger\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 { Logger } from \"@aws-lambda-powertools/logger\";\nimport {\n SSMClient,\n GetParameterCommand,\n GetParameterCommandInput,\n GetParameterCommandOutput,\n PutParameterCommand,\n PutParameterCommandInput,\n PutParameterCommandOutput\n} from \"@aws-sdk/client-ssm\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: SSMClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new SSMClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new SSMClient({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n }\n\n async getParameter(\n params: GetParameterCommandInput\n ): Promise<GetParameterCommandOutput> {\n return await this.client.send(new GetParameterCommand(params));\n }\n\n async putParameter(\n params: PutParameterCommandInput\n ): Promise<PutParameterCommandOutput> {\n return await this.client.send(new PutParameterCommand(params));\n }\n}\n", "import {\n DeleteMessageCommand,\n DeleteMessageCommandInput,\n DeleteMessageCommandOutput,\n ReceiveMessageCommand,\n ReceiveMessageCommandInput,\n ReceiveMessageCommandOutput,\n SQSClient,\n SendMessageBatchCommand,\n SendMessageBatchCommandInput,\n SendMessageBatchCommandOutput,\n SendMessageCommand,\n SendMessageCommandInput,\n SendMessageCommandOutput\n} from \"@aws-sdk/client-sqs\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: SQSClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new SQSClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new SQSClient({\n region: process.env.AWS_REGION,\n logger: this.logger\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 STSClient,\n GetCallerIdentityCommand,\n AssumeRoleCommandInput,\n AssumeRoleCommand\n} from \"@aws-sdk/client-sts\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({ logger }: { logger?: GenericLogger } = {}) {\n this.logger = logger;\n\n this.client = new STSClient({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n\n async getCallerIdentity() {\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n return await this.client.send(\n new AssumeRoleCommand(assumeRoleCommandInput)\n );\n }\n}\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\n\nexport const plumbingMiddleware = (): MiddlewareObj => {\n assert(\n process.env.POWERTOOLS_METRICS_NAMESPACE,\n \"POWERTOOLS_METRICS_NAMESPACE is not configured\"\n );\n\n assert(\n process.env.POWERTOOLS_SERVICE_NAME,\n \"POWERTOOLS_SERVICE_NAME is not configured\"\n );\n\n const metrics = new Metrics();\n const logger = new Logger();\n const tracer = new Tracer();\n\n let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n logger.appendKeys({\n awsRequestId: context.awsRequestId,\n });\n\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.before\" });\n\n localLogger.info(\"incoming\", { event });\n\n segment = tracer.getSegment();\n\n if (!segment) {\n localLogger.error(\"Failed to get segment\");\n return;\n }\n\n metrics.captureColdStartMetric();\n\n // Create subsegment for the function & set it as active\n handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);\n tracer.setSegment(handlerSegment);\n tracer.annotateColdStart();\n tracer.addServiceNameAnnotation();\n\n // Add annotation for the awsRequestId\n tracer.putAnnotation(\"awsRequestId\", context.awsRequestId);\n\n // Create another subsegment & set it as active\n subsegment = handlerSegment.addNewSubsegment(\"### MySubSegment\");\n tracer.setSegment(subsegment);\n\n context.clientContext = {\n client: context.clientContext?.client || {\n appPackageName: \"\",\n appTitle: \"\",\n appVersionCode: \"\",\n appVersionName: \"\",\n installationId: \"\",\n },\n env: context.clientContext?.env || {\n platform: \"\",\n platformVersion: \"\",\n make: \"\",\n model: \"\",\n locale: \"\",\n },\n Custom: { tracer, logger, metrics },\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.after\" });\n\n try {\n localLogger.debug(\"started closing in after\");\n subsegment.close(); // (### MySubSegment)\n handlerSegment.close(); // (## index.handler)\n\n // Set the facade segment as active again (the one created by AWS Lambda)\n tracer.setSegment(segment);\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n localLogger.debug(\"finished closing in after\");\n } catch (error) {\n localLogger.error(\"error in after\", { error });\n throw error;\n }\n };\n\n return {\n before,\n after,\n };\n};\n", "import { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { Context } from \"aws-lambda\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport interface ACLambdaContext extends Context {\n clientContext?: {\n Custom?: {\n metrics: Metrics;\n logger: Logger;\n tracer: Tracer;\n };\n client: {\n appPackageName: string;\n appTitle: string;\n appVersionCode: string;\n appVersionName: string;\n installationId: string;\n };\n env: {\n platform: string;\n platformVersion: string;\n make: string;\n model: string;\n locale: string;\n };\n };\n}\n\nexport { Logger, Metrics, Tracer };\n", "import assert from \"node:assert/strict\";\n\nexport const assertEnvVar = (envVar: string): string => {\n assert(process.env[envVar], `${envVar} is not set`);\n return process.env[envVar];\n};\n\nexport const assertString = (value: string | undefined): string => {\n assert(typeof value === \"string\", \"Value is not a string\");\n assert(value.length > 0, \"Value is empty\");\n return value;\n};\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport const rootLogger = new Logger({\n serviceName:\n process.env.POWERTOOLS_SERVICE_NAME ??\n process.env.AWS_LAMBDA_FUNCTION_NAME ??\n \"ac-shared\"\n});\n\nexport const getLoggerWithScope = (\n scope: string,\n logger: Logger = rootLogger\n) => {\n const childLogger = logger.createChild();\n childLogger.appendKeys({ scope });\n return childLogger;\n};\n", "export const normalizeErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n return error.message;\n } else if (typeof error === \"string\") {\n return error;\n } else if (typeof error === \"object\" && error !== null) {\n return JSON.stringify(error);\n } else {\n return String(error);\n }\n};\n", "const THUMBS_EXTENSION = \"jpg\";\n\nexport const getThumbsKey = ({\n sourceKey,\n destinationBucketPrefix,\n width,\n height\n}: {\n sourceKey: string;\n destinationBucketPrefix: string;\n width: string;\n height: string;\n}) => {\n const sourceKeyWithoutExtension = sourceKey.split(\".\").slice(0, -1).join(\".\");\n return `${destinationBucketPrefix}/${width}x${height}/${sourceKeyWithoutExtension}.${THUMBS_EXTENSION}`;\n};\n\nexport const getThumbsResolutions = (resolutions: string) => {\n return resolutions.split(\",\").map((res) => res.split(\"x\").map(Number));\n};\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import {\n GetObjectCommand,\n GetObjectCommandInput,\n HeadObjectCommand,\n HeadObjectCommandInput,\n ListObjectsV2Command,\n ListObjectsV2CommandInput,\n PutObjectCommandInput,\n S3Client\n} from \"@aws-sdk/client-s3\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { Upload } from \"@aws-sdk/lib-storage\";\nimport { PassThrough } from \"node:stream\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: S3Client;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new S3Client({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new S3Client({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\");\n\n const pass = new PassThrough();\n\n const parallelUploads3 = new Upload({\n client: this.client,\n params: {\n ...putObjectCommandInput,\n Body: pass\n }\n });\n\n parallelUploads3.done();\n\n this.logger.debug(\"upload stream finished\");\n return pass;\n }\n\n async createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput) {\n this.logger.debug(\"download stream started\");\n\n const item = await this.client.send(\n new GetObjectCommand(getObjectCommandInput)\n );\n\n this.logger.debug(\"download stream finished\");\n\n return item.Body;\n }\n\n async listObjectsV2(listObjectsV2CommandInput: ListObjectsV2CommandInput) {\n return await this.client.send(\n new ListObjectsV2Command(listObjectsV2CommandInput)\n );\n }\n\n async getObject(\n getObjectCommandInput: GetObjectCommandInput\n ): Promise<Buffer> {\n const stream = await this.createS3DownloadStream(getObjectCommandInput);\n\n return Buffer.from(await stream.transformToByteArray());\n }\n\n async headObject(headObjectCommandInput: HeadObjectCommandInput) {\n return await this.client.send(\n new HeadObjectCommand(headObjectCommandInput)\n );\n }\n\n async checkIfObjectExists(\n headObjectCommandInput: HeadObjectCommandInput\n ): Promise<boolean> {\n try {\n await this.client.send(new HeadObjectCommand(headObjectCommandInput));\n return true;\n } catch (error) {\n if (error.name === \"NotFound\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import { DynamoDBClient } from \"@aws-sdk/client-dynamodb\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport {\n DynamoDBDocumentClient,\n GetCommand,\n GetCommandInput,\n GetCommandOutput,\n PutCommand,\n PutCommandInput,\n PutCommandOutput,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n UpdateCommand,\n UpdateCommandInput,\n UpdateCommandOutput\n} from \"@aws-sdk/lib-dynamodb\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: DynamoDBClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new DynamoDBClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new DynamoDBClient({\n region: process.env.AWS_REGION,\n logger: this.logger\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 { Logger } from \"@aws-lambda-powertools/logger\";\nimport {\n SSMClient,\n GetParameterCommand,\n GetParameterCommandInput,\n GetParameterCommandOutput,\n PutParameterCommand,\n PutParameterCommandInput,\n PutParameterCommandOutput\n} from \"@aws-sdk/client-ssm\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: SSMClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new SSMClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new SSMClient({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n }\n\n async getParameter(\n params: GetParameterCommandInput\n ): Promise<GetParameterCommandOutput> {\n return await this.client.send(new GetParameterCommand(params));\n }\n\n async putParameter(\n params: PutParameterCommandInput\n ): Promise<PutParameterCommandOutput> {\n return await this.client.send(new PutParameterCommand(params));\n }\n}\n", "import {\n DeleteMessageCommand,\n DeleteMessageCommandInput,\n DeleteMessageCommandOutput,\n ReceiveMessageCommand,\n ReceiveMessageCommandInput,\n ReceiveMessageCommandOutput,\n SQSClient,\n SendMessageBatchCommand,\n SendMessageBatchCommandInput,\n SendMessageBatchCommandOutput,\n SendMessageCommand,\n SendMessageCommandInput,\n SendMessageCommandOutput\n} from \"@aws-sdk/client-sqs\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput\n }: {\n logger?: GenericLogger;\n client?: SQSClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n } = {}) {\n this.logger = logger;\n\n if (assumeRoleCommandOutput) {\n this.client = new SQSClient({\n region: process.env.AWS_REGION,\n logger: this.logger,\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n });\n } else {\n this.client =\n client ??\n new SQSClient({\n region: process.env.AWS_REGION,\n logger: this.logger\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 STSClient,\n GetCallerIdentityCommand,\n AssumeRoleCommandInput,\n AssumeRoleCommand\n} from \"@aws-sdk/client-sts\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { getLoggerWithScope } from \"../utils/logger.js\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({ logger }: { logger?: GenericLogger } = {}) {\n this.logger = logger;\n\n this.client = new STSClient({\n region: process.env.AWS_REGION,\n logger: this.logger\n });\n }\n\n async getCallerIdentity() {\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n return await this.client.send(\n new AssumeRoleCommand(assumeRoleCommandInput)\n );\n }\n}\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\nimport middy, { MiddlewareObj } from \"@middy/core\";\nimport assert from \"node:assert\";\n\nexport const plumbingMiddleware = (): MiddlewareObj => {\n assert(\n process.env.POWERTOOLS_METRICS_NAMESPACE,\n \"POWERTOOLS_METRICS_NAMESPACE is not configured\"\n );\n\n assert(\n process.env.POWERTOOLS_SERVICE_NAME,\n \"POWERTOOLS_SERVICE_NAME is not configured\"\n );\n\n const metrics = new Metrics();\n const logger = new Logger();\n const tracer = new Tracer();\n\n let segment: any;\n let subsegment: any;\n let handlerSegment: any;\n\n const before: middy.MiddlewareFn = async ({ context, event }) => {\n logger.appendKeys({\n awsRequestId: context.awsRequestId,\n });\n\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.before\" });\n\n localLogger.info(\"incoming\", { event });\n\n segment = tracer.getSegment();\n\n if (!segment) {\n localLogger.error(\"Failed to get segment\");\n return;\n }\n\n metrics.captureColdStartMetric();\n\n // Create subsegment for the function & set it as active\n handlerSegment = segment.addNewSubsegment(`## ${process.env._HANDLER}`);\n tracer.setSegment(handlerSegment);\n tracer.annotateColdStart();\n tracer.addServiceNameAnnotation();\n\n // Add annotation for the awsRequestId\n tracer.putAnnotation(\"awsRequestId\", context.awsRequestId);\n\n // Create another subsegment & set it as active\n subsegment = handlerSegment.addNewSubsegment(\"### MySubSegment\");\n tracer.setSegment(subsegment);\n\n context.clientContext = {\n client: context.clientContext?.client || {\n appPackageName: \"\",\n appTitle: \"\",\n appVersionCode: \"\",\n appVersionName: \"\",\n installationId: \"\",\n },\n env: context.clientContext?.env || {\n platform: \"\",\n platformVersion: \"\",\n make: \"\",\n model: \"\",\n locale: \"\",\n },\n Custom: { tracer, logger, metrics },\n };\n };\n\n const after: middy.MiddlewareFn = async (): Promise<void> => {\n const localLogger = logger.createChild();\n localLogger.appendKeys({ function: \"plumbingMiddleware.after\" });\n\n try {\n localLogger.debug(\"started closing in after\");\n subsegment.close(); // (### MySubSegment)\n handlerSegment.close(); // (## index.handler)\n\n // Set the facade segment as active again (the one created by AWS Lambda)\n tracer.setSegment(segment);\n // Publish all stored metrics\n metrics.publishStoredMetrics();\n localLogger.debug(\"finished closing in after\");\n } catch (error) {\n localLogger.error(\"error in after\", { error });\n throw error;\n }\n };\n\n return {\n before,\n after,\n };\n};\n", "import { DynamoDBPersistenceLayer } from \"@aws-lambda-powertools/idempotency/dynamodb\";\nimport { Context } from \"aws-lambda\";\nimport { assertEnvVar } from \"../utils/assertUtils.js\";\nimport { Metrics } from \"@aws-lambda-powertools/metrics\";\nimport { Logger } from \"@aws-lambda-powertools/logger\";\nimport { Tracer } from \"@aws-lambda-powertools/tracer\";\n\nexport const getPersistenceStore = () => {\n return new DynamoDBPersistenceLayer({\n tableName: assertEnvVar(\"AC_IDEMPOTENCY_TABLE_NAME\")\n });\n};\n\nexport interface ACLambdaContext extends Context {\n clientContext?: {\n Custom?: {\n metrics: Metrics;\n logger: Logger;\n tracer: Tracer;\n };\n client: {\n appPackageName: string;\n appTitle: string;\n appVersionCode: string;\n appVersionName: string;\n installationId: string;\n };\n env: {\n platform: string;\n platformVersion: string;\n make: string;\n model: string;\n locale: string;\n };\n };\n}\n\nexport { Logger, Metrics, Tracer };\n", "import assert from \"node:assert/strict\";\n\nexport const assertEnvVar = (envVar: string): string => {\n assert(process.env[envVar], `${envVar} is not set`);\n return process.env[envVar];\n};\n\nexport const assertString = (value: string | undefined): string => {\n assert(typeof value === \"string\", \"Value is not a string\");\n assert(value.length > 0, \"Value is empty\");\n return value;\n};\n", "import { Logger } from \"@aws-lambda-powertools/logger\";\n\nexport const rootLogger = new Logger({\n serviceName:\n process.env.POWERTOOLS_SERVICE_NAME ??\n process.env.AWS_LAMBDA_FUNCTION_NAME ??\n \"ac-shared\"\n});\n\nexport const getLoggerWithScope = (\n scope: string,\n logger: Logger = rootLogger\n) => {\n const childLogger = logger.createChild();\n childLogger.appendKeys({ scope });\n return childLogger;\n};\n", "export const normalizeErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n return error.message;\n } else if (typeof error === \"string\") {\n return error;\n } else if (typeof error === \"object\" && error !== null) {\n return JSON.stringify(error);\n } else {\n return String(error);\n }\n};\n", "import { extname } from \"node:path\";\n\nexport const JPEG_EXTENSION = \"jpeg\";\nexport const JPG_EXTENSION = \"jpg\";\nexport const HEIC_EXTENSION = \"heic\";\nexport const DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;\nexport const ALLOWED_EXTENSIONS = [\n JPEG_EXTENSION,\n JPG_EXTENSION,\n HEIC_EXTENSION\n];\n\nexport const THUMBNAIL_RESOLUTIONS = [\n [200, 200],\n [1180, 820]\n];\n\nexport const getThumbsKey = ({\n key,\n prefix,\n width,\n height\n}: {\n key: string;\n prefix: string;\n width: number;\n height: number;\n}) => {\n const ext = getKeyExtension(key);\n\n if ([JPEG_EXTENSION, JPG_EXTENSION].includes(ext)) {\n return key;\n }\n\n const sourceKeyWithoutExtension = key.split(\".\").slice(0, -1).join(\".\");\n return `${prefix}/${width}x${height}/${sourceKeyWithoutExtension}.${DEFAULT_THUMBS_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"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["assert", "Metrics", "Logger", "Tracer", "Logger"]
|
|
7
7
|
}
|
package/lib/utils/thumbsKey.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export declare const JPEG_EXTENSION = "jpeg";
|
|
2
|
+
export declare const JPG_EXTENSION = "jpg";
|
|
3
|
+
export declare const HEIC_EXTENSION = "heic";
|
|
4
|
+
export declare const DEFAULT_THUMBS_EXTENSION = "jpg";
|
|
5
|
+
export declare const ALLOWED_EXTENSIONS: string[];
|
|
6
|
+
export declare const THUMBNAIL_RESOLUTIONS: number[][];
|
|
7
|
+
export declare const getThumbsKey: ({ key, prefix, width, height }: {
|
|
8
|
+
key: string;
|
|
9
|
+
prefix: string;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
6
12
|
}) => string;
|
|
7
|
-
export declare const
|
|
13
|
+
export declare const getKeyExtension: (key: string) => string;
|
|
14
|
+
export declare const isAllowedExtension: (key: string) => boolean;
|