@aspan-corporation/ac-shared 1.0.15 → 1.0.17

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 CHANGED
@@ -7,29 +7,31 @@ import {
7
7
  } from "@aws-sdk/client-s3";
8
8
  import { Upload } from "@aws-sdk/lib-storage";
9
9
  import { PassThrough } from "node:stream";
10
+ import assert from "node:assert/strict";
10
11
  var S3Service = class {
11
12
  logger;
12
13
  client;
13
14
  constructor({
14
15
  logger,
15
16
  client,
16
- assumeRoleCommandOutput
17
- } = {}) {
17
+ assumeRoleCommandOutput,
18
+ region
19
+ }) {
18
20
  this.logger = logger;
19
- if (assumeRoleCommandOutput) {
21
+ if (client) {
22
+ this.client = client;
23
+ } else {
24
+ assert(region, "Region must be provided if client is not passed");
20
25
  this.client = new S3Client({
21
- region: process.env.AWS_REGION,
26
+ region,
22
27
  logger: this.logger,
23
- credentials: {
24
- accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
25
- secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
26
- sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
27
- }
28
- });
29
- } else {
30
- this.client = client ?? new S3Client({
31
- region: process.env.AWS_REGION,
32
- logger: this.logger
28
+ ...assumeRoleCommandOutput ? {
29
+ credentials: {
30
+ accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
31
+ secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
32
+ sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
33
+ }
34
+ } : {}
33
35
  });
34
36
  }
35
37
  }
@@ -91,6 +93,7 @@ import {
91
93
  QueryCommand,
92
94
  UpdateCommand
93
95
  } from "@aws-sdk/lib-dynamodb";
96
+ import assert2 from "node:assert/strict";
94
97
  var DynamoDBService = class {
95
98
  logger;
96
99
  client;
@@ -98,23 +101,24 @@ var DynamoDBService = class {
98
101
  constructor({
99
102
  logger,
100
103
  client,
101
- assumeRoleCommandOutput
102
- } = {}) {
104
+ assumeRoleCommandOutput,
105
+ region
106
+ }) {
103
107
  this.logger = logger;
104
- if (assumeRoleCommandOutput) {
108
+ if (client) {
109
+ this.client = client;
110
+ } else {
111
+ assert2(region, "Region must be provided if client is not passed");
105
112
  this.client = new DynamoDBClient({
106
- region: process.env.AWS_REGION,
113
+ region,
107
114
  logger: this.logger,
108
- credentials: {
109
- accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
110
- secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
111
- sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
112
- }
113
- });
114
- } else {
115
- this.client = client ?? new DynamoDBClient({
116
- region: process.env.AWS_REGION,
117
- logger: this.logger
115
+ ...assumeRoleCommandOutput ? {
116
+ credentials: {
117
+ accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
118
+ secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
119
+ sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
120
+ }
121
+ } : {}
118
122
  });
119
123
  }
120
124
  this.documentClient = DynamoDBDocumentClient.from(this.client);
@@ -141,33 +145,35 @@ var DynamoDBService = class {
141
145
 
142
146
  // src/services/ssm.ts
143
147
  import {
144
- SSMClient,
145
148
  GetParameterCommand,
146
- PutParameterCommand
149
+ PutParameterCommand,
150
+ SSMClient
147
151
  } from "@aws-sdk/client-ssm";
152
+ import assert3 from "node:assert/strict";
148
153
  var SSMService = class {
149
154
  logger;
150
155
  client;
151
156
  constructor({
152
157
  logger,
153
158
  client,
154
- assumeRoleCommandOutput
159
+ assumeRoleCommandOutput,
160
+ region
155
161
  } = {}) {
156
162
  this.logger = logger;
157
- if (assumeRoleCommandOutput) {
163
+ if (client) {
164
+ this.client = client;
165
+ } else {
166
+ assert3(region, "Region must be provided if client is not passed");
158
167
  this.client = new SSMClient({
159
- region: process.env.AWS_REGION,
168
+ region,
160
169
  logger: this.logger,
161
- credentials: {
162
- accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
163
- secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
164
- sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
165
- }
166
- });
167
- } else {
168
- this.client = client ?? new SSMClient({
169
- region: process.env.AWS_REGION,
170
- logger: this.logger
170
+ ...assumeRoleCommandOutput ? {
171
+ credentials: {
172
+ accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
173
+ secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
174
+ sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
175
+ }
176
+ } : {}
171
177
  });
172
178
  }
173
179
  }
@@ -187,29 +193,31 @@ import {
187
193
  SendMessageBatchCommand,
188
194
  SendMessageCommand
189
195
  } from "@aws-sdk/client-sqs";
196
+ import assert4 from "node:assert/strict";
190
197
  var SQSService = class {
191
198
  logger;
192
199
  client;
193
200
  constructor({
194
201
  logger,
195
202
  client,
196
- assumeRoleCommandOutput
197
- } = {}) {
203
+ assumeRoleCommandOutput,
204
+ region
205
+ }) {
198
206
  this.logger = logger;
199
- if (assumeRoleCommandOutput) {
207
+ if (client) {
208
+ this.client = client;
209
+ } else {
210
+ assert4(region, "Region must be provided if client is not passed");
200
211
  this.client = new SQSClient({
201
- region: process.env.AWS_REGION,
212
+ region,
202
213
  logger: this.logger,
203
- credentials: {
204
- accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
205
- secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
206
- sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
207
- }
208
- });
209
- } else {
210
- this.client = client ?? new SQSClient({
211
- region: process.env.AWS_REGION,
212
- logger: this.logger
214
+ ...assumeRoleCommandOutput ? {
215
+ credentials: {
216
+ accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,
217
+ secretAccessKey: assumeRoleCommandOutput?.Credentials?.SecretAccessKey,
218
+ sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken
219
+ }
220
+ } : {}
213
221
  });
214
222
  }
215
223
  }
@@ -229,19 +237,29 @@ var SQSService = class {
229
237
 
230
238
  // src/services/sts.ts
231
239
  import {
232
- STSClient,
240
+ AssumeRoleCommand,
233
241
  GetCallerIdentityCommand,
234
- AssumeRoleCommand
242
+ STSClient
235
243
  } from "@aws-sdk/client-sts";
244
+ import assert5 from "node:assert/strict";
236
245
  var STSService = class {
237
246
  logger;
238
247
  client;
239
- constructor({ logger } = {}) {
248
+ constructor({
249
+ logger,
250
+ region,
251
+ client
252
+ }) {
240
253
  this.logger = logger;
241
- this.client = new STSClient({
242
- region: process.env.AWS_REGION,
243
- logger: this.logger
244
- });
254
+ if (client) {
255
+ this.client = client;
256
+ } else {
257
+ assert5(region, "Region must be provided if client is not passed");
258
+ this.client = new STSClient({
259
+ region,
260
+ logger: this.logger
261
+ });
262
+ }
245
263
  }
246
264
  async getCallerIdentity() {
247
265
  return await this.client.send(new GetCallerIdentityCommand({}));
@@ -257,13 +275,13 @@ var STSService = class {
257
275
  import { Logger } from "@aws-lambda-powertools/logger";
258
276
  import { Metrics } from "@aws-lambda-powertools/metrics";
259
277
  import { Tracer } from "@aws-lambda-powertools/tracer";
260
- import assert from "node:assert";
278
+ import assert6 from "node:assert";
261
279
  var plumbingMiddleware = () => {
262
- assert(
280
+ assert6(
263
281
  process.env.POWERTOOLS_METRICS_NAMESPACE,
264
282
  "POWERTOOLS_METRICS_NAMESPACE is not configured"
265
283
  );
266
- assert(
284
+ assert6(
267
285
  process.env.POWERTOOLS_SERVICE_NAME,
268
286
  "POWERTOOLS_SERVICE_NAME is not configured"
269
287
  );
@@ -336,14 +354,14 @@ var plumbingMiddleware = () => {
336
354
  import { DynamoDBPersistenceLayer } from "@aws-lambda-powertools/idempotency/dynamodb";
337
355
 
338
356
  // src/utils/assertUtils.ts
339
- import assert2 from "node:assert/strict";
357
+ import assert7 from "node:assert/strict";
340
358
  var assertEnvVar = (envVar) => {
341
- assert2(process.env[envVar], `${envVar} is not set`);
359
+ assert7(process.env[envVar], `${envVar} is not set`);
342
360
  return process.env[envVar];
343
361
  };
344
362
  var assertString = (value) => {
345
- assert2(typeof value === "string", "Value is not a string");
346
- assert2(value.length > 0, "Value is empty");
363
+ assert7(typeof value === "string", "Value is not a string");
364
+ assert7(value.length > 0, "Value is empty");
347
365
  return value;
348
366
  };
349
367
 
@@ -382,34 +400,60 @@ var normalizeErrorMessage = (error) => {
382
400
  };
383
401
 
384
402
  // src/utils/thumbsKey.ts
385
- var THUMBS_EXTENSION = "jpg";
403
+ import { extname } from "node:path";
404
+ var JPEG_EXTENSION = "jpeg";
405
+ var JPG_EXTENSION = "jpg";
406
+ var HEIC_EXTENSION = "heic";
407
+ var DEFAULT_THUMBS_EXTENSION = JPG_EXTENSION;
408
+ var ALLOWED_EXTENSIONS = [
409
+ JPEG_EXTENSION,
410
+ JPG_EXTENSION,
411
+ HEIC_EXTENSION
412
+ ];
413
+ var THUMBNAIL_RESOLUTIONS = [
414
+ [200, 200],
415
+ [1180, 820]
416
+ ];
386
417
  var getThumbsKey = ({
387
418
  key,
388
419
  prefix,
389
420
  width,
390
421
  height
391
422
  }) => {
423
+ const ext = getKeyExtension(key);
424
+ if ([JPEG_EXTENSION, JPG_EXTENSION].includes(ext)) {
425
+ return key;
426
+ }
392
427
  const sourceKeyWithoutExtension = key.split(".").slice(0, -1).join(".");
393
- return `${prefix}/${width}x${height}/${sourceKeyWithoutExtension}.${THUMBS_EXTENSION}`;
428
+ return `${prefix}/${width}x${height}/${sourceKeyWithoutExtension}.${DEFAULT_THUMBS_EXTENSION}`;
394
429
  };
395
- var getThumbsResolutions = (resolutions) => {
396
- return resolutions.split(",").map((res) => res.split("x").map(Number));
430
+ var getKeyExtension = (key) => extname(key).slice(1).toLowerCase();
431
+ var isAllowedExtension = (key) => {
432
+ const ext = getKeyExtension(key);
433
+ return ALLOWED_EXTENSIONS.includes(ext);
397
434
  };
398
435
  export {
436
+ ALLOWED_EXTENSIONS,
437
+ DEFAULT_THUMBS_EXTENSION,
399
438
  DynamoDBService,
439
+ HEIC_EXTENSION,
440
+ JPEG_EXTENSION,
441
+ JPG_EXTENSION,
400
442
  Logger2 as Logger,
401
443
  Metrics2 as Metrics,
402
444
  S3Service,
403
445
  SQSService,
404
446
  SSMService,
405
447
  STSService,
448
+ THUMBNAIL_RESOLUTIONS,
406
449
  Tracer2 as Tracer,
407
450
  assertEnvVar,
408
451
  assertString,
452
+ getKeyExtension,
409
453
  getLoggerWithScope,
410
454
  getPersistenceStore,
411
455
  getThumbsKey,
412
- getThumbsResolutions,
456
+ isAllowedExtension,
413
457
  normalizeErrorMessage,
414
458
  plumbingMiddleware,
415
459
  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 key,\n prefix,\n width,\n height\n}: {\n key: string;\n prefix: string;\n width: number;\n height: number;\n}) => {\n const sourceKeyWithoutExtension = key.split(\".\").slice(0, -1).join(\".\");\n return `${prefix}/${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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",
6
- "names": ["assert", "Metrics", "Logger", "Tracer", "Logger"]
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\";\nimport assert from \"node:assert/strict\";\n\nexport class S3Service {\n logger: GenericLogger;\n client: S3Client;\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: S3Client;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new S3Client({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n createS3UploadStream(putObjectCommandInput: PutObjectCommandInput) {\n this.logger.debug(\"upload stream started\");\n\n const pass = new PassThrough();\n\n const 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\";\nimport assert from \"node:assert/strict\";\n\nexport class DynamoDBService {\n logger: GenericLogger;\n client: DynamoDBClient;\n documentClient: DynamoDBDocumentClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: DynamoDBClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new DynamoDBClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n\n this.documentClient = DynamoDBDocumentClient.from(this.client);\n }\n\n async getCommand(\n getCommandInput: GetCommandInput\n ): Promise<GetCommandOutput> {\n return await this.documentClient.send(new GetCommand(getCommandInput));\n }\n\n async updateCommand(\n updateCommandInput: UpdateCommandInput\n ): Promise<UpdateCommandOutput> {\n return await this.documentClient.send(\n new UpdateCommand(updateCommandInput)\n );\n }\n\n async queryCommand(\n queryCommandInput: QueryCommandInput\n ): Promise<QueryCommandOutput> {\n return await this.documentClient.send(new QueryCommand(queryCommandInput));\n }\n\n async putCommand(\n putCommandInput: PutCommandInput\n ): Promise<PutCommandOutput> {\n return await this.documentClient.send(new PutCommand(putCommandInput));\n }\n\n async checkIfItemExists(\n checkInput: Pick<GetCommandInput, \"TableName\" | \"Key\">\n ): Promise<boolean> {\n const result = await this.getCommand(checkInput);\n\n return !!result.Item;\n }\n}\n", "import {\n GetParameterCommand,\n GetParameterCommandInput,\n GetParameterCommandOutput,\n PutParameterCommand,\n PutParameterCommandInput,\n PutParameterCommandOutput,\n SSMClient\n} from \"@aws-sdk/client-ssm\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class SSMService {\n logger: GenericLogger;\n client: SSMClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SSMClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n } = {}) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SSMClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n async getParameter(\n params: GetParameterCommandInput\n ): Promise<GetParameterCommandOutput> {\n return await this.client.send(new GetParameterCommand(params));\n }\n\n async putParameter(\n params: PutParameterCommandInput\n ): Promise<PutParameterCommandOutput> {\n return await this.client.send(new PutParameterCommand(params));\n }\n}\n", "import {\n DeleteMessageCommand,\n DeleteMessageCommandInput,\n DeleteMessageCommandOutput,\n ReceiveMessageCommand,\n ReceiveMessageCommandInput,\n ReceiveMessageCommandOutput,\n SQSClient,\n SendMessageBatchCommand,\n SendMessageBatchCommandInput,\n SendMessageBatchCommandOutput,\n SendMessageCommand,\n SendMessageCommandInput,\n SendMessageCommandOutput\n} from \"@aws-sdk/client-sqs\";\nimport { AssumeRoleCommandOutput } from \"@aws-sdk/client-sts\";\nimport { GenericLogger } from \"./types.js\";\nimport assert from \"node:assert/strict\";\n\nexport class SQSService {\n logger: GenericLogger;\n client: SQSClient;\n\n constructor({\n logger,\n client,\n assumeRoleCommandOutput,\n region\n }: {\n logger?: GenericLogger;\n client?: SQSClient;\n assumeRoleCommandOutput?: AssumeRoleCommandOutput;\n region?: string;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new SQSClient({\n region,\n logger: this.logger,\n ...(assumeRoleCommandOutput\n ? {\n credentials: {\n accessKeyId: assumeRoleCommandOutput?.Credentials?.AccessKeyId,\n secretAccessKey:\n assumeRoleCommandOutput?.Credentials?.SecretAccessKey,\n sessionToken: assumeRoleCommandOutput?.Credentials?.SessionToken\n }\n }\n : {})\n });\n }\n }\n\n async sendMessage(\n params: SendMessageCommandInput\n ): Promise<SendMessageCommandOutput> {\n return await this.client.send(new SendMessageCommand(params));\n }\n\n async sendMessageBatch(\n params: SendMessageBatchCommandInput\n ): Promise<SendMessageBatchCommandOutput> {\n return await this.client.send(new SendMessageBatchCommand(params));\n }\n\n async receiveMessage(\n params: ReceiveMessageCommandInput\n ): Promise<ReceiveMessageCommandOutput> {\n return await this.client.send(new ReceiveMessageCommand(params));\n }\n\n async deleteMessage(\n params: DeleteMessageCommandInput\n ): Promise<DeleteMessageCommandOutput> {\n return await this.client.send(new DeleteMessageCommand(params));\n }\n}\n", "import {\n AssumeRoleCommand,\n AssumeRoleCommandInput,\n GetCallerIdentityCommand,\n STSClient\n} from \"@aws-sdk/client-sts\";\nimport assert from \"node:assert/strict\";\nimport { GenericLogger } from \"./types.js\";\n\nexport class STSService {\n logger: GenericLogger;\n client: STSClient;\n\n constructor({\n logger,\n region,\n client\n }: {\n logger?: GenericLogger;\n region?: string;\n client?: STSClient;\n }) {\n this.logger = logger;\n\n if (client) {\n this.client = client;\n } else {\n assert(region, \"Region must be provided if client is not passed\");\n this.client = new STSClient({\n region,\n logger: this.logger\n });\n }\n }\n\n async getCallerIdentity() {\n return await this.client.send(new GetCallerIdentityCommand({}));\n }\n\n async assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput) {\n return await this.client.send(\n new AssumeRoleCommand(assumeRoleCommandInput)\n );\n }\n}\n", "import { 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
+ "names": ["assert", "assert", "assert", "assert", "assert", "assert", "Metrics", "Logger", "Tracer", "Logger"]
7
7
  }
@@ -6,10 +6,11 @@ export declare class DynamoDBService {
6
6
  logger: GenericLogger;
7
7
  client: DynamoDBClient;
8
8
  documentClient: DynamoDBDocumentClient;
9
- constructor({ logger, client, assumeRoleCommandOutput }?: {
9
+ constructor({ logger, client, assumeRoleCommandOutput, region }: {
10
10
  logger?: GenericLogger;
11
11
  client?: DynamoDBClient;
12
12
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
13
+ region?: string;
13
14
  });
14
15
  getCommand(getCommandInput: GetCommandInput): Promise<GetCommandOutput>;
15
16
  updateCommand(updateCommandInput: UpdateCommandInput): Promise<UpdateCommandOutput>;
@@ -7,10 +7,11 @@ import { GenericLogger } from "./types.js";
7
7
  export declare class S3Service {
8
8
  logger: GenericLogger;
9
9
  client: S3Client;
10
- constructor({ logger, client, assumeRoleCommandOutput }?: {
10
+ constructor({ logger, client, assumeRoleCommandOutput, region }: {
11
11
  logger?: GenericLogger;
12
12
  client?: S3Client;
13
13
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
14
+ region?: string;
14
15
  });
15
16
  createS3UploadStream(putObjectCommandInput: PutObjectCommandInput): PassThrough;
16
17
  createS3DownloadStream(getObjectCommandInput: GetObjectCommandInput): Promise<import("@smithy/types").StreamingBlobPayloadOutputTypes>;
@@ -4,10 +4,11 @@ import { GenericLogger } from "./types.js";
4
4
  export declare class SQSService {
5
5
  logger: GenericLogger;
6
6
  client: SQSClient;
7
- constructor({ logger, client, assumeRoleCommandOutput }?: {
7
+ constructor({ logger, client, assumeRoleCommandOutput, region }: {
8
8
  logger?: GenericLogger;
9
9
  client?: SQSClient;
10
10
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
11
+ region?: string;
11
12
  });
12
13
  sendMessage(params: SendMessageCommandInput): Promise<SendMessageCommandOutput>;
13
14
  sendMessageBatch(params: SendMessageBatchCommandInput): Promise<SendMessageBatchCommandOutput>;
@@ -1,13 +1,14 @@
1
- import { SSMClient, GetParameterCommandInput, GetParameterCommandOutput, PutParameterCommandInput, PutParameterCommandOutput } from "@aws-sdk/client-ssm";
1
+ import { GetParameterCommandInput, GetParameterCommandOutput, PutParameterCommandInput, PutParameterCommandOutput, SSMClient } from "@aws-sdk/client-ssm";
2
2
  import { AssumeRoleCommandOutput } from "@aws-sdk/client-sts";
3
3
  import { GenericLogger } from "./types.js";
4
4
  export declare class SSMService {
5
5
  logger: GenericLogger;
6
6
  client: SSMClient;
7
- constructor({ logger, client, assumeRoleCommandOutput }?: {
7
+ constructor({ logger, client, assumeRoleCommandOutput, region }?: {
8
8
  logger?: GenericLogger;
9
9
  client?: SSMClient;
10
10
  assumeRoleCommandOutput?: AssumeRoleCommandOutput;
11
+ region?: string;
11
12
  });
12
13
  getParameter(params: GetParameterCommandInput): Promise<GetParameterCommandOutput>;
13
14
  putParameter(params: PutParameterCommandInput): Promise<PutParameterCommandOutput>;
@@ -1,10 +1,12 @@
1
- import { STSClient, AssumeRoleCommandInput } from "@aws-sdk/client-sts";
1
+ import { AssumeRoleCommandInput, STSClient } from "@aws-sdk/client-sts";
2
2
  import { GenericLogger } from "./types.js";
3
3
  export declare class STSService {
4
4
  logger: GenericLogger;
5
5
  client: STSClient;
6
- constructor({ logger }?: {
6
+ constructor({ logger, region, client }: {
7
7
  logger?: GenericLogger;
8
+ region?: string;
9
+ client?: STSClient;
8
10
  });
9
11
  getCallerIdentity(): Promise<import("@aws-sdk/client-sts").GetCallerIdentityCommandOutput>;
10
12
  assumeRole(assumeRoleCommandInput: AssumeRoleCommandInput): Promise<import("@aws-sdk/client-sts").AssumeRoleCommandOutput>;
@@ -1,7 +1,14 @@
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[][];
1
7
  export declare const getThumbsKey: ({ key, prefix, width, height }: {
2
8
  key: string;
3
9
  prefix: string;
4
10
  width: number;
5
11
  height: number;
6
12
  }) => string;
7
- export declare const getThumbsResolutions: (resolutions: string) => number[][];
13
+ export declare const getKeyExtension: (key: string) => string;
14
+ export declare const isAllowedExtension: (key: string) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspan-corporation/ac-shared",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "lib/index.js",